Package org.apfloat

Class AprationalMath


  • public class AprationalMath
    extends java.lang.Object
    Various mathematical functions for arbitrary precision rational numbers.
    Version:
    1.14.0
    • Constructor Detail

      • AprationalMath

        private AprationalMath()
    • Method Detail

      • pow

        public static Aprational pow​(Aprational x,
                                     long n)
                              throws java.lang.ArithmeticException,
                                     ApfloatRuntimeException
        Integer power.
        Parameters:
        x - Base of the power operator.
        n - Exponent of the power operator.
        Returns:
        x to the n:th power, that is xn.
        Throws:
        java.lang.ArithmeticException - If both x and n are zero.
        ApfloatRuntimeException
      • scale

        public static Aprational scale​(Aprational x,
                                       long scale)
                                throws ApfloatRuntimeException
        Multiply by a power of the radix. Note that this method is prone to intermediate overflow errors. Also, scaling by a very large negative number won't result in an underflow and a zero result, but an overflow of the denominator and an exception thrown.
        Parameters:
        x - The argument.
        scale - The scaling factor.
        Returns:
        x * x.radix()scale.
        Throws:
        ApfloatRuntimeException
      • round

        @Deprecated
        public static Apfloat round​(Aprational x,
                                    long precision,
                                    java.math.RoundingMode roundingMode)
                             throws java.lang.IllegalArgumentException,
                                    java.lang.ArithmeticException,
                                    ApfloatRuntimeException
        Rounds the given number to the specified precision with the specified rounding mode.
        Parameters:
        x - The number to round.
        precision - The precision to round to.
        roundingMode - The rounding mode to use.
        Returns:
        The rounded number.
        Throws:
        java.lang.IllegalArgumentException - If precision is less than zero or zero.
        java.lang.ArithmeticException - If rounding is necessary (result is not exact) and rounding mode is RoundingMode.UNNECESSARY.
        ApfloatRuntimeException
        Since:
        1.7.0
      • roundToPrecision

        public static Apfloat roundToPrecision​(Aprational x,
                                               long precision,
                                               java.math.RoundingMode roundingMode)
                                        throws java.lang.IllegalArgumentException,
                                               java.lang.ArithmeticException,
                                               ApfloatRuntimeException
        Rounds the given number to the specified precision with the specified rounding mode.
        Parameters:
        x - The number to round.
        precision - The precision to round to.
        roundingMode - The rounding mode to use.
        Returns:
        The rounded number.
        Throws:
        java.lang.IllegalArgumentException - If precision is less than zero or zero.
        java.lang.ArithmeticException - If rounding is necessary (result is not exact) and rounding mode is RoundingMode.UNNECESSARY.
        ApfloatRuntimeException
        Since:
        1.11.0
      • roundToInteger

        public static Apint roundToInteger​(Aprational x,
                                           java.math.RoundingMode roundingMode)
                                    throws java.lang.IllegalArgumentException,
                                           java.lang.ArithmeticException,
                                           ApfloatRuntimeException
        Rounds x to integer using the specified rounding mode.
        Parameters:
        x - The number to round.
        roundingMode - The rounding mode to use.
        Returns:
        The rounded number.
        Throws:
        java.lang.ArithmeticException - If rounding is necessary (result is not exact) and rounding mode is RoundingMode.UNNECESSARY.
        java.lang.IllegalArgumentException
        ApfloatRuntimeException
        Since:
        1.11.0
      • roundToPlaces

        public static Apfloat roundToPlaces​(Aprational x,
                                            long places,
                                            java.math.RoundingMode roundingMode)
                                     throws java.lang.IllegalArgumentException,
                                            java.lang.ArithmeticException,
                                            ApfloatRuntimeException
        Rounds x to the specified number of places using the specified rounding mode.
        Parameters:
        x - The number to round.
        places - The number of places to round to (in base 10, the number of decimal places).
        roundingMode - The rounding mode to use.
        Returns:
        The rounded number.
        Throws:
        java.lang.ArithmeticException - If rounding is necessary (result is not exact) and rounding mode is RoundingMode.UNNECESSARY.
        java.lang.IllegalArgumentException
        ApfloatRuntimeException
        Since:
        1.11.0
      • roundToMultiple

        public static Aprational roundToMultiple​(Aprational x,
                                                 Aprational y,
                                                 java.math.RoundingMode roundingMode)
                                          throws java.lang.IllegalArgumentException,
                                                 java.lang.ArithmeticException,
                                                 ApfloatRuntimeException
        Rounds x to the nearest multiple of y using the specified rounding mode.
        Parameters:
        x - The number to round.
        y - The integer multiple to round to.
        roundingMode - The rounding mode to use.
        Returns:
        The rounded number.
        Throws:
        java.lang.ArithmeticException - If rounding is necessary (result is not exact) and rounding mode is RoundingMode.UNNECESSARY.
        java.lang.IllegalArgumentException
        ApfloatRuntimeException
        Since:
        1.11.0
      • product

        public static Aprational product​(Aprational... x)
                                  throws ApfloatRuntimeException
        Product of numbers. This method may perform significantly better than simply multiplying the numbers sequentially.

        If there are no arguments, the return value is 1.

        Parameters:
        x - The argument(s).
        Returns:
        The product of the given numbers.
        Throws:
        ApfloatRuntimeException
        Since:
        1.3
      • sum

        public static Aprational sum​(Aprational... x)
                              throws ApfloatRuntimeException
        Sum of numbers. This method may perform significantly better than simply adding the numbers sequentially.

        If there are no arguments, the return value is 0.

        Parameters:
        x - The argument(s).
        Returns:
        The sum of the given numbers.
        Throws:
        ApfloatRuntimeException
        Since:
        1.3
      • continuedFraction

        public static Apint[] continuedFraction​(Aprational x,
                                                int n)
        Generates the first n terms in the continued fraction representation of x.

        Note that the result length might be less than n, depending on the input value.

        Parameters:
        x - The number whose continued fraction terms should be generated.
        n - The maximum number of terms to generate.
        Returns:
        The continued fraction.
        Throws:
        java.lang.IllegalArgumentException - If n is less than one.
        Since:
        1.12.0
      • convergents

        public static Aprational[] convergents​(Aprational x,
                                               int n)
        Generates the first n convergents corresponding to the continued fraction of x.

        Note that the result length might be less than n, depending on the input value.

        Parameters:
        x - The number whose continued fraction convergents should be generated.
        n - The maximum number of convergents to generate.
        Returns:
        The convergents.
        Throws:
        java.lang.IllegalArgumentException - If n is less than one.
        Since:
        1.12.0
      • pochhammer

        public static Aprational pochhammer​(Aprational x,
                                            Apint n)
        Pochhammer symbol.

        Parameters:
        x - The first argument.
        n - The second argument.
        Returns:
        (x)n
        Since:
        1.13.0
      • bernoulli

        public static Aprational bernoulli​(long n)
                                    throws java.lang.IllegalArgumentException,
                                           ApfloatRuntimeException
        Returns the specified Bernoulli number. The default radix is used.
        Parameters:
        n - The argument.
        Returns:
        The Bernoulli number Bn.
        Throws:
        java.lang.IllegalArgumentException - If n < 0.
        ApfloatRuntimeException
        Since:
        1.11.0
      • bernoulli

        public static Aprational bernoulli​(long n,
                                           int radix)
                                    throws java.lang.IllegalArgumentException,
                                           java.lang.NumberFormatException,
                                           ApfloatRuntimeException
        Returns the specified Bernoulli number in the given radix.
        Parameters:
        n - The argument.
        radix - The radix.
        Returns:
        The Bernoulli number Bn.
        Throws:
        java.lang.IllegalArgumentException - If n < 0.
        java.lang.NumberFormatException - If the radix is not valid.
        ApfloatRuntimeException
        Since:
        1.11.0
      • bernoulliSmall

        static Aprational bernoulliSmall​(long n,
                                         int radix)
      • bernoulliBig

        static Aprational bernoulliBig​(long n,
                                       int radix)
      • bernoullis

        static java.util.Iterator<Aprational> bernoullis​(long n,
                                                         int radix)
      • bernoullis2

        static java.util.Iterator<Aprational> bernoullis2​(long n,
                                                          int radix)
      • bernoullisSmall

        static java.util.Iterator<Aprational> bernoullisSmall​(int radix)
      • bernoullis2Small

        static java.util.Iterator<Aprational> bernoullis2Small​(int radix)
      • bernoullisBig

        static java.util.Iterator<Aprational> bernoullisBig​(long n,
                                                            int radix)
      • bernoullis2Big

        static java.util.Iterator<Aprational> bernoullis2Big​(long n,
                                                             int radix)
      • harmonicNumber

        public static Aprational harmonicNumber​(Apint n,
                                                Apint r)
                                         throws java.lang.ArithmeticException,
                                                ApfloatRuntimeException
        Generalized harmonic number.

        Parameters:
        n - The first argument.
        r - The second argument.
        Returns:
        Hn(r)
        Throws:
        java.lang.ArithmeticException - If n is negative and r is positive.
        ApfloatRuntimeException
        Since:
        1.14.0