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