#include <math.h>
float frexpf(float num, int *exp);
double frexp(double num, int *exp);
long double frexpl(long double num, int *exp);
Функции frexpf() и frexpl() добавлены в версии С99.
Каждая функция семейства frexp() разбивает число num на мантиссу mantissa, значение которой удовлетворяет неравенствам 0.5<mantissa<1, и целый показатель степени числа 2 (он обозначен через ехр), притом числа mantissa и ехр выбираются так, чтобы выполнялось равенство num = mantissa * 2exp. Значение мантиссы возвращается функцией, а значение показателя[1] присваивается переменной, адресуемой указателем ехр.
Пример
Данный фрагмент программы выводит число
0.625
в качестве мантиссы и число
4
в качестве показателя степени.
int e;
double f;
f = frexp(10.0, &e);
printf("%f %d", f, e);
Зависимые функции
ldexp()
[1]Напомним, что представление числа num в виде num = mantissa * bexp (здесь b — основание системы счисления) называется представлением с плавающей точкой (запятой) или полулогарифмическим представлением, и что целая часть логарифма называется характеристикой. Так что ехр=χ2(num)+1, где χ2(num)=|_log2(num)_| — характеристика двоичного логарифма. Число ехр часто называется порядком числа num (в нормализованном представлении). Заметим также, что терминам мантисса и характеристика часто придается и иной смысл. Так, по историческим причинам под мантиссой часто подразумевают дробную часть логарифма; иногда ее называют также мантиссой логарифма. Что же касается характеристики, то под ней иногда понимают просто число, которое представляет порядок в представлении с плавающей запятой. (В этом смысле в большинстве машин характеристика равна порядку, если он положительный; отличия между ними, как правило, обусловлены тем, что представление порядка, который может быть также и неположительным числом, при реализации операций над числами в полулогарифмическом представлении рассматривают как представление неотрицательного числа.) Так что можно сказать, что характеристика в этом смысле — машинное представление порядка числа. Порядок в этом контексте называется также иногда экспонентой. (Не путайте с экспонентой-функцией!)