Maple 2023 Questions and Posts

These are Posts and Questions associated with the product, Maple 2023

The new command ArrayTools[GeneralOuterProduct] (introduced in Maple 2021) computes the generalized outer product of two rtables, and again, there exists a similar function Outer in Mma (cf. the end of this question). But in practice, it appears that this Maple command is not so fast as Mma's one. To begin with, we need to generate four lists: w, x, y, and z. Our goal is forming all possible combinations of the lowest‐level elements in a nested structure (rather than a flat structure). Now let us start the test.

In Mathematica (the real time is about ): 

And in Maple (the real time is about ): 
 

restart;

w := [`$`](0 .. 1e4):
x := [`$`](0 .. 2e3):
y := [`$`](0 .. 3e2):
z := [`$`](0 .. 4e1):

"time[real]((p1:=MmaTranslator:-Mma:-ReplaceRepeated(convert(ArrayTools:-GeneralOuterProduct(convert([w,x],Array,fill=NULL),()->`if`(nargs=2,`[]`(args),NULL),convert([y,z],Array,fill=NULL)),listlist),[]=NULL)))"

199.880

(1)

"time[real]((p2:=(s4->(s3->(s2->(s1->`[]`(s3,s1))~(s2))~([y,z]))~(s4))~([w,x])))"

7.699

(2)

p3 := parse(StringTools:-CharacterMap("{}", "[]", FileTools:-Text:-ReadFile("E:/data.txt")))

evalb(p1 = p2 and p2 = p3) = trueNULL


 

Download Outer.mw

As you can see, Maple and Mathematica returns identical results (∵p1p3); nevertheless, Maple consumes too much time: the ratio is 199.880/0.784176 ≈ 254.892. (What a wide gap between them!) 
So, is there any possibility of speeding up Maple's ArrayTools:-GeneralOuterProduct? Or any ideas of obtaining the same results in Maple efficiently?

Explanatory notes. Here is an illustrative animation: 

(Deleted because not reproducible on a different PC)

With 1D

int(1/(sqrt(x__0 - x)*sqrt(-x^2 + 1)), x = 0 .. x__0)

Warning, unable to determine if -1 is between 0 and x__0; try to use assumptions or use the AllSolutions option

 

Warning, unable to determine if 1 is between 0 and x__0; try to use assumptions or use the AllSolutions option

 

int(1/((x__0-x)^(1/2)*(-x^2+1)^(1/2)), x = 0 .. x__0)

(1)

NULL

With 2D

int(1/(sqrt(x__0-x)*sqrt(-x^2+1)), x = 0 .. x__0)

int(1/((x__0-x)^(1/2)*(-x^2+1)^(1/2)), x = 0 .. x__0)

(1)

NULL

The root cause might be the same as for this open question.

int_warning_2D.mw

int_warning_1D.mw

Update: partly resolved in Maple 2023. int_warning.mw still does not show the warning

There is a very helpful warning about using assumptions from the int command that does not appear in the attached case:
Warning, unable to determine if -1 is between 0 and x0; try to use assumptions or use the AllSolutions option
Warning, unable to determine if 1 is between 0 and x0; try to use assumptions or use the AllSolutions option

Using infolevel[int]:=5 in Maple 2022.2,  one can see that the integrals listed under int/ellalg/elltype are not the same.

My preference would be to have this warning always working. It's a reminder that Maple cannot give a general answer but that there might be solutions for a restricted real domain. The warning also does not reproduce when execution the corresponding help page
(Update: the warning reproduces in Maple 2023)

https://www.maplesoft.com/support/help/errors/view.aspx?path=Warning,%20unable%20to%20determine%20if%201%20is%20between%200%20and%20x__0;%20try%20to%20use%20assumptions%20or%20use%20the%20AllSolutions%20option

Sidenote: This kind of warning is so useful that I wonder if and how such warnings could be extended beyond  integration with piecewise solutions. (Maybe also to other commands. Maple often returns input unevaluated because there is no general solution in the complex domain, without informing the inexperienced user that there might be solutions available in the real domain.)

int_warning.mw

int_warning_with_infolevel.mw

First 30 31 32 Page 32 of 32