MCPcopy Create free account
hub / github.com/numpy/numpy / add_128

Function add_128

numpy/core/src/common/npy_extint128.h:130–169  ·  view source on GitHub ↗

Long integer add */

Source from the content-addressed store, hash-verified

128
129/* Long integer add */
130static inline npy_extint128_t
131add_128(npy_extint128_t x, npy_extint128_t y, char *overflow)
132{
133 npy_extint128_t z;
134
135 if (x.sign == y.sign) {
136 z.sign = x.sign;
137 z.hi = x.hi + y.hi;
138 if (z.hi < x.hi) {
139 *overflow = 1;
140 }
141 z.lo = x.lo + y.lo;
142 if (z.lo < x.lo) {
143 if (z.hi == NPY_MAX_UINT64) {
144 *overflow = 1;
145 }
146 ++z.hi;
147 }
148 }
149 else if (x.hi > y.hi || (x.hi == y.hi && x.lo >= y.lo)) {
150 z.sign = x.sign;
151 z.hi = x.hi - y.hi;
152 z.lo = x.lo;
153 z.lo -= y.lo;
154 if (z.lo > x.lo) {
155 --z.hi;
156 }
157 }
158 else {
159 z.sign = y.sign;
160 z.hi = y.hi - x.hi;
161 z.lo = y.lo;
162 z.lo -= x.lo;
163 if (z.lo > y.lo) {
164 --z.hi;
165 }
166 }
167
168 return z;
169}
170
171
172/* Long integer negation */

Callers 4

diophantine_dfsFunction · 0.85
sub_128Function · 0.85
divmod_128_64Function · 0.85
ceildiv_128_64Function · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected