@@ -138,26 +138,26 @@ end
138138* {T, f}(x:: Integer , y:: FD{T, f} ) = reinterpret (FD{T, f}, T (x * y. i))
139139* {T, f}(x:: FD{T, f} , y:: Integer ) = reinterpret (FD{T, f}, T (x. i * y))
140140
141- # TODO . this is probably wrong sometimes.
142141function / {T, f}(x:: FD{T, f} , y:: FD{T, f} )
143142 powt = coefficient (FD{T,f})
144143 quotient, remainder = divrem (x. i, y. i)
145144 reinterpret (FD{T, f}, T (widemul (quotient, powt) + round (T, remainder // y. i * powt)))
146145end
147146
148- # these functions are needed to avoid InexactError when converting from the integer type
147+ # These functions allow us to perform division with integers outside of the range of the
148+ # FixedDecimal.
149149function / {T, f}(x:: Integer , y:: FD{T, f} )
150150 powt = coefficient (FD{T,f})
151- xi, yi = checked_mul (x, powt), y. i
151+ xi, yi = widemul (x, powt), y. i
152152 quotient, remainder = divrem (xi, yi)
153- reinterpret (FD{T, f}, T (widemul ( quotient, powt) + round (T, remainder // yi * powt)))
153+ reinterpret (FD{T, f}, T (quotient * powt + round (T, remainder // yi * powt)))
154154end
155155
156156function / {T, f}(x:: FD{T, f} , y:: Integer )
157157 powt = coefficient (FD{T,f})
158- xi, yi = x. i, checked_mul (y, powt)
158+ xi, yi = x. i, widemul (y, powt)
159159 quotient, remainder = divrem (xi, yi)
160- reinterpret (FD{T, f}, T (widemul ( quotient, powt) + round (T, remainder // yi * powt)))
160+ reinterpret (FD{T, f}, T (quotient * powt + round (T, remainder // yi * powt)))
161161end
162162
163163# integerification
0 commit comments