Sindbad~EG File Manager

Current Path : /usr/home/beeson/MathXpert/
Upload File :
Current File : /usr/home/beeson/MathXpert/ops.h

/* prototypes of MATHPERT operators defined in algebra.dll
   and some auxiliary functions*/
/*  optable is in exec.c */
/*  See trig.h and calc.h for prototypes of trig and calculus operators */

#define ALGOP(foo)  int foo(term, term, term *, char *);
#define POLYVALOP(foo)  int foo(term, term, term *, char *);
#define AUTOMODEOP(foo)  int foo(term, term, term *, char *);

  /* NUMERICAL CALCULATION */
ALGOP(complexarithmetic)
ALGOP(weakcomplexarithmetic)
ALGOP(complexpowers)
ALGOP(devalop)
ALGOP(evaleulere)
ALGOP(evalpi)
ALGOP(cevalop)
ALGOP(computeroot)
ALGOP(computepower)
ALGOP(computefunction)
ALGOP(decimaltofraction)
ALGOP(writenumberassquare)
ALGOP(writenumberascube)
ALGOP(writenumberaspower)
ALGOP(writenumberaspowerof)
ALGOP(evalfunction)

  /* SIMPSUMS */
ALGOP(doubleminus)
ALGOP(pushminusin)
ALGOP(pullminusout)
ALGOP(arithmetic)
ALGOP(weakarithmetic)
ALGOP(regroupterms)
ALGOP(orderterms)
ALGOP(additivecommute)
POLYVALOP(dropzero)
ALGOP(additivecancel)
ALGOP(collectterms)
ALGOP(collectall)
ALGOP(pullminusout2)
ALGOP(minusintoproduct1)
ALGOP(minusintoproduct2)
ALGOP(minusintoproduct3)
   /* SIMPPROD */
ALGOP(multbyzero)
ALGOP(multbyone)
ALGOP(bringminusout)
ALGOP(bringminusout2)
ALGOP(bringminusout3)
ALGOP(regroupfactors)
ALGOP(collectnumbers)
ALGOP(orderfactors)       /* also on common denominator menu */
ALGOP(ordersimplefactors)  /* used only in auto mode */
ALGOP(collectpowers)
ALGOP(distriblaw)
ALGOP(multiplyout)
ALGOP(multiplyifcancels)
ALGOP(expandnumerator)
ALGOP(expanddenominator)
ALGOP(expand)
ALGOP(difofsquares)
ALGOP(makedifofcubes)
ALGOP(makesumofcubes)
ALGOP(difofpowers)
ALGOP(squareofsum)
ALGOP(squareofdif)
ALGOP(cubeofsum)
ALGOP(cubeofdif)
ALGOP(binomialtheorem)
ALGOP(plainbinomialtheorem)
ALGOP(multiplyoutandsimp)
ALGOP(multcommute)
ALGOP(multdef)

    /* FRACTIONS (fraction.c )  */
ALGOP(zeronum)
ALGOP(unitdenom)
ALGOP(recip)
ALGOP(multiplyfractions)         /* also on common denominator menu */
ALGOP(multiplyfractions2)
ALGOP(cancelminusinquotient)
ALGOP(minusoutfromnum)
ALGOP(minusoutfromdenom)
ALGOP(minusoutfromnum2)
ALGOP(minusoutfromnum22)
ALGOP(minusoutfromdenom2)
ALGOP(minusoutfromdenom22)
ALGOP(minusoutfromdenom3)
ALGOP(minusoutfromdenom33)
ALGOP(minusintonum)
ALGOP(minusintodenom)
ALGOP(cancelop)
ALGOP(addfractions)             /* also on common denom menu */
ALGOP(apart)
ALGOP(apartandcancel)
ALGOP(cancelbypolydiv)
ALGOP(cancelgcd)
ALGOP(polydivop)
POLYVALOP(pulloutrational)
ALGOP(pulloutdenom)
ALGOP(pulloutreal)
ALGOP(breakfraction1)
ALGOP(breakfraction)
ALGOP(breakfraction2)
ALGOP(breakfraction3)
ALGOP(multiplycoefs)
ALGOP(negatenumdenom)
                            /* COMPOUND FRACTIONS */
ALGOP(compoundfractions1)
ALGOP(invertandmultiply)
ALGOP(invertandmultiply2)
ALGOP(compoundfractions2)
ALGOP(compoundfractions3)
ALGOP(compoundfractions4)
ALGOP(commondenominfraction)

                            /* COMMON DENOMINATORS */
ALGOP(factordenominator)
ALGOP(findcommondenom)
ALGOP(findcommondenom2)
ALGOP(commondenom)
ALGOP(commondenom2)
ALGOP(commondenomandsimp)
ALGOP(commondenomandsimp2)
ALGOP(multnumanddenom)

                             /* EXPONENTS */
