Advanced Math - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


Advanced Math Improvements in Maple 2024

Maple 2024 includes many improvements to the math engine.

 

fsolve for Univariate Polynomials

Multivariate Complex Solver

Better Handling of Parameters in Solve Solutions

Pattern Matching for Definite Summation

Improvements to the Collocation Method for Solving Integral Equations

Improvements to is, coulditbe, argument, and signum

Manipulating Trigonometric Expressions

Sum, products, integrals, limits: simplification and evaluation

simplify

min/max

IntegrationTools:-Change

Verification

Miscellaneous Improvements in Advanced Math

fsolve for Univariate Polynomials

• 

The fsolve command now uses RootFinding:-Isolate for computing roots of univariate polynomials of degree greater than two.

• 

By default no method is specified. The Isolate methods ABND, RS, RC, HR, and PW are optionally accepted by fsolve and passed to Isolate.

• 

The PW method is new.  For more about that method and the improved underlying RootFinding:-Isolate command, see the Faster Univariate Complex Solver section of the Performance Improvements in Maple 2024 help page.

• 

Supplying the option NAG to fsolve will force use of the modified Laguerre method followed by iterated root-polishing, which was the prior default.

Multivariate Complex Solver

• 

The RootFinding:-Isolate command can now find complex solutions for multivariate polynomial systems.

unassign('a','b','c','d','e'):

cyclic5 := [a+b+c+d+e, a*b+b*c+c*d+d*e+e*a, a*b*c+b*c*d+c*d*e+d*e*a+e*a*b,
            a*b*c*d+b*c*d*e+c*d*e*a+d*e*a*b+e*a*b*c, a*b*c*d*e-1];

cyclic5a+b+c+d+e,ab+ae+bc+cd+de,abc+abe+ade+bcd+cde,abcd+abce+abde+acde+bcde,abcde1

(1)

map(print, RootFinding:-Isolate(cyclic5, [a,b,c,d,e])):

a=−2.618033989,b=−0.3819660113,c=1.000000000,d=1.000000000,e=1.000000000

a=−2.618033989,b=1.000000000,c=1.000000000,d=1.000000000,e=−0.3819660112

a=−0.3819660112,b=−2.618033989,c=1.000000000,d=1.000000000,e=1.000000000

a=−0.3819660112,b=1.000000000,c=1.000000000,d=1.000000000,e=−2.618033989

a=1.000000000,b=−2.618033989,c=−0.3819660113,d=1.000000000,e=1.000000000

a=1.000000000,b=−0.3819660112,c=−2.618033989,d=1.000000000,e=1.000000000

a=1.000000000,b=1.000000000,c=−2.618033989,d=−0.3819660113,e=1.000000000

a=1.000000000,b=1.000000000,c=−0.3819660113,d=−2.618033989,e=1.000000000

a=1.000000000,b=1.000000000,c=1.000000000,d=−2.618033989,e=−0.3819660113

a=1.000000000,b=1.000000000,c=1.000000000,d=−0.3819660113,e=−2.618033989

(2)

map(print, RootFinding:-Isolate(cyclic5, [a,b,c,d,e], 'complex')):

a=−2.618033989,b=−0.3819660112,c=1.,d=1.,e=1.

a=−2.618033989,b=1.,c=1.,d=1.,e=−0.3819660112

a=−0.80901699442.489898285I,b=−0.11803398870.3632712640I,c=0.3090169944+0.9510565163I,d=0.3090169944+0.9510565163I,e=0.3090169944+0.9510565163I

a=−0.80901699442.489898285I,b=0.3090169944+0.9510565163I,c=0.3090169944+0.9510565163I,d=0.3090169944+0.9510565163I,e=−0.11803398870.3632712640I

a=−0.80901699440.5877852523I,b=−0.80901699440.5877852523I,c=−0.80901699440.5877852523I,d=0.3090169944+0.2245139883I,e=2.118033989+1.538841769I

a=−0.80901699440.5877852523I,b=−0.80901699440.5877852523I,c=−0.80901699440.5877852523I,d=2.118033989+1.538841769I,e=0.3090169944+0.2245139883I

a=−0.80901699440.5877852523I,b=−0.80901699440.5877852523I,c=0.3090169944+0.2245139883I,d=2.118033989+1.538841769I,e=−0.80901699440.5877852523I

a=−0.80901699440.5877852523I,b=−0.80901699440.5877852523I,c=2.118033989+1.538841769I,d=0.3090169944+0.2245139883I,e=−0.80901699440.5877852523I

a=−0.80901699440.5877852523I,b=−0.8090169944+0.5877852523I,c=0.3090169944+0.9510565163I,d=1.,e=0.30901699440.9510565163I

a=−0.80901699440.5877852523I,b=0.30901699440.9510565163I,c=1.,d=0.3090169944+0.9510565163I,e=−0.8090169944+0.5877852523I

a=−0.80901699440.5877852523I,b=0.3090169944+0.2245139883I,c=2.118033989+1.538841769I,d=−0.80901699440.5877852523I,e=−0.80901699440.5877852523I

a=−0.80901699440.5877852523I,b=0.3090169944+0.9510565163I,c=0.30901699440.9510565163I,d=−0.8090169944+0.5877852523I,e=1.

a=−0.80901699440.5877852523I,b=1.,c=−0.8090169944+0.5877852523I,d=0.30901699440.9510565163I,e=0.3090169944+0.9510565163I

a=−0.80901699440.5877852523I,b=2.118033989+1.538841769I,c=0.3090169944+0.2245139883I,d=−0.80901699440.5877852523I,e=−0.80901699440.5877852523I

a=−0.8090169944+0.5877852523I,b=−0.80901699440.5877852523I,c=0.30901699440.9510565163I,d=1.,e=0.3090169944+0.9510565163I

a=−0.8090169944+0.5877852523I,b=−0.8090169944+0.5877852523I,c=−0.8090169944+0.5877852523I,d=0.30901699440.2245139883I,e=2.1180339891.538841769I

a=−0.8090169944+0.5877852523I,b=−0.8090169944+0.5877852523I,c=−0.8090169944+0.5877852523I,d=2.1180339891.538841769I,e=0.30901699440.2245139883I

a=−0.8090169944+0.5877852523I,b=−0.8090169944+0.5877852523I,c=0.30901699440.2245139883I,d=2.1180339891.538841769I,e=−0.8090169944+0.5877852523I

a=−0.8090169944+0.5877852523I,b=−0.8090169944+0.5877852523I,c=2.1180339891.538841769I,d=0.30901699440.2245139883I,e=−0.8090169944+0.5877852523I

