Question: How do I convert rational powers to floating point in an integrand, so that the integral can be numerically evaluated/

Hi folks, I'm using the IntegralTools(Change) function to change the variables of integration in a double integral to lower the order of a polynomial under a radical prior to integration (praise to Axel!). The result contains exponents under the radical and in the limits of integration that seem to defy Maple's numerical integration routines. (Sorry for not using HTML! I tried to present in 2D math, but the preview post omitted the math entirely. Just paste it into a worksheet to convert this text mess into a mathematical one.) Int(70871722182849/100000000000000000*Int((20.6066600725-0.164853280580e-1*sqrt(1.562500*(RealDomain[`^`])(10, 6)+7.58249999999*(RealDomain[`^`])(10, 6)*(RealDomain[`^`])(xi[2], 99999999999999939/100000000000000000)-3.35631780000*(RealDomain[`^`])(10, 7)*(RealDomain[`^`])(xi[1], .10000000000000)*(RealDomain[`^`])(xi[2], 99999999999999939/100000000000000000)+9.19908900000*(RealDomain[`^`])(10, 6)*(RealDomain[`^`])(xi[1], .20000000000000)+9.19908899998*(RealDomain[`^`])(10, 6)*(RealDomain[`^`])(xi[2], 99999999999999939/50000000000000000)+7.58250000000*(RealDomain[`^`])(10, 6)*(RealDomain[`^`])(xi[1], .10000000000000))+50.0000000000*(RealDomain[`^`])(xi[1], .10000000000000)+50.0000000000*(RealDomain[`^`])(xi[2], 99999999999999939/100000000000000000))*(RealDomain[`^`])(xi[2], 0.70163004961021e-1), xi[1] = (RealDomain[`^`])(c, 1000) .. (RealDomain[`^`])(d, 1000))/(RealDomain[`^`])(xi[2], 99929128277817151/100000000000000000), xi[2] = (RealDomain[`^`])(a, 100000000000000000/70871722182849) .. (RealDomain[`^`])(b, 100000000000000000/70871722182849)) If I try to evaluate this expression, no cigar. But if I manually change those powers, as in Int(70871722182849/100000000000000000*Int((20.6066600725-0.164853280580e-1*sqrt(1.562500*(RealDomain[`^`])(10, 6)+7.58249999999*(RealDomain[`^`])(10, 6)*(RealDomain[`^`])(xi[2], 99999999999999939/100000000000000000)-3.35631780000*(RealDomain[`^`])(10, 7)*(RealDomain[`^`])(xi[1], .10000000000000)*(RealDomain[`^`])(xi[2], 99999999999999939/100000000000000000)+9.19908900000*(RealDomain[`^`])(10, 6)*(RealDomain[`^`])(xi[1], .20000000000000)+9.19908899998*(RealDomain[`^`])(10, 6)*(RealDomain[`^`])(xi[2], 99999999999999939/50000000000000000)+7.58250000000*(RealDomain[`^`])(10, 6)*(RealDomain[`^`])(xi[1], .10000000000000))+50.0000000000*(RealDomain[`^`])(xi[1], .10000000000000)+50.0000000000*(RealDomain[`^`])(xi[2], 99999999999999939/100000000000000000))*(RealDomain[`^`])(xi[2], 0.70163004961021e-1), xi[1] = (RealDomain[`^`])(c, 1000) .. (RealDomain[`^`])(d, 1000))/(RealDomain[`^`])(xi[2], 99929128277817151/100000000000000000), xi[2] = (RealDomain[`^`])(a, 100000000000000000/70871722182849) .. (RealDomain[`^`])(b, 100000000000000000/70871722182849)) then the answer pops right out: evalf(eval(%, {a = 0, b = 1, c = 0, d = 1})); 0.0547840255615 The trouble is, this integration is occuring in the middle of evaluating an objective function being called by NLPSolve, so I don't want to do it manually a zillion times. I can't reverse the order of evaluation without dramatically increasing the cost of evaluation. It seems like simplify, or convert, or combine, or SOMETHING should do this, but I've been rummaging through the help files for hours, and I can't seem to shake it out of the box. Could some kind soul please point me in the right direction? Many thanks, - Jimmy
Please Wait...