ALGOP(zeroexponent)
ALGOP(unitexponent)
ALGOP(zerobase)
ALGOP(unitbase)
ALGOP(intpowerofminusone)
ALGOP(powertopower)
ALGOP(minustopower)
ALGOP(quotienttopower)
ALGOP(producttopower)     /* (ab)^n = a^nb^n */
ALGOP(exponenttoroot)    /* a^(b/n) = root(n,a^b) */
ALGOP(exponenttosqrt)
ALGOP(reversecollectpowers)  /* a^(b+c) = a^b a^c  -- not used in auto mode */
ALGOP(reversecollectpowers2) /* a^(b-c) = a^b/a^c */
ALGOP(poweroutoffraction)    /* a^n/b^n = (a/b)^n */
ALGOP(powerstonum)        /* a^n/a^m = a^(n-m)     */
ALGOP(powerstodenom)       /* ab^n/b^m = a/b^(m-n)  */
ALGOP(fractexpdenom)      /* a/b^(p/q) = (a^q/b^p)^(1/q) */
ALGOP(fractexpnum)        /* a^(p/q)/b = (a^p/b^q)^1/q)  */
ALGOP(reversepowertopower1) /*  a^(bc) = (a^b)^c  if a>0 or c \in Z */
ALGOP(reversepowertopower2) /* a^(bc) = (a^c)^b  if a>0 or c \in Z */
ALGOP(reversepowertopower3) /* a^(b?) = (a^b)^?  (available with products of 3 or more terms in the exponent) */
ALGOP(poweroutofrecip)      /* 1/a^n = (1/a)^b       */
ALGOP(exponenttosqrtpower)
ALGOP(exponenttorootpower)

                          /* NEGATIVE EXPONENTS */
ALGOP(eliminateconstnegexp)    /* a^(-n) = 1/a^n      */
ALGOP(eliminateconstnegexpnum) /* a^(-n)/b = 1/(a^nb) */
ALGOP(eliminatenegexp1)      /* a^(-1) = 1/a        */
ALGOP(eliminatenegexp)       /* a^(-n) = 1/a^n      */
ALGOP(eliminatenegexpnum)    /* a^(-n)/b = 1/(a^nb) */
POLYVALOP(eliminatenegexpdenom)  /* a/b^(-n) = ab^n */
ALGOP(introducenegexp)       /* a/b^n = ab^(-n)      */
ALGOP(introducenegexp1)      /* a/b = ab^(-1)       */
ALGOP(negexpofquotient)      /* (a/b)^(-n) = (b/a)^n */
ALGOP(powerofminusone)       /* evaluate (-1)^(p/q) */

                          /* SQUARE ROOTS   */
ALGOP(productofsqrts)        /* sqrt x sqrt y = sqrt (xy) */
ALGOP(sqrtofproduct)         /* sqrt(xy) = sqrt xsqrt y   */
ALGOP(sqrtsimp)              /* sqrt(x^2y) = x sqrt y     */
ALGOP(powerofsqrt)           /* (sqrt x)^(2n) = x^n if x>=0, also without n */
ALGOP(powerofsqrt2)          /* (sqrt x)^(2n+1) = x^n sqrt x */
ALGOP(sqrtofsquare)          /* sqrt(x^2)=x if x>=0 */
ALGOP(sqrtofpower)           /* sqrt(x^(2n)) = x^n    */
ALGOP(sqrtofpower2)          /* sqrt(x^(2n+1)) = x^n sqrt x */
ALGOP(factorundersqrt)
ALGOP(sqrttoabs)             /* sqrt(x^2)= |x|     */
ALGOP(sqrtofquotient)        /* sqrt(x/y) = sqrt x/sqrt y */
ALGOP(sqrtofquotient2)       /* sqrt(x/y) = sqrt |x|/sqrt |y| */
ALGOP(quotientofsqrts)       /* sqrt x/sqrt y = sqrt(x/y) */
ALGOP(sqrtexp)               /* sqrt x = x ^ (1/2)    */
ALGOP(sqrtexpdenom)          /* 1/sqrt x = x ^(-1/2) */
ALGOP(cancelsqrt)            /* x/sqrt x = sqrt x      */
ALGOP(cancelsqrt2)           /* sqrt x/x = 1/sqrt x    */
ALGOP(cancelsqrt3)           /* sqrt(xy)/sqrt y = sqrt x  */
ALGOP(pushundersqrt)         /* a sqrt b = sqrt(a^2 b) if a>=0 */

ALGOP(rationalizedenom)     /* not called in auto mode */
ALGOP(ratdenomandsimp)      /* also not called in auto mode */
ALGOP(rationalizenum)       /* not called in auto mode */
ALGOP(evaltorational)
ALGOP(computesqrt)
ALGOP(lauringson)            /* a^2-b = (a-sqrt b)(a+sqrt b) */
ALGOP(multiplyoutundersqrt)
ALGOP(multiplyoutunderroot)
ALGOP(factorpolyundersqrt)

                          /*  N-th ROOTS */
