1 | initial version |
Hello, @Nasser! I may have an idea of what is going on, and I think you found a bug! (Although I am not 100% sure.) Here is what I can deduce from reading lots of line of Sage code.
If you want to do some integration using Giac
, what really happens at a low level is the following:
ex = (x+1)._giac_()
result = ex.integrate(x._giac_())
result._sage_()
The result is obviously x^2/2+x
. The first line converts the x+1
from Sage representation to Giac representation, and stores it in ex
. The second line calls the Giac integrate
method (since the expression is now converted), which asks to integrate with respect to x
; but, once again, you have to do it converting x
to Giac representation (that's the x._giac_()
). Finally, the third line converts the result back to Sage representation, so you can work with that within Sage itself
Now, let's go to your example. The same process is performed:
ex = ((1-2*x^(1/3))^(3/4)/x)._giac_()
result = ex.integrate(x._giac_())
If you could print result
in this stage, you would see the answer
Evaluation time: 1.28
12*(1/4*ln(abs((-2*x^(1/3)+1)^(1/4)-1))-1/4*ln((-2*x^(1/3)+1)^(1/4)+1)+1/2*atan((-2*x^(1/3)+1)^(1/4))+1/3*((-2*x^(1/3)+1)^(1/4))^3)
The difference with the previous example is that there is this Evaluation time: 1.28
, which Giac seems to add as part of the result when the computation takes a little longer than usual (like 1.28 seconds). That is when Sage fails, because the line
result._sage_()
is executed, but Sage is expecting a function, not the new string of evaluation time.
My suggestion: Use Giac to integrate simple functions until the bug is fixed (I will report it right now). But, if you really want to use it to integrate a function like this, execute the two previous steps (without result._sage_()
), ten redefine x
with x = var('x')
, and copy what result
shows in your screen, without the "Evaluation time" part. You have to be careful to replace every ln
with log
, which is one of the things that the _sage_()
method should do automatically.
I hope this helps!