Next: A First Session with AXIOM
Up: Computer Algebra
Previous: A breif history
The main challenges of symbolic/exact computations:
- intermediate expression swell,
- complexity of symbolic computations
- implementing fast algorithms.
We iluustrate below the gap between naive and optimized implementations
of the same algorithm.
Figure:
Polynomial addition over
/p
mathend000#.
![\begin{figure}\htmlimage[no_transparent]
\centering
\includegraphics[scale=0.5]{uma2add.eps}
\end{figure}](img9.png) |
Figure:
Polynomial multiplication over
/p
mathend000#.
![\begin{figure}\htmlimage[no_transparent]
\centering
\includegraphics[scale=0.5]{uma2mul.eps}
\end{figure}](img10.png) |
Next, we show benchmarks between classical and FFT-based
univariate polynomial multiplication.
Figure:
FFT-based univariate polynomial multiplication over
/p
mathend000#
![\begin{figure}\htmlimage[no_transparent]
\centering
\includegraphics[scale=0.3]{fftflowchart.eps}
\end{figure}](img11.png) |
Figure:
Classical vs FFT-based univariate polynomial multiplication over
/p
mathend000#
![\begin{figure}\htmlimage[no_transparent]
\centering
\includegraphics[scale=0.5]{classicalfft.eps}
\end{figure}](img12.png) |
The maple work sheet Bareiss.mw iluustrates
the problem of intermediate expression swell.
In many situations, this problem is solved by means of modular
methods. Here's an example of such method that will study
in detail later
- Input:
-
A = (aij)
mathend000# a square matrix over
mathend000#
of order n
mathend000# with
| aij |
C
mathend000# for
1
i, j
n
mathend000#.
- Output:
-
det(A)
mathend000#.
mathend000#
Another example of intermediate expression swell
is given below. Consider the polynomials
r0 = x 200 + x 10 +1 and r1 = x 80 + x 8 + 1 |
(1) |
in the ring
[x]
mathend000#.
The successive remainders of the Euclidean Algorithm applied
to r0
mathend000# and r1
mathend000# are
-
r2 = x
56 + 2 x
48 + x
40 + x
10 + 1
mathend000#
-
r3 = 5 x
48 + 4 x
40 - x
34 + 2 x
26 - x
24 - 3 x
18 + 2 x
16 + 4 x
10 - 2 x
8 + 5
mathend000#
-
r4 =
+
-
+
+
-
-
-
+
-
-
mathend000#
-
r5 =
-
+
-
-
+
-
+
+
+
-
-
+
+
-
+
-
+ x
6 -
+
+
mathend000#
-
r6 =
+
-
+
-
-
+
-
-
+
-
-
-
-
-
-
-
+
-
-
mathend000#
-
r7 =
-
+
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
mathend000#
-
r8 =
-
-
-
-
+
+
-
-
-
-
-
-
+
-
-
-
+
mathend000#
-
r9 =
+
+
+
-
+
+
+
-
+
+
+
-
+
+
-
-
mathend000#
-
r10 =
+
-
-
+
+
+
-
+
-
-
-
+
+
-
-
mathend000#
-
r11 =
+
-
+
-
+
-
+
+
+
-
+
+
+
-
mathend000#
-
r12 =
-
+
-
+
-
+
+
+
-
+
+
+
-
mathend000#
-
r13 =
-
+
-
+
-
+
+
+
-
-
+
+
mathend000#
-
r14 =
+
-
+
+
+
-
-
+
+
-
+
mathend000#
-
r15 =
-
+
+
+
-
-
+
+
-
+
mathend000#
-
r16 =
-
+
-
-
-
-
-
-
-
mathend000#
-
r17 =
+
+
+
+
+
+
+
+
mathend000#
-
r18 =
+
+
-
+
+
+
-
mathend000#
-
r19 = -
+
-
+
+
+
+
mathend000#
-
r20 =
-
+
+
+
+
mathend000#
-
r21 = -
+
-
-
-
mathend000#
-
r22 =
-
-
+
mathend000#
-
r23 =
+
-
mathend000#
-
r24 = -
+
mathend000#
-
r25 =
mathend000#
-
r26 = 0
mathend000#
We will study modular methods for the Euclidean Algorithm too.
Next: A First Session with AXIOM
Up: Computer Algebra
Previous: A breif history
Marc Moreno Maza
2007-01-10