From: Christian Bauer Date: Mon, 21 Jul 2003 17:21:23 +0000 (+0000) Subject: subs_no_pattern -> no_pattern, subs_algebraic -> algebraic X-Git-Tag: release_1-0-15~22 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=006b3274b157c4772c16d30f49079913bd236652 subs_no_pattern -> no_pattern, subs_algebraic -> algebraic --- diff --git a/doc/tutorial/ginac.texi b/doc/tutorial/ginac.texi index f9d7adda..e7515f79 100644 --- a/doc/tutorial/ginac.texi +++ b/doc/tutorial/ginac.texi @@ -3199,9 +3199,9 @@ contain the same number of elements). Using this form, you would write The optional last argument to @code{subs()} is a combination of @code{subs_options} flags. There are two options available: -@code{subs_options::subs_no_pattern} disables pattern matching, which makes +@code{subs_options::no_pattern} disables pattern matching, which makes large @code{subs()} operations significantly faster if you are not using -patterns. The second option, @code{subs_options::subs_algebraic} enables +patterns. The second option, @code{subs_options::algebraic} enables algebraic substitutions in products and powers. @ref{Pattern Matching and Advanced Substitutions}, for more information about patterns and algebraic substitutions. @@ -3509,7 +3509,7 @@ The last example would be written in C++ in this way: @end example @subsection Algebraic substitutions -Supplying the @code{subs_options::subs_algebraic} option to @code{subs()} +Supplying the @code{subs_options::algebraic} option to @code{subs()} enables smarter, algebraic substitutions in products and powers. If you want to substitute some factors of a product, you only need to list these factors in your pattern. Furthermore, if an (integer) power of some expression occurs @@ -3521,41 +3521,41 @@ An example clarifies it all (hopefully): @example cout << (a*a*a*a+b*b*b*b+pow(x+y,4)).subs(wild()*wild()==pow(wild(),3), - subs_options::subs_algebraic) << endl; + subs_options::algebraic) << endl; // --> (y+x)^6+b^6+a^6 -cout << ((a+b+c)*(a+b+c)).subs(a+b==x,subs_options::subs_algebraic) << endl; +cout << ((a+b+c)*(a+b+c)).subs(a+b==x,subs_options::algebraic) << endl; // --> (c+b+a)^2 // Powers and products are smart, but addition is just the same. -cout << ((a+b+c)*(a+b+c)).subs(a+b+wild()==x+wild(), subs_options::subs_algebraic) +cout << ((a+b+c)*(a+b+c)).subs(a+b+wild()==x+wild(), subs_options::algebraic) << endl; // --> (x+c)^2 // As I said: addition is just the same. -cout << (pow(a,5)*pow(b,7)+2*b).subs(b*b*a==x,subs_options::subs_algebraic) << endl; +cout << (pow(a,5)*pow(b,7)+2*b).subs(b*b*a==x,subs_options::algebraic) << endl; // --> x^3*b*a^2+2*b -cout << (pow(a,-5)*pow(b,-7)+2*b).subs(1/(b*b*a)==x,subs_options::subs_algebraic) +cout << (pow(a,-5)*pow(b,-7)+2*b).subs(1/(b*b*a)==x,subs_options::algebraic) << endl; // --> 2*b+x^3*b^(-1)*a^(-2) -cout << (4*x*x*x-2*x*x+5*x-1).subs(x==a,subs_options::subs_algebraic) << endl; +cout << (4*x*x*x-2*x*x+5*x-1).subs(x==a,subs_options::algebraic) << endl; // --> -1-2*a^2+4*a^3+5*a cout << (4*x*x*x-2*x*x+5*x-1).subs(pow(x,wild())==pow(a,wild()), - subs_options::subs_algebraic) << endl; + subs_options::algebraic) << endl; // --> -1+5*x+4*x^3-2*x^2 // You should not really need this kind of patterns very often now. // But perhaps this it's-not-a-bug-it's-a-feature (c/sh)ould still change. cout << ex(sin(1+sin(x))).subs(sin(wild())==cos(wild()), - subs_options::subs_algebraic) << endl; + subs_options::algebraic) << endl; // --> cos(1+cos(x)) cout << expand((a*sin(x+y)*sin(x+y)+a*cos(x+y)*cos(x+y)+b) .subs((pow(cos(wild()),2)==1-pow(sin(wild()),2)), - subs_options::subs_algebraic)) << endl; + subs_options::algebraic)) << endl; // --> b+a @end example