# 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
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.