Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

problem using giac interface for integration in sagemath 10.6

I am using sagemath 10.6 and giac 2.0, all installed using pacman package manager on arch based linux (CachyOS).

Sometimes, I noticed call to integrate with giac as algorithm gives SignalError: Segmentation fault from call to libgiac.integrate(Pygen(expression), v)

But it is random when it happens. Also, when Segmentation fault do not show, the result returned is not evaluated. i.e. integral is not solved.

When I try the same exact integral in giac itself, it solves it each time. I just change I to i for giac. This is the complex number sqrt(-1).

It seems to me there is a problem in the interface to giac in sagemath 10.6. I do not know if it is due to packing using pacman arch linux or not. I do not build giac nor sagemath from source anymore. Just use pacman -S command to install everything.

Below I give example of one such case. First this is the version information

sudo pacman -Qi sagemath  
Version         : 10.6-6.2 
Required By     : sagemath-giac

>sudo pacman -Qi giac
Installed From  : cachyos-extra-znver4
Name            : giac
Version         : 2.0.0.10-4.1

Here is an example

>sage
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 10.6, Release Date: 2025-03-31                    │
│ Using Python 3.13.5. Type "help()" for help.                       │
└────────────────────────────────────────────────────────────────────┘
sage: var('x d c a')
(x, d, c, a)
sage: integrate(tan(d*x+c)^(4/3)/(a+I*a*tan(d*x+c))^(1/2),x,algorithm="giac")
Degree mismatch inside factorisation over extension
Warning, need to choose a branch for the root of a polynomial with parameters. This might be wrong.
The choice was done assuming [sageVARa,tan(sageVARd*sageVARx+sageVARc)]=[-74,81]
Precision problem choosing root in common_EXT, current precision 14
Precision problem choosing root in common_EXT, current precision 28
Precision problem choosing root in common_EXT, current precision 56
Precision problem choosing root in common_EXT, current precision 112
Precision problem choosing root in common_EXT, current precision 224
Precision problem choosing root in common_EXT, current precision 448
Precision problem choosing root in common_EXT, current precision 896
Unable to transpose Error: Bad Argument Value
integrate(tan(d*x + c)^(4/3)/sqrt(I*a*tan(d*x + c) + a), x)

sage: integrate(tan(d*x+c)^(4/3)/(a+I*a*tan(d*x+c))^(1/2),x,algorithm="giac")
Degree mismatch inside factorisation over extension
Warning, need to choose a branch for the root of a polynomial with parameters. This might be wrong.
The choice was done assuming [sageVARa,tan(sageVARd*sageVARx+sageVARc)]=[-27,57]
Precision problem choosing root in common_EXT, current precision 14
Precision problem choosing root in common_EXT, current precision 28
Precision problem choosing root in common_EXT, current precision 56
Precision problem choosing root in common_EXT, current precision 112
Precision problem choosing root in common_EXT, current precision 224
Precision problem choosing root in common_EXT, current precision 448
Precision problem choosing root in common_EXT, current precision 896
---------------------------------------------------------------------------
SignalError                               Traceback (most recent call last)
Cell In[7], line 1
----> 1 integrate(tan(d*x+c)**(Integer(4)/Integer(3))/(a+I*a*tan(d*x+c))**(Integer(1)/Integer(2)),x,algorithm="giac")

File /usr/lib/python3.13/site-packages/sage/misc/functional.py:789, in integral(x, *args, **kwds)
    650 """
    651 Return an indefinite or definite integral of an object ``x``.
    652 
   (...)    786     0
    787 """
    788 if hasattr(x, 'integral'):
--> 789     return x.integral(*args, **kwds)
    790 else:
    791     from sage.symbolic.ring import SR

File /usr/lib/python3.13/site-packages/sage/symbolic/expression.pyx:13229, in sage.symbolic.expression.Expression.integral (build/cythonized/sage/symbolic/expression.cpp:109379)()
  13227                 R = SR
  13228         return R(integral(f, v, a, b, **kwds))
> 13229     return integral(self, *args, **kwds)
  13230 
  13231 integrate = integral

