Index: lib/msun/ld80/e_powl.c =================================================================== --- lib/msun/ld80/e_powl.c +++ lib/msun/ld80/e_powl.c @@ -269,32 +269,35 @@ if( y == 1.0L ) return( x ); -if( !isfinite(y) && x == -1.0L ) - return( 1.0L ); - -if( y >= LDBL_MAX ) - { - if( x > 1.0L ) - return( INFINITY ); - if( x > 0.0L && x < 1.0L ) - return( 0.0L ); - if( x < -1.0L ) - return( INFINITY ); - if( x > -1.0L && x < 0.0L ) - return( 0.0L ); - } -if( y <= -LDBL_MAX ) +if( !isfinite(y) ) { - if( x > 1.0L ) - return( 0.0L ); - if( x > 0.0L && x < 1.0L ) - return( INFINITY ); - if( x < -1.0L ) - return( 0.0L ); - if( x > -1.0L && x < 0.0L ) - return( INFINITY ); + if ( x == -1.0L ) + return( 1.0L ); + else if ( y > 0.0L ) + { + if( x > 1.0L ) + return( INFINITY ); + if( x > 0.0L && x < 1.0L ) + return( 0.0L ); + if( x < -1.0L ) + return( INFINITY ); + if( x > -1.0L && x < 0.0L ) + return( 0.0L ); + } + else + { + if( x > 1.0L ) + return( 0.0L ); + if( x > 0.0L && x < 1.0L ) + return( INFINITY ); + if( x < -1.0L ) + return( 0.0L ); + if( x > -1.0L && x < 0.0L ) + return( INFINITY ); + } } -if( x >= LDBL_MAX ) + +if( !isfinite(x) && x > 0.0L ) { if( y > 0.0L ) return( INFINITY ); @@ -318,7 +321,7 @@ yoddint = 1; } -if( x <= -LDBL_MAX ) +if( !isfinite(x) && x < 0.0L ) { if( y > 0.0L ) { @@ -574,7 +577,7 @@ if( nn == 0 ) return( 1.0L ); else if( nn < 0 ) - return( LDBL_MAX ); + return( INFINITY ); else return( 0.0L ); }