BigRational
struct BigRational
Overview
Rational numbers are represented as the quotient of arbitrarily large numerators and denominators. Rationals are canonicalized such that the denominator and the numerator have no common factors, and that the denominator is positive. Zero has the unique representation 0/1.
require "big_rational" r = BigRational.new(BigInt.new(7), BigInt.new(3)) r.to_s # => "7/3" r = BigRational.new(3, -9) r.to_s # => "-1/3"
It is implemented under the hood with GMP.
Included Modules
Defined in:
big/big_rational.crClass Method Summary
- .new(numerator : Int, denominator : Int)
Create a new
BigRational
. - .new(num : Int)
Creates a new
BigRational
with num as the numerator and 1 for denominator.
Instance Method Summary
- #*(other : BigRational)
- #*(other : Int)
- #+(other : BigRational)
- #+(other : Int)
- #-(other : BigRational)
- #-(other : Int)
- #-
- #/(other : Int)
- #/(other : BigRational)
- #<<(other : Int)
Multiplies the rational by (2 ** other)
- #<=>(other : BigRational)
- #<=>(other : Float)
- #<=>(other : Int)
- #>>(other : Int)
Divides the rational by (2 ** other)
- #abs
- #clone
- #denominator
- #hash
- #inspect
- #inspect(io)
- #inv
Returns a new
BigRational
as 1/r. - #numerator
- #to_f
Returns the
Float64
representing this rational. - #to_f32
- #to_f64
- #to_s(io : IO, base = 10)
- #to_s(base = 10)
Returns the string representing this rational.
- #to_unsafe
Instance methods inherited from module Comparable(Float)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) >, >=(other : T) >= Instance methods inherited from module Comparable(Int)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) >, >=(other : T) >= Instance methods inherited from module Comparable(BigRational)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) >, >=(other : T) >= Instance methods inherited from struct Number
*(other : Complex)*(other : BigFloat) *, +(other : BigFloat)
+(other : Complex)
+ +, -(other : Complex)
-(other : BigFloat) -, /(other : Complex) /, <=>(other : BigFloat)
<=>(other) <=>, ==(other : Complex) ==, abs abs, abs2 abs2, cis cis, clamp(min, max)
clamp(range : Range) clamp, divmod(number) divmod, i i, round(digits, base = 10) round, sign sign, significant(digits, base = 10) significant, step(*, to = nil, by = 1, &block)
step(*, to = nil, by = 1) step, to_big_f to_big_f, to_c to_c, to_yaml(yaml : YAML::Builder) to_yaml
Class methods inherited from struct Number
zero : self zero Instance methods inherited from module Comparable(BigFloat)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) >, >=(other : T) >= Instance methods inherited from module Comparable(Number)
<, <=(other : T) <=, <=>(other : T) <=>, ==(other : T) ==, >(other : T) >, >=(other : T) >= Instance methods inherited from struct Value
==(other) ==, dup dup Instance methods inherited from class Object
!=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, class class, dup dup, hash hash, inspect(io : IO)
inspect inspect, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json to_json, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try
Class methods inherited from class Object
from_json(string_or_io, root : String) : selffrom_json(string_or_io) : self from_json, from_yaml(string_or_io) : self from_yaml
Class Method Detail
def self.new(numerator : Int, denominator : Int)Source
Create a new BigRational
.
If denominator is 0, this will raise an exception.
def self.new(num : Int)Source
Creates a new BigRational
with num as the numerator and 1 for denominator.
Instance Method Detail
def *(other : BigRational)Source
def +(other : BigRational)Source
def -(other : BigRational)Source
def -Source
def /(other : BigRational)Source
def <<(other : Int)Source
Multiplies the rational by (2 ** other)
BigRational.new(2, 3) << 2 # => 8/3
def <=>(other : BigRational)Source
def absSource
def cloneSource
def denominatorSource
def hashSource
def inspectSource
def inspect(io)Source
def invSource
Returns a new BigRational
as 1/r.
This will raise an exception if rational is 0.
def numeratorSource
def to_f32Source
def to_f64Source
def to_s(base = 10)Source
Returns the string representing this rational.
Optionally takes a radix base (2 through 36).
r = BigRational.new(8243243, 562828882) r.to_s # => "8243243/562828882" r.to_s(16) # => "7dc82b/218c1652" r.to_s(36) # => "4woiz/9b3djm"
def to_unsafeSource
© 2012–2017 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.22.0/BigRational.html