File /usr/lib/python3.13/site-packages/sage/symbolic/integration/integral.py:1107, in integrate(expression, v, a, b, algorithm, hold)
   1105     if not integrator:
   1106         raise ValueError("Unknown algorithm: %s" % algorithm)
-> 1107     return integrator(expression, v, a, b)
   1108 if a is None:
   1109     return indefinite_integral(expression, v, hold=hold)

File /usr/lib/python3.13/site-packages/sage/symbolic/integration/external.py:263, in libgiac_integrator(expression, v, a, b)
    259 # We call Pygen on first argument because otherwise some
    260 # expressions involving derivatives result in doctest failures in
    261 # sage/interfaces/sympy.py
    262 if a is None:
--> 263     result = libgiac.integrate(Pygen(expression), v)
    264 else:
    265     result = libgiac.integrate(Pygen(expression), v, a, b)

File giac.pyx:1929, in giac.GiacFunction.__call__()

File giac.pyx:1083, in giac.Pygen.__call__()

SignalError: Segmentation fault

I found that the crash do not happen each time. If I call maxima between, this will most likely cause the crash to happen next time calling giac. But if I try the same integrate call, I will always get the crash.

The same integral works OK using giac directly. Here is example. I just changed I to i

giac
// Using locale /usr/share/locale/
// en_US.UTF-8
// /usr/share/locale/
// giac
// UTF-8
// Maximum number of parallel threads 32
Added 26 synonyms
Reading from cache /usr/share/giac/doc/en/
get_index_from_cache /usr/share/giac/doc/en/html_mtt OK
// Read 1243 entries from cache /usr/share/giac/doc/en/html_mtt
get_index_from_cache /usr/share/giac/doc/en/html_mall OK
// Read 1528 entries from cache /usr/share/giac/doc/en/html_mall
// Read 1057 entries from cache /usr/share/giac/doc/en/html_vall
Welcome to giac readline interface, version 2.0.0
(c) 2002,2023 B. Parisse & others
Homepage https://www-fourier.univ-grenoble-alpes.fr/~parisse/giac.html
Released under the GPL license 3.0 or above
See http://www.gnu.org for license details
May contain BSD licensed software parts (lapack, atlas, tinymt)
-------------------------------------------------
Press CTRL and D simultaneously to finish session
Type ?commandname for help
*** Type xcas to launch a light version of Xcas ***
0>> i*i
-1
// Time 0
1>> int(tan(d*x+c)^(4/3)/(a+i*a*tan(d*x+c))^(1/2),x)
-36*d*1/36/d^2*tan(c+d*x)^(1/3)*sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)/2*(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/(i*a*tan(c+d*x)+a)+integrate(3*(30*d*1/36/d^2+d*1/2/d/a/(-d*(-i)/a*tan(c+d*x)-d/a))/sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)*2/(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/3*(tan(c+d*x)^(1/3))^-2*d*(1+tan(c+d*x)^2),x)
// Time 0.05
2>> int(tan(d*x+c)^(4/3)/(a+i*a*tan(d*x+c))^(1/2),x)
-36*d*1/36/d^2*tan(c+d*x)^(1/3)*sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)/2*(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/(i*a*tan(c+d*x)+a)+integrate(3*(30*d*1/36/d^2+d*1/2/d/a/(-d*(-i)/a*tan(c+d*x)-d/a))/sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)*2/(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/3*(tan(c+d*x)^(1/3))^-2*d*(1+tan(c+d*x)^2),x)
// Time 0.05
3>> int(tan(d*x+c)^(4/3)/(a+i*a*tan(d*x+c))^(1/2),x)
-36*d*1/36/d^2*tan(c+d*x)^(1/3)*sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)/2*(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/(i*a*tan(c+d*x)+a)+integrate(3*(30*d*1/36/d^2+d*1/2/d/a/(-d*(-i)/a*tan(c+d*x)-d/a))/sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)*2/(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/3*(tan(c+d*x)^(1/3))^-2*d*(1+tan(c+d*x)^2),x)
// Time 0.05
4>> int(tan(d*x+c)^(4/3)/(a+i*a*tan(d*x+c))^(1/2),x)
-36*d*1/36/d^2*tan(c+d*x)^(1/3)*sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)/2*(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/(i*a*tan(c+d*x)+a)+integrate(3*(30*d*1/36/d^2+d*1/2/d/a/(-d*(-i)/a*tan(c+d*x)-d/a))/sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)*2/(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/3*(tan(c+d*x)^(1/3))^-2*d*(1+tan(c+d*x)^2),x)
// Time 0.06
5>>

Does this happen on sagemath 10.6 build directly from source using giac 2.0 for others?

Thanks --Nasser

problem using giac interface for integration in sagemath 10.6

I am using sagemath 10.6 and giac 2.0, all installed using pacman package manager on arch based linux (CachyOS).

Sometimes, I noticed call to integrate with giac as algorithm gives SignalError: Segmentation fault from call to libgiac.integrate(Pygen(expression), v)

But it is random when it happens. Also, when Segmentation fault do not show, the result returned is not evaluated. i.e. integral is not solved.

When I try the same exact integral in giac itself, it solves it each time. I just change I to i for giac. This is the complex number sqrt(-1).

It seems to me there is a problem in the interface to giac in sagemath 10.6. I do not know if it is due to packing using pacman arch linux or not. I do not build giac nor sagemath from source anymore. Just use pacman -S command to install everything.

Below I give example of one such case. First this is the version information

sudo pacman -Qi sagemath  
Version         : 10.6-6.2 
Required By     : sagemath-giac

>sudo pacman -Qi giac
Installed From  : cachyos-extra-znver4
Name            : giac
Version         : 2.0.0.10-4.1

Here is an example

>sage
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 10.6, Release Date: 2025-03-31                    │
│ Using Python 3.13.5. Type "help()" for help.                       │
└────────────────────────────────────────────────────────────────────┘
sage: var('x d c a')
(x, d, c, a)
sage: integrate(tan(d*x+c)^(4/3)/(a+I*a*tan(d*x+c))^(1/2),x,algorithm="giac")
Degree mismatch inside factorisation over extension
Warning, need to choose a branch for the root of a polynomial with parameters. This might be wrong.
The choice was done assuming [sageVARa,tan(sageVARd*sageVARx+sageVARc)]=[-74,81]
Precision problem choosing root in common_EXT, current precision 14
Precision problem choosing root in common_EXT, current precision 28
Precision problem choosing root in common_EXT, current precision 56
Precision problem choosing root in common_EXT, current precision 112
Precision problem choosing root in common_EXT, current precision 224
Precision problem choosing root in common_EXT, current precision 448
Precision problem choosing root in common_EXT, current precision 896
Unable to transpose Error: Bad Argument Value
integrate(tan(d*x + c)^(4/3)/sqrt(I*a*tan(d*x + c) + a), x)

sage: integrate(tan(d*x+c)^(4/3)/(a+I*a*tan(d*x+c))^(1/2),x,algorithm="giac")
Degree mismatch inside factorisation over extension
Warning, need to choose a branch for the root of a polynomial with parameters. This might be wrong.
The choice was done assuming [sageVARa,tan(sageVARd*sageVARx+sageVARc)]=[-27,57]
Precision problem choosing root in common_EXT, current precision 14
Precision problem choosing root in common_EXT, current precision 28
Precision problem choosing root in common_EXT, current precision 56
Precision problem choosing root in common_EXT, current precision 112
Precision problem choosing root in common_EXT, current precision 224
Precision problem choosing root in common_EXT, current precision 448
Precision problem choosing root in common_EXT, current precision 896
---------------------------------------------------------------------------
SignalError                               Traceback (most recent call last)
Cell In[7], line 1
----> 1 integrate(tan(d*x+c)**(Integer(4)/Integer(3))/(a+I*a*tan(d*x+c))**(Integer(1)/Integer(2)),x,algorithm="giac")

File /usr/lib/python3.13/site-packages/sage/misc/functional.py:789, in integral(x, *args, **kwds)
    650 """
    651 Return an indefinite or definite integral of an object ``x``.
    652 
   (...)    786     0
    787 """
    788 if hasattr(x, 'integral'):
--> 789     return x.integral(*args, **kwds)
    790 else:
    791     from sage.symbolic.ring import SR

File /usr/lib/python3.13/site-packages/sage/symbolic/expression.pyx:13229, in sage.symbolic.expression.Expression.integral (build/cythonized/sage/symbolic/expression.cpp:109379)()
  13227                 R = SR
  13228         return R(integral(f, v, a, b, **kwds))
> 13229     return integral(self, *args, **kwds)
  13230 
  13231 integrate = integral

File /usr/lib/python3.13/site-packages/sage/symbolic/integration/integral.py:1107, in integrate(expression, v, a, b, algorithm, hold)
   1105     if not integrator:
   1106         raise ValueError("Unknown algorithm: %s" % algorithm)
-> 1107     return integrator(expression, v, a, b)
   1108 if a is None:
   1109     return indefinite_integral(expression, v, hold=hold)

File /usr/lib/python3.13/site-packages/sage/symbolic/integration/external.py:263, in libgiac_integrator(expression, v, a, b)
    259 # We call Pygen on first argument because otherwise some
    260 # expressions involving derivatives result in doctest failures in
    261 # sage/interfaces/sympy.py
    262 if a is None:
--> 263     result = libgiac.integrate(Pygen(expression), v)
    264 else:
    265     result = libgiac.integrate(Pygen(expression), v, a, b)

File giac.pyx:1929, in giac.GiacFunction.__call__()

File giac.pyx:1083, in giac.Pygen.__call__()

SignalError: Segmentation fault

I found that the crash do not happen each time. If I call maxima between, this will most likely cause the crash to happen next time calling giac. But if I try the same integrate call, I will always get the crash.

The same integral works OK using giac directly. Here is example. I just changed I to i

giac
// Using locale /usr/share/locale/
// en_US.UTF-8
// /usr/share/locale/
// giac
// UTF-8
// Maximum number of parallel threads 32
Added 26 synonyms
Reading from cache /usr/share/giac/doc/en/
get_index_from_cache /usr/share/giac/doc/en/html_mtt OK
// Read 1243 entries from cache /usr/share/giac/doc/en/html_mtt
get_index_from_cache /usr/share/giac/doc/en/html_mall OK
// Read 1528 entries from cache /usr/share/giac/doc/en/html_mall
// Read 1057 entries from cache /usr/share/giac/doc/en/html_vall
Welcome to giac readline interface, version 2.0.0
(c) 2002,2023 B. Parisse & others
Homepage https://www-fourier.univ-grenoble-alpes.fr/~parisse/giac.html
Released under the GPL license 3.0 or above
See http://www.gnu.org for license details
May contain BSD licensed software parts (lapack, atlas, tinymt)
-------------------------------------------------
Press CTRL and D simultaneously to finish session
Type ?commandname for help
*** Type xcas to launch a light version of Xcas ***
0>> i*i
-1
// Time 0
1>> int(tan(d*x+c)^(4/3)/(a+i*a*tan(d*x+c))^(1/2),x)
-36*d*1/36/d^2*tan(c+d*x)^(1/3)*sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)/2*(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/(i*a*tan(c+d*x)+a)+integrate(3*(30*d*1/36/d^2+d*1/2/d/a/(-d*(-i)/a*tan(c+d*x)-d/a))/sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)*2/(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/3*(tan(c+d*x)^(1/3))^-2*d*(1+tan(c+d*x)^2),x)
// Time 0.05
2>> int(tan(d*x+c)^(4/3)/(a+i*a*tan(d*x+c))^(1/2),x)
-36*d*1/36/d^2*tan(c+d*x)^(1/3)*sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)/2*(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/(i*a*tan(c+d*x)+a)+integrate(3*(30*d*1/36/d^2+d*1/2/d/a/(-d*(-i)/a*tan(c+d*x)-d/a))/sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)*2/(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/3*(tan(c+d*x)^(1/3))^-2*d*(1+tan(c+d*x)^2),x)
// Time 0.05
3>> int(tan(d*x+c)^(4/3)/(a+i*a*tan(d*x+c))^(1/2),x)
-36*d*1/36/d^2*tan(c+d*x)^(1/3)*sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)/2*(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/(i*a*tan(c+d*x)+a)+integrate(3*(30*d*1/36/d^2+d*1/2/d/a/(-d*(-i)/a*tan(c+d*x)-d/a))/sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)*2/(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/3*(tan(c+d*x)^(1/3))^-2*d*(1+tan(c+d*x)^2),x)
// Time 0.05
4>> int(tan(d*x+c)^(4/3)/(a+i*a*tan(d*x+c))^(1/2),x)
-36*d*1/36/d^2*tan(c+d*x)^(1/3)*sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)/2*(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/(i*a*tan(c+d*x)+a)+integrate(3*(30*d*1/36/d^2+d*1/2/d/a/(-d*(-i)/a*tan(c+d*x)-d/a))/sqrt(2*a*sqrt(tan(c+d*x)^2+1)+2*a)*2/(1+i*a*tan(c+d*x)/(a+sqrt(a^2*tan(c+d*x)^2+a^2)))/3*(tan(c+d*x)^(1/3))^-2*d*(1+tan(c+d*x)^2),x)
// Time 0.06
5>>

Does this happen on sagemath 10.6 build directly from source using giac 2.0 for others?

Thanks --NasserUpdate

Here are more problems with the giac interface. DId not know if I should post separate question on this or not.

(A) Noticed sagemath hangs on call to giac integrate. But using giac, it returns evaluated instantly.

>sage
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 10.6, Release Date: 2025-03-31                    │
│ Using Python 3.13.5. Type "help()" for help.                       │
└────────────────────────────────────────────────────────────────────┘
sage: var('a b c x')
(a, b, c, x)
sage: integrate(x^(3/2)*(b*x+a)^(3/2)*(-b*c*x+a*c)^(3/2),x, algorithm="giac")

Hangs.

Now using giac directly on same PC

>giac
Welcome to giac readline interface, version 2.0.0
0>> int(x^(3/2)*(b*x+a)^(3/2)*(-b*c*x+a*c)^(3/2),x)
integrate((-2*b^2*c*x^4*sqrt(-b^2*c*x^2+a^2*c)+2*a^2*c*x^2*sqrt(-b^2*c*x^2+a^2*c))/2*(sqrt(x))^-1,x)
// Time 0.04
1>>

You see., It took only 0.04 seconds. So why does sagemath hang?

(B) Integrals which works ok in giac directly but gives

NotImplementedError: Unable to parse Giac output: -2*atan(i)+2*i-2*(sqrt(2*(sageVARx+1)^-1-1)-atan(sqrt(2*(sageVARx+1)^-1-1))) in sagemath

sage
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 10.6, Release Date: 2025-03-31                    │
│ Using Python 3.13.5. Type "help()" for help.                       │
└────────────────────────────────────────────────────────────────────┘
sage: var('a b c x d')
(a, b, c, x, d)
sage: integrate((-x^2+1)^(1/2)/(1+x)^2,x, algorithm="giac")
Warning, integration of abs or sign assumes constant sign by intervals (correct if the argument is real):
Check [abs(t_nostep)]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
File giac.pyx:1519, in giac.Pygen._symbolic_()

File /usr/lib/python3.13/site-packages/sage/calculus/calculus.py:2618, in symbolic_expression_from_string(s, syms, accept_sequence, parser)
   2616 parser._callable_constructor().set_names({k[0]: v for k, v in syms.items()
   2617                                           if _is_function(v)})
-> 2618 return parse_func(s)

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:573, in sage.misc.parser.Parser.parse_sequence (build/cythonized/sage/misc/parser.c:7623)()
    572 
--> 573     cpdef parse_sequence(self, s):
    574         """

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:590, in sage.misc.parser.Parser.parse_sequence (build/cythonized/sage/misc/parser.c:7418)()
    589 cdef Tokenizer tokens = Tokenizer(s)
--> 590 all = self.p_sequence(tokens)
    591 if tokens.next() != EOS:

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:663, in sage.misc.parser.Parser.p_sequence (build/cythonized/sage/misc/parser.c:8449)()
    662 else:
--> 663     obj = self.p_eqn(tokens)
    664 PyList_Append(all, obj)

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:754, in sage.misc.parser.Parser.p_eqn (build/cythonized/sage/misc/parser.c:9590)()
    753 """
--> 754 lhs = self.p_expr(tokens)
    755 cdef int op = tokens.next()

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:795, in sage.misc.parser.Parser.p_expr (build/cythonized/sage/misc/parser.c:10036)()
    794 cdef int op
--> 795 operand1 = self.p_term(tokens)
    796 op = tokens.next()

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:830, in sage.misc.parser.Parser.p_term (build/cythonized/sage/misc/parser.c:10404)()
    829 cdef int op
--> 830 operand1 = self.p_factor(tokens)
    831 op = tokens.next()

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:870, in sage.misc.parser.Parser.p_factor (build/cythonized/sage/misc/parser.c:10901)()
    869 elif token == c'-':
--> 870     return -self.p_factor(tokens)
    871 else:

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:873, in sage.misc.parser.Parser.p_factor (build/cythonized/sage/misc/parser.c:10937)()
    872 tokens.backtrack()
--> 873 return self.p_power(tokens)
    874 

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:901, in sage.misc.parser.Parser.p_power (build/cythonized/sage/misc/parser.c:11188)()
    900 """
--> 901 operand1 = self.p_atom(tokens)
    902 cdef int token = tokens.next()

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:967, in sage.misc.parser.Parser.p_atom (build/cythonized/sage/misc/parser.c:12032)()
    966 elif token == c'(':
--> 967     expr = self.p_expr(tokens)
    968     token = tokens.next()

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:795, in sage.misc.parser.Parser.p_expr (build/cythonized/sage/misc/parser.c:10036)()
    794 cdef int op
--> 795 operand1 = self.p_term(tokens)
    796 op = tokens.next()

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:836, in sage.misc.parser.Parser.p_term (build/cythonized/sage/misc/parser.c:10488)()
    835 while op == c'*' or op == c'/':
--> 836     operand2 = self.p_factor(tokens)
    837     if op == c'*':

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:873, in sage.misc.parser.Parser.p_factor (build/cythonized/sage/misc/parser.c:10937)()
    872 tokens.backtrack()
--> 873 return self.p_power(tokens)
    874 

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:901, in sage.misc.parser.Parser.p_power (build/cythonized/sage/misc/parser.c:11188)()
    900 """
--> 901 operand1 = self.p_atom(tokens)
    902 cdef int token = tokens.next()

File /usr/lib/python3.13/site-packages/sage/misc/parser.pyx:962, in sage.misc.parser.Parser.p_atom (build/cythonized/sage/misc/parser.c:11952)()
    961         self.parse_error(tokens, "Bad function call")
--> 962     return func(*args, **kwds)
    963 else:

File /usr/lib/python3.13/site-packages/sage/symbolic/function.pyx:1046, in sage.symbolic.function.BuiltinFunction.__call__ (build/cythonized/sage/symbolic/function.c:14333)()
   1045 if res is None:
-> 1046     res = super().__call__(
   1047             *args, coerce=coerce, hold=hold)

File /usr/lib/python3.13/site-packages/sage/symbolic/function.pyx:552, in sage.symbolic.function.Function.__call__ (build/cythonized/sage/symbolic/function.c:9262)()
    551 
--> 552         return call_registered_function(self._serial, self._nargs, args, hold,
    553                                         not symbolic_input, SR)

File /usr/lib/python3.13/site-packages/sage/symbolic/pynac_function_impl.pxi:1, in sage.symbolic.expression.call_registered_function (build/cythonized/sage/symbolic/expression.cpp:126366)()
----> 1 cpdef call_registered_function(unsigned serial,
      2                                int nargs,

File /usr/lib/python3.13/site-packages/sage/symbolic/pynac_function_impl.pxi:49, in sage.symbolic.expression.call_registered_function (build/cythonized/sage/symbolic/expression.cpp:125983)()
     48 elif nargs == 1:
---> 49     res = g_function_eval1(serial,
     50                            (<Expression>args[0])._gobj, hold)

ValueError: atan_eval(): logarithmic pole

During handling of the above exception, another exception occurred:

NotImplementedError                       Traceback (most recent call last)
Cell In[2], line 1
----> 1 integrate((-x**Integer(2)+Integer(1))**(Integer(1)/Integer(2))/(Integer(1)+x)**Integer(2),x, algorithm="giac")

File /usr/lib/python3.13/site-packages/sage/misc/functional.py:789, in integral(x, *args, **kwds)
    650 """
    651 Return an indefinite or definite integral of an object ``x``.
    652 
   (...)    786     0
    787 """
    788 if hasattr(x, 'integral'):
--> 789     return x.integral(*args, **kwds)
    790 else:
    791     from sage.symbolic.ring import SR

File /usr/lib/python3.13/site-packages/sage/symbolic/expression.pyx:13229, in sage.symbolic.expression.Expression.integral (build/cythonized/sage/symbolic/expression.cpp:109379)()
  13227                 R = SR
  13228         return R(integral(f, v, a, b, **kwds))
> 13229     return integral(self, *args, **kwds)
  13230 
  13231 integrate = integral

File /usr/lib/python3.13/site-packages/sage/symbolic/integration/integral.py:1107, in integrate(expression, v, a, b, algorithm, hold)
   1105     if not integrator:
   1106         raise ValueError("Unknown algorithm: %s" % algorithm)
-> 1107     return integrator(expression, v, a, b)
   1108 if a is None:
   1109     return indefinite_integral(expression, v, hold=hold)

File /usr/lib/python3.13/site-packages/sage/symbolic/integration/external.py:269, in libgiac_integrator(expression, v, a, b)
    267     return expression.integrate(v, a, b, hold=True)
    268 else:
--> 269     return result.sage()

File giac.pyx:1473, in giac.Pygen.sage()

File /usr/lib/python3.13/site-packages/sage/structure/parent.pyx:900, in sage.structure.parent.Parent.__call__ (build/cythonized/sage/structure/parent.c:11514)()
    898 if mor is not None:
    899     if no_extra_args:
--> 900         return mor._call_(x)
    901     else:
    902         return mor._call_with_args(x, args, kwds)

File /usr/lib/python3.13/site-packages/sage/structure/coerce_maps.pyx:293, in sage.structure.coerce_maps.NamedConvertMap._call_ (build/cythonized/sage/structure/coerce_maps.c:8162)()
    291     raise TypeError(f"cannot coerce {x} to {C}")
    292 cdef Map m
--> 293 cdef Element e = method(C)
    294 if e is None:
    295     raise RuntimeError("BUG in coercion model: {} method of {} returned None".format(self.method_name, type(x)))

File giac.pyx:1525, in giac.Pygen._symbolic_()

NotImplementedError: Unable to parse Giac output: -(2*atan(i)-2*i)*sign((sageVARx+1)^-1)-2*(sqrt(2*(sageVARx+1)^-1-1)*sign((sageVARx+1)^-1)-atan(sqrt(2*(sageVARx+1)^-1-1))*sign((sageVARx+1)^-1))
sage:

In giac, same integral gives

6>> int((-x^2+1)^(1/2)/(1+x)^2,x)
4/(-1-1/2*(-2*sqrt(-x^2+1)+2)/x)-asin(x)
// Time 0.01

I do not understand the above at all. giac returns 4/(-1-1/2*(-2*sqrt(-x^2+1)+2)/x)-asin(x) then why does sagemath says at the end above

Unable to parse Giac output: -(2*atan(i)-2*i)*sign((sageVARx+1)^-1)-2*(sqrt(2*(sageVARx+1)^-1-1)*sign((sageVARx+1)^-1)-atan(sqrt(2*(sageVARx+1)^-1-1))*sign((sageVARx+1)^-1))

There is not even atan in giac result. Also there is no sign function in giac result.

I have many more examples. But the above is enough for now., something seems very wrong in the interface. May be it has to do with using Arch linux packages, I do not know.