Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function intmul($x, $y)
- {
- $o = 0;
- if ($x < $y) {
- $tmp = $y; $y = $x; $x = $tmp;
- }
- while ($y) {
- if ($y & 0x01) $o += $x;
- if ($y & 0x02) $o += $x << 1;
- if ($y & 0x04) $o += $x << 2;
- if ($y & 0x08) $o += $x << 3;
- if ($y & 0x10) $o += $x << 4;
- if ($y & 0x20) $o += $x << 5;
- if ($y & 0x40) $o += $x << 6;
- if ($y & 0x80) $o += $x << 7;
- $x <<= 8;
- $y >>= 8;
- $y &= 0x7FFFFFFF;
- }
- return $o & 0xFFFFFFFF;
- }
- // an even faster version
- function intmul($x, $y)
- {
- return
- (($y & 0x00000001) ? ($x) : 0) +
- (($y & 0x00000002) ? ($x << 1) : 0) +
- (($y & 0x00000004) ? ($x << 2) : 0) +
- (($y & 0x00000008) ? ($x << 3) : 0) +
- (($y & 0x00000010) ? ($x << 4) : 0) +
- (($y & 0x00000020) ? ($x << 5) : 0) +
- (($y & 0x00000040) ? ($x << 6) : 0) +
- (($y & 0x00000080) ? ($x << 7) : 0) +
- (($y & 0x00000100) ? ($x << 8) : 0) +
- (($y & 0x00000200) ? ($x << 9) : 0) +
- (($y & 0x00000400) ? ($x << 10) : 0) +
- (($y & 0x00000800) ? ($x << 11) : 0) +
- (($y & 0x00001000) ? ($x << 12) : 0) +
- (($y & 0x00002000) ? ($x << 13) : 0) +
- (($y & 0x00004000) ? ($x << 14) : 0) +
- (($y & 0x00008000) ? ($x << 15) : 0) +
- (($y & 0x00010000) ? ($x << 16) : 0) +
- (($y & 0x00020000) ? ($x << 17) : 0) +
- (($y & 0x00040000) ? ($x << 18) : 0) +
- (($y & 0x00080000) ? ($x << 19) : 0) +
- (($y & 0x00100000) ? ($x << 20) : 0) +
- (($y & 0x00200000) ? ($x << 21) : 0) +
- (($y & 0x00400000) ? ($x << 22) : 0) +
- (($y & 0x00800000) ? ($x << 23) : 0) +
- (($y & 0x01000000) ? ($x << 24) : 0) +
- (($y & 0x02000000) ? ($x << 25) : 0) +
- (($y & 0x04000000) ? ($x << 26) : 0) +
- (($y & 0x08000000) ? ($x << 27) : 0) +
- (($y & 0x10000000) ? ($x << 28) : 0) +
- (($y & 0x20000000) ? ($x << 29) : 0) +
- (($y & 0x40000000) ? ($x << 30) : 0) +
- (($y & 0x80000000) ? ($x << 31) : 0) & 0xFFFFFFFF;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement