|
basix_doc 0.1
|
#include <int.hpp>
| static void op | ( | uC & | dest1, |
| uC & | dest0, | ||
| const uC & | a, | ||
| const uC & | b | ||
| ) | [inline, static] |
dest1 R + dest0 = a * b.
Definition at line 309 of file int.hpp.
{
uC t0, t1;
uC lo_a = lo (a);
uC hi_a = hi (a);
uC lo_b = lo (b);
uC hi_b = hi (b);
dest0 = lo_a * lo_b;
dest1 = hi_a * hi_b;
t0 = hi_a * lo_b;
t1 = t0 + lo_a * hi_b;
if (t1 < t0) dest1 += carry;
t0 = lo (t1) << n2;
dest0 += t0;
dest1 += hi (t1);
if (dest0 < t0) dest1++;
}