You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
4.8 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual describes how to install and use the GNU multiple precision
arithmetic library, version 6.1.0.
Copyright 1991, 1993-2015 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation License, Version 1.3 or any later
version published by the Free Software Foundation; with no Invariant Sections,
with the Front-Cover Texts being "A GNU Manual", and with the Back-Cover
Texts being "You have freedom to copy and modify this GNU Manual, like GNU
software". A copy of the license is included in
GNU Free Documentation License. -->
<!-- Created by GNU Texinfo 6.4, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Higher degree Toom'n'half (GNU MP 6.1.0)</title>
<meta name="description" content="How to install and use the GNU multiple precision arithmetic library, version 6.1.0.">
<meta name="keywords" content="Higher degree Toom'n'half (GNU MP 6.1.0)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="Multiplication-Algorithms.html#Multiplication-Algorithms" rel="up" title="Multiplication Algorithms">
<link href="FFT-Multiplication.html#FFT-Multiplication" rel="next" title="FFT Multiplication">
<link href="Toom-4_002dWay-Multiplication.html#Toom-4_002dWay-Multiplication" rel="prev" title="Toom 4-Way Multiplication">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<a name="Higher-degree-Toom_0027n_0027half"></a>
<div class="header">
<p>
Next: <a href="FFT-Multiplication.html#FFT-Multiplication" accesskey="n" rel="next">FFT Multiplication</a>, Previous: <a href="Toom-4_002dWay-Multiplication.html#Toom-4_002dWay-Multiplication" accesskey="p" rel="prev">Toom 4-Way Multiplication</a>, Up: <a href="Multiplication-Algorithms.html#Multiplication-Algorithms" accesskey="u" rel="up">Multiplication Algorithms</a> &nbsp; [<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Higher-degree-Toom_0027n_0027half-1"></a>
<h4 class="subsection">15.1.5 Higher degree Toom&rsquo;n&rsquo;half</h4>
<a name="index-Toom-multiplication-2"></a>
<p>The Toom algorithms described above (see <a href="Toom-3_002dWay-Multiplication.html#Toom-3_002dWay-Multiplication">Toom 3-Way Multiplication</a>,
see <a href="Toom-4_002dWay-Multiplication.html#Toom-4_002dWay-Multiplication">Toom 4-Way Multiplication</a>) generalizes to split into an arbitrary
number of pieces. In general a split of two equally long operands into
<em>r</em> pieces leads to evaluations and pointwise multiplications done at
<em>2*r-1</em> points. To fully exploit symmetries it would be better to have
a multiple of 4 points, that&rsquo;s why for higher degree Toom&rsquo;n&rsquo;half is used.
</p>
<p>Toom&rsquo;n&rsquo;half means that the existence of one more piece is considered for a
single operand. It can be virtual, i.e. zero, or real, when the two operand
are not exactly balanced. By choosing an even <em>r</em>,
Toom-<em>r+1/2</em> requires <em>2r</em> points, a multiple of four.
</p>
<p>The four-plets of points include 0, <em>inf</em>, +1, -1 and
<em>+-2^i</em>, <em>+-2^-i</em> . Each of them giving shortcuts for the
evaluation phase and for some steps in the interpolation phase. Further tricks
are used to reduce the memory footprint of the whole multiplication algorithm
to a memory buffer equanl in size to the result of the product.
</p>
<p>Current GMP uses both Toom-6&rsquo;n&rsquo;half and Toom-8&rsquo;n&rsquo;half.
</p>
</body>
</html>