a=−0.8090169944+0.5877852523I,b=0.30901699440.9510565163I,c=0.3090169944+0.9510565163I,d=−0.80901699440.5877852523I,e=1.

a=−0.8090169944+0.5877852523I,b=0.30901699440.2245139883I,c=2.1180339891.538841769I,d=−0.8090169944+0.5877852523I,e=−0.8090169944+0.5877852523I

a=−0.8090169944+0.5877852523I,b=0.3090169944+0.9510565163I,c=1.,d=0.30901699440.9510565163I,e=−0.80901699440.5877852523I

a=−0.8090169944+0.5877852523I,b=1.,c=−0.80901699440.5877852523I,d=0.3090169944+0.9510565163I,e=0.30901699440.9510565163I

a=−0.8090169944+0.5877852523I,b=2.1180339891.538841769I,c=0.30901699440.2245139883I,d=−0.8090169944+0.5877852523I,e=−0.8090169944+0.5877852523I

a=−0.8090169944+2.489898285I,b=−0.1180339887+0.3632712640I,c=0.30901699440.9510565163I,d=0.30901699440.9510565163I,e=0.30901699440.9510565163I

a=−0.8090169944+2.489898285I,b=0.30901699440.9510565163I,c=0.30901699440.9510565163I,d=0.30901699440.9510565163I,e=−0.1180339887+0.3632712640I

a=−0.3819660113,b=−2.618033989,c=1.,d=1.,e=1.

a=−0.3819660112,b=1.,c=1.,d=1.,e=−2.618033989

a=−0.11803398870.3632712640I,b=−0.80901699442.489898285I,c=0.3090169944+0.9510565163I,d=0.3090169944+0.9510565163I,e=0.3090169944+0.9510565163I

a=−0.11803398870.3632712640I,b=0.3090169944+0.9510565163I,c=0.3090169944+0.9510565163I,d=0.3090169944+0.9510565163I,e=−0.80901699442.489898285I

a=−0.1180339887+0.3632712640I,b=−0.8090169944+2.489898285I,c=0.30901699440.9510565163I,d=0.30901699440.9510565163I,e=0.30901699440.9510565163I

a=−0.1180339887+0.3632712640I,b=0.30901699440.9510565163I,c=0.30901699440.9510565163I,d=0.30901699440.9510565163I,e=−0.8090169944+2.489898285I

a=0.30901699440.9510565163I,b=−0.80901699440.5877852523I,c=−0.8090169944+0.5877852523I,d=0.3090169944+0.9510565163I,e=1.

a=0.30901699440.9510565163I,b=−0.8090169944+0.5877852523I,c=1.,d=−0.80901699440.5877852523I,e=0.3090169944+0.9510565163I

a=0.30901699440.9510565163I,b=−0.8090169944+2.489898285I,c=−0.1180339887+0.3632712640I,d=0.30901699440.9510565163I,e=0.30901699440.9510565163I

a=0.30901699440.9510565163I,b=−0.1180339887+0.3632712640I,c=−0.8090169944+2.489898285I,d=0.30901699440.9510565163I,e=0.30901699440.9510565163I

a=0.30901699440.9510565163I,b=0.30901699440.9510565163I,c=−0.8090169944+2.489898285I,d=−0.1180339888+0.3632712640I,e=0.30901699440.9510565163I

a=0.30901699440.9510565163I,b=0.30901699440.9510565163I,c=−0.1180339888+0.3632712640I,d=−0.8090169944+2.489898285I,e=0.30901699440.9510565163I

a=0.30901699440.9510565163I,b=0.30901699440.9510565163I,c=0.30901699440.9510565163I,d=−0.8090169944+2.489898285I,e=−0.1180339887+0.3632712640I

a=0.30901699440.9510565163I,b=0.30901699440.9510565163I,c=0.30901699440.9510565163I,d=−0.1180339887+0.3632712640I,e=−0.8090169944+2.489898285I

a=0.30901699440.9510565163I,b=0.3090169944+0.9510565163I,c=−0.80901699440.5877852523I,d=1.,e=−0.8090169944+0.5877852523I

a=0.30901699440.9510565163I,b=1.,c=0.3090169944+0.9510565163I,d=−0.8090169944+0.5877852523I,e=−0.80901699440.5877852523I

a=0.30901699440.2245139883I,b=−0.8090169944+0.5877852523I,c=−0.8090169944+0.5877852523I,d=−0.8090169944+0.5877852523I,e=2.1180339891.538841769I

a=0.30901699440.2245139883I,b=2.1180339891.538841769I,c=−0.8090169944+0.5877852523I,d=−0.8090169944+0.5877852523I,e=−0.8090169944+0.5877852523I

a=0.3090169944+0.2245139883I,b=−0.80901699440.5877852523I,c=−0.80901699440.5877852523I,d=−0.80901699440.5877852523I,e=2.118033989+1.538841769I

a=0.3090169944+0.2245139883I,b=2.118033989+1.538841769I,c=−0.80901699440.5877852523I,d=−0.80901699440.5877852523I,e=−0.80901699440.5877852523I

a=0.3090169944+0.9510565163I,b=−0.80901699442.489898285I,c=−0.11803398870.3632712640I,d=0.3090169944+0.9510565163I,e=0.3090169944+0.9510565163I

a=0.3090169944+0.9510565163I,b=−0.80901699440.5877852523I,c=1.,d=−0.8090169944+0.5877852523I,e=0.30901699440.9510565163I

a=0.3090169944+0.9510565163I,b=−0.8090169944+0.5877852523I,c=−0.80901699440.5877852523I,d=0.30901699440.9510565163I,e=1.

a=0.3090169944+0.9510565163I,b=−0.11803398870.3632712640I,c=−0.80901699442.489898285I,d=0.3090169944+0.9510565163I,e=0.3090169944+0.9510565163I

a=0.3090169944+0.9510565163I,b=0.30901699440.9510565163I,c=−0.8090169944+0.5877852523I,d=1.,e=−0.80901699440.5877852523I

a=0.3090169944+0.9510565163I,b=0.3090169944+0.9510565163I,c=−0.80901699442.489898285I,d=−0.11803398880.3632712640I,e=0.3090169944+0.9510565163I

a=0.3090169944+0.9510565163I,b=0.3090169944+0.9510565163I,c=−0.11803398880.3632712640I,d=−0.80901699442.489898285I,e=0.3090169944+0.9510565163I

a=0.3090169944+0.9510565163I,b=0.3090169944+0.9510565163I,c=0.3090169944+0.9510565163I,d=−0.80901699442.489898285I,e=−0.11803398870.3632712640I

a=0.3090169944+0.9510565163I,b=0.3090169944+0.9510565163I,c=0.3090169944+0.9510565163I,d=−0.11803398870.3632712640I,e=−0.80901699442.489898285I

