Macaulay2 Engine
Loading...
Searching...
No Matches

◆ internal_add()

int GF::internal_add ( int f,
int g ) const
private

Definition at line 326 of file GF.cpp.

327{
328 if (b == _ZERO) return a;
329 if (a == _ZERO) return b;
330
331 int n = a - b;
332 if (n > 0)
333 {
334 if (n == _MINUS_ONE) return _ZERO;
335 return modulus_add(b, _one_table[n], Q1_);
336 }
337 else if (n < 0)
338 {
339 if (-n == _MINUS_ONE) return _ZERO;
340 return modulus_add(a, _one_table[-n], Q1_);
341 }
342 else
343 {
344 if (characteristic() == 2) return _ZERO;
345 return modulus_add(a, _one_table[_ONE], Q1_);
346 }
347}
static int modulus_add(int a, int b, int p)
Definition GF.cpp:169
int * _one_table
Definition GF.hpp:76
int _MINUS_ONE
Definition GF.hpp:74
int Q1_
Definition GF.hpp:71
int _ONE
Definition GF.hpp:73
int _ZERO
Definition GF.hpp:72
long characteristic() const
Definition ring.hpp:159

References _MINUS_ONE, _ONE, _one_table, _ZERO, Ring::characteristic(), modulus_add(), and Q1_.

Referenced by add(), internal_subtract(), and promote().