@@ -713,12 +713,12 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
713713 BOOST_MATH_INSTRUMENT_CODE (" 113-bit precision erf_imp called" );
714714
715715 if ((boost::math::isnan)(z))
716- return policies::raise_domain_error (" boost::math::erf<%1%>(%1%)" , " Expected a finite argument but got %1%" , z, pol); // LCOV_EXCL_LINE checked as covered.
716+ return policies::raise_domain_error (" boost::math::erf<%1%>(%1%)" , " Expected a finite argument but got %1%" , z, pol);
717717
718718 if (z < 0 )
719719 {
720720 if (!invert)
721- return -erf_imp (T (-z), invert, pol, t); // LCOV_EXCL_LINE confirmed as covered, not sure why lcov does see it.
721+ return -erf_imp (T (-z), invert, pol, t);
722722 else if (z < -0.5 )
723723 return 2 - erf_imp (T (-z), invert, pol, t);
724724 else
@@ -739,20 +739,19 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
739739 //
740740 if (z == 0 )
741741 {
742- result = 0 ; // LCOV_EXCL_LINE confirmed as covered, not sure why lcov doesn't see this.
742+ result = 0 ;
743743 }
744744 else if (z < 1e-20 )
745745 {
746- static const T c = BOOST_MATH_BIG_CONSTANT (T, 113 , 0.003379167095512573896158903121545171688 ); // LCOV_EXCL_LINE
747- result = z * 1.125 + z * c; // LCOV_EXCL_LINE confirmed as covered, not sure why lcov doesn't see this.
746+ static const T c = BOOST_MATH_BIG_CONSTANT (T, 113 , 0.003379167095512573896158903121545171688 );
747+ result = z * 1.125 + z * c;
748748 }
749749 else
750750 {
751751 // Max Error found at long double precision = 2.342380e-35
752752 // Maximum Deviation Found: 6.124e-36
753753 // Expected Error Term: -6.124e-36
754754 // Maximum Relative Change in Control Points: 3.492e-10
755- // LCOV_EXCL_START
756755 static const T Y = 1 .0841522216796875f ;
757756 static const T P[] = {
758757 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.0442269454158250738961589031215451778 ),
@@ -774,7 +773,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
774773 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.196230608502104324965623171516808796e-5 ),
775774 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.313388521582925207734229967907890146e-7 ),
776775 };
777- // LCOV_EXCL_STOP
778776 result = z * (Y + tools::evaluate_polynomial (P, T (z * z)) / tools::evaluate_polynomial (Q, T (z * z)));
779777 }
780778 }
@@ -790,7 +788,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
790788 // Maximum Deviation Found: 1.388e-35
791789 // Expected Error Term: 1.387e-35
792790 // Maximum Relative Change in Control Points: 6.127e-05
793- // LCOV_EXCL_START
794791 static const T Y = 0 .371877193450927734375f ;
795792 static const T P[] = {
796793 BOOST_MATH_BIG_CONSTANT (T, 113 , -0.0640320213544647969396032886581290455 ),
@@ -817,14 +814,13 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
817814 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.226988669466501655990637599399326874e-4 ),
818815 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.270666232259029102353426738909226413e-10 ),
819816 };
820- // LCOV_EXCL_STOP
821817 result = Y + tools::evaluate_polynomial (P, T (z - 0 .5f )) / tools::evaluate_polynomial (Q, T (z - 0 .5f ));
822- T hi, lo; // LCOV_EXCL_LINE
818+ T hi, lo;
823819 int expon;
824820 hi = floor (ldexp (frexp (z, &expon), 56 ));
825821 hi = ldexp (hi, expon - 56 );
826822 lo = z - hi;
827- T sq = z * z; // LCOV_EXCL_LINE strangely not seen by lcov.
823+ T sq = z * z;
828824 T err_sqr = ((hi * hi - sq) + 2 * hi * lo) + lo * lo;
829825 result *= exp (-sq) * exp (-err_sqr) / z;
830826 }
@@ -834,7 +830,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
834830 // Maximum Deviation Found: 1.539e-35
835831 // Expected Error Term: 1.538e-35
836832 // Maximum Relative Change in Control Points: 6.104e-05
837- // LCOV_EXCL_START
838833 static const T Y = 0 .45658016204833984375f ;
839834 static const T P[] = {
840835 BOOST_MATH_BIG_CONSTANT (T, 113 , -0.0289965858925328393392496555094848345 ),
@@ -860,14 +855,13 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
860855 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.000349871943711566546821198612518656486 ),
861856 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.123749319840299552925421880481085392e-4 ),
862857 };
863- // LCOV_EXCL_STOP
864858 result = Y + tools::evaluate_polynomial (P, T (z - 1 .0f )) / tools::evaluate_polynomial (Q, T (z - 1 .0f ));
865- T hi, lo; // LCOV_EXCL_LINE
859+ T hi, lo;
866860 int expon;
867861 hi = floor (ldexp (frexp (z, &expon), 56 ));
868862 hi = ldexp (hi, expon - 56 );
869863 lo = z - hi;
870- T sq = z * z; // LCOV_EXCL_LINE strangley not seen by lcov
864+ T sq = z * z;
871865 T err_sqr = ((hi * hi - sq) + 2 * hi * lo) + lo * lo;
872866 result *= exp (-sq) * exp (-err_sqr) / z;
873867 }
@@ -877,7 +871,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
877871 // Expected Error Term: 1.418e-35
878872 // Maximum Relative Change in Control Points: 1.316e-04
879873 // Max Error found at long double precision = 1.998462e-35
880- // LCOV_EXCL_START
881874 static const T Y = 0 .50250148773193359375f ;
882875 static const T P[] = {
883876 BOOST_MATH_BIG_CONSTANT (T, 113 , -0.0201233630504573402185161184151016606 ),
@@ -904,14 +897,13 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
904897 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.507158721790721802724402992033269266e-5 ),
905898 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.18647774409821470950544212696270639e-12 ),
906899 };
907- // LCOV_EXCL_STOP
908900 result = Y + tools::evaluate_polynomial (P, T (z - 1 .5f )) / tools::evaluate_polynomial (Q, T (z - 1 .5f ));
909- T hi, lo; // LCOV_EXCL_LINE
901+ T hi, lo;
910902 int expon;
911903 hi = floor (ldexp (frexp (z, &expon), 56 ));
912904 hi = ldexp (hi, expon - 56 );
913905 lo = z - hi;
914- T sq = z * z; // LCOV_EXCL_LINE strangely not seen by lcov.
906+ T sq = z * z;
915907 T err_sqr = ((hi * hi - sq) + 2 * hi * lo) + lo * lo;
916908 result *= exp (-sq) * exp (-err_sqr) / z;
917909 }
@@ -921,7 +913,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
921913 // Expected Error Term: 3.575e-36
922914 // Maximum Relative Change in Control Points: 7.103e-05
923915 // Max Error found at long double precision = 5.794737e-36
924- // LCOV_EXCL_START
925916 static const T Y = 0 .52896785736083984375f ;
926917 static const T P[] = {
927918 BOOST_MATH_BIG_CONSTANT (T, 113 , -0.00902152521745813634562524098263360074 ),
@@ -947,14 +938,13 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
947938 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.686843205749767250666787987163701209e-4 ),
948939 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.192093541425429248675532015101904262e-5 ),
949940 };
950- // LCOV_EXCL_STOP
951941 result = Y + tools::evaluate_polynomial (P, T (z - 2 .25f )) / tools::evaluate_polynomial (Q, T (z - 2 .25f ));
952- T hi, lo; // LCOV_EXCL_LINE
942+ T hi, lo;
953943 int expon;
954944 hi = floor (ldexp (frexp (z, &expon), 56 ));
955945 hi = ldexp (hi, expon - 56 );
956946 lo = z - hi;
957- T sq = z * z; // LCOV_EXCL_LINE strangely not seen by lcov.
947+ T sq = z * z;
958948 T err_sqr = ((hi * hi - sq) + 2 * hi * lo) + lo * lo;
959949 result *= exp (-sq) * exp (-err_sqr) / z;
960950 }
@@ -964,7 +954,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
964954 // Expected Error Term: -8.126e-37
965955 // Maximum Relative Change in Control Points: 1.363e-04
966956 // Max Error found at long double precision = 1.747062e-36
967- // LCOV_EXCL_START
968957 static const T Y = 0 .54037380218505859375f ;
969958 static const T P[] = {
970959 BOOST_MATH_BIG_CONSTANT (T, 113 , -0.0033703486408887424921155540591370375 ),
@@ -988,14 +977,13 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
988977 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.000144243326443913171313947613547085553 ),
989978 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.407763415954267700941230249989140046e-5 ),
990979 };
991- // LCOV_EXCL_STOP
992980 result = Y + tools::evaluate_polynomial (P, T (z - 3 .0f )) / tools::evaluate_polynomial (Q, T (z - 3 .0f ));
993- T hi, lo; // LCOV_EXCL_LINE
981+ T hi, lo;
994982 int expon;
995983 hi = floor (ldexp (frexp (z, &expon), 56 ));
996984 hi = ldexp (hi, expon - 56 );
997985 lo = z - hi;
998- T sq = z * z; // LCOV_EXCL_LINE strangely not seen by lcov.
986+ T sq = z * z;
999987 T err_sqr = ((hi * hi - sq) + 2 * hi * lo) + lo * lo;
1000988 result *= exp (-sq) * exp (-err_sqr) / z;
1001989 }
@@ -1005,7 +993,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
1005993 // Expected Error Term: -5.803e-36
1006994 // Maximum Relative Change in Control Points: 2.475e-05
1007995 // Max Error found at long double precision = 1.349545e-35
1008- // LCOV_EXCL_START
1009996 static const T Y = 0 .55000019073486328125f ;
1010997 static const T P[] = {
1011998 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.00118142849742309772151454518093813615 ),
@@ -1033,14 +1020,13 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
10331020 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.655068544833064069223029299070876623e-6 ),
10341021 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.11005507545746069573608988651927452e-7 ),
10351022 };
1036- // LCOV_EXCL_STOP
10371023 result = Y + tools::evaluate_polynomial (P, T (z - 4 .5f )) / tools::evaluate_polynomial (Q, T (z - 4 .5f ));
1038- T hi, lo; // LCOV_EXCL_LINE
1024+ T hi, lo;
10391025 int expon;
10401026 hi = floor (ldexp (frexp (z, &expon), 56 ));
10411027 hi = ldexp (hi, expon - 56 );
10421028 lo = z - hi;
1043- T sq = z * z; // LCOV_EXCL_LINE strangely not seen by lcov.
1029+ T sq = z * z;
10441030 T err_sqr = ((hi * hi - sq) + 2 * hi * lo) + lo * lo;
10451031 result *= exp (-sq) * exp (-err_sqr) / z;
10461032 }
@@ -1050,7 +1036,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
10501036 // Expected Error Term: 1.007e-36
10511037 // Maximum Relative Change in Control Points: 1.027e-03
10521038 // Max Error found at long double precision = 2.646420e-36
1053- // LCOV_EXCL_START
10541039 static const T Y = 0 .5574436187744140625f ;
10551040 static const T P[] = {
10561041 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.000293236907400849056269309713064107674 ),
@@ -1076,8 +1061,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
10761061 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.674128352521481412232785122943508729e-6 ),
10771062 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.997637501418963696542159244436245077e-8 ),
10781063 };
1079- // LCOV_EXCL_STOP
1080- // LCOV_EXCL_START confirmed as covered by the __float128 tests in GNU mode.
10811064 result = Y + tools::evaluate_polynomial (P, T (z - 6 .5f )) / tools::evaluate_polynomial (Q, T (z - 6 .5f ));
10821065 T hi, lo;
10831066 int expon;
@@ -1087,15 +1070,13 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
10871070 T sq = z * z;
10881071 T err_sqr = ((hi * hi - sq) + 2 * hi * lo) + lo * lo;
10891072 result *= exp (-sq) * exp (-err_sqr) / z;
1090- // LCOV_EXCL_STOP
10911073 }
10921074 else if (z < 11.5 )
10931075 {
10941076 // Maximum Deviation Found: 8.380e-36
10951077 // Expected Error Term: 8.380e-36
10961078 // Maximum Relative Change in Control Points: 2.632e-06
10971079 // Max Error found at long double precision = 9.849522e-36
1098- // LCOV_EXCL_START
10991080 static const T Y = 0 .56083202362060546875f ;
11001081 static const T P[] = {
11011082 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.000282420728751494363613829834891390121 ),
@@ -1121,14 +1102,13 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
11211102 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.164033049810404773469413526427932109e-4 ),
11221103 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.356615210500531410114914617294694857e-6 ),
11231104 };
1124- // LCOV_EXCL_STOP
11251105 result = Y + tools::evaluate_polynomial (P, T (z / 2 - 4 .75f )) / tools::evaluate_polynomial (Q, T (z / 2 - 4 .75f ));
1126- T hi, lo; // LCOV_EXCL_LINE
1106+ T hi, lo;
11271107 int expon;
11281108 hi = floor (ldexp (frexp (z, &expon), 56 ));
11291109 hi = ldexp (hi, expon - 56 );
11301110 lo = z - hi;
1131- T sq = z * z; // LCOV_EXCL_LINE strangely not seen by lcov.
1111+ T sq = z * z;
11321112 T err_sqr = ((hi * hi - sq) + 2 * hi * lo) + lo * lo;
11331113 result *= exp (-sq) * exp (-err_sqr) / z;
11341114 }
@@ -1138,7 +1118,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
11381118 // Expected Error Term: -1.132e-35
11391119 // Maximum Relative Change in Control Points: 4.674e-04
11401120 // Max Error found at long double precision = 1.162590e-35
1141- // LCOV_EXCL_START
11421121 static const T Y = 0 .5632686614990234375f ;
11431122 static const T P[] = {
11441123 BOOST_MATH_BIG_CONSTANT (T, 113 , 0.000920922048732849448079451574171836943 ),
@@ -1168,7 +1147,6 @@ T erf_imp(T z, bool invert, const Policy& pol, const std::integral_constant<int,
11681147 BOOST_MATH_BIG_CONSTANT (T, 113 , 799.359797306084372350264298361110448 ),
11691148 BOOST_MATH_BIG_CONSTANT (T, 113 , 72.7415265778588087243442792401576737 ),
11701149 };
1171- // LCOV_EXCL_STOP
11721150 result = Y + tools::evaluate_polynomial (P, T (1 / z)) / tools::evaluate_polynomial (Q, T (1 / z));
11731151 T hi, lo;
11741152 int expon;
0 commit comments