Module: CMath (Ruby 2.2.2)
Description: Module : CMath - Ruby 2.2.2

- Home
- Core 2.2.2
- Std-lib 2.2.2
- Downloads

Support for the Ruby 2.2 series has ended. See here for reference.

### Home Classes Methods

### In Files

- cmath.rb

### Methods

- ::acos
- ::acos!
- ::acosh
- ::acosh!
- ::asin
- ::asin!
- ::asinh
- ::asinh!
- ::atan
- ::atan!
- ::atan2
- ::atan2!
- ::atanh
- ::atanh!
- ::cbrt
- ::cbrt!
- ::cos
- ::cos!
- ::cosh
- ::cosh!
- ::exp
- ::exp!
- ::log
- ::log!
- ::log10
- ::log10!
- ::log2
- ::log2!
- ::sin
- ::sin!
- ::sinh
- ::sinh!
- ::sqrt
- ::sqrt!
- ::tan
- ::tan!
- ::tanh
- ::tanh!

### Included Modules

- Math

### Class/Module Index

Quicksearch

- CMath

No matching classes.

# CMath

CMath is a library that provides trigonometric and transcendental functions for complex numbers.

## Usage¶ ↑

To start using this library, simply:

    require "cmath"

Square root of a negative number is a complex number.

    CMath.sqrt(-9)  #=> 0+3.0i

### Public Class Methods

acos(z) click to toggle source

returns the arc cosine of `z`

                   # File cmath.rb, line 255
    def acos(z)
      begin
        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
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: acos!
acos!(z) click to toggle source
Alias for: acos
acosh(z) click to toggle source

returns the inverse hyperbolic cosine of `z`

                   # File cmath.rb, line 312
    def acosh(z)
      begin
        if z.real? and z >= 1
          acosh!(z)
        else
          log(z + sqrt(z * z - 1.0))
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: acosh!
acosh!(z) click to toggle source
Alias for: acosh
asin(z) click to toggle source

returns the arc sine of `z`

                   # File cmath.rb, line 241
    def asin(z)
      begin
        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
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: asin!
asin!(z) click to toggle source
Alias for: asin
asinh(z) click to toggle source

returns the inverse hyperbolic sine of `z`

                   # File cmath.rb, line 298
    def asinh(z)
      begin
        if z.real?
          asinh!(z)
        else
          log(z + sqrt(1.0 + z * z))
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: asinh!
asinh!(z) click to toggle source
Alias for: asinh
atan(z) click to toggle source

returns the arc tangent of `z`

                   # File cmath.rb, line 269
    def atan(z)
      begin
        if z.real?
          atan!(z)
        else
          1.0.i * log((1.0.i + z) / (1.0.i - z)) / 2.0
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: atan!
atan!(z) click to toggle source
Alias for: atan
atan2(y,x) click to toggle source

returns the arc tangent of `y` divided by `x` using the signs of `y` and `x` to determine the quadrant

                   # File cmath.rb, line 284
    def atan2(y,x)
      begin
        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
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: atan2!
atan2!(y,x) click to toggle source
Alias for: atan2
atanh(z) click to toggle source

returns the inverse hyperbolic tangent of `z`

                   # File cmath.rb, line 326
    def atanh(z)
      begin
        if z.real? and z >= -1 and z <= 1
          atanh!(z)
        else
          log((1.0 + z) / (1.0 - z)) / 2.0
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: atanh!
atanh!(z) click to toggle source
Alias for: atanh
cbrt(z) click to toggle source

returns the principal value of the cube root of `z`

                   # File cmath.rb, line 147
    def cbrt(z)
      z ** (1.0/3)
    end

Also aliased as: cbrt!
cbrt!(z) click to toggle source
Alias for: cbrt
cos(z) click to toggle source

returns the cosine of `z`, where `z` is given in radians

                   # File cmath.rb, line 168
    def cos(z)
      begin
        if z.real?
          cos!(z)
        else
          Complex(cos!(z.real) * cosh!(z.imag),
                  -sin!(z.real) * sinh!(z.imag))
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: cos!
cos!(z) click to toggle source
Alias for: cos
cosh(z) click to toggle source

