[GiNaC-list] Simplify clifford expresion: Works?

Javier Ros Ganuza jros at unavarra.es
Fri May 25 16:50:01 CEST 2007


NOTE: I'm using one week old CVS version.


I'm playing with rotations in Cl3, following with my previous mail basis
definition.

I'm implementing the following trivial rotation

ex R=(cos(theta/2)*dirac_ONE(0)-e00*e01*sin(theta/2));

cout << "subs Rotation R * e00 * R^\\dag = " << canonicalize_clifford((R
* e00 * clifford_star(R)).expand()) << endl;

That wonderfully (wonderfully!!!) gives:

Rotation R * e00 * R^\dag =
2*e~1*sin(1/2*theta)*cos(1/2*theta)-sin(1/2*theta)^2*e~0
+e~0*cos(1/2*theta)^2

I'm trying to trigonometrically simmplify,
2*cos(1/2*theta)*e~1*sin(1/2*theta) -----to---> sin(theta)

To that end:

 cout << "subs Rotation R * e00 * R^\\dag = " <<
canonicalize_clifford((R * e00 *
clifford_star(R)).expand()).subs(lst(2*sin(1/2*theta)*cos(1/2*theta)==sin(theta))) << endl;
 
that gives

subs Rotation R * e00 * R^\dag =
2*e~1*sin(1/2*theta)*cos(1/2*theta)+e~(sin(theta))*cos(1/2*theta)^2-sin(1/2*theta)^2*e~(sin(theta))

Also, if I use

cout << "subs Rotation R * e00 * R^\\dag = " << canonicalize_clifford((R
* e00 *
clifford_star(R)).expand()).subs(lst(2*sin(1/2*theta)*cos(1/2*theta)==sin(theta)),subs_options::algebraic) << endl;
 
I get the same result

subs Rotation R * e00 * R^\dag =
2*e~1*sin(1/2*theta)*cos(1/2*theta)+e~(sin(theta))*cos(1/2*theta)^2-sin(1/2*theta)^2*e~(sin(theta))


I think this is a bug.

????

Have a nice weekend!

Javier



More information about the GiNaC-list mailing list