ALGOP(productofroots)
ALGOP(rootofproduct)
ALGOP(rootsimp)           /* root(n,x^ny) = x root(n, y) */
ALGOP(powerofroot)
ALGOP(powerofroot2)
ALGOP(powerofroot3)
ALGOP(powerofroot4)
ALGOP(powerofroot5)
ALGOP(rootofpower)
ALGOP(rootofpower2)
ALGOP(rootofpower3)
ALGOP(rootofpower4)
ALGOP(rootofpower5)
ALGOP(factorunderroot)
ALGOP(roottosqrt)
ALGOP(sqrttoroot)
ALGOP(sqrttoroot2)
ALGOP(rootofminus)
ALGOP(rootofquotient)   /* root(n,x/y) = root(n,x)/root(n,y)  */
ALGOP(quotientofroots)  /* root(n,x)/root(n,y) = root(n,x/y)  */
ALGOP(rootexp)          /* root(n,x) = x^(1/n)      */
ALGOP(rootpowerexp)     /* root(n,x)^m = x^(m/n)    */
ALGOP(powerrootexp)     /* (root(n,x))^m = x^(m/n)  */
ALGOP(powersqrtexp)     /* (sqrt x)^m = x^(m/2)   */
ALGOP(rootexpdenom)     /* 1/root(n,x) = x^(-1/n)   */
ALGOP(computeroot)
ALGOP(cancelroot)       /* x/root(n,x) = (root(n,x))^(n-1)  */
ALGOP(cancelroot2)      /* root(n,x)/x = 1/(root(n,x))^(n-1) */
ALGOP(cancelroot3)      /* cancel root :  root(n,xy)/root(n,y) = root(n,x)  */
ALGOP(factorpolyunderroot)
ALGOP(pushunderoddroot)  /*  a(root(n,b)) = root(n,a^n b) if n odd */
ALGOP(pushunderevenroot) /*  a(root(n,b)) = root(n,a^n b) if a>=0 */
ALGOP(pushminusunderroot) /* -root(n,a) = root(n,-a) if n odd  */
ALGOP(rootdenom)          /* a/root(n,b) = root(n,a^n/b) (n odd or a>=0) */
ALGOP(rootnum)            /* root(n,a)/b = root(n,a/b^n) (n odd or b>=0) */
ALGOP(sqrtdenom)          /*  sqrt a/b = sqrt(a/b^2) if b>=0    */
ALGOP(sqrtnum)            /* a/sqrt b = sqrt(a^2/b) if a>=0    */
                     /* ROOTS OF ROOTS */
ALGOP(rootofroot)
ALGOP(sqrtofroot)
ALGOP(rootofsqrt)
ALGOP(sqrtofsqrt)

                 /* COMPLEX NUMBERS */
ALGOP(defnofi)        /* i^2 = -1 */
ALGOP(powersofi0)     /* i^(4n) = 1 */
ALGOP(powersofi1)     /* i^(4n+1) = i */
ALGOP(powersofi2)     /* i^(4n+2) = -1 */
ALGOP(powersofi3)      /* i^(4n+3) = -i */
ALGOP(recipofi)       /* 1/i = -i */
ALGOP(recipofi2)      /* a/i = -ai */
ALGOP(recipofi3)      /* a/bi = -ai/b */
ALGOP(sqrtofminus1)   /* sqrt(-1) = i */
ALGOP(sqrtofneg)      /* sqrt(-a) = i sqrt a if a>=0 */
ALGOP(cleardenomofi)
ALGOP(multiplycomplexconjugates)
ALGOP(rectangulartopolar)   /* x + iy = r exp(i theta */
ALGOP(polartorectangular)   /* r exp(i theta = r (cos theta + i sin theta) */
ALGOP(absofpolar)     /* |e^(i theta| = 1
                      |Re^(i theta|=R if R>=0
                      |Re^(i theta| = |R|$  */
ALGOP(minustopolar)   /* -a = ae^(i pi)   */
ALGOP(squareofabs)    /* |u + iv|^2 = u^2 + v^2 */
ALGOP(complexabs)     /* |u + iv| = sqrt(u^2 + v^2) */
ALGOP(abssqrt)
ALGOP(absroot)
ALGOP(complexrootminus)  /* root(n,-a) = e^(pi i/n) root(n,a) */
ALGOP(complexexptonum)  /* a/ce^(ti) = ae^(-ti)/c  */
ALGOP(demoivre)         /* de Moivre's theorem */
ALGOP(explicitparams)   /* substitute specific integers */
ALGOP(sqrtofi)         /* sqrt(bi) = (sqrt(b/2) + sqrt(b/2) i) if b >= 0 */
ALGOP(sqrtofminusi)   /* sqrt(-bi) = sqrt(b/2) - sqrt(b/2) i) if b >= 0 */
ALGOP(sqrtofaplusbi)   /* sqrt(a+bi) = (sqrt((c+a)/2) + sqrt((c-a)/2) i) if b >= 0, where c^2 = a^2+b^2 */
ALGOP(sqrtofaminusbi)   /* sqrt(a-bi) = (sqrt((c+a)/2) - sqrt((c-a)/2) i) if b >= 0, where c^2 = a^2+b^2 */
                   /* FACTORING */
ALGOP(factoroutnumber)
ALGOP(cleardenoms)
ALGOP(contentfactor)
ALGOP(factorsquareofsum)
ALGOP(factorsquareofdif)
ALGOP(factorcubeofsum)
ALGOP(factor4thofsum)
ALGOP(factor4thofdif)
ALGOP(factornthofsum)
ALGOP(factornthofdif)
ALGOP(factorcubeofdif)
ALGOP(differenceofsquares)
ALGOP(sumofsquares)
ALGOP(factorquadratic)
ALGOP(factorquadraticwithdisplay)
ALGOP(negativediscriminant)
ALGOP(quadraticformula)
ALGOP(writeassquare)
ALGOP(writeascube)
ALGOP(writeaspower)
ALGOP(expandpower)
ALGOP(expandsquare)
ALGOP(expandcube)
ALGOP(breakpower)
ALGOP(prodofpowers)
ALGOP(factorcoefficients)
ALGOP(factorinteger)
ALGOP(writeintegeraspower)
ALGOP(writeassum)
ALGOP(factorcomplexinteger)
ALGOP(complexfactorsofinteger)
ALGOP(makesubstitution)
ALGOP(trigdoublesub)
ALGOP(reversesub)
ALGOP(translatevar)
ALGOP(makesubstitution2)
ALGOP(autosubstitution)
ALGOP(maximalsub)
ALGOP(unwinddefinition)
                   /* ADVANCED_FACTORING */
ALGOP(invisiblesub)
ALGOP(differenceofcubes)
ALGOP(sumofcubes)
ALGOP(differenceofnthpowers)
ALGOP(differenceofnth2)
ALGOP(sumofnthpowers)
ALGOP(sumoffourthpowers)
ALGOP(factorquartic)
ALGOP(guessfactor)
ALGOP(factorbypolydiv)
ALGOP(factorbygrouping)
ALGOP(squarefreefactors)
ALGOP(factornumerically)
ALGOP(factorhelper)
ALGOP(factorbydemoivre)
                   /* SOLVE_EQUATIONS */
ALGOP(switchsides)
ALGOP(changesigns)
ALGOP(addeqn)
ALGOP(subeqn)
ALGOP(transfer)
ALGOP(transfer1)
ALGOP(transfer2)
ALGOP(transfereqn)
ALGOP(transferstrictineq)
ALGOP(transferineq)
ALGOP(muleqn)
ALGOP(diveqn)
ALGOP(squareeqn)
ALGOP(pseudosquare)
ALGOP(pseudosquare2)
ALGOP(pseudosquare3)
ALGOP(cancelterm)
ALGOP(cancelfactor)
ALGOP(trueeqn)
                     /* QUADRATIC EQUATIONS */
ALGOP(spliteqn)
ALGOP(spliteqn2)
ALGOP(completethesquare)
ALGOP(sqrteqn)
ALGOP(alltoleft)
ALGOP(solvelinear)

                     /* ADVANCED EQUATIONS */
ALGOP(crossmultiply)
ALGOP(powereqn)
ALGOP(rooteqn)
ALGOP(functioneqn)
ALGOP(selecteqn)
ALGOP(showalleqns)
ALGOP(collectmultiplesolns)
ALGOP(evalatpoint)
ALGOP(solvenumerically)
ALGOP(rejecteqn)
ALGOP(checkroot)
ALGOP(cleanupexponents)

                  /* LOG OR EXPONENTIAL EQUATIONS */
ALGOP(powereqn2)
ALGOP(powereqn3)
ALGOP(powereqn4)
ALGOP(powereqn5)
ALGOP(logbeqn)
ALGOP(lneqn)
ALGOP(logeqn)
                                /* CRAMERS_RULE */
ALGOP(cramersrule)
ALGOP(evaluatedeterminant)
                                /* selection_mode_only */
ALGOP(multabs)
ALGOP(divabs)
ALGOP(divabs2)
                                /* SEVERAL LINEAR EQUATIONS */
ALGOP(varsleft)
ALGOP(eqnscollectall)
ALGOP(lineupvars)
ALGOP(addtwoeqns)
ALGOP(subtwoeqns)
ALGOP(muleqns)
ALGOP(diveqns)
ALGOP(addmuleqns)
ALGOP(submuleqns)
ALGOP(substforvar)
ALGOP(eqnsaddterm)
ALGOP(eqnssubterm)
ALGOP(eqnscancelterm)
ALGOP(swapeqns)
ALGOP(ordereqns)
ALGOP(dropeqn)
ALGOP(regardvarasconst)
ALGOP(solveone)
ALGOP(solvelinearfor)
ALGOP(impossibleeqns)
ALGOP(addselectedeqn)
ALGOP(subselectedeqn)
ALGOP(mulselectedeqn)
ALGOP(divselectedeqn)
ALGOP(addmulselectedeqn)
ALGOP(submulselectedeqn)
ALGOP(swapselectedeqn)
ALGOP(solveselectedeqn)
ALGOP(addselectedrow)
ALGOP(subselectedrow)
ALGOP(mulselectedrow)
ALGOP(divselectedrow)
ALGOP(addmulselectedrow)
ALGOP(submulselectedrow)
ALGOP(swapselectedrow)
                                     /* MATRIX_METHODS */
ALGOP(matrixform)
ALGOP(multbyidentity)
ALGOP(swaprows)
ALGOP(addrows)
ALGOP(subrows)
ALGOP(mulrows)
ALGOP(divrows)
ALGOP(addmulrows)
ALGOP(submulrows)
ALGOP(dropzerocolumn)
ALGOP(dropzerorow)
ALGOP(dropduplicaterow)
ALGOP(convertmatrixeqn)
                                      /* ADVANCED MATRIX METHODS */
ALGOP(multiplymatrices)
ALGOP(dividebymatrix)
ALGOP(twobytwoinverse)
ALGOP(exactmatrixinverse)
ALGOP(decimalmatrixinverse)
ALGOP(multbymatrixidentity)


                     /* ABSOLUTE VALUE */
ALGOP(abspos)
ALGOP(absposandassume)
ALGOP(absneg)
ALGOP(absdef)
ALGOP(abseqn)
ALGOP(abseqn2)
ALGOP(abslessthan)
ALGOP(absgreaterthan)
ALGOP(absge)
ALGOP(geabs)
ALGOP(absle)
ALGOP(lessthanabs)
ALGOP(greaterthanabs)
ALGOP(leabs)
ALGOP(abslessthanneg)        /* |u| < -c is false (c>=0) */
ALGOP(absleneg)       /* |u| <= -c is false (c>0) */
ALGOP(absleneg2)       /* |u| <= -c iff u=0 assuming c>=0 */
ALGOP(abseqnneg)       /* |u| = -c iff u=0 assuming c=0 */
POLYVALOP(multiplyabsval)  /*  |a||b|=|ab|      */
ALGOP(abslinear)       /*|cu| = c|u| if c>=0 */
ALGOP(absofproduct)    /* |uv| = |u||v|     */
ALGOP(absoffraction)   /* |u/v| = |u| / |v| */
ALGOP(fractionofabs)   /* |u| / |v| = |u/v| */
ALGOP(abslinearquo)    /* |u/v| = |u| / v if v > 0 */
ALGOP(cancelabs3)

