Changes between Initial Version and Version 6 of Ticket #25822

Jul 12, 2018, 8:30:09 AM (4 years ago)
Samuel Lelièvre


  • Ticket #25822

    • Property Keywords giac integrate crash pexpect added
    • Property Cc Han Frederic Bernard Parisse Samuel Lelièvre added
    • Property Report Upstream changed from Not yet reported upstream; Will do shortly. to Fixed upstream, but not in a stable release.
  • Ticket #25822 – Description

    initial v6  
    1 As reported on [ his ask question]:
     1As reported on [ this Ask Sage question], Giac crashes on the following integral:
    4 sage: var('x d a c b')
    5 (x, d, a, c, b)
    6 sage: integrate(sqrt(d*x^2 + e*x + c)*sqrt((b*x^2 + a)^2)/x^4,x, algorithm="giac")
     4sage: print(version())
     5SageMath version 8.3.rc0, Release Date: 2018-07-08
     6sage: a, b, c, d, e, x = SR.var('a b c d e x')
     7sage: F = sqrt(d*x^2 + e*x + c)*sqrt((b*x^2 + a)^2)/x^4
     8sage: FF = integrate(F, x, algorithm='giac')
    79Giac crashed -- automatically restarting.
    8 sage0*x
     13This is fixed upstream and will be part of the next stable version of Giac.
     15Another issue when using Giac for integration is the following:
     17sage: print(version())
     18SageMath version 8.3.rc0, Release Date: 2018-07-08
     19sage: a, b, c, d, e, f, g, n, x = SR.var('a b c d e f g n x')
     20sage: G = 1/((g*x + f)^2*(b*log((e*x + d)^n*c) + a)^3)
     21sage: GG = integrate(G, x, algorithm='giac')
     22sage: GG
     27Quoting Frederic Han's comment (with minor edits):
     29> this is a bug of the pexpect Giac interface that takes the string
     30> representation of the Giac output. The computation is done in Giac
     31> but when the output is large Giac just prints Done, and that is
     32> the string that the pxepect interface gets. It is not specific to
     33> integrate: it will concern all large Giac output.
     35Quoting Bernard Parisse's comment:
     37> The maximal size of objects that will be printed should be
     38> controllable with the environment variable `GIAC_TAILLEMAX`
     39> (default 1000). Size is not the length of the printed string,
     40> but the size of the `giac::gen` as defined in `symbolic.h`:
     41> {{{
     42> unsigned taille(const gen & g,unsigned max);
     43> }}}