3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
5 <link rel=
"stylesheet" href=
"../../../../../../doc/src/boostbook.css" type=
"text/css">
6 <meta name=
"generator" content=
"DocBook XSL Stylesheets V1.77.1">
7 <link rel=
"home" href=
"../../index.html" title=
"Chapter 1. Boost.Multiprecision">
8 <link rel=
"up" href=
"../map.html" title=
"Roadmap">
9 <link rel=
"prev" href=
"hist.html" title=
"History">
10 <link rel=
"next" href=
"faq.html" title=
"FAQ">
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table cellpadding=
"2" width=
"100%"><tr>
14 <td valign=
"top"><img alt=
"Boost C++ Libraries" width=
"277" height=
"86" src=
"../../../../../../boost.png"></td>
15 <td align=
"center"><a href=
"../../../../../../index.html">Home
</a></td>
16 <td align=
"center"><a href=
"../../../../../../libs/libraries.htm">Libraries
</a></td>
17 <td align=
"center"><a href=
"http://www.boost.org/users/people.html">People
</a></td>
18 <td align=
"center"><a href=
"http://www.boost.org/users/faq.html">FAQ
</a></td>
19 <td align=
"center"><a href=
"../../../../../../more/index.htm">More
</a></td>
22 <div class=
"spirit-nav">
23 <a accesskey=
"p" href=
"hist.html"><img src=
"../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../map.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=
"faq.html"><img src=
"../../../../../../doc/src/images/next.png" alt=
"Next"></a>
26 <div class=
"titlepage"><div><div><h3 class=
"title">
27 <a name=
"boost_multiprecision.map.todo"></a><a class=
"link" href=
"todo.html" title=
"TODO">TODO
</a>
28 </h3></div></div></div>
30 More a list of what
<span class=
"emphasis"><em>could
</em></span> be done, rather than what
31 <span class=
"emphasis"><em>should
</em></span> be done (which may be a much smaller list!).
33 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
35 Add back-end support for libdecNumber.
38 Add an adaptor back-end for complex number types.
41 Add better multiplication routines (Karatsuba, FFT etc) to cpp_int_backend.
44 Add assembly level routines to cpp_int_backend.
47 Can ring types (exact floating-point types) be supported? The answer
48 should be yes, but someone needs to write it, the hard part is IO and
49 binary-decimal conversion.
52 Should there be a choice of rounding mode (probably MPFR specific)?
55 We can reuse temporaries in multiple subtrees (temporary caching).
58 cpp_dec_float should round to nearest.
61 A
2's complement fixed precision int that uses exactly N bits and no
66 Things requested in review:
68 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
70 The performances of mp_number
<a_trivial_adaptor
<float
>, false
>respect
71 to float and mp_number
<a_trivial_adaptor
<int
>, false
> and
72 int should be given to show the cost of using the generic interface (Mostly
73 done, just need to update docs to the latest results).
76 Should we provide min/max overloads for expression templates? (Not done
77 - we can't overload functions declared in the std namespace :-( ).
80 The rounding applied when converting must be documented (Done).
83 Document why we don't abstract out addition/multiplication algorithms
87 Document why we don't use proto (compile times) (Done).
90 We can reuse temporaries in multiple subtrees (temporary caching) Moved
94 Emphasise in the docs that ET's may reorder operations (done
2012/
10/
31).
97 Document what happens to small fixed precision cpp_int's (done
2012/
10/
31).
100 The use of bool in template parameters could be improved by the use of
101 an enum class which will be more explicit. E.g
<code class=
"computeroutput"><span class=
"keyword">enum
</span>
102 <span class=
"keyword">class
</span> <span class=
"identifier">expression_template
</span>
103 <span class=
"special">{
</span><span class=
"identifier">disabled
</span><span class=
"special">,
</span> <span class=
"identifier">enabled
</span><span class=
"special">};
</span> <span class=
"keyword">enum
</span> <span class=
"keyword">class
</span> <span class=
"identifier">sign
</span>
104 <span class=
"special">{
</span><span class=
"keyword">unsigned
</span><span class=
"special">,
</span> <span class=
"keyword">signed
</span><span class=
"special">};
</span></code> (Partly done
2012/
09/
15, done
2012/
10/
31).
106 <li class=
"listitem">
107 Each back-end should document the requirements it satisfies (not currently
108 scheduled for inclusion: it's deliberately an implementation detail,
109 and
"optional" requirements are optimisations which can't be
110 detected by the user). Not done: this is an implementation detail, the
111 exact list of requirements satisfied is purely an optimization, not something
114 <li class=
"listitem">
115 A backend for an overflow aware integers (done
2012/
10/
31).
117 <li class=
"listitem">
118 IIUC convert_to is used to emulate in c++
98 compilers C++
11 explicit
119 conversions. Could the explicit conversion operator be added on compilers
120 supporting it? (Done
2012/
09/
15).
122 <li class=
"listitem">
123 The front-end should make the differences between implicit and explicit
124 construction (Done
2012/
09/
15).
126 <li class=
"listitem">
127 The tutorial should add more examples concerning implicit or explicit
128 conversions. (Done
2012/
09/
15).
130 <li class=
"listitem">
131 The documentation must explain how move semantics helps in this domain
132 and what the backend needs to do to profit from this optimization. (Done
135 <li class=
"listitem">
136 The documentation should contain Throws specification on the mp_number
137 and backend requirements operations. (Done
2012/
09/
15).
139 <li class=
"listitem">
140 The library interface should use the noexcept (BOOST_NOEXCEPT, ...) facilities
143 <li class=
"listitem">
144 It is unfortunate that the generic mp_number front end can not make use
145 constexpr as not all the backends can ensure this (done - we can go quite
148 <li class=
"listitem">
149 literals: The library doesn't provide some kind of literals. I think
150 that the mp_number class should provide a way to create literals if the
151 backend is able to. (Done
2012/
09/
15).
153 <li class=
"listitem">
154 The ExpresionTemplate parameter could be defaulted to a traits class
155 for more sensible defaults (done
2012/
09/
20).
157 <li class=
"listitem">
158 In a = exp1 op exp2 where a occurs inside one of exp1 or exp2 then we
159 can optimise and eliminate one more temporary (done
2012/
09/
20).
163 <a name=
"boost_multiprecision.map.todo.h0"></a>
164 <span class=
"phrase"><a name=
"boost_multiprecision.map.todo.pre_review_comments"></a></span><a class=
"link" href=
"todo.html#boost_multiprecision.map.todo.pre_review_comments">Pre-Review
167 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
168 <li class=
"listitem">
169 Make fixed precision orthogonal to Allocator type in cpp_int. Possible
170 solution - add an additional MaxBits template argument that defaults
171 to
0 (meaning keep going till no more space/memory). Done.
173 <li class=
"listitem">
174 Can ring types (exact floating-point types) be supported? The answer
175 should be yes, but someone needs to write it (Moved to TODO list).
177 <li class=
"listitem">
178 Should there be a choice of rounding mode (probably MPFR specific)? Moved
181 <li class=
"listitem">
182 Make the exponent type for cpp_dec_float a template parameter, maybe
183 include support for big-integer exponents. Open question - what should
184 be the default - int32_t or int64_t? (done
2012/
09/
06)
186 <li class=
"listitem">
187 Document the size requirements of fixed precision ints (done
2012/
09/
15).
189 <li class=
"listitem">
190 Document std lib function accuracy (done
2012/
09/
15).
192 <li class=
"listitem">
193 Be a bit clearer on the effects of sign-magnitude representation of cpp_int
194 - min == -max etc - done.
196 <li class=
"listitem">
197 Document cpp_dec_float precision, rounding, and exponent size (done
2012/
09/
06).
199 <li class=
"listitem">
200 Can we be clearer in the docs that mixed arithmetic doesn't work (no
201 longer applicable as of
2012/
09/
06)?
203 <li class=
"listitem">
204 Document round functions behaviour better (they behave as in C++
11) (added
207 <li class=
"listitem">
208 Document limits on size of cpp_dec_float (done
2012/
09/
06).
210 <li class=
"listitem">
211 Add support for fused multiply add (and subtract). GMP mpz_t could use
212 this (done
2012/
09/
20).
216 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
217 <td align=
"left"></td>
218 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2002-
2013 John Maddock and Christopher Kormanyos
<p>
219 Distributed under the Boost Software License, Version
1.0. (See accompanying
220 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>)
225 <div class=
"spirit-nav">
226 <a accesskey=
"p" href=
"hist.html"><img src=
"../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../map.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=
"faq.html"><img src=
"../../../../../../doc/src/images/next.png" alt=
"Next"></a>