Package gnu.math
Class IntNum
- All Implemented Interfaces:
Externalizable,Serializable,Comparable
- Direct Known Subclasses:
XInteger
A class for infinite-precision integers.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionintAll integers are stored in 2's-complement form.int[] -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic IntNumstatic final IntNumadd(int x, int y) Add two ints, yielding an IntNum.static IntNumAdd an IntNum and an int, yielding a new IntNum.static IntNumAdd two IntNums, yielding their sum as another IntNum.static IntNumAdd two IntNums, yielding their sum as another IntNum.Return this + k * obj.static IntNumalloc(int nwords) Allocate a new non-shared IntNum.static IntNumasIntNumOrNull(Object value) static intReturn -1, 0, or 1, depending on which value is greater.static intReturn -1, 0, or 1, depending on which value is greater.intReturn an integer for which ofthisorobjis larger.final IntNumstatic voidstatic voidDivide two integers, yielding quotient and remainder.doubleThe value of the real component, as a double.static booleanbooleanvoidformat(int radix, StringBuffer buffer) voidformat(int radix, StringBuilder buffer) static final intgcd(int a, int b) Calculate Greatest Common Divisor for non-negative ints.static IntNumvoidgetAbsolute(int[] words) Copy the abolute value of this into an array of words.inthashCode()booleanDoes this value fit in a signed 32-bitint?booleanDoes this value fit in a signed 64-bitlong?booleaninRange(long lo, long hi) Is this integer both>= loand<= hi?.intCalculatesceiling(log2(this < 0 ? -this : this+1)).intintValue()static intCast an Object to an int.final booleanfinal booleanfinal booleanisOdd()final booleanisOne()final booleanisZero()static IntNumlongstatic IntNummake(int value) Return a (possibly-shared) IntNum with a given int value.static IntNummake(int[] words) static IntNummake(int[] words, int len) Make a canonicalized IntNum from an array of words.static IntNummake(long value) static IntNumminusOne()Return the IntNum for -1.static IntNumneg()static IntNumstatic booleannegate(int[] dest, int[] src, int len) Set dest[0:len-1] to the negation of src[0:len-1].final IntNumstatic final IntNumone()Return this raised to an integer power.static IntNumCalculate the integral power of an IntNum.static IntNumstatic IntNumvoidvoidrealloc(int nwords) Change words.length to nwords.static IntNumstatic IntNumdoubleroundToDouble(int exp, boolean neg, boolean remainder) Convert a semi-processed IntNum to double.final voidset(int y) Destructively set the value of this to an int.final voidset(int[] words, int length) Destructively set the value of this to the given words.final voidset(long y) Destructively set the value of this to a long.final voidDestructively set the value of this to that of y.final voidsetAdd(int y) Destructively add an int to this.voidSet this to the sum of x and y.final voidDestructively negate this.voidDestructively set this to the negative of x.static IntNumintsign()Return 1 if>0; 0 if==0; -1 if<0; -2 ifNaN.static IntNumSubtract two IntNums, yielding their sum as another IntNum.static final IntNumten()static final IntNumtimes(int x, int y) Multiply two ints, yielding an IntNum.static final IntNumstatic final IntNumtoExactInt(int rounding_mode) Converts to an exact integer, with specified rounding mode.toInt(int rounding_mode) Converts a real to an integer, according to a specified rounding mode.toString(int radix) static IntNumvalueOf(byte[] digits, int byte_len, boolean negative, int radix) static IntNumvalueOf(char[] buf, int offset, int length, int radix, boolean negative) static IntNumvalueOf(int value) Return a (possibly-shared) IntNum with a given int value.static IntNumvalueOf(long value) Return a (possibly-shared) IntNum with a given long value.static IntNumstatic IntNumstatic IntNumvalueOfUnsigned(int value) Make an IntNum from an unsigned 32-bit value.static IntNumvalueOfUnsigned(long value) Make an IntNum from an unsigned 64-bit value.static intwordsNeeded(int[] words, int len) Calculate how many words are significant in words[0:len-1].voidstatic final IntNumzero()Methods inherited from class gnu.math.RatNum
add, asRatNumOrNull, classifyFinite, compare, divide, equals, infinity, isExact, make, neg, rationalize, rneg, times, toExact, valueOfMethods inherited from class gnu.math.RealNum
abs, add, angle, asRealNumOrNull, compareTo, conjugate, cos, divide, exp, im, isReal, log, max, min, re, sin, sqrt, tan, times, toExactInt, toExactInt, toInexact, toInt, toScaledInt, toScaledInt, toScaledInt, toStringDecimal, toStringScientific, toStringScientific, toStringScientific, toStringScientific, unitQuaternion, unitVector, vectorPartMethods inherited from class gnu.math.Complex
add, addReversed, colatitude, compare, complexPart, divide, divReversed, equals, imMinusOne, imOne, jm, km, longitude, make, make, mulReversed, neg, polar, polar, power, timesMethods inherited from class gnu.math.Quaternion
add, compare, divide, doubleImagValue, doubleJmagValue, doubleKmagValue, doubleRealValue, equals, jmMinusOne, jmOne, kmMinusOne, kmOne, make, make, neg, number, polar, polar, power, timesMethods inherited from class gnu.math.Quantity
add, compare, compareReversed, dimensions, divide, imValue, jmValue, kmValue, make, make, make, reValue, times, unitMethods inherited from class gnu.math.Numeric
add, asNumericOrNull, div_inv, floatValue, geq, grt, mul_ident, sub, toStringMethods inherited from class java.lang.Number
byteValue, shortValue
-
Field Details
-
ival
public int ivalAll 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. -
words
public int[] words
-
-
Constructor Details
-
IntNum
public IntNum() -
IntNum
public IntNum(int value) Create a new (non-shared) IntNum, and initialize to an int.- Parameters:
value- the initial value
-
-
Method Details
-
zero
-
one
-
ten
-
minusOne
Return the IntNum for -1. -
asIntNumOrNull
-
alloc
Allocate a new non-shared IntNum.- Parameters:
nwords- number of words to allocate
-
realloc
public void realloc(int nwords) Change words.length to nwords. We allow words.length to be upto nwords+2 without reallocating. -
numerator
-
denominator
- Specified by:
denominatorin classRatNum
-
isNegative
public final boolean isNegative()- Specified by:
isNegativein classRealNum
-
sign
public int sign()Description copied from class:RealNumReturn 1 if>0; 0 if==0; -1 if<0; -2 ifNaN. -
compare
Return -1, 0, or 1, depending on which value is greater. -
compare
Return -1, 0, or 1, depending on which value is greater. -
compare
Description copied from class:NumericReturn an integer for which ofthisorobjis larger. Return 1 ifthis>obj; 0 ifthis==obj; -1 ifthis<obj; -2 ifthis!=objotherwise (for example if either is NaN); -3 if not comparable (incompatible types). -
isOdd
public final boolean isOdd() -
isZero
public final boolean isZero() -
isOne
public final boolean isOne() -
isMinusOne
public final boolean isMinusOne() -
wordsNeeded
public static int wordsNeeded(int[] words, int len) Calculate how many words are significant in words[0:len-1]. Returns the least valuexsuch thatx>0 && words[0:x-1]==words[0:len-1], whenwordsis viewed as a 2's complement integer. -
canonicalize
-
add
Add two ints, yielding an IntNum. -
add
Add an IntNum and an int, yielding a new IntNum. -
setAdd
Set this to the sum of x and y. OK if x==this. -
setAdd
public final void setAdd(int y) Destructively add an int to this. -
set
public final void set(int y) Destructively set the value of this to an int. -
set
public final void set(long y) Destructively set the value of this to a long. -
set
public final void set(int[] words, int length) Destructively set the value of this to the given words. The words array is reused, not copied. -
set
Destructively set the value of this to that of y. -
add
Add two IntNums, yielding their sum as another IntNum. -
sub
Subtract two IntNums, yielding their sum as another IntNum. -
add
Add two IntNums, yielding their sum as another IntNum. -
times
Multiply two ints, yielding an IntNum. -
times
-
times
-
divide
-
divide
Divide two integers, yielding quotient and remainder.- Parameters:
x- the numerator in the divisiony- the denominator in the divisionquotient- is set to the quotient of the result (iff quotient!=null)remainder- is set to the remainder of the result (iff remainder!=null)rounding_mode- one of FLOOR, CEILING, TRUNCATE, or ROUND.
-
quotient
-
quotient
-
toExactInt
Description copied from class:RealNumConverts to an exact integer, with specified rounding mode.- Overrides:
toExactIntin classRatNum
-
toInt
Description copied from class:RealNumConverts a real to an integer, according to a specified rounding mode. Note an inexact argument gives an inexact result, following Scheme. See also toExactInt. -
remainder
-
remainder
-
modulo
-
power
Description copied from class:NumericReturn this raised to an integer power. Implemented by repeated squaring and multiplication. Ify < 0, returns div_inv of the result. -
power
Calculate the integral power of an IntNum.- Parameters:
x- the value (base) to exponentiatey- the exponent (must be non-negative)
-
gcd
public static final int gcd(int a, int b) Calculate Greatest Common Divisor for non-negative ints. -
gcd
-
lcm
-
shift
-
format
-
format
-
toString
-
intValue
public int intValue() -
intValue
Cast an Object to an int. The Object must (currently) be an IntNum. -
longValue
public long longValue()- Overrides:
longValuein classQuaternion
-
hashCode
public int hashCode() -
equals
-
equals
-
make
Return a (possibly-shared) IntNum with a given int value. -
valueOfUnsigned
Make an IntNum from an unsigned 64-bit value. -
valueOfUnsigned
Make an IntNum from an unsigned 32-bit value. -
make
Make a canonicalized IntNum from an array of words. The array may be reused (without copying). -
make
-
make
-
valueOf
Return a (possibly-shared) IntNum with a given int value. -
valueOf
Return a (possibly-shared) IntNum with a given long value. -
valueOf
-
valueOf
- Throws:
NumberFormatException
-
valueOf
-
valueOf
- Throws:
NumberFormatException
-
doubleValue
public double doubleValue()Description copied from class:QuantityThe value of the real component, as a double. This is relative to the unit().dims - i.e. unit()/doubleValue() is factored in.- Overrides:
doubleValuein classQuaternion
-
roundToDouble
public double roundToDouble(int exp, boolean neg, boolean remainder) 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 multiplyneg- true if negativeremainder- true if the IntNum is the result of a truncating division that had non-zero remainder. To ensure proper rounding in this case, the IntNum must have at least 54 bits.
-
add
Description copied from class:NumericReturn this + k * obj. -
mul
-
div
-
getAbsolute
public void getAbsolute(int[] words) Copy the abolute value of this into an array of words. Assumeswords.length >= (this.words == null ? 1 : this.ival). Result is zero-extended, but need not be a valid 2's complement number. -
negate
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. if src is -2**(32*len-1)). Ok for src==dest. -
setNegative
Destructively set this to the negative of x. It is OK if x==this. -
setNegative
public final void setNegative()Destructively negate this. -
abs
-
neg
-
neg
-
intLength
public int intLength()Calculatesceiling(log2(this < 0 ? -this : this+1)). See Common Lisp: the Language, 2nd ed, p. 361. -
writeExternal
- Specified by:
writeExternalin interfaceExternalizable- Throws:
IOException
-
readExternal
- Specified by:
readExternalin interfaceExternalizable- Throws:
IOExceptionClassNotFoundException
-
readResolve
- Throws:
ObjectStreamException
-
asBigInteger
-
asBigDecimal
- Overrides:
asBigDecimalin classRealNum
-
inRange
public boolean inRange(long lo, long hi) Is this integer both>= loand<= hi?. -
inIntRange
public boolean inIntRange()Does this value fit in a signed 32-bitint? -
inLongRange
public boolean inLongRange()Does this value fit in a signed 64-bitlong?
-