1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #include "math.h"
- #include "math_private.h"
- libm_hidden_proto(pow)
- #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
- }
- libm_hidden_def(pow)
|