ldexp, ldexpf, ldexpl – преобразуют число, заданное мантиссой и порядкой, в число с плавающей точкой.
Синтаксис:
#include < math.h >
double ldexp (double m, int p);
float ldexpf (float m, int p);
long double ldexpl (long double m, int p);
Аргументы:
m – мантисса.
p – порядок.
Возвращаемое значение:
Значение выражения m*2p.
nan, если аргумент m nan.
inf, если аргумент m бесконечность, или результат слишком большой при этом генерируется ошибка «выход за пределы области допустимых значений (domain error).
-inf, если аргумент m минус бесконечность или результат преобразования слишком большой (по модулю) при этом генерируется ошибка «выход за пределы области допустимых значений (domain error).
Если результат слишком маленькое по абсолютной величине число и не может быть представлено в виде нормализованного числа, то будет возвращено ненормализованное число, если результат можно представить в виде ненормализованного числа или ноль. При этом генерируется ошибка «выход за пределы области допустимых значений (domain error).
Описание:
Функции ldexp, ldexpf, ldexpl вычисляют число по мантиссе и порядку, то есть рассчитывают результат выражения m*2p, где m – мантисса, p – порядок.
Функции ldexp, ldexpf, ldexpl отличаются друг от друга точностью аргумента m и возвращаемого значения. Так аргумент m и возвращаемое значение функции ldexp являются числами с плавающей точкой двойной точности (тип double, точность не менее десяти значащих десятичных цифр, разрядность - 64).
Аргумент m и возвращаемое значение функции ldexpf являются числами с плавающей точкой (тип float, точность не менее шести значащих десятичных цифр, разрядность - 32).
Аргумент m и возвращаемое значение функции ldexpl являются числами с плавающей точкой повышенной точности (тип long double, точность не менее десяти значащих десятичных цифр, разрядность - 80).
Пример:
В примере вычисляется число по мантиссе 0.635987 и порядку 27 с помощью функции ldexp, ldexpf, ldexpl и результат выводится на консоль
#include < stdio.h > //Для printf
#include < math.h > //Для ldexp, ldexpf, ldexpl
int main (void)
{
//Вывод мантиссы и порядка
printf (“Мантисса: 0.635987, порядок: 27\n”);
//Вычисление числа с помощью ldexpf и вывод результата
printf (“ldexpf: %.10f\n”, ldexpf (0.635987,27) );
//Вычисление числа с помощью ldexp и вывод результата
printf (“ldexp: %.10f\n”, ldexp (0.635987, 27) );
//Вычисление числа с помощью ldexpl и вывод результата
printf (“ldexpl: %.10Lf\n”, ldexpl (0.635987,27) );
return 0;
}
| |
Результат:
Мантисса: 0.635987, порядок: 27
ldexpf: 85360728.0000000000
ldexp : 85360730.1775359958
ldexpl: 85360730.1775359958
|
Смотри так же:
logb, logbf, logbl
ilogb, ilogbf, ilogbl
ldexp, ldexpf, ldexpl
frexp, frexpf, frexpl
scalb, scalbf, scalbl
scalbn, scalbnf, scalbnl
scalbln, scalblnf, scalblnl
|