Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more
# File cmath.rb, line 155 def acos(z) if z.real? and z >= -1 and z <= 1 acos!(z) else (-1.0).i * log(z + 1.0.i * sqrt(1.0 - z * z)) end end
# File cmath.rb, line 187 def acosh(z) if z.real? and z >= 1 acosh!(z) else log(z + sqrt(z * z - 1.0)) end end
# File cmath.rb, line 147 def asin(z) if z.real? and z >= -1 and z <= 1 asin!(z) else (-1.0).i * log(1.0.i * z + sqrt(1.0 - z * z)) end end
# File cmath.rb, line 179 def asinh(z) if z.real? asinh!(z) else log(z + sqrt(1.0 + z * z)) end end
# File cmath.rb, line 163 def atan(z) if z.real? atan!(z) else 1.0.i * log((1.0.i + z) / (1.0.i - z)) / 2.0 end end
# File cmath.rb, line 171 def atan2(y,x) if y.real? and x.real? atan2!(y,x) else (-1.0).i * log((x + 1.0.i * y) / sqrt(x * x + y * y)) end end
# File cmath.rb, line 195 def atanh(z) if z.real? and z >= -1 and z <= 1 atanh!(z) else log((1.0 + z) / (1.0 - z)) / 2.0 end end
# File cmath.rb, line 87 def cbrt(z) if z.real? cbrt!(z) else Complex(z) ** (1.0/3) end end
# File cmath.rb, line 104 def cos(z) if z.real? cos!(z) else Complex(cos!(z.real) * cosh!(z.imag), -sin!(z.real) * sinh!(z.imag)) end end
# File cmath.rb, line 130 def cosh(z) if z.real? cosh!(z) else Complex(cosh!(z.real) * cos!(z.imag), sinh!(z.real) * sin!(z.imag)) end end
# File cmath.rb, line 29 def exp(z) if z.real? exp!(z) else ere = exp!(z.real) Complex(ere * cos!(z.imag), ere * sin!(z.imag)) end end
# File cmath.rb, line 39 def log(*args) z, b = args if z.real? and z >= 0 and (b.nil? or b >= 0) log!(*args) else a = Complex(log!(z.abs), z.arg) if b a /= log(b) end a end end
# File cmath.rb, line 60 def log10(z) if z.real? and z >= 0 log10!(z) else log(z) / log!(10) end end
# File cmath.rb, line 52 def log2(z) if z.real? and z >= 0 log2!(z) else log(z) / log!(2) end end
# File cmath.rb, line 95 def sin(z) if z.real? sin!(z) else Complex(sin!(z.real) * cosh!(z.imag), cos!(z.real) * sinh!(z.imag)) end end
# File cmath.rb, line 121 def sinh(z) if z.real? sinh!(z) else Complex(sinh!(z.real) * cos!(z.imag), cosh!(z.real) * sin!(z.imag)) end end
# File cmath.rb, line 68 def sqrt(z) if z.real? if z < 0 Complex(0, sqrt!(-z)) else sqrt!(z) end else if z.imag < 0 || (z.imag == 0 && z.imag.to_s[0] == '-') sqrt(z.conjugate).conjugate else r = z.abs x = z.real Complex(sqrt!((r + x) / 2), sqrt!((r - x) / 2)) end end end
# File cmath.rb, line 113 def tan(z) if z.real? tan!(z) else sin(z) / cos(z) end end
# File cmath.rb, line 139 def tanh(z) if z.real? tanh!(z) else sinh(z) / cosh(z) end end