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