From: SourceForge.net <no...@so...> - 2009-02-24 23:20:43
|
Bugs item #816166, was opened at 2003-10-01 18:24 Message generated for change (Comment added) made by dgildea You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=816166&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core - Complex Group: None >Status: Closed >Resolution: Works For Me Priority: 5 Private: No Submitted By: Stavros Macrakis (macrakis) Assigned to: Nobody/Anonymous (nobody) Summary: rectform/carg doesn't normalize exp(%i*n) (also asin, log) Initial Comment: carg(exp(%i*x)) => x (OK?) carg(exp(%i*10.0)) => 10.0 (No?) carg(exp(%i*-%pi)) => %pi (OK) float(carg(exp(%i*-%pi))) => 3.14 (OK) carg(exp(%i*float(-%pi))) => -3.14 (?) float(carg(asin(-%i*10))) => -1.57 (OK) carg(asin(-%i*10)),numer => 4.71 (No!) float(rectform(log(-%i*10))) => 2.30 - 1.57*%I (OK) rectform(log(-%i*10)),numer => 2.30+4.71*%I (No!) Presumably the principal values is what is wanted. I will correct that. This is related to the fact that carg(exp(%i*x)) doesn't normalize x to (-pi,pi] when x is not an explicit multiple of pi: carg(exp(%i*10)) => 10 carg(exp(%i*x)) => x but carg(exp(%i*(3*%pi-x))) => %pi-x How far should this go? I think it's pretty clear for the float/bfloat case, but how about carg(exp(%i*10))? Should that really return 10-4*%pi? Currently, it goes the other way around!: exp(%i*(10-4*%pi)) actually simplifies to exp(%i*10).... ---------------------------------------------------------------------- >Comment By: Dan Gildea (dgildea) Date: 2009-02-24 18:20 Message: In current cvs: (%i6) carg(exp(%i*x)); (%o6) x (%i7) carg(exp(%i*10.0)); (%o7) -2.566370614359173 (%i8) carg(exp(%i*-%pi)); (%o8) %pi (%i9) float(carg(exp(%i*-%pi))); (%o9) 3.141592653589793 (%i10) carg(exp(%i*float(-%pi))); (%o10) -3.141592653589793 (%i11) float(carg(asin(-%i*10))); (%o11) -1.570796326794897 (%i12) float(carg(asin(-%i*10))); (%o12) -1.570796326794897 (%i13) float(rectform(log(-%i*10))); (%o13) 2.302585092994046-1.570796326794897*%i (%i14) rectform(log(-%i*10)),numer; (%o14) log(10)-%i*%pi/2 not sure why that last one didn't come out numerically: (%i18) log(-%i*10),numer; (%o18) 2.302585092994046-1.570796326794897*%i ---------------------------------------------------------------------- Comment By: Barton Willis (willisbl) Date: 2005-07-18 06:42 Message: Logged In: YES user_id=895922 How about 'nummod'? See my recent Maxima list posting and "Concrete Mathematics" by Graham, Knuth, and Patashnik, Section 3.4 (%i1) load("C:/maxima/nummod/nummod.lisp")$ (%i2) f(x) := %pi - nummod(%pi-x,2*%pi)$ (%i3) f(-%pi); (%o3) %pi (%i4) f(0); (%o4) 0 (%i5) f(%pi); (%o5) %pi (%i6) f(%pi + 1/10^9); (%o6) 1/1000000000-%pi (%i7) f(%pi - 1/10^9); (%o7) %pi-1/1000000000 (%i8) Barton ---------------------------------------------------------------------- Comment By: Robert Dodier (robert_dodier) Date: 2005-07-16 03:15 Message: Logged In: YES user_id=501686 Well, how about carg (exp (%i*10)) => 'mod (10, 2*%pi) ?? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=816166&group_id=4933 |