Class: Quadratic::Imag
- Inherits:
-
Quadratic
show all
- Defined in:
- lib/quadratic_number/imag.rb,
lib/quadratic_number.rb
Overview
Abstract class for Quadratic[d] (d < 0).
Instances behave like those of Complex. See #to_c for details of the complex expression.
Instance Method Summary
collapse
Methods inherited from Quadratic
#*, #**, #+, #-, #-@, [], #coerce, #denominator, #discriminant, #eql?, #fdiv, #hash, #initialize, #inspect, #norm, #numerator, #qconj, #quo, #trace
Constructor Details
This class inherits a constructor from Quadratic
Instance Method Details
#==(other) ⇒ Boolean
36
37
38
39
40
41
42
|
# File 'lib/quadratic_number/imag.rb', line 36
def ==(other)
if other.kind_of?(Numeric)
self.to_c - other == 0
else
other == self
end
end
|
#abs ⇒ Real
Also known as:
magnitude
|
# File 'lib/quadratic_number/imag.rb', line 135
|
#arg ⇒ Real
Also known as:
angle, phase
|
# File 'lib/quadratic_number/imag.rb', line 140
|
#imag ⇒ Quadratic[-d]
Also known as:
imaginary
|
# File 'lib/quadratic_number/imag.rb', line 130
|
150
151
152
153
154
|
# File 'lib/quadratic_number/imag.rb', line 150
[:rect, :real, :imag, :abs, :arg, :polar].each do |sym|
define_method(sym) do
to_c.send(sym)
end
end
|
#rationalize(eps) ⇒ Rational
|
# File 'lib/quadratic_number/imag.rb', line 86
|
#real ⇒ Integer/Rational
|
# File 'lib/quadratic_number/imag.rb', line 125
|
#real? ⇒ Boolean
18
19
20
|
# File 'lib/quadratic_number/imag.rb', line 18
def real?
false
end
|
#rect ⇒ [Integer/Rational, Quadratic[-d]]
Also known as:
rectangular
|
# File 'lib/quadratic_number/imag.rb', line 120
|
#to_c ⇒ Complex
Returns an equivalent complex. Its imaginary part is usually a Quadratic::Real.
64
65
66
67
68
69
70
71
72
|
# File 'lib/quadratic_number/imag.rb', line 64
def to_c
d = self.class::D
if d == -1
Complex.rect(@a, @b)
else
rev_class = Quadratic[-d]
Complex.rect(@a, rev_class.new(0, @b))
end
end
|
#to_f ⇒ Float
|
# File 'lib/quadratic_number/imag.rb', line 74
|
#to_i ⇒ Integer
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/quadratic_number/imag.rb', line 99
{
:to_f => Float,
:to_r => Rational,
:rationalize => Rational,
:to_i => Integer
}.each do |sym,klass|
define_method(sym) do |*args|
if @b != 0
raise RangeError,
"can't convert #{self} into #{klass}"
end
@a.send(sym, *args)
end
end
|
#to_r ⇒ Rational
|
# File 'lib/quadratic_number/imag.rb', line 80
|