Class ExpVector
java.lang.Object
edu.jas.poly.ExpVector
- All Implemented Interfaces:
AbelianGroupElem<ExpVector>, Element<ExpVector>, Serializable, Comparable<ExpVector>
- Direct Known Subclasses:
ExpVectorByte, ExpVectorInteger, ExpVectorLong, ExpVectorShort
ExpVector implements exponent vectors for polynomials. Exponent vectors are
implemented as arrays of Java elementary types, like long, int, short and
byte. ExpVector provides also the familiar MAS static method names. The
implementation is only tested for nonnegative exponents but should work also
for negative exponents. Objects of this class are intended to be immutable,
but exponents can be set (during construction); also the hash code is only
computed once, when needed. The different storage unit implementations are
ExpVectorLong ExpVectorInteger,
ExpVectorShort and ExpVectorByte. The static
factory methods create() of ExpVector select the
respective storage unit. The selection of the desired storage unit is
internally done via the static variable storunit. This variable
should not be changed dynamically.- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumStorage representation of exponent arrays. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract ExpVectorabs()ExpVector absolute value.longReturns the number of bits in the representation of this exponent vector.abstract ExpVectorCombine with ExpVector.intExpVector compareTo.abstract ExpVectorcontract(int i, int len) Contract variables.abstract ExpVectorcopy()Clone this.static final ExpVectorcreate(int n) Factory constructor for ExpVector.static final ExpVectorcreate(int n, int i, long e) Factory constructor for ExpVector.static final ExpVectorcreate(long[] v) Internal factory constructor for ExpVector.static final ExpVectorFactory constructor for ExpVector.static final ExpVectorcreate(Collection<Long> v) Factory constructor for ExpVector.longdegree()ExpVector degree.abstract int[]ExpVector dependency on variables.abstract intExpVector dependent variables.booleanExpVector divides test.booleanComparison with any other object.static final ExpVectorExpVector absolute value.<C extends RingElem<C>>
Cevaluate(RingFactory<C> cf, List<C> a) Evaluate.static final ExpVectorExpVector difference.static final int[]ExpVector dependency on variables.static final ExpVectorExpVector greatest common divisor.static final intInverse graded lexicographical compare.static final intInverse graded lexicographical compare part.static final intInverse lexicographical compare.static final intInverse lexicographical compare part.static final intInverse total degree lexicographical compare.static final intInverse weighted lexicographical compare.static final intInverse weighted lexicographical compare part.static final ExpVectorExpVector least common multiple.static final longExpVector maximal degree.static final longExpVector minimal degree.static final booleanExpVector multiple test.static final ExpVectorExpVector negate.static final ExpVectorEVRAND(int r, long k, float q) Generate a random ExpVector.static final ExpVectorGenerate a random ExpVector.static final intReverse inverse graded lexicographical compare.static final intReverse inverse graded lexicographical compare part.static final intReverse inverse lexicographical compare.static final intReverse inverse lexicographical compare part.static final intEVRLITDEGC(ExpVector U, ExpVector V) Reverse lexicographical inverse total degree compare.static final intExpVector sign.static final ExpVectorExpVector substitution.static final ExpVectorExpVector summation.static final longExpVector total degree.static final longExpVector weighted degree.abstract ExpVectorextend(int i, int j, long e) Extend variables.abstract ExpVectorextendLower(int i, int j, long e) Extend lower variables.factory()Get the corresponding element factory.abstract ExpVectorExpVector greatest common divisor.abstract long[]getVal()Get the exponent vector.abstract longgetVal(int i) Get the exponent at position i.inthashCode()hashCode.intGet the index of a variable.indexVarName(int idx, String... vars) Get the variable name at index.abstract intExpVector inverse graded lexicographical compareTo.abstract intinvGradCompareTo(ExpVector V, int begin, int end) ExpVector inverse graded lexicographical compareTo.abstract intExpVector inverse lexicographical compareTo.abstract intinvLexCompareTo(ExpVector V, int begin, int end) ExpVector inverse lexicographical compareTo.abstract intExpVector inverse total degree lexicographical compareTo.abstract intinvWeightCompareTo(long[][] w, ExpVector V) ExpVector inverse weighted lexicographical compareTo.abstract intinvWeightCompareTo(long[][] w, ExpVector V, int begin, int end) ExpVector inverse weighted lexicographical compareTo.booleanisFinite()Is this structure finite or infinite.booleanisZERO()Is ExpVector zero.abstract ExpVectorExpVector least common multiple.abstract intlength()Get the length of this exponent vector.abstract longmaxDeg()ExpVector maximal degree.abstract longminDeg()ExpVector minimal degree.abstract booleanExpVector multiple test.abstract ExpVectornegate()ExpVector negate.abstract ExpVectorpermutation(List<Integer> P) Permutation of exponent vector.static final ExpVectorrandom(int r, long k, float q) Generate a random ExpVector.static final ExpVectorGenerate a random ExpVector.abstract ExpVectorreverse()Reverse variables.abstract ExpVectorreverse(int j) Reverse lower j variables.abstract intExpVector reverse inverse graded compareTo.abstract intrevInvGradCompareTo(ExpVector V, int begin, int end) ExpVector reverse inverse graded compareTo.abstract intExpVector reverse inverse lexicographical compareTo.abstract intrevInvLexCompareTo(ExpVector V, int begin, int end) ExpVector reverse inverse lexicographical compareTo.abstract intExpVector reverse lexicographical inverse total degree compareTo.abstract ExpVectorscalarMultiply(long s) ExpVector multiply by scalar.protected abstract longsetVal(int i, long e) Set the exponent at position i to e.abstract intsignum()ExpVector signum.String[]stdVars()Standard variable names.String[]Generate variable names.static final String[]STDVARS(int n) Standard variable names.static final String[]Generate variable names.subst(int i, long d) ExpVector substitution.abstract ExpVectorExpVector subtract.abstract ExpVectorExpVector summation.toScript()Get a scripting compatible string representation.Get a scripting compatible string representation.Get a scripting compatible string representation of the factory.toString()Get the string representation.Get the string representation with variable names.abstract longtotalDeg()ExpVector total degree.static ExpVectorValue of other.intvarIndex(int idx) Get the array index of a variable at index.static final StringvarsToString(String[] vars) Get the string representation of the variables.abstract longweightDeg(long[] w) ExpVector weighted degree.abstract longweightDeg(long[][] w) ExpVector weighted degree.
-
Field Details
-
hash
protected transient int hashStored hash code. -
blen
protected transient long blenStored bitLength. -
random
Random number generator. -
storunit
Used storage representation of exponent arrays. Note: Set this only statically and not dynamically.
-
-
Constructor Details
-
ExpVector
public ExpVector()Constructor for ExpVector.
-
-
Method Details
-
create
Factory constructor for ExpVector.- Parameters:
n- length of exponent vector.
-
create
Factory constructor for ExpVector. Sets exponent i to e.- Parameters:
n- length of exponent vector.i- index of exponent to be set.e- exponent to be set.
-
create
Internal factory constructor for ExpVector. Sets val.- Parameters:
v- internal representation array.
-
create
-
create
Factory constructor for ExpVector. Sets val.- Parameters:
v- collection of exponents.
-
factory
Get the corresponding element factory. -
isFinite
public boolean isFinite()Is this structure finite or infinite.- Returns:
- true if this structure is finite, else false.
- See Also:
-
valueOf
-
copy
-
getVal
public abstract long[] getVal()Get the exponent vector.- Returns:
- val.
-
getVal
public abstract long getVal(int i) Get the exponent at position i.- Parameters:
i- position.- Returns:
- val[i].
-
setVal
protected abstract long setVal(int i, long e) Set the exponent at position i to e.- Parameters:
i-e-- Returns:
- old val[i].
-
length
public abstract int length()Get the length of this exponent vector.- Returns:
- val.length.
-
extend
Extend variables. Used e.g. in module embedding. Extend this by i elements and set val[j] to e.- Parameters:
i- number of elements to extend.j- index of element to be set.e- new exponent for val[j].- Returns:
- extended exponent vector.
-
extendLower
Extend lower variables. Extend this by i lower elements and set val[j] to e.- Parameters:
i- number of elements to extend.j- index of element to be set.e- new exponent for val[j].- Returns:
- extended exponent vector.
-
contract
Contract variables. Used e.g. in module embedding. Contract this to len elements.- Parameters:
i- position of first element to be copied.len- new length.- Returns:
- contracted exponent vector.
-
reverse
Reverse variables. Used e.g. in opposite rings.- Returns:
- reversed exponent vector.
-
reverse
Reverse lower j variables. Used e.g. in opposite rings. Reverses the first j-1 variables, the rest is unchanged.- Parameters:
j- index of first variable reversed.- Returns:
- reversed exponent vector.
-
combine
-
permutation
-
toString
-
toString
-
varsToString
-
toScript
-
toScript
-
toScriptFactory
Get a scripting compatible string representation of the factory.- Specified by:
toScriptFactoryin interfaceElement<ExpVector>- Returns:
- script compatible representation for this ElemFactory.
- See Also:
-
indexVarName
-
varIndex
public int varIndex(int idx) Get the array index of a variable at index.- Parameters:
idx- index of the variable- Returns:
- array index of the variable.
-
indexVar
-
evaluate
Evaluate.- Parameters:
cf- ring factory for elements of a.a- list of values.- Returns:
- a_1^{e_1} * ... * a_n^{e_n}.
-
equals
-
hashCode
-
bitLength
public long bitLength()Returns the number of bits in the representation of this exponent vector.- Returns:
- number of bits in the representation of this ExpVector, including sign bits.
-
isZERO
public boolean isZERO()Is ExpVector zero.- Specified by:
isZEROin interfaceAbelianGroupElem<ExpVector>- Returns:
- If this has all elements 0 then true is returned, else false.
-
stdVars
Standard variable names. Generate standard names for variables, i.e. x0 to x(n-1).- Returns:
- standard names.
-
stdVars
-
STDVARS
Standard variable names. Generate standard names for variables, i.e. x0 to x(n-1).- Parameters:
n- size of names array- Returns:
- standard names.
-
STDVARS
-
EVABS
-
abs
ExpVector absolute value.- Specified by:
absin interfaceAbelianGroupElem<ExpVector>- Returns:
- abs(this).
-
EVNEG
-
negate
ExpVector negate.- Specified by:
negatein interfaceAbelianGroupElem<ExpVector>- Returns:
- -this.
-
EVSUM
-
sum
ExpVector summation.- Specified by:
sumin interfaceAbelianGroupElem<ExpVector>- Parameters:
V-- Returns:
- this+V.
-
EVDIF
-
subtract
ExpVector subtract. Result may have negative entries.- Specified by:
subtractin interfaceAbelianGroupElem<ExpVector>- Parameters:
V-- Returns:
- this-V.
-
scalarMultiply
ExpVector multiply by scalar.- Parameters:
s- scalar- Returns:
- s*this.
-
EVSU
-
subst
ExpVector substitution. Clone and set exponent to d at position i.- Parameters:
i- position.d- new exponent.- Returns:
- substituted ExpVector.
-
EVRAND
Generate a random ExpVector.- Parameters:
r- length of new ExpVector.k- maximal degree in each exponent.q- density of nozero exponents.- Returns:
- random ExpVector.
-
EVRAND
-
random
Generate a random ExpVector.- Parameters:
r- length of new ExpVector.k- maximal degree in each exponent.q- density of nozero exponents.- Returns:
- random ExpVector.
-
random
-
EVSIGN
ExpVector sign.- Parameters:
U-- Returns:
- 0 if U is zero, -1 if some entry is negative, 1 if no entry is negative and at least one entry is positive.
-
signum
public abstract int signum()ExpVector signum.- Specified by:
signumin interfaceAbelianGroupElem<ExpVector>- Returns:
- 0 if this is zero, -1 if some entry is negative, 1 if no entry is negative and at least one entry is positive.
-
EVTDEG
ExpVector total degree.- Parameters:
U-- Returns:
- sum of all exponents.
-
degree
public long degree()ExpVector degree.- Returns:
- total degree of all exponents.
-
totalDeg
public abstract long totalDeg()ExpVector total degree.- Returns:
- sum of all exponents.
-
EVMDEG
ExpVector maximal degree.- Parameters:
U-- Returns:
- maximal exponent.
-
maxDeg
public abstract long maxDeg()ExpVector maximal degree.- Returns:
- maximal exponent.
-
EVMINDEG
ExpVector minimal degree.- Parameters:
U-- Returns:
- minimal exponent.
-
minDeg
public abstract long minDeg()ExpVector minimal degree.- Returns:
- minimal exponent.
-
EVWDEG
ExpVector weighted degree.- Parameters:
w- weights.U-- Returns:
- weighted sum of all exponents.
-
weightDeg
public abstract long weightDeg(long[][] w) ExpVector weighted degree.- Parameters:
w- weights.- Returns:
- weighted sum of all exponents.
-
weightDeg
public abstract long weightDeg(long[] w) ExpVector weighted degree.- Parameters:
w- weights.- Returns:
- weighted sum of all exponents.
-
EVLCM
-
lcm
-
EVGCD
-
gcd
-
EVDOV
ExpVector dependency on variables.- Parameters:
U-- Returns:
- array of indices where U has positive exponents.
-
dependentVariables
public abstract int dependentVariables()ExpVector dependent variables.- Returns:
- number of indices where val has positive exponents.
-
dependencyOnVariables
public abstract int[] dependencyOnVariables()ExpVector dependency on variables.- Returns:
- array of indices where val has positive exponents.
-
EVMT
-
multipleOf
ExpVector multiple test. Test if this is component wise greater or equal to V.- Parameters:
V-- Returns:
- true if this is a multiple of V, else false.
-
divides
ExpVector divides test. Test if V is component wise greater or equal to this.- Parameters:
V-- Returns:
- true if this divides V, else false.
-
compareTo
-
EVILCP
-
invLexCompareTo
ExpVector inverse lexicographical compareTo.- Parameters:
V-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVILCP
-
invLexCompareTo
ExpVector inverse lexicographical compareTo.- Parameters:
V-begin-end-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVIGLC
-
invGradCompareTo
ExpVector inverse graded lexicographical compareTo.- Parameters:
V-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVIGLC
-
invGradCompareTo
ExpVector inverse graded lexicographical compareTo.- Parameters:
V-begin-end-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVRILCP
-
revInvLexCompareTo
ExpVector reverse inverse lexicographical compareTo.- Parameters:
V-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVRILCP
-
revInvLexCompareTo
ExpVector reverse inverse lexicographical compareTo.- Parameters:
V-begin-end-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVRIGLC
-
revInvGradCompareTo
ExpVector reverse inverse graded compareTo.- Parameters:
V-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVRIGLC
-
revInvGradCompareTo
ExpVector reverse inverse graded compareTo.- Parameters:
V-begin-end-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVITDEGLC
-
invTdegCompareTo
ExpVector inverse total degree lexicographical compareTo.- Parameters:
V-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVRLITDEGC
-
revLexInvTdegCompareTo
ExpVector reverse lexicographical inverse total degree compareTo.- Parameters:
V-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVIWLC
-
invWeightCompareTo
ExpVector inverse weighted lexicographical compareTo.- Parameters:
w- weight array.V-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-
EVIWLC
-
invWeightCompareTo
ExpVector inverse weighted lexicographical compareTo.- Parameters:
w- weight array.V-begin-end-- Returns:
- 0 if U == V, -1 if U < V, 1 if U > V.
-