ALGOP(abspower)        /*  |u^n|=|u|^n if n is real */
ALGOP(absevenpower)
ALGOP(abseqntoineq1)   /* |u| = u iff 0 <= u   */
ALGOP(abseqntoineq2)   /* |u| = -u iff u <= 0  */
ALGOP(absineqtrue)     /* |u| >= 0 is true */
ALGOP(absineqtrue2)    /* -c <= |u| is true (c>=0) */
ALGOP(absineqtrue3)    /* -c < |u| is true (c>0) */
ALGOP(absineqtrue2g)    /* |u| >= -c is true (c>=0) */
ALGOP(absineqtrue3g)    /* |u| >= -c is true (c>0) */

ALGOP(absineqfalse)    /* |u| < 0 is false */
ALGOP(absineqtrueg)    /* |u| >= 0 is true */
ALGOP(absineqfalseg)   /* 0 > |u| is false */
ALGOP(absgreaterthanneg)        /* -c > |u| is false (c>=0) */
ALGOP(absgeneg)       /* -c >= |u| is false (c>0) */
ALGOP(absgeneg2)       /* -c >= |u| iff u=0 assuming c=0 */
ALGOP(combineintervals)
ALGOP(explicitdomain)
ALGOP(introduceabs)    /* [p = a, p = -a] iff p = |a| if p >= 0 */

                    /* STRICT INEQUALITIES  */
ALGOP(reverselessthan)
ALGOP(reversegreaterthan)
ALGOP(addeqn1)
ALGOP(subeqn1)
ALGOP(changesigns1)
ALGOP(changesignsandsense1)
ALGOP(changesignsandsense3)
ALGOP(changesigns1g)
ALGOP(mulineq)
ALGOP(mulineqsq)
ALGOP(divineq)
ALGOP(sqrtineq11)
ALGOP(sqrtineq12)
ALGOP(sqrtineq13)
ALGOP(sqrtineq14)
ALGOP(sqrtineq15)
ALGOP(sqrtinterval1)
ALGOP(sqrtinterval3)
ALGOP(sqrtinterval5)
ALGOP(rootineq11)
ALGOP(rootineq12)
ALGOP(rootineq13)
ALGOP(rootineq15)
ALGOP(rootineq23)
ALGOP(rootineq25)
ALGOP(rootinterval1)
ALGOP(rootinterval2)
ALGOP(oddrootineq)
ALGOP(oddrootineq2)
ALGOP(powerineq11)
ALGOP(squaretrue1)
ALGOP(squarefalse1)
ALGOP(squaretrue2)
ALGOP(squarefalse2)
ALGOP(powerineq12)
ALGOP(powerineq13)
ALGOP(squareineq1)
ALGOP(squareineq3)
ALGOP(powerineq14even)
ALGOP(powerineq14odd)
ALGOP(powerineq15)
ALGOP(powerineq16)
ALGOP(powerineq17)
ALGOP(powerineq27)
ALGOP(normalizelinear1)
ALGOP(mulineqbysquare1)
ALGOP(mulineqbysquare2)
ALGOP(mulineqsqrt1)
ALGOP(mulineqsqrt2)
ALGOP(mulineqsqrt3)
ALGOP(mulineqsqrt4)
ALGOP(intervalsneg1)
ALGOP(intervalspos1)
ALGOP(droppositive1)
ALGOP(posnum1)
ALGOP(posnum2)
ALGOP(numericalineq)
ALGOP(evenpowerineq1)
ALGOP(evenpowerineq3)
ALGOP(lessthantole)
ALGOP(greaterthantoge)
ALGOP(sqsqrtineq1)
ALGOP(sqsqrtineq1rev)
ALGOP(powerrootineq1)
ALGOP(powerrootineq1rev)
                    /* INEQUALITIES */
ALGOP(reversele)
ALGOP(reversege)
ALGOP(addeqn2)
ALGOP(subeqn2)
ALGOP(changesigns2)
ALGOP(changesigns2g)
ALGOP(changesignsandsense2)
ALGOP(changesignsandsense4)
ALGOP(sqrtineq21)
ALGOP(sqrtineq22)
ALGOP(sqrtineq23)
ALGOP(sqrtineq24)
ALGOP(sqrtineq25)
ALGOP(sqrtinterval2)
ALGOP(sqrtinterval4)
ALGOP(sqrtinterval6)
ALGOP(rootineq21)
ALGOP(rootineq22)
ALGOP(powerineq21)
ALGOP(powerineq22)
ALGOP(powerineq23)
ALGOP(squareineq2)
ALGOP(squareineq4)
ALGOP(powerineq24even)
ALGOP(powerineq24odd)
ALGOP(powerineq25)
ALGOP(powerineq26)
ALGOP(mulineqbysquare3)
ALGOP(mulineqbysquare4)
ALGOP(normalizelinear2)
ALGOP(intervalsneg2)
ALGOP(intervalspos2)
ALGOP(droppositive2)
ALGOP(evenpowerineq2)
ALGOP(evenpowerineq4)
ALGOP(sqsqrtineq2)
ALGOP(sqsqrtineq2rev)
ALGOP(powerrootineq2)
ALGOP(powerrootineq2rev)
ALGOP(solvelinearineq)
ALGOP(polylessexp)
ALGOP(logratbound)
                            /* TRIG AND LOG INEQUALITIES */
