typelevel / spire

Powerful new number types and numeric abstractions for Scala.
http://typelevel.org/spire/
MIT License
1.76k stars 242 forks source link

`Complex` `atan2` and `tanh` are wrong #1313

Open RubenVerg opened 5 months ago

RubenVerg commented 5 months ago

I think there is a bug in the atan2 and tanh implementation for Complex numbers:

import spire.implicits.*
import spire.math.*
println(tan(atan2(Complex(2.0, 0.0), Complex(1.0, 0.0))))
// -> 1??
println(tanh(log(Complex(2.0, 0.0))))
// -> 1.5843415012250004??
println(tan(atan2(2.0, 1.0)))
// -> 2, as expected
println(tanh(log(2)))
// -> 0.6, as expected