Class: Rational

Inherits:
Object show all
Defined in:
lib/ruuuby/class/nums/rational.rb

Overview

Ruuuby modifications to existing class<code>Rational</code>

Instance Method Summary collapse

Instance Method Details

#^(n) ⇒ Numeric, ...

Ruuuby implementation before switching to C-extensions: (f98)

Parameters:

Returns:

Raises:

  • (ArgumentError)


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/ruuuby/class/nums/rational.rb', line 27

def ^(n)
  evaluated = n.sym?(:'∈^')
  if evaluated.int?
    if self != 0
      return self ** evaluated
    else
      if evaluated == 0
        return ::Float::NAN
      else
        return self ** evaluated
      end
    end
  elsif evaluated.flt?
    if evaluated == ::Float::INFINITY
      if self == 1 || self == -1
        return ::Float::NAN
      elsif self == 0 || (self < 1 && self > 0) || (self > -1 && self < 0)
        return 0
      elsif self < 0
        return ::Float::INFINITY_COMPLEX
      else
        return ::Float::INFINITY
      end
    else
      if self == 1 || self == -1
        return ::Float::NAN
      elsif self == 0 || (self > -1 && self < 0)
        return ::Float::INFINITY_COMPLEX
      elsif self < 1 && self > 0
        return ::Float::INFINITY
      else
        return self ** Float::INFINITY_NEGATIVE
      end
    end
  elsif evaluated == :

#one?Boolean

Returns:

  • (Boolean)


7
# File 'lib/ruuuby/class/nums/rational.rb', line 7

def one?; self == 1; end

#smells_like_int?Boolean

Returns:

  • (Boolean)


18
# File 'lib/ruuuby/class/nums/rational.rb', line 18

def smells_like_int?; self.finite? && (self.fdiv(1) % 1 == 0); end

#μ?Boolean

Note:
Q: a set of all the unit-rationals would be considered ‘closed_under_subtraction’?
Note:

(1.0 / x) * (1.0 / y) == (1.0 / (x * y))

Returns:

  • (Boolean)

See Also:



15
# File 'lib/ruuuby/class/nums/rational.rb', line 15

def