evaldomains - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Mozilla Firefox.

Online Help

All Products    Maple    MapleSim


Domains

  

evaldomains

  

evaluation of Maple-expressions in a Domains domain

 

Calling Sequence

Parameters

Description

Examples

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):

  

Using Domains syntax:

> 

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()));

Error, invalid input: order expects its 1st argument, expr, to be of type series, but received 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]):

> 

A := sm (Random());

A≔−85,−55,−37,−35

(1)
> 

sm (A &* (A + 1));

9175,6545,4403,3225

(2)
• 

evaldomains is only available after performing the command with(Domains).

Examples

> 

with⁡Domains:

---------------------- Domains version 1.0 ---------------------
Initially defined domains are Z and Q the integers and rationals
Abbreviations, e.g. DUP for DenseUnivariatePolynomial, also made

> 

Dup≔DUP⁡Zmod⁡7,x:

Create a Dup-evaluator using the alias statement

> 

alias⁡dup=evaldomainsDup:

> 

dup⁡Rem⁡−x7+4⁢x3−2,x3+3⁢x⁢x3+x−6

x4+5⁢x3+x2+6⁢x+5

(3)

evaldomains outputs even compound data-structures and ...

> 

dup⁡Factor⁡x7+3⁢x4+6⁢x3+6⁢x5+x2+x+2⁢x6+1

1,x4+5⁢x+3,1,x+1,1,x+6,1,x+2,1

(4)

call-by-name parameters nicely (ie. not in their internal representation)

> 

dup⁡Gcdex⁡3⁢x2−x−3,2⁢x3+2⁢x2+3⁢x+5,u,v

5+x

(5)
> 

u,v

5+2⁢x,4

(6)
> 

Gi≔Gaussian⁡Zmod⁡5:

> 

alias⁡gi=evaldomainsGi:

> 

a≔gi⁡2+3⁢I;b≔gi⁡2−I

a≔2+3⁢_i

b≔2+4⁢_i

(7)
> 

c≔gi⁡a+a⁢b;cc≔gi⁡Conj⁡a+a⁢b

c≔4+2⁢_i

cc≔4+3⁢_i

(8)

Re and Im are also top-level Maple functions which must be quoted in order to prevent evaluation by the Maple parser

> 

gi⁡c⁢cc=Coerce⁡ℜ⁡c2+Coerce⁡ℑ⁡c2

true

(9)

See Also

Domains