a=0.3090169944+0.9510565163I,b=1.,c=0.30901699440.9510565163I,d=−0.80901699440.5877852523I,e=−0.8090169944+0.5877852523I

a=1.,b=−2.618033989,c=−0.3819660112,d=1.,e=1.

a=1.,b=−0.80901699440.5877852523I,c=0.3090169944+0.9510565163I,d=0.30901699440.9510565163I,e=−0.8090169944+0.5877852523I

a=1.,b=−0.8090169944+0.5877852523I,c=0.30901699440.9510565163I,d=0.3090169944+0.9510565163I,e=−0.80901699440.5877852523I

a=1.,b=−0.3819660112,c=−2.618033989,d=1.,e=1.

a=1.,b=0.30901699440.9510565163I,c=−0.80901699440.5877852523I,d=−0.8090169944+0.5877852523I,e=0.3090169944+0.9510565163I

a=1.,b=0.3090169944+0.9510565163I,c=−0.8090169944+0.5877852523I,d=−0.80901699440.5877852523I,e=0.30901699440.9510565163I

a=1.,b=1.,c=−2.618033989,d=−0.3819660112,e=1.

a=1.,b=1.,c=−0.3819660112,d=−2.618033989,e=1.

a=1.,b=1.,c=1.,d=−2.618033989,e=−0.3819660113

a=1.,b=1.,c=1.,d=−0.3819660113,e=−2.618033989

a=2.1180339891.538841769I,b=−0.8090169944+0.5877852523I,c=−0.8090169944+0.5877852523I,d=−0.8090169944+0.5877852523I,e=0.30901699440.2245139883I

a=2.1180339891.538841769I,b=0.30901699440.2245139883I,c=−0.8090169944+0.5877852523I,d=−0.8090169944+0.5877852523I,e=−0.8090169944+0.5877852523I

a=2.118033989+1.538841769I,b=−0.80901699440.5877852523I,c=−0.80901699440.5877852523I,d=−0.80901699440.5877852523I,e=0.3090169944+0.2245139883I

a=2.118033989+1.538841769I,b=0.3090169944+0.2245139883I,c=−0.80901699440.5877852523I,d=−0.80901699440.5877852523I,e=−0.80901699440.5877852523I

(3)

Better Handling of Parameters in Solve Solutions

• 

By default, solve gives a representative solution for the following problems:

solve( cos(x)*sin(x)=0, x );

π2,0

(4)

solve( cos(x)=1/2, x );

π3

(5)
• 

The allsolutions option can be used to get a more complete solution, using _Z to represent any integer.

solve( cos(x)=1/2, x, 'allsolutions' );

13π+2π_Z1~,13π+2π_Z1~

(6)
• 

If preferred, the new command SolveTools:-DisplaySolutions can be used to format the solution in a more readable way using standard notation.

sol1 := solve(x*sin(x)^2 = -x, [x], allsolutions);

sol1x=0,x=Iln1+2+2π_Z2~,x=Iln1+2+π+2π_Z2~,x=Iln1+2+2π_Z3~,x=Iln1+2+π+2π_Z3~

(7)

SolveTools:-DisplaySolutions( sol1 );

x=0x=Iln1+2+2πn__1x=Iln1+2+π+2πn__1n__1x=Iln1+2+2πn__2n__2x=Iln1+2+π+2πn__2

(8)
• 

When called with the option allsolutions=true in Maple 2023 and earlier, solve may return a solution in terms of parameters starting with _B, _NN, and _Z. In Maple 2024, solutions will no longer include the _B variables but instead solve will expand those automatically into multiple solutions.

• 

The _NN and _Z parameters typically stand for all natural numbers or integers, respectively, so cannot be expanded, but the new command SolveTools:-DisplaySolutions can be used to format them in an easier to read format.

Pattern Matching for Definite Summation

• 

Maple 2024 includes a new pattern matching method for definite summation problems, accessible through the sum command. This method uses a database of known definite summation problems with their closed forms. By matching a given definite sum to all entries of the database, Maple can now return closed forms for several definite sums which earlier versions were unable to compute.

• 

The sum command now recognizes power series expansions of some non-hypergeometric functions.

sum(z^k*(-k)^(k-1)/k!, k=1..infinity) assuming abs(z) < exp(-1);

LambertWz

(9)

sum(bernoulli(2*n)*(-4)^n*(1-4^n)*x^(2*n-1)/(2*n)!, n=1..infinity) assuming abs(x) < Pi/2;

tanx

(10)

sum(Stirling2(n,k)*z^k, k=0..n) assuming n::nonnegint;

BellBn&comma;z

(11)
• 

The database also contains some definite sums involving the floor function.

sum(binomial(n,k)*binomial(n-k,n-2*k)/4^k, k=0..floor(n/2)) assuming n::nonnegint;

2n2nn

(12)
• 

Option formal can be used instead of assumptions.

sum(z^k*(-k)^(k-1)/k!, k=1..infinity);

k=1zkkk1k!

(13)

sum(z^k*(-k)^(k-1)/k!, k=1..infinity, 'formal');

LambertWz

(14)

Improvements to the Collocation Method for Solving Integral Equations

• 

The intsolve command now supports special nodes, custom nodes, and custom basis functions for the collocation method. For example, consider the following integral equation:

a := 0;

a0

(15)

b := 2 * Pi;

b2π

(16)

ie := sin(x) - 3 * f(x) - 2 * int( y * f(y), y = a .. b );

iesinx3fx202πyfy&DifferentialD;y

(17)
• 

We can find the exact solution, and use it to compare with two collocation approximations:

p := rhs( intsolve( ie, f(x) ) );

psinx3+4π34π2+3

(18)
• 

For our first approximation, we use Chebyshev nodes and polynomial degree of 10:

q := rhs( intsolve( ie, f(x), 'method' = 'collocation', 'nodes' = 'chebyshev', 'order' = 10 ) );

q0.0986117180199675+0.333260721136443x+0.000459774186883343x20.0566851981500202x3+0.00141350936973957x4+0.00175692703471011x5+0.000451378463928863x60.000189985444315232x7+0.0000202277956660655x87.15411949355276×10−7x9+1.39364321385603×10−15x10

(19)

plot( abs( p - q ), x = a .. b, 'color' = 'blue', 'adaptive' = 'false', 'numpoints' = 1000, 'size' = [0.4,0.4], 'title' = "Error of Collocation Solution Using Chebyshev Nodes" );

• 

For our second approximation, we specify a custom basis, which gives the exact solution here:

r := rhs( intsolve( ie, f(x), 'method' = 'collocation', 'basis' = [1,x,sin(x),cos(x)], 'numeric' = 'false' ) );

