Domains - Maple Programming Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Programming : Domains : Domains/evaldomains

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

withDomains:

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

DupDUPZmod7,x:

Create a Dup-evaluator using the alias statement

aliasdup=evaldomainsDup:

dupRemx7+4x32,x3+3xx3+x6

x4+5x3+x2+6x+5

(3)

evaldomains outputs even compound data-structures and ...

dupFactorx7+3x4+6x3+6x5+x2+x+2x6+1

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

(4)

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

dupGcdex3x2x3,2x3+2x2+3x+5,u,v

5+x

(5)

u,v

5+2x,4

(6)

GiGaussianZmod5:

aliasgi=evaldomainsGi:

agi2+3I;bgi2I

a2+3_i

b2+4_i

(7)

cgia+ab;ccgiConja+ab

c4+2_i

cc4+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

giccc=Coercec2+Coercec2

true

(9)

See Also

Domains