module CMath
Public Class Methods
acos(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: acos!
acosh(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: acosh!
asin(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: asin!
asinh(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 179 def asinh(z) if z.real? asinh!(z) else log(z + sqrt(1.0 + z * z)) end end
Also aliased as: asinh!
atan(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: atan!
atan2(y,x)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: atan2!
atanh(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: atanh!
cbrt(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 87 def cbrt(z) if z.real? cbrt!(z) else Complex(z) ** (1.0/3) end end
Also aliased as: cbrt!
cos(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: cos!
cosh(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: cosh!
exp(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: exp!
log(*args)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: log!
log10(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 60 def log10(z) if z.real? and z >= 0 log10!(z) else log(z) / log!(10) end end
Also aliased as: log10!
log2(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 52 def log2(z) if z.real? and z >= 0 log2!(z) else log(z) / log!(2) end end
Also aliased as: log2!
sin(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: sin!
sinh(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: sinh!
sqrt(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: sqrt!
tan(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 113 def tan(z) if z.real? tan!(z) else sin(z) / cos(z) end end
Also aliased as: tan!
tanh(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 139 def tanh(z) if z.real? tanh!(z) else sinh(z) / cosh(z) end end
Also aliased as: tanh!
Private Instance Methods
acos(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: acos!
acosh(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: acosh!
asin(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: asin!
asinh(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 179 def asinh(z) if z.real? asinh!(z) else log(z + sqrt(1.0 + z * z)) end end
Also aliased as: asinh!
atan(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: atan!
atan2(y,x)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: atan2!
atanh(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: atanh!
cbrt(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 87 def cbrt(z) if z.real? cbrt!(z) else Complex(z) ** (1.0/3) end end
Also aliased as: cbrt!
cos(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: cos!
cosh(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: cosh!
exp(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: exp!
log(*args)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: log!
log10(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 60 def log10(z) if z.real? and z >= 0 log10!(z) else log(z) / log!(10) end end
Also aliased as: log10!
log2(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 52 def log2(z) if z.real? and z >= 0 log2!(z) else log(z) / log!(2) end end
Also aliased as: log2!
sin(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: sin!
sinh(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: sinh!
sqrt(z)
click to toggle source
# File lib/rubysl/cmath/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
Also aliased as: sqrt!
tan(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 113 def tan(z) if z.real? tan!(z) else sin(z) / cos(z) end end
Also aliased as: tan!
tanh(z)
click to toggle source
# File lib/rubysl/cmath/cmath.rb, line 139 def tanh(z) if z.real? tanh!(z) else sinh(z) / cosh(z) end end
Also aliased as: tanh!