what does vlong double-spill botch mean in r = (a * b) + (((a * u) + (b * t)) << 18); /* low is only 35b */
a larger section of the code is shown below t_uint64 a = ABS (s1); t_uint64 b = ABS (s2); t_uint64 t, u, r; if ((a == 0) || (b == 0)) { /* operand = 0? */ rs[0] = rs[1] = 0; /* result 0 */ return; } if ((a & FIT32) || (b & FIT32)) { /* fit in 64b? */ t = a >> 18; /* no, split in half */ a = a & RMASK; /* "dp" multiply */ u = b >> 18; b = b & RMASK; r = (a * b) + (((a * u) + (b * t)) << 18); /* low is only 35b */ rs[0] = ((t * u) << 1) + (r >> 35); /* so lsh hi 1 */ rs[1] = r & MMASK; }