aroche

Dr. Austin Roche

915 Reputation

11 Badges

13 years, 136 days
Maplesoft
Waterloo, Ontario, Canada
I am a Software Architect in the Math Group, working mostly on the Maple library. I have been working at Maplesoft since 2007, in various areas including differential equations, integration, mathematical functions, simplification, root finding, and logic. I completed a Master's degree from McGill University with a thesis in Differential Geometry, and a PhD from Simon Fraser University with a thesis on Differential Equations.

MaplePrimes Activity


These are replies submitted by aroche

Hi @C_R ,

Yes, the PackageTools:-Install command I mentioned will only work if you have first uninstalled the package.

Thank you for the detailed diagnostic information. I'll pass it on to our QA team.

Austin

Hi @C_R,

Thanks for testing this again. Just to be clear, the whole Maple session just disappears (killed by OS) when this happens? Can you give details of your OS? That might help with diagnosis. Since I can't reproduce this myself, all I can do is send it to our QA team to see if they can reproduce it. I'll file a bug report and refer to this thread and I'll try to let you know if we make any progress.

Thanks,
   Austin

P.S. Of course, as a workaround, use PackageTools:-Install(4797495082876928); to install the latest update. I assume that's working properly.

Hi @C_R ,

Sorry, I have been unclear. When I refer to "uninstalling the Maple Customer Support Updates", I mean this. Run the command:

PackageTools:-Uninstall("Maple Customer Support Updates");

You should get a popup asking you to confirm. Press OK, then close the Maple session completely. This should get you back to an environment equivalent to when you first installed Maple2026 (assuming no other packages are installed).

Then try installing the MapleCustomer Support Updates from the MapleCloud via the GUI interface, as you did in the initial report.

If you can try doing that, and you can reproduce the crash, then we can investigate. By the way, if you are able to reproduce the crash, please take a screenshot at that point. Thanks!

Austin

Hi @C_R ,

Sorry for the late reply, I just noticed this now.

It looks to me like the issue and resolution pointed to by @acer is different than the one you are reporting. There would have perhaps been an issue downloading the Updates from the cloud on the day Maple2026.0 was released, but it was fixed within a day and should have been resolved by March 12.

As of now, I cannot reproduce this issue as reported - there seems to be no issue downloading a new Customer Support Update from the cloud via the GUI interface. I wonder if it was just a temporary glitch? Would you be willing to try to see if you can still reproduce the problem downloading from the cloud (ie. after unistalling completely Maple Customer Support Updates)?

Thanks,

   Austin

Now that Maple 2026.0 is released, I have restarted the Maple Customer Support Updates.

Unfortunately, there was a technical issue with the SupportTools package that was included with the release of Maple 2026.0 which means that the reular SupportTools commands (Version, Update) are not working as expected.

To overcome this, please install the latest Maple Customer Support Update directly from the MapleCloud (via the GUI, or via the command PackageTools:-Install(4797495082876928); ).

Thank you,

  Austin

Hi @nm,

Thanks for this report! The recursion error in all 3 examples is now fixed and the fix should appear in the next beta release. The integrals all now return unevaluated:

integrand:=-3*(Pi-2*arcsin(tau))*(tau+1)^(1/2)*(tau+(tau^2-1)^(1/2))^(2*(tau^2-1)^(1/2)/(tau-1)^(1/2)/(tau+1)^(1/2))*(tau-1)^(1/2)*(-16/3*tau^2+Pi-2*arcsin(tau)+8/3)/(4*tau^2-4):

int(integrand,tau);

int(-3*(Pi-2*arcsin(tau))*(tau+1)^(1/2)*(tau+(tau^2-1)^(1/2))^(2*(tau^2-1)^(1/2)/((tau-1)^(1/2)*(tau+1)^(1/2)))*(tau-1)^(1/2)*(-(16/3)*tau^2+Pi-2*arcsin(tau)+8/3)/(4*tau^2-4), tau)

integrand:=-(tau+(tau^2-1)^(1/2))^(1/2*(tau^2-1)^(1/2)/(tau-1)^(1/2)/(tau+1)^(1/2))*(64*tau^4+Pi^2-4*Pi*arcsin(tau)+4*arcsin(tau)^2-64*tau^2+8)*(tau-1)^(1/2)*(tau+1)^(1/2)/(16*tau^2-16):

int(integrand,tau);

int(-(tau+(tau^2-1)^(1/2))^((1/2)*(tau^2-1)^(1/2)/((tau-1)^(1/2)*(tau+1)^(1/2)))*(64*tau^4+Pi^2-4*Pi*arcsin(tau)+4*arcsin(tau)^2-64*tau^2+8)*(tau-1)^(1/2)*(tau+1)^(1/2)/(16*tau^2-16), tau)

integrand:=-(tau + sqrt(tau^2 - 1))^(2*sqrt(tau^2 - 1)/(sqrt(tau - 1)*sqrt(tau + 1)))*(Pi - 2*arcsin(tau))*(12*tau^2 + Pi - 2*arcsin(tau) - 6)*sqrt(tau - 1)*sqrt(tau + 1)/(16*tau^2 - 16):

