Package org.apfloat

Class Apint

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<Apfloat>, java.util.Formattable

    public class Apint
    extends Aprational
    Arbitrary precision integer class.

    In addition to the constructors, it is possible to create an apint from an apfloat or aprational via the methods that round these numbers to an integer value: Apfloat.floor(), Apfloat.ceil(), and Apfloat.truncate().

    Version:
    1.10.1
    See Also:
    ApintMath, Serialized Form
    • Constructor Detail

      • Apint

        protected Apint()
        Default constructor. To be used only by subclasses that overload all needed methods.
      • Apint

        public Apint​(java.lang.String value)
              throws java.lang.NumberFormatException,
                     ApfloatRuntimeException
        Constructs an apfloat from the specified string. The default radix will be used.

        Parameters:
        value - The string representing the number.
        Throws:
        java.lang.NumberFormatException - In case the number is invalid.
        ApfloatRuntimeException
      • Apint

        public Apint​(java.lang.String value,
                     int radix)
              throws java.lang.NumberFormatException,
                     ApfloatRuntimeException
        Constructs an apfloat from the specified string and radix.
        Parameters:
        value - The string representing the number.
        radix - The radix of the number.
        Throws:
        java.lang.NumberFormatException - In case the number is invalid.
        ApfloatRuntimeException
      • Apint

        public Apint​(long value)
              throws java.lang.NumberFormatException,
                     ApfloatRuntimeException
        Constructs an apfloat from the specified long. The default radix will be used.
        Parameters:
        value - The value of the number.
        Throws:
        java.lang.NumberFormatException - In case the number is invalid.
        ApfloatRuntimeException
      • Apint

        public Apint​(long value,
                     int radix)
              throws java.lang.NumberFormatException,
                     ApfloatRuntimeException
        Constructs an apfloat from the specified long and radix.
        Parameters:
        value - The value of the number.
        radix - The radix of the number.
        Throws:
        java.lang.NumberFormatException - In case the number is invalid.
        ApfloatRuntimeException
      • Apint

        public Apint​(java.io.PushbackReader in)
              throws java.io.IOException,
                     java.lang.NumberFormatException,
                     ApfloatRuntimeException
        Reads an apint from a stream using the default radix.
        Parameters:
        in - The stream to read from
        Throws:
        java.io.IOException - If an I/O error occurs accessing the stream.
        java.lang.NumberFormatException - If the number is not valid.
        ApfloatRuntimeException
      • Apint

        public Apint​(java.io.PushbackReader in,
                     int radix)
              throws java.io.IOException,
                     java.lang.NumberFormatException,
                     ApfloatRuntimeException
        Reads an apint from a stream using the specified radix.
        Parameters:
        in - The stream to read from
        radix - The radix of the number.
        Throws:
        java.io.IOException - If an I/O error occurs accessing the stream.
        java.lang.NumberFormatException - If the number is not valid.
        ApfloatRuntimeException
      • Apint

        public Apint​(java.math.BigInteger value)
              throws java.lang.NumberFormatException,
                     ApfloatRuntimeException
        Constructs an apint from a BigInteger. The default radix is used.
        Parameters:
        value - The value of the number.
        Throws:
        java.lang.NumberFormatException - If the default radix is not valid.
        ApfloatRuntimeException
      • Apint

        public Apint​(java.math.BigInteger value,
                     int radix)
              throws java.lang.NumberFormatException,
                     ApfloatRuntimeException
        Constructs an apint from a BigInteger using the specified radix.
        Parameters:
        value - The value of the number.
        radix - The radix of the number.
        Throws:
        java.lang.NumberFormatException - If the radix is not valid.
        ApfloatRuntimeException
    • Method Detail

      • numerator

        public Apint numerator()
        Numerator of this aprational.
        Overrides:
        numerator in class Aprational
        Returns:
        this.
      • radix

        public int radix()
        Radix of this apint.
        Overrides:
        radix in class Aprational
        Returns:
        Radix of this apint.
      • size

        public long size()
                  throws ApfloatRuntimeException
        Returns the size of this apint. Size is equal to the number of significant digits in the number, excluding any trailing zeros.

        Zero has a size of 0.

        Overrides:
        size in class Aprational
        Returns:
        Number of significant digits in this number, excluding trailing zeros, in the radix in which it's presented.
        Throws:
        ApfloatRuntimeException
        Since:
        1.6
        See Also:
        Apfloat.size()
      • signum

        public int signum()
        Returns the signum function of this apint.
        Overrides:
        signum in class Aprational
        Returns:
        -1, 0 or 1 as the value of this apint is negative, zero or positive.
      • divide

        public Apint divide​(Apint x)
                     throws java.lang.ArithmeticException,
                            ApfloatRuntimeException
        Divides two apints.
        Parameters:
        x - The number by which this number is to be divided.
        Returns:
        this / x.
        Throws:
        java.lang.ArithmeticException - In case the divisor is zero.
        ApfloatRuntimeException
      • floor

        public Apint floor()
        Floor function. Returns the largest (closest to positive infinity) value that is not greater than this apfloat and is equal to a mathematical integer.
        Overrides:
        floor in class Aprational
        Returns:
        This apint.
      • ceil

        public Apint ceil()
        Ceiling function. Returns the smallest (closest to negative infinity) value that is not less than this apfloat and is equal to a mathematical integer.
        Overrides:
        ceil in class Aprational
        Returns:
        This apint.
      • truncate

        public Apint truncate()
        Truncates fractional part.
        Overrides:
        truncate in class Aprational
        Returns:
        This apint.
      • toBigInteger

        public java.math.BigInteger toBigInteger()
                                          throws java.lang.IllegalArgumentException
        Converts this apint to Java's BigInteger. This method can be greatly faster than converting to String and then to BigInteger.
        Returns:
        This apint converted to a BigInteger.
        Throws:
        java.lang.IllegalArgumentException - If this number is too big to fit in a BigInteger.
        Since:
        1.6
      • toRadix

        public Apint toRadix​(int radix)
                      throws java.lang.NumberFormatException,
                             ApfloatRuntimeException
        Convert this apint to the specified radix.
        Overrides:
        toRadix in class Aprational
        Parameters:
        radix - The radix.
        Returns:
        This number in the specified radix.
        Throws:
        java.lang.NumberFormatException - If the radix is invalid.
        ApfloatRuntimeException
        Since:
        1.2
      • compareTo

        public int compareTo​(Apint x)
        Compare this apint to the specified apint.

        Parameters:
        x - Apint to which this apint is to be compared.
        Returns:
        -1, 0 or 1 as this apint is numerically less than, equal to, or greater than x.
      • compareTo

        public int compareTo​(Aprational x)
        Compare this apint to the specified aprational.

        Overrides:
        compareTo in class Aprational
        Parameters:
        x - Aprational to which this apint is to be compared.
        Returns:
        -1, 0 or 1 as this apint is numerically less than, equal to, or greater than x.
      • compareTo

        public int compareTo​(Apfloat x)
        Compare this apint to the specified apfloat.

        Specified by:
        compareTo in interface java.lang.Comparable<Apfloat>
        Overrides:
        compareTo in class Aprational
        Parameters:
        x - Apfloat to which this apint is to be compared.
        Returns:
        -1, 0 or 1 as this apint is numerically less than, equal to, or greater than x.
      • equals

        public boolean equals​(java.lang.Object obj)
        Compares this object to the specified object.

        Note: if two apfloats are compared where one number doesn't have enough precise digits, the mantissa is assumed to contain zeros. See Apfloat.compareTo(Apfloat).

        Overrides:
        equals in class Aprational
        Parameters:
        obj - The object to compare with.
        Returns:
        true if the objects are the same; false otherwise.
      • test

        public boolean test​(Apint x)
        Tests two apint numbers for equality. Returns false if the numbers are definitely known to be not equal. If true is returned, equality is unknown and should be verified by calling equals(Object). This method is usually significantly faster than calling equals(Object).
        Parameters:
        x - The number to test against.
        Returns:
        false if the numbers are definitely not equal, true if unknown.
        Since:
        1.10.0
      • test

        public boolean test​(Aprational x)
        Description copied from class: Aprational
        Tests two aprational numbers for equality. Returns false if the numbers are definitely known to be not equal. If true is returned, equality is unknown and should be verified by calling Aprational.equals(Object). This method is usually significantly faster than calling equals(Object).
        Overrides:
        test in class Aprational
        Parameters:
        x - The number to test against.
        Returns:
        false if the numbers are definitely not equal, true if unknown.
      • test

        public boolean test​(Apfloat x)
        Description copied from class: Apfloat
        Tests two apfloat numbers for equality. Returns false if the numbers are definitely known to be not equal. If true is returned, equality is unknown and should be verified by calling Apfloat.equals(Object). This method is usually significantly faster than calling equals(Object).
        Overrides:
        test in class Aprational
        Parameters:
        x - The number to test against.
        Returns:
        false if the numbers are definitely not equal, true if unknown.
      • hashCode

        public int hashCode()
        Returns a hash code for this apint.
        Overrides:
        hashCode in class Aprational
        Returns:
        The hash code value for this object.
      • toString

        public java.lang.String toString​(boolean pretty)
                                  throws ApfloatRuntimeException
        Returns a string representation of this aprational.
        Overrides:
        toString in class Aprational
        Parameters:
        pretty - true to use a fixed-point notation, false to use an exponential notation.
        Returns:
        A string representing this object.
        Throws:
        ApfloatRuntimeException
      • writeTo

        public void writeTo​(java.io.Writer out,
                            boolean pretty)
                     throws java.io.IOException,
                            ApfloatRuntimeException
        Write a string representation of this aprational to a Writer.
        Overrides:
        writeTo in class Aprational
        Parameters:
        out - The output Writer.
        pretty - true to use a fixed-point notation, false to use an exponential notation.
        Throws:
        java.io.IOException - In case of I/O error writing to the stream.
        ApfloatRuntimeException
      • formatTo

        public void formatTo​(java.util.Formatter formatter,
                             int flags,
                             int width,
                             int precision)
        Description copied from class: Aprational
        Formats the object using the provided formatter.
        Specified by:
        formatTo in interface java.util.Formattable
        Overrides:
        formatTo in class Aprational
        Parameters:
        formatter - The formatter.
        flags - The flags to modify the output format.
        width - The minimum number of characters to be written to the output, or -1 for no minimum.
        precision - The maximum number of characters to be written to the output, or -1 for no maximum.
        See Also:
        Apfloat.formatTo(Formatter,int,int,int)
      • getImpl

        protected ApfloatImpl getImpl​(long precision)
                               throws ApfloatRuntimeException
        Returns an ApfloatImpl representing this apint up to the requested precision.
        Overrides:
        getImpl in class Aprational
        Parameters:
        precision - Precision of the ApfloatImpl that is needed.
        Returns:
        An ApfloatImpl representing this object to the requested precision.
        Throws:
        ApfloatRuntimeException