
Public Member Functions | |
| final byte | byteValue () |
| double | doubleValue () |
| boolean | equals (Object obj) |
| float | floatValue () |
| final int | getDenominator () |
| final int | getNumerator () |
| Rational | getReciprocal () |
| Rational | getSimplifiedInstance () |
| int | hashCode () |
| final int | intValue () |
| boolean | isInteger () |
| final long | longValue () |
| Rational (int numerator, int denominator) | |
| final short | shortValue () |
| String | toSimpleString (boolean allowDecimal) |
| String | toString () |
Private Member Functions | |
| boolean | tooComplexForSimplification () |
Private Attributes | |
| final int | denominator |
| int | maxSimplificationCalculations = 1000 |
| final int | numerator |
numerator/denominator.
| Rational | ( | int | numerator, | |
| int | denominator | |||
| ) |
| final byte byteValue | ( | ) |
Returns the value of the specified number as a byte. This may involve rounding or truncation. This implementation simply casts the result of doubleValue() to byte.
byte. | double doubleValue | ( | ) |
Returns the value of the specified number as a double. This may involve rounding.
double. | boolean equals | ( | Object | obj | ) |
| float floatValue | ( | ) |
Returns the value of the specified number as a float. This may involve rounding.
float. | final int getDenominator | ( | ) |
Returns the denominator.
| final int getNumerator | ( | ) |
Returns the numerator.
| Rational getReciprocal | ( | ) |
Returns the reciprocal value of this obejct as a new Rational.
| Rational getSimplifiedInstance | ( | ) |
Simplifies the Rational number.
Prime number series: 1, 2, 3, 5, 7, 9, 11, 13, 17
To reduce a rational, need to see if both numerator and denominator are divisible by a common factor. Using the prime number series in ascending order guarantees the minimun number of checks required.
However, generating the prime number series seems to be a hefty task. Perhaps it's simpler to check if both d & n are divisible by all numbers from 2 -> (Math.min(denominator, numerator) / 2). In doing this, one can check for 2 and 5 once, then ignore all even numbers, and all numbers ending in 0 or 5. This leaves four numbers from every ten to check.
Therefore, the max number of pairs of modulus divisions required will be:
4 Math.min(denominator, numerator) - 1
-- * ------------------------------------ + 2
10 2
Math.min(denominator, numerator) - 1
= ------------------------------------ + 2
5
| int hashCode | ( | ) |
| final int intValue | ( | ) |
Returns the value of the specified number as an int. This may involve rounding or truncation. This implementation simply casts the result of doubleValue() to int.
int. | boolean isInteger | ( | ) |
Checks if this rational number is an Integer, either positive or negative.
| final long longValue | ( | ) |
Returns the value of the specified number as a long. This may involve rounding or truncation. This implementation simply casts the result of doubleValue() to long.
long. | final short shortValue | ( | ) |
Returns the value of the specified number as a short. This may involve rounding or truncation. This implementation simply casts the result of doubleValue() to short.
short. | boolean tooComplexForSimplification | ( | ) | [private] |
Decides whether a brute-force simplification calculation should be avoided by comparing the maximum number of possible calculations with some threshold.
| String toSimpleString | ( | boolean | allowDecimal | ) |
Returns the simplest represenation of this Rational's value possible.
| String toString | ( | ) |
Returns a string representation of the object of form numerator/denominator.
final int denominator [private] |
Holds the denominator.
int maxSimplificationCalculations = 1000 [private] |
final int numerator [private] |
Holds the numerator.
1.5.8