@@ -142,31 +142,21 @@ end
142
142
143
143
function / {T, f}(x:: FD{T, f} , y:: FD{T, f} )
144
144
powt = T (10 )^ f
145
- quotient, remainder = fldmod (widemul (x. i, powt), widen ( y. i) )
146
- reinterpret (FD{T, f}, T (_round_to_even (quotient, remainder, widen ( y. i) )))
145
+ quotient, remainder = fldmod (widemul (x. i, powt), y. i)
146
+ reinterpret (FD{T, f}, T (_round_to_even (quotient, remainder, y. i)))
147
147
end
148
148
149
149
# these functions are needed to avoid InexactError when converting from the integer type
150
150
function / {T, f}(x:: Integer , y:: FD{T, f} )
151
- S = promote_type (typeof (x), T)
152
- xi, yi = promote (x, y. i)
153
-
154
- # The integer part of our result is x.i * 10^2f / y.i, so we need to
155
- # double-widen to get a precise result.
156
- powt = S (10 )^ f
151
+ powt = T (10 )^ f
157
152
powtsq = widemul (powt, powt)
158
- quotient, remainder = fldmod (widemul (widen (xi), powtsq), widen (widen (yi)))
159
-
160
- reinterpret (FD{T, f},
161
- T (_round_to_even (quotient, remainder, widen (widen (yi)))))
153
+ quotient, remainder = fldmod (widemul (x, powtsq), y. i)
154
+ reinterpret (FD{T, f}, T (_round_to_even (quotient, remainder, y. i)))
162
155
end
163
156
164
157
function / {T, f}(x:: FD{T, f} , y:: Integer )
165
- S = promote_type (T, typeof (y))
166
- xi, yi = promote (x. i, y)
167
-
168
- quotient, remainder = fldmod (xi, yi)
169
- reinterpret (FD{T, f}, T (_round_to_even (quotient, remainder, yi)))
158
+ quotient, remainder = fldmod (x. i, y)
159
+ reinterpret (FD{T, f}, T (_round_to_even (quotient, remainder, y)))
170
160
end
171
161
172
162
# integerification
0 commit comments