evaldomains - Maple Help

Online Help

All Products    Maple    MapleSim


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

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

AbelianGroup,AbelianMonoid,AlgebraicExtension,Array,CommutativeRing,CramersRule,DenseExponentVector,DenseUnivariatePolynomial,DifferentialField,DistributedMultivariatePolynomial,EuclideanAlgorithm,EuclideanDomain,ExpandedNormalFormQuotientField,ExponentVector,FactoredNormalFormQuotientField,Field,Finite,FiniteField,FrobeniusNormalForm,GaloisField,Gaussian,GaussianInteger,GcdDomain,Generator,GrobnerBasis,Group,Integers,IntegralDomain,LazyUnivariatePowerSeries,List2Vector,MacaulayExponentVector,Maple,MapleDistributedMultivariatePolynomial,MapleExponentVector,MapleGaussianArithmetic,MapleMultivariatePolynomial,MapleUnivariatePolynomial,Matrix,MatrixDomain,Modp1Polynomial,Modp2Polynomial,Monoid,New,NormalForm,ODESolve,OrderedAbelianGroup,OrderedAbelianMonoid,OrderedDomain,OrderedField,OrderedSet,OrderedUnivariatePolynomial,PartiallyOrderedSet,PolynomialHomomorphism,Poset,PowerRemainder,PrimeExponentVector,PrincipalIdeal,Q,QuotientField,RandMatrix,RationalFunction,Rationals,RelativelyPrimeHeuristic,RepeatedSquaring,Ring,SemiGroup,Set,SingleExtensionGaloisField,Singular,Solve,SparseDistributedMultivariatePolynomial,SparseMultivariatePolynomial,SquareFreeNorm,SquareMatrix,TableDistributedMultivariatePolynomial,TranscendentalFunctions,UniqueFactorizationDomain,UnivariatePolynomial,UnivariatePowerSeries,Vector,Z,Zmod,addCategory,addProperties,addProperty,defOperation,defOperations,evaldomains,hasCategories,hasCategory,hasOperation,hasOperations,hasProperties,hasProperty,isDomain,isImplemented,newCategory,newDomain,notImplemented,show

(3)

DupDUPZmod7,x:

Create a Dup-evaluator using the alias statement

aliasdup=evaldomainsDup:

dupRemx7+4x32,x3+3xx3+x6

x4+5x3+x2+6x+5

(4)

evaldomains outputs even compound data-structures and ...

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

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

(5)

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

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

5+x

(6)

u,v

5+2x,4

(7)

GiGaussianZmod5:

aliasgi=evaldomainsGi:

agi2+3I;bgi2I

a:=2+3_i

b:=2+4_i

(8)

cgia+ab;ccgiConja+ab

c:=4+2_i

cc:=4+3_i

(9)

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

giccc=Coerce'ℜ'c2+Coerce'ℑ'c2

true

(10)

See Also

Domains

 


Download Help Document

Was this information helpful?



Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam