[Previous] [Contents] [Next]

scalb(), scalbf()

Load exponent of a radix-independent floating point number

Synopsis:

#include <math.h>

double scalb( double x,
              double n );

float scalbf( float x,
              float n );

Library:

libm

Description:


Note: We recommend that you use scalbn() since it computes by exponent manipulation rather than mock multiplications or additions.

These functions compute x * r^n, where r is the radix of the machine's floating point arithmetic and fn is a finite number. When r is 2, scalb() is equivalent to ldexp().

An application wishing to check for error situations should set errno to 0 before calling scalb(). If errno is nonzero on return, or the return value is NAN, an error occurred.

Returns:

x * r^n

Examples:

#include <stdio.h>
#include <errno.h>
#include <inttypes.h>
#include <math.h>
#include <fpstatus.h>

int main(int argc, char** argv) 
{
    double a, b, c, d;

    a = 10;
    b = 2;
    c = scalb(a, b);
    d = sqrt(c/a);
    printf("Radix of machines fp arithmetic is %f \n", d);
    printf("So %f = %f * (%f ^ %f) \n", c, a, d, b);

    return(0);
}

produces the output:

Radix of machines fp arithmetic is 2.000000
So 40.000000 = 10.000000 * (2.000000 ^ 2.000000)

Classification:

scalb() is standard Unix; scalbf() is ANSI (draft)

Safety:
Cancellation point No
Interrupt handler No
Signal handler No
Thread Yes

See also:

ldexp(), scalbn()


[Previous] [Contents] [Next]