struct Complex
Overview
A complex number is a number represented in the form a + bi. In this form, a and b are real numbers, and i is an imaginary number such as i² = -1. The a is the real part of the number, and the b is the imaginary part of the number.
require "complex"
Complex.new(1, 0) # => 1.0 + 0.0i
Complex.new(5, -12) # => 5.0 - 12.0i
1.to_c # => 1.0 + 0.0i
1.i # => 0.0 + 1.0i
Defined in:
complex.crConstructors
- .new(real : Number, imag : Number = 0)
- .new(c : Complex)
-
.zero : Complex
Returns the number
0
in complex form.
Instance Method Summary
-
#*(other : Number)
Multiplies
self
by other. -
#*(other : Complex)
Multiplies
self
by other. -
#+(other : Complex)
Adds the value of
self
to other. -
#+(other : Number)
Adds the value of
self
to other. -
#+
Returns absolute value of
self
. -
#-(other : Complex)
Removes the value of other from
self
. -
#-
Returns the opposite of
self
. -
#-(other : Number)
Removes the value of other from
self
. -
#/(other : Number)
Divides
self
by other. -
#/(other : Complex)
Divides
self
by other. -
#==(other : Complex)
Determines whether
self
equals other or not. -
#==(other : Number)
Determines whether
self
equals other or not. -
#==(other)
Determines whether
self
equals other or not. -
#abs
Returns the absolute value of this complex number in a number form, using the Pythagorean theorem.
-
#abs2
Returns the square of absolute value in a number form.
- #clone
-
#conj
Returns the conjugate of
self
. -
#exp
Calculates the exp of
self
. - #hash(hasher)
-
#imag : Float64
Returns the imaginary part.
-
#inspect(io : IO) : Nil
Writes this complex object to an io, surrounded by parentheses.
-
#inv
Returns the inverse of
self
. -
#log
Calculates the log of
self
. -
#log10
Calculates the log10 of
self
. -
#log2
Calculates the log2 of
self
. -
#phase
Returns the phase of
self
. - #polar
-
#real : Float64
Returns the real part.
- #sign
-
#sqrt
Complex#sqrt
was inspired by the following blog post of Pavel Panchekha on floating point precision. -
#to_c
Returns
self
. -
#to_f
See
#to_f64
. -
#to_f32
Returns the value as a
Float32
if possible (the imaginary part should be exactly zero), raises otherwise. -
#to_f64
Returns the value as a
Float64
if possible (the imaginary part should be exactly zero), raises otherwise. -
#to_i
See
#to_i32
. - #to_i16(*args, **options)
- #to_i16(*args, **options, &)
- #to_i32(*args, **options)
- #to_i32(*args, **options, &)
-
#to_i64
Returns the value as an
Int64
if possible (the imaginary part should be exactly zero), raises otherwise. - #to_i8(*args, **options)
- #to_i8(*args, **options, &)
-
#to_s(io : IO) : Nil
Writes this complex object to an io.
- #to_u16(*args, **options)
- #to_u16(*args, **options, &)
- #to_u32(*args, **options)
- #to_u32(*args, **options, &)
-
#to_u64
Returns the value as an
UInt64
if possible (the imaginary part should be exactly zero), raises otherwise. - #to_u8(*args, **options)
- #to_u8(*args, **options, &)
- #zero? : Bool
Instance methods inherited from struct Struct
==(other) : Bool
==,
hash(hasher)
hash,
inspect(io : IO) : Nil
inspect,
pretty_print(pp) : Nil
pretty_print,
to_s(io : IO) : Nil
to_s
Instance methods inherited from struct Value
==(other : JSON::Any)==(other : YAML::Any)
==(other) ==, dup dup
Instance methods inherited from class Object
! : Bool
!,
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash
hash(hasher) hash, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO)
to_json to_json, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") to_pretty_json, to_s : String
to_s(io : IO) : Nil to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io, root : String)from_json(string_or_io) from_json, from_yaml(string_or_io : String | IO) from_yaml
Constructor Detail
Instance Method Detail
Returns the absolute value of this complex number in a number form, using the Pythagorean theorem.
require "complex"
Complex.new(42, 2).abs # => 42.04759208325728
Complex.new(-42, 2).abs # => 42.04759208325728
Returns the square of absolute value in a number form.
require "complex"
Complex.new(42, 2).abs2 # => 1768
Returns the conjugate of self
.
require "complex"
Complex.new(42, 2).conj # => 42.0 - 2.0i
Complex.new(42, -2).conj # => 42.0 + 2.0i
Calculates the exp of self
.
require "complex"
Complex.new(4, 2).exp # => -22.720847417619233 + 49.645957334580565i
Writes this complex object to an io, surrounded by parentheses.
require "complex"
Complex.new(42, 2).inspect # => "(42.0 + 2.0i)"
Returns a Tuple
with the #abs
value and the #phase
.
require "complex"
Complex.new(42, 2).polar # => {42.047592083257278, 0.047583103276983396}
Complex#sqrt
was inspired by the following blog post
of Pavel Panchekha on floating point precision.
Returns the value as a Float32
if possible (the imaginary part should be exactly zero),
raises otherwise.
Returns the value as a Float64
if possible (the imaginary part should be exactly zero),
raises otherwise.
Returns the value as an Int64
if possible (the imaginary part should be exactly zero),
raises otherwise.
Writes this complex object to an io.
require "complex"
Complex.new(42, 2).to_s # => "42.0 + 2.0i"