% Copyright The Numerical Algorithms Group Limited 1992-94. All rights reserved.
% !! DO NOT MODIFY THIS FILE BY HAND !! Created by ht.awk.
\newcommand{\DistributedMultivariatePolynomialXmpTitle}{DistributedMultivariatePolynomial}
\newcommand{\DistributedMultivariatePolynomialXmpNumber}{9.16}
%
% =====================================================================
\begin{page}{DistributedMultivariatePolynomialXmpPage}{9.16 DistributedMultivariatePolynomial}
% =====================================================================
\beginscroll

%-% \HDexptypeindex{DistributedMultivariatePolynomial}{DistributedMultivariatePolynomialXmpPage}{9.16}{DistributedMultivariatePolynomial}
%-% \HDexptypeindex{HomogeneousDistributedMultivariatePolynomial}{DistributedMultivariatePolynomialXmpPage}{9.16}{DistributedMultivariatePolynomial}
\texht{\hyphenation{
Homo-gen-eous-Dis-tributed-Multi-var-i-ate-Pol-y-nomial
}}{}

\spadtype{DistributedMultivariatePolynomial} and
\spadtype{HomogeneousDistributedMultivariatePolynomial}, abbreviated
\spadtype{DMP} and \spadtype{HDMP}, respectively, are very similar to
\spadtype{MultivariatePolynomial} except that they are represented and
displayed in a non-recursive manner.
\xtc{
}{
\spadpaste{(d1,d2,d3) : DMP([z,y,x],FRAC INT) \bound{d1dec d2dec d3dec}}
}
\xtc{
The constructor
\spadtype{DMP} orders its monomials lexicographically while
\spadtype{HDMP} orders them by total order refined by reverse
lexicographic order.
}{
\spadpaste{d1 := -4*z + 4*y^2*x + 16*x^2 + 1 \bound{d1}\free{d1dec}}
}
\xtc{
}{
\spadpaste{d2 := 2*z*y^2 + 4*x + 1 \bound{d2}\free{d2dec}}
}
\xtc{
}{
\spadpaste{d3 := 2*z*x^2 - 2*y^2 - x \bound{d3}\free{d3dec}}
}
\xtc{
These constructors are mostly used in \texht{Gr\"{o}bner}{Groebner}
%-% \HDindex{Groebner basis@{Gr\protect\"{o}bner basis}}{DistributedMultivariatePolynomialXmpPage}{9.16}{DistributedMultivariatePolynomial}
basis calculations.
}{
\spadpaste{groebner [d1,d2,d3] \free{d1 d2 d3}}
}
\xtc{
}{
\spadpaste{(n1,n2,n3) : HDMP([z,y,x],FRAC INT) \bound{ndec}}
}
\xtc{
}{
\spadpaste{(n1,n2,n3) := (d1,d2,d3) \free{ndec}\bound{n}\free{d1 d2 d3}}
}
\xtc{
Note that we get a different
\texht{Gr\"{o}bner}{Groebner} basis
when we use the \spadtype{HDMP} polynomials, as expected.
}{
\spadpaste{groebner [n1,n2,n3] \free{n}}
}

\spadtype{GeneralDistributedMultivariatePolynomial} is somewhat
more flexible in the sense that as well as accepting a list of
variables to specify the variable ordering, it also takes a
predicate on exponent vectors to specify the term ordering.
With this polynomial type the user can experiment with the effect
of using completely arbitrary term orderings.
This flexibility is mostly important for algorithms such as
\texht{Gr\"{o}bner}{Groebner} basis calculations which can be very
sensitive to term ordering.
%-% \HDexptypeindex{GeneralDistributedMultivariatePolynomial}{DistributedMultivariatePolynomialXmpPage}{9.16}{DistributedMultivariatePolynomial}

For more information on related topics, see
\downlink{``\ugIntroVariablesTitle''}{ugIntroVariablesPage} in Section \ugIntroVariablesNumber\ignore{ugIntroVariables},
\downlink{``\ugTypesConvertTitle''}{ugTypesConvertPage} in Section \ugTypesConvertNumber\ignore{ugTypesConvert},
\downlink{`Polynomial'}{PolynomialXmpPage}\ignore{Polynomial},
\downlink{`UnivariatePolynomial'}{UnivariatePolynomialXmpPage}\ignore{UnivariatePolynomial}, and
\downlink{`MultivariatePolynomial'}{MultivariatePolynomialXmpPage}\ignore{MultivariatePolynomial}.
%
\showBlurb{DistributedMultivariatePolynomial}
\endscroll
\autobuttons
\end{page}
%
