Skip to content

Commit a53b013

Browse files
authored
Merge pull request #1130 from boostorg/mp_fix
Correct ellint_1 logic for types with no infinity.
2 parents 435d103 + 3dafc07 commit a53b013

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

include/boost/math/special_functions/ellint_1.hpp

+9-4
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,17 @@ T ellint_f_imp(T phi, T k, const Policy& pol, T one_minus_k2)
123123
//
124124
T c = 1 / sinp;
125125
T c_minus_one = cosp / sinp;
126-
T cross = fabs(c / (k * k));
127126
T arg2;
128-
if ((cross > 0.9f) && (cross < 1.1f))
129-
arg2 = c_minus_one + one_minus_k2;
127+
if (k != 0)
128+
{
129+
T cross = fabs(c / (k * k));
130+
if ((cross > 0.9f) && (cross < 1.1f))
131+
arg2 = c_minus_one + one_minus_k2;
132+
else
133+
arg2 = c - k * k;
134+
}
130135
else
131-
arg2 = c - k * k;
136+
arg2 = c;
132137
result = static_cast<T>(s * ellint_rf_imp(c_minus_one, arg2, c, pol));
133138
}
134139
else

0 commit comments

Comments
 (0)