| java.lang.Object java.lang.Number gnu.math.Numeric gnu.math.Quantity gnu.math.Complex gnu.math.RealNum gnu.math.RatNum gnu.math.IntNum
All known Subclasses: gnu.kawa.xml.XInteger,
IntNum | public class IntNum extends RatNum implements Externalizable(Code) | | A class for infinite-precision integers.
author: Per Bothner |
Field Summary | |
public int | ival All integers are stored in 2's-complement form.
If words == null, the ival is the value of this IntNum.
Otherwise, the first ival elements of words make the value
of this IntNum, stored in little-endian order, 2's-complement form. | final static int | maxFixNum | final static int | minFixNum We pre-allocate integers in the range minFixNum..maxFixNum. | final static int | numFixNum | final static IntNum[] | smallFixNums | public int[] | words |
Constructor Summary | |
public | IntNum() | public | IntNum(int value) Create a new (non-shared) IntNum, and initialize to an int. |
Method Summary | |
public static IntNum | abs(IntNum x) | final public static IntNum | add(int x, int y) Add two ints, yielding an IntNum. | public static IntNum | add(IntNum x, int y) Add an IntNum and an int, yielding a new IntNum. | public static IntNum | add(IntNum x, IntNum y) Add two IntNums, yielding their sum as another IntNum. | public static IntNum | add(IntNum x, IntNum y, int k) Add two IntNums, yielding their sum as another IntNum. | public Numeric | add(Object y, int k) | public static IntNum | alloc(int nwords) Allocate a new non-shared IntNum. | public BigDecimal | asBigDecimal() | public BigInteger | asBigInteger() | public IntNum | canonicalize() | boolean | checkBits(int n) Return true if any of the lowest n bits are one.
(false if n is negative). | public static int | compare(IntNum x, IntNum y) Return -1, 0, or 1, depending on which value is greater. | public static int | compare(IntNum x, long y) Return -1, 0, or 1, depending on which value is greater. | public int | compare(Object obj) | final public IntNum | denominator() | public Numeric | div(Object y) | public static void | divide(long x, long y, IntNum quotient, IntNum remainder, int rounding_mode) | public static void | divide(IntNum x, IntNum y, IntNum quotient, IntNum remainder, int rounding_mode) Divide two integers, yielding quotient and remainder. | public double | doubleValue() | public static boolean | equals(IntNum x, IntNum y) | public boolean | equals(Object obj) | public void | format(int radix, StringBuffer buffer) | final public static int | gcd(int a, int b) Calculate Greatest Common Divisor for non-negative ints. | public static IntNum | gcd(IntNum x, IntNum y) | public void | getAbsolute(int[] words) Copy the abolute value of this into an array of words. | public int | hashCode() | public int | intLength() Calculates
ceiling(log2(this < 0 ? -this : this+1)) .
See Common Lisp: the Language, 2nd ed, p. | public int | intValue() | public static int | intValue(Object obj) Cast an Object to an int. | final public boolean | isMinusOne() | final public boolean | isNegative() | final public boolean | isOdd() | final public boolean | isOne() | final public boolean | isZero() | public static IntNum | lcm(IntNum x, IntNum y) | public long | longValue() | public static IntNum | make(int value) Return a (possibly-shared) IntNum with a given int value. | public static IntNum | make(long value) Return a (possibly-shared) IntNum with a given long value. | public static IntNum | make(int[] words, int len) Make a canonicalized IntNum from an array of words.
The array may be reused (without copying). | public static IntNum | make(int[] words) | public static IntNum | makeU(long value) Make an IntNum from an unsigned 64-bit value. | public static IntNum | minusOne() Return the IntNum for -1. | public static IntNum | modulo(IntNum x, IntNum y) | public Numeric | mul(Object y) | public static IntNum | neg(IntNum x) | public Numeric | neg() | public static boolean | negate(int[] dest, int[] src, int len) Set dest[0:len-1] to the negation of src[0:len-1].
Return true if overflow (i.e. | final public IntNum | numerator() | final public static IntNum | one() | public Numeric | power(IntNum y) | public static IntNum | power(IntNum x, int y) Calculate the integral power of an IntNum. | public static IntNum | quotient(IntNum x, IntNum y, int rounding_mode) | public static IntNum | quotient(IntNum x, IntNum y) | public void | readExternal(ObjectInput in) | public Object | readResolve() | public void | realloc(int nwords) Change words.length to nwords.
We allow words.length to be upto nwords+2 without reallocating. | public static IntNum | remainder(IntNum x, IntNum y) | public double | roundToDouble(int exp, boolean neg, boolean remainder) Convert a semi-processed IntNum to double.
Number must be non-negative. | final public void | set(int y) Destructively set the value of this to an int. | final public void | set(long y) Destructively set the value of this to a long. | final public void | set(int[] words, int length) Destructively set the value of this to the given words.
The words array is reused, not copied. | final public void | set(IntNum y) Destructively set the value of this to that of y. | public void | setAdd(IntNum x, int y) Set this to the sum of x and y.
OK if x==this. | final public void | setAdd(int y) Destructively add an int to this. | void | setInvert() | public void | setNegative(IntNum x) Destructively set this to the negative of x. | final public void | setNegative() Destructively negate this. | void | setShift(IntNum x, int count) | void | setShiftLeft(IntNum x, int count) | void | setShiftRight(IntNum x, int count) | public static IntNum | shift(IntNum x, int count) | public int | sign() | public static IntNum | sub(IntNum x, IntNum y) Subtract two IntNums, yielding their sum as another IntNum. | final public static IntNum | ten() | final public static IntNum | times(int x, int y) Multiply two ints, yielding an IntNum. | final public static IntNum | times(IntNum x, int y) | final public static IntNum | times(IntNum x, IntNum y) | public IntNum | toExactInt(int rounding_mode) | public RealNum | toInt(int rounding_mode) | public String | toString(int radix) | public static IntNum | valueOf(char[] buf, int offset, int length, int radix, boolean negative) | public static IntNum | valueOf(String s, int radix) | public static IntNum | valueOf(byte[] digits, int byte_len, boolean negative, int radix) | public static IntNum | valueOf(String s) | public static int | wordsNeeded(int[] words, int len) Calculate how many words are significant in words[0:len-1]. | public void | writeExternal(ObjectOutput out) | final public static IntNum | zero() |
ival | public int ival(Code) | | All integers are stored in 2's-complement form.
If words == null, the ival is the value of this IntNum.
Otherwise, the first ival elements of words make the value
of this IntNum, stored in little-endian order, 2's-complement form.
|
maxFixNum | final static int maxFixNum(Code) | | |
minFixNum | final static int minFixNum(Code) | | We pre-allocate integers in the range minFixNum..maxFixNum.
|
numFixNum | final static int numFixNum(Code) | | |
IntNum | public IntNum(int value)(Code) | | Create a new (non-shared) IntNum, and initialize to an int.
Parameters: value - the initial value |
add | final public static IntNum add(int x, int y)(Code) | | Add two ints, yielding an IntNum.
|
add | public static IntNum add(IntNum x, int y)(Code) | | Add an IntNum and an int, yielding a new IntNum.
|
alloc | public static IntNum alloc(int nwords)(Code) | | Allocate a new non-shared IntNum.
Parameters: nwords - number of words to allocate |
checkBits | boolean checkBits(int n)(Code) | | Return true if any of the lowest n bits are one.
(false if n is negative).
|
compare | public static int compare(IntNum x, IntNum y)(Code) | | Return -1, 0, or 1, depending on which value is greater.
|
compare | public static int compare(IntNum x, long y)(Code) | | Return -1, 0, or 1, depending on which value is greater.
|
divide | public static void divide(long x, long y, IntNum quotient, IntNum remainder, int rounding_mode)(Code) | | |
divide | public static void divide(IntNum x, IntNum y, IntNum quotient, IntNum remainder, int rounding_mode)(Code) | | Divide two integers, yielding quotient and remainder.
Parameters: x - the numerator in the division Parameters: y - the denominator in the division Parameters: quotient - is set to the quotient of the result (iff quotient!=null) Parameters: remainder - is set to the remainder of the result(iff remainder!=null) Parameters: rounding_mode - one of FLOOR, CEILING, TRUNCATE, or ROUND. |
doubleValue | public double doubleValue()(Code) | | |
gcd | final public static int gcd(int a, int b)(Code) | | Calculate Greatest Common Divisor for non-negative ints.
|
getAbsolute | public void getAbsolute(int[] words)(Code) | | Copy the abolute value of this into an array of words.
Assumes words.length >= (this.words == null ? 1 : this.ival).
Result is zero-extended, but need not be a valid 2's complement number.
|
hashCode | public int hashCode()(Code) | | |
intLength | public int intLength()(Code) | | Calculates
ceiling(log2(this < 0 ? -this : this+1)) .
See Common Lisp: the Language, 2nd ed, p. 361.
|
intValue | public int intValue()(Code) | | |
intValue | public static int intValue(Object obj)(Code) | | Cast an Object to an int. The Object must (currently) be an IntNum.
|
isMinusOne | final public boolean isMinusOne()(Code) | | |
isNegative | final public boolean isNegative()(Code) | | |
isOdd | final public boolean isOdd()(Code) | | |
isOne | final public boolean isOne()(Code) | | |
isZero | final public boolean isZero()(Code) | | |
longValue | public long longValue()(Code) | | |
make | public static IntNum make(int value)(Code) | | Return a (possibly-shared) IntNum with a given int value.
|
make | public static IntNum make(long value)(Code) | | Return a (possibly-shared) IntNum with a given long value.
|
make | public static IntNum make(int[] words, int len)(Code) | | Make a canonicalized IntNum from an array of words.
The array may be reused (without copying).
|
makeU | public static IntNum makeU(long value)(Code) | | Make an IntNum from an unsigned 64-bit value.
|
minusOne | public static IntNum minusOne()(Code) | | Return the IntNum for -1.
|
negate | public static boolean negate(int[] dest, int[] src, int len)(Code) | | Set dest[0:len-1] to the negation of src[0:len-1].
Return true if overflow (i.e. if src is -2**(32*len-1)).
Ok for src==dest.
|
power | public static IntNum power(IntNum x, int y)(Code) | | Calculate the integral power of an IntNum.
Parameters: x - the value (base) to exponentiate Parameters: y - the exponent (must be non-negative) |
realloc | public void realloc(int nwords)(Code) | | Change words.length to nwords.
We allow words.length to be upto nwords+2 without reallocating.
|
roundToDouble | public double roundToDouble(int exp, boolean neg, boolean remainder)(Code) | | Convert a semi-processed IntNum to double.
Number must be non-negative. Multiplies by a power of two, applies sign,
and converts to double, with the usual java rounding.
Parameters: exp - power of two, positive or negative, by which to multiply Parameters: neg - true if negative Parameters: remainder - true if the IntNum is the result of a truncatingdivision that had non-zero remainder. To ensure proper rounding inthis case, the IntNum must have at least 54 bits. |
set | final public void set(int y)(Code) | | Destructively set the value of this to an int.
|
set | final public void set(long y)(Code) | | Destructively set the value of this to a long.
|
set | final public void set(int[] words, int length)(Code) | | Destructively set the value of this to the given words.
The words array is reused, not copied.
|
set | final public void set(IntNum y)(Code) | | Destructively set the value of this to that of y.
|
setAdd | public void setAdd(IntNum x, int y)(Code) | | Set this to the sum of x and y.
OK if x==this.
|
setAdd | final public void setAdd(int y)(Code) | | Destructively add an int to this.
|
setInvert | void setInvert()(Code) | | |
setNegative | public void setNegative(IntNum x)(Code) | | Destructively set this to the negative of x.
It is OK if x==this.
|
setNegative | final public void setNegative()(Code) | | Destructively negate this.
|
times | final public static IntNum times(int x, int y)(Code) | | Multiply two ints, yielding an IntNum.
|
valueOf | public static IntNum valueOf(char[] buf, int offset, int length, int radix, boolean negative)(Code) | | |
valueOf | public static IntNum valueOf(byte[] digits, int byte_len, boolean negative, int radix)(Code) | | |
wordsNeeded | public static int wordsNeeded(int[] words, int len)(Code) | | Calculate how many words are significant in words[0:len-1].
Returns the least value x such that x>0 && words[0:x-1]==words[0:len-1],
when words is viewed as a 2's complement integer.
|
Methods inherited from gnu.math.RealNum | public Numeric abs()(Code)(Java Doc) public static RealNum add(RealNum x, RealNum y, int k)(Code)(Java Doc) abstract public Numeric add(Object obj, int k)(Code)(Java Doc) public java.math.BigDecimal asBigDecimal()(Code)(Java Doc) public int compareTo(Object o)(Code)(Java Doc) abstract public Numeric div(Object obj)(Code)(Java Doc) public static RealNum divide(RealNum x, RealNum y)(Code)(Java Doc) public Complex exp()(Code)(Java Doc) final public RealNum im()(Code)(Java Doc) abstract public boolean isNegative()(Code)(Java Doc) public boolean isZero()(Code)(Java Doc) public Complex log()(Code)(Java Doc) public RealNum max(RealNum x)(Code)(Java Doc) public RealNum min(RealNum x)(Code)(Java Doc) abstract public Numeric mul(Object obj)(Code)(Java Doc) final public RealNum re()(Code)(Java Doc) final public RealNum rneg()(Code)(Java Doc) abstract public int sign()(Code)(Java Doc) final public Complex sin()(Code)(Java Doc) final public Complex sqrt()(Code)(Java Doc) public static RealNum times(RealNum x, RealNum y)(Code)(Java Doc) public RatNum toExact()(Code)(Java Doc) public IntNum toExactInt(int rounding_mode)(Code)(Java Doc) public static IntNum toExactInt(double value, int rounding_mode)(Code)(Java Doc) public static IntNum toExactInt(double value)(Code)(Java Doc) public static double toInt(double d, int rounding_mode)(Code)(Java Doc) public RealNum toInt(int rounding_mode)(Code)(Java Doc) public static IntNum toScaledInt(double f, int k)(Code)(Java Doc) public static IntNum toScaledInt(RatNum r, int k)(Code)(Java Doc) public IntNum toScaledInt(int k)(Code)(Java Doc) public static String toStringDecimal(String dstr)(Code)(Java Doc) public static String toStringScientific(float d)(Code)(Java Doc) public static String toStringScientific(double d)(Code)(Java Doc) public static String toStringScientific(String dstr)(Code)(Java Doc) public static int toStringScientific(String dstr, StringBuffer sbuf)(Code)(Java Doc)
|
Methods inherited from gnu.math.Complex | public Numeric abs()(Code)(Java Doc) public static Complex add(Complex x, Complex y, int k)(Code)(Java Doc) public Numeric add(Object y, int k)(Code)(Java Doc) public Numeric addReversed(Numeric x, int k)(Code)(Java Doc) public RealNum angle()(Code)(Java Doc) public static int compare(Complex x, Complex y)(Code)(Java Doc) public int compare(Object obj)(Code)(Java Doc) public Numeric div(Object y)(Code)(Java Doc) public Numeric divReversed(Numeric x)(Code)(Java Doc) public static Complex divide(Complex x, Complex y)(Code)(Java Doc) public double doubleImagValue()(Code)(Java Doc) final public double doubleRealValue()(Code)(Java Doc) public double doubleValue()(Code)(Java Doc) public static boolean equals(Complex x, Complex y)(Code)(Java Doc) public boolean equals(Object obj)(Code)(Java Doc) public Complex exp()(Code)(Java Doc) public static CComplex imMinusOne()(Code)(Java Doc) public static CComplex imOne()(Code)(Java Doc) public boolean isExact()(Code)(Java Doc) public boolean isZero()(Code)(Java Doc) public Complex log()(Code)(Java Doc) public long longValue()(Code)(Java Doc) public static Complex make(RealNum re, RealNum im)(Code)(Java Doc) public static Complex make(double re, double im)(Code)(Java Doc) public Numeric mul(Object y)(Code)(Java Doc) public Numeric mulReversed(Numeric x)(Code)(Java Doc) public static Complex neg(Complex x)(Code)(Java Doc) public Numeric neg()(Code)(Java Doc) public Complex number()(Code)(Java Doc) public static DComplex polar(double r, double t)(Code)(Java Doc) public static DComplex polar(RealNum r, RealNum t)(Code)(Java Doc) public static Complex power(Complex x, Complex y)(Code)(Java Doc) public Complex sqrt()(Code)(Java Doc) public static Complex times(Complex x, Complex y)(Code)(Java Doc) public String toString(int radix)(Code)(Java Doc)
|
Methods inherited from gnu.math.Quantity | public Numeric abs()(Code)(Java Doc) public static Quantity add(Quantity x, Quantity y, int k)(Code)(Java Doc) public Numeric add(Object y, int k)(Code)(Java Doc) public Numeric addReversed(Numeric x, int k)(Code)(Java Doc) public static int compare(Quantity x, Quantity y)(Code)(Java Doc) public int compare(Object obj)(Code)(Java Doc) public int compareReversed(Numeric x)(Code)(Java Doc) public Dimensions dimensions()(Code)(Java Doc) public Numeric div(Object y)(Code)(Java Doc) public Numeric divReversed(Numeric x)(Code)(Java Doc) public static Quantity divide(Quantity x, Quantity y)(Code)(Java Doc) public double doubleImagValue()(Code)(Java Doc) public double doubleValue()(Code)(Java Doc) public RealNum im()(Code)(Java Doc) final public double imValue()(Code)(Java Doc) public static Quantity make(Complex x, Unit u)(Code)(Java Doc) public static Quantity make(RealNum re, RealNum im, Unit unit)(Code)(Java Doc) public static Quantity make(double re, double im, Unit unit)(Code)(Java Doc) public Numeric mul(Object y)(Code)(Java Doc) public Numeric mulReversed(Numeric x)(Code)(Java Doc) public Numeric neg()(Code)(Java Doc) abstract public Complex number()(Code)(Java Doc) public RealNum re()(Code)(Java Doc) final public double reValue()(Code)(Java Doc) public static Quantity times(Quantity x, Quantity y)(Code)(Java Doc) public String toString(int radix)(Code)(Java Doc) public Unit unit()(Code)(Java Doc)
|
|
|