Took a while to debug what was going wrong here
val tmp = toUnsigned(leftSide.digits(i)) * toUnsigned(rightSide.digits(j)))
+ toUnsigned(da(k)) + carry
because it compiles, silently discarding the fact that this is two statements, the second with no immediately apparent side-effects.
It should be more like
val tmp = (
(toUnsigned(leftSide.digits(i)) * toUnsigned(rightSide.digits(j))) +
toUnsigned(da(k)) + carry)
where the parentheses and the trailing operators give a belt-and-braces approach to delineating the statement boundaries.


No comments:
Post a Comment