Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ieee_functions(3M)

rint(3M)

FREXP(3M)  —  MATHEMATICAL LIBRARY

NAME

frexp, modf, ldexp − traditional UNIX functions

SYNOPSIS

#include <math.h>

double frexp(value, eptr)
double value;
int ∗eptr;

double ldexp(x,n)
double x;
int n;

double modf(value, iptr)
double value, ∗iptr;

DESCRIPTION

These functions are provided for compatibility with other UNIX system implementations.  They are not used internally in libm or libc.  Better ways to accomplish similar ends may be found in ieee_functions(3M) and rint(3M). 

ldexp(x,n) returns x ∗ 2∗∗n computed by exponent manipulation rather than by actually performing an exponentiation or a multiplication.  Note: ldexp(x,n) differs from scalbn(x,n), defined in ieee_functions(3M), only that in the event of IEEE overflow and underflow, ldexp(x,n) sets errno to ERANGE. 

Every non-zero number can be written uniquely as x ∗ 2∗∗n, where the significand x is in the range 0.5 <= |x| < 1.0 and the exponent n is an integer.  The function frexp() returns the significand of a double value as a double quantity, x, and stores the exponent n, indirectly through eptr. If value == 0, both results returned by frexp() are 0. 

modf() returns the fractional part of value and stores the integral part indirectly through iptr. Thus the argument value and the returned values modf() and ∗iptr satisfy

(∗iptr + modf) == value

and both results have the same sign as value. The definition of modf() varies among UNIX system implementations, so avoid modf() in portable code. 

The results of frexp() and modf() are not defined when value is an IEEE infinity or NaN. 

SEE ALSO

ieee_functions(3M), rint(3M)

Sun Release 4.0  —  Last change: 21 January 1988

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