rsinx3+4π34π2+3

(20)

is( p = r );

true

(21)

a, b, q, r := 'a, b, q, r':

Improvements to is, coulditbe, argument, and signum

• 

Maple 2024 includes improvements to assumption handling, leading to better results from the is, coulditbe, argument, and signum commands.

• 

is and coulditbe are now careful when dealing with inequalities with nonreal operands:

is(I*((x-1)^20+1)+I<0);

false

(22)
• 

A subalgorithm used by is and coulditbe which assumed that variables were real has been corrected, leading to these improved answers:

conditions := [w^2 = abs(w)^2, w = conjugate(w), cos(z)/abs(cos(z)) = abs(cos(z))/cos(z)]:

map(is, conditions);

false&comma;false&comma;false

(23)

map(is, conditions) assuming real;

true&comma;true&comma;true

(24)
• 

Some improvements in normalization of properties (see assume) have been fixed, leading to the following improvements for top-level calls.

  

This call to coulditbe now returns immediately:

coulditbe(y^4*(y^8+6*y^4+1)^2*(y-1)^6*(y+1)^6*(y^2+1)^6, 0) assuming y::real;

true

(25)
  

This square root previously simplified only by replacing z/x by a new variable. Now that's not necessary:

sqrt(sin(z/x)^2) assuming 0<z/x, z/x<Pi/2;

sinzx

(26)
  

These results no longer return FAIL:

coulditbe(y^2*(y^4+1)/(y^2+1)=0) assuming y::real;

true

(27)

is(1/x=0) assuming x=0;

false

(28)

coulditbe(-N^(1/2)/Pi,integer) assuming (N^(1/2)/Pi)::Not(integer);

false

(29)
• 

coulditbe is better at dealing with the conjunction of multiple conditions which depend on the same subexpression:

coulditbe(And(k::integer,k <= 20,0 <= k));

true

(30)
• 

Maple 2023 included some new improved functionality for recognizing difference of squares patterns in is and coulditbe:

is(0 <= sqrt(p^3 + q^2) + q) assuming (0 < p, q::real);

true

(31)

This feature has been improved again for Maple 2024. For example, this problem:

is((a*u+b)^(1/2)/b^(1/2)-1>0) assuming a>0,b>0,u>0;

true

(32)
  

is now solved by recognizing that it can be transformed into is((a*u+b)/b-1 > 0), i.e. is(a*u/b > 0).

• 

Maple 2023 included some improvements in coulditbe/is when there are assumptions involving Re or Im:

is(b, real) assuming 0 < Re(b);

false

(33)

is(r + i*I, real) assuming r < 0, i::real;

false

(34)
• 

These improvements have been extended for Maple 2024:

coulditbe(x<0) assuming Im(x)>0;

false

(35)

coulditbe(x<0) assuming Re(x)>0;

false

(36)

piecewise(a<0,0,a<=0,1,Im(a)<>0,2) assuming Im(a)<>0;

2

(37)
• 

This answer used to be true which was incorrect:

coulditbe((a+I*b+1)/2, integer) assuming abs(a)<1, a::real, b::real;

FAIL

(38)
• 

There are also some improved results from is when there are multiple related inequality assumptions:

is(exp(I*y)^2, real) assuming 0<y, y<t, 0<t;

false

(39)
• 

An improvement in AndProp led to this new result in coulditbe:

coulditbe(a+I*b, imaginary) assuming b::real, a>0;

false

(40)
• 

In Maple 2023, some improvements were made to handle nested signum:

signum(a - signum(a)) assuming (1 < a^2);

signuma

(41)
• 

For Maple 2024, argument and signum now recognize determining assumptions such as the following:

(argument, signum)(x) assuming x/(I+1) > 0;

π4,22+I22

(42)

Manipulating Trigonometric Expressions

• 

Before Maple 2023, simplify in general converted trig functions to sincos form. Now it uses any of the 6 trig functions (sin, cos, tan, sec, csc, cot) and the corresponding hyperbolic trig functions (sinh, cosh, etc.) to express the simplified answer. As a result, many examples can be returned in a more compact form:

simplify((sin(x)+cos(x))/sin(x));

1+cotx

(43)
  

Along the same lines, 1/tan and 1/cot simplify to cot and tan respectively as of Maple 2024:

map(simplify,[1/tan(x),1/cot(x)]);

cotx&comma;tanx

(44)
• 

Trig simplification now includes combining trig functions by default:

simplify((sin(8) - 2*sin(4))/(1 + cos(8) - 2*cos(4)));

tan4

(45)

simplify(2*c[1]*tan(sqrt(3)*x/4)/(1 + tan(sqrt(3)*x/4)^2) + c[2]*(1 - tan(sqrt(3)*x/4)^2)/(1 + tan(sqrt(3)*x/4)^2));

c1sin3x2+c2cos3x2

(46)
• 

Conversion of tan(x/2) to sincos now just uses tan=sin/cos, which is consistent with what happens with arbitrary arguments:

convert~([tan(x/2), tan(f(x)/2), tan(x)], sincos);

sinx2cosx2&comma;sinfx2cosfx2&comma;sinxcosx

(47)
• 

simplify more consistently uses the inverse trig identities arccos + arcsin = arccsc + arcsec = Pi/2 to convert expressions to a more compact form if possible:

simplify([Pi/2 - arcsin(sin(x)), Pi/2 - arccos(cos(x)), Pi/2 - arccsc(csc(x)), Pi/2 - arcsec(sec(x))]);

arccossinx&comma;arcsincosx&comma;arcseccscx&comma;arccscsecx

(48)
• 

Combining with respect to trig no longer expands unnecessarily. This result is now more compact:

combine(-7+(4*cos(1/7*Pi)^3+I*cos(1/14*Pi)-3*cos(1/7*Pi))*(-7^(5/7)*O*(I*cos(5/14*Pi)+cos(1/7*Pi)))^(1/2), trig);

7+cos3π7+Icosπ14757OIcos5π14+cosπ7

(49)
• 

simplify now converts this expression to a simpler one involving radicals:

simplify(-1/7-(-1/7*I*7^(5/7)*exp(2/7*I*Pi)*sin(1/7*Pi)-1/7*cos(1/7*Pi)*7^(5/7)*exp(2/7*I*Pi))^(7/2));

17−127−1377

(50)
• 

simplify in Maple 2023 included an improved ability to remove terms in trig arguments which are integer multiples of Pi/2:

simplify(sin(Pi*(x + z))) assuming z::integer;

sinπx−1z

(51)
• 

This feature has been improved for Maple 2024. For example this previously simplified only without the assumption:

