Class: Basic101::BasicNumeric

Inherits:
BasicObject
Includes:
BasicComparisons, BasicMath, Comparable
Defined in:
lib/basic101/basic_numeric.rb

Direct Known Subclasses

BasicFloat, BasicInteger

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from BasicMath

basic_math_op

Methods included from BasicComparisons

comparison_op

Methods inherited from BasicObject

#eval, #to_float, #to_integer, #to_string, #type_name, type_name

Constructor Details

#initialize(value) ⇒ BasicNumeric

Returns a new instance of BasicNumeric.



17
18
19
# File 'lib/basic101/basic_numeric.rb', line 17

def initialize(value)
  @value = value
end

Instance Attribute Details

#valueObject (readonly)

Returns the value of attribute value.



15
16
17
# File 'lib/basic101/basic_numeric.rb', line 15

def value
  @value
end

Instance Method Details

#<=>(other) ⇒ Object



21
22
23
24
# File 'lib/basic101/basic_numeric.rb', line 21

def <=>(other)
  return nil unless other.is_a?(BasicNumeric)
  value <=> other.value
end

#absObject



64
65
66
# File 'lib/basic101/basic_numeric.rb', line 64

def abs
  self.class.new(@value.abs)
end

#cosObject



88
89
90
# File 'lib/basic101/basic_numeric.rb', line 88

def cos
  BasicFloat.new(Math.cos(@value))
end

#expObject



72
73
74
# File 'lib/basic101/basic_numeric.rb', line 72

def exp
  BasicFloat.new(Math::E ** @value).simplest
end

#logObject



80
81
82
# File 'lib/basic101/basic_numeric.rb', line 80

def log
  BasicFloat.new(Math.log(@value))
end

#negateObject



50
51
52
# File 'lib/basic101/basic_numeric.rb', line 50

def negate
  self.class.new(-value)
end


60
61
62
# File 'lib/basic101/basic_numeric.rb', line 60

def print_new_line(output)
  output.print "\n"
end


54
55
56
57
58
# File 'lib/basic101/basic_numeric.rb', line 54

def print_string(output)
  s = format + ' '
  s = ' ' + s unless s =~ /^-/
  output.print s
end

#sgnObject



76
77
78
# File 'lib/basic101/basic_numeric.rb', line 76

def sgn 
  BasicInteger.new(@value <=> 0)
end

#simplestObject



42
43
44
45
46
47
48
# File 'lib/basic101/basic_numeric.rb', line 42

def simplest
  if @value.modulo(1) == 0
    to_integer
  else
    self
  end
end

#sinObject



84
85
86
# File 'lib/basic101/basic_numeric.rb', line 84

def sin
  BasicFloat.new(Math.sin(@value))
end

#sqrObject



68
69
70
# File 'lib/basic101/basic_numeric.rb', line 68

def sqr
  BasicFloat.new(@value ** 0.5).simplest
end

#tanObject



92
93
94
# File 'lib/basic101/basic_numeric.rb', line 92

def tan
  BasicFloat.new(Math.tan(@value))
end

#to_bObject



38
39
40
# File 'lib/basic101/basic_numeric.rb', line 38

def to_b
  to_i != 0
end

#to_fObject



34
35
36
# File 'lib/basic101/basic_numeric.rb', line 34

def to_f
  @value.to_f
end

#to_iObject



30
31
32
# File 'lib/basic101/basic_numeric.rb', line 30

def to_i
  @value.to_i
end

#to_numericObject



26
27
28
# File 'lib/basic101/basic_numeric.rb', line 26

def to_numeric
  self
end