mirror of
https://github.com/vale981/arb
synced 2025-03-05 09:21:38 -05:00
add a first todo.txt
This commit is contained in:
parent
930a7d9649
commit
7ed98fc3fb
1 changed files with 78 additions and 0 deletions
78
todo.txt
Normal file
78
todo.txt
Normal file
|
@ -0,0 +1,78 @@
|
|||
Urgent
|
||||
------
|
||||
|
||||
* More test code. In particular, ball arithmetic needs test code that
|
||||
tries to trigger corner cases. Aliasing tests are also missing.
|
||||
|
||||
* Documentation.
|
||||
|
||||
* Make sure that excessive shifts in add/sub are detected
|
||||
with exact precision.
|
||||
|
||||
* Fix code duplication, add functions to encapsulate fiddly bits of code, etc.
|
||||
|
||||
* Fix missing/wrong error bounds currently used in the code (see TODO/XXX).
|
||||
|
||||
* Add missing polynomial functionality (conversions, arithmetic, etc.)
|
||||
|
||||
|
||||
Important
|
||||
---------
|
||||
|
||||
* Transcendental functions.
|
||||
|
||||
* Matrices.
|
||||
|
||||
* Add adjustment code for balls (when the mantissa is much more precise than
|
||||
the error bound, it can be truncated). Also, try to work out consistent
|
||||
semantics for ball arithmetic (with regard to extra working precision, etc.)
|
||||
|
||||
* Do a low-level rewrite of the fmpr type.
|
||||
|
||||
The mantissa should probably be changed to an unsigned, top-aligned fraction
|
||||
(i.e. the exponent will point to the top rather than the bottom, and
|
||||
the top bit of the ).
|
||||
|
||||
This requires a separate sign field, increasing the struct size from
|
||||
2 to 3 words, but ought to lead to simpler code and slightly less overhead.
|
||||
|
||||
The unsigned fraction can be stored directly in a ulong when it has
|
||||
most 64 bits. A zero top bit can be used to tag the field as a pointer.
|
||||
The pointer could either be to an mpz struct or directly to a limb array
|
||||
where the first two limbs encode the allocation and used size.
|
||||
There should probably be a recycling mechanism as for fmpz.
|
||||
|
||||
Required work:
|
||||
memory allocation code
|
||||
conversions to/from various integer types
|
||||
rounding/normalization
|
||||
addition
|
||||
subtraction
|
||||
comparison
|
||||
multiplication
|
||||
fix any code accessing the exponent and mantissa directly as integers
|
||||
|
||||
Lower priority:
|
||||
low-level division, square root (these are not as critical for
|
||||
performance -- it is ok to do them by converting to integers and back)
|
||||
|
||||
direct low-level code for addmul, mul_ui etc
|
||||
|
||||
* Native string conversion code instead of relying on mpfr (so we can have
|
||||
big exponents, etc.).
|
||||
|
||||
|
||||
Distant future
|
||||
--------------
|
||||
|
||||
* Add functions for sloppy arithmetic (non-exact rounding). This could be
|
||||
used to speed up some ball operations with inexact output, where we don't
|
||||
need the best possible result, just a correct error bound.
|
||||
|
||||
* Write functions that ignore the possibility that exponents might be
|
||||
large, and use where appropriate (e.g. polynomial and matrix multiplication
|
||||
where one bounds magnitudes in an initial pass).
|
||||
|
||||
* Add generic code for hypergeometric series (etc.) and if possible, use
|
||||
for elementary functions.
|
||||
|
Loading…
Add table
Reference in a new issue