simplify(cos((x+1)*Pi/2)) assuming x::integer;

sinπx2

(52)
• 

In previous versions of Maple, to get the following simplified answer, simplify had to be called twice:

simplify((-2*F+2*_y1*sin(y)*cos(y))/(-1+cos(2*y)), trig);

Fcscy2_y1coty

(53)
• 

Due to improved trig simplifications this integral is now solved:

int(sqrt((1-cos(t))^2+sin(t)^2)*(t-sin(t)),t=0..Pi);

163

(54)
  

and this answer is smaller:

int(1/sqrt(cos(x)-cos(x0)), x=0..x0) assuming x0>0,x0<Pi;

2InverseJacobiAMx02&comma;cscx02sinx02

(55)
  

Similarly this result from dsolve is more compact:

dsolve(diff(y(t), t, t)-sin(t)*(diff(y(t), t))-y(t));

yt=c__1HeunC2&comma;12&comma;12&comma;−1&comma;158&comma;cost2+12+c__2cost2HeunC2&comma;12&comma;12&comma;−1&comma;158&comma;cost2+12

(56)
• 

After various improvements in Maple 2023 and Maple 2024, the length of this result from simplify has decreased by more than 10 times:

simplify(-8/Pi^2/cosh(3/2*Pi)*(1/2*exp(1/2*Pi*x-3/2*Pi)-1/2*exp(-1/2*Pi*x+3/2*Pi))+8/9/Pi^2/cosh(9/2*Pi)*(1/2*exp(3/2*Pi*x-9/2*Pi)-1/2*exp(-3/2*Pi*x+9/2*Pi))-8/25/Pi^2/cosh(15/2*Pi)*(1/2*exp(5/2*Pi*x-15/2*Pi)-1/2*exp(-5/2*Pi*x+15/2*Pi))+8/49/Pi^2/cosh(21/2*Pi)*(1/2*exp(7/2*Pi*x-21/2*Pi)-1/2*exp(-7/2*Pi*x+21/2*Pi))-8/81/Pi^2/cosh(27/2*Pi)*(1/2*exp(9/2*Pi*x-27/2*Pi)-1/2*exp(-9/2*Pi*x+27/2*Pi)), trig, size=false);

4&ExponentialE;π3+x2+&ExponentialE;π3x2sech3π2+&ExponentialE;3π3+x29&ExponentialE;3π3x29sech9π2+&ExponentialE;5π3+x225+&ExponentialE;5π3x225sech15π2+&ExponentialE;7π3+x249&ExponentialE;7π3x249sech21π2+&ExponentialE;9π3+x281+&ExponentialE;9π3x281sech27π2π2

(57)

Sum, products, integrals, limits: simplification and evaluation

• 

For Maple 2023, there were a number of improvements in evaluating integrals using transformations involving the integration variable:

eval(Int(f(x, a), a), a = x);

` `xfx&comma;_a&DifferentialD;_a

(58)

eval(Intat(f(x, y), x = g(x)), y=x);

` `gxf_a&comma;x&DifferentialD;_a

(59)
• 

Also as of Maple 2023, simplify began to follow the semantics of sum in applying limit instead of eval when simplifying a Sum at a singular point:

tmp := Sum(sin(k)/k, k = 0 .. 0):

(simplify = value)(tmp);

1=1

(60)

and improved its ability to pull out provably non-zero factors from potentially infinite sums, integrals, limits, products, etc.:

simplify(Sum(-sin(n*Pi*x)*(exp(Pi) - exp(-Pi))*(-1 + (-1)^n)/n, n = 2 .. infinity));

n=2sinnπx1+−1nn&ExponentialE;π&ExponentialE;π

(61)

simplify(Int(2*Pi*n*f(x), x = 0 .. infinity));

2π0fxn&DifferentialD;x

(62)
• 

In Maple 2024, evaluation of a sum or product involving t^k at t=0 now correctly recognizes that the k=0 term should actually be 1:

eval(sum(t^k*f(k), k=0..infinity), t=0);

f0

(63)

eval(Product(f(t^k), k=0..infinity), t=0);

k=00f1k=1f0

(64)
• 

Also, simplify now recognizes when sums or products can absorb extra terms or factors to simplify the whole expression:

simplify(f(n)+Sum(f(k), k=1..n-1)) assuming integer;

k=1nfk

(65)

simplify(f(n)*Product(f(k), k=1..n-1)) assuming integer;

k=1nfk

(66)

simplify

Argument processing, options and core algorithm improvements

• 

As of Maple 2023, simplify included the following improvements to its option processing and core algorithms:

  

It raises an exception when there is an unexpected argument passed to it:

simplify(sin(x + Pi/4), foo);

Error, (in `simplify/do`) unexpected argument: foo

  

The symbolic option is now effective even when given not as the last argument:

simplify(sqrt(x^2), symbolic, sqrt);

x

(67)
  

When multiple particular simplification procedures are requested via extra arguments to simplify, they will each be retried as many times as needed to obtain the full simplification. For example, the extra arguments exp and RootOf can now be given in either order to achieve the full simplification:

e := RootOf(_Z^2 - exp(2*RootOf(_Z^2+1,index=1)*x) - 1):

simplify( diff(e-subs(RootOf(_Z^2+1,index=1) = I, e), x), RootOf, exp);

0

(68)
  

It uses expand more extensively to simplify functions:

simplify(polar(sqrt(13), arctan(3/2)) + polar(sqrt(65), -arctan(7/4)));

64I

(69)
  

It avoids normalizing pure rational polynomials when there is no advantage in doing so:

simplify((x + 1)^5/a + 1);

x+15a+1

(70)
  

... or when the benefits are outweighed by the drawbacks. In this case, the input expression, although non-polynomial, is nevertheless considered simpler than the 307-term polynomial which results from dividing through by the denominator:

simplify((x^307 - 1)/(x - 1));

x3071x1

(71)
  

The latter can of course still be obtained via normal or factor:

type(normal((x^307 - 1)/(x - 1)), polynom);

true

(72)
• 

As of Maple 2024, simplify cancels factors whose ratio is the imaginary unit:

simplify((I*x+1)/(x-I) );

I

(73)

Elliptic functions

Maple now has improved simplification and normalization for various Elliptic functions.

• 

Symmetries in EllipticPi are now used to automatically factor out or remove minus signs from its arguments:

EllipticPi(1, nu, -k), EllipticPi(nu, -k), EllipticPi(-z, nu, -k);

EllipticPiν&comma;k,EllipticPiν&comma;k,EllipticPiz&comma;ν&comma;k

(74)
• 

A symmetry in EllipticF is now used to simplify its arguments:

simplify(EllipticF(z*k, 1/k));

