version 1.9, 2001/12/28 06:06:15 |
version 1.10, 2002/01/04 06:06:09 |
|
|
% $OpenXM: OpenXM/doc/Papers/dag-noro-proc.tex,v 1.8 2001/11/30 02:08:46 noro Exp $ |
% $OpenXM: OpenXM/doc/Papers/dag-noro-proc.tex,v 1.9 2001/12/28 06:06:15 noro Exp $ |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
% This is a sample input file for your contribution to a multi- |
% This is a sample input file for your contribution to a multi- |
% author book to be published by Springer Verlag. |
% author book to be published by Springer Verlag. |
Line 117 Risa/Asir is not only a standalone computer algebra sy |
|
Line 117 Risa/Asir is not only a standalone computer algebra sy |
|
main component in OpenXM package \cite{OPENXM}, which is a collection |
main component in OpenXM package \cite{OPENXM}, which is a collection |
of various software compliant to OpenXM protocol specification. |
of various software compliant to OpenXM protocol specification. |
OpenXM is an infrastructure for exchanging mathematical data and |
OpenXM is an infrastructure for exchanging mathematical data and |
Risa/Asir has three kinds of OpenXM interfaces : as a client, as a |
Risa/Asir has three kinds of OpenXM interfaces : |
server, and as a subroutine library. Our goals of developing Risa/Asir |
OpenXM API in the Risa/Asir user language, |
are as follows: |
OpenXM C language API in the Risa/Asir subroutine library, |
|
and an OpenXM server. |
|
Our goals of developing Risa/Asir are as follows: |
|
|
\begin{enumerate} |
\begin{enumerate} |
\item Providing a platform for testing new algorithms |
\item Providing a platform for testing new algorithms |
Line 177 data on Groebner basis computation. |
|
Line 179 data on Groebner basis computation. |
|
\subsection{Polynomial factorization} |
\subsection{Polynomial factorization} |
|
|
Here we briefly review functions on polynomial factorization. For |
Here we briefly review functions on polynomial factorization. For |
univariate factorization over {\bf Q}, the classical |
univariate factorization over {\bf Q}, the Berlekamp-Zassenhaus |
Berlekamp-Zassenhaus algorithm is implemented. Efficient algorithms |
algorithm is implemented. Efficient algorithms recently proposed have |
recently proposed have not yet implemented. For univariate |
not yet implemented. For univariate factorization over algebraic |
factorization over algebraic number fields, Trager's algorithm |
number fields, Trager's algorithm \cite{TRAGER} is implemented with |
\cite{TRAGER} is implemented with some modifications. Its major |
some modifications. Its major applications are splitting field and |
applications are splitting field and Galois group computation of |
Galois group computation of polynomials over {\bf Q} \cite{ANY}. For |
polynomials over {\bf Q} \cite{ANY}. For such purpose a tower of |
such purpose a tower of simple extensions are suitable because factors |
simple extensions are suitable because factors represented over a |
represented over a simple extension often have huge coefficients. For |
simple extension often have huge coefficients. For univariate |
univariate factorization over finite fields, equal degree |
factorization over finite fields, equal degree factorization and |
factorization and Cantor-Zassenhaus algorithm are implemented. We can |
Cantor-Zassenhaus algorithm are implemented. We can use various |
use various representation of finite fields: $GF(p)$ with a machine |
representation of finite fields: $GF(p)$ with a machine integer prime |
integer prime $p$, $GF(p)$ and $GF(p^n)$ with any odd prime $p$, |
$p$, $GF(p)$ and $GF(p^n)$ with any odd prime $p$, $GF(2^n)$ with a |
$GF(2^n)$ with a bit-array representation of polynomials over $GF(2)$ |
bit-array representation of polynomials over $GF(2)$ and $GF(p^n)$ |
and $GF(p^n)$ with small $p^n$ represented by a primitive root. For |
with small $p^n$ represented by a primitive root. For multivariate |
multivariate factorization over {\bf Q}, the EZ(Extended Zassenhaus) |
factorization over {\bf Q}, the classical EZ(Extended |
type algorithm is implemented. |
Zassenhaus) type algorithm is implemented. |
|
|
|
\subsection{Other functions} |
\subsection{Other functions} |
By applying Groebner basis computation and polynomial factorization, |
By applying Groebner basis computation and polynomial factorization, |
|
|
\subsection{Groebner basis computation} |
\subsection{Groebner basis computation} |
|
|
Table \ref{gbmod} and Table \ref{gbq} show timing data for Groebner |
Table \ref{gbmod} and Table \ref{gbq} show timing data for Groebner |
basis computation over $GF(32003)$ and over {\bf Q} respectively. |
basis computation over $GF(32003)$ and over {\bf Q} respectively. In |
|
Table \ref{gbq} we compare the timing data under various configuration |
|
of algorithms: with/without trace lifting, homogenization and contents |
|
reduction. |
$C_n$ is the cyclic $n$ system and $K_n$ is the Katsura $n$ system, |
$C_n$ is the cyclic $n$ system and $K_n$ is the Katsura $n$ system, |
both are famous bench mark problems \cite{BENCH}. We also measured |
both are famous bench mark problems \cite{BENCH}. We also measured |
the timing for $McKay$ system over {\bf Q} \cite{REPL}. the term |
the timing for $McKay$ system over {\bf Q} \cite{REPL}. the term |
order is graded reverse lexicographic order. In the both tables, the |
order is graded reverse lexicographic order. |
first three rows are timings for the Buchberger algorithm, and the |
As to the Buchberger algorithm over $GF(32003)$, |
last two rows are timings for $F_4$ algorithm. As to the Buchberger |
Singular\cite{SINGULAR}'s Buchberger algorithm implementation shows |
algorithm over $GF(32003)$, Singular\cite{SINGULAR} shows the best |
better performance than Risa/Asir. $F_4$ implementation in Risa/Asir |
performance among the three systems. $F_4$ implementation in Risa/Asir |
is outperforms both of them, but it is still several times slower than |
is faster than the Buchberger algorithm implementation in Singular, |
$F_4$ implementation in FGb \cite{FGB}. |
but it is still several times slower than $F_4$ implementation in FGb |
|
\cite{FGB}. In Table \ref{gbq}, Risa/Asir computed $C_7$ and $McKay$ |
|
by the Buchberger algorithm with the methods described in Section |
|
\ref{gbhomo} and \ref{gbcont}. It is obvious that $F_4$ |
|
implementation in Risa/Asir over {\bf Q} is too immature. Nevertheless |
|
the timing of $McKay$ is greatly reduced. Fig. \ref{f4vsbuch} |
|
explains why $F_4$ is efficient in this case. The figure shows that |
|
the Buchberger algorithm produces normal forms with huge coefficients |
|
for S-polynomials after the 250-th one, which are the computations in |
|
degree 16. However, we know that the reduced basis elements have much |
|
smaller coefficients after removing contents. As $F_4$ algorithm |
|
automatically produces the reduced ones, the degree 16 computation is |
|
quite easy in $F_4$. |
|
|
|
|
Table \ref{gbq} shows that it is difficult or practically impossible |
|
to compute Groebner bases of $C_7$, $C_8$ and $McKay$ without |
|
the methods described in Section \ref{gbhomo} and \ref{gbcont}. |
|
|
|
Though $F_4$ implementation in Risa/Asir over {\bf Q} is still |
|
experimental, the timing of $McKay$ is greatly reduced. |
|
Fig. \ref{f4vsbuch} explains why $F_4$ is efficient in this case. The |
|
figure shows that the Buchberger algorithm produces normal forms with |
|
huge coefficients for S-polynomials after the 250-th one, which are |
|
the computations in degree 16. However, we know that the reduced |
|
basis elements have much smaller coefficients after removing contents. |
|
As $F_4$ algorithm automatically produces the reduced ones, the degree |
|
16 computation is quite easy in $F_4$. |
|
|
\begin{table}[hbtp] |
\begin{table}[hbtp] |
\begin{center} |
\begin{center} |
\begin{tabular}{|c||c|c|c|c|c|c|c|} \hline |
\begin{tabular}{|c||c|c|c|c|c|c|c|} \hline |
& $C_7$ & $C_8$ & $K_7$ & $K_8$ & $K_9$ & $K_{10}$ & $K_{11}$ \\ \hline |
& $C_7$ & $C_8$ & $K_7$ & $K_8$ & $K_9$ & $K_{10}$ & $K_{11}$ \\ \hline |
Asir $Buchberger$ & 31 & 1687 & 2.6 & 27 & 294 & 4309 & --- \\ \hline |
Asir $Buchberger$ & 31 & 1687 & 2.6 & 27 & 294 & 4309 & --- \\ \hline |
Singular & 8.7 & 278 & 0.6 & 5.6 & 54 & 508 & 5510 \\ \hline |
%Singular & 8.7 & 278 & 0.6 & 5.6 & 54 & 508 & 5510 \\ \hline |
CoCoA 4 & 241 & $>$ 5h & 3.8 & 35 & 402 &7021 & --- \\ \hline\hline |
%CoCoA 4 & 241 & $>$ 5h & 3.8 & 35 & 402 &7021 & --- \\ \hline\hline |
Asir $F_4$ & 5.3 & 129 & 0.5 & 4.5 & 31 & 273 & 2641 \\ \hline |
Asir $F_4$ & 5.3 & 129 & 0.5 & 4.5 & 31 & 273 & 2641 \\ \hline |
FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \\ \hline |
FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \\ \hline |
\end{tabular} |
\end{tabular} |
Line 437 FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \ |
|
Line 442 FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \ |
|
|
|
\begin{table}[hbtp] |
\begin{table}[hbtp] |
\begin{center} |
\begin{center} |
\begin{tabular}{|c||c|c|c|c|c|c|} \hline |
\begin{tabular}{|c||c|c|c|c|c|} \hline |
& $C_7$ & $Homog. C_7$ & $C_8$ & $K_7$ & $K_8$ & $McKay$ \\ \hline |
& $C_7$ & $C_8$ & $K_7$ & $K_8$ & $McKay$ \\ \hline |
Asir $Buchberger$ & 389 & 594 & 54000 & 29 & 299 & 34950 \\ \hline |
TR+Homo,Cont & 389 & 54000 & 29 & 299 & 34950 \\ \hline |
Singular & --- & 15247 & --- & 7.6 & 79 & $>$ 20h \\ \hline |
TR+Homo & --- & --- & --- & --- & --- \\ \hline |
CoCoA 4 & --- & 13227 & --- & 57 & 709 & --- \\ \hline\hline |
TR & --- & --- & --- & --- & --- \\ \hline |
Asir $F_4$ & 989 & 456 & --- & 90 & 991 & 4939 \\ \hline |
%Singular & --- & 15247 & --- & 7.6 & 79 & $>$ 20h \\ \hline |
FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline |
%CoCoA 4 & --- & 13227 & --- & 57 & 709 & --- \\ \hline\hline |
|
%Asir $F_4$ & 989 & 456 & --- & 90 & 991 & 4939 \\ \hline |
|
%FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline |
\end{tabular} |
\end{tabular} |
|
|
|
(TR : trace lifting; Homo : homogenization; Cont : contents reduction) |
\end{center} |
\end{center} |
\caption{Groebner basis computation over {\bf Q}} |
\caption{Groebner basis computation over {\bf Q}} |
\label{gbq} |
\label{gbq} |
Line 461 FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline |
|
Line 470 FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline |
|
\end{figure} |
\end{figure} |
|
|
Table \ref{minipoly} shows timing data for the minimal polynomial |
Table \ref{minipoly} shows timing data for the minimal polynomial |
computation over {\bf Q}. Singular provides a function {\tt finduni} |
computations of all variables over {\bf Q} by the modular method. |
for computing the minimal polynomial in each variable in ${\bf |
|
Q}[x_1,\ldots,x_n]/I$ for zero dimensional ideal $I$. The modular |
|
method used in Asir is efficient when the resulting minimal |
|
polynomials have large coefficients and we can verify the fact from Table |
|
\ref{minipoly}. |
|
\begin{table}[hbtp] |
\begin{table}[hbtp] |
\begin{center} |
\begin{center} |
\begin{tabular}{|c||c|c|c|c|c|} \hline |
\begin{tabular}{|c||c|c|c|c|c|} \hline |
& $C_6$ & $C_7$ & $K_6$ & $K_7$ & $K_8$ \\ \hline |
& $C_6$ & $C_7$ & $K_6$ & $K_7$ & $K_8$ \\ \hline |
Singular & 0.9 & 846 & 307 & 60880 & --- \\ \hline |
%Singular & 0.9 & 846 & 307 & 60880 & --- \\ \hline |
Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline |
Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline |
\end{tabular} |
\end{tabular} |
\end{center} |
\end{center} |
Line 505 Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline |
|
Line 509 Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline |
|
%\label{unifac} |
%\label{unifac} |
%\end{table} |
%\end{table} |
|
|
Table \ref{multifac} shows timing data for multivariate |
Table \ref{multifac} shows timing data for multivariate factorization |
factorization over {\bf Q}. |
over {\bf Q}. $W_{i,j,k}$ is a product of three multivariate |
$W_{i,j,k}$ is a product of three multivariate polynomials |
polynomials $Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file {\tt |
$Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file |
fctrdata} in Asir library directory. It is also included in Risa/Asir |
{\tt fctrdata} in Asir library directory. It is also included |
source tree and located in {\tt asir2000/lib}. These examples have |
in Risa/Asir source tree and located in {\tt asir2000/lib}. |
leading coefficients of large degree which vanish at 0 which tend to |
For these examples Risa/Asir shows reasonable performance |
cause so-called the leading coefficient problem the bad zero |
compared with other famous systems. |
problem. Risa/Asir's implementation carefully treats such cases and it |
|
shows reasonable performance compared with other famous systems. |
\begin{table}[hbtp] |
\begin{table}[hbtp] |
\begin{center} |
\begin{center} |
\begin{tabular}{|c||c|c|c|c|c|} \hline |
\begin{tabular}{|c||c|c|c|c|c|} \hline |
Line 521 variables & 3 & 5 & 5 & 5 & 4 \\ \hline |
|
Line 526 variables & 3 & 5 & 5 & 5 & 4 \\ \hline |
|
monomials & 905 & 41369 & 51940 & 30988 & 3344 \\ \hline\hline |
monomials & 905 & 41369 & 51940 & 30988 & 3344 \\ \hline\hline |
Asir & 0.2 & 4.7 & 14 & 17 & 0.4 \\ \hline |
Asir & 0.2 & 4.7 & 14 & 17 & 0.4 \\ \hline |
%Singular& $>$15min & --- & ---& ---& ---\\ \hline |
%Singular& $>$15min & --- & ---& ---& ---\\ \hline |
CoCoA 4 & 5.2 & $>$15min & $>$15min & $>$15min & 117 \\ \hline\hline |
%CoCoA 4 & 5.2 & $>$15min & $>$15min & $>$15min & 117 \\ \hline\hline |
Mathematica 4& 0.2 & 16 & 23 & 36 & 1.1 \\ \hline |
Mathematica 4& 0.2 & 16 & 23 & 36 & 1.1 \\ \hline |
Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline |
Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline |
\end{tabular} |
\end{tabular} |
Line 529 Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline |
|
Line 534 Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline |
|
\caption{Multivariate factorization over {\bf Q}} |
\caption{Multivariate factorization over {\bf Q}} |
\label{multifac} |
\label{multifac} |
\end{table} |
\end{table} |
As to univariate factorization over {\bf Q}, |
As to univariate factorization over {\bf Q}, the univariate factorizer |
the univariate factorizer implements only classical |
implements old algorithms and its behavior is what one expects, |
algorithms and its behavior is what one expects, |
that is, it shows average performance in cases where there are little |
that is, it shows average performance in cases |
extraneous factors, but shows poor performance for hard to factor |
where there are little extraneous factors, but |
polynomials with many extraneous factors. |
shows poor performance for hard to factor polynomials with |
|
many extraneous factors. |
|
|
|
\section{OpenXM and Risa/Asir OpenXM interfaces} |
\section{OpenXM and Risa/Asir OpenXM interfaces} |
|
|
Line 565 the method to reset a server is carefully designed and |
|
Line 568 the method to reset a server is carefully designed and |
|
a robust way of using servers both for interactive and non-interactive |
a robust way of using servers both for interactive and non-interactive |
purposes. |
purposes. |
|
|
\subsection{OpenXM client interface of {\tt asir}} |
\subsection{OpenXM API in Risa/Asir user language} |
|
|
Risa/Asir is a main client in OpenXM package. The application {\tt |
Risa/Asir is a main client in OpenXM package. The application {\tt |
asir} can access to OpenXM servers via several built-in interface |
asir} can access to OpenXM servers via several built-in interface |
Line 644 def gbcheck(B,V,O,Procs) { |
|
Line 647 def gbcheck(B,V,O,Procs) { |
|
} |
} |
\end{verbatim} |
\end{verbatim} |
|
|
\subsection{Asir OpenXM library {\tt libasir.a}} |
\subsection{OpenXM C language API in {\tt libasir.a}} |
|
|
Asir OpenXM library {\tt libasir.a} contains functions simulating the |
Risa/Asir subroutine library {\tt libasir.a} contains functions |
stack machine commands supported in {\tt ox\_asir}. By linking {\tt |
simulating the stack machine commands supported in {\tt ox\_asir}. By |
libasir.a} an application can use the same functions as in {\tt |
linking {\tt libasir.a} an application can use the same functions as |
ox\_asir} without accessing to {\tt ox\_asir} via TCP/IP. There is |
in {\tt ox\_asir} without accessing to {\tt ox\_asir} via |
also a stack, which can be manipulated by the library functions. In |
TCP/IP. There is also a stack, which can be manipulated by the library |
order to make full use of this interface, one has to prepare |
functions. In order to make full use of this interface, one has to |
conversion functions between CMO and the data structures proper to the |
prepare conversion functions between CMO and the data structures |
application itself. A function {\tt asir\_ox\_pop\_string()} is |
proper to the application itself. A function {\tt |
provided to convert CMO to a human readable form, which may be |
asir\_ox\_pop\_string()} is provided to convert CMO to a human |
sufficient for a simple use of this interface. |
readable form, which may be sufficient for a simple use of this |
|
interface. |
|
|
\section{Concluding remarks} |
\section{Concluding remarks} |
We have shown the current status of Risa/Asir and its OpenXM |
We have shown the current status of Risa/Asir and its OpenXM |