complex expressions



What exactly do you consider "hopelessly broken" in this? In other words,
which of these outputs would you want to be different, and what would you
want them to be?

            -s

On Wed, Jun 6, 2012 at 12:52 PM, Henry Baker <hbaker1 at pipeline.com> wrote:

> cabs() and abs() on complex numbers seem hopelessly broken.
>
> I defined my own cabs() function:
> myabs(a):=sqrt(a*conjugate(a));
>
> (%i7) myabs(a)^2=realpart(a)^2+imagpart(a)^2;
>                                          2              2
> (%o7)            a conjugate(a) = realpart (a) + imagpart (a)
> (%i8) %,nouns;
>                                          2              2
> (%o8)            a conjugate(a) = realpart (a) + imagpart (a)
> (%i9) %,a=ar+%i*ay;
>                                          2                       2
> (%o9) (ar - %i ay) (%i ay + ar) = realpart (%i ay + ar) + imagpart (%i ay
> + ar)
> (%i10) %,expand;
>             2     2           2                       2
> (%o10)     ay  + ar  = realpart (%i ay + ar) + imagpart (%i ay + ar)
> (%i11) %,rectform;
>             2     2           2                       2
> (%o11)     ay  + ar  = realpart (%i ay + ar) + imagpart (%i ay + ar)
> (%i12) %,nouns;
>                               2     2     2     2
> (%o12)                       ay  + ar  = ay  + ar
>
>
> At 09:31 AM 6/6/2012, Henry Baker wrote:
> >Yes, but if I do the following, it doesn't work:
> >
> >(%i2) cabs(a)^2=realpart(a)^2+imagpart(a)^2;
> >                           2           2              2
> >(%o2)                abs(a)  = realpart (a) + imagpart (a)
> >(%i3) %,a=r+%i*s;
> >                      2           2                     2
> >(%o3)       (%i s + r)  = realpart (%i s + r) + imagpart (%i s + r)
> >(%i4) %,expand;
> >          2               2           2                     2
> >(%o4)  - s  + 2 %i r s + r  = realpart (%i s + r) + imagpart (%i s + r)
> >(%i5) rectform(%);
> >          2               2           2                     2
> >(%o5)  - s  + 2 %i r s + r  = realpart (%i s + r) + imagpart (%i s + r)
> >
> >At 08:59 AM 6/6/2012, Richard Fateman wrote:
> >>Henry:
> >>
> >>try this:
> >>
> >>a:  r+%i*s;
> >>
> >>cabs(a)^2= realpart(a)^2 + imagpart(a)^2;
> >>
> >>you can say declare(r,real); declare(s,real)  if you wish, but
> >>it seems to be unnecessary.
> >>
> >>RJF
> >>
> >>On 6/6/12 8:37 AM, Stavros Macrakis wrote:
> >>>I believe that cabs(a) used to return
> sqrt('realpart(a)^2+'imagpart(a)^2), though it now returns 'abs(a) (prints
> as |a|).  I think the former is more in the spirit of cabs (which is
> supposed to give you an explicit formula, not just punt to a nounform), so
> I would consider the current behavior to be a bug.
> >>>
> >>>If I remember correctly, a few years ago, someone tried to unify abs
> and cabs (I objected) -- this may be related to that?
> >>>
> >>>As a workaround, you can do cabs(rectform(a))^2 =>
> 'realpart(a)^2+'imagpart(a)^2.  Unfortunately, rectform(abs(a)) currently
> returns 'abs(a) -- again, I think this is a bug.  If you're starting with
> the abs form, I suppose you could do
> subst(lambda([ex],cabs(rectform(ex))),'abs, ... ).
> >>>
> >>>                 -s
> >>>
> >>>On Wed, Jun 6, 2012 at 11:06 AM, Henry Baker <hbaker1 at pipeline.com>
> wrote:
> >>>I'm trying to get maxima to prove that
> >>>
> >>>abs(a)^2=realpart(a)^2+imagpart(a)^2.
> >>>
> >>>I tell maxima:
> >>>
> >>>declare(a,complex);
> >>>abs(a)^2=realpart(a)^2+imagpart(a)^2;
> >>>
> >>>What do I tell maxima to get it to simplify this?
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>