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!

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.