Package edu.jas.arith

Class BigRational

    • Field Detail

      • num

        public final java.math.BigInteger num
        Numerator part of the data structure.
      • den

        public final java.math.BigInteger den
        Denominator part of the data structure.
      • ZERO

        public static final BigRational ZERO
        The Constant 0.
      • ONE

        public static final BigRational ONE
        The Constant 1.
      • HALF

        public static final BigRational HALF
        The Constant 1/2.
      • random

        private static final java.util.Random random
      • nonNegative

        private boolean nonNegative
      • duplicates

        private boolean duplicates
    • Constructor Detail

      • BigRational

        protected BigRational​(java.math.BigInteger n,
                              java.math.BigInteger d)
        Constructor for a BigRational from math.BigIntegers.
        Parameters:
        n - math.BigInteger.
        d - math.BigInteger.
      • BigRational

        public BigRational​(java.math.BigInteger n)
        Constructor for a BigRational from math.BigIntegers.
        Parameters:
        n - math.BigInteger.
      • BigRational

        public BigRational​(BigInteger n)
        Constructor for a BigRational from jas.arith.BigIntegers.
        Parameters:
        n - edu.jas.arith.BigInteger.
      • BigRational

        public BigRational​(BigInteger n,
                           BigInteger d)
        Constructor for a BigRational from jas.arith.BigIntegers.
        Parameters:
        n - edu.jas.arith.BigInteger.
        d - edu.jas.arith.BigInteger.
      • BigRational

        public BigRational​(long n,
                           long d)
        Constructor for a BigRational from longs.
        Parameters:
        n - long.
        d - long.
      • BigRational

        public BigRational​(long n)
        Constructor for a BigRational from longs.
        Parameters:
        n - long.
      • BigRational

        public BigRational()
        Constructor for a BigRational with no arguments.
      • BigRational

        public BigRational​(java.lang.String s)
                    throws java.lang.NumberFormatException
        Constructor for a BigRational from String.
        Parameters:
        s - String.
        Throws:
        java.lang.NumberFormatException
    • Method Detail

      • copy

        public BigRational copy()
        Clone this.
        Specified by:
        copy in interface Element<BigRational>
        Returns:
        Creates and returns a copy of this Element.
        See Also:
        Object.clone()
      • numerator

        public java.math.BigInteger numerator()
        Get the numerator.
        Returns:
        num.
      • denominator

        public java.math.BigInteger denominator()
        Get the denominator.
        Returns:
        den.
      • toString

        public java.lang.String toString()
        Get the string representation.
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()
      • toString

        public java.lang.String toString​(int n)
        Get the decimal string representation with given precision.
        Parameters:
        n - precision.
        Returns:
        decimal approximation.
      • getDecimal

        public BigDecimal getDecimal()
        Get the decimal representation.
        Returns:
        decimal.
      • doubleValue

        public double doubleValue()
        Get this as a double.
        Returns:
        this as a double
        See Also:
        Number.doubleValue()
      • toScriptFactory

        public java.lang.String toScriptFactory()
        Get a scripting compatible string representation of the factory.
        Specified by:
        toScriptFactory in interface Element<BigRational>
        Returns:
        script compatible representation for this ElemFactory.
        See Also:
        Element.toScriptFactory()
      • characteristic

        public java.math.BigInteger characteristic()
        Characteristic of this ring.
        Specified by:
        characteristic in interface RingFactory<BigRational>
        Returns:
        characteristic of this ring.
      • fromInteger

        public BigRational fromInteger​(java.math.BigInteger a)
        Get a BigRational element from a math.BigInteger.
        Specified by:
        fromInteger in interface ElemFactory<BigRational>
        Parameters:
        a - math.BigInteger.
        Returns:
        BigRational from a.
      • fromInteger

        public BigRational fromInteger​(BigInteger a)
        Get a BigRational element from a arith.BigInteger.
        Parameters:
        a - arith.BigInteger.
        Returns:
        BigRational from a.
      • valueOf

        public static BigRational valueOf​(java.math.BigInteger a)
        Get a BigRational element from a math.BigInteger.
        Parameters:
        a - math.BigInteger.
        Returns:
        BigRational from a.
      • valueOf

        public static BigRational valueOf​(long a)
        Get a BigRational element from a long.
        Parameters:
        a - long.
        Returns:
        BigRational from a.
      • isEntier

        public boolean isEntier()
        Is BigRational entier.
        Returns:
        If this is an integer then true is returned, else false.
      • equals

        public boolean equals​(java.lang.Object b)
        Comparison with any other object.
        Specified by:
        equals in interface Element<BigRational>
        Overrides:
        equals in class java.lang.Object
        Returns:
        true if this is equal to b, else false.
        See Also:
        Object.equals(java.lang.Object)
      • hashCode

        public int hashCode()
        Hash code for this BigRational.
        Specified by:
        hashCode in interface Element<BigRational>
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the hashCode.
        See Also:
        Object.hashCode()
      • RNRED

        public static BigRational RNRED​(java.math.BigInteger n,
                                        java.math.BigInteger d)
        Rational number reduction to lowest terms.
        Parameters:
        n - BigInteger.
        d - BigInteger.
        Returns:
        a/b ~ n/d, gcd(a,b) = 1, b > 0.
      • reduction

        public static BigRational reduction​(java.math.BigInteger n,
                                            java.math.BigInteger d)
        Rational number reduction to lowest terms.
        Parameters:
        n - BigInteger.
        d - BigInteger.
        Returns:
        a/b ~ n/d, gcd(a,b) = 1, b > 0.
      • RNABS

        public static BigRational RNABS​(BigRational R)
        Rational number absolute value.
        Parameters:
        R - is a rational number.
        Returns:
        the absolute value of R.
      • compareTo

        public int compareTo​(BigRational S)
        Rational number comparison.
        Specified by:
        compareTo in interface java.lang.Comparable<BigRational>
        Specified by:
        compareTo in interface Element<BigRational>
        Parameters:
        S - BigRational.
        Returns:
        SIGN(this-S).
      • RNCOMP

        public static int RNCOMP​(BigRational R,
                                 BigRational S)
        Rational number comparison.
        Parameters:
        R - BigRational.
        S - BigRational.
        Returns:
        SIGN(R-S).
      • RNDEN

        public static java.math.BigInteger RNDEN​(BigRational R)
        Rational number denominator.
        Parameters:
        R - BigRational.
        Returns:
        R.denominator().
      • RNDWR

        public static void RNDWR​(BigRational R,
                                 int NL)
        Rational number decimal write. R is a rational number. n is a non-negative integer. R is approximated by a decimal fraction D with n decimal digits following the decimal point and D is written in the output stream. The inaccuracy of the approximation is at most (1/2)*10**-n.
        Parameters:
        R -
        NL -
      • RNINT

        public static BigRational RNINT​(java.math.BigInteger A)
        Rational number from integer.
        Parameters:
        A - BigInteger.
        Returns:
        A/1.
      • RNINV

        public static BigRational RNINV​(BigRational R)
        Rational number inverse.
        Parameters:
        R - BigRational.
        Returns:
        1/R.
      • RNNEG

        public static BigRational RNNEG​(BigRational R)
        Rational number negative.
        Parameters:
        R - BigRational.
        Returns:
        -R.
      • RNNUM

        public static java.math.BigInteger RNNUM​(BigRational R)
        Rational number numerator.
        Parameters:
        R - BigRational.
        Returns:
        R.numerator().
      • random

        public BigRational random​(int n)
        Rational number, random. Random integers A, B and a random sign s are generated using BigInteger(n,random) and random.nextBoolen(). Then R = s*A/(B+1), reduced to lowest terms.
        Specified by:
        random in interface ElemFactory<BigRational>
        Parameters:
        n - such that 0 ≤ A, B ≤ (2n-1).
        Returns:
        a random BigRational.
      • random

        public BigRational random​(int n,
                                  java.util.Random rnd)
        Rational number, random. Random integers A, B and a random sign s are generated using BigInteger(n,random) and random.nextBoolen(). Then R = s*A/(B+1), reduced to lowest terms.
        Specified by:
        random in interface ElemFactory<BigRational>
        Parameters:
        n - such that 0 ≤ A, B ≤ (2n-1).
        rnd - is a source for random bits.
        Returns:
        a random BigRational.
      • RNRAND

        public static BigRational RNRAND​(int NL)
        Rational number, random. Random integers A, B and a random sign s are generated using BigInteger(n,random) and random.nextBoolen(). Then R = s*A/(B+1), reduced to lowest terms.
        Parameters:
        NL - such that 0 ≤ A, B ≤ (2n-1).
        Returns:
        a random BigRational.
      • RNSIGN

        public static int RNSIGN​(BigRational R)
        Rational number sign.
        Parameters:
        R - BigRational.
        Returns:
        R.signum().
      • parse

        public BigRational parse​(java.lang.String s)
        Parse rational number from String.
        Specified by:
        parse in interface ElemFactory<BigRational>
        Parameters:
        s - String.
        Returns:
        BigRational from s.
      • parse

        public BigRational parse​(java.io.Reader r)
        Parse rational number from Reader.
        Specified by:
        parse in interface ElemFactory<BigRational>
        Parameters:
        r - Reader.
        Returns:
        next BigRational from r.
      • egcd

        public BigRational[] egcd​(BigRational S)
        BigRational extended greatest common divisor.
        Specified by:
        egcd in interface RingElem<BigRational>
        Parameters:
        S - BigRational.
        Returns:
        [ gcd(this,S), a, b ] with a*this + b*S = gcd(this,S).
      • ceil

        public java.math.BigInteger ceil()
        BigRational ceiling.
        Returns:
        ceiling of this.
      • floor

        public java.math.BigInteger floor()
        BigRational floor.
        Returns:
        floor of this.
      • bitLength

        public long bitLength()
        Returns the number of bits in the representation of this BigRational, including a sign bit. For positive BigRational, this is equivalent to num.bitLength()+den.bitLength().)
        Returns:
        number of bits in the representation of this BigRational, including a sign bit.
      • setAllIterator

        public void setAllIterator()
        Set the iteration algorithm to all elements.
      • setNonNegativeIterator

        public void setNonNegativeIterator()
        Set the iteration algorithm to non-negative elements.
      • setNoDuplicatesIterator

        public void setNoDuplicatesIterator()
        Set the iteration algorithm to no duplicate elements.
      • setDuplicatesIterator

        public void setDuplicatesIterator()
        Set the iteration algorithm to allow duplicate elements.
      • iterator

        public java.util.Iterator<BigRational> iterator()
        Get a BigRational iterator.
        Specified by:
        iterator in interface java.lang.Iterable<BigRational>
        Returns:
        a iterator over all rationals.
      • uniqueIterator

        public java.util.Iterator<BigRational> uniqueIterator()
        Get a BigRational iterator with no duplicates.
        Returns:
        a iterator over all rationals without duplicates.