Some more evaluation rules for abs()
Dear All, I have added some more evaluation rules for abs(). They evaluate absolute values of powers and exponents. Simple checks are added as well. The effect is like this: realsymbol a("a"), b("b"), x("x"), y("y"); cout << abs(exp(x+I*y)).eval() << endl; // before: -> abs(exp(x+I*y)) // now: -> exp(x) cout << abs(pow(x+I*y,a+I*b)).eval() << endl; // before: -> abs((x+I*y)^(I*b+a)) // now: -> abs(x+I*y)^a Best wishes, Vladimir -- Vladimir V. Kisil email: kisilv@maths.leeds.ac.uk www: http://www.maths.leeds.ac.uk/~kisilv/ Book: Geometry of Mobius Transformations http://www.worldscientific.com/worldscibooks/10.1142/p835
On Tue, 30 Jul 2013 19:25:15 +0100, "Vladimir V. Kisil" <kisilv@maths.leeds.ac.uk> said:
VVK> Dear All, I have added some more evaluation rules for VVK> abs(). They evaluate absolute values of powers and VVK> exponents. Simple checks are added as well. Unfortunately, my previous patch contains a misprint in exam_inifcns.cpp, so the check failed. The correct version is attached now. -- Vladimir V. Kisil email: kisilv@maths.leeds.ac.uk www: http://www.maths.leeds.ac.uk/~kisilv/ Book: Geometry of Mobius Transformations http://www.worldscientific.com/worldscibooks/10.1142/p835
Hello, On Tue, Jul 30, 2013 at 07:25:15PM +0100, Vladimir V. Kisil wrote:
I have added some more evaluation rules for abs(). They evaluate absolute values of powers and exponents. Simple checks are added as well. The effect is like this:
realsymbol a("a"), b("b"), x("x"), y("y");
cout << abs(exp(x+I*y)).eval() << endl; // before: -> abs(exp(x+I*y)) // now: -> exp(x)
No objections here.
cout << abs(pow(x+I*y,a+I*b)).eval() << endl; // before: -> abs((x+I*y)^(I*b+a)) // now: -> abs(x+I*y)^a
I feel so stupid but Z^A = exp(A log(Z)) = exp((Re(A) + I Im(A)) (ln|Z| + I arg(Z))) = exp(Re(A) ln|Z| - Im(A) arg(Z) + I (Im(A) ln|Z| + Re(A) arg(Z))) = exp(Re(A) ln|Z| - Im(A) arg(Z)) exp(I(Im(A) ln|Z| + Re(A) arg(Z))) Hence |Z^A| = exp(Re(A) ln|Z| - Im(A) arg(Z)) = |Z|^Re(A) exp(-Im(A) arg(Z)) In particular |(-1)^I| = | exp(I (I Pi)) | = |exp(-Pi)| = exp(-Pi) What I'm doing wrong? Best regards, Alexei
Dear Alexei,
On Wed, 31 Jul 2013 10:30:26 +0300, Alexei Sheplyakov <alexei.sheplyakov@gmail.com> said: ASh> Hence |Z^A| = exp(Re(A) ln|Z| - Im(A) arg(Z)) = |Z|^Re(A) ASh> exp(-Im(A) arg(Z))
Thanks for pointing out my error. Since, this evaluation can lead to a more complex expression in general, I reduced it to two cases Im(A)=0 or arg(Z=0). The corrected patch is attached. Best wishes, Vladimir -- Vladimir V. Kisil email: kisilv@maths.leeds.ac.uk www: http://www.maths.leeds.ac.uk/~kisilv/ Book: Geometry of Mobius Transformations http://www.worldscientific.com/worldscibooks/10.1142/p835
participants (2)
-
Alexei Sheplyakov
-
Vladimir V. Kisil