# Math (Module)

In: | complex.rb

## Methods

acos acosh asin asinh atan atan2 atanh cos cosh exp log log10 sin sinh sqrt tan tanh

## External Aliases

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

## Public Instance methods

sqrt(z)

Redefined to handle a Complex argument.

[Source]

    # File complex.rb, line 435
      def sqrt(z)
        if Complex.generic?(z)
          if z >= 0
            sqrt!(z)
          else
            Complex(0,sqrt!(-z))
          end
        else
          if z.image < 0
            sqrt(z.conjugate).conjugate
          else
            r = z.abs
            x = z.real
            Complex( sqrt!((r+x)/2), sqrt!((r-x)/2) )
          end
        end
      end

exp(z)

Redefined to handle a Complex argument.

[Source]

    # File complex.rb, line 454
      def exp(z)
        if Complex.generic?(z)
          exp!(z)
        else
          Complex(exp!(z.real) * cos!(z.image), exp!(z.real) * sin!(z.image))
        end
      end

cos(z)

Redefined to handle a Complex argument.

[Source]

    # File complex.rb, line 463
      def cos(z)
        if Complex.generic?(z)
          cos!(z)
        else
          Complex(cos!(z.real)*cosh!(z.image),
                  -sin!(z.real)*sinh!(z.image))
        end
      end

sin(z)

Redefined to handle a Complex argument.

[Source]

    # File complex.rb, line 473
      def sin(z)
        if Complex.generic?(z)
          sin!(z)
        else
          Complex(sin!(z.real)*cosh!(z.image),
                  cos!(z.real)*sinh!(z.image))
        end
      end

tan(z)

Redefined to handle a Complex argument.

[Source]

    # File complex.rb, line 483
      def tan(z)
        if Complex.generic?(z)
          tan!(z)
        else
          sin(z)/cos(z)
        end
      end

sinh(z)

[Source]

    # File complex.rb, line 491
      def sinh(z)
        if Complex.generic?(z)
          sinh!(z)
        else
          Complex( sinh!(z.real)*cos!(z.image), cosh!(z.real)*sin!(z.image) )
        end
      end

cosh(z)

[Source]

    # File complex.rb, line 499
      def cosh(z)
        if Complex.generic?(z)
          cosh!(z)
        else
          Complex( cosh!(z.real)*cos!(z.image), sinh!(z.real)*sin!(z.image) )
        end
      end

tanh(z)

[Source]

    # File complex.rb, line 507
      def tanh(z)
        if Complex.generic?(z)
          tanh!(z)
        else
          sinh(z)/cosh(z)
        end
      end

log(z)

Redefined to handle a Complex argument.

[Source]

    # File complex.rb, line 516
      def log(z)
        if Complex.generic?(z) and z >= 0
          log!(z)
        else
          r, theta = z.polar
          Complex(log!(r.abs), theta)
        end
      end

log10(z)

Redefined to handle a Complex argument.

[Source]

    # File complex.rb, line 526
      def log10(z)
        if Complex.generic?(z)
          log10!(z)
        else
          log(z)/log!(10)
        end
      end

acos(z)

[Source]

    # File complex.rb, line 534
      def acos(z)
        if Complex.generic?(z) and z >= -1 and z <= 1
          acos!(z)
        else
          -1.0.im * log( z + 1.0.im * sqrt(1.0-z*z) )
        end
      end

asin(z)

[Source]

    # File complex.rb, line 542
      def asin(z)
        if Complex.generic?(z) and z >= -1 and z <= 1
          asin!(z)
        else
          -1.0.im * log( 1.0.im * z + sqrt(1.0-z*z) )
        end
      end

atan(z)

[Source]

    # File complex.rb, line 550
      def atan(z)
        if Complex.generic?(z)
          atan!(z)
        else
          1.0.im * log( (1.0.im+z) / (1.0.im-z) ) / 2.0
        end
      end

atan2(y,x)

[Source]

    # File complex.rb, line 558
      def atan2(y,x)
        if Complex.generic?(y) and Complex.generic?(x)
          atan2!(y,x)
        else
          -1.0.im * log( (x+1.0.im*y) / sqrt(x*x+y*y) )
        end
      end

acosh(z)

[Source]

    # File complex.rb, line 566
      def acosh(z)
        if Complex.generic?(z) and z >= 1
          acosh!(z)
        else
          log( z + sqrt(z*z-1.0) )
        end
      end

asinh(z)

[Source]

    # File complex.rb, line 574
      def asinh(z)
        if Complex.generic?(z)
          asinh!(z)
        else
          log( z + sqrt(1.0+z*z) )
        end
      end

atanh(z)

[Source]

    # File complex.rb, line 582
      def atanh(z)
        if Complex.generic?(z) and z >= -1 and z <= 1
          atanh!(z)
        else
          log( (1.0+z) / (1.0-z) ) / 2.0
        end
      end

[Validate]