Menu

#337 declare complex mostly ignored

open
nobody
5
2006-07-07
2003-07-06
No

The functions "is" and "assume" ignore the complex
declaration

(C1) declare(x,complex);
(D1) DONE
(C2) is(x^2 + 1 > 0);
(D2) TRUE

This isn't correct. Additionally, assume doesn't
care that x is complex and it allows the
assumption

(C3) assume(x > 1);
(D3) [x > 1]
(C4) build_info();

Maxima version: 5.9.0
Maxima build date: 19:10 2/9/2003
host type: i686-pc-mingw32
lisp-implementation-type: Kyoto Common Lisp
lisp-implementation-version: GCL-2-5.0

Until things like this are fixed, at least the
documentation for declare should clearly
state the limitations of declaring a symbol
to be complex. The functions realpart &
friends are the only ones I know of that
make use of it; for example

(C5) rectform(x);
(D5) REALPART(x) + %
IMAGPART(x)
(C6)

Barton

Discussion

  • Stavros Macrakis

    Logged In: YES
    user_id=588346

    Note by the way that besides the above problems,
    declare/featurep have some important bugs (see bug report
    767401).

    Checking the code, the Complex declaration is also used in
    simpexpt: abs(rrr)^2 => rrr^2, while abs(ccc)^2 doesn't.
    Similarly, (rrr^2)^(1/3)=>rrr^(2/3), while (ccc^2)^(1/3)
    =>abs(ccc)^(1/3).

     
  • Robert Dodier

    Robert Dodier - 2006-07-07
    • labels: --> Lisp Core - Assume
     
  • Dieter Kaiser

    Dieter Kaiser - 2010-05-15

    For the record:

    The first problem is no longer present. We get:

    (%i1) declare(z,complex)$

    (%i2) is(z^2+1>0);
    (%o2) unknown

    (%i3) is(x^2+1>0);
    (%o3) true

    But the following is still possible:

    (%i4) assume(z>1);
    (%o4) [z > 1]

    (%i5) is(z^2+1>0);
    (%o5) true

    Dieter Kaiser

     

Log in to post a comment.