Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ frexp(3) — Tru64 UNIX 5.1b

Media Vault

Software Library

Restoration Projects

Artifacts Sought

frexp(3)  —  Subroutines

NAME

frexp, ldexp, logb, scalb − Manipulate floating-point numbers

SYNOPSIS

#include <math.h>
double frexp(
        double x,
        int ∗n ); float frexpf(
        float x,
        int ∗n ); long double frexpl(
        long double x,
        int ∗n ); double ldexp(
        double y,
        int n ); float ldexpf(
        float y,
        int n ); long double ldexpl(
        long double y,
        int n ); double logb(
        double x ); float logbf(
        float x ); long double logbl(
        long double x ); double scalb(
        double x,
        double n ); float scalbf(
        float x,
        float n ); long double scalbl(
        long double x,
        long double n );

LIBRARY

Math Library (libm)

STANDARDS

Interfaces documented on this reference page conform to industry standards as follows:

frexp():  XPG4

ldexp():  XPG4

logb():  XPG4-UNIX

scalb():  XPG4-UNIX

Refer to the standards(5) reference page for more information about industry standards and associated tags. 

DESCRIPTION

Every nonzero number can be written uniquely as the normalized mantissa (fraction) z times 2 raised to the power p, where the absolute value of z is in the range [0.5, 1.0), and the exponent p, is an integer. 

The frexp(), frexpf(), and frexpl() functions break a floating-point number into a normalized fraction and an integral power of 2. The functions store the integer in the int object pointed to by the n parameter and return the fraction part. 

The ldexp(), ldexpf(), and ldexpl() functions multiply a floating-point number, y, by an integral power of 2. 

The logb(), logbf(), and logbl() functions return a signed integer converted to double-precision floating-point and so chosen that 1 <= |x|/2∗∗n < 2 unless x = 0 or |x| = infinity or x lies between 0 and the Underflow Threshold. 

IEEE 754 defines logb(+infinity) = +infinity and logb(0) = −infinity. The latter is required to signal Division-by-Zero. 

The scalb(), scalbf(), and scalbl() functions are defined as x∗(2∗∗n) for integer n. 

The following table describes function behavior in response to exceptional arguments:

Function Exceptional Argument Routine Behavior
frexp(), frexpf(), frexpl() |x| = infinity Invalid argument
logb(), logbf(), logbl() |x| = infinity Invalid argument
scalb(), scalbf(), scalbl() x∗(2∗∗n) > max_float Overflow
scalb(), scalbf(), scalbl() x∗(2∗∗n) < min_float Underflow
ldexp(), ldexpf(), ldexpl() x∗(2∗∗n) > max_float Overflow
ldexp(), ldexpf(), ldexpl() x∗(2∗∗n) < min_float Underflow

The following table lists boundary values used by these functions:

Value Name Data Type Hexadecimal Value Decimal Value
max_float S_FLOAT 7F7FFFFF 3.402823e38
T_FLOAT 7FEFFFFFFFFFFFFF 1.797693134862316e308
min_float S_FLOAT 00000001 1.4012985e-45
T_FLOAT 0000000000000001 4.940656458412465e-324

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026