int(integrand,tau);

int(-(tau+(tau^2-1)^(1/2))^(2*(tau^2-1)^(1/2)/((tau-1)^(1/2)*(tau+1)^(1/2)))*(Pi-2*arcsin(tau))*(12*tau^2+Pi-2*arcsin(tau)-6)*(tau-1)^(1/2)*(tau+1)^(1/2)/(16*tau^2-16), tau)

Download 242067.mw

Cheers,

   Austin

@nm As mentioned already here, checking a result from int is not as simple as simplify(diff(F, x)-F) =0. The reason is that the result from int is not always a perfect antiderivative, but sometimes has jump discontinuities as explained on the int,details help page:

Handling Discontinuities
Note that the indefinite integral in Maple is defined up to a piecewise constant. Hence, the results returned by int may be discontinuous at some points. In many cases, you can ensure continuity by replacing an indefinite integration problem by the corresponding definite integral.

Consequently, the result from simplify(diff(F, x)-F) should be piecewise 0 but not necessarily 0 everywhere - there may be a countable set of points where it is non-0 (typically undefined). Indeed in the above expression you computed using this approach, there is a factor of csgn(1,cos(x)) which is piecewise 0, indeed, 0 whenever cos(x) is non-zero (assuming real x) - therefore the whole expression is piecewise 0. That's all the can be expected given the specifications of the command int.

If you want a continuous antiderivative using Maple, you need to ask for the definite integral from say 0 to x.

Hi @nm,

Another good catch! This one also got stuck eventually in a call to solve, but after investigation I realized there was something not ideal happening in the odetest code itself and I was able to take a more direct approach there instead which avoided the difficult solving that was previously being tried.

