Sindbad~EG File Manager
actualop optable[MAXMENUS][16] =
{
{ /* numerical_calculation */
arithmetic, /* arithmetic */
devalop, /* decimal calculation */
computeroot, /* calculate decimal � or �� */
computepower, /* decimal value of x� */
computefunction, /* decimal value of function */
factorinteger, /* factor integer */
evalatpoint, /* evaluate numerically at a point */
evalpi, /* decimal value of pi */
evaleulere, /* decimal value of e */
evalfunction, /* compute function value */
factornumerically /* factor polynomial numerically */
},
{ /* numerical_calculation2 */
decimaltofraction, /* convert decimal to fraction */
writenumberassquare, /* express as square */
writenumberascube, /* express as cube */
writenumberaspower, /* express as ?-th power */
writenumberaspowerof,/* express as power of ? */
writeintegeraspower, /* write integer as a^n */
writeassum /* x = ? + (x-?) */
},
{ /* complex_arithmetic */
defnofi, /* i� = -1 */
powersofi0, /* i^(4n) = 1 */
powersofi1, /* i^(4n+1) = i; */
powersofi2, /* i^(4n+2) = -1 */
powersofi3, /* i^(4n+3) = -i; */
weakcomplexarithmetic, /* complex arithmetic, not powers */
complexpowers, /* power of complex number */
complexarithmetic, /* complex arithmetic and powers */
cevalop, /* complex decimal arithmetic */
factorinteger, /* integer factors of integer */
complexfactorsofinteger, /* complex factors of integer */
factorcomplexinteger, /* factor n+mi (n not zero) */
computeroot, /* calculate decimal � or �� */
computepower, /* decimal value of x� */
computefunction, /* decimal value of function */
evalatpoint /* evaluate numerically at a point */
},
{ /* simplify_sums */
doubleminus, /* cancel double minus -(-a)=a */
pushminusin, /* push minus in -(a+b) = -a-b */
pullminusout, /* -a-b = -(a+b) */
arithmetic, /* arithmetic */
regroupterms, /* regroup terms */
orderterms, /* put terms in order */
dropzero, /* drop zero terms x+0 = x */
additivecancel, /* cancel � terms */
collectterms, /* collect � terms (once) */
collectall, /* collect all � terms in a sum */
additivecommute, /* a+b = b+a */
pullminusout2, /* a(b-c) = -a(c-b) */
minusintoproduct1, /*-ab = a(-b) */
minusintoproduct2, /* -abc = ab(-c) */
minusintoproduct3 /* a(-b)c = ab(-c) */
},
{ /* simplify_products */
multbyzero, /* x�0 = 0 */
multbyone, /* x�1 = x */
bringminusout, /* a(-b) = -ab */
bringminusout2, /* a(-b-c) = -a(b+c) */
bringminusout3, /* (-a-b)c = -(a+b)c */
regroupfactors, /* regroup factors */
collectnumbers, /* collect numbers */
orderfactors, /* order factors */
collectpowers, /* collect powers */
distriblaw, /* a(b+c)=ab+ac */
difofsquares, /* (a-b)(a+b) = a�-b� */
squareofsum, /* (a + b)� = a� + 2ab + b� */
squareofdif, /* (a - b)� = a� - 2ab + b� */
makedifofcubes, /* (a-b)(a�+ab+b�)=a^3-b^3 */
makesumofcubes, /* (a+b)(a�-ab+b�)=a^3+b^3 */
multcommute /* ab = ba */
},
{ /* expand_menu */
multiplyout, /* multiply out product of sums */
expandnumerator, /* multiply out numerator */
expanddenominator, /* multiply out denominator */
multdef /* na = (a+...+a) */
},
{ /* fractions */
zeronum, /* 0/a = 0 */
unitdenom, /* a/1 = a */
recip, /* a(1/a) = 1 */
multiplyfractions, /* (a/b)(c/d) = ac/(bd); don't multiply out (3/5) x if (ringflag & RATRING) */
multiplyfractions2, /* a(b/c) = ab/c ; do also multiply out (3/5) x; used only in menu mode */
cancelop, /* ab/ac = b/c */
addfractions, /* a/c � b/c=(a�b)/c */
apart, /* (a � b)/c = a/c � b/c */
apartandcancel, /* (ac+b)/c = a+b/c */
polydivop,
cancelbypolydiv,
pulloutrational, /* au/bv=(a/b)(u/v) (integers a,b) */
pulloutdenom, /* a/b = (1/b) a */
pulloutreal, /* au/b = (a/b) u (real numbers a,b) */
breakfraction, /* ab/cd = (a/c)(b/d) */
breakfraction2 /* ab/c = (a/c)b */
},
{ /* signed_fractions */
cancelminusinquotient, /* (-a)/(-b) = a/b */
minusintonum, /* -(a/b) = (-a)/b */
minusintodenom, /* -(a/b) = a/(-b) */
minusoutfromnum, /* (-a)/b = -a/b */
minusoutfromdenom, /* a/(-b) = -a/b */
minusoutfromnum2, /* (-a-b)/c = -(a+b)/c */
minusoutfromdenom2, /* a/(-b-c) = -a/(b+c) */
minusoutfromdenom3, /* a/(b-c) = -a/(c-b) */
minusoutfromdenom22, /* -a/(-b-c) = a/(b+c) */
minusoutfromdenom33, /* -a/(b-c) = a/(c-b) */
minusoutfromnum22, /* -(-a-b)/c = (a+b)/c */
negatenumdenom, /* (a-b)/(c-d) = (b-a)/(d-c) */
breakfraction1 /* ab/c = a(b/c) */
},
{ /* compound_fractions */
compoundfractions1, /* (a/c)/(b/c) = a/b */
invertandmultiply, /* a/(b/c)=ac/b */
invertandmultiply2, /* 1/(a/b) = b/a */
compoundfractions2, /* (a/b)/c = a/(bc) */
compoundfractions3, /* a/b = a(1/b) ; only for menu mode */
compoundfractions4, /* (a/b)c/d = ac/bd */
factordenominator,
commondenominfraction /* commondenom in num or denom */
},
{ /* common_denominators */
factordenominator,
findcommondenom,
findcommondenom2,
multiplyfractions,
multiplyfractions,
orderfactors,
addfractions,
commondenom,
commondenom2,
commondenomandsimp,
commondenomandsimp2,
multnumanddenom
},
{ /* exponents */
zeroexponent, /* a^0 = 1 (a not zero) */
unitexponent, /* a^1 = a */
zerobase, /* 0^b = 0 if b > 0 */
unitbase, /* 1^b = 1 */
intpowerofminusone, /* (-1)� = �1 (n even or odd) */
powertopower, /* (a^b)^c = a^(bc) if a>0 or c�Z */
minustopower, /* (-a)� = (-1)�a� */
quotienttopower, /* (a/b)� = a�/b� */
producttopower, /* (ab)� = a�b� */
squareofsum, /* (a+b)� = a�+2ab+b� */
plainbinomialtheorem, /* expand by binomial theorem */
collectpowers, /* a^(b+c) =(a^b)(a^c) */
reversecollectpowers, /* a^(b+c) = a^b a^c */
poweroutoffraction, /* a�/b� = (a/b)� */
powerstonum, /* a^n/a^m = a^(n-m) */
powerstodenom /* ab^n/b^m = a/b^(m-n) */
},
{ /* expand_powers */
expandsquare, /* a^2 = aa */
expandcube, /* a^3 = aaa */
expandpower, /* a^n = aaa...(n times) */
breakpower, /* a^n = a^?a^(n-?) */
squareofsum, /* (a � b)� = a� � 2ab + b� */
cubeofsum, /* (a + b)^3 = a^3 + 3a^2b + 3ab^2 + b^3 */
cubeofdif, /* (a - b)^3 = a^3 - 3a^2b + 3ab^2 - b^3 */
reversepowertopower1, /* a^(bc) = (a^b)^c if a>0 or c�Z */
reversepowertopower2, /* a^(bc) = (a^c)^b if a>0 or c�Z */
reversepowertopower3, /* a^(b?) = (a^b)^? (available with products of 3 or more terms in the exponent) */
poweroutofrecip /* 1/a^n = (1/a)^n */
},
{ /* negative_exponents */
eliminateconstnegexp, /* a^(-n) = 1/a� (n constant) */
eliminateconstnegexpnum, /* a^(-n)/b = 1/(a�b) (n constant) */
eliminatenegexp1, /* a^-1 = 1/a */
eliminatenegexp, /* a^(-n) = 1/a� */
eliminatenegexpnum, /* a^(-n)/b = 1/(a�b) */
eliminatenegexpdenom, /* a/b^(-n) = ab� */
introducenegexp, /* a/b� = ab^(-n) */
introducenegexp1, /* a/b = ab^(-1) */
negexpofquotient, /* "(a/b)^(-n) = (b/a)�" */
powerstonum, /* a^n/a^m = a^(n-m) */
powerstodenom, /* ab^n/b^m = a/b^(m-n) */
reversecollectpowers2 /* a^(b-c) = a^b/a^c */
},
{ /* square_roots */
productofsqrts, /* �x�y = �(xy) */
sqrtofproduct, /* �(xy) = �x�y */
sqrtsimp, /* �(x�y) = x�y */
sqrtofsquare, /* �(x�)=x if x�0 */
sqrttoabs, /* �(x�)= |x| or �(x��)=|x|� */
factorundersqrt, /* factor integer x in �x */
sqrtofquotient, /* �(x/y) = �x/�y */
sqrtofquotient2, /* �(x/y) = �|x|/�|y| */
quotientofsqrts, /* �x/�y = �(x/y) */
cancelsqrt, /* x/�x = �x */
cancelsqrt2, /* �x/x = 1/�x */
powerofsqrt, /* (�x)�� = x� if x�0 */
powerofsqrt2, /* (�x)^(2n+1) = x��x */
evaltorational,
computesqrt,
weakarithmetic
},
{ /* advanced_square_roots */
cancelsqrtgcd, /* show common factor in �u/�v */
factorpolyundersqrt, /* factor polynomial under � */
rationalizedenom, /* rationalize denominator */
rationalizenum, /* rationalize numerator */
sqrttoabs, /* �(x�)= |x| or �(x��)=|x|� */
cancelsqrt3, /* cancel �: �(xy)/�y = �x */
multiplyoutundersqrt, /* multiply out under � */
lauringson, /* a�-b = (a-�b)(a+�b) */
roottosqrt, /* root(2,x) = sqrt(x) */
sqrttoroot, /* sqrt(x) = root(2n,x^n) */
sqrttoroot2, /* sqrt(x) = root(2n,x)^n */
sqrtofpower, /* �(x��) = x� */
sqrtofpower2, /* �(x^(2n+1)) = x��x */
pushundersqrt, /* a�b = �(a�b) if a�0 */
ratdenomandsimp /* rationalize denom and simplify */
},
{ /* fractional_exponents */
exponenttosqrt, /* a ^ � = �a */
exponenttosqrt, /* a^(n/2) = �(a�) */
exponenttoroot, /* a^(b/n) = ��(a^b) */
sqrtexp, /* �a = a ^ � */
rootexp, /* ��a = a^(1/n) */
rootpowerexp, /* ��(a^m) = a^(m/n) */
powerrootexp, /* (��a)^m = a^(m/n) */
powersqrtexp, /* (�a)^m = a^(m/2) */
sqrtexpdenom, /* 1/�a = a^(-�) */
rootexpdenom, /* 1/��a = a^(-1/n) */
powerofminusone, /* evaluate (-1)^(p/q) */
factorbase, /* factor integer a in a^(p/q) */
fractexpdenom, /* a/b^(p/q) = (a^q/b^p)^(1/q) */
fractexpnum, /* a^(p/q)/b = (a^p/b^q)^1/q) */
arithmetic
},
{ /*nth_roots */
productofroots, /* ��x��y = ��(xy) */
rootofproduct, /* ��(xy) = ��x ��y" */
rootofpower5, /* ��x^m = (��x)^m" */
rootsimp, /* ��(x�y) = x ��y or |x|��y */
rootofpower, /* ��(x�) = x if x�0 or n odd */
rootofpower3, /* ��(x^(nm)) = x^m if x�0 or n odd */
rootofpower2, /* ���(x�) = �x */
rootofpower4, /* root(mn,a�) = root(m,a) */
powerofroot, /* (��x)� = x */
powerofroot2, /* (��a)^m = ��(a^m)) */
powerofroot3, /* (��a)^(qn+r) = a^q ��(a^r) */
factorunderroot, /* factor x in ��x */
rootofminus, /* ��(-a) = -��a, n odd */
evaltorational, /* evaluate to rational */
factorpolyunderroot, /* factor polynomial under �� */
multiplyoutunderroot /* multiply out under �� */
},
{ /* roots_of_roots */
sqrtofsqrt, /* sqrt(sqrt(x)) = root(4,x) */
sqrtofroot, /* sqrt(root(n,x)) = root(2n,x) */
rootofsqrt,
rootofroot
},
{ /* roots_and_fractions */
rootofquotient, /* ��(x/y) = ��x/��y */
quotientofroots, /* ��x/��y = ��(x/y) */
cancelroot, /* x/��x = (��x)^(n-1) */
cancelroot2, /* ��x/x = 1/(��x)^(n-1) */
cancelroot3, /* cancel under ��: ��(ab)/��(bc)=��a/��b */
cancelroot3, /* cancel ��: ��(xy)/��y = ��x */
cancelrootgcd, /* show common factor in ��u/��v */
pushunderoddroot, /* a(��b) = ��(a�b) if n odd */
pushunderevenroot, /* a(��b) = ��(a�b) if a�0 */
pushminusunderroot, /* -��a = ��(-a) if n odd */
rootdenom, /* a/��b = ��(a�/b) (n odd or a�0) */
rootnum, /* ��a/b = ��(a/b�) (n odd or b>0) */
sqrtnum, /* �a/b = �(a/b�) if b>0 */
sqrtdenom, /* a/�b = �(a�/b) if a�0 */
powerofroot4, /* root(mn,a)� = root(m,a) */
powerofroot5 /* root(2n,a)� = sqrt a */
},
{ /* complex_numbers */
recipofi, /* 1/i = -i */
recipofi2, /* a/i = -ai */
recipofi3, /* a/bi = -ai/b */
sqrtofminus1, /* �(-1) = i */
sqrtofneg, /* �(-a) = i�a if a�0 */
cleardenomofi, /* clear denominator of i */
multiplycomplexconjugates, /* (a-bi)(a+bi) = a^2+b^2 */
sumofsquares, /* a^2+b^2 = (a-bi)(a+bi) */
squareofabs, /* |u + vi|� = u� + v� */
complexabs, /* |u + vi| = �(u� + v�) */
complexapart, /* (u+vi)/w = u/w + (v/w)i */
complexform, /* write in form x+yi */
sqrtofi, /* sqrt(bi) = (sqrt(b/2) + sqrt(b/2) i) if b >= 0 */
sqrtofminusi, /* sqrt(-bi) = sqrt(b/2) - sqrt(b/2) i) if b >= 0 */
sqrtofaplusbi, /* sqrt(a+bi) = (sqrt((c+a)/2) + sqrt((c-a)/2) i) if b >= 0, where c^2 = a^2+b^2 */
sqrtofaminusbi /* sqrt(a-bi) = (sqrt((c+a)/2) - sqrt((c-a)/2) i) if b >= 0, where c^2 = a^2+b^2 */
},
{ /* factoring */
factoroutnumber, /* factor out number */
cleardenoms, /* clear numerical denominators */
contentfactor, /* ab + ac = a(b+c) */
contentfactor, /* factor out highest power */
factorsquareofsum, /* a�+2ab+b� = (a+b)� */
factorsquareofdif, /* a�-2ab+b� = (a-b)�" */
differenceofsquares, /* a�-b� = (a-b)(a+b) */
factorquadratic, /* factor quadratic trinomial */
quadraticformula, /* use quadratic formula */
writeassquare, /* a�� = (a�)� */
prodofpowers, /* a�b� = (ab)� */
factorcoefficients, /* factor integer coefficients */
factorinteger, /* factor integer */
makesubstitution,
unwinddefinition,
regardvarasconst,
},
{ /* advanced_factoring */
invisiblesub, /* write it as a function of ? */
makesubstitution2, /* write it as a function of ? and ? */
writeascube, /* a^(3n) = (a^n)^3 */
writeaspower, /* a^(?n) = (a^n)^? */
differenceofcubes, /* a^3 - b^3 = (a-b)(a�+ab+b�) */
sumofcubes, /* a^3 + b^3 = (a+b)(a�-ab+b�) */
differenceofnthpowers, /* a�-b� = (a-b)(a^(n-1)+...+b^(n-1)) */
differenceofnth2, /* a�-b� = (a+b)(a^(n-1)-...-b^(n-1)) (n even) */
sumofnthpowers, /* a�+b� = (a+b)(a^(n-1)-...+b^(n-1)) (n odd) */
sumoffourthpowers, /* x^4+a^4=(x�-�2ax+a�)(x�+�2ax+a�) */
factorquartic, /* x^4+(2p-q�)x�+p�=(x�-qx+p)(x�+qx+p) */
autosubstitution, /* computer makes substitution */
guessfactor, /* guess a factor */
factorbypolydiv, /* search for linear factor */
factorbygrouping, /* factor by grouping */
writeaspoly /* write it as a polynomial in ? */
},
{ /* solve_equations */
switchsides, /* switch sides */
changesigns, /* change signs of both sides */
addeqn, /* add to both sides */
subeqn, /* subtract from both sides */
transfer1, /* transfer term left to right */
transfer2, /* transfer term right to left */
muleqn, /* multiply both sides */
diveqn, /* divide both sides */
squareeqn, /* square both sides */
cancelterm, /* cancel � term from both sides */
cancelfactor, /* cancel common factor of sides */
alltoleft, /* subtract to put in form u=0 */
trueeqn, /* equation is identically true */
pseudosquare, /* a=-b becomes a�=-b� if a,b�0 */
pseudosquare2, /* a=-b becomes a=0 if a,b�0 */
pseudosquare3 /* a=-b becomes b=0 if a,b�0 */
},
{ /* quadratic_equations */
spliteqn, /* if ab = 0 then a=0 or b=0 */
quadraticformula,
quadraticformula, /* no mistake, it's there twice */
completethesquare,
sqrteqn,
crossmultiply,
negativediscriminant,
introduceabs, /* [u�=a, u�=-a] iff u� = |a| */
arithmetic
},
{ /* numerical_equations*/
evalatpoint,
solvenumerically
},
{ /* advanced_equations*/
crossmultiply, /* cross multiply (a/b=c/d=>ad=bc) */
powereqn, /* if u=v then u�=v� */
sqrteqn, /* take � of both sides */
rooteqn, /* take �� of both sides */
functioneqn, /* apply function to both sides */
commondenom, /* common denominator */
spliteqn, /* if ab=0 then a=0 or b=0 */
spliteqn2, /* if ab=ac then a=0 or b=c */
selecteqn, /* select one equation */
showalleqns,
collectmultiplesolns,
makesubstitution,
unwinddefinition,
rejecteqn, /* reject unsolvable equation */
checkroot, /* check root(s) in original eqn */
solvelinear /* solve linear equation at once */
},
{ /* cubic_equations */
eliminatequadraticterm,
computediscriminant,
showcallingcubic, /* if number changes adjust autosimp.c */
viete,
realcardan,
cardan2,
cardan,
reversesub,
unwinddefinition,
translatevar,
arithmetic,
devalop,
polyvalop
},
{ /* logarithmic_equations */
powereqn2, /* if u=v then a^u = a^v */
powereqn3, /* if ln u = v then u = e^v */
powereqn4, /* if log u = v then u = 10^v */
powereqn5, /* if log(b,u) = v then u = b^v */
logbeqn, /* if a^u = a^v then u=v */
logeqn, /* take log of both sides */
lneqn, /* take ln of both sides */
rejecteqn /* reject eqn--impossible log or ln */
},
{ /* cramers_rule */
cramersrule,
evaluatedeterminant
},
{ /* several_linear_equations */
varsleft,
eqnscollectall,
lineupvars, /* if this is changed, change in_loop in top.c */
addtwoeqns,
subtwoeqns,
muleqns,
diveqns,
addmuleqns,
submuleqns,
swapeqns,
ordereqns,
dropeqn, /* drop identity */
regardvarasconst, /* regard variable as constant */
impossibleeqns
},
{ /* selection_mode_only */
multabs, /* a|b| = |ab| if 0 � a */
divabs, /* |b|/c = |b/c| if 0 < c */
divabs2, /* a|b|/c = |ab/c| if 0 < a/ c */
solvelinearfor
},
{ /* linear_equations_by_selection */
/* if these change you must change */
/* execute in execute.c as well as */
/* needs_two_args in needsarg.c */
addselectedeqn,
subselectedeqn,
mulselectedeqn,
divselectedeqn,
addmulselectedeqn,
submulselectedeqn,
swapselectedeqn,
solveselectedeqn,
addselectedrow,
subselectedrow,
mulselectedrow,
divselectedrow,
addmulselectedrow,
submulselectedrow,
swapselectedrow,
multbymatrixidentity
},
{ /* linear_equations_by_substitution */
eqnscollectall, /* collect like terms */
solveone, /* solve equation ? for ? */
polyvalop, /* simplify equations */
eqnscancelterm, /* cancel term from both sides */
eqnsaddterm, /* add ? to both sides of equation ? */
eqnssubterm, /* subtract ? from both sides of equation ? */
diveqns, /* divide equation ? by ? */
substforvar, /* substitute for variable in all equations */
impossibleeqns
},
{ /* matrix_methods */
matrixform,
multbyidentity,
swaprows,
addrows,
subrows,
mulrows,
divrows,
addmulrows,
submulrows,
multiplymatrices,
dropzerocolumn,
dropzerorow,
dropduplicaterow,
impossibleeqns,
convertmatrixeqn
},
{ /* advanced matrix methods */
multiplymatrices,
dividebymatrix,
twobytwoinverse,
exactmatrixinverse,
decimalmatrixinverse
},
{ /* absolute_value */
/* change needs_index_arg if these change */
abspos, /* |u| = u if u�0 */
absposandassume, /* Assume u�0 and set |u| = u */
absneg, /* |u| = -u if u�0 */
abslinear, /* |cu| = c|u| if c�0 */
abslinearquo, /* |u/c| = |u|/c if c>0 */
multiplyabsval, /* |u||v| = |uv| */
absofproduct, /* |uv| = |u||v| */
absoffraction, /* |u/v| = |u| / |v| */
fractionofabs, /* |u| / |v| = |u/v| */
absevenpower, /* |u|��=u�� if u is real */
abspower, /* |u�|=|u|� if n is real */
abssqrt, /* |�u| = �|u| */
absroot, /* |��u| = ��|u| */
cancelabs3, /* |ab|/|ac| = |b|/|c| */
cancelabs3, /* |ab|/|a| = |b| */
cancelabsgcd /* show common factor in |u|/|v| */
},
{ /* absolute_value_ineq1 */
abseqn, /* |u|=c iff u=c or u = -c */
abseqn2, /* |u|/u=c iff c=�1 */
abslessthan, /* |u|<v iff -v < u < v */
absle, /* |u|�v iff -v � u � v */
lessthanabs, /* u<|v| iff u<-v or u<v */
leabs, /* u�|v| iff u�-v or u�v */
abseqntoineq1, /* |u| = u iff 0 � u */
abseqntoineq2, /* |u| = -u iff u � 0 */
absineqtrue, /* 0 � |u| is true */
absineqtrue2, /* -c � |u| is true (c�0) */
absineqtrue3, /* -c < |u| is true (c>0) */
absineqfalse, /* |u| < 0 is false */
abslessthanneg, /* |u| < -c is false (c�0) */
absleneg, /* |u| � -c is false (c>0) */
absleneg2, /* |u| � -c iff u=0 assuming c=0 */
abseqnneg /* |u| = -c iff u=0 assuming c=0 */
},
{ /* absolute_value_ineq2 */
absgreaterthan, /* v > |u| iff -v < u < v */
absge, /* v �|u| iff -v � u � v */
greaterthanabs, /* |v|> u iff v < -u or v > u */
geabs, /* |v|�u iff v � -u or v�u */
absineqtrueg, /* |u| � 0 is true */
absineqfalseg, /* 0 > |u| is false */
absgreaterthanneg, /* -c > |u| is false (c�0) */
absgeneg, /* -c � |u| is false (c>0) */
absgeneg2, /* -c � |u| iff u=0 assuming c=0 */
absineqtrue3g, /* |u| > -c is true (c>0) */
absineqtrue2g, /* |u| � -c is true (c�0) */
intervaltoabs1, /* -a <= u <= a iff |u| <= a */
intervaltoabs2, /* -a < u < a iff |u < a */
absevenpowerrev, /* u^(2n) = |u|^(2n) if u is real */
abspowerrev /*|u|^n = |u^n| if n is real */
},
{ /* less_than */
reverselessthan, /* change u < v to v > u */
addeqn1, /* add ? to both sides */
subeqn1, /* subtract ? from both sides */
changesigns1, /* change -u < -v to v < u */
changesignsandsense1, /* change -u < -v to u > v */
mulineq, /* multiply both sides by ? */
mulineqsq, /* multiply both sides by ?� */
divineq, /* divide both sides by ? */
numericalineq, /* evaluate numerical inequality */
evenpowerineq1, /* a < x^2n true if a < 0 */
evenpowerineq3, /* x^2n < a false if a <= 0 */
squareineq1, /* square both sides */
squareineq3, /* u < v iff u� < v� or u � 0 provided v > 0 */
lessthantole, /* u < v or u = v becomes u � v */
combineintervals, /* combine intervals */
explicitdomain /* use assumptions */
},
{ /* greater_than */
reversegreaterthan, /* change x > y to y < x */
changesignsandsense3, /* change -u > -v to u < v */
changesigns1g, /* change -u > -v to v > u */
evenpowerineq1, /* x^2n > a is true if a < 0 */
evenpowerineq3g, /* a > x^2n is false if a <= 0 */
squareineq3g, /* v > u iff v� > u� or u < 0 provided 0 � v */
greaterthantoge /* u > v or u = v iff u � v */
},
{ /* less_than_or_equal */
reversele, /* change x � y to y � x */
addeqn2, /* add ? to both sides */
subeqn2, /* subtract ? from both sides */
changesigns2, /* change u � -v to v � u */
changesignsandsense2, /* change -u � -v to u � v */
mulineq, /* multiply both sides by ? */
mulineqsq, /* multiply both sides by ?� */
divineq, /* divide both sides by ? */
numericalineq, /* evaluate numerical inequality */
evenpowerineq2, /* a <= x^2n true if a <= 0 */
evenpowerineq4, /* x^2n <= a false if a < 0 */
squareineq2, /* square both sides */
squareineq4, /* u � v => u� � v� or u � 0 */
combineintervals, /* combine intervals */
explicitdomain /* use assumptions */
},
{ /* greater_than_or_equal */
reversege, /* change x � y to y � x */
changesignsandsense4, /* change -u � -v to u � v */
changesigns2g, /* change -u � -v to v � u */
evenpowerineq2g, /* x�� � a is true if a � 0 */
evenpowerineq4g, /* a � x�� is false if a < 0 */
squareineq4g /* v � u iff v� � u� or u � 0 provided 0 � v */
},
{ /* square_ineq1 */
sqrtineq11, /* u� < a iff |u| < �a */
sqrtineq14, /* u� < a iff -�a < u < �a */
sqrtineq12, /* 0 � a < v� iff �a < |v| */
sqrtineq15, /* a < u� iff u < -�a or �a < u */
sqrtinterval1,/* a<u�<b iff -�b<u<-�a or �a<u<�b */
sqrtinterval3,/* -a<u�<b iff u� < b provided 0<a */
sqrtinterval5,/* -a<u��b iff u� � b provided 0<a */
powerineq11, /* �u < v iff u < v� */
squareineq1, /* 0 � a�u < v iff 0 � a�u < v� */
powerineq12, /* a < �v iff a� < v provided 0�a */
sqrtineq13, /* 0 � u < v iff �u < �v */
squaretrue1, /* a < x^2 is true if a < 0 */
squarefalse1, /* x^2 < a is false if a <= 0 */
sqsqrtineq1 /* -a < �u iff 0 � u provided a>0 */
},
{ /* square_ineq2 */
sqrtineq21, /* u� � a iff |u| � �a */
sqrtineq24, /* u� � a iff -�a � u � �a */
sqrtineq22, /* a � v� iff �a � |v| provided 0�a*/
sqrtineq25, /* a � u� iff u � -�a or �a � u */
sqrtinterval2,/* a�u��b iff -�b�u�-�a or �a�u�b */
sqrtinterval4,/* -a�u��b iff u� � b provided 0�a */
sqrtinterval6,/* -a�u�<b iff u� < b provided 0�a */
powerineq21, /* �u � v iff 0 � u � v� */
squareineq2, /* 0 � a�u � v iff 0 � a�u � v� */
powerineq22, /* a � �v iff a� � v provided 0�a */
sqrtineq23, /* 0 � u � v iff �u � �v", */
squaretrue2, /* a <= x^2 is true if a < 0 */
squarefalse2, /* x^2 <= a is false if a <= 0 */
sqsqrtineq2 /* -a � �u iff 0 � u provided a�0 */
},
{ /* recip_ineq1 */
recipineq11, /* 1/x < a iff x<0 or 1/a < x provided a > 0 */
recipineq21, /* a < 1/x iff 0 < x < 1/a provided a > 0 */
recipineq31, /* 1/x < -a iff -1/a < x < 0 provided a > 0 */
recipineq41, /* -a < 1/x iff x < -1/a or 0 < x provided a > 0 */
recipinterval11, /* a < 1/x < b iff 1/b < x < 1/a provided a,b > 0 */
recipinterval21, /* a < 1/x � b iff 1/b � x < 1/a provided a,b > 0 */
recipinterval31, /* -a < 1/x < -b iff -1/b < x < -1/a provided a,b > 0 */
recipinterval41, /* -a < 1/x � -b iff -1/b � x < -1/a provided a,b > 0 */
recipinterval51, /* -a < 1/x < b iff x < - 1/a or 1/b < x (a,b > 0) */
recipinterval61 /* -a < 1/x � b iff x < -1/a or 1/b � x (a,b > 0) */
},
{ /* recip_ineq2 */
recipineq12, /* 1/x � a iff x<0 or 1/a � x provided a > 0 */
recipineq22, /* a � 1/x iff 0 < x � 1/a provided a > 0 */
recipineq32, /* 1/x � -a iff -1/a � x < 0 provided a > 0 */
recipineq42, /* -a � 1/x iff x � -1/a or 0 < x provided a > 0 */
recipinterval12, /* a � 1/x < b iff 1/b < x � 1/a provided a,b > 0 */
recipinterval22, /* a � 1/x � b iff 1/b � x < 1/a provided a,b > 0 */
recipinterval32, /* -a � 1/x < -b iff -1/b < x � -1/a provided a,b > 0 */
recipinterval42, /* -a � 1/x � -b iff -1/b � x � -1/a provided a,b > 0 */
recipinterval52, /* -a � 1/x < b iff x � - 1/a or 1/b < x (a,b > 0) */
recipinterval62 /* -a � 1/x � b iff x � -1/a or 1/b � x (a,b > 0) */
},
{ /* root_ineq1 */
oddrootineq, /* u < v iff ��u < ��v (n odd) */
rootineq11, /* u�� < a iff |u| < ���a */
rootineq13, /* u�� < a iff -���a < u < ���a */
rootineq12, /* 0 � a < v�� iff ���a < |v| */
rootineq15, /* a < u�� iff u < -���a or ���a < u */
rootinterval1,/* a<u��<b iff -���b<u<-���a or ���a<u<���b */
powerineq14even, /* ���u < v iff 0 � u < v�� */
powerineq14odd, /* ��u < v iff u < v� (n odd or u�0) */
powerineq13, /* a(��u) < v iff a�u < v� provided 0 � a(��u) */
powerineq15, /* u < ��v iff u� < v provided 0 � u */
powerineq16, /* u < v iff u� < v� (n odd, n>0) */
powerineq17, /* u < v iff u� < v� (n > 0 and 0 � u) */
powerrootineq1 /* a < ���u iff 0 � u provided a < 0 */
},
{ /* root_ineq2 */
oddrootineq2, /* u � v iff ��u � ��v (n odd) */
rootineq21, /* u�� � a iff |u| � ���a */
rootineq23, /* u�� � a iff -���a � u � ���a */
rootineq22, /* a � v�� iff ���a � |v| provided a�0 */
rootineq25, /* a � u�� iff u iff -���a or ���a � u */
rootinterval2,/* a�u���b iff -���b�u�-���a or ���a�u�b */
powerineq24even,/* ���u � v iff 0 � u � v�� */
powerineq24odd, /* ��u � v iff u � v� (n odd or u�0) */
powerineq23, /* a(��u) � v iff a�u � v� provided 0 � a(��u) */
powerineq25, /* u � ��v iff u� � v provided 0 � u */
powerineq26, /* u � v iff u� � v� (n odd, n � 0) */
powerineq27, /* u � v iff u� � v� (n > 0 and 0 � u) */
powerrootineq2 /* a � ���u iff 0 � u provided a � 0 */
},
{ /* zero_ineq1 */
droppositive1, /* drop positive factors */
posnum1, /* 0 < a/v iff 0 < v provided a > 0 */
mulineqsqrt1, /* 0 < u/�v => 0 < uv */
mulineqbysquare1, /* 0 < u/v iff 0 < uv */
mulineqsqrt2, /* u/�v < 0 => uv < 0 */
mulineqbysquare2, /* u/v < 0 iff uv < 0 */
normalizelinear1, /* ax � b < 0 iff a(x�b/a) < 0 */
reverselessthan, /* change u < v to v > u */
intervalsneg1, /* (x-a)(x-b)... < 0 iff a<x<b...(where a<b) */
intervalspos1 /* 0 < (x-a)(x-b)... iff x<a or b<x...(where a<b) */
},
{ /* zero_ineq2 */
droppositive2, /* drop positive factors */
posnum2, /* 0 � u/v => 0 � v if u � 0 */
mulineqsqrt3, /* 0 � u/�v => 0 � uv */
mulineqbysquare3, /* 0 � u/v => 0 < uv or u = 0 */
mulineqsqrt4, /* u/�v � 0 => uv � 0 */
mulineqbysquare4, /* u/v � 0 iff uv < 0 or u=0 */
normalizelinear2, /* ax � b � 0 iff a(x�b/a) � 0 */
reversele, /* change u � v to v � u */
intervalsneg2, /* (x-a)(x-b)...� 0 => a�x�b...(where a�b) */
intervalspos2 /* 0�(x-a)(x-b)...iff x�a or b�x...(where a�b) */
},
{ /* square_ineq3 */
sqrtineq11g, /* a > u� iff �a > |u| */
sqrtineq14g, /* a > u� iff -�a < u < �a */
sqrtineq12g, /* v� > a iff |v| > �a provided a�0 */
sqrtineq15g, /* u� > a iff u < -�a or u > �a */
powerineq11g, /* v > �u iff 0 � u < v� */
squareineq1g, /* v>a�u iff 0�a�u<v� provided 0�a */
powerineq12g, /* �v > a iff v > a� provided 0�a */
sqrtineq13g, /* v > u iff �v > �u provided u�0 */
squaretrue1g, /* x^2 > a is true if a < 0 */
squarefalse1g, /* a > x^2 is false if a <= 0 */
sqsqrtineq1rev /* �u > -a iff u � 0 provided a>0 */
},
{ /* square_ineq4 */
sqrtineq21g, /* a � u� iff �a � |u| */
sqrtineq24g, /* a � u� iff -�a � u � �a */
sqrtineq22g, /* v� � a iff |v| � �a provided 0�a */
sqrtineq25g, /* u� � a iff u � -�a or �a � u */
powerineq21g, /* v � �u iff 0 � u � v� */
squareineq2g, /* v � a�u iff 0�a�u�v� provided 0�a */
powerineq22g, /* �v � a iff v � a� provided 0�a */
sqrtineq23g, /* v � u iff �v � �u provided u�0 */
squaretrue2g, /* x^2 � a is true if a � 0 */
squarefalse2g, /* a � x^2 is false if a < 0 */
sqsqrtineq2rev /* �u � -a iff u � 0 provided a�0 */
},
{ /* recip_ineq3 */
recipineq11g, /* a > 1/x iff x<0 or x > 1/a provided a > 0 */
recipineq21g, /* 1/x > a iff 0 < x < 1/a provided a > 0 */
recipineq31g, /* -a > 1/x iff -1/a < x < 0 provided a > 0 */
recipineq41g /* 1/x > -a iff x < -1/a or x > 0 provided a > 0 */
},
{ /* recip_ineq4 */
recipineq12g, /* a � 1/x iff x<0 or x � 1/a provided a > 0 */
recipineq22g, /* 1/x � a iff 0 < x � 1/a provided a > 0 */
recipineq32g, /* -a � 1/x iff -1/a � x < 0 provided a > 0 */
recipineq42g /* 1/x � -a iff x � -1/a or x > 0 provided a > 0 */
},
{ /* root_ineq3 */
oddrootineqg, /* u > v iff ��u > ��v (n odd) */
rootineq11g, /* a > u�� iff ���a > |u| */
rootineq13g, /* a > u�� iff -���a < u < ���a */
rootineq12g, /* u�� > a iff |u| > ���a provided a�0 */
rootineq15g, /* u�� > a iff u < -���a or u > ���a */
powerineq14eveng, /* v > ���u iff 0 � u < v�� */
powerineq14oddg, /* v > ��u iff v�> u (n odd or u�0) */
powerineq13g, /* v > a(��u) iff v� > a�u provided 0 � a(��u) */
powerineq15g, /* ��v > a iff v > a� provided a�0 */
powerineq16g, /* u > v iff u� > v� (n odd, n>0) */
powerineq17g, /* u > v iff u� > v� (n > 0 and 0 � u) */
powerrootineq1rev /* ���u > a iff u � 0 provided a < 0 */
},
{ /* root_ineq4 */
oddrootineq2g, /* u � v iff ��u � ��v (n odd) */
rootineq21g, /* a � u�� iff ���a � |u| */
rootineq23g, /* a � u�� iff -���a � u � ���a */
rootineq22g, /* u�� > a iff |u| > ���a provided a�0 */
rootineq25g, /* u�� � a iff u � -���a or u � ���a */
powerineq24eveng, /* v � ���u iff 0 � u � v�� */
powerineq24oddg, /* v � ��u iff v� � u (n odd or u�0) */
powerineq23g, /* v � a(��u) iff v� � a�u provided 0 � a(��u) */
powerineq25g, /* ��v � a iff a� � v provided a � 0 */
powerineq26g, /* u � v iff u� � v� (n odd, n � 0) */
powerineq27g, /* u � v iff u� � v� (n > 0 and 0 � u) */
powerrootineq2rev /* ���u � a iff u � 0 provided a � 0 */
},
{ /* zero_ineq3 */
posnum1g, /* u/v > 0 iff v > 0 provided u > 0 */
mulineqsqrt1g, /* change u/�v > 0 to uv > 0 */
mulineqbysquare1g, /* u/v > 0 iff uv > 0 */
mulineqsqrt2g, /* change 0 > u/�v to 0 > uv */
mulineqbysquare2g, /* 0 > u/v iff 0 > uv */
normalizelinear1g, /* 0 > ax � b iff 0 > a(x�b/a) */
intervalsneg1g, /* 0 > (x-a)(x-b) iff a<x<b (where a<b) */
intervalspos1g /* (x-a)(x-b) > 0 iff x<a or x>b (where a<b) */
},
{ /* zero_ineq4 */
posnum2g, /* u/v � 0 iff v � 0 provided u � 0 */
mulineqsqrt3g, /* u/�v � 0 iff uv � 0 */
mulineqbysquare3g, /* u/v � 0 iff uv > 0 or u = 0 */
mulineqsqrt4g, /* 0 � u/�v iff 0 � uv */
mulineqbysquare4g, /* 0 � u/v iff 0 > uv or u = 0 */
normalizelinear2g, /* 0 � ax � b iff 0 � a(x�b/a) */
intervalsneg2g, /* 0 � (x-a)(x-b) iff a�x�b (where a�b) */
intervalspos2g /* (x-a)(x-b)�0 iff x�a or b�x (where a�b) */
},
{ /* binomial_theorem */
plainbinomialtheorem, /* expand by binomial theorem */
binomialtheorem,
binomialcoeftofactorials, /* (n k) = n!/((n-k)!k!) */
defnoffactorial, /* n! = n(n-1)(n-2)...1 */
evaluatefactorial,
arithmetic,
evaluatebinomialcoef,
sigmatosum, /* expand � notation */
evaluatesigmatorational,
factorialrecursion, /* n! = n (n-1)! */
cancelfactorial1, /* n!/n = (n-1)! */
cancelfactorial2, /* n!/(n-1)! = n */
cancelfactorial3, /* n!/k! = n(n-1)...(n-k+1) */
cancelfactorial1b, /* n/n! = 1/(n-1)! */
cancelfactorial2b, /* (n-1)!/n! = 1/n */
cancelfactorial3b /* k!/n! =1/(n(n-1)...(n-k+1)) */
},
{ /* factor_expansion */
factorcubeofsum,
factorcubeofdif,
factor4thofsum,
factor4thofdif,
factornthofsum, /* a^n+na^(n-1)b+...b^n = (a+b)^n */
factornthofdif
},
{ /* sigma_notation */
sigmaconstant, /* � 1=number of terms */
minusoutofsigma, /* � -u = -� u */
constantoutofsigma, /* � cu = c� u (c const) */
sigmasum, /* �(u+v) = �u + �v */
sigmasum, /* �(u-v) = �u - �v */
sigmatosum, /* expand � using + */
sumofi, /* 1+2+..+n = n(n+1)/2 */
sumofisquared, /* 1�+..+n� = (2n+1)(n+1)n/6 */
sumofallpowers, /* 1+x+..+x�=(1-x^(n+1))/(1-x) */
showfirstterms, /* show first few terms */
evaluatesigmatorational,/* evaluate sum for specified value of free var */
evaluatesigmatodecimal, /* evaluate sum for specified value of free var */
evalpuresigmatorational,/* evaluate sum with no free variables */
evalpuresigmatodecimal, /* evaluate sum with no free variables */
sigmapoly, /* express summand as polynomial */
telescopingsum
},
{ /* advanced_sigma_notation */
shiftindex,
renameindexvariable,
productofsigmas, /* (�u)(�v) = � � uv */
splitofflastterm,
sumoficubed,
sumofitothefourth,
difsigma, /* d/dx �u = � du/dx */
reversedifsigma, /* � du/dx = d/dx �u */
intsigma, /* � �u dx = � �u dx */
reverseintsigma, /* � �u dx = � �u dx */
constantintosigma, /*c� u = � cu(c const) */
sumtodifofsums0, /* sigma(t,i,a,b)=sigma(t,i,0,b)-sigma(t,i,0,a-1)$$ */
sumtodifofsums, /* sigma(t,i,a,b)=sigma(t,i,c,b)-sigma(t,i,c,a-1)$$ */
},
{ /* prove by induction */
selectinductionvariable,
basiscase,
inductionstep,
useinductionhyp,
thereforeasdesired
},
{ /* trig_ineq */
abssinineq, /* |sin u| � 1 */
abscosineq, /* |cos u| � 1 */
sinineq, /* sin u � u if u�0 */
coslowerbound, /* 1 - u�/2 � cos u */
absarctanineq, /* |arctan u| � �/2 */
arctanineq, /* arctan u � u if u�0 */
tanineq /* tan u � u if u�0 */
},
{ /* log_ineq1 */
lnineq1, /* u < v iff ln u < ln v provided u>0 */
logineq1, /* u < v iff log u < log v provided u>0 */
lnrightineq1, /* u < ln v iff e^u < v */
lnleftineq1, /* ln u < v iff u < e^v */
logrightineq1,/* u < log v iff 10^u < v */
logleftineq1, /* log u < v iff u < 10^v */
expineq1 /* u < v iff a^u < a^v if a > 0, takes arg in menu mode */
},
{ /* log_ineq2 */
lnineq2, /* u � v => ln u � ln v provided u>0 */
logineq2, /* u � v => log u � log v provided u>0 */
lnrightineq2, /* u � ln v iff e^u � v */
lnleftineq2, /* ln u � v iff u � e^v */
logrightineq2,/* u � log v iff 10^u � v */
logleftineq2, /* log u � v iff u � 10^v */
expineq2 /* u � v iff a^u � a^v if a > 0, takes arg in menu mode */
},
{ /* log_ineq3 */
lnineq1g, /* u > v iff ln u > ln v provided v>0 */
logineq1g, /* u > v iff log u > log v provided v>0 */
lnrightineq1g, /* ln u > v iff u > e^v */
lnleftineq1g, /* u > ln v iff e^u > v */
logrightineq1g,/* log u > v iff u > 10^v */
logleftineq1g, /* u > log v iff 10^u > v */
expineq1g /* u > v iff a^u > a^v if a > 0, takes arg in menu mode */
},
{ /* log_ineq4 */
lnineq2g, /* u � v iff ln u � ln v provided u>0 */
logineq2g, /* u � v => log u � log v provided u>0 */
lnrightineq2g, /* ln u � v iff u � e^v */
lnleftineq2g, /* u � ln v iff e^u � v */
logrightineq2g,/* log u � v iff u � 10^v */
logleftineq2g, /* u � log v iff 10^u � v */
expineq2g /* u � v iff a^u � a^v if a > 0, takes arg in menu mode */
},
{ /*logarithms_base10 */
loginexponent, /* 10^log a = a */
logofpowerof10, /* log 10� = n */
logofone, /* log 1 = 0 */
logoften, /* log 10 = 1 */
logtoln, /* log a = (ln a) / log e */
introduceloginexponent, /* u^v = 10^(v log u) */
factornumberinlog,
factoroutbase10, /* factor out powers of 10 */
loginexponent2, /* 10^(n log a) = a^n */
logrecip, /* log(a/b) = -log(b/a) */
logbrecip /* log(b,a/c) = -log(b,c/a) */
},
{ /* logarithms */
logofpower, /* log a� = n log a */
logofproduct, /* log(ab) = log a + log b */
logofreciprocal, /* log(1/a) = - log a */
logofquotient, /* log(a/b) = log a - log b */
collectlogs, /* log a + log b = log ab */
collectlogs2, /* log a - log b = log a/b */
collectlogs2, /* log a + log b - log c =log ab/c */
attractlogs, /* n log a = log a� */
logsqrt, /* log �a = � log a */
logroot, /* log ��a = (1/n) log a */
logofone, /* log 1 = 0 */
factornumberinlog,
factoroutbase,
logofpowerreverse, /* log u = (1/a) log u^a */
computelog, /* evaluate logs numerically */
logtoln
},
{ /* logarithms_base_e */
lninexponent, /* e^ln a = a */
lnofe, /* ln e = 1 */
lnofone, /* ln 1 = 0 */
lnofpowerofe, /* ln e� = n */
introducelninexponent, /* u^v = e^(v ln u) */
lninexponent2 /* e^((ln c) a) = c^a */
},
{ /* natural_logarithms */ /* menu 70 */
lnofpower, /* ln a� = n ln a */
lnofproduct, /* ln ab = ln a + ln b */
lnofreciprocal, /* ln 1/a = -ln a */
lnofquotient, /* ln a/b = ln a - ln b */
lnofone, /* ln 1 = 0 */
factornumberinlog, /* factor number completely */
collectlns, /* ln a + ln b = ln ab */
collectlns2, /* ln a - ln b = ln a/b */
collectlns2, /* ln a + ln b - ln c = ln (ab/c) */
attractlns, /* n ln a = ln a� */
lnsqrt, /* ln �a = � ln a */
lnroot, /* ln ��a = (1/n) ln a */
lnofpowerreverse, /* ln u = (1/a) ln u^a */
computeln, /* evaluate numerically */
lnrecip /* ln(a/b) = -ln(b/a) */
},
{ /* reverse_trig */
sinsumrev, /* sin u cos v + cos u sin v = sin(u+v) */
sindifrev, /* sin u cos v - cos u sin v = sin(u-v) */
cossumrev, /* cos u cos v - sin u sin v = cos(u+v) */
cosdifrev, /* cos u cos v + sin u sin v = cos(u-v) */
tanhalf1rev, /* (sin �)/(1+cos �) = tan(�/2) */
tanhalf2rev, /* (1-cos �)/sin � = tan(�/2) */
cothalf1rev, /* (1+cos �)/(sin �) = cot(�/2) */
cothalf2rev, /* sin �/(1-cos �) = cot(�/2) */
tansumrev, /* (tan u+tan v)/(1-tan u tan v) = tan(u+v) */
tandifrev, /* (tan u-tan v)/(1+tan u tan v) = tan(u-v) */
cotsumrev, /* (cot u cot v-1)/(cot u+cot v) = cot(u+v) */
cotdifrev, /* (1+cot u cot v)/(cot v-cot u) = cot(u-v) */
reversesinsq /* (1-cos �) = 2 sin� �/2 */
},
{ /* complex_polar_form */
rectangulartopolar, /* x + iy = r exp(i�) */
polartorectangular, /* r e^(i�) = r (cos � + i sin �) */
absofpolar, /* |e^(i�)| = 1 */
absofpolar, /* |Re^(i�)|=R if R�0 */
absofpolar, /* |Re^(i�)| = |R| */
minustopolar, /* -a = ae^(i pi) */
complexrootminus, /* ��(-a) = e^(� i/n) ��a if a�0 */
complexexptonum, /* a/(be^(ci)) = ae^(-ci)/b */
demoivre, /* de Moivre's theorem */
explicitparams /* substitute specific integers */
},
{ /* logs_to_any_base */
logbinexponent, /* b^(log(b,a)) = a */
logbinexponent2, /* b^(n log(b,a)) = a^n */
logbofb, /* log(b,b) = 1 */
logbofpowerofb, /* logb b� = n */
logbofproduct, /* log xy = log x + log y */
logbofreciprocal, /* log (1/x) = -log x */
logbofquotient, /* log x/y = log x-log y */
logbofone, /* log(b,1) = 0 */
factorlogbase, /* factor base: log(4,x)=log(2�,x) */
logpowerofbofb, /* logb(b�,x) = 1/n log(b,x)*/
logbofpower, /* logb a� = n logb a */
factoroutbase, /* factor out powers of base */
collectlogb, /* log a + log b = log ab */
collectlogb2, /* log a - log b = log a/b */
collectlogb2, /* log x + log y - log z =log xy/z */
attractlogb2 /* n log(b,x) = log(b,a�) */
},
{ /* change_base */
logbtolns, /* log(b,x) = ln x / ln b */
logbtologs, /* log(b,x) = log x/log b */
changebase, /* log(b,x) = log(a,x) / log(a,b) (takes a as arg) */
logpowerofbofb, /* log(b�,x) = (1/n) log (b,x) */
logbtolog, /* log(10,x) = log x*/
logbtoln, /* log(e,x) = ln x */
logtoln, /* log x = ln x / ln 10 */
lntolog, /* ln x = log x / log e */
introducelogbinexponent /* u^v = b^(v log(b,u)) */
},
{ /* evaluate_trig_function */
sin0, /* sin 0 = 0 */
cos0, /* cos 0 = 1 */
tan0, /* tan 0 = 0 */
zeroesofsin, /* sin k� = 0 */
onesofcos, /* cos 2k� = 1 */
zeroesoftan, /* tan k� = 0 */
mod360, /* find coterminal angle < 360� */
mod2pi, /* find coterminal angle < 2� */
sin90, /* angle is multiple of 90� */
sin30, /* use 1-2-�3 triangle */
sin45, /* use 1-1-�2 triangle */
radtodeg, /* change radians to degrees */
degtorad, /* change degrees to radians */
combine3045, /* angle = a 30� + b 45� etc. */
computefunction /* evaluate numerically */
},
{ /* basic_trig */
tanrule, /* tan u = sin u / cos u */
cottotan, /* cot u = 1 / tan u */
cottosincos, /* cot u = cos u / sin u */
secrule, /* sec u = 1 / cos u */
cscrule, /* csc u = 1 / sin u */
tanrule2, /* sin u / cos u = tan u */
cotrule2 /* cos u / sin u = cot u */
},
{ /* trig_reciprocals */
cscrule2, /* 1 / sin u = csc u */
secrule2, /* 1 / cos u = sec u */
tanrecip, /* 1 / tan u = cot u */
tanrecip2, /* 1 / tan u = cos u / sin u */
cotrecip, /* 1 / cot u = tan u */
cotrecip2, /* 1 / cot u = sin u / cos u */
secrecip, /* 1 / sec u = cos u */
cscrecip, /* 1 / csc u = sin u */
sintocsc, /* sin u = 1 / csc u */
costosec, /* cos u = 1 / sec u */
tantodenom, /* tan u = 1 / cot u */
},
{ /* trig_squares */
sinsquare1, /* sin� u + cos� u = 1 */
sinsquare2, /* 1 - sin� u = cos� u */
sinsquare3, /* 1 - cos� u = sin� u */
sinsqtocossq, /* sin� u = 1 - cos� u */
cossqtosinsq, /* cos� u = 1 - sin� u */
secsqminustansq, /* sec� u - tan� u = 1 */
tansquare1, /* tan� u + 1 = sec� u */
tansquare2, /* sec� u - 1 = tan� u */
secsqtotansq, /* sec� u = tan� u + 1 */
tansqtosecsq, /* tan� u = sec� u - 1 */
sinoddpower, /* sin^(2n+1) u = sin u (1-cos� u)� */
cosoddpower, /* cos^(2n+1) u = cos u (1-sin� u)� */
tanoddpower, /* tan^(2n+1) u = tan u (sec^2 u-1)^n */
secoddpower, /* sec^(2n+1) u = sec u (tan^2 u+1)^n */
makesinpower, /* (1-cos t)^n(1+cos t)^n = sin^(2n) t */
makecospower, /* (1-sin t)^n(1+sin t)^n = cos^(2n) t */
},
{ /* csc_and_cot_identities */
cscsqminuscotsq, /* csc� u - cot� u = 1 */
cotsquare1, /* cot� u + 1 = csc� u */
cotsquare2, /* csc� u - 1 = cot� u */
cscsqtocotsq, /* csc� u = cot� u + 1 */
cotsqtocscsq, /* cot� u = csc� u - 1 */
csccomplement, /* csc(�/2-�) = sec � */
cotcomplement, /* cot(�/2-�) = tan � */
cotoddpower, /* cot^(2n+1) u = cot u (csc^2 u-1)^n */
cscoddpower /* csc^(2n+1) u = csc u (cot^2 u+1)^n */
},
{ /* trig_sum */
sinsum, /* sin(u+v)= sin u cos v + cos u sin v */
sindif, /* sin(u-v)= sin u cos v - cos u sin v */
cossum, /* cos(u+v)= cos u cos v - sin u sin v */
cosdif, /* cos(u-v)= cos u cos v + sin u sin v */
tansum, /* tan(u+v)=(tan u+tan v)/(1-tan u tan v) */
tandif, /* tan(u-v)=(tan u-tan v)/(1+tan u tan v) */
cotsum, /* cot(u+v)=(cot u cot v-1)/(cot u+cot v) */
cotdif /* cot(u-v)=(1+cot u cot v)/(cot v-cot u) */
},
{ /* double_angle */
doublesin, /* sin(2�) = 2 sin � cos � */
doublecos1, /* cos(2�) = cos� � - sin� � */
doublecos2, /* cos(2�) = 1 - 2 sin� � */
doublecos3, /* cos(2�) = 2 cos� � - 1 */
doublecos5, /* cos 2� + 1 = 2cos� � */
doublecos6, /* cos 2� - 1 = - 2 sin� � */
doubletan, /* tan(2�) = 2 tan �/(1 - tan� �) */
doublecot, /* cot(2�) = (cot� � -1) / (2 cot �) */
reversedoublesin, /* sin � cos � = � sin 2� */
reversedoublesin2, /* 2 sin� cos � = sin 2� */
reversedoublecos1, /* cos� � - sin� � = cos(2�) */
reversedoublecos2, /* 1 - 2 sin� � = cos(2�) */
reversedoublecos3 /* 2 cos� � - 1 = cos(2�) */
},
{ /* multiple_angles */
decrementtrigarg, /* n� = (n-1)� + � */
querytrigarg, /* n� = ?�+(n-?)� */
triplesin, /* sin 3� = 3 sin � - 4 sin^3 � */
triplecos, /* cos 3� = -3 cos � + 4 cos^3 � */
expandsin, /* expand sin n� in sin �, cos � */
expandcos /* expand cos n� in sin �, cos � */
},
{ /* verify_identities */
crossmultiply,
switchsides,
transfer1,
transfer2,
addeqn,
subeqn,
muleqn,
cancelterm,
powereqn,
sqrteqn,
rooteqn,
functioneqn,
arithmetic,
checknumerically,
makesubstitution
},
{ /* solve_by_30_60_90 */
solvesin30, /* sin(u)=1/2 iff u=�/6 or 5�/6+2n� */
solvesin330, /* sin(u)=-1/2 iff u=-�/6 or -5�/6+2n� */
solvesin60, /* sin(u)=�3/2 iff u=�/3 or 2�/3+2n� */
solvesin300, /* sin(u)=-�3/2 iff u=-�/3 or -2�/3+2n� */
solvecos30, /* cos(u)=�3/2 iff u=��/6 + 2n� */
solvecos150, /* cos(u)=-�3/2 iff u=�5�/6 + 2n� */
solvecos60, /* cos(u)=1/2 iff u=��/3+2n� */
solvecos120, /* cos(u)=-1/2 iff u=� 2�/3+2n� */
solvetan30, /* tan(u)=1/�3 iff u = �/6 + n� */
solvetan330, /* tan(u)=-1/�3 iff u = -�/6 + n� */
solvetan60, /* tan(u)=�3 iff u = �/3 + n� */
solvetan120 /* tan(u)=-�3 iff u = 2�/3 + n� */
},
{ /* solve_by_45_45_90 */
solvesin45, /* sin u = 1/�2 if u=�/4 or 3�/4 + 2n� */
solvesin315, /* sin u=-1/�2 if u=5�/4 or 7�/4 + 2n� */
solvecos45, /* cos u = 1/�2 if u=�/4 or 7�/4 + 2n� */
solvecos135, /* cos u=-1/�2 if u=3�/4 or 5�/4 + 2n� */
solvetan45, /* tan u = 1 if u= �/4 or 5�/4 + 2n� */
solvetan135 /* tan u = -1 if u=3�/4 or 7�/4 + 2n� */
},
{ /* zeroes_of_trig_functions */
solvesin0, /* sin u = 0 iff u = n� */
solvesin90, /* sin u = 1 iff u = �/2+2n� */
solvesin270, /* sin u = -1 iff u = 3�/2+2n� */
solvecos90, /* cos u = 0 iff u = (2n+1)�/2 */
solvecos0, /* cos u = 1 iff u = 2n� */
solvecos180, /* cos u = -1 iff u = (2n+1)� */
solvetan0, /* tan u = 0 iff sin u = 0 */
solvecot90 /* cot u = 0 iff cos u = 0 */
},
{ /* inverse_trig_functions */
solvesin, /* sin u=c iff u= (-1)�arcsin c+n� */
solvesin2, /* sin u=c iff u=arcsin(c)+2n� or -arcsin(c)+(2n+1)�" /* 1656 */
solvecos, /* cos u=c iff u=�arccos c+2n� */
solvetan, /* tan u=c iff u=arctan c+n� (c not � i) */
evalarcsin, /* evaluate arcsin exactly */
evalarccos, /* evaluate arccos exactly */
evalarctan, /* evaluate arctan exactly */
evalarccot, /* arccot x = arctan (1/x) */
evalarcsec, /* arcsec x = arccos (1/x) */
evalarccsc, /* arccsc x = arcsin (1/x) */
arcsinodd, /* arcsin(-x) = -arcsin x */
arccosodd, /* arccos(-x) = �-arccos x */
arctanodd, /* arctan(-x) = -arctan x */
periodicform, /* Put solutions in periodic form */
rejectimpossiblesin, /* reject sin u = c if |c|>1 */
rejectimpossiblecos /* reject cos u = c if |c|>1 */
},
{ /* invsimp */
tanasin, /* tan(arcsin x) = x/�(1-x�) */
tanacos, /* tan(arccos x) = �(1-x�)/x */
tanatan, /* tan(arctan x) = x */
sinasin, /* sin(arcsin x) = x */
sinacos, /* sin(arccos x) = �(1-x�) */
sinatan, /* sin(arctan x) = x/�(x�+1) */
cosasin, /* cos(arcsin x) = �(1-x�) */
cosacos, /* cos(arccos x) = x */
cosatan, /* cos(arctan x) = 1/�(x�+1) */
secasin, /* sec(arcsin x) = 1/�(1-x�) */
secacos, /* sec(arccos x) = 1/x */
secatan, /* sec(arctan x) = �(x�+1) */
atantan, /* arctan(tan �) = � if -�/2����/2 */
asinsin, /* arcsin(sin �) = � if -�/2����/2 */
acoscos, /* arccos(cos �) = � if 0���� */
atantan2 /* arctan(tan x) = x + c1 */
},
{ /* adding_arctrig_functions */
sumofarcsin, /* arcsin x + arccos x = �/2 */
sumofarctan /* arctan x + arctan 1/x = �x/2|x| */
},
{ /* complementary_trig */
sintocos, /* sin(�/2-�) = cos � */
costosin, /* cos(�/2-�) = sin � */
tantocot, /* tan(�/2-�) = cot � */
cotcomplement, /* cot(�/2-�) = tan � */
seccomplement, /* sec(�/2-�) = csc � */
csccomplement, /* csc(�/2-�) = sec � */
sintocos2, /* sin � = cos(�/2-�) */
costosin2, /* cos � = sin(�/2-�) */
tantocot2, /* tan � = cot(�/2-�) */
cottotan2, /* cot � = tan(�/2-�) */
sectocsc2, /* sec � = csc(�/2-�) */
csctosec2 /* csc � = sec(�/2-�) */
},
{ /* complementary_degrees */
sintocosdeg, /* sin(90�-�) = cos � */
costosindeg, /* cos(90�-�) = sin � */
tantocotdeg, /* tan(90�-�) = cot � */
cotcomplementdeg, /* cot(90�-�) = tan � */
seccomplementdeg, /* sec(90�-�) = csc � */
csccomplementdeg, /* csc(90�-�) = sec � */
sintocos2deg, /* sin � = cos(90�-�) */
costosin2deg, /* cos � = sin(90�-�) */
tantocot2deg, /* tan � = cot(90�-�) */
cottotan2deg, /* cot � = tan(90�-�) */
sectocsc2deg, /* sec � = csc(90�-�) */
csctosec2deg, /* csc � = sec(90�-�) */
adddegrees, /* a� + b� = (a+b)� */
multdegrees, /* ca� = (ca)� */
divdegrees /* a�/c = (a/c)� */
},
{ /* trig_odd_and_even */
sinodd, /* sin(-u) = - sin u */
coseven, /* cos(-u) = cos u */
tanodd, /* tan(-u) = - tan u */
cotodd, /* cot(-u) = - cot u */
seceven, /* sec(-u) = sec u */
cscodd, /* csc(-u) = - csc u */
sinsqeven, /* sin�(-u) = sin� u */
cossqeven, /* cos�(-u) = cos� u */
tansqeven, /* tan�(-u) = tan� u */
cotsqeven, /* cot�(-u) = cot� u */
secsqeven, /* sec�(-u) = sec� u */
cscsqeven /* csc�(-u) = csc� u */
},
{ /* trig_periodic */
sinperiodic, /* sin(u+2�) = sin u */
cosperiodic, /* cos(u+2�) = cos u */
tanperiodic, /* tan(u+�) = tan u */
secperiodic, /* sec(u+2�) = sec u */
cscperiodic, /* csc(u+2�) = csc u */
cotperiodic, /* cot(u+�) = cot u */
sinsqperiodic, /* sin�(u+�) = sin� u */
cossqperiodic, /* cos�(u+�) = cos� u */
secsqperiodic, /* sec�(u+�) = sec� u */
cscsqperiodic, /* csc�(u+�) = csc� u */
sinhalfperiod1, /* sin u = -sin(u-�) */
sinhalfperiod2, /* sin u = sin(�-u) */
coshalfperiod1, /* cos u = -cos(u-�) */
coshalfperiod2 /* cos u = -cos(�-u) */
},
{ /* half_angle_identities */
sinsqhalf, /* sin�(�/2) = (1-cos �)/2 */
cossqhalf, /* cos�(�/2) = (1+cos �)/2 */
sinsqhalf2, /* sin�(�) = (1-cos 2�)/2 */
cossqhalf2, /* cos�(�) = (1+cos 2�)/2 */
sincossame, /* sin � cos � = � sin 2� */
tanhalf1, /* tan(�/2) = (sin �)/(1+cos �) */
tanhalf2, /* tan(�/2) = (1-cos �)/sin � */
cothalf1, /* cot(�/2) = (1+cos �)/(sin �) */
cothalf2, /* cot(�/2) = sin �/(1-cos �) */
sinhalf1, /* sin(�/2) = �((1-cos �)/2) */
sinhalf2, /* sin(�/2) = -�((1-cos �)/2) */
coshalf1, /* cos(�/2) = �((1+cos �)/2) */
coshalf2, /* cos(�/2) = -�((1+cos �)/2) */
twicehalf /* � = 2(�/2) */
},
{ /* product_and_factor_identities */
reversedoublesin, /* sin x cos x = �sin 2x */
sincos, /* sin x cos y = �[sin(x+y)+sin(x-y)] */
cossin, /* cos x sin y = �[sin(x+y)-sin(x-y)] */
sinsin, /* sin x sin y = �[cos(x-y)-cos(x+y)] */
coscos, /* cos x cos y = �[cos(x+y)+cos(x-y)] */
sumofsin, /* sin x + sin y = 2 sin �(x+y) cos �(x-y) */
difofsin, /* sin x - sin y = 2 sin �(x-y) cos �(x+y) */
sumofcos, /* cos x + cos y = 2 cos �(x+y) cos �(x-y) */
difofcos, /* cos x - cos y = -2 sin �(x+y) sin �(x-y) */
trigdoublesub /* substitute u,v for expressions in trig functions */
},
{ /* limits */
testlimit, /* experiment numerically */
limsum, /* lim u+v = lim u + lim v */
limdif, /* lim u-v = lim u - lim v */
limconst, /* lim(t\32a,c) = c (c constant) */
limident, /* lim(t\32a,t) = a */
limlinear, /* lim cu=c lim u (c const) */
limminus, /* lim -u = -lim u */
limprod,
limpower, /* lim u� = (lim u)� */
limexponent2, /* lim c^v=c^(lim v) (c constant > 0) */
limexponent, /* lim u^v=(lim u)^(lim v) */
limsqrt, /* lim �u=�(lim u) if lim u>0 */
limoddroot, /* lim ��u = ��(lim u) if n is odd */
limevenroot, /* lim ��u = ��(lim u) if lim u > 0 */
limpoly,
limabs /* lim |u| = |lim u| */
},
{ /* limits_of_quotients */
limlinear, /* lim cu/v = c lim u/v (c const) */
limrecip, /* lim c/v = c/lim v (c const) */
limquotient, /* lim u/v = lim u/lim v */
factorunderlimit, /* factor out (x-a)� in limit as x\32a */
limrationalfunction, /* limit of rational function */
quotientofpowers, /* a�/b� = (a/b)� */
rationalizefraction,
pulloutnonzerolimit,
factoroutconstant,
multnumdenom, /* mult num and denom by something */
divnumdenom2, /* divide num and denom by something */
divnumdenom, /* lim u/v = lim (u/w) / lim (v/w) */
limapartandfactor /* (ab+ac+d)/q = a(b+c)/q + d/q */
/* example : (sin x cos h + cos x sin h - sin x)/h */
},
{ /* quotients_of_roots */
limsqrt1, /* �a/b = �(a/b�) if b>0 */
limsqrt2, /* �a/b = -�(a/b�) if b<0 */
limroot1, /* ��a/b = ��(a/b�) (b>0 or n odd) */
limroot2, /* ��a/b = -��(a/b�) (b<0, n even) */
limsqrtdenom1, /* a/�b = �(a�/b) if a�0 */
limsqrtdenom2, /* a/�b = -�(a�/b) if a�0 */
limrootdenom1, /* a/��b = ��(a�/b) (a�0 or n odd) */
limrootdenom2 /* a/��b = -��(a�/b) (a�0, n even) */
},
{ /* lhopitalmenu */
lhopital,
derivop,
isolateln,
isolatelnpower,
negexptodenom,
exptodenom,
trigtodenom,
createcompoundfraction,
commondenomandsimp
},
{ /* special_limits */ /* menu 100 */
limsin1, /* (sin t)/t */
limtan1, /* (tan t)/t */
limcos1, /* (1-cos t)/t */
limcos2, /* (1-cos t)/t� */
defnofe, /* (1+t)^(1/t) */
limln1, /* lim(x->0, ln(1�x)/x) = �1 */
limexp1, /* lim(x->0, (e^x-1)/x = 1 */
limexp2, /* lim(x->0, (e^(-x)-1)/x = -1 */
limpowertimeslnabs, /* lim(t->0,t�ln |t|)=0 (n > 0) */
limosccos, /* lim(x->0, cos(1/x) = undefined */
limoscsin, /* lim(x->0, sin(1/x) = undefined */
limosctan, /* lim(x->0, tan(1/x) = undefined */
liminfcos, /* lim(x->�, cos(x) = undefined */
liminfsin, /* lim(x->�, sin(x) = undefined */
liminftan /* lim(x->�, tan(x) = undefined */
},
{ /* hyper_limits */
limsinh1, /* (sinh t)/t */
limtanh1, /* (tanh t)/t */
limcosh1, /* (1-cosh t)/t */
limcosh2, /* (1-cosh t)/t� */
},
{ /* advanced_limits */
limlogisloglim, /* lim ln u=ln lim u (if lim u > 0) */
limcontinuous, /* lim f(u)=f(lim u), f continuous */
changelimitvariable, /* lim(t\32a,f(g(t)))=lim(u\32g(a),f(u)) */
limvalop, /* evaluate limit in one step */
limexptolog, /* lim u^v = lim e^(v ln u) */
createcompoundfraction, /* lim uv = lim v/(1/u) */
limundefined, /* limit undefined due to domain */
limlog, /* lim u = e^(lim ln u) */
squeezetheorem, /* squeeze theorem */
rationalizesum, /* lim �u-v=lim (�u-v)(�u+v)/�u+v) */
limleadingterms, /* lim u/v = limit of leading terms */
limleadingterm, /* leading term: lim(u+a)=lim(u) if a->0 */
sumleadingterm, /* replace sum by leading term */
undefinedpart, /* f(undefined) = undefined */
limthruexp, /* lim(e^u) = e^(lim u) */
limthrulog /* lim(ln u) = ln(lim u) */
},
{ /* logarithmic_limits */
limtlnt, /* lim(t\32 0,t ln t) = 0 */
limtpowerlnt, /* lim(t\32 0,t^n ln t) = 0$ if n�1 */
limtlntpower, /* lim(t\32 0,t (ln t)^n = 0$ if n�1 */
limtpowerlntpower, /* lim(t\32 0,t^k (ln t)^n = 0$ if k,n�1 */
limlntovert, /* lim(t\32�,ln(t)/t = 0 */
limlntpowerovert, /* lim(t\32�,ln(t)^n/t = 0 if n�1 */
limlntovertpower, /* lim(t\32�,ln(t)/t^n = 0 if n�1 */
limlntpowerovertpower, /* lim(t\32�,ln(t)^k/t^n = 0 if k,n�1 */
limtoverlnt, /* lim(t\32�,t/ln(t) = � */
limtoverlntpower, /* lim(t\32�,t/ln(t)^n = � if n�1 */
limtpoweroverlnt, /* lim(t\32�,t^n/ln(t) = � if n�1 */
limtpoweroverlntpower /* lim(t\32�,t^n/ln(t)^k = � if k,n�1 */
},
{ /* limits_at_infinity */
inflimpower1, /* 1/t^n */
inflimpower2, /* t^n */
limexpinf, /* e^t */
limexpinf2, /* e^t at minus infinity */
limlnright, /* ln */
limsqrtinf,
limrootinf,
limarctaninf, /* arctan */
limarccotinf, /* arccot at infinity */
limarccotinf2, /* arccot at minus infinity */
limtanhinf, /* tanh */
rationalizesum,
limthrusin, /* lim sin u = sin(lim u) */
limthrucos, /* lim cos u = cos(lim u) */
invertlim,
limleadingterms
},
{liminverseevenpower, /* infinite_limits */
liminverseoddpower,
lim1inverseright,
lim1inverseleft,
limquoinfinite,
limlnsing,
limtansing,
limcotsing,
limsecsing,
limcscsing,
limprod2left, /* lim(uv) = lim(u/?) lim(?v) */
limprod2right /* lim(uv) = lim(?u) lim(v/?) */
},
{ /* infinities */
infinityovernonzero, /* ��/positive = �� */
nonzerooverinfinity, /* nonzero/�� = 0 */
timesinfinity, /* positive��� = �� */
infinitytimesinfinity, /* ��� = �� */
addinfinity, /* �� + finite = �� */
infinityplusinfinity, /* � + � = � */
toinfinity1, /* u^� = � if u > 1 */
toinfinity0, /* u^� = 0 if 0 < u < 1 */
tominusinfinity1, /* u^(-�) = 0 if u > 1 */
tominusinfinity0, /* u^(-�) = � if 0 < u < 1 */
powerofinfinity, /* � = � if n > 0 */
infinityminusinfinity /* �-� = undefined */
},
{ /* zero_denom */
zerodenom, /* a/0+ = � if a>0 */
zerodenom2, /* a/0- = -� if a>0 */
zerodenom3, /* a/0 = undefined */
infinityoverzero, /* �/0+ = � */
infinityoverzero2, /* �/0- = -� */
infinityoverzero3, /* �/0 = undefined */
infinityoverzerosq, /* �/0� = � */
infinityoverzero2n, /* �/0�� = � */
zerosqdenom, /* a/0� = � if a > 0 */
zerosqdenom2, /* a/0� = -� if a < 0 */
zero2ndenom, /* a/0�� = � if a > 0 */
zero2ndenom2 /* a/0�� = -� if a < 0 */
},
{ /* more_infinities */
lninfinity,
sqrtinfinity,
rootinfinity,
ataninfinity,
acotinfinity,
acotminusinfinity,
asecinfinity,
acscinfinity,
triginfinity,
coshinfinity,
sinhinfinity,
tanhinfinity,
lnzero
},
{ /* polynomial_derivs */
difconstant,
difidentity,
difsum,
difminus,
diflinear,
difpower,
difpoly,
primerule
},
{ /* derivatives */
defnofderivative,
difpoly,
difsum,
difminus,
diflinear,
diflinear2,
difpower,
difproduct,
difrecip,
difquotient,
difsqrt,
difroots,
difinversepower,
difabs,
primerule
},
{ /* diftrig */
difsin,
difcos,
diftan,
difsec,
difcot,
difcsc
},
{ /* dif_explog */
difexp, /* d/dx e^x = e^x */
difatox, /* d/dx c^x = (ln c) c^x, c const */
difexponential, /* d/dx u^v= (d/dx) e^(v ln u) */
difln, /* d/dx ln x = 1/x */
diflnabs, /* d/dx ln |x| = 1/x */
logdif, /* dy/dx = y (d/dx) ln y */
difexp2,
difatox2,
difln2,
diflnabs2,
diflncos, /* d/dx ln(cos x) = -tan x */
diflnsin /* d/dx ln(sin x) = cot x */
},
{ /* dif_inversetrig */
difatan,
difasin,
difacos,
difacot,
difasec,
difacsc,
difatan2,
difasin2,
difacos2,
difacot2,
difasec2,
difacsc
},
{ /* chain_rule */
difpower2,
difsqrt2,
difsin2,
difcos2,
diftan2,
difsec2,
difcot2,
difcsc2,
difabs2,
chainrule, /* d/dx f(u) = f'(u) du/dx */
makesubstitution,
unwinddefinition
},
{ /* minima_and maxima */
/* Code in minmax.c depends heavily on exact numbers of these choices. */
/* if you change them, change the file mpminmax.h to correspond. */
minmaxexperiment,
addcriticalpoints,
addendpoints,
addundefinedpoints,
addlimits,
rejectpoint,
tabulate,
tabulateexact,
selectmax,
selectmin,
derivop,
ssolveop,
limvalop,
eliminateparameter,
functionisconstant
},
{ /* implicit_diff */
derivop,
polyvalop,
ssolveop
},
{ /* related_rates */
difeqn, /* differentiate the equation */
derivop, /* evaluate derivative in one step */
eliminatederivative, /* eliminate derivative by substitution */
ssolveop /* solve simple equation */
},
{ /* simplify */
polyvalop, /* simplify sums and products */
ratsimpop, /* eliminate compound fractions */
commondenomandsimp, /* common denominator and simplify */
contentfactor, /* factor out common term */
factorop, /* factor out expression (not integer) */
multiplyoutandsimp, /* simpprod.c */
cancelgcd, /* show common factor in u/v */
ssolveop, /* solve simple equation */
writeaspoly, /* write as polynomial in ? */
univariatepoly, /* express as polynomial */
monicpoly, /* make the leading coefficient 1 */
backtosqrts, /* x^(1/2) = �x */
backtoroots, /* change fractional exponents to roots */
eliminatesqrts /* change roots to fractional exponents */
},
{ /* higher_derivatives */
difeqn, /* u=v => du/dx = dv/dx */
difdif, /* d�u/dx� = (d/dx)(du/dx) */
difdifn, /* d�u/dx�= d/dx d^(n-1)/dx^(n-1) */
secondderiv, /* d/dx du/dx = d�u/dx� */
highderiv, /* d/dx d�u/dx� = d^(n+1)/dx^(n+1) */
derivop, /* evaluate derivative in one step */
evalatpoint /* evaluate numerically at a point */
},
{ /* basic_integration */
int1,
intconst,
intident,
intlinear, /* if you change positions of these operators you must */
/* adjust integrationop in execute.c */
intminus,
intsum,
intdif, /* �u-v dt = �u dt - �v dt */
intlinearity, /* �au�bv dt = a�u dt � b�v dt */
intpower, /* �t� dt=t^(n+1)/(n+1) (n # -1) */
intinversepower, /* �1/t^(n+1) dt= -1/(nt�) (n # 0) */
intpoly, /* integrate polynomial */
intrecip, /* �(1/t) dt = ln |t| */
intrecip2, /* �1/(t�a) dt = ln |t�a| */
multiplyoutintegrand, /* multiply out integrand */
expandintegrand, /* expand (a+b)� in integrand */
intabs /* �|t| dt = t|t|/2 */
},
{ /* trig_integration */
intsin,
intcos,
inttan,
intcot,
intsec,
intcsc,
intsecsq,
intcscsq,
inttansq,
intcotsq,
inttosec,
inttocsc
},
{ /* trig_integration2 */
intsin2,
intcos2,
inttan2,
intcot2,
intsec2,
intcsc2,
intsecsq2,
intcscsq2,
inttansq2,
intcotsq2,
inttosec2,
inttocsc2
},
{ /* integrate_exp */
intexp1, /* �e^t dt = e^t */
intexp2, /* �e^at dt =(1/a) e^(at) */
intexp3, /* �e^(-t)dt = -e^(-t) */
intexp4, /* �e^(-at)dt = -(1/a) e^(-at) */
intexp5, /* �e^(t/a)dt = a e^(t/a) */
intexp6, /* �c^t dt = (1/ln c) c^t */
intexponential, /* �u^v dt = �(e^(v ln u) dt --if position changes adjust integrationop in integral.c */
intln, /* �ln t = t ln t - t */
inttoerf /* �e^(-t�) dt = ��/2 Erf(t) */
},
{ /*integrate_by_substitution */
choosesubstitution,
autochoosesubstitution,
difsubstitution,
derivop, /* evaluate derivative in one step */
showcallingproblem, /* if position changes, adjust at in_loop in top.c */
trysubstitution, /* integrand = f(u) � du/dx */
changeintegrationvariable, /* � f(u) (du/dx) dx = � f(u) du */
unwinddefinition, /* eliminate defined variable */
intsub,
autointsub
},
{ /*integrate_by_parts */
integratebyparts, /* this must remain the first choice, see equatetoproblem */
autointegratebyparts,
equatetoproblem,
transferintegral,
derivop,
intsub,
autointsub,
simpleint
},
{ /* fundamental_theorem */
fundamentaltheorem,
fundamentaltheorem2
},
{ /* definite_integration */
evalbar, /* f(t) evaluated from a to b = f(b)-f(a) */
evalbarln, /* ln f(t) evaluated from a to b = ln(f(b)/f(a)) */
switchlimits, /* change upper and lower limit */
additivity, /* combine two def integrals with same integrand */
insertpoint, /* break an integral up into two integrals */
breakabsint, /* break integral |f(t)| dt at zeroes of f */
integratenumerically, /* parameters allowed, active line won't advance */
pureintegratenumerically, /* no parameters allowed */
integrateemptyinterval, /* integral(f(x),x,a,a) = 0. */
},
{ /* improper_integrals */
integraltolimit, /* creates a limit of an integral */
integraltolimit2, /* limit at minus infinity */
integraltolimit3, /* limit at left endpoint */
integraltolimit4, /* limit at right endpoint */
intdivtest1, /* limit of integrand is not zero at infinity */
intdivtest2 /* limit of integrand is not zero at -infinity */
},
{ /* oddandeven */
oddintegrand,
evenintegrand
},
{ /* trig_substitutions */
trigsubsin,
trigsubtan,
trigsubsec,
trigsubsinh,
trigsubcosh,
trigsubtanh,
yourtrigsub,
derivop,
simpleint
},
{ /* trigonometric_integrals */ /* menu 128 */
intsinsq, /* sin� t = (1-cos 2t)/2 in integral */
intcossq, /* cos� t = (1+cos 2t)/2 in integral */
intsubcos, /* u=cos x after using sin�=1-cos� */
intsubsin, /* u=sin x after using cos�=1-sin� */
intsubtan, /* u=tan x after using sec�=1+tan� */
intsubcot, /* u = cot x after using csc�=1+cot� */
intsubsec, /* u=sec x after using tan�=sec�-1 */
intsubcsc, /* u=csc x after using cot�=csc�-1 */
tantosecinint, /* tan� x = sec� x - 1 in integrand */
cottocscinint, /* cot� x = csc� x - 1 in integrand */
intsecpower, /* reduce �sec� x dx */
intcscpower, /* reduce �csc� x dx */
weierstrass /* u = tan(x/2) (Weierstrass subst.) */
},
{ /* trigrationalize */
trigrationalizedenom1, /* multiply num and denom by 1+cos x */
trigrationalizedenom4, /* multiply num and denom by 1-cos x */
trigrationalizedenom2, /* multiply num and denom by 1+sin x */
trigrationalizedenom5, /* multiply num and denom by 1-sin x */
trigrationalizedenom3, /* mult num and denom by cos x + sin x */
trigrationalizedenom6 /* mult num and denom by cos x - sin x */
},
{ /* integrate_rational */
polydivop, /* polynomial division */
factordenominator,
cancelgcd, /* show common factor in u/v */
squarefreefactors, /* square-free factorization */
factornumerically, /* factor polynomial numerically */
partialfractionsop, /* expand in partial fractions */
completethesquare1, /* only works in denom or sqrt inside integral or limit */
intrecip3, /* �1/(at�b) dt = (1/a) ln |at�b| */
intinversepower, /* �1/(at�b)^(n+1) dt = -1/na(at�b)� */
inttoatan, /* �1/(t�+a�)dt=(1/a)arctan(t/a) */
inttoacoth, /* �1/(t�-a�)dt=(1/a)arccoth(t/a) */
inttolnratio1, /* �1/(t�-a�)dt=(1/2a)ln|(t-a)/(t+a)|*/
inttoatanh, /* �1/(a�-t�)dt=(1/a)arctanh(t/a) */
inttolnratio2 /* �1/(a�-t�)dt=(1/2a)ln|(t+a)/(a-t)|*/
},
{ /* integrate_sqrtdenom */
completethesquare1,
inttoasin, /* CRC formula 19 */
inttolnratio3, /* CRC formula 20 */
inttoacos, /* CRC formula 21 */
intsub
},
{ /* integrate_arctrig */
intasin,
intacos,
intatan,
intacot,
intacscplus,
intacscminus,
intasecplus,
intasecminus
},
{ /* simplify_calculus */
polyvalop, /* simplify sums and products */
ratsimpop, /* eliminate compound fractions */
/* for the time being polyvalop is put in both places; it */
/* actually does even more, using content-factor and cancel */
commondenomandsimp, /* fractions and non-fractions */
contentfactor,
factorop,
multiplyoutandsimp, /* simpprod.c */
cancelgcd, /* show common factor in u/v */
ssolveop, /* solve simple equation */
derivop, /* evaluate derivative in one step */
limvalop, /* evaluate limit in one step */
intsub, /* change integral by substitution */
simpleint, /* simple integral in one step */
absorbconstant /* absorb number in const of int */
},
{ /* integrate_hyperbolic */
intsinh,
intcosh,
inttanh,
intcoth,
intcsch,
intsech
},
{ /* series_geom1 */
oneminusxseries, /* $$1/(1-x) = sum(x^n,n,0,infinity)$$ */
oneminusxseries2, /* $1/(1-x) = 1+x+x�+...$ */
oneminusxseries3, /* $1/(1-x) = 1+x+x�+...x^n...$ */
oneplusxseries, /* $$1/(1+x) = sum((-1)^n x^n,n,0,infinity)$$ */
oneplusxseries2, /* $1/(1+x) = 1-x+x�+...$ */
oneplusxseries3, /* $1/(1+x) = 1-x+x�+...(-1)^nx^n...$ */
oneminusxseriesrev,
oneminusxseries2rev,
oneminusxseries3rev,
oneplusxseriesrev,
oneplusxseries2rev,
oneplusxseries3rev
},
{ /* series_geom2 */
xoveroneminusxseries,
xoveroneminusxseries2,
xoveroneminusxseries3,
xoveroneplusxseries,
xoveroneplusxseries2,
xoveroneplusxseries3,
xoveroneminusxseriesrev,
xoveroneminusxseries2rev,
xoveroneminusxseries3rev,
xoveroneplusxseriesrev,
xoveroneplusxseries2rev,
xoveroneplusxseries3rev
},
{ /* series_geom3 */
oneoveroneminusxkseries,
oneoveroneminusxkseries2,
oneoveroneminusxkseries3,
xmoveroneminusxkseries,
xmoveroneminusxkseries2,
xmoveroneminusxkseries3,
oneoveroneminusxkseriesrev,
oneoveroneminusxkseries2rev,
oneoveroneminusxkseries3rev,
xmoveroneminusxkseriesrev,
xmoveroneminusxkseries2rev,
xmoveroneminusxkseries3rev
},
{ /* series_geom4 */
oneoveroneplusxkseries,
oneoveroneplusxkseries2,
oneoveroneplusxkseries3,
xmoveroneplusxkseries,
xmoveroneplusxkseries2,
xmoveroneplusxkseries3,
oneoveroneplusxkseriesrev,
oneoveroneplusxkseries2rev,
oneoveroneplusxkseries3rev,
xmoveroneplusxkseriesrev,
xmoveroneplusxkseries2rev,
xmoveroneplusxkseries3rev
},
{ /* series_geom5 */
geometricseriesfromk,
geometricseriesfromk2,
geometricseriesfromk3,
geometricseriesminusfromk,
geometricseriesminusfromk2,
geometricseriesminusfromk3,
geometricseriesfromkrev,
geometricseriesfromk2rev,
geometricseriesfromk3rev,
geometricseriesminusfromkrev,
geometricseriesminusfromk2rev,
geometricseriesminusfromk3rev
},
{ /* series_ln */
lnseries,
lnseries2,
lnseries3,
lnseriesminus,
lnseriesminus2,
lnseriesminus3,
lnseriesrev,
lnseries2rev,
lnseries3rev,
lnseriesminusrev,
lnseriesminus2rev,
lnseriesminus3
},
{ /* series_trig */
sinseries,
sinseries2,
sinseries3,
cosseries,
cosseries2,
cosseries3,
sinseriesrev,
sinseries2rev,
sinseries3rev,
cosseriesrev,
cosseries2rev,
cosseries3rev
},
{ /* series_exp */
expseries,
expseries2,
expseries3,
expseriesrev,
expseries2rev,
expseries3rev,
negexpseries,
negexpseries2,
negexpseries3,
negexpseriesrev,
negexpseries2rev,
negexpseries3rev
},
{ /* series_atan */
atanseries,
atanseries2,
atanseries3,
atanseriesrev,
atanseries2rev,
atanseries3rev,
binomialseries,
binomialseries2,
binomialseries3,
binomialseriesrev,
binomialseries2rev,
binomialseries3rev
},
{ /* series_appearance */
ldots0, /* express series as $a_0 + a_1 + ...$ */
ldots1, /* express series as $a_0 + a_1 + a_2 + ... $ */
ldots2, /* express series using ... and general term */
ldotstosigma, /* express series using sigma notation */
showanotherterm,/* show another term before ... */
showmoreterms, /* show ? more terms before ... */
showevaluatedterms, /* show terms with factorials evaluated */
showfactorialsinterms, /* do not evaluate factorials in terms */
showdevaluatedterms, /* show the coefficients in decimal form */
showundevaluatedterms /* do not use decimal form for coefficients */
},
{ /* series_algebra */
telescopingseries,
multiplyseries,
multiplypowerseries,
divideseriesbypoly, /* divide power series by polynomial */
dividepolybyseries, /* divide polynomial by power seres */
dividepowerseries,
squareseries,
squarepowerseries,
powerofseries,
addseries,
subseries
},
{ /* series_manipulations */
/* if the position of intseries changes,
you must modify integrationop in
execute.c */
seriesfirstterms, /* split off first few terms */
seriesmoreterms, /* decrease lower limit by subtracting terms */
seriesaddindex, /* add ? to index variable */
seriessubindex, /* subtract ? from index variable */
renameindexvariable,
seriessum, /* �(u+v) = �u + �v */
difseries, /* d/dx �u = � du/dx */
reversedifseries, /* � du/dx = d/dx �u */
intseries, /* � �u dx = � �u dx */
reverseintseries, /* � �u dx = � �u dx */
evalfirstterms, /* calculate sum of first few terms */
seriesintdif, /* $$u = integral(diff(u,x),x)$$ */
/* if positions in this menu change, see selectop.c,
search for seriesintdif */
seriesintdifdef, /* $$u = integral(diff(u,t),t,0,x) + u(0)$$ */
seriesdifint, /* $$u = diff(integral(u,x),x)$$ */
eliminatecofi, /* solve for constant of integration */
seriesevenandodd, /* separate terms with even and odd indices */
},
{ /* series_convergence_tests */
divergencetest, /* If these change then change the top of series.h too */
integraltest,
ratiotest,
roottest,
comparisontest1,
comparisontest2,
limitcomparisontest,
condensationtest,
finishdivergencetest, /* must change in_loop if these choice numbers change */
finishintegraltest,
finishratiotest,
finishroottest,
finishcomparisontest1,
finishcomparisontest2,
finishlimitcomparisontest,
finishcondensationtest
},
{ statefinalbound1, /* series_convergence2 */
statefinalbound2,
harmonicseries,
zeta2
},
{ /* complex_functions */
complexlntopolarform, /* ln(u+iv) = ln(re^(i�)) */
complexln, /* ln(re^(i�)) = ln r + i� (-�<���) */
lnofi, /* ln i = i�/2 */
lnofminusone, /* ln(-1) = i� */
lnofnegative, /* ln(-a) = ln a + i� (a > 0) */
complexcos, /* cos � = [e^(i�) + e^(-i�)]/2 */
complexsin, /* sin � = [e^(i�) - e^(-i�)]/2i */
complexsqrt, /* �(re^(i�))=�r e^(i�/2) (0��<2�) */
complexroot, /* ��(re^(i�))=��r e^(i�/n)(0��<2�) */
complexexponential, /* e^(i�) = cos � + i sin � */
complexexponential2, /* e^(x+iy) = e^x cos y + i e^x sin y */
etotheipi, /* e^(i�) = -1 */
etotheminusipi, /* e^(-i�) = -1 */
etothei2npi, /* e^(2n�i) = 1 */
etothecoterminal, /* e^((2n� + �)i) = e^(i�) */
introducelninexponent /* u^v = e^(v ln u) */
},
{ /* complex_hyperbolic */
isinh, /* sin(it) = i sinh t */
icosh, /* cos(it) = cosh t */
coshi, /* cosh(it) = cos t */
sinhi, /* sinh(it) = i sin t */
itanh, /* tan(it) = i tanh t */
icoth, /* cot(it) = -i coth t */
tanhi, /* tanh(it) = i tan t */
cothi, /* coth(it) = -i cot t */
cosisin, /* cos t + i sin t = e^(it) */
cosminusisin, /* cos t - i sin t = e^(-it) */
complexcosrev, /* [e^(i�) + e^(-i�)]/2 = cos � */
complexsinrev, /* [e^(i�) - e^(-i�)]/2i = sin � */
complexcosrev2, /* e^(i�) + e^(-i�) = 2 cos � */
complexsinrev2 /* e^(i�) - e^(-i�) = 2i sin � */
},
{ /* hyperbolic_functions */
coshdef, /* cosh u = (e^u+e^(-u))/2 */
coshdefrev2, /* e^u + e^-u = 2 cosh u */
sinhdef, /* sinh u = (e^u-e^(-u))/2 */
sinhdefrev2, /* e^u-e^(-u) = 2 sinh u */
coshdefrev, /* e^u-e^(-u) = 2 sinh u */
sinhdefrev, /* [e^u-e^(-u)]/2 = sinh u */
cosheven, /* cosh(-u) = cosh u */
sinhodd, /* sinh(-u) = -sinh u */
coshplussinh, /* cosh u + sinh u = e^u */
coshminussinh, /* cosh u - sinh u = e^(-u) */
cosh0, /* cosh 0 = 1 */
sinh0, /* sinh 0 = 0 */
exptohyper1, /* e^x = cosh x + sinh x */
exptohyper2 /* e^(-x) = cosh x - sinh x */
},
{ /* hyperbolic2 */
sinhsqplus1, /* sinh�u + 1 = cosh� u */
coshsqminus1, /* cosh� u - 1 = sinh�u */
coshsqminussinhsq, /* cosh� u - sinh�u = 1 */
coshsqtosinhsq, /* cosh� u = sinh�u + 1 */
sinhsqtocoshsq, /* sinh�u = cosh� u - 1 */
oneminustanhsq, /* 1-tan�u = sech�u */
oneminussechsq /* 1-sech�u = tan�u */
},
{ /* more_hyperbolic */
tanhdef, /* tanh u = sinh u / cosh u */
tanhdefrev, /* sinh u / cosh u = tanh u */
cothdef, /* coth u = cosh u / sinh u */
cothdefrev, /* cosh u / sinh u = coth u */
sechdef, /* sech u = 1 / cosh u */
sechdefrev, /* 1 / cosh u = sech u */
cschdef, /* csch u = 1 / sinh u */
cschdefrev, /* 1 / sinh u = csch u */
tanhsqplussechsq, /* tanh� u + sech� u = 1 */
tanhsqtosechsq, /* tanh� u = 1 - sech� u */
sechsqtotanhsq, /* sech� u = 1 - tanh� u */
sinhsum, /* sinh(u�v)=sinh u cosh v � cosh u sinh v */
coshsum, /* cosh(u�v)=cosh u cosh v � sinh u sinh v */
doublesinh, /* sinh 2u = 2 sinh u cosh u */
doublecosh, /* cosh 2u = cosh� u + sinh� u */
tanhln /* tanh(ln u) = (1-u^2)/(1+u^2) */
},
{ /* inverse_hyperbolic */
asinhtoln, /* ln(x + �(x�+1)) */
acoshtoln, /* ln(x + �(x�-1)) */
atanhtoln /* arctanh x = (1/2) ln((1+x)/(1-x)) */
},
{ /* dif_hyperbolic */
difsinh,
difcosh,
diftanh,
difcoth,
difsech,
difcsch,
diflnsinh,
diflncosh
},
{ /* dif_inversehyperbolic */
difasinh,
difacosh,
difatanh,
difacoth,
difasech,
difacsch
},
{ /* sg_function1 */
sgpos, /* sg(x) = 1 if x > 0 */
sgneg, /* sg(x) = -1 if x < 0 */
sgzero, /* sg(0) = 0 */
sgodd, /* sg(-x) = -sg(x) */
sgodd2, /* -sg(x) = sg(-x) */
sgabs1, /* sg(x) = abs(x)/x (x nonzero) */
sgabs2, /* sg(x) = x/abs(x) (x nonzero) */
abssg, /* abs(x) = x sg(x) */
sgevenpower, /* sg(x)�� = 1, also sg(x)^(even/odd) */
sgoddpower, /* sg(x)^(2n+1) = sg(x), also sg(x)^odd/odd */
sgrecip, /* 1/sg(x) = sg(x) */
difsg, /* d/dx sg(u) = 0 (u nonzero) */
intsg, /* integral sg(x) = x sg(x) */
sgint, /* integral(sg(u)v,x) =
sg(u) integral(v,x) if u is nonzero */
sgassumepos, /* sg(x) = 1 assuming x > 0 */
sgassumeneg /* sg(x) = -1 assuming x < 0 */
},
{ /* sg_function2 */
sgprod1, /* sg(au) = sg(u) if a > 0 */
sgprod2, /* sg(au) = -sg(u) if a < 0 */
sgfract1, /* sg(au/b) = sg(u) if a/b > 0 */
sgfract2, /* sg(au/b) = - sg(u) if a/b < 0 */
sgpower, /* sg(x^(2n+1)) = sg(x) */
sgrecip2, /* sg(1/u) = sg(u) */
sgrecip3, /* sg(c/u) = sg(u) si c > 0 */
sgtoabs, /* u sg(u) = |u| */
abstimessg /* |u| sg(u) = u */
},
{ /* bessel_functions */
difj0,
difj1,
difjn,
dify0,
dify1,
difyn
},
{ /* modified_bessel_functions */
difi0,
difi1,
difin,
difk0,
difk1,
difkn
},
{ /* functions_menu */
applyfunction0,
applyfunction1,
applyfunction2,
applyfunction3,
applyfunction4,
applyfunction5,
applyfunction6,
applyfunction7,
applyfunction8,
applyfunction9,
applyfunction10,
applyfunction11,
applyfunction12,
applyfunction13,
applyfunction14,
applyfunction15
},
{ /* automode_only */
/* brother array at end of this file must always
match this */
expand,
multiplyifcancels,
ordersimplefactors,
limsum1,
limsum2,
limsum3,
intsqrt,
doublecos4,
eliminatesinsq,
eliminatecossq,
eliminatetansq,
eliminatesecsq,
maximalsub,
multiplycoefs,
preparetocancel
},
{ /* automode_only2 */
knownroot,
transfereqn,
transferstrictineq,
transferineq,
transfer, /* works only on intervals */
contentgcd,
fractionalsubstitution,
gcdsubstitution,
distribandcancel,
difofpowers,
limsum4,
factorhelper,
factorandcancel,
factoroneside
},
{ /* automode_only3 */
unitelns,
unitelogs,
unitelns2,
unitelogs2,
trigsuminfraction,
cleanupexponents
}
};
/*_____________________________________________________________*/
/* when an automode_only operator is used by think_ahead, its
brother from the following table is entered in 'plan' instead of
itself; so this should tell what operator the user should choose
at the point where automode used this operator */
/*_______________________________________________________*/
actualop brother[3][16] =
{
{
multiplyout, /* brother of expand */
distriblaw, /* brother of multiplyifcancels */
orderfactors, /* brother of ordersimplefactors */
orderfactors, /* finishedfactoring always fails, so it doesn't matter
what we put in this array for its brother */
factordenominator, /* brother of limsum1 */
commondenom, /* brother of limsum2 */
eliminatenegexp, /* brother of limsum3 */
sqrtexp, /* brother of intsqrt (integrate square root) */
doublecos1, /* brother of doublecos4 */
sinsqtocossq, /* brother of eliminatesinsq */
cossqtosinsq, /* brother of eliminatecossq */
tansqtosecsq, /* brother of eliminatetansq */
secsqtotansq, /* brother of eliminatesecsq */
makesubstitution, /* brother of maximalsub */
multiplyfractions, /* brother of multiplycoefs */
sinsqtocossq /* brother of preparetocancel--doesn't matter what it is. */
},
{ /* brothers of operators in automode_only2 */
evaltorational, /* brother of knownroot */
addeqn, /* brother of transfereqn */
addeqn1, /* brother of transferstrictineq */
addeqn2, /* brother of transferineq */
addeqn1, /* brother of transfer */
factorop, /* brother of contentgcd */
makesubstitution, /* brother of fractionalsubstitution */
makesubstitution, /* brother of gcdsubstitution */
distriblaw, /* brother of distribandcancel */
multiplyoutandsimp, /* brother of difofpowers */
tanrule, /* brother of limsum4; but it could just as
well be secrule, secrule2,... */
contentfactor, /* brother of factorhelper */
differenceofsquares, /* brother of factorandcancel */
factorsquareofsum /* brother of factoroneside */
},
{ /* brothers of operators in automode_only3 */
lnofpower, /* brother of unitelns */
logofpower, /* brother of unitelogs */
lnofproduct, /* brother of unitelns2 */
logofproduct, /* brother of unitelogs2 */
sumofsin, /* brother of trigsuminfraction */
arithmetic /* brother of cleanupexponents */
}
};
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists