|
Пакет
Domains
Этот небольшой пакет служит для
создания доменов — таблиц операций для вычислений. При его загрузке появляется
сообщение о переопределениях объектов и список из всего лишь шести функций:
>restart;with(Domains):
Domains
version 1.0
Initially defined domains are Z and Q the integers and rationale Abbreviations,
e.g. DUP for DenseUnivariatePolynomial,
also made Warning, the protected names Array,
Matrix and Vector have been redefined and unprotected
[Array, Matrix, Matrixlnverse, Vector, init, show]
Пакет допускает применение следующих
конструкций:
Domains[domain]
Doma1ns[evaldomains]
Domains[example] Domains[coding]
Приведенный ниже пример поясняет
создание и использование доменов Q (для рациональных
данных) и Z (для целочисленных данных):
>
Q['+'](l/2,2/5,3/8);
51/40
> Z[Gcd](660,130);
10
Следующая операция показывает, что
домен Z является таблицей:
>
type(Z,table);
true
А функция show
позволяет вывести полный перечень всех операций, доступных для домена
Z:
>
show(Z,operations);
Signatures for constructor Z'
note:
operations prefixed by -- are not available
*:
(Integers,Z) ->Z
* :(Z,Z*) ->Z
+ :(Z,Z*) ->Z
-: (Z,Z) -> Z'
- :Z ->Z
0:Z
1:Z
< :(Z,Z) -> Boolean
<= : (Z.Z) -> Boolean
<> : (Z.Z) -> Boolean
=:(Z.Z)
-> Boolean
>: (Z.Z) -> Boolean
>-: (Z.Z) -> Boolean
Abs : Z ->Z
Characteristic : Integers
Coerce : Integers-> Z
Div
: (Z.Z) -> Union(Z,.FAIL)
EuclideanNorm : Z -> Integers
Factor : Z -> [Z,.[[Z,Integers]*]]
Gcd : Z* -> Z
Gcdex : (Z,Z,Name) ->Z
Gcdex
: (Z,.Z,Name,Name) -> Z
Input : Expression -> Union(Z,.FAIL)
Inv
: Z -> Union(Z,FAIL)
Lcm : Z* -> Z
Max
: (Z,Z*) -> Z
Min
: (Z,.Z*)-> Z
Modp : (Z,.Z) ->Z
Mods : (Z.Z)--> Z
ModularHoraomorphlsm : () -> (Z -> Z.Z)'
Normal : Z -> Z
Output : Z -> Expression
Powmod : (Z,Integers,Z) -> Z
Prime : Z -> Boolean
Quo : (Z,.Z,Name) ->Z
Quo : (Z,.Z) -> Z
Random : О ->Z
RelativelyPrime : (Z,.Z) -> Boolean'
Rem : (Z,.Z,.Name)-> Z
Rera : (Z,Z) -> Z
Sign : Z -> UNIONU,.-l,0)
SmallerEuclideanNorm : (Z,.Z) -> Boolean
Sqrfree : Z ->[Z,.[[Z,.Integers]*]]
Type : Expression -> 'Boolean'
Unit : Z -> Z
UnitNormal : Z -> [Z,.Z,.Z]
Zero : Z -> Boolean
^
: (Z,Integers) -> Z.
Домены позволяют передавать в качестве
параметра процедур набор функций в виде единого целою, что и объясняет название
этих объектов. Предполагается, что это может привести к заметному сокращению
кодов программ вычислений в будущих реализациях системы Maple. Пока же возможности
доменов скорее выглядят как очередная экзотика, чем как реальное средство для
оптимизации вычислений. Потребуется время, чтобы показать, что это не так.
|