@@ -1595,17 +1595,18 @@ end
15951595 if (rh == r3)
15961596 rh += eps (T)
15971597 end
1598+ err_return = (T (Inf ), false , false )
15981599 x2_s = √ abs ((rh - r4) / (rh - r3) * r31 / r41)
15991600 coef = 2 / √ real (r31 * r42)
16001601 Ir_s = ! (x2_s < one (T)) ? zero (T) : coef * JacobiElliptic. F (asin (x2_s), k)
16011602
16021603 fo = I0_inf (pix)
16031604
1604- r4 < rh && τ > (fo - Ir_s) && return zero (T), false , false # invalid case2
1605+ r4 < rh && τ > (fo - Ir_s) && return err_return # invalid case2
16051606
16061607 X2 = √ (r31 * r42) * (fo - τ) / 2
16071608 if τ > 2 fo
1608- return zero (T), false , false
1609+ return err_return
16091610 end
16101611 sn = r41 * JacobiElliptic. sn (X2, k)^ 2
16111612 return (r31 * r4 - r3 * sn) / (r31 - sn), X2 > zero (T), true
@@ -1617,7 +1618,7 @@ end
16171618 r21, r31, r32, r41, r42, _ = _get_root_diffs (radial_roots... )
16181619 r1, r2, r21 = real .((r1, r2, r21))
16191620
1620-
1621+ err_return = ( T ( Inf ), false , false )
16211622 fo = I0_inf (pix)
16221623 A = √ abs (r32 * r42)
16231624 B = √ abs (r31 * r41)
@@ -1626,11 +1627,11 @@ end
16261627 x3_s = clamp (((one (T) - temprat) / (one (T) + temprat)), - one (T), one (T))
16271628 coef = one (T) * √ inv (A * B)
16281629 Ir_s = coef * JacobiElliptic. F ((acos (x3_s)), k)
1629- τ > (fo - Ir_s) && return zero (T), false , false
1630+ τ > (fo - Ir_s) && return err_return
16301631
16311632 X3 = √ (A * B) * real (fo - τ)
16321633 if X3 < zero (T)
1633- return zero (T), false , false
1634+ return err_return
16341635 end
16351636 cn = JacobiElliptic. cn (X3, k)
16361637 num = - A * r1 + B * r2 + (A * r1 + B * r2) * cn
@@ -1651,16 +1652,13 @@ end
16511652 D = sqrt ((a1+ a2)^ 2 + (b1- b2)^ 2 )
16521653 k4 = 4 C * D / (C + D)^ 2
16531654
1654-
1655- k4 = T (4 ) * C * D / (C + D)^ 2
1656-
16571655 go = √ max ((T (4 )a2^ 2 - (C - D)^ 2 ) / ((C + D)^ 2 - T (4 )a2^ 2 ), zero (T))
16581656 x4_s = (rh + b1) / a2
16591657 coef = 2 / (C + D)
16601658 Ir_s = coef * JacobiElliptic. F (atan (x4_s) + atan (go), k4)
16611659
16621660 fo = I0_inf (pix)
1663- τ > (fo - Ir_s) && return zero (T ), false , false
1661+ τ > (fo - Ir_s) && return ( T ( Inf ), false , false )
16641662
16651663 X4 = (C + D) / T (2 ) * (fo - τ)
16661664 num = go - JacobiElliptic. sc (X4, k4)
0 commit comments