|
Rings for MAT 685
Mathematical ring implementation to demonstrate templates and inheritance
|
a type for rational numbers More...
#include <rational.hpp>
Public Member Functions | |
| Rational () | |
| initializes to 0 | |
| Rational (T) | |
| initializes to the given value | |
| Rational (T, T) | |
| the first value is for the numerator; the second, for the denominator | |
| Rational (const Integer< T > &) | |
initializes numerator to the Integer’s value | |
| Rational (const Rational< T > &) | |
| copy constructor | |
| virtual bool | is_one () const override |
should be True iff element is multiplicative identity | |
| virtual bool | is_zero () const override |
should be True iff element is additive identity | |
| virtual Ring_Element & | operator+ (const Ring_Element &) const override |
| addition: other element should be of same type, use a cast | |
| virtual Ring_Element & | operator- (const Ring_Element &) const override |
| subtraction: other element should be of same type, use a cast | |
| virtual Ring_Element & | operator* (const Ring_Element &) const override |
| multiplicationL other element should be of same type, use a cast | |
| virtual Field_Element & | operator/ (const Field_Element &) const override |
| division: other element should be of same type, use a cast | |
| const Rational< T > & | operator= (const Ring_Element &) |
| assignment operator may be needed | |
| virtual bool | operator== (const Ring_Element &) const override |
| comparison: other element has same value | |
| virtual bool | operator!= (const Ring_Element &) const override |
| comparison: other element has different value | |
| virtual Field_Element & | inverse () const override |
| returns reciprocal | |
| T | get_numerator () const |
| returns the numerator | |
| T | get_denominator () const |
| returns the denominator | |
Public Member Functions inherited from Rings::Field_Element | |
| virtual bool | has_inverse () const override |
| fields are integral domains where nonzero elements have inverses | |
Public Member Functions inherited from Rings::Integral_Domain_Element | |
| virtual bool | is_cancellable () const override |
| integral domains are commutative rings without zero divisors, so the element should be cancellable (see description of class) | |
Public Member Functions inherited from Rings::Commutative_Ring_Element | |
| virtual bool | is_commutative () const override |
| Duh. | |
Protected Member Functions | |
| void | simplify () |
uses the gcd to reduce num and denom (if necessary) | |
Protected Attributes | |
| T | num |
| the numerator | |
| T | den |
| the denominator | |
Related Functions | |
(Note that these are not member functions.) | |
| template<typename T > | |
| ostream & | operator<< (ostream &os, const Rational< T > &r) |
| prints in the form a/b | |
a type for rational numbers
The template gives the base type; e.g., Rational<short> or Rational<uint32_t>.
1.8.13