ALGOP(lnineq1)
ALGOP(lnineq2)
ALGOP(logineq1)
ALGOP(logineq2)
ALGOP(lnrightineq1)
ALGOP(lnrightineq2)
ALGOP(lnleftineq1)
ALGOP(lnleftineq2)
ALGOP(logrightineq1)
ALGOP(logrightineq2)
ALGOP(logleftineq1)
ALGOP(logleftineq2)
ALGOP(expineq1)
ALGOP(expineq2)
ALGOP(abssinineq)
ALGOP(abscosineq)
ALGOP(sinineq)
ALGOP(coslowerbound)
ALGOP(absarctanineq)
ALGOP(arctanineq)
ALGOP(tanineq)
                             /* USER-DEFINED FUNCTIONS */
AUTOMODEOP(applyfunction0)
AUTOMODEOP(applyfunction1)
AUTOMODEOP(applyfunction2)
AUTOMODEOP(applyfunction3)
AUTOMODEOP(applyfunction4)
AUTOMODEOP(applyfunction5)
AUTOMODEOP(applyfunction6)
AUTOMODEOP(applyfunction7)
AUTOMODEOP(applyfunction8)
AUTOMODEOP(applyfunction9)
AUTOMODEOP(applyfunction10)
AUTOMODEOP(applyfunction11)
AUTOMODEOP(applyfunction12)
AUTOMODEOP(applyfunction13)
AUTOMODEOP(applyfunction14)
AUTOMODEOP(applyfunction15)

ALGOP(cancelsqrtgcd)   /* automode_only */
ALGOP(cancelrootgcd)
ALGOP(cancelabsgcd)
ALGOP(knownroot)

ALGOP(contentgcd)
ALGOP(fractionalsubstitution)
ALGOP(gcdsubstitution)
ALGOP(backtosqrts)
ALGOP(backtoroots)
ALGOP(eliminatesqrts)
ALGOP(distribandcancel)
ALGOP(factorandcancel)
ALGOP(factoroneside)

/* cubic_equations operators */
ALGOP(eliminatequadraticterm)
ALGOP(computediscriminant)
ALGOP(realcardan)
ALGOP(cardan)
ALGOP(cardan2)
ALGOP(showcallingcubic)
ALGOP(viete)

/* recip_ineq operators */
ALGOP(recipineq11)  /* 1/x < a iff x<0 or 1/a < x provided a > 0 */
ALGOP(recipineq21)  /* a < 1/x iff 0 < x < 1/a provided a > 0 */
ALGOP(recipineq31)  /* 1/x < -a iff -1/a < x < 0 provided a > 0 */
ALGOP(recipineq41)  /* -a < 1/x iff x < -1/a or 0 < x provided a > 0 */
ALGOP(recipinterval11)  /* a < x < b iff 1/b < x < 1/a provided a,b > 0 */
ALGOP(recipinterval21)  /* a < x <= b iff 1/b <= x < 1/a provided a,b > 0 */
ALGOP(recipinterval31)  /* -a < x < -b iff -1/b < x < -1/a provided a,b > 0 */
ALGOP(recipinterval41)  /* -a < x <= -b iff -1/b <= x < -1/a provided a,b > 0 */
ALGOP(recipinterval51)   /* -a < x < b iff x < - 1/a or 1/b < x (a,b > 0) */
ALGOP(recipinterval61)   /* -a < x <= b iff x < -1/a or 1/b <= x (a,b > 0) */
ALGOP(recipineq12)  /* 1/x <= a iff x<0 or 1/a <= x provided a > 0 */
ALGOP(recipineq22)  /* a <= 1/x iff 0 < x <= 1/a provided a > 0 */
ALGOP(recipineq32)  /* 1/x <= -a iff -1/a <= x < 0 provided a > 0 */
ALGOP(recipineq42)  /* -a <= 1/x iff x <= -1/a or 0 < x provided a > 0 */
ALGOP(recipinterval12)  /* a <= x < b iff 1/b < x <= 1/a provided a,b > 0 */
ALGOP(recipinterval22)  /* a <= x <= b iff 1/b <= x < 1/a provided a,b > 0 */
ALGOP(recipinterval32)  /* -a <= x < -b iff -1/b < x <= -1/a provided a,b > 0 */
ALGOP(recipinterval42)  /* -a <= x <= -b iff -1/b <= x <= -1/a provided a,b > 0 */
ALGOP(recipinterval52)   /* -a <= x < b iff x <= - 1/a or 1/b < x (a,b > 0) */
ALGOP(recipinterval62)   /* -a <= x <= b iff x <= -1/a or 1/b <= x (a,b > 0) */

/* Variants of inequality operations that work on > and GE */

