File: TODO

package info (click to toggle)
fflas-ffpack 2.3.2-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 5,208 kB
  • sloc: cpp: 23,021; makefile: 778; sh: 424; csh: 95; ansic: 20
file content (50 lines) | stat: -rw-r--r-- 2,365 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
LUdivine-PLUQ
  * Clean up of all base cases 
  * Only one routine, and automated switch to all implementations

FTRTRI/FTRTRM
  * Optimize base cases
 
Conversion double -> float for small moduli:
  * should be done in each routine, not only gemm


Simplification of helpers:
* currently all mmhelpers have Amax,Amin,Bmax,Bmin, Cmax,Cmin,Outmax,
   Outmin, and all related features for delayed reductions.
* this is not suited for other FieldTraits (say Generic,
   Multiprec,...)
   TODO:
     - write a by-default minimal mmhelper
     - specialize the mmhelper with delayedModular trait with all the
      machinery
* The NeedPreaddreduction system is error-prone and ugly:
==> introduce AddHelpers
- carry max min outmax outmin info when used with a DelayedModular
   FieldTraits
- decide when a mod is required in this case
- empty otherwise.
- Two bool params: add/sub switch, and inplace switch.

CharPoly: How to handle polynomial arithmetic
 * Option 1: generic representation, fixed Poly1Dom domain type, built when needed
   - store polynomials as template type Polynomial which is assumed to
      provide basic std::vector<Element> methods;
   - build a Poly1Dom when arithmetic needs to be done
   - convert Polynomials back and forth to a givvector
   -> no genericity wrt Polynomial representation and domain
 * Option 2: generic domain type, generic representation, built when
      needed
      - pass the type PolRing as template argument (unused in the signature)
      - requires to explicitly specify the template arg list
   -> incompatible with the solution trait system (generates
      partial template specializations)
 * Option 3: generic domain type, generic representation, built only  once
      - pass the PolRing object along all functions that ultimately need it
      -> heavy impact on sage & LinBox functions API (ex
   LinBox::charpoly(PolDom, P, A), FFPACK::CharPoly(PolDom, N, P, A, lda))
 * Option 4: let polynomials know their domain
      - add a reference to the PolDom in the Polynomial object (class Poly inherit from givvector and adds a )
 * Option 5: Option 3 for FFPACK and 4 for LinBox
   - FFPACK: use the usual polynomail/PolRing interface defined in Givaro (Polynomials do not know their domains)
   - LinBox: wrap Givaro Polynomials and PolRing such that a Polynomial knows its Domain -> allow charpoly (P,A)