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