A sparse MPC solver for walking motion generation (old version).
solver/matrix_ecL_as.h
Go to the documentation of this file.
00001 
00008 #ifndef MATRIX_ECL_AS_H
00009 #define MATRIX_ECL_AS_H
00010 
00011 
00012 /****************************************
00013  * INCLUDES 
00014  ****************************************/
00015 
00016 #include "smpc_common.h"
00017 #include "problem_param.h"
00018 
00019 
00022 
00023 /****************************************
00024  * DEFINES
00025  ****************************************/
00026 
00028 #define MATRIX_SIZE_3x3 9
00029 
00030 /****************************************
00031  * TYPEDEFS 
00032  ****************************************/
00033 
00034 using namespace std;
00035 
00036 
00041 class matrix_ecL_as
00042 {
00043     public:
00044         /*********** Constructors / Destructors ************/
00045         matrix_ecL_as(const int);
00046         ~matrix_ecL_as();
00047 
00048         void form (const problem_parameters&);
00049 
00050         void solve_backward (const int, double *);
00051         void solve_forward (const int, double *);
00052 
00053         double *ecL;
00054         double **ecL_diag;
00055         double **ecL_ndiag;
00056 
00057     private:
00058         void chol_dec (double *);
00059 
00060         void form_iQBiPB (const double *, const double *, const double, double*);
00061         void form_iQAT (const double, const double, const double *);
00062         void form_AiQATiQBiPB (const problem_parameters&, const state_parameters&, double *);
00063 
00064         void form_L_non_diag(const double *, double *);
00065         void form_L_diag(const double *, double *);
00066 
00067 
00068         // intermediate results used in computation of L
00069         double *iQAT;       
00070 };
00072 
00073 #endif /*MATRIX_ECL_AS_H*/