ptolemy.math
Class Fraction

java.lang.Object
  extended by ptolemy.math.Fraction

public class Fraction
extends java.lang.Object

A class for representing fractions. Fractions are immutable and maintained in lowest terms, with a positive denominator. Thus, 1/2 and 2/4 are interpreted as different names for the same number. Any fraction with the value zero is expressed as 0/1 in lowest terms.

This class only represents fractions with a determined value, so fractions with a zero in the denominator are not allowed (including 0/0).

Since:
Ptolemy II 0.2
Version:
$Id: Fraction.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Stephen Neuendorffer, Adam Cataldo
Accepted Rating:
Yellow (cxh)
Proposed Rating:
Green (neuendor)

Field Summary
private  int _denominator
           
private  int _numerator
           
static Fraction ZERO
          The value of zero as a Fraction.
 
Constructor Summary
Fraction()
          Create a new fraction with the value zero (0/1).
Fraction(Fraction f)
          Create a new fraction with the same value as the given fraction.
Fraction(int i)
          Create a new fraction with the value i/1.
Fraction(int numerator, int denominator)
          Create a new fraction in lowest terms with the value Numerator/Denominator.
 
Method Summary
protected  void _simplify()
          Reduce the fraction to lowest terms by dividing the Numerator and Denominator by their Greatest Common Divisor.
 Fraction add(Fraction b)
          Add this fraction to the given fraction.
 Fraction divide(Fraction b)
          Divide this fraction by the given fraction.
 boolean equals(java.lang.Object b)
          Compare this fraction with the given object.
 int getDenominator()
          Return the denominator of this fraction.
 int getNumerator()
          Return the numerator of this fraction.
 boolean greaterThan(Fraction testInput)
          Test if this Fraction is greater than the input.
 int hashCode()
          Return a hash code value for this Fraction.
 Fraction inverse()
          Find the multiplicative inverse of this fraction.
static int lcm(int u, int v)
          Finds the least common multiple(LCM) of two integers.
 Fraction multiply(Fraction b)
          Multiply this fraction by the given fraction.
 Fraction negate()
          Find the additive inverse of this fraction.
 Fraction subtract(Fraction b)
          Subtract the given fraction from this fraction.
 double toDouble()
          Convert the fraction to a double.
 float toFloat()
          Convert the fraction to a float.
 java.lang.String toString()
          Convert the fraction to a readable string.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ZERO

public static final Fraction ZERO
The value of zero as a Fraction. It is arguable as to whether or not this is needed. It may reduce the number of object creations, and increase speed, depending how often a zero fraction is needed. This may become useful when this class is made into a Token.


_numerator

private int _numerator

_denominator

private int _denominator
Constructor Detail

Fraction

public Fraction()
Create a new fraction with the value zero (0/1).


Fraction

public Fraction(int i)
Create a new fraction with the value i/1.

Parameters:
i - The numerator.

Fraction

public Fraction(int numerator,
                int denominator)
Create a new fraction in lowest terms with the value Numerator/Denominator.

Parameters:
numerator - The numerator.
denominator - The denominator.
Throws:
java.lang.ArithmeticException - If the denominator is specified to be zero.

Fraction

public Fraction(Fraction f)
Create a new fraction with the same value as the given fraction.

Parameters:
f - The given Fraction.
Method Detail

add

public Fraction add(Fraction b)
Add this fraction to the given fraction.

Parameters:
b - The given Fraction.
Returns:
The answer as another fraction in lowest terms.

divide

public Fraction divide(Fraction b)
Divide this fraction by the given fraction.

Parameters:
b - The given Fraction.
Returns:
The answer as another fraction in lowest terms.
Throws:
java.lang.ArithmeticException - If the fraction in the divisor has a value of zero.

equals

public boolean equals(java.lang.Object b)
Compare this fraction with the given object.

Overrides:
equals in class java.lang.Object
Returns:
True if the given object is a fraction and equal to this fraction.

getDenominator

public int getDenominator()
Return the denominator of this fraction.


getNumerator

public int getNumerator()
Return the numerator of this fraction.


greaterThan

public boolean greaterThan(Fraction testInput)
Test if this Fraction is greater than the input.

Parameters:
testInput - The input to compare against.
Returns:
True if this Fraction is greater than the input.

hashCode

public int hashCode()
Return a hash code value for this Fraction. This method returns the bitwise and of the hashcode of the denominator and the numerator.

Overrides:
hashCode in class java.lang.Object
Returns:
A hash code value for this Coordinate

inverse

public Fraction inverse()
Find the multiplicative inverse of this fraction.

Returns:
The answer as another fraction in lowest terms
Throws:
java.lang.ArithmeticException - If this fraction has a value of zero, in which case the multiplicative inverse cannot be represented.

lcm

public static int lcm(int u,
                      int v)
Finds the least common multiple(LCM) of two integers. If one of the numbers is negative, then the LCM is negative. If both of the numbers are negative, then the LCM is positive. the LCM is least in terms of absolute value.


multiply

public Fraction multiply(Fraction b)
Multiply this fraction by the given fraction.

Returns:
The answer as another fraction in lowest terms.

negate

public Fraction negate()
Find the additive inverse of this fraction.

Returns:
The answer as another fraction in lowest terms

subtract

public Fraction subtract(Fraction b)
Subtract the given fraction from this fraction.

Returns:
The answer as another fraction in lowest terms

toDouble

public double toDouble()
Convert the fraction to a double.

Returns:
The double value.

toFloat

public float toFloat()
Convert the fraction to a float.

Returns:
The float value.

toString

public java.lang.String toString()
Convert the fraction to a readable string.

Overrides:
toString in class java.lang.Object

_simplify

protected void _simplify()
Reduce the fraction to lowest terms by dividing the Numerator and Denominator by their Greatest Common Divisor. In addition the fraction is put in standard form (denominator greater than zero).