evaldomains - evaluation of Maple-expressions in a Domains domain
|
Calling Sequence
|
|
evaldomains[D](expr)
|
|
Parameters
|
|
expr
|
-
|
Maple-expression
|
D
|
-
|
Domains domain
|
|
|
|
|
Description
|
|
•
|
evaldomains[D](expr) evaluates the Maple-expression expr in the Domains domain D and returns a Maple-expression. evaldomains provides a Maple-like user-interface, data-encapsulation and type-checking for the arguments of Domains-functions. It is intended to simplify interactive use of Domains and is not intended to be used as a coding tool for writing Domains programs.
|
•
|
domain-Input/Output functions are implicitly applied during evaluation of the expression, hiding the data-representation of domain-elements. The type of arguments passed to domain-operations is checked against the signatures of the operations. The signatures of the domain operations are accessible through the command show(D, operations).
|
•
|
All the operations within expr are assumed to be operations in the specified Domains-domain D.
|
•
|
The following example shows the difference at the user-interface level:
|
>
|
domain := DenseUnivariatePolynomial (Zmod(7), x):
|
>
|
domain[Output](domain[`*`](domain[Input](x^2-3*x+1),domain[Input](2*x^3-4)));
|
|
Using the more familiar Maple syntax:
|
>
|
evaldomains[domain]((x^2-3*x+1)*(2*x^3-4));
|
•
|
If evaluations of several expressions in one domain are to be performed, it is often preferable to create a domain-evaluator with the use of aliases:
|
>
|
alias (dup = evaldomains[domain]):
|
•
|
Since the expression passed to evaldomains is first processed by the Maple parser, the user has to be aware of the built-in simplifications, reordering of operands and evaluation of top-level functions. Hence, the following is always simplified to 0.
|
>
|
evaldomains[domain] (Random() - Random());
|
•
|
An example for evaluation of top-level functions within the call of evaldomains can be obtained by the following
|
>
|
galoisfield := GaloisField (13, 2):
|
>
|
evaldomains[galoisfield](order(Random()));
|
•
|
which results in an error, since order is a builtin top-level function which will be evaluated before the expression is passed to evaldomains. In order to prevent such behavior, the user is advised to use forward quotes where necessary.
|
>
|
evaldomains[galoisfield]('order'(Random()));
...
|
•
|
Furthermore, if the domain has non-commutative multiplication or addition, the &-version of the operator has to be used in order to prevent reordering of the operands, e.g.
|
>
|
Sm := SquareMatrix (2, Z): alias (sm = evaldomains[Sm]):
|
| (1) |
| (2) |
•
|
evaldomains is only available after performing the command with(Domains).
|
|
|
Examples
|
|
>
|
|
---------------------- Domains version 1.0 ---------------------
Initially defined domains are Z and Q the integers and rationals
Abbreviations, e.g. DUP for DenseUnivariatePolynomial, also made
| |
| (3) |
>
|
|
Create a Dup-evaluator using the alias statement
>
|
|
>
|
|
| (4) |
evaldomains outputs even compound data-structures and ...
>
|
|
| (5) |
call-by-name parameters nicely (ie. not in their internal representation)
>
|
|
| (6) |
>
|
|
| (7) |
>
|
|
>
|
|
>
|
|
| (8) |
>
|
|
| (9) |
Re and Im are also top-level Maple functions which must be quoted in order to prevent evaluation by the Maple parser
>
|
|
| (10) |
|
|
Download Help Document
Was this information helpful?