EllipticFz&comma;kk

(75)

simplify([EllipticPi((-1)^n, nu, k), EllipticF((-1)^n, k)]) assuming n::integer;

−1nEllipticPiν&comma;k&comma;−1nEllipticKk

(76)

simplify(EllipticPi((z^2)^(1/2),nu,k), EllipticPi);

z2EllipticPiz&comma;ν&comma;kz

(77)

tmp := [EllipticE, EllipticK](k*I/sqrt(1-k^2)):

simplify(tmp);

EllipticEkk21&comma;EllipticKkk21

(78)

simplify(tmp) assuming k^2 < 1;

EllipticEkk2+1&comma;EllipticKkk2+1

(79)

simplify((-2*k^2 + 2)*EllipticE(k*I/sqrt(-k^2 + 1)) - EllipticK(k*I/sqrt(-k^2 + 1)) + (-2*EllipticE(k) + EllipticK(k))*sqrt(-k^2 + 1)) assuming 0<k, k<1;

0

(80)
• 

Limits of Elliptic functions at certain infinite values are now more accurate. This example previously returned a complex infinity:

evalf(Limit(BesselI(0,z)+EllipticPi(1/2,1/z),z = -infinity));

Float

(81)

binomial, Beta, GAMMA

• 

Simplification of binomial was introduced in Maple 2023 and has been improved for Maple 2024:

simplify(4^n*binomial(n - 1/2, n) - binomial(2*n, n));

0

(82)
• 

Conversion and simplification of Beta has been introduced for Maple 2024:

convert(Beta(a,1-a),elementary);

πsinπa

(83)

simplify(-1/2*Beta(1/6,1/2)+1/3*Pi^2*2^(2/3)/GAMMA(2/3)^3*3^(1/2));

0

(84)
• 

This integral now returns (unevaluated) quickly due to improved simplification of GAMMA:

int((1/2)^(2061+2*z)/z/(1+2*z)*GAMMA(3/2+z)^2/GAMMA(z)^2, z);

122061+2zΓ32+z2z1+2zΓz2&DifferentialD;z

(85)

piecewise

• 

In Maple 2023, simplify became better at recognizing when function calls can be factored out of piecewise functions:

simplify(piecewise(x < 0, f(y), f(z)));

fyx<0z0x

(86)
• 

In Maple 2024, simplify and combine are both now better at recognizing when two piecewise branch values can be merged into one:

{simplify, combine}(piecewise(x <= 0,2*ln(1-x),0 < x,ln((x-1)^2))) assuming x,real;

lnx12

(87)
  

and when multiple piecewise functions can be merged into one:

{simplify, combine}(piecewise(a<0, f1(a), a>0, f2(a), Or(a=0, Im(a)<>0), f3(a)) + piecewise(a<0, g1(a), a>0, g2(a), Or(a=0, Im(a)<>0), g3(a)));

f1a+g1aa<0f2a+g2a0<af3a+g3aa=0a0

(88)
  

As a result the following integral can now be solved in terms of limits:

int(piecewise(t <= 1,-(cos(alpha*t)-1)/alpha,1 < t,(cos(alpha*t)*cos(alpha)+sin(alpha*t)*sin(alpha)-cos(alpha*t))/alpha)*sin(alpha*x),alpha=0..infinity);

limαSiαxSiαt+x2+Siαtx2t<1limαSiαtx2Siαt+x2Siαx+t12+Siαx+t121t

(89)

logarithm and dilogarithm

• 

Simplification and numeric evaluation of expressions containing ln with large integer components is now handled more carefully:

tmp := simplify(-127/6*ln(2)-1/2*ln(3)+7/6*ln(233512967+14798283*249^(1/2))+ln(11014713425-698029101*249^(1/2)));

tmp127ln26ln32+7ln233512967+147982832496+ln11014713425698029101249

(90)

evalf[20](tmp);

−1.8847449302970215778

(91)
• 

Simplification of dilog is now more careful to avoid simplifications which are branch dependent. For example, this call to simplify now correctly returns the input unchanged:

simplify(dilog(s + 2) + dilog(1/(s + 2))) assuming s < -2;

dilogs+2+dilog1s+2

(92)

power and radical

• 

In Maple 2023, there were some improvements in the simplification of radicals which led to the following improved results:

simplify(sqrt(x^2), sqrt) assuming x::real;

x

(93)

simplify(-1/(x*(-y + sqrt(-2/x))*(y + sqrt(-2/x))));

1y2x+2

(94)

simplify((A + B*sqrt(x))^a*a^2*B^2/(4*x*(A + B*sqrt(x))^2) - (A + B*sqrt(x))^a*a*B/(4*x^(3/2)*(A + B*sqrt(x))) - (A + B*sqrt(x))^a*a*B^2/(4*x*(A + B*sqrt(x))^2) + a*B*(A + B*sqrt(x))^(a - 1)/(4*x^(3/2)) - pochhammer(a - 1, 2)*B^2*(A + B*sqrt(x))^(a - 2)/(4*x));

0

(95)

simplify(-B*(A^2*sqrt(x) + 2*A*B*x + B^2*x^(3/2))*(a - 1)*(A + B*sqrt(x))^(a - 2) + (2*A*B*sqrt(x) + B^2*x + A^2)*(A + B*sqrt(x))^(a - 1) - (-B*(a - 2)*sqrt(x) + A)*(A + B*sqrt(x))^a);

0

(96)
• 

For Maple 2024, simplify(.., power) no longer expands unnecessarily. For this example the new result is now more compact:

simplify( (Pi^k*2^(2*k+2)*5^(2*k+1)/(-1+2*k)*hypergeom([-2*k-1, -k+1/2],[3/2-k],1/100)/GAMMA(2*k+2)+25*Pi^(k+1)*(2*k+1)*(3+2*k)/GAMMA(k+5/2)^2*sec(Pi*k))*(-1)^(3*k), power);

20πk4k25khypergeom2k1&comma;k+12&comma;32k&comma;11001+2kΓ2k+2+25πk+12k+13+2ksecπkΓk+522−13k

(97)
• 

Also, simplify no longer pulls polynomial factors out of a radical without good reason:

simplify(I/(cos(x)-1)^(3/2), radical) assuming 0 < x,x < 1/2*Pi;

1cosx+132

(98)

min/max

• 

As of Maple 2023, simplify included better normalization for min and max:

simplify(Vector([min(x + y, x + z), max(3*x, 3*y), max(-x, -y), min(x, -y) + max(y, -x), min(x, -y) - max(y, -x), min(x, -x) - max(x, -x), min(x, -x) + max(x, -x)]));

miny&comma;z+x3maxx&comma;yminx&comma;y02minx&comma;y2minx&comma;x0

