2021-10-05 21:37:46 +02:00

263 lines
8.4 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Rational Number Types</title>
<link rel="stylesheet" href="../../multiprecision.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.Multiprecision">
<link rel="up" href="../tut.html" title="Tutorial">
<link rel="prev" href="complex/complex_adaptor.html" title="complex_adaptor">
<link rel="next" href="rational/cpp_rational.html" title="cpp_rational">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="complex/complex_adaptor.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rational/cpp_rational.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.rational"></a><a class="link" href="rational.html" title="Rational Number Types">Rational Number Types</a>
</h3></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="rational/cpp_rational.html">cpp_rational</a></span></dt>
<dt><span class="section"><a href="rational/gmp_rational.html">gmp_rational</a></span></dt>
<dt><span class="section"><a href="rational/tommath_rational.html">tommath_rational</a></span></dt>
<dt><span class="section"><a href="rational/tommath_rational0.html">tommath_rational</a></span></dt>
<dt><span class="section"><a href="rational/rational_adaptor.html">rational_adaptor</a></span></dt>
</dl></div>
<p>
The following back-ends provide rational number arithmetic:
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Backend Type
</p>
</th>
<th>
<p>
Header
</p>
</th>
<th>
<p>
Radix
</p>
</th>
<th>
<p>
Dependencies
</p>
</th>
<th>
<p>
Pros
</p>
</th>
<th>
<p>
Cons
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">cpp_rational</span></code>
</p>
</td>
<td>
<p>
boost/multiprecision/cpp_int.hpp
</p>
</td>
<td>
<p>
2
</p>
</td>
<td>
<p>
None
</p>
</td>
<td>
<p>
An all C++ Boost-licensed implementation.
</p>
</td>
<td>
<p>
Slower than <a href="http://gmplib.org" target="_top">GMP</a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">gmp_rational</span></code>
</p>
</td>
<td>
<p>
boost/multiprecision/gmp.hpp
</p>
</td>
<td>
<p>
2
</p>
</td>
<td>
<p>
<a href="http://gmplib.org" target="_top">GMP</a>
</p>
</td>
<td>
<p>
Very fast and efficient back-end.
</p>
</td>
<td>
<p>
Dependency on GNU licensed <a href="http://gmplib.org" target="_top">GMP</a>
library.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">tommath_rational</span></code>
</p>
</td>
<td>
<p>
boost/multiprecision/tommath.hpp
</p>
</td>
<td>
<p>
2
</p>
</td>
<td>
<p>
<a href="http://libtom.net" target="_top">libtommath</a>
</p>
</td>
<td>
<p>
All C/C++ implementation that's Boost Software Licence compatible.
</p>
</td>
<td>
<p>
Slower than <a href="http://gmplib.org" target="_top">GMP</a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">rational_adaptor</span></code>
</p>
</td>
<td>
<p>
boost/multiprecision/rational_adaptor.hpp
</p>
</td>
<td>
<p>
N/A
</p>
</td>
<td>
<p>
none
</p>
</td>
<td>
<p>
All C++ adaptor that allows any integer back-end type to be used
as a rational type.
</p>
</td>
<td>
<p>
Requires an underlying integer back-end type.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rational</span></code>
</p>
</td>
<td>
<p>
boost/rational.hpp
</p>
</td>
<td>
<p>
N/A
</p>
</td>
<td>
<p>
None
</p>
</td>
<td>
<p>
A C++ rational number type that can used with any <code class="computeroutput"><span class="identifier">number</span></code> integer type.
</p>
</td>
<td>
<p>
The expression templates used by <code class="computeroutput"><span class="identifier">number</span></code>
end up being "hidden" inside <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">rational</span></code>:
performance may well suffer as a result.
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2002-2020 John
Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="complex/complex_adaptor.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rational/cpp_rational.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>