summaryrefslogtreecommitdiff
path: root/numeric.rb
diff options
context:
space:
mode:
authorBurdette Lamar <[email protected]>2023-08-13 20:23:41 -0500
committer<[email protected]>2023-08-13 21:23:41 -0400
commitd33555eeaeac76a76c086c3dd09f53fff88d7f6a ()
treede25a324e15db23c59abc95dfc0352448be40d58 /numeric.rb
parent3080cf3decf18c72c1fc608c112048fff0614c9b (diff)
[DOC] RDoc for numeric.rb (#8216)
Notes: Merged-By: peterzhu2118 <[email protected]>
-rw-r--r--numeric.rb271
1 files changed, 125 insertions, 146 deletions
@@ -1,62 +1,56 @@
class Numeric
- #
# call-seq:
- # num.real? -> true or false
#
- # Returns +true+ if +num+ is a real number (i.e. not Complex).
#
def real?
true
end
- #
# call-seq:
- # num.real -> self
#
- # Returns self.
#
def real
self
end
- #
# call-seq:
- # num.integer? -> true or false
#
- # Returns +true+ if +num+ is an Integer.
#
- # 1.0.integer? #=> false
- # 1.integer? #=> true
#
def integer?
false
end
- #
# call-seq:
- # num.finite? -> true or false
#
- # Returns +true+ if +num+ is a finite number, otherwise returns +false+.
#
def finite?
true
end
- #
# call-seq:
- # num.infinite? -> -1, 1, or nil
#
- # Returns +nil+, -1, or 1 depending on whether the value is
- # finite, <code>-Infinity</code>, or <code>+Infinity</code>.
#
def infinite?
nil
end
- #
# call-seq:
- # num.imag -> 0
- # num.imaginary -> 0
#
# Returns zero.
#
@@ -66,12 +60,10 @@ class Numeric
alias imag imaginary
- #
# call-seq:
- # num.conj -> self
- # num.conjugate -> self
#
- # Returns self.
#
def conjugate
self
@@ -82,39 +74,41 @@ end
class Integer
# call-seq:
- # -int -> integer
#
- # Returns +int+, negated.
def -@
Primitive.attr! :leaf
Primitive.cexpr! 'rb_int_uminus(self)'
end
# call-seq:
- # ~int -> integer
#
- # One's complement: returns a number where each bit is flipped.
#
- # Inverts the bits in an Integer. As integers are conceptually of
- # infinite length, the result acts as if it had an infinite number of
- # one bits to the left. In hex representations, this is displayed
- # as two periods to the left of the digits.
#
- # sprintf("%X", ~0x1122334455) #=> "..FEEDDCCBBAA"
def ~
Primitive.attr! :leaf
Primitive.cexpr! 'rb_int_comp(self)'
end
# call-seq:
- # int.abs -> integer
- # int.magnitude -> integer
#
- # Returns the absolute value of +int+.
#
- # (-12345).abs #=> 12345
- # -12345.abs #=> 12345
- # 12345.abs #=> 12345
#
def abs
Primitive.attr! :leaf
@@ -122,64 +116,65 @@ class Integer
end
# call-seq:
- # int.bit_length -> integer
#
- # Returns the number of bits of the value of +int+.
- #
- # "Number of bits" means the bit position of the highest bit
- # which is different from the sign bit
# (where the least significant bit has bit position 1).
- # If there is no such bit (zero or minus one), zero is returned.
- #
- # I.e. this method returns <i>ceil(log2(int < 0 ? -int : int+1))</i>.
- #
- # (-2**1000-1).bit_length #=> 1001
- # (-2**1000).bit_length #=> 1000
- # (-2**1000+1).bit_length #=> 1000
- # (-2**12-1).bit_length #=> 13
- # (-2**12).bit_length #=> 12
- # (-2**12+1).bit_length #=> 12
- # -0x101.bit_length #=> 9
- # -0x100.bit_length #=> 8
- # -0xff.bit_length #=> 8
- # -2.bit_length #=> 1
- # -1.bit_length #=> 0
- # 0.bit_length #=> 0
- # 1.bit_length #=> 1
- # 0xff.bit_length #=> 8
- # 0x100.bit_length #=> 9
- # (2**12-1).bit_length #=> 12
- # (2**12).bit_length #=> 13
- # (2**12+1).bit_length #=> 13
- # (2**1000-1).bit_length #=> 1000
- # (2**1000).bit_length #=> 1001
- # (2**1000+1).bit_length #=> 1001
- #
- # This method can be used to detect overflow in Array#pack as follows:
- #
- # if n.bit_length < 32
- # [n].pack("l") # no overflow
- # else
- # raise "overflow"
- # end
def bit_length
Primitive.attr! :leaf
Primitive.cexpr! 'rb_int_bit_length(self)'
end
# call-seq:
- # int.even? -> true or false
#
- # Returns +true+ if +int+ is an even number.
def even?
Primitive.attr! :leaf
Primitive.cexpr! 'rb_int_even_p(self)'
end
# call-seq:
- # int.integer? -> true
#
- # Since +int+ is already an Integer, this always returns +true+.
def integer?
true
end
@@ -187,41 +182,35 @@ class Integer
alias magnitude abs
# call-seq:
- # int.odd? -> true or false
#
- # Returns +true+ if +int+ is an odd number.
def odd?
Primitive.attr! :leaf
Primitive.cexpr! 'rb_int_odd_p(self)'
end
# call-seq:
- # int.ord -> self
- #
- # Returns the +int+ itself.
- #
- # 97.ord #=> 97
- #
- # This method is intended for compatibility to character literals
- # in Ruby 1.9.
#
- # For example, <code>?a.ord</code> returns 97 both in 1.8 and 1.9.
def ord
self
end
# call-seq:
- # int.size -> int
#
- # Returns the number of bytes in the machine representation of +int+
- # (machine dependent).
#
- # 1.size #=> 8
- # -1.size #=> 8
- # 2147483647.size #=> 8
- # (256**10 - 1).size #=> 10
- # (256**20 - 1).size #=> 20
- # (256**40 - 1).size #=> 40
#
def size
Primitive.attr! :leaf
@@ -229,89 +218,86 @@ class Integer
end
# call-seq:
- # int.to_i -> integer
#
- # Since +int+ is already an Integer, returns +self+.
def to_i
self
end
# call-seq:
- # int.to_int -> integer
#
- # Since +int+ is already an Integer, returns +self+.
def to_int
self
end
# call-seq:
- # int.zero? -> true or false
#
- # Returns +true+ if +int+ has a zero value.
def zero?
Primitive.attr! :leaf
Primitive.cexpr! 'rb_int_zero_p(self)'
end
# call-seq:
- # ceildiv(other) -> integer
#
- # Returns the result of division +self+ by +other+. The result is rounded up to the nearest integer.
#
- # 3.ceildiv(3) # => 1
- # 4.ceildiv(3) # => 2
#
- # 4.ceildiv(-3) # => -1
- # -4.ceildiv(3) # => -1
# -4.ceildiv(-3) # => 2
#
# 3.ceildiv(1.2) # => 3
def ceildiv(other)
-div(0 - other)
end
#
# call-seq:
- # int.numerator -> self
#
- # Returns self.
#
def numerator
self
end
- #
# call-seq:
- # int.denominator -> 1
- #
- # Returns 1.
#
def denominator
1
end
end
class Float
- #
# call-seq:
- # float.to_f -> self
- #
- # Since +float+ is already a Float, returns +self+.
#
def to_f
self
end
- #
# call-seq:
- # float.abs -> float
- # float.magnitude -> float
#
- # Returns the absolute value of +float+.
#
- # (-34.56).abs #=> 34.56
- # -34.56.abs #=> 34.56
- # 34.56.abs #=> 34.56
#
def abs
Primitive.attr! :leaf
@@ -323,45 +309,38 @@ class Float
Primitive.cexpr! 'rb_float_abs(self)'
end
- #
# call-seq:
- # -float -> float
#
- # Returns +float+, negated.
#
def -@
Primitive.attr! :leaf
Primitive.cexpr! 'rb_float_uminus(self)'
end
- #
# call-seq:
- # float.zero? -> true or false
- #
- # Returns +true+ if +float+ is 0.0.
#
def zero?
Primitive.attr! :leaf
Primitive.cexpr! 'RBOOL(FLOAT_ZERO_P(self))'
end
- #
# call-seq:
- # float.positive? -> true or false
- #
- # Returns +true+ if +float+ is greater than 0.
#
def positive?
Primitive.attr! :leaf
Primitive.cexpr! 'RBOOL(RFLOAT_VALUE(self) > 0.0)'
end
- #
# call-seq:
- # float.negative? -> true or false
- #
- # Returns +true+ if +float+ is less than 0.
#
def negative?
Primitive.attr! :leaf
Primitive.cexpr! 'RBOOL(RFLOAT_VALUE(self) < 0.0)'