(99)

(simplify(max(z*x, z*y)) assuming (z < 0));

zminx&comma;y

(100)
• 

For Maple 2024, min and max are now better at recognizing whether inputs are real. For example, this is a real number in disguise:

alias(r= -1/2*(-cos(RootOf(sin(_Z)^2*_Z^2+sin(_Z)^2+6*_Z*sin(_Z)+8,-0.-1.931327404*I))-3)*csc(RootOf(sin(_Z)^2*_Z^2+sin(_Z)^2+6*_Z*sin(_Z)+8,3.761757270))*sin(1/2*(-cos(RootOf(sin(_Z)^2*_Z^2+sin(_Z)^2+6*_Z*sin(_Z)+8,-0.-1.931327404*I))-3)*csc(RootOf(sin(_Z)^2*_Z^2+sin(_Z)^2+6*_Z*sin(_Z)+8,3.761757270)))^2-1/2*(-cos(RootOf(sin(_Z)^2*_Z^2+sin(_Z)^2+6*_Z*sin(_Z)+8,-0.-1.931327404*I))-3)*csc(RootOf(sin(_Z)^2*_Z^2+sin(_Z)^2+6*_Z*sin(_Z)+8,3.761757270))):

evalf(r);

−7.786927399+0.I

(101)

Im(r);

0

(102)
  

min no longer complains that the number is not real:

min(2,r);

min2&comma;r

(103)

alias(:-r=:-r):

IntegrationTools:-Change

• 

In Maple 2023, IntegrationTools:-Change became better at restricting the change of variables to the subinterval where it is valid. For example, in this case the transformation is not valid on x=Pi/4..Pi/2 so it is only applied to the subinterval x=0..Pi/4:

IntegrationTools:-Change(Int(sin(x)/(1 + sin(x)*cos(x))^(1/2), x = 0 .. 1/2*Pi), x = arcsin(y)/2);

01sinarcsiny2y2+14+2y&DifferentialD;y+π4π2sinx1+sinxcosx&DifferentialD;x

(104)
• 

After some more improvements for Maple 2024, this change of variables can now be done:

tmp := convert(-EllipticF(u*2^(1/2)*(1/(cos(y0)+1))^(1/2),cos(1/2*y0))*2^(1/2)/(1/(cos(y0)+1))^(1/2)/(2*cos(y0)+2), Int);

tmp0u21I2y0+π01&ExponentialE;I_t12y0+π&DifferentialD;_t1&ExponentialE;−Iy02+11_&alpha;12+11+y0+π201&ExponentialE;I_t1y0+π&DifferentialD;_t12&ExponentialE;I2y02_&alpha;124&DifferentialD;_&alpha;121I2y0+π01&ExponentialE;I_t12y0+π&DifferentialD;_t1&ExponentialE;−Iy02+1I2y0+π01&ExponentialE;I_t12y0+π&DifferentialD;_t1&ExponentialE;−Iy0+2

(105)

IntegrationTools:-Change(tmp, _alpha1=a*T, a);

2T0u22I01&ExponentialE;I_t12y0+π&DifferentialD;_t1&ExponentialE;−Iy0π+2I01&ExponentialE;I_t12y0+π&DifferentialD;_t1&ExponentialE;−Iy0y02T1a2T2+1π201&ExponentialE;I_t1y0+π&DifferentialD;_t12&ExponentialE;−Iy0a2T2+2π01&ExponentialE;I_t1y0+π&DifferentialD;_t12&ExponentialE;−Iy0a2T2y0+01&ExponentialE;I_t1y0+π&DifferentialD;_t12&ExponentialE;−Iy0a2T2y02+4&DifferentialD;a21I2y0+π01&ExponentialE;I_t12y0+π&DifferentialD;_t1&ExponentialE;−Iy02+1I2y0+π01&ExponentialE;I_t12y0+π&DifferentialD;_t1&ExponentialE;−Iy0+2

(106)
• 

Also, this request to change variables now returns the given integral unchanged because the change of variables requested does not involve the existing integration variable:

IntegrationTools:-Change(Int(cos(t),z), {x = r*cos(t)}, [r]);

cost&DifferentialD;z

(107)
• 

Finally, these calls to IntegrationTools:-Change now give more useful error messages:

IntegrationTools:-Change(Int(f(x),x=a..b), x=-x);

Error, (in IntegrationTools:-Change) transformation equations must depend on at least two variables, the old integration variable and the new one

IntegrationTools:-Change(Int(f(k*z+v*t,v*z+k*t),z = 0 .. 1),{t = (k*y-x*v)/(-v^2+k^2), z = (-v*y+k*x)/(-v^2+k^2)},[x, y]);

Error, (in IntegrationTools:-Change) only 1 transformation equation(s) {z = (k*x-v*y)/(k^2-v^2)} was applicable to the integral(s) in the input; the number of new integration variables specified, [x, y], should be the same

tmp := Int(Int(f(x^2)*g(y),x = a .. b),y = c .. d);

tmpcdabfx2gy&DifferentialD;x&DifferentialD;y

(108)

IntegrationTools:-Change(tmp, {x = u^2+U, y = v^2+V});

Error, (in IntegrationTools:-Change) ambiguous change of variables; please specify (using the third argument) which 2 of {U, V, u, v} are the new variables

Verification

Verification of two expressions up to sign differences has undergone some significant improvements recently.

• 

As of Maple 2023, verify,sign now recurses into non-algebraic expressions:

verify([x/(1-x)], [-x/(x-1)], sign);

true

(109)
  

Signs can now be factored out of both even and odd powers as part of the equivalence:

verify((1-x)^2/(1-y)^3, -(x-1)^2/(y-1)^3, sign);

true

(110)
  

Also two new options oddfuncs = ... and evenfuncs = ... were added, allowing use of odd or even function symmetries in the equivalence:

verify(-Int(sin(1 - x), x), Int(sin(x - 1), x), 'sign'(oddfuncs = {Int, sin}));

true

(111)
• 

For Maple 2024, verification of relations (equations, inequations, and inequalities) with respect to sign is now possible:

verify(a = b, -a = -b, 'sign');

true

(112)

verify(a <> b, -a <> -b, 'sign');

true

(113)

verify(a < b, -b < -a, 'sign');

true

(114)

verify(a <= b, -b <= -a, 'sign');

true

(115)

verify(a < b, -a < -b, 'sign');

false

(116)

verify(a <= b, -a <= -b, 'sign');

false

(117)

Miscellaneous Improvements in Advanced Math

• 

The results of converting between mathematical functions are now better simplified:

convert(-I-1/z*Im(z)+I*abs(1,z)/signum(z),signum);