sol:=y(x) = sqrt(6)*sqrt((48*x^3 + (108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(2/3) - 240)/(108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(1/3))/12 + sqrt(6)*sqrt((12*x^2*sqrt(6)*(108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(1/3) - 48*sqrt((48*x^3 + (108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(2/3) - 240)/(108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(1/3))*x^3 - sqrt((48*x^3 + (108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(2/3) - 240)/(108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(1/3))*(108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(2/3) + 240*sqrt((48*x^3 + (108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(2/3) - 240)/(108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(1/3)))/((108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(1/3)*sqrt((48*x^3 + (108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(2/3) - 240)/(108*x^4 + 12*sqrt(-768*x^9 + 81*x^8 + 11520*x^6 - 57600*x^3 + 96000))^(1/3))))/12:
ode:=(3*x^2-2*x*y(x))+(4*y(x)^3-x^2)*diff(y(x),x)=0:
IC:=y(2)=1:
odetest(sol,[ode,IC]);

[0, 0]

(1)
Download 242037_reply.mw

This fix should appear in the next beta release.

Cheers,
     Austin 

Hi @Geoff,

is and evalb (which is what ifelse uses under the hood) have different notions of truth; that is by design. Generally, evalb answers the question of whether two expressions are identical, whereas is answers whether they are equal mathematically. An example is, is cos(x)^2 + sin(x)^2 = 1? evalb says no, because they are different expressions. is says yes, because for all complex x, the equation is true.

For type checks in particular, which this case is, the help page for is (which is the ?assume help page) notes the following:

  • Important: If the is command is used with a Maple type typename, it returns true if the corresponding type(..., typename) command returns true. This may lead to unexpected results.

Note that the implicition is one-way only. If 'type' returns false, it does not mean that 'is' should return false.

Austin

With the release of the dot release Maple 2025.1, the SupportTools package is now installed with Maple by default. One result of this is that the RemoveUpdates command now completely removes the Maple Customer Support Updates workbook from the toolbox folder, instead of reverting to version 4. This is the new behaviour in Maple 2025.1 and later releases:

Load the SupportTools package:

with(SupportTools)

[RemoveUpdates, Update, Version]

Check which version is currently installed:

Version()

`The Customer Support Updates package is not installed`

Update to the latest version (you could also call Update(latest) or Version(latest)):

Update()

Warning, you have just installed version 29 of the Customer Support Updates. In order to have this version active, please close Maple entirely, then open Maple and enter SupportTools:-Version() to confirm the active version.

After having closed and re-opened the Maple GUI (including all of its windows):

Version()

`The Customer Support Updates version in the MapleCloud is 29 and is the same as the version installed in this computer, created June 23, 2025, 10:25 hours Eastern Time.`

Now remove all updates for this release of Maple:

RemoveUpdates()

removing: C:\Users\Austin\maple\toolbox\2025\Maple Customer Support Updates/lib/Maple Customer Support Updates.maple
removing: C:\Users\Austin\maple\toolbox\2025\Maple Customer Support Updates/lib/override_maple.txt
removing: C:\Users\Austin\maple\toolbox\2025\Maple Customer Support Updates/version.txt
removing: C:\Users\Austin\maple\toolbox\2025\Maple Customer Support Updates/uninstall_manifest.mtxt

Download SupportTools2025_1.mw

Hi @nm ,

This new problem you reported is fixed now. The recursion was happening in the simplification of properties, namely `property/signum`. The new result for the odetest call is a timeout rather than a recursion:

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 28 and is the same as the version installed in this computer, created June 7, 2025, 09:10 hours Eastern Time.`

Prior to this fix this was a recursion error:

`property/signum`(LinearProp(1,integer,((1/2-1/2*I*3^(1/2))/(3/2+1/2*I*3^(1/2))+1)*(3/2+1/2*I*3^(1/2))-2));

OrProp(-1, 0, 1)

ode := diff(x(y),y) = 1/((y+1)*(y^2-y+1)/(x(y)+1)/(x(y)^2-x(y)+1))^(1/2):

sol:=-(-3+I*3^(1/2))^(1/2)*(-x(y)-1)^(1/2)*((I*3^(1/2)-2*x(y)+1)/(I*3^(1/2)+3))^(1/2)*((3^(1/2)-2*I*x(y)+I)/(3*I+3^(1/2)))^(1/2)*2^(1/2)*EllipticF((-2*x(y)-2)^(1/2)/(-3+I*3^(1/2))^(1/2),2/(3^(1/2)+I))/(x(y)^3+1)^(1/2)+2/3*I/((x(y)+1)*(x(y)^2-x(y)+1))^(1/2)*3^(1/2)*(I*(y-1/2-1/2*I*3^(1/2))*3^(1/2))^(1/2)*((y+1)/(3/2+1/2*I*3^(1/2)))^(1/2)*(-I*(y-1/2+1/2*I*3^(1/2))*3^(1/2))^(1/2)/(1/(x(y)+1)/(x(y)^2-x(y)+1)*y^3+1/(x(y)+1)/(x(y)^2-x(y)+1))^(1/2)*EllipticF(1/3*3^(1/2)*(I*(y-1/2-1/2*I*3^(1/2))*3^(1/2))^(1/2),(I*3^(1/2)/(3/2+1/2*I*3^(1/2)))^(1/2)) = _C3:

timelimit(30, (odetest(sol, ode) assuming integer));

Error, (in anonymous procedure called from evala/analyze) time expired
Download 240484.mw


Austin

@nm I do hope we can get to the bottom of this moderation problem soon. I find your contribution here very valuable and it wil lbe a shame if you leave.

For the record, here is the new bug report you posted:

> sol:=-(-3+I*3^(1/2))^(1/2)*(-x(y)-1)^(1/2)*((I*3^(1/2)-2*x(y)+1)/(I*3^(1/2)+3))^(1/2)*((3^(1/2)
       -2*I*x(y)+I)/(3*I+3^(1/2)))^(1/2)*2^(1/2)*EllipticF((-2*x(y)-2)^(1/2)/(-3+I*3^(1/2))^(1/2),
        2/(3^(1/2)+I))/(x(y)^3+1)^(1/2)+2/3*I/((x(y)+1)*(x(y)^2-x(y)+1))^(1/2)*3^(1/2)
       *(I*(y-1/2-1/2*I*3^(1/2))*3^(1/2))^(1/2)*((y+1)/(3/2+1/2*I*3^(1/2)))^(1/2)
       *(-I*(y-1/2+1/2*I*3^(1/2))*3^(1/2))^(1/2)/(1/(x(y)+1)/(x(y)^2-x(y)+1)*y^3+1/(x(y)+1)
       /(x(y)^2-x(y)+1))^(1/2)*EllipticF(1/3*3^(1/2)*(I*(y-1/2-1/2*I*3^(1/2))*3^(1/2))^(1/2),
       (I*3^(1/2)/(3/2+1/2*I*3^(1/2)))^(1/2)) = _C3:

> ode:=diff(x(y),y) = 1/((y+1)*(y^2-y+1)/(x(y)+1)/(x(y)^2-x(y)+1))^(1/2):

> odetest(sol,ode) assuming integer;
Error, (in type/complex) too many levels of recursion

Hi @nm,

I have a fix ready for the new problem you posted; it will likely appear in a new update very soon.

Also, I agree that the new report was not a duplicate although they are similar and maybe that is the criteria being used? I've asked internally about why these keep getting removed as duplicates.

-Austin

Hi @nm, In principle I agree it would be nice to have a feature like that but I am not sure about the feasbility of it. I will ask about it.

By the way, I know you are already aware, but for anyone else reading here, the recursion error you mentioned in the P.S. is now fixed.

Austin

Hi @nm,

Thanks! I've adjusted the fix mentioned above and hopefully it will be sufficient now. Please use v. 25 of the Customer Support Updates:

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 25 and is the same as the version installed in this computer, created June 3, 2025, 12:17 hours Eastern Time.`

sol:=y(x) = -(LambertW(-exp(-1/2*x))+1)^2+x:
ode:=diff(y(x),x) = (x-y(x))^(1/2):
IC:=y(2) = 2:

odetest(sol,[ode, IC]) assuming x < 1;

[-csgn(LambertW(-exp(-(1/2)*x))+1)*LambertW(-exp(-(1/2)*x))+LambertW(-exp(-(1/2)*x))-csgn(LambertW(-exp(-(1/2)*x))+1)+1, 0]


Download 240455_2.mw

Cheers,

    Austin

1 2 3 Page 1 of 3