]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | <html> |
2 | <head> | |
3 | <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> | |
4 | <title>TODO</title> | |
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"> | |
11 | </head> | |
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> | |
20 | </tr></table> | |
21 | <hr> | |
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> | |
24 | </div> | |
25 | <div class="section"> | |
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> | |
29 | <p> | |
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!). | |
32 | </p> | |
33 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | |
34 | <li class="listitem"> | |
35 | Add back-end support for libdecNumber. | |
36 | </li> | |
37 | <li class="listitem"> | |
38 | Add an adaptor back-end for complex number types. | |
39 | </li> | |
40 | <li class="listitem"> | |
41 | Add better multiplication routines (Karatsuba, FFT etc) to cpp_int_backend. | |
42 | </li> | |
43 | <li class="listitem"> | |
44 | Add assembly level routines to cpp_int_backend. | |
45 | </li> | |
46 | <li class="listitem"> | |
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. | |
50 | </li> | |
51 | <li class="listitem"> | |
52 | Should there be a choice of rounding mode (probably MPFR specific)? | |
53 | </li> | |
54 | <li class="listitem"> | |
55 | We can reuse temporaries in multiple subtrees (temporary caching). | |
56 | </li> | |
57 | <li class="listitem"> | |
58 | cpp_dec_float should round to nearest. | |
59 | </li> | |
60 | <li class="listitem"> | |
61 | A 2's complement fixed precision int that uses exactly N bits and no | |
62 | more. | |
63 | </li> | |
64 | </ul></div> | |
65 | <p> | |
66 | Things requested in review: | |
67 | </p> | |
68 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | |
69 | <li class="listitem"> | |
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). | |
74 | </li> | |
75 | <li class="listitem"> | |
76 | Should we provide min/max overloads for expression templates? (Not done | |
77 | - we can't overload functions declared in the std namespace :-( ). | |
78 | </li> | |
79 | <li class="listitem"> | |
80 | The rounding applied when converting must be documented (Done). | |
81 | </li> | |
82 | <li class="listitem"> | |
83 | Document why we don't abstract out addition/multiplication algorithms | |
84 | etc. (done - FAQ) | |
85 | </li> | |
86 | <li class="listitem"> | |
87 | Document why we don't use proto (compile times) (Done). | |
88 | </li> | |
89 | <li class="listitem"> | |
90 | We can reuse temporaries in multiple subtrees (temporary caching) Moved | |
91 | to TODO list. | |
92 | </li> | |
93 | <li class="listitem"> | |
94 | Emphasise in the docs that ET's may reorder operations (done 2012/10/31). | |
95 | </li> | |
96 | <li class="listitem"> | |
97 | Document what happens to small fixed precision cpp_int's (done 2012/10/31). | |
98 | </li> | |
99 | <li class="listitem"> | |
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). | |
105 | </li> | |
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 | |
112 | the user can detect. | |
113 | </li> | |
114 | <li class="listitem"> | |
115 | A backend for an overflow aware integers (done 2012/10/31). | |
116 | </li> | |
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). | |
121 | </li> | |
122 | <li class="listitem"> | |
123 | The front-end should make the differences between implicit and explicit | |
124 | construction (Done 2012/09/15). | |
125 | </li> | |
126 | <li class="listitem"> | |
127 | The tutorial should add more examples concerning implicit or explicit | |
128 | conversions. (Done 2012/09/15). | |
129 | </li> | |
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 | |
133 | 2012/09/15). | |
134 | </li> | |
135 | <li class="listitem"> | |
136 | The documentation should contain Throws specification on the mp_number | |
137 | and backend requirements operations. (Done 2012/09/15). | |
138 | </li> | |
139 | <li class="listitem"> | |
140 | The library interface should use the noexcept (BOOST_NOEXCEPT, ...) facilities | |
141 | (Done 2012/09/15). | |
142 | </li> | |
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 | |
146 | a way). | |
147 | </li> | |
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). | |
152 | </li> | |
153 | <li class="listitem"> | |
154 | The ExpresionTemplate parameter could be defaulted to a traits class | |
155 | for more sensible defaults (done 2012/09/20). | |
156 | </li> | |
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). | |
160 | </li> | |
161 | </ul></div> | |
162 | <h5> | |
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 | |
165 | Comments</a> | |
166 | </h5> | |
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. | |
172 | </li> | |
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). | |
176 | </li> | |
177 | <li class="listitem"> | |
178 | Should there be a choice of rounding mode (probably MPFR specific)? Moved | |
179 | to TODO list. | |
180 | </li> | |
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) | |
185 | </li> | |
186 | <li class="listitem"> | |
187 | Document the size requirements of fixed precision ints (done 2012/09/15). | |
188 | </li> | |
189 | <li class="listitem"> | |
190 | Document std lib function accuracy (done 2012/09/15). | |
191 | </li> | |
192 | <li class="listitem"> | |
193 | Be a bit clearer on the effects of sign-magnitude representation of cpp_int | |
194 | - min == -max etc - done. | |
195 | </li> | |
196 | <li class="listitem"> | |
197 | Document cpp_dec_float precision, rounding, and exponent size (done 2012/09/06). | |
198 | </li> | |
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)? | |
202 | </li> | |
203 | <li class="listitem"> | |
204 | Document round functions behaviour better (they behave as in C++11) (added | |
205 | note 2012/09/06). | |
206 | </li> | |
207 | <li class="listitem"> | |
208 | Document limits on size of cpp_dec_float (done 2012/09/06). | |
209 | </li> | |
210 | <li class="listitem"> | |
211 | Add support for fused multiply add (and subtract). GMP mpz_t could use | |
212 | this (done 2012/09/20). | |
213 | </li> | |
214 | </ul></div> | |
215 | </div> | |
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>) | |
221 | </p> | |
222 | </div></td> | |
223 | </tr></table> | |
224 | <hr> | |
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> | |
227 | </div> | |
228 | </body> | |
229 | </html> |