Error: (in int) wrong number (or type) of parameters in function iquo

This error is caused by a bug in Release 4 affecting some integrals with nested radicals.

> int(sqrt(x+sqrt(x)),x);

Error, (in int) wrong number (or type) of parameters in function iquo

> int(sqrt(1+y^(-2/3)),y=1..2);

Error, (in int) wrong number (or type) of parameters in function iquo

The bug is fixed in Release 5.

A work-around is to apply a change of variables, using changevar from the student package.

> with(student,changevar);

> changevar(sqrt(x)=t,Int(sqrt(x+sqrt(x)),x),t);

> value(");

> F:=subs(t=sqrt(x),");

It's prudent to check an integral by differentiating it and comparing to the original integrand.

> diff(F,x);

> normal("-sqrt(x+sqrt(x)));

In the second example:

> changevar(y^(-2/3)=t,Int(sqrt(1+y^(-2/3)),y=1..2),t);

> value(");

A definite integral can be checked by comparing it to a numerical approximation.

> evalf(");

> evalf(Int(sqrt(1+y^(-2/3)),y=1..2));

Confirming the necessity of checking the result, another bug produces incorrect results for very similar integrals:

> J:=changevar(y^(-2/3)=t,Int(sqrt(1-y^(-2/3)),y=1..2),t);

> value(J);

> evalf(");

The numerical approximation is

> evalf(Int(sqrt(1-y^(-2/3)),y=1..2));

In this case the correct result would be produced by combining the fractional powers.

> Int(3/2*sqrt((1-t)/t^5),t = 1/2*2^(1/3) .. 1);

> value(");

> evalf(");