*Load the exponent of a radix-independent floating point number*

#include <math.h> double scalb( doublex, doublen);

*x*- The floating point number that you want to multiply by the exponent.
*n*- The exponent to apply to the radix of the machine's floating-point arithmetic.

`libm`

Use the ` -l m` option to

This function computes *x* × *r*^{n},
where *r* is the radix
of the machine's floating point arithmetic
and *n* is a finite number. When *r* is 2,
*scalb()* is equivalent to
*ldexp()*.

We recommend that you use
scalbn()
because it computes by manipulating exponents, instead of using mock
multiplications or additions. |

*x* × *r*^{n}

If an error occurs, this function returns 0, but this is also a valid
mathematical result.
If you want to check for errors, set
errno
to 0, call the function, and then check errno again.
This function doesn't change errno if no errors occurred. |

#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)

Safety: | |
---|---|

Cancellation point | No |

Interrupt handler | No |

Signal handler | No |

Thread | Yes |