mirror of
https://git.code.sf.net/p/newrpl/sources
synced 2024-09-29 17:36:57 +02:00
Merge branch 'master' of hpgcc3.org:newrpl
This commit is contained in:
commit
25e34bd9d3
2 changed files with 27 additions and 16 deletions
|
@ -89,12 +89,26 @@ R → A<fraction>"
|
|||
'INV(1):→1' @ ELIMINATE OPERATION ON ONE
|
||||
'INV(-.xX):→-1*INV(.xX)' @ MAKE NEGATION A SCALAR MULTIPLICATION
|
||||
'1*.XX:→.XX' @ REMOVE MULTIPLY BY ONE
|
||||
'.XX^1:→.XX' @ REMOVE EXPONENT OF 1
|
||||
'.xX^1:→.xX' @ REMOVE EXPONENT OF 1
|
||||
'0*.XX₃:→0' @ MULTIPLY ANYTHING BY ZERO IS ZERO AS LONG AS IT ISN'T INFINITY (FINITE REALS)
|
||||
'0*.XX₅:→0' @ MULTIPLY ANYTHING BY ZERO IS ZERO AS LONG AS IT ISN'T INFINITY (FINITE COMPLEX)
|
||||
'.xX₃₁^0:→1' @ ONLY VALID FOR NON-ZERO FINITE REALS
|
||||
'.xX₅₁^0:→1' @ ONLY VALID FOR NON-ZERO FINITE COMPLEX
|
||||
|
||||
'.vX₂*(.xA+.XB):→.vX₂*.xA+.vX₂*.XB' @ DISTRIBUTE REAL VARIABLES TO MAKE POLYNOMIALS LOOK BETTER
|
||||
'.vX₄*(.xA+.XB):→.vX₄*.xA+.vX₄*.XB' @ DISTRIBUTE COMPLEX VARIABLES TO MAKE POLYNOMIALS LOOK BETTER
|
||||
|
||||
'.mX*.mX:→.mX^2' @ MULTIPLICATION TO POWER CONVERSION (NON-COMMUTATIVE)
|
||||
'.mX*.mX^.NN₃₂₁:→.mX^(1+.NN)' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
'.mX^.NN₃₂₁*.mX:→.mX^(.NN+1)' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
'.mX^.NM₃₂₁*.mX^.NN₃₂₁:→.mX^(.NM+.NN)' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
|
||||
'INV(.mX)*INV(.mX):→INV(.mX^2)' @ MULTIPLICATION TO POWER CONVERSION (NON-COMMUTATIVE)
|
||||
'INV(.mX)*INV(.mX^.NN₃₂₁):→INV(.mX^(1+.NN))' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
'INV(.mX^.NN₃₂₁)*INV(.mX):→INV(.mX^(.NN+1))' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
'INV(.mX^.NM₃₂₁)*INV(.mX^.NN₃₂₁):→INV(.mX^(.NM+.NN))' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
|
||||
|
||||
'.MN*.mX+.MM*.mX:→(.MN+.MM)*.mX' @ ASSOCIATE TO THE LEFT (NON-COMMUTATIVE)
|
||||
'.MN*.mX+.mX:→(.MN+1)*.mX' @ ASSOCIATE TO THE LEFT (NON-COMMUTATIVE)
|
||||
'.mX*.MN+.mX*.MM:→.mX*(.MN+.MM)' @ ASSOCIATE TO THE RIGHT (NON-COMMUTATIVE)
|
||||
|
@ -108,15 +122,11 @@ R → A<fraction>"
|
|||
|
||||
'.xX+.xX:→2*.xX' @ ADD TERMS WITH NO NUMERIC FACTOR
|
||||
|
||||
'.mX*.mX:→.mX^2' @ MULTIPLICATION TO POWER CONVERSION (NON-COMMUTATIVE)
|
||||
'.mX*.mX^.NN₃₂₁:→.mX^(1+.NN)' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
'.mX^.NN₃₂₁*.mX:→.mX^(.NN+1)' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
'.mX^.NM₃₂₁*.mX^.NN₃₂₁:→.mX^(.NM+.NN)' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
|
||||
'INV(.mX)*INV(.mX):→INV(.mX^2)' @ MULTIPLICATION TO POWER CONVERSION (NON-COMMUTATIVE)
|
||||
'INV(.mX)*INV(.mX^.NN₃₂₁):→INV(.mX^(1+.NN))' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
'INV(.mX^.NN₃₂₁)*INV(.mX):→INV(.mX^(.NN+1))' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
'INV(.mX^.NM₃₂₁)*INV(.mX^.NN₃₂₁):→INV(.mX^(.NM+.NN))' @ MULTIPLICATION TO POWER, AS LONG AS EXPONENTS ARE POSITIVE INTEGER REALS (NON-COMMUTATIVE)
|
||||
'.mX₂₁*INV(.mX₂₁):→1' @ CANCEL OUT TERMS WITHOUT ANY EXPONENTS (COMMUTATIVE, REALS ONLY, NON-ZERO)
|
||||
'.mX₄₁*INV(.mX₄₁):→1' @ CANCEL OUT TERMS WITHOUT ANY EXPONENTS (COMMUTATIVE, COMPLEX ONLY,NON-ZERO)
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ GROUP 3 = CANCEL TERMS IN DIVISION (MAY REMOVE POLES)
|
||||
|
@ -126,14 +136,15 @@ R → A<fraction>"
|
|||
'.mX₂*INV(.mX₂):→1' @ CANCEL OUT TERMS WITHOUT ANY EXPONENTS (COMMUTATIVE, REALS ONLY)
|
||||
'.mX₄*INV(.mX₄):→1' @ CANCEL OUT TERMS WITHOUT ANY EXPONENTS (COMMUTATIVE, COMPLEX ONLY)
|
||||
|
||||
'.mX^.xN*INV(.mX^.xM):→.mX^(.xN-.xM)' @ CANCEL OUT TERMS WITH EXPONENTS (NON-COMMUTATIVE)
|
||||
'.mX₆^.xN*INV(.mX₆^.xM):→.mX₆^(.xN-.xM)' @ CANCEL OUT TERMS WITH EXPONENTS (NON-COMMUTATIVE)
|
||||
'INV(.mX₆^.xN)*.mX₆^.xM:→.mX₆^(.xM-.xN)' @ CANCEL OUT TERMS WITH EXPONENTS (NON-COMMUTATIVE)
|
||||
'.xX₂^.xN*INV(.xX₂^.xM):→.xX^(.xN-.xM)' @ CANCEL OUT TERMS WITH EXPONENTS (COMMUTATIVE, ONLY ACCEPT REAL VARIABLES)
|
||||
'.xX₄^.xN*INV(.xX₄^.xM):→.xX^(.xN-.xM)' @ CANCEL OUT TERMS WITH EXPONENTS (COMMUTATIVE, ONLY ACCEPT COMPLEX VARIABLES)
|
||||
|
||||
'.mX^.xN*INV(.mX):→.mX^(.xN-1)' @ CANCEL OUT TERMS WITHOUT EXPONENT IN DENOMINATOR (NON-COMMUTATIVE)
|
||||
'.mX₆^.xN*INV(.mX₆):→.mX^(.xN-1)' @ CANCEL OUT TERMS WITHOUT EXPONENT IN DENOMINATOR (NON-COMMUTATIVE)
|
||||
'.xX₂^.xN*INV(.xX₂):→.xX^(.xN-1)' @ CANCEL OUT TERMS WITHOUT EXPONENT IN DENOMINATOR (COMMUTATIVE, ONLY REALS)
|
||||
'.xX₄^.xN*INV(.xX₄):→.xX^(.xN-1)' @ CANCEL OUT TERMS WITHOUT EXPONENT IN DENOMINATOR (COMMUTATIVE, ONLY COMPLEX)
|
||||
'.mX*INV(.mX^.xM):→.mX^(1-.xM)' @ CANCEL OUT TERMS WITHOUT EXPONENT IN NUMERATOR (NON-COMMUTATIVE)
|
||||
'.mX₆*INV(.mX₆^.xM):→.mX^(1-.xM)' @ CANCEL OUT TERMS WITHOUT EXPONENT IN NUMERATOR (NON-COMMUTATIVE)
|
||||
'.xX₂*INV(.xX₂^.xM):→.xX^(1-.xM)' @ CANCEL OUT TERMS WITHOUT EXPONENT IN NUMERATOR (COMMUTATIVE, REALS)
|
||||
'.xX₄*INV(.xX₄^.xM):→.xX^(1-.xM)' @ CANCEL OUT TERMS WITHOUT EXPONENT IN NUMERATOR (COMMUTATIVE, REALS)
|
||||
|
||||
|
|
|
@ -3266,7 +3266,7 @@ do {
|
|||
// CHECK IF THIS IS ANOTHER SPECIAL IDENT AND BREAK THE INFINITE LOOP
|
||||
if( (((tmp[1])&0xffff) == TEXT2WORD('.','X',0,0))||(((tmp[1])&0xffff) == TEXT2WORD('.','M',0,0))) {
|
||||
// ALSO CHECK IF IT'S THE SAME VARIABLE USED LATER, THAT DOESN'T COUNT
|
||||
if(!rplCompareIDENT(*s.right,tmp)) {
|
||||
if(rplCompareIDENT(*s.right,tmp)) {
|
||||
// BREAK THE LOOP, JUST ASSIGN THE CURRENT ARGUMENT
|
||||
BINT attr=rplGetIdentAttr(*s.right);
|
||||
|
||||
|
@ -3559,7 +3559,7 @@ do {
|
|||
// CHECK IF THIS IS ANOTHER SPECIAL IDENT AND BREAK THE INFINITE LOOP
|
||||
if( (((tmp[1])&0xffff) == TEXT2WORD('.','X',0,0))||(((tmp[1])&0xffff) == TEXT2WORD('.','M',0,0))) {
|
||||
// ALSO CHECK IF IT'S THE SAME VARIABLE USED LATER, THAT DOESN'T COUNT
|
||||
if(!rplCompareIDENT(*s.right,tmp)) {
|
||||
if(rplCompareIDENT(*s.right,tmp)) {
|
||||
// BREAK THE LOOP, JUST ASSIGN THE CURRENT ARGUMENT
|
||||
BINT attr=rplGetIdentAttr(*s.right);
|
||||
|
||||
|
@ -5470,8 +5470,8 @@ BINT rplSymbGetAttr(WORDPTR object)
|
|||
|
||||
// SET DEFAULT ATTRIBUTES FOR VARIABLES THAT DON'T HAVE THEM (REAL IN REAL MODE, COMPLEX IN COMPLEX MODE)
|
||||
if(!attr) {
|
||||
if(rplTestSystemFlag(FL_COMPLEXMODE)) attr=IDATTR_ISINFCPLX;
|
||||
else attr=IDATTR_ISINFREAL;
|
||||
if(rplTestSystemFlag(FL_COMPLEXMODE)) attr=IDATTR_ISCPLX;
|
||||
else attr=IDATTR_ISREAL;
|
||||
}
|
||||
|
||||
return attr;
|
||||
|
|
Loading…
Reference in a new issue