@@ -2558,7 +2558,10 @@ double exp(double x)
25582558 else if (x > 1024.0 * M_LN2 )
25592559 {
25602560 errno = ERANGE ;
2561+ #pragma CPROVER check push
2562+ #pragma CPROVER check disable "float-overflow"
25612563 return HUGE_VAL ;
2564+ #pragma CPROVER check pop
25622565 }
25632566
25642567 // Nicol N. Schraudolph: A Fast, Compact Approximation of the Exponential
@@ -2632,7 +2635,10 @@ float expf(float x)
26322635 else if (x > 128.0f * (float )M_LN2 )
26332636 {
26342637 errno = ERANGE ;
2638+ #pragma CPROVER check push
2639+ #pragma CPROVER check disable "float-overflow"
26352640 return HUGE_VALF ;
2641+ #pragma CPROVER check pop
26362642 }
26372643
26382644 // 23 is 32 - 1 sign bit - 8 exponent bits
@@ -2708,7 +2714,10 @@ long double expl(long double x)
27082714 else if (x > 16384.0l * M_LN2 )
27092715 {
27102716 errno = ERANGE ;
2717+ # pragma CPROVER check push
2718+ # pragma CPROVER check disable "float-overflow"
27112719 return HUGE_VALL ;
2720+ # pragma CPROVER check pop
27122721 }
27132722 // 16 is 32 - 1 sign bit - 15 exponent bits
27142723 int32_t bias = (1 << 16 ) * ((1 << 14 ) - 1 );
@@ -2773,7 +2782,10 @@ double log(double x)
27732782 else if (fpclassify (x ) == FP_ZERO )
27742783 {
27752784 errno = ERANGE ;
2785+ #pragma CPROVER check push
2786+ #pragma CPROVER check disable "float-overflow"
27762787 return - HUGE_VAL ;
2788+ #pragma CPROVER check pop
27772789 }
27782790 else if (__CPROVER_signd (x ))
27792791 {
@@ -2838,7 +2850,10 @@ float logf(float x)
28382850 else if (fpclassify (x ) == FP_ZERO )
28392851 {
28402852 errno = ERANGE ;
2853+ #pragma CPROVER check push
2854+ #pragma CPROVER check disable "float-overflow"
28412855 return - HUGE_VALF ;
2856+ #pragma CPROVER check pop
28422857 }
28432858 else if (__CPROVER_signf (x ))
28442859 {
@@ -2904,7 +2919,10 @@ long double logl(long double x)
29042919 else if (fpclassify (x ) == FP_ZERO )
29052920 {
29062921 errno = ERANGE ;
2922+ #pragma CPROVER check push
2923+ #pragma CPROVER check disable "float-overflow"
29072924 return - HUGE_VALL ;
2925+ #pragma CPROVER check pop
29082926 }
29092927 else if (__CPROVER_signld (x ))
29102928 {
@@ -2975,7 +2993,10 @@ double log2(double x)
29752993 else if (fpclassify (x ) == FP_ZERO )
29762994 {
29772995 errno = ERANGE ;
2996+ #pragma CPROVER check push
2997+ #pragma CPROVER check disable "float-overflow"
29782998 return - HUGE_VAL ;
2999+ #pragma CPROVER check pop
29793000 }
29803001 else if (__CPROVER_signd (x ))
29813002 {
@@ -3039,7 +3060,10 @@ float log2f(float x)
30393060 else if (fpclassify (x ) == FP_ZERO )
30403061 {
30413062 errno = ERANGE ;
3063+ #pragma CPROVER check push
3064+ #pragma CPROVER check disable "float-overflow"
30423065 return - HUGE_VALF ;
3066+ #pragma CPROVER check pop
30433067 }
30443068 else if (__CPROVER_signf (x ))
30453069 {
@@ -3104,7 +3128,10 @@ long double log2l(long double x)
31043128 else if (fpclassify (x ) == FP_ZERO )
31053129 {
31063130 errno = ERANGE ;
3131+ #pragma CPROVER check push
3132+ #pragma CPROVER check disable "float-overflow"
31073133 return - HUGE_VALL ;
3134+ #pragma CPROVER check pop
31083135 }
31093136 else if (__CPROVER_signld (x ))
31103137 {
@@ -3175,7 +3202,10 @@ double log10(double x)
31753202 else if (fpclassify (x ) == FP_ZERO )
31763203 {
31773204 errno = ERANGE ;
3205+ #pragma CPROVER check push
3206+ #pragma CPROVER check disable "float-overflow"
31783207 return - HUGE_VAL ;
3208+ #pragma CPROVER check pop
31793209 }
31803210 else if (__CPROVER_signd (x ))
31813211 {
@@ -3242,7 +3272,10 @@ float log10f(float x)
32423272 else if (fpclassify (x ) == FP_ZERO )
32433273 {
32443274 errno = ERANGE ;
3275+ #pragma CPROVER check push
3276+ #pragma CPROVER check disable "float-overflow"
32453277 return - HUGE_VALF ;
3278+ #pragma CPROVER check pop
32463279 }
32473280 else if (__CPROVER_signf (x ))
32483281 {
@@ -3309,7 +3342,10 @@ long double log10l(long double x)
33093342 else if (fpclassify (x ) == FP_ZERO )
33103343 {
33113344 errno = ERANGE ;
3345+ #pragma CPROVER check push
3346+ #pragma CPROVER check disable "float-overflow"
33123347 return - HUGE_VALL ;
3348+ #pragma CPROVER check pop
33133349 }
33143350 else if (__CPROVER_signld (x ))
33153351 {
@@ -3441,10 +3477,13 @@ double pow(double x, double y)
34413477 else if (fpclassify (x ) == FP_ZERO && __CPROVER_signd (y ))
34423478 {
34433479 errno = ERANGE ;
3480+ #pragma CPROVER check push
3481+ #pragma CPROVER check disable "float-overflow"
34443482 if (__CPROVER_signd (x ) && nearbyint (y ) == y && fabs (fmod (y , 2.0 )) == 1.0 )
34453483 return - HUGE_VAL ;
34463484 else
34473485 return HUGE_VAL ;
3486+ #pragma CPROVER check pop
34483487 }
34493488 else if (isnan (x ) || isnan (y ))
34503489#pragma CPROVER check push
@@ -3479,7 +3518,10 @@ double pow(double x, double y)
34793518 if (fabs (mult_result ) > (double )(1 << 30 ))
34803519 {
34813520 errno = ERANGE ;
3521+ #pragma CPROVER check push
3522+ #pragma CPROVER check disable "float-overflow"
34823523 return y > 0.0 ? HUGE_VAL : 0.0 ;
3524+ #pragma CPROVER check pop
34833525 }
34843526#if !defined(__BYTE_ORDER__ ) || __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
34853527 u .i [1 ] = (int32_t )mult_result + (bias + exp_c );
@@ -3583,13 +3625,16 @@ float powf(float x, float y)
35833625 else if (fpclassify (x ) == FP_ZERO && __CPROVER_signf (y ))
35843626 {
35853627 errno = ERANGE ;
3628+ #pragma CPROVER check push
3629+ #pragma CPROVER check disable "float-overflow"
35863630 if (
35873631 __CPROVER_signf (x ) && nearbyintf (y ) == y && fabsf (fmodf (y , 2.0f )) == 1.0f )
35883632 {
35893633 return - HUGE_VALF ;
35903634 }
35913635 else
35923636 return HUGE_VALF ;
3637+ #pragma CPROVER check pop
35933638 }
35943639 else if (isnanf (x ) || isnanf (y ))
35953640#pragma CPROVER check push
@@ -3619,7 +3664,10 @@ float powf(float x, float y)
36193664 if (fabsf (mult_result ) > (float )(1 << 30 ))
36203665 {
36213666 errno = ERANGE ;
3667+ #pragma CPROVER check push
3668+ #pragma CPROVER check disable "float-overflow"
36223669 return y > 0.0f ? HUGE_VALF : 0.0f ;
3670+ #pragma CPROVER check pop
36233671 }
36243672 u .i = (int32_t )mult_result + (bias + exp_c );
36253673 return u .f ;
@@ -3722,6 +3770,8 @@ long double powl(long double x, long double y)
37223770 else if (fpclassify (x ) == FP_ZERO && __CPROVER_signld (y ))
37233771 {
37243772 errno = ERANGE ;
3773+ #pragma CPROVER check push
3774+ #pragma CPROVER check disable "float-overflow"
37253775 if (
37263776 __CPROVER_signld (x ) && nearbyintl (y ) == y &&
37273777 fabsl (fmodl (y , 2.0l )) == 1.0l )
@@ -3730,6 +3780,7 @@ long double powl(long double x, long double y)
37303780 }
37313781 else
37323782 return HUGE_VALL ;
3783+ #pragma CPROVER check pop
37333784 }
37343785 else if (isnanl (x ) || isnanl (y ))
37353786#pragma CPROVER check push
@@ -3767,7 +3818,10 @@ long double powl(long double x, long double y)
37673818 if (fabsl (mult_result ) > (long double )(1 << 30 ))
37683819 {
37693820 errno = ERANGE ;
3821+ # pragma CPROVER check push
3822+ # pragma CPROVER check disable "float-overflow"
37703823 return y > 0.0l ? HUGE_VALL : 0.0l ;
3824+ # pragma CPROVER check pop
37713825 }
37723826 int32_t result = (int32_t )mult_result + (bias + exp_c );
37733827 union U result_u = {.i = {0 }};
0 commit comments