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