I211signumz2

(118)
• 

There was an improvement in int by expressing exponentials in the integrand as integer powers of a common base exponential:

  

For this answer the length has decreased by more than 10x:

int(arctanh(exp(2*x))*(exp(10*x)-3*exp(6*x)-exp(-2*x)+3*exp(2*x))/(exp(4*x)-1)^2, x);

arctanh&ExponentialE;x2&ExponentialE;x22+arctanh&ExponentialE;x22&ExponentialE;x2+ln&ExponentialE;x2+12ln&ExponentialE;x+ln&ExponentialE;x+12+ln&ExponentialE;x12

(119)
  

For this answer, the length has decreased by 7.5 times:

dsolve(-diff(y(x), x)^2/y(x)^2 + diff(y(x), x, x)/y(x) + 2*coth(2*x)*diff(y(x), x)/y(x) = 2);

yx=&ExponentialE;c__1arctanh&ExponentialE;2x&ExponentialE;2x+1&ExponentialE;x+1&ExponentialE;x1&ExponentialE;xc__2

(120)
• 

A problem in dsolve was fixed, leading to this now correct (and much more compact) answer:

ode := x^4*diff(y(x),x$2)+(a*sin(lambda/x)+b)*y(x)=0:

ans := dsolve(ode);

ansyx=c__1xMathieuC4bλ2&comma;2aλ2&comma;arccossinπx+2λ4x+c__2xMathieuS4bλ2&comma;2aλ2&comma;arccossinπx+2λ4x

(121)

odetest(ans, ode);

0

(122)
• 

FunctionAdvisor is now more careful when generating identities:

FunctionAdvisor(arccoth, identities, quiet);

cotharccothz=z&comma;Icotharccothy+arccothz+Iπ=yz1IzIy

(123)
• 

lcm and gcd now treat single-argument input consistently with that of multiple argument inputs and just leave it alone rather than potentially returning an error:

lcm(sin(2*x));

sin2x

(124)

gcd(1+I+z);

1+I+z

(125)
• 

A case where factor was not idempotent has been fixed:

alias(c=-(-x^2*y^n + 2*g(x)*y^n + 5*x*y^n - 4*y^n + 2*y)*(g(x)*x*y^n + x^2*y^n - 10*x*y^n + y*x + 24*y^n)/(y^n*(x - 3)*(x + 4)^2*(g(x)*y^n + x*y^n - 2*y^n + y))):

alias(d=-(-g(x)*x^3*(y^n)^2 - x^4*(y^n)^2 + 2*g(x)^2*x*(y^n)^2 + 7*g(x)*x^2*(y^n)^2 + 15*x^3*(y^n)^2 - y*x^3*y^n - 24*g(x)*x*(y^n)^2 - 78*x^2*(y^n)^2 + 4*y*g(x)*x*y^n + 7*y*x^2*y^n + 48*g(x)*(y^n)^2 + 160*x*(y^n)^2 - 24*y*x*y^n + 2*x*y^2 - 96*(y^n)^2 + 48*y*y^n)/(y^n*(x - 3)*(x + 4)^2*(g(x)*y^n + x*y^n - 2*y^n + y))):

factor(d^(5/4)-c^(5/4));

0

(126)

alias(:-c=:-c, :-d=:-d):

• 

A formula relating InverseJacobiSD to InverseJacobiCN has been corrected:

tmp := InverseJacobiSD(z, k):

tmp = convert(tmp, InverseJacobiCN);

InverseJacobiSDz&comma;k=InverseJacobiCNk2+1z&comma;k+EllipticKk

(127)
• 

This call to product no longer gives an unexpected error:

product( q*sinh(Pi*(q^2+1)^(1/2))/sinh(Pi*q)/(q^2+1)^(1/2), q=2..infinity);

q=2qsinhπq2+1sinhπqq2+1

(128)
• 

Numeric evaluation of certain trig expressions is now more careful:

evalf(cot(-1/8-10^10*I));

−4.259906707×10−8685889639+I

(129)

evalf(Psi(-1/8-10^10*I));

23.025850931.570796327I

(130)
• 

The relative difference between the absolute values of the radical and non-radical part of a large power of the golden ratio is very small, making it difficult to distinguish numerically whether the expanded power is positive or negative:

phi := (sqrt(5) - 1)/2:

phi_381 := expand(phi^381);

phi_38121050428445219715212283513071197708058110642480418964396226164263063778766736638+94140377918012982314332631556031268990719635355503799065252326572580688865643535

(131)

evalf([op(phi_381)]);

−2.105042845×1079&comma;2.105042844×1079

(132)
  

As such, some extra care is now taken by abs to determine that this expression is positive:

abs(phi_381);

21050428445219715212283513071197708058110642480418964396226164263063778766736638+94140377918012982314332631556031268990719635355503799065252326572580688865643535

(133)

phi := 'phi':phi_381 := 'phi_381':

• 

Some improvements to the inttrans code led to these new results:

inttrans:-fourier(sqrt(-t^2 + 1)*(Heaviside(t + 1) - Heaviside(t - 1)), t, w);

πBesselJ1&comma;ww

(134)
  

This result is new as of Maple 2023:

inttrans:-laplace( 1 / ( 1 + I * mu * x )-Int( f(y) / ( 1 + I * x * y ), y = 0 .. infinity ), x, s );

I220fy&ExponentialE;−IsyEi1−Isyy&DifferentialD;y+2Ei1−Isμ2ln−Isμ+2lns+ln−IμlnIμ&ExponentialE;−Isμμ

(135)
• 

expand was not being called recursively on some examples involving integrals. Now it is:

expand(Int(f(x)*(b*x+c),x));

bfxx&DifferentialD;x+cfx&DifferentialD;x

(136)
• 

evalc no longer assumes that two-argument GAMMA must be real if it has real arguments:

evalc(Im(GAMMA(2/3, -1/3)));

Γ23&comma;13

(137)
• 

Expansion of Bessel and Hankel functions has been made much more efficient. This example now runs over 250 times faster than it did in Maple2023:

time(expand(BesselJ(750,x)));

0.046

(138)
  

As well, expansion of BesselK in particular now takes advantage of the symmetry BesselK(-v,x)=BesselK(v,x) to achieve a new expanded normal form in terms of BesselK(v__i, k) with v_i between 0 and 1:

expand(BesselK(4/3, x));

2BesselK13&comma;x3x+BesselK23&comma;x

(139)

expand(2/3*BesselK(1/3, x)/x+BesselK(2/3, x)-BesselK(4/3, x));

0

(140)
• 

collect no longer gets confused by the letter O (which is used to express series results):

collect(O, O, F);

F1O

(141)