@@ -542,12 +542,12 @@ end
542
542
function asin (z:: Complex )
543
543
zr, zi = reim (z)
544
544
if isinf (zr) && isinf (zi)
545
- return Complex (copysign (pi / 4 , zr),zi)
545
+ return Complex (copysign (oftype (zr, pi / 4 ) , zr),zi)
546
546
elseif isnan (zi) && isinf (zr)
547
547
return Complex (zi, oftype (zr, Inf ))
548
548
end
549
549
ξ = zr == 0 ? zr :
550
- ! isfinite (zr) ? pi / 2 * sign (zr) :
550
+ ! isfinite (zr) ? oftype (zr, pi / 2 ) * sign (zr) :
551
551
atan2 (zr, real (sqrt (1 - z)* sqrt (1 + z)))
552
552
η = asinh (copysign (imag (sqrt (conj (1 - z))* sqrt (1 + z)), imag (z)))
553
553
Complex (ξ,η)
@@ -560,18 +560,18 @@ function acos{T<:FloatingPoint}(z::Complex{T})
560
560
else return Complex (zr, zr) end
561
561
elseif isnan (zi)
562
562
if isinf (zr) return Complex (zi, abs (zr))
563
- elseif zr== 0 return Complex (pi / 2 , zi)
563
+ elseif zr== 0 return Complex (oftype (zr, pi / 2 ) , zi)
564
564
else return Complex (zi, zi) end
565
565
elseif zr== zi== 0
566
- return Complex (pi / 2 , - zi)
566
+ return Complex (oftype (zr, pi / 2 ) , - zi)
567
567
elseif zr== Inf && zi=== 0.0
568
568
return Complex (zi, - zr)
569
569
elseif zr== - Inf && zi=== - 0.0
570
570
return Complex (oftype (zi, pi ), - zr)
571
571
end
572
572
ξ = 2 * atan2 (real (sqrt (1 - z)), real (sqrt (1 + z)))
573
573
η = asinh (imag (sqrt (conj (1 + z))* sqrt (1 - z)))
574
- if isinf (zr) && isinf (zi) ξ -= pi / 4 * sign (zr) end
574
+ if isinf (zr) && isinf (zi) ξ -= oftype (η, pi / 4 ) * sign (zr) end
575
575
Complex (ξ,η)
576
576
end
577
577
acos (z:: Complex ) = acos (float (z))
@@ -629,12 +629,12 @@ function acosh(z::Complex)
629
629
return Complex (oftype (zr, NaN ), oftype (zi, NaN ))
630
630
end
631
631
elseif zr== - Inf && zi=== - 0.0 # Edge case is wrong - WHY?
632
- return Complex (Inf , - pi )
632
+ return Complex (inf (zr), oftype (zi, - pi ) )
633
633
end
634
634
ξ = asinh (real (sqrt (conj (z- 1 ))* sqrt (z+ 1 )))
635
635
η = 2 atan2 (imag (sqrt (z- 1 )),real (sqrt (z+ 1 )))
636
636
if isinf (zr) && isinf (zi)
637
- η -= pi / 4 * sign (zi) * sign (zr)
637
+ η -= oftype (η, pi / 4 ) * sign (zi) * sign (zr)
638
638
end
639
639
Complex (ξ, η)
640
640
end
@@ -655,17 +655,17 @@ function atanh{T<:FloatingPoint}(z::Complex{T})
655
655
end
656
656
end
657
657
if isinf (y)
658
- return Complex (copysign (zero (x),x), copysign (pi / 2 , y))
658
+ return Complex (copysign (zero (x),x), copysign (oftype (y, pi / 2 ) , y))
659
659
end
660
- return Complex (real (1 / z), copysign (pi / 2 , y))
660
+ return Complex (real (1 / z), copysign (oftype (y, pi / 2 ) , y))
661
661
elseif ax== 1
662
662
if y == 0
663
663
ξ = copysign (oftype (x,Inf ),x)
664
664
η = zero (y)
665
665
else
666
666
ym = ay+ ρ
667
667
ξ = log (sqrt (sqrt (4 + y* y))/ sqrt (ym))
668
- η = copysign (pi / 2 + atan (ym/ 2 ), y)/ 2
668
+ η = copysign (oftype (y, pi / 2 ) + atan (ym/ 2 ), y)/ 2
669
669
end
670
670
else # Normal case
671
671
ysq = (ay+ ρ)^ 2
0 commit comments