MCPcopy Create free account
hub / github.com/SuprDewd/CompetitiveProgramming / operator +

Method operator +

code/mathematics/intx.cpp:58–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56 intx res(*this); res.sign *= -1; return res; }
57 friend intx abs(const intx &n) { return n < 0 ? -n : n; }
58 intx operator +(const intx& b) const {
59 if (sign > 0 && b.sign < 0) return *this - (-b);
60 if (sign < 0 && b.sign > 0) return b - (-*this);
61 if (sign < 0 && b.sign < 0) return -((-*this) + (-b));
62 intx c; c.data.clear();
63 unsigned long long carry = 0;
64 for (int i = 0; i < size() || i < b.size() || carry; i++) {
65 carry += (i < size() ? data[i] : 0ULL) +
66 (i < b.size() ? b.data[i] : 0ULL);
67 c.data.push_back(carry % intx::radix);
68 carry /= intx::radix; }
69 return c.normalize(sign); }
70 intx operator -(const intx& b) const {
71 if (sign > 0 && b.sign < 0) return *this + (-b);
72 if (sign < 0 && b.sign > 0) return -(-*this + b);

Callers

nothing calls this directly

Calls 4

push_backMethod · 0.80
normalizeMethod · 0.80
clearMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected