Class: Numeric

Inherits:
Object show all
Includes:
Comparable
Defined in:
opal/opal/corelib/numeric.rb

Direct Known Subclasses

Complex, Float, Integer, Number, Rational

Instance Method Summary collapse

Methods included from Comparable

#<, #<=, #==, #>, #>=, #between?, #clamp

Instance Method Details

#%(other) ⇒ Object Also known as: modulo



44
45
46
# File 'opal/opal/corelib/numeric.rb', line 44

def %(other)
  self - other * div(other)
end

#+@Object



36
37
38
# File 'opal/opal/corelib/numeric.rb', line 36

def +@
  self
end

#-@Object



40
41
42
# File 'opal/opal/corelib/numeric.rb', line 40

def -@
  0 - self
end

#<=>(other) ⇒ Object



28
29
30
31
32
33
34
# File 'opal/opal/corelib/numeric.rb', line 28

def <=>(other)
  if equal? other
    return 0
  end

  nil
end

#__coerced__(method, other) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'opal/opal/corelib/numeric.rb', line 14

def __coerced__(method, other)
  if other.respond_to?(:coerce)
    a, b = other.coerce(self)
    a.__send__ method, b
  else
    case method
    when :+, :-, :*, :/, :%, :&, :|, :^, :**
      raise TypeError, "#{other.class} can't be coerced into Numeric"
    when :>, :>=, :<, :<=, :<=>
      raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
    end
  end
end

#absObject Also known as: magnitude



48
49
50
# File 'opal/opal/corelib/numeric.rb', line 48

def abs
  self < 0 ? -self : self
end

#abs2Object



52
53
54
# File 'opal/opal/corelib/numeric.rb', line 52

def abs2
  self * self
end

#angleObject Also known as: arg



56
57
58
# File 'opal/opal/corelib/numeric.rb', line 56

def angle
  self < 0 ? Math::PI : 0
end

#ceil(ndigits = 0) ⇒ Object



62
63
64
# File 'opal/opal/corelib/numeric.rb', line 62

def ceil(ndigits = 0)
  to_f.ceil(ndigits)
end

#clone(freeze: true) ⇒ Object



176
177
178
# File 'opal/opal/corelib/numeric.rb', line 176

def clone(freeze: true)
  self
end

#coerce(other) ⇒ Object



6
7
8
9
10
11
12
# File 'opal/opal/corelib/numeric.rb', line 6

def coerce(other)
  if other.instance_of? self.class
    return [other, self]
  end

  [Float(other), Float(self)]
end

#conjObject Also known as: conjugate



66
67
68
# File 'opal/opal/corelib/numeric.rb', line 66

def conj
  self
end

#denominatorObject



72
73
74
# File 'opal/opal/corelib/numeric.rb', line 72

def denominator
  to_r.denominator
end

#div(other) ⇒ Object

Raises:



76
77
78
79
80
# File 'opal/opal/corelib/numeric.rb', line 76

def div(other)
  raise ZeroDivisionError, 'divided by o' if other == 0

  (self / other).floor
end

#divmod(other) ⇒ Object



82
83
84
# File 'opal/opal/corelib/numeric.rb', line 82

def divmod(other)
  [div(other), self % other]
end

#dupObject



172
173
174
# File 'opal/opal/corelib/numeric.rb', line 172

def dup
  self
end

#fdiv(other) ⇒ Object



86
87
88
# File 'opal/opal/corelib/numeric.rb', line 86

def fdiv(other)
  to_f / other
end

#finite?Boolean

Returns:



180
181
182
# File 'opal/opal/corelib/numeric.rb', line 180

def finite?
  true
end

#floor(ndigits = 0) ⇒ Object



90
91
92
# File 'opal/opal/corelib/numeric.rb', line 90

def floor(ndigits = 0)
  to_f.floor(ndigits)
end

#iObject



94
95
96
# File 'opal/opal/corelib/numeric.rb', line 94

def i
  Complex(0, self)
end

#imagObject Also known as: imaginary



98
99
100
# File 'opal/opal/corelib/numeric.rb', line 98

def imag
  0
end

#infinite?Boolean

Returns:



184
185
186
# File 'opal/opal/corelib/numeric.rb', line 184

def infinite?
  nil
end

#integer?Boolean

Returns:



104
105
106
# File 'opal/opal/corelib/numeric.rb', line 104

def integer?
  false
end

#negative?Boolean

Returns:



168
169
170
# File 'opal/opal/corelib/numeric.rb', line 168

def negative?
  self < 0
end

#nonzero?Boolean

Returns:



112
113
114
# File 'opal/opal/corelib/numeric.rb', line 112

def nonzero?
  zero? ? nil : self
end

#numeratorObject



116
117
118
# File 'opal/opal/corelib/numeric.rb', line 116

def numerator
  to_r.numerator
end

#polarObject



122
123
124
# File 'opal/opal/corelib/numeric.rb', line 122

def polar
  [abs, arg]
end

#positive?Boolean

Returns:



164
165
166
# File 'opal/opal/corelib/numeric.rb', line 164

def positive?
  self > 0
end

#quo(other) ⇒ Object



126
127
128
# File 'opal/opal/corelib/numeric.rb', line 126

def quo(other)
  Opal.coerce_to!(self, Rational, :to_r) / other
end

#realObject



130
131
132
# File 'opal/opal/corelib/numeric.rb', line 130

def real
  self
end

#real?Boolean

Returns:



134
135
136
# File 'opal/opal/corelib/numeric.rb', line 134

def real?
  true
end

#rectObject Also known as: rectangular



138
139
140
# File 'opal/opal/corelib/numeric.rb', line 138

def rect
  [self, 0]
end

#round(digits = undefined) ⇒ Object



144
145
146
# File 'opal/opal/corelib/numeric.rb', line 144

def round(digits = undefined)
  to_f.round(digits)
end

#to_cObject



148
149
150
# File 'opal/opal/corelib/numeric.rb', line 148

def to_c
  Complex(self, 0)
end

#to_intObject



152
153
154
# File 'opal/opal/corelib/numeric.rb', line 152

def to_int
  to_i
end

#truncate(ndigits = 0) ⇒ Object



156
157
158
# File 'opal/opal/corelib/numeric.rb', line 156

def truncate(ndigits = 0)
  to_f.truncate(ndigits)
end

#zero?Boolean

Returns:



160
161
162
# File 'opal/opal/corelib/numeric.rb', line 160

def zero?
  self == 0
end