Skip to content

DivideError in mutability(T, div, T, T), where T == Rational{BigInt} #240

@nsajko

Description

@nsajko
julia> import MutableArithmetics

julia> f(op::F, ::Type{T}) where {F, T} = MutableArithmetics.mutability(T, op, T, T)
f (generic function with 1 method)

julia> f(/, BigInt)
MutableArithmetics.IsNotMutable()

julia> f(div, BigInt)
MutableArithmetics.IsMutable()

julia> f(/, Rational{BigInt})
MutableArithmetics.IsMutable()

julia> f(div, Rational{BigInt})
ERROR: DivideError: integer division error
Stacktrace:
  [1] tdiv_q!(x::BigInt, a::BigInt, b::BigInt)
    @ Base.GMP.MPZ ./gmp.jl:165
  [2] tdiv_q
    @ ./gmp.jl:166 [inlined]
  [3] div
    @ ./gmp.jl:508 [inlined]
  [4] div
    @ ./gmp.jl:512 [inlined]
  [5] divgcd(x::BigInt, y::BigInt)
    @ Base ./rational.jl:43
  [6] div(x::Rational{BigInt}, y::Rational{BigInt}, r::RoundingMode{:ToZero})
    @ Base ./rational.jl:481
  [7] div
    @ Base ./rational.jl:488 [inlined]
  [8] div
    @ Base ./rational.jl:492 [inlined]
  [9] promote_operation_fallback
    @ MutableArithmetics ~/tmp/jl/MutableArithmetics.jl/src/interface.jl:51 [inlined]
 [10] promote_operation
    @ MutableArithmetics ~/tmp/jl/MutableArithmetics.jl/src/interface.jl:113 [inlined]
 [11] mutability
    @ MutableArithmetics ~/tmp/jl/MutableArithmetics.jl/src/interface.jl:266 [inlined]
 [12] f(op::typeof(div), ::Type{Rational{BigInt}})
    @ Main ./REPL[2]:1
 [13] top-level scope
    @ REPL[6]:1

(@v1.11) pkg> st MutableArithmetics
Status `~/.julia/environments/v1.11/Project.toml`
  [d8a4904e] MutableArithmetics v1.3.3 `~/tmp/jl/MutableArithmetics.jl`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions