12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #include "math.h"
- #include "math_private.h"
- #ifdef __STDC__
- double pow(double x, double y)
- #else
- double pow(x,y)
- double x,y;
- #endif
- {
- #ifdef _IEEE_LIBM
- return __ieee754_pow(x,y);
- #else
- double z;
- z=__ieee754_pow(x,y);
- if(_LIB_VERSION == _IEEE_|| isnan(y)) return z;
- if(isnan(x)) {
- if(y==0.0)
- return __kernel_standard(x,y,42);
- else
- return z;
- }
- if(x==0.0){
- if(y==0.0)
- return __kernel_standard(x,y,20);
- if(finite(y)&&y<0.0)
- return __kernel_standard(x,y,23);
- return z;
- }
- if(!finite(z)) {
- if(finite(x)&&finite(y)) {
- if(isnan(z))
- return __kernel_standard(x,y,24);
- else
- return __kernel_standard(x,y,21);
- }
- }
- if(z==0.0&&finite(x)&&finite(y))
- return __kernel_standard(x,y,22);
- return z;
- #endif
- }
|