New features that have been added to Maple for version 4.2
|
----------------------------------------------------------
|
Extended syntax of the repetition statement
|
-------------------------------------------
|
In addition to the previous form of the repetition statement (for-from-
|
by-to-while), a new form (for-in-while) has been added. Specifically, the syn-
|
tax of the new form is:
|
for <name> in <expr> while <expr> do <statseq> od
|
where any of `for <name>', `in <expr>', or `while <expr>' may be omitted. The
|
successive values of the loop index (i.e., the <name> specified in the for-part
|
of the statement) are the successive operands of <expr>. The value of the
|
index may be tested in the while-part of the statement and, of course, the
|
value of the index is available when executing the <statseq>. As in the other
|
form of the repetition statement, if the `while <expr>' part is present then
|
the test for termination is checked at the beginning of each iteration.
|
Notation for inert functions
|
----------------------------
|
In general, the convention to represent the inert form of a function is
|
to capitalize the first letter of the function name. The following inert func-
|
tions are known to the pretty-printer: Int, Sum, and Product. More generally,
|
inert functions are used when it is desired to control the domain of computa-
|
tion (see next item).
|
Specifying the domain of computation
|
------------------------------------
|
The general mechanism to cause a computation to be performed with respect
|
to a specific coefficient domain is as follows. The function to be computed is
|
specified in its inert form (by capitalizing the first letter) and then the
|
appropriate evaluator is applied to the function. At present, this mechanism
|
is operational for two coefficient domains:
|
(i) integers modulo m, via the mod operator;
|
(ii) rational expressions extended by algebraic numbers (specified using the
|
RootOf notation), via the evala function.
|
The following inert functions are known to the mod operator and to the evala
|
function:
|
Content Divide Factor Gcd Gcdex
|
Interp Prem Primpart Quo Rem
|
Resultant RootOf Sprem
|
Extended prettyprint facility
|
-----------------------------
|
The prettyprint facility now knows about special symbols for int, sum,
|
and product (also Int, Sum, and Product, their inert counterparts), and diff.
|
Furthermore, it now correctly prints expressions involving the following opera-
|
tors: &-operators (neutral operators), $, mod, union, intersect, minus, and
|
angle-bracket operators.
|
New Packages
|
------------
|
Several new packages of library functions have been added; the complete
|
list of packages in this version of Maple is:
|
difforms: differential forms package
|
grobner: Groebner basis package
|
group: permutation and finitely-presented group package
|
linalg: linear algebra package
|
np: Newman-Penrose formalism package
|
numtheory: number theory package
|
orthopoly: orthogonal polynomial package
|
powseries: formal power series package
|
simplex: linear optimization package
|
stats: statistics package
|
student: student calculus package
|
Improved automatic simplifications
|
----------------------------------
|
The automatic simplification of trigonometric functions with respect to
|
inverse trigonometric functions has been added.
|
Improved limit and integration facilities
|
-----------------------------------------
|
Much of the limit function has been rewritten to improve its mathematical
|
power, as well as its efficiency.
|
The int facility for indefinite integration has been significantly
|
enhanced by the installation of a complete Risch decision procedure for tran-
|
scendental elementary functions.
|
The numerical integration facility (`evalf/int`) has been improved to
|
handle a much wider class of integrands, particularly integrands involving
|
singularities and infinite limits of integration.
|
Efficiency improvements
|
-----------------------
|
The overall efficiency of Maple has increased about 10%. This has been
|
achieved by moving a few routines to the compiled kernel as well as by improved
|
algorithms in the external library.
|
New functions (use "help(f);" in a Maple session for information about f):
|
-------------------------------------------------------------------------
|
- primpart: primpart(a,x) = a / content(a,x).
|
- eqn and latex: eqn (rewritten) and latex (new) produce typesetter output
|
from mathematical expressions.
|
- singular: Find all singularities of an expression.
|
- RootOf: The RootOf procedure does basic simplifications. The RootOf func-
|
tion notation is generally a placeholder for representing roots of equations.
|
- S, C: New math fcns, the Fresnel integrals S(x) and C(x). These functions
|
are known to various routines, including evalf, diff, taylor, and int.
|
- bspline: The function bspline(d,v,k) computes the B-spline of degree "d" as
|
a list of segment polynomials in "v" defined on the knots "k" where "k" is a
|
list of d+2 numbers or symbols (multiplicities allowed).
|
- zip: The function zip(f,u,v) zips u and v (two lists or vectors) into a new
|
list or vector by application of the binary function f to each pair of ele-
|
ments u[i], v[i].
|
- evala: The evala function is used for evaluation in the domain of rational
|
expressions extended by algebraic numbers (using the RootOf notation).
|
- match: for pattern matching.
|
- student[combine] - This routine is used to rewrite unevaluated Sums and
|
Integrals as one Sum or Integral.
|
- student[Eval] - This routine is used to cause unevaluated Sums, Limits, and
|
Integrals to evaluate.
|
- student[makeproc] - This is an alternative name for the Maple function unap-
|
ply().
|
- student[changevar] - This function now handles infinite bounds correctly.
|
- convert routine in student package: convert(...,nested) rewrites an expres-
|
sion involving functional composition as nested function application; con-
|
vert(...,`@`) rewrites nested function applications using composition of
|
functions.
|
Modified functions (use "help(f);" in a Maple session for information):
|
----------------------------------------------------------------------
|
- mod: The functions `mod`, modp, and mods have been extended to work on
|
lists, sets, and equations.
|
- ConvexHull: deleted; now use simplex[convexhull].
|
- testeq now successfully works for:
|
(a) square roots when not mixed with trigonometric functions;
|
(b) nested algebraic numbers and functions;
|
(c) floating-point numbers.
|
- resultant(p,q,x): now allows p and q to be non-polynomial in variables other
|
than x.
|
- gcdex(p,q,x,'s','t'): now allows p and q to be non-polynomial in variables
|
other than x.
|
- diophant(p,q,r,x,'s','t'): now deleted; see gcdex for this functionality.
|
- numtheory[jacobi]: improved from cubic time / quadratic space to quadratic
|
time / linear space.
|
- asympt: asympt( sum(..), ..) now uses Euler-Maclaurin expansions when
|
appropriate.
|
- plot: now accepts an ln03 laser printer as a plotdevice and vt100 using the
|
dec-graphics character set. Plot can also produce postcript-compatible out-
|
put.
|
- indets: indets(expr,typename) returns all of the subexpressions in expr
|
which are of type "typename".
|
- minimize: extended and improved functionality.
|
- type: type(a, type_set); where type_set is a set of type names, will return
|
true if a is any one of the types contained in the set.
|
- type/algnum: test for an algebraic number.
|
- type/polynom: The code has a user interface allowing for user-defined coef-
|
ficient domains. For example:
|
type(a, polynom, v, d);
|
tests whether "a" is a polynomial in the variable(s) "v" with coefficients of
|
type "d".
|
- type/ratpoly: The code has the same extension as type/polynom. For example:
|
type(a, ratpoly, [x,y], algnum)
|
tests whether "a" is a rational function in the indeterminates "x" and "y"
|
with coefficients which are algebraic numbers.
|
- type/point: A point is formally defined to be a set of equations with vari-
|
ables as left-hand-sides (identical to the explicit output format of the
|
solve function). Many functions will now take points as arguments -- for
|
example, limit now accepts points as well as single equations, as in: limit(
|
1/(x+a), {x=0,a=0} ) .
|
- int/def: all of the non-parametric definite integrals of the CRC tables have
|
been included in the definite integration tables (when they are not otherwise
|
computed by the integration algorithm).
|
- trace: The trace facility has been improved so that not only entry and exit
|
points are displayed, but also statements executed within the procedure (but
|
not in sub-procedures) are displayed. Also, option "trace" may be specified
|
for a procedure (this is the mechanism used by the trace function).
|
- sum: a new algorithm has been implemented for the summation of tri-
|
gonometrics and exponentials. Also, there is a user interface such that if
|
`sum/<funcname>` is defined as a procedure then it will be invoked by sum
|
when the arbitrary function <funcname> is encountered in an expression.
|
- taylor: When floats are present, all coefficients are now evaluated by
|
evalf.
|
- iroots: removed; it is now part of isolve.
|
- mod functions: The mod functions (names beginning with m) have been deleted;
|
now use inert (capitalized) function names and the mod operator. I.e.
|
mfactor --> Factor(..) mod p
|
mgcd --> Gcd(..) mod p
|
mgcdex --> Gcdex(..) mod p
|
minterp --> Interp(..) mod p
|
mquo --> Quo(..) mod p
|
mrem --> Rem(..) mod p
|
mres --> Resultant(..) mod p
|
- solve: improvements include solving inequalities, solving equations contain-
|
ing RootOfs, and solving equations with radicals in a general form.
|
- solve: solve( identity( <eqn>, x ), <vars> ) solves identities in a single,
|
given variable. This is equivalent to a powerful pattern matching in one
|
main variable.
|
- msolve: special code is now used for solving large systems of equations mod
|
2.
|