returns the hyperbolic cosine of `z`, where `z` is given in radians

                   # File cmath.rb, line 212
    def cosh(z)
      begin
        if z.real?
          cosh!(z)
        else
          Complex(cosh!(z.real) * cos!(z.imag),
                  sinh!(z.real) * sin!(z.imag))
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: cosh!
cosh!(z) click to toggle source
Alias for: cosh
exp(z) click to toggle source

Math::E raised to the `z` power

    exp(Complex(0,0))      #=> 1.0+0.0i
    exp(Complex(0,PI))     #=> -1.0+1.2246467991473532e-16i
    exp(Complex(0,PI/2.0)) #=> 6.123233995736766e-17+1.0i

                   # File cmath.rb, line 50
    def exp(z)
      begin
        if z.real?
          exp!(z)
        else
          ere = exp!(z.real)
          Complex(ere * cos!(z.imag),
                  ere * sin!(z.imag))
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: exp!
exp!(z) click to toggle source
Alias for: exp
log(*args) click to toggle source

Returns the natural logarithm of Complex. If a second argument is given, it will be the base of logarithm.

    log(Complex(0,0)) #=> -Infinity+0.0i

                   # File cmath.rb, line 69
    def log(*args)
      begin
        z, b = args
        unless b.nil? || b.kind_of?(Numeric)
          raise TypeError,  "Numeric Number required"
        end
        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
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: log!
log!(*args) click to toggle source
Alias for: log
log10(z) click to toggle source

returns the base 10 logarithm of `z`

                   # File cmath.rb, line 105
    def log10(z)
      begin
        if z.real? and z >= 0
          log10!(z)
        else
          log(z) / log!(10)
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: log10!
log10!(z) click to toggle source
Alias for: log10
log2(z) click to toggle source

returns the base 2 logarithm of `z`

                   # File cmath.rb, line 91
    def log2(z)
      begin
        if z.real? and z >= 0
          log2!(z)
        else
          log(z) / log!(2)
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: log2!
log2!(z) click to toggle source
Alias for: log2
sin(z) click to toggle source

returns the sine of `z`, where `z` is given in radians

                   # File cmath.rb, line 153
    def sin(z)
      begin
        if z.real?
          sin!(z)
        else
          Complex(sin!(z.real) * cosh!(z.imag),
                  cos!(z.real) * sinh!(z.imag))
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: sin!
sin!(z) click to toggle source
Alias for: sin
sinh(z) click to toggle source

returns the hyperbolic sine of `z`, where `z` is given in radians

                   # File cmath.rb, line 197
    def sinh(z)
      begin
        if z.real?
          sinh!(z)
        else
          Complex(sinh!(z.real) * cos!(z.imag),
                  cosh!(z.real) * sin!(z.imag))
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: sinh!
sinh!(z) click to toggle source
Alias for: sinh
sqrt(z) click to toggle source

Returns the non-negative square root of Complex.

    sqrt(-1)            #=> 0+1.0i
    sqrt(Complex(-1,0)) #=> 0.0+1.0i
    sqrt(Complex(0,8))  #=> 2.0+2.0i

                   # File cmath.rb, line 122
    def sqrt(z)
      begin
        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.0), sqrt!((r - x) / 2.0))
          end
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: sqrt!
sqrt!(z) click to toggle source
Alias for: sqrt
tan(z) click to toggle source

returns the tangent of `z`, where `z` is given in radians

                   # File cmath.rb, line 183
    def tan(z)
      begin
        if z.real?
          tan!(z)
        else
          sin(z) / cos(z)
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: tan!
tan!(z) click to toggle source
Alias for: tan
tanh(z) click to toggle source

returns the hyperbolic tangent of `z`, where `z` is given in radians

                   # File cmath.rb, line 227
    def tanh(z)
      begin
        if z.real?
          tanh!(z)
        else
          sinh(z) / cosh(z)
        end
      rescue NoMethodError
        handle_no_method_error
      end
    end

Also aliased as: tanh!
tanh!(z) click to toggle source
Alias for: tanh