Search code examples
juliaprogramming-languagesrational-number

How are rational numbers implemented in Julia


Are the numerator and denominator stored as integers? Specifically, how are implemented the basic operations: sum, subtraction, multiplication, division?


Solution

  • https://github.com/JuliaLang/julia/blob/248bbf6d61b643d0101bf96093cd7621e5bcf477/base/rational.jl#L9-L15

    the code is fairly readable, in short:

    struct Rational{T<:Integer} <: Real
    

    means that both numerator and denominator have the same type, and that type is <: Integer.


    if you want to know how some operations are implemented, try running this in your REPL:

    julia> @edit 1//2 + 3//4
    

    it should bring you to https://github.com/JuliaLang/julia/blob/248bbf6d61b643d0101bf96093cd7621e5bcf477/base/rational.jl#L285