ALGOP(sqrtineq11g)          /* a > u^2 iff sqrt a > |u|              */
ALGOP(sqrtineq14g)          /* a > u^2 iff -sqrt a < u < sqrt a          */
ALGOP(sqrtineq12g)           /* v^2 > a iff |v| > sqrt a provided a>=0 */
ALGOP(sqrtineq15g)           /* u^2 > a iff u < -sqrt a  or u > sqrt a    */
ALGOP(powerineq11g)          /* v > sqrt u iff 0 <= u < v^2            */
ALGOP(squareineq1g)          /* v>a sqrt u iff 0<=a^2u<v^2 provided 0<=a  */
ALGOP(powerineq12g)          /* sqrt v > a iff v > a^2 provided 0<=a   */
ALGOP(sqrtineq13g)           /* v > u  iff sqrt v > sqrt u provided u>=0  */
ALGOP(sqrtineq21g)          /* a >= u^2 iff sqrt a >= |u|            */
ALGOP(sqrtineq24g)          /* a >= u^2 iff -sqrt a <= u <= sqrt a        */
ALGOP(sqrtineq22g)          /* v^2 >= a iff |v| >= sqrt a provided 0<=a */
ALGOP(sqrtineq25g)          /* u^2 >= a iff u <= -sqrt a or sqrt a <= u   */
ALGOP(powerineq21g)         /* v >= sqrt u iff 0 <= u <= v^2          */
ALGOP(squareineq2g)         /* v >= a sqrt u iff 0<=a^2u<=v^2 provided 0<=a */
ALGOP(powerineq22g)         /* sqrt v >= a iff v >= a^2 provided 0<=a */
ALGOP(sqrtineq23g)          /* v >= u iff sqrt v >= sqrt u provided u>=0 */
ALGOP(oddrootineqg)  /* u > v iff ^nsqrt u > ^nsqrt v (n odd)          */
ALGOP(rootineq11g)   /* a > u^(2n) iff ^(2n)sqrt a > |u|               */
ALGOP(rootineq13g)   /* a > u^(2n) iff -^(2n)sqrt a < u < ^(2n)sqrt a         */
ALGOP(rootineq12g)   /* u^(2n) > a iff |u| > ^(2n)sqrt a  provided a>=0 */
ALGOP(rootineq15g)   /* u^(2n) > a iff u < -^(2n)sqrt a  or u > ^(2n)sqrt a   */
ALGOP(powerineq14oddg)  /* v > ^(2n)sqrt u  iff 0 <= u < v^(2n)            */
ALGOP(powerineq14eveng)  /* v > ^(2n)sqrt u  iff 0 <= u < v^(2n)            */
ALGOP(powerineq13g)  /* v > a(^nsqrt u) iff v^n > a^nu provided 0 <= a(^nsqrt u) */
ALGOP(powerineq15g)  /* ^nsqrt v > a iff v > a^n provided a>=0      */
ALGOP(powerineq16g)  /* u > v iff u^n > v^n (n odd, n>0)       */
ALGOP(powerineq17g)  /* u > v iff u^n > v^n (n > 0 and 0 <= u)  */
ALGOP(oddrootineq2g) /* u >= v iff ^nsqrt u >= ^nsqrt v (n odd)          */
ALGOP(rootineq21g)   /* a >= u^(2n) iff ^(2n)sqrt a >= |u|                */
ALGOP(rootineq23g)   /* a >= u^(2n) iff -^(2n)sqrt a <= u <= ^(2n)sqrt a          */
ALGOP(rootineq22g)   /* u^(2n) > a iff |u| > ^(2n)sqrt a  provided a>=0  */
ALGOP(rootineq25g)   /* u^(2n) >= a iff u <= -^(2n)sqrt a  or u >= ^(2n)sqrt a    */
ALGOP(powerineq24oddg)  /* v >= ^(2n)sqrt u iff 0 <= u <= v^(2n)              */
ALGOP(powerineq24eveng)  /* v >= ^(2n)sqrt u iff 0 <= u <= v^(2n)              */
ALGOP(powerineq23g)  /* v >= a(^nsqrt u) iff v^n >= a^nu provided 0 <= a(^nsqrt u) */
ALGOP(powerineq25g)  /* ^nsqrt v >= a iff a^n <= v provided a >= 0     */
ALGOP(powerineq26g)  /* u >= v iff u^n >= v^n (n odd, n >= 0)      */
ALGOP(powerineq27g)  /* u >= v iff u^n >= v^n (n > 0 and 0 <= u)   */
ALGOP(posnum1g)            /* u/v > 0 iff v > 0 provided u > 0 */
ALGOP(mulineqsqrt1g)       /* change u/sqrt v > 0 to uv > 0        */
ALGOP(mulineqbysquare1g)   /* u/v > 0 iff uv > 0               */
ALGOP(mulineqsqrt2g)       /* change 0 > u/sqrt v to 0 > uv        */
ALGOP(mulineqbysquare2g)   /* 0 > u/v iff 0 > uv               */
ALGOP(normalizelinear1g)   /* 0 > ax \pm  b iff 0 > a(x\pm b/a)      */
ALGOP(reverselessthang)    /* 0 > ax \pm  b iff 0 > a(x\pm b/a)      */
ALGOP(intervalsneg1g)      /* 0 > (x-a)(x-b) iff a<x<b  (where a<b) */
ALGOP(intervalspos1g)      /* (x-a)(x-b) > 0 iff x<a or x>b (where a<b) */
ALGOP(posnum2g)            /* u/v >= 0 iff v >= 0 provided u >= 0  */
ALGOP(mulineqsqrt3g)       /* u/sqrt v >= 0 iff uv >= 0            */
ALGOP(mulineqbysquare3g)   /* u/v >= 0 iff uv > 0 or u = 0         */
ALGOP(mulineqsqrt4g)       /* 0 >= u/sqrt v iff 0 >= uv            */
ALGOP(mulineqbysquare4g)   /* 0 >= u/v iff 0 > uv or u = 0         */
ALGOP(normalizelinear2g)   /* 0 >= ax \pm  b iff 0 >= a(x\pm b/a)  */
ALGOP(intervalsneg2g)      /* 0 >= (x-a)(x-b) iff a<=x<=b (where a<=b) */
ALGOP(intervalspos2g)      /* (x-a)(x-b)>=0 iff x<=a or b<=x (where a<=b) */
ALGOP(squareineq3g)        /* square both sides when one side is >= 0 */
ALGOP(squareineq4g)        /* square both sides when one side is >= 0 */
ALGOP(evenpowerineq1g)     /* x^2n > a is true if a < 0         */
ALGOP(evenpowerineq2g)     /* x^2n >= a is true if a >= 0         */
ALGOP(evenpowerineq3g)     /* x^2n < a is false if a <= 0        */
ALGOP(evenpowerineq4g)     /* x^2n <= a is false if a < 0        */
ALGOP(recipineq11g)        /* a > 1/x  iff x<0 or x > 1/a provided a > 0 */
ALGOP(recipineq21g)        /* 1/x > a iff 0 < x < 1/a provided a > 0 */
ALGOP(recipineq31g)        /* -a > 1/x iff -1/a < x < 0 provided a > 0 */
ALGOP(recipineq41g)        /* 1/x > -a  iff x < -1/a or x > 0 provided a > 0 */
ALGOP(recipineq12g)        /* a >= 1/x  iff x<0 or x >= 1/a provided a > 0 */
ALGOP(recipineq22g)        /* 1/x >= a iff 0 < x <= 1/a provided a > 0 */
ALGOP(recipineq32g)        /* -a <= 1/x iff -1/a <= x < 0 provided a > 0 */
ALGOP(recipineq42g)        /* 1/x >= -a  iff x <= -1/a or x > 0 provided a > 0 */
ALGOP(squaretrue1g)        /* x^2 > a is true if a < 0      */
ALGOP(squarefalse1g)       /* a > x^2 is false if a <= 0    */
ALGOP(squaretrue2g)        /* x^2 >= a is true if a <= 0      */
ALGOP(squarefalse2g)       /* a >= x^2 is false if a < 0    */
ALGOP(lnineq1g)            /* u > v iff ln u > ln v provided v>0   */
ALGOP(logineq1g)           /* u > v iff log u > log v provided v>0 */
ALGOP(lnrightineq1g)       /* ln u > v iff u > e^v                 */
ALGOP(lnleftineq1g)        /* u > ln v iff e^u > v                 */
ALGOP(logrightineq1g)      /* log u > v iff  u > 10^v               */
ALGOP(logleftineq1g)       /* u > log v iff 10^u > v               */
ALGOP(expineq1g)           /* u > v iff a^u > a^v  if a > 0, takes arg in menu mode */
ALGOP(lnineq2g)            /* u >= v iff ln u >= ln v provided u>0   */
ALGOP(logineq2g)           /* u >= v => log u >= log v provided u>0  */
ALGOP(lnrightineq2g)       /* ln u >= v iff u >= e^v                 */
ALGOP(lnleftineq2g)        /* u >= ln v iff e^u >= v                 */
ALGOP(logrightineq2g)      /* log u >= v iff u >= 10^v               */
ALGOP(logleftineq1g)       /* u >= log v iff 10^u >= v               */
ALGOP(logleftineq2g)       /* u <= v iff a^u <= a^v  if a > 0, takes arg in menu mode */
ALGOP(expineq2g)           /* u <= v iff a^u <= a^v  if a > 0, takes arg in menu mode */
ALGOP(intervaltoabs1)      /* -a <= u <= a iff |u| <= a */
ALGOP(intervaltoabs2)      /* -a < u <= a iff |u| < a */
ALGOP(absevenpowerrev)     /* u^(2n) = |u|^(2n) if u is real     */
ALGOP(abspowerrev)         /*|u|^n =  |u^n| if n is real     */
ALGOP(preparetocancel)


/* AUXILIARIES ___________________________________________________________*/


#define JUMPER(op)  (  ((void *)op == (void *) choosesubstitution) \
                    || ((void *)op == (void *) equatetoproblem)    \
                    || ((void *)op == (void *) selectmin)          \
                    || ((void *)op == (void *) selectmax)          \
                    || ((void *)op == (void *) tabulate)           \
                    || ((void *)op == (void *) tabulateexact)      \
                    || ((void *)op == (void *) integraltest)       \
                    || ((void *)op == (void *) roottest)           \
                    || ((void *)op == (void *) ratiotest)          \
                    || ((void *)op == (void *) divergencetest)     \
                    || ((void *)op == (void *) comparisontest1)    \
                    || ((void *)op == (void *) comparisontest2)    \
                    || ((void *)op == (void *) limitcomparisontest)\
                    || ((void *)op == (void *) condensationtest)   \
                    || ((void *)op == (void *) finishintegraltest) \
                    || ((void *)op == (void *) finishroottest)     \
                    || ((void *)op == (void *) finishratiotest)    \
                    || ((void *)op == (void *) finishdivergencetest)     \
                    || ((void *)op == (void *) finishcomparisontest1)     \
                    || ((void *)op == (void *) finishcomparisontest2)     \
                    || ((void *)op == (void *) finishlimitcomparisontest)\
                    || ((void *)op == (void *) finishcondensationtest))  \

   /*  and here list every operator that can replace a line by a totally
       different line */

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists