diff --git a/mats/5_3.ms b/mats/5_3.ms index 29f1a16305..1f2dd79cc7 100644 --- a/mats/5_3.ms +++ b/mats/5_3.ms @@ -2816,6 +2816,10 @@ (let ([x 0.5+1.5i]) (cfl~= (asin (sin x)) x)) (let ([x 0.5-1.5i]) (cfl~= (asin (sin x)) x)) (let ([z 2.2-1.1i]) (cfl~= (asin z) (/ (asinh (* +1.0i z)) +1.0i))) + (fl~= 1.5707963267948966 (real-part (asin +inf.0))) + (eqv? -inf.0 (imag-part (asin +inf.0))) + (fl~= -1.5707963267948966 (real-part (asin -inf.0))) + (eqv? +inf.0 (imag-part (asin -inf.0))) ) (mat acos @@ -2834,6 +2838,8 @@ (* +1.0i (sqrt (/ (- 1 z) 2)))))) +1.0i))) (let ([x 10+10.0i]) (cfl~= (+ (asin x) (acos x)) (/ pi 2))) + (fl~= 1.5707963267948966 (real-part (acos -inf.0i))) + (eqv? +inf.0 (imag-part (acos -inf.0i))) ) (mat atan diff --git a/s/5_3.ss b/s/5_3.ss index ee253bb158..da5a07fbf5 100644 --- a/s/5_3.ss +++ b/s/5_3.ss @@ -468,7 +468,7 @@ [z+ (cflsqrt (cfl+ 1.0 z))]) (let ([a (cfl-real-part z-)] [b (cfl-imag-part z-)] [c (cfl-real-part z+)] [d (cfl-imag-part z+)]) - (fl-make-rectangular (fl* 2.0 ($flatan (fl/ a c))) + (fl-make-rectangular (fl* 2.0 (flatan2 a c)) (flasinh (fl- (fl* b c) (fl* a d)))))))) (define cflasin @@ -484,7 +484,9 @@ (let ([a (cfl-real-part z-)] [b (cfl-imag-part z-)] [c (cfl-real-part z+)] [d (cfl-imag-part z+)]) (fl-make-rectangular - ($flatan (fl/ (cfl-real-part z) (fl- (fl* a c) (fl* b d)))) + (flatan2 (cfl-real-part z) (if (flonum? z) + 0.0 + (fl- (fl* a c) (fl* b d)))) (flasinh (fl- (fl* a d) (fl* b c)))))))) (define cflasinh