next up previous contents
След.: Функции, связанные с вводом Выше: Стандартные процедуры и модули Пред.: Строковые функции   Содержание


Внутреннее представление чисел

Стандарт предусматривает много функций, позволяющих запрашивать информацию о внутреннем представлении целых и вещественных чисел. Представление числа определяется моделью. Модель целого числа задается формулой

$\displaystyle i = s\sum\limits_{k=1}^q{w_kr^{k-1}},
$

где $ i$ -- целое число, описываемое моделью, $ s=\pm 1$ (знак), $ r>1$ -- основание системы счисления (обычно 2), $ q>0$ -- число разрядов. $ 0\leq w_k<r$ -- цифры. Модель вещественного числа: $ x=0$ или

$\displaystyle x = sb^e\sum\limits_{k=1}^p{f_kb^{-k}},
$

где $ s=\pm 1$ (знак), $ b > 1$ и $ p > 1$ целые (основание системы счисления и число разрядов значащей части числа -- мантиссы), все $ 0\leq f_k<b$ тоже целые (цифры мантиссы), а целое $ e$ (порядок) лежит в некотором диапазоне допустимых порядков: $ e_\mathrm{min}\leq e\leq e_\mathrm{max}$ . Для нуля $ e=f_k=0$ . Например, $ b=2$ , $ f_1=1$ , $ p=24$ .

Функции:

DIGITS(X) -- число значащих цифр модели: $ q$ для целых, $ p$ для вещественных.

EPSILON(X) -- возвращает положительное число, пренебрежимо малое сравнительно с единицей: $ b^{1-p}$ .

EXPONENT(X) -- возвращает $ e$ для числа X.

FRACTION(X) -- дробная часть модельного числа, то есть $ Xb^{-e}$ (в модели, приведенной в качестве примера, FRACTION(3.0) дает $ 0.75$ , что плохо согласуется с дробной частью в математическом понимании).

HUGE(X) -- наибольшее число модели: $ r^q-1$ для целых, $ (1-b^{-p})b^{e_\mathrm{max}}$ для вещественных.

MAXEXPONENT(X) и MINEXPONENT -- возвращают $ e_\mathrm{max}$ и $ e_\mathrm{min}$ .

NEAREST(X,S) -- ближайшее число, отличное от X, справа или слева (направление определяет знак ненулевого S).

PRECISION(X) -- десятичная точность:

$\displaystyle \mathtt{INT((p - 1) * LOG10(b)) + K},
$

где $ K$ равно 1, если $ b$ -- степень десяти и ноль в противном случае.

RADIX(X) -- основание системы счисления ($ r$ или $ b$ в зависимости от типа).

RANGE(X) -- десятичный диапазон порядка:

Для целых INT(LOG10(HUGE(X)));

для вещественных INT(MIN(LOG10(HUGE(X))-LOG10(TINY(X))));

для комплексных RANGE(REAL(X)).

RPSPACING(X) -- обратная величина относительного расстояния между соседними числами: $ b^p\vert Xb^{-e}\vert$ .

SCALE(X,I) -- умножает число X на основание системы счисления в целой степени I, то есть $ Xb^I$ .

SET_EXPONENT(X,I) -- вещественное число, дробная часть которого совпадает с дробной частью модельного представления $ X$ , а экспоненциальная часть равна $ I$ , то есть $ Xb^{I-e}$ .

SPACING(X) -- расстояние между соседними числами: $ b^{e-p}$ .

TINY(X) -- наименьшее число модели: $ b^{e_\mathrm{min}-1}$ .



Ilya A. Chernov 2012-12-19
X