Example usage for org.apache.commons.math3.fraction Fraction getNumerator

List of usage examples for org.apache.commons.math3.fraction Fraction getNumerator

Introduction

In this page you can find the example usage for org.apache.commons.math3.fraction Fraction getNumerator.

Prototype

public int getNumerator() 

Source Link

Document

Access the numerator.

Usage

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();
}