|
|
1.1 root 1: #include "libgcc.h"
2:
3: __uint128_t __udivmodti4(__uint128_t num, __uint128_t den, __uint128_t *rem_p)
4: {
5: __uint128_t quot = 0, qbit = 1;
6:
7: if ( den == 0 ) {
8: __divide_error();
9: return 0; /* If trap returns... */
10: }
11:
12: /* Left-justify denominator and count shift */
13: while ( (__int128_t)den >= 0 ) {
14: den <<= 1;
15: qbit <<= 1;
16: }
17:
18: while ( qbit ) {
19: if ( den <= num ) {
20: num -= den;
21: quot += qbit;
22: }
23: den >>= 1;
24: qbit >>= 1;
25: }
26:
27: if ( rem_p )
28: *rem_p = num;
29:
30: return quot;
31: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.