@@ -138,26 +138,26 @@ end
138
138
* {T, f}(x:: Integer , y:: FD{T, f} ) = reinterpret (FD{T, f}, T (x * y. i))
139
139
* {T, f}(x:: FD{T, f} , y:: Integer ) = reinterpret (FD{T, f}, T (x. i * y))
140
140
141
- # TODO . this is probably wrong sometimes.
142
141
function / {T, f}(x:: FD{T, f} , y:: FD{T, f} )
143
142
powt = coefficient (FD{T,f})
144
143
quotient, remainder = divrem (x. i, y. i)
145
144
reinterpret (FD{T, f}, T (widemul (quotient, powt) + round (T, remainder // y. i * powt)))
146
145
end
147
146
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.
149
149
function / {T, f}(x:: Integer , y:: FD{T, f} )
150
150
powt = coefficient (FD{T,f})
151
- xi, yi = checked_mul (x, powt), y. i
151
+ xi, yi = widemul (x, powt), y. i
152
152
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)))
154
154
end
155
155
156
156
function / {T, f}(x:: FD{T, f} , y:: Integer )
157
157
powt = coefficient (FD{T,f})
158
- xi, yi = x. i, checked_mul (y, powt)
158
+ xi, yi = x. i, widemul (y, powt)
159
159
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)))
161
161
end
162
162
163
163
# integerification
0 commit comments