List of usage examples for org.apache.commons.math3.fraction Fraction getNumerator
public int getNumerator()
From source file:unikl.disco.misc.NumberObj.java
public static NumberObj div(NumberObj num1, NumberObj num2) { if (performTypeChecks) { TypeCheck(num1, num2);//from w w w . j a va 2 s . co m } if (num1.equals(NaN) || num2.equals(NaN)) { return NaN; } // Integer based number representations use Integer.MAX_VALUE to signal infinity so special treatment is necessary when dividing if (num1.equals(POSITIVE_INFINITY)) { return POSITIVE_INFINITY; } if (num2.equals(POSITIVE_INFINITY)) { return new NumberObj(0.0); } if (num1.equals(NEGATIVE_INFINITY)) { return NEGATIVE_INFINITY; } if (num2.equals(NEGATIVE_INFINITY)) { return new NumberObj(0.0); } switch (num1.getType()) { case DOUBLE: Double double1 = (Double) num1.getValue(); Double double2 = (Double) num2.getValue(); return new NumberObj(double1.doubleValue() / double2.doubleValue()); case RATIONAL: Fraction frac2 = (Fraction) num2.getValue(); if (frac2.getNumerator() == 0) { return getPosInfinity(); // return getNaN(); } else { Fraction frac1 = (Fraction) num1.getValue(); return new NumberObj(frac1.divide(frac2)); } default: return null; } }
From source file:unikl.disco.misc.NumberObj.java
public static NumberObj max(NumberObj num1, NumberObj num2) { if (performTypeChecks) { TypeCheck(num1, num2);/*from w ww. j a v a2 s. co m*/ } switch (num1.getType()) { case DOUBLE: Double double1 = (Double) num1.getValue(); Double double2 = (Double) num2.getValue(); return new NumberObj(Math.max(double1.doubleValue(), double2.doubleValue())); case RATIONAL: Fraction frac1 = (Fraction) num1.getValue(); Fraction frac2 = (Fraction) num2.getValue(); // operate on Doubles to prevent getting out of Integer's range double frac1_numerator = new Double(frac1.getNumerator()) * new Double(frac2.getDenominator()); double frac2_numerator = new Double(frac2.getNumerator()) * new Double(frac1.getDenominator()); if (frac1_numerator >= frac2_numerator) { return new NumberObj(frac1); } else { return new NumberObj(frac2); } default: return null; } }
From source file:unikl.disco.misc.NumberObj.java
public static NumberObj min(NumberObj num1, NumberObj num2) { if (performTypeChecks) { TypeCheck(num1, num2);/*w w w . j a v a2 s . c o m*/ } switch (num1.getType()) { case DOUBLE: Double double1 = (Double) num1.getValue(); Double double2 = (Double) num2.getValue(); return new NumberObj(Math.min(double1.doubleValue(), double2.doubleValue())); case RATIONAL: Fraction frac1 = (Fraction) num1.getValue(); Fraction frac2 = (Fraction) num2.getValue(); // operate on Doubles to prevent getting out of Integer's range double frac1_numerator = new Double(frac1.getNumerator()) * new Double(frac2.getDenominator()); double frac2_numerator = new Double(frac2.getNumerator()) * new Double(frac1.getDenominator()); if (frac1_numerator < frac2_numerator) { return new NumberObj(frac1); } else { return new NumberObj(frac2); } default: return null; } }
From source file:unikl.disco.misc.NumberObj.java
public boolean equals(NumberObj num2) { if (performTypeChecks) { TypeCheck(this, num2); }//w w w.j a v a2s .c o m if (this == NaN & num2 == NaN) { return true; } if (this == POSITIVE_INFINITY & num2 == POSITIVE_INFINITY) { return true; } if (this == NEGATIVE_INFINITY & num2 == NEGATIVE_INFINITY) { return true; } switch (type) { case DOUBLE: Double double2 = (Double) num2.getValue(); return value.doubleValue() == double2.doubleValue(); case RATIONAL: //Fractions's equals() method is inherited from java.lang.Object Fraction frac1 = (Fraction) value; Fraction frac2 = (Fraction) num2.getValue(); // operate on Doubles to prevent getting out of Integer's range double frac1_num = new Double(frac1.getNumerator()) * new Double(frac2.getDenominator()); double frac2_num = new Double(frac2.getNumerator()) * new Double(frac1.getDenominator()); if (frac1_num == frac2_num) { return true; } else { return false; } default: return false; } }
From source file:unikl.disco.misc.NumberObj.java
public boolean greater(NumberObj num2) { if (performTypeChecks) { TypeCheck(this, num2); }// w w w . j a va 2 s . c om if (this == NaN || num2 == NaN) { return false; } if (this == POSITIVE_INFINITY & num2 == POSITIVE_INFINITY) { return false; } if (this == NEGATIVE_INFINITY & num2 == NEGATIVE_INFINITY) { return false; } switch (type) { case DOUBLE: Double double2 = (Double) num2.getValue(); return value.doubleValue() > double2.doubleValue(); case RATIONAL: Fraction frac1 = (Fraction) value; Fraction frac2 = (Fraction) num2.getValue(); // operate on Doubles to prevent getting out of Integer's range double frac1_num = new Double(frac1.getNumerator()) * new Double(frac2.getDenominator()); double frac2_num = new Double(frac2.getNumerator()) * new Double(frac1.getDenominator()); if (frac1_num > frac2_num) { return true; } else { return false; } default: return false; } }
From source file:unikl.disco.misc.NumberObj.java
public boolean ge(NumberObj num2) { if (performTypeChecks) { TypeCheck(this, num2); }//w w w .j a va2 s .com if (this == NaN || num2 == NaN) { return false; } if (this == POSITIVE_INFINITY & num2 == POSITIVE_INFINITY) { return true; } if (this == NEGATIVE_INFINITY & num2 == NEGATIVE_INFINITY) { return true; } switch (type) { case DOUBLE: Double double2 = (Double) num2.getValue(); return value.doubleValue() >= double2.doubleValue(); case RATIONAL: Fraction frac1 = (Fraction) value; Fraction frac2 = (Fraction) num2.getValue(); // operate on Doubles to prevent getting out of Integer's range double frac1_num = new Double(frac1.getNumerator()) * new Double(frac2.getDenominator()); double frac2_num = new Double(frac2.getNumerator()) * new Double(frac1.getDenominator()); if (frac1_num >= frac2_num) { return true; } else { return false; } default: return false; } }
From source file:unikl.disco.misc.NumberObj.java
public boolean less(NumberObj num2) { if (performTypeChecks) { TypeCheck(this, num2); }/*from w ww .j a v a 2s. c o m*/ if (this == NaN || num2 == NaN) { return false; } if (this == POSITIVE_INFINITY & num2 == POSITIVE_INFINITY) { return false; } if (this == NEGATIVE_INFINITY & num2 == NEGATIVE_INFINITY) { return false; } switch (type) { case DOUBLE: Double double2 = (Double) num2.getValue(); return value.doubleValue() < double2.doubleValue(); case RATIONAL: Fraction frac1 = (Fraction) value; Fraction frac2 = (Fraction) num2.getValue(); // operate on Doubles to prevent getting out of Integer's range double frac1_num = new Double(frac1.getNumerator()) * new Double(frac2.getDenominator()); double frac2_num = new Double(frac2.getNumerator()) * new Double(frac1.getDenominator()); if (frac1_num < frac2_num) { return true; } else { return false; } default: return false; } }
From source file:unikl.disco.misc.NumberObj.java
public boolean le(NumberObj num2) { if (performTypeChecks) { TypeCheck(this, num2); }/* w w w . j a va 2s.c o m*/ if (this == NaN || num2 == NaN) { return false; } if (this == POSITIVE_INFINITY & num2 == POSITIVE_INFINITY) { return true; } if (this == NEGATIVE_INFINITY & num2 == NEGATIVE_INFINITY) { return true; } switch (type) { case DOUBLE: Double double2 = (Double) num2.getValue(); return value.doubleValue() <= double2.doubleValue(); case RATIONAL: Fraction frac1 = (Fraction) value; Fraction frac2 = (Fraction) num2.getValue(); // operate on Doubles to prevent getting out of Integer's range double frac1_num = new Double(frac1.getNumerator()) * new Double(frac2.getDenominator()); double frac2_num = new Double(frac2.getNumerator()) * new Double(frac1.getDenominator()); if (frac1_num <= frac2_num) { return true; } else { return false; } default: return false; } }
From source file:unikl.disco.numbers.NumFraction.java
private NumFraction(Fraction frac) { value = new Fraction(frac.getNumerator(), frac.getDenominator()); checkInftyNaN(); }