feature(s) from RING_ELEMENT
additive identity
zero: like Current
deferred
ensure
Result.is_zero
is_zero: BOOLEAN
deferred
feature(s) from RING_ELEMENT
additive inverse
prefix "-": like Current
need to ensure the sign changed
deferred
is_negative: BOOLEAN
if it doesn't make sense, set this to False
deferred
feature(s) from RING_ELEMENT
operations of elements of algebraic rings
infix "+" (other: like Current): like Current
deferred
infix "#*" (mul: INTEGER): like Current
synonym for integer_multiple
integer_multiple (mul: INTEGER): like Current
unoptimized. You *really* want to redefine this!
infix "-" (other: like Current): like Current
infix "*" (other: like Current): like Current
deferred
infix "#^" (exp: INTEGER): like Current
integer_power (exp: INTEGER): like Current
slightly optimized integer exponentiation. Needs more optimization.
feature(s) from RING_ELEMENT
output
to_string: STRING
deferred
to_latex: STRING
deferred
feature(s) from EUCLIDEAN_DOMAIN
multiplicative identity
one: like Current
deferred
ensure
Result.is_one
is_one: BOOLEAN
deferred
feature(s) from EUCLIDEAN_DOMAIN
division
size: INTEGER
calculates size of Current, necessary for division
in the case of an integer, this would be the absolute value
deferred
ensure
Result >= 0
infix "//" (other: like Current): like Current
Euclidean division
deferred
require
not other.is_zero
ensure
(other * Result + Current \\ other).is_equal(Current)
infix "\\" (other: like Current): like Current
Euclidean remainder
deferred
require
not other.is_zero
ensure
requirement of Euclidean ring (e.g. Hungerford, pg. 139)
Result.is_zero or else Result.size < other.size
gcd (other: like Current): like Current
Euclidean algorithm to compute the greatest common divisor
require
not other.is_zero
end of deferred EUCLIDEAN_DOMAIN