#include <F4ThomasLS.hpp>
Inheritance diagram for F4ThomasLS:
LU Tri diagonal solver Used to solve a set of linearized differencial equations,.... Some restoration are of the style: A * iNew = iOld iNew could be X, and iOld could be b. Optimisations: 1) aligned 16 vectors + aligned moves movaps 2) reduction of cycles using recipocal+multiplication instead of division 3) reducing data in/out via combination of LR and forward substitution this increase also computation complexity Unsuccesfull optimisations 4) (Tried prefetch: no advantage (data too small?)) 5) (Tried movntps: not good movaps is much better!!!) Basic Memory Usage: 9*N
@ Copyrights: Bernard De Cuyper & Eddy Fraiha 2002, Eggs & Pictures. MIT/Open BSD copyright model.
Public Methods | |
F4ThomasLS (int asize) | |
F4ThomasLS (int asize, int lines) | |
virtual | ~F4ThomasLS () |
virtual void | loadA (F4TriDiagonalMatrix *m) |
virtual void | loadMatrix (Float4Vector *u1, Float4Vector *d1, Float4Vector *l1) |
virtual void | loadX (Float4Vector *data) |
virtual void | loadB (Float4Vector *data) |
void | solve () |
virtual void | output () |
virtual void | output (FILE *file) |
Protected Methods | |
void | computeLRdecomposition () |
Equivalent to filter parametrisation. | |
void | forwardSubstitution () |
Equivalent to filter causal part. | |
void | backwardSubstitution () |
Equivalent to filter non-causal part. | |
void | computeLR_forward () |
Equivalent to filter parametrisation. | |
Private Attributes | |
Float4Vector * | uOut |
Float4Vector * | dOut |
Float4Vector * | lOut |
Float4Vector * | y |