#803 "display: failed to break up a long expression

open
nobody
Lisp Core (471)
2
2011-07-06
2005-10-19
No

I find that with the following batch file

--------- begin bug.mac ---------
linel:79;
linenum:87;
fpprec:131;
a:1/7.0B+0;
b:1234B-22;
ldisplay(a-b);
---------- end bug.mac ----------

then batch ("bug.mac"); => "Expression is too wide to
be displayed" repeatably.

If this stuff is typed at the command prompt it doesn't
happen
(output layout is slightly different so it doesn't
tickle the bug).

The error message originates in CHECKBREAK in
src/displa.lisp.

Maxima version: 5.9.2
Maxima build date: 0:2 10/11/2005
host type: i686-pc-linux-gnu
lisp-implementation-type: GNU Common Lisp (GCL)
lisp-implementation-version: GCL 2.6.7

(but also reported on the mailing list to exist in 5.9.1)

Discussion

  • Dieter Kaiser

    Dieter Kaiser - 2011-07-02

    The reported bug seems to be no longer present in Maxima 5.24post. When loading the batch file from above the result is

    (%i1) load("bug.mac");
    (%t87) 1.428571428571428571428571428571428571428571428571428571428571428571428\ 5714285714285714285714285714285714285714285714285714285714286b-1
    + (- 1.234b-19) = 1.428571428571428570194571428571428571428571428571428571428\ 5714285714285714285714285714285714285714285714285714285714285714285714286b-1

    (%o87) bug.mac

    Setting the resolution to "Works for me" and the status to "Pending".

    Dieter Kaiser

     
  • Dieter Kaiser

    Dieter Kaiser - 2011-07-02
    • status: open --> pending
     
  • Robert Dodier

    Robert Dodier - 2011-07-06
    • summary: "Expression is too wide" error --> "display: failed to break up a long expression
    • status: pending --> open
     
  • Robert Dodier

    Robert Dodier - 2011-07-06

    I've reopened this item. It's possible to find other values which trigger the bug. See the session pasted below.

    $ maxima

    Maxima 5.22.1 http://maxima.sourceforge.net
    using Lisp GNU Common Lisp (GCL) GCL 2.6.7 (a.k.a. GCL)
    Distributed under the GNU Public License. See the file COPYING.
    Dedicated to the memory of William Schelter.
    The function bug_report() provides bug reporting information.
    (%i1) linel:79;
    (%o1) 79
    (%i2) linenum:87;
    (%o87) 87
    (%i88) fpprec:131;
    (%o88) 131
    (%i89) a:1/7.0B+0;
    (%o89) 1.428571428571428571428571428571428571428571428571428571428571428571428\ 5714285714285714285714285714285714285714285714285714285714286b-1
    (%i90) b:1234B-22;
    (%o90) 1.234b-19
    (%i91) ldisplay(a-b);
    (%t91) 1.428571428571428571428571428571428571428571428571428571428571428571428\ 5714285714285714285714285714285714285714285714285714285714286b-1
    + (- 1.234b-19) = 1.428571428571428570194571428571428571428571428571428571428\ 5714285714285714285714285714285714285714285714285714285714285714285714286b-1

    (%o91) [%t91]
    (%i92) linenum:100;
    (%o100) 100
    (%i101) linel:99;
    (%o101) 99
    (%i102) fpprec:137;
    (%o102) 137
    (%i103) ldisplay(a-b);
    (%t103) 1.4285714285714285714285714285714285714285714285714285714285714285714285714285714285714285\ 714285714285714285714285714285714285714286b-1 + (- 1.233999999999999999999999999999999999999999999\ 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999992133b-19) =
    display: failed to break up a long expression.
    display: change 'linel' slightly and try again.

     
  • Dieter Kaiser

    Dieter Kaiser - 2011-07-25

    The problem of this bug report is easy to see in the following example. First, a display of an expressions which fits exactly into the available space:

    (%i1) linel:10;
    (%o1) 10
    (%i2) aaaaaaa+bbbb;
    (%o2) bbbb
    + aaaaaaa

    Now, we add one char to the first long symbol:

    (%i3) aaaaaaaa+bbbb;
    (%o3) bbbb
    display: failed to break up a long expression.
    display: change 'linel' slightly and try again.
    -- an error. To debug this try: debugmode(true);

    The problem is present for all infix-operators. The display routines have to output the expression " + aaaaaaaa". The expression has 11 chars and is too long to be displayed on a line, but the display routines can not break up an expression, which is preceded by a infix-operator.

    This is a general problem of the implementation, therefore the message "display: change 'linel' slightly and try again.".

    Dieter Kaiser

     

Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.





No, thanks