pow() Calculate X Raised to the Yth Power
#include <math.h>
double pow(x,y);
double x; Number to be raised
double y; Power of x
pow() calculates the value of 'x' raised to the power of 'y'.
Returns: 'x' raised to the power of 'y'. If 'x' is 0.0 and 'y' is
negative, matherr() is called with a DOMAIN error, a
DOMAIN error message is printed to 'stderr', and 'errno'
(defined in <stdlib.h>) is set to ERANGE (defined in
<math.h>).
If 'x' is negative and 'y' is not an integer, matherr() is called
with a DOMAIN error, a DOMAIN error message is printed to 'stderr',
'errno' is set to EDOM (defined in <math.h>), and 0.0 is returned. On
overflow, matherr() is called with an OVERFLOW error, 'errno' is set
to ERANGE, and positive or negative HUGE (defined in <math.h>) is
returned. On underflow 0.0 is returned. (matherr() is not called on
an underflow and 'errno' is not set.)
Notes: The value of any 'x' raised to the power of 0.0 is 1.0.
-------------------------------- Example ---------------------------------
The following statements calculate x raised to the power of y for
several pair of values in an array, then report any errors:
#include <math.h> /* for pow(), HUGE, ERANGE, and EDOM */
#include <stdio.h> /* for printf() */
#include <stdlib.h> /* for errno */
double vals[6][2]={{-3.0, 4.0}, /* 81.0 */
{0.0, 0.0}, /* 1.0 */
{0.0, -1.0}, /* 0.0 (ERANGE error) */
{-1.0, 1.1}, /* 0.0 (EDOM error) */
{9.9, 999.9}, /* HUGE (OVERFLOW: ERANGE error)*/
{10.0, -444.0}};/* 0.0 (UNDERFLOW: no error) */
main()
{
double x_to_the_y;
int i;
for (i = 0; i < 6; i++) {
errno = 0;
x_to_the_y = pow(val[i][0], val[i][1]);
/* on any error except an OVER- or UNDERFLOW, an error
message is also printed to stderr */
if (errno == EDOM)
printf("EDOM error in pow()\n");
else if (errno == ERANGE)
if (x_to_the_y == HUGE)
printf("OVERFLOW error in pow()\n");
else
printf("ERANGE error in pow()\n");
printf("%f raised to the %f = %e\n",
value[i][0], value[i][1], x_to_the_y);
}
}
Seealso:
This page last updated on Fri Nov 30 10:48:32 MSK 2001
Copyright © 1992-2001, Vitaly Filatov, Moscow, Russia
Webmaster