Performance
Maple 2020 improves the performance of several key functions
Natural Logarithms
Factorial
Integer Least Common Multiple
Integration in the VectorCalculus and MultivariateCalculus Packages
In Maple 2020, the natural logarithm of large integers computes much faster and with less memory.
On an i7-8650U processor, Maple 2020 computes the following in about 14 seconds. Maple 2019, however, takes 17 minutes
restart:a≔2105⁢nextprime⁡104:lengtha
301240717
CodeTools:-Usageln⁡a
1000700000⁢ln⁡2
This directly translates to performance gains in computing logarithms in all integer bases, as they work by computing natural logarithms.
The factorial function is faster for large arguments. This case is about three times faster than in Maple 2019.
threemillion ≔ 3 ⋅ 106:
CodeTools:-Usagelengththreemillion!;
18128484
The integer least common multiple function (ilcm) has become much faster when called many times on smaller arguments. The following case is about ten times faster than in Maple 2019.
N ≔103:
memory used=62.21MiB, alloc change=-110.98MiB, cpu time=562.00ms, real time=538.00ms, gc time=62.50ms
The integration commands from the VectorCalculus and MultivariateCalculus packages (and the corresponding Student subpackages) now use the collapsed rather than the nested form for multiple integration. This allows the outer integration steps to use and benefit directly from the knowledge of the ranges of the inner integration steps.
This allows computation to complete more quickly for some examples, and to succeed in some examples which previously did not succeed or which required special assumptions to be made.
The following example now computes in under one second, on a machine where previously it took 100 seconds unless executed under the assumption that abs(y)<z . withStudent:-MultivariateCalculus:MultiInt⁡4⁢−y2+z232+10⁢−y2+z2,y=−z..z,z=0..1,coordinates=cartesiany,z
59⁢π30
The following example now computes in approximately one second, whereas previously it used a prohibitively large amount of time and memory resources. MultiInt⁡x⁢y,x,y,z=Tetrahedron⁡0,0,0,1,0,0,0,1,0,0,0,1
π96
The following examples erroneously returned 0 in Maple2019. withStudent:-VectorCalculus:int⁡ⅇx+y⁢I1−x+y⁢I,x,y=Circle⁡0,0,1
2⁢π⁢−12+ⅇ2
int⁡ⅇx⁢cos⁡y,x,y=Circle⁡0,0,1
π
The following example now computes in a few seconds, but did not complete in Maple 2019. int⁡1x2+y2+z2,x,y,z=Sphere⁡2,0,0,1
−π⁢−arcsinh⁡432−2+2⁢ln⁡3
The underlying structure of the returned inert form illustrates the change in behavior. Ex≔int⁡1x2+y2+z2,x,y,z=Sphere⁡2,0,0,1,inert
Ex≔∫01∫0π∫02⁢πr2⁢sin⁡φ4⁢r⁢sin⁡φ⁢cos⁡θ+r2+4ⅆθⅆφⅆr
Int(r^2*sin(phi)/(4*r*sin(phi)*cos(theta)+r^2+4),[theta = 0 .. 2*Pi, phi = 0 .. Pi, r = 0 .. 1])
Previously the inert form would consist of multiple, nested calls to Int.
Int(Int(Int(r^2*sin(phi)/(4*r*sin(phi)*cos(theta)+r^2+4),theta = 0 .. 2*Pi),phi= 0 .. Pi),r = 0 .. 1)
Download Help Document