00001
00029 #ifndef LS_SOLVE_H
00030 #define LS_SOLVE_H
00031
00032 #include <itpp/base/mat.h>
00033
00034
00035 namespace itpp
00036 {
00037
00038
00041
00042
00048 bool ls_solve(const mat &A, const vec &b, vec &x);
00049
00055 vec ls_solve(const mat &A, const vec &b);
00056
00062 bool ls_solve(const mat &A, const mat &B, mat &X);
00063
00069 mat ls_solve(const mat &A, const mat &B);
00070
00071
00077 bool ls_solve(const cmat &A, const cvec &b, cvec &x);
00078
00084 cvec ls_solve(const cmat &A, const cvec &b);
00085
00091 bool ls_solve(const cmat &A, const cmat &B, cmat &X);
00092
00098 cmat ls_solve(const cmat &A, const cmat &B);
00099
00100
00106 bool ls_solve_chol(const mat &A, const vec &b, vec &x);
00107
00113 vec ls_solve_chol(const mat &A, const vec &b);
00114
00120 bool ls_solve_chol(const mat &A, const mat &B, mat &X);
00121
00127 mat ls_solve_chol(const mat &A, const mat &B);
00128
00129
00135 bool ls_solve_chol(const cmat &A, const cvec &b, cvec &x);
00136
00142 cvec ls_solve_chol(const cmat &A, const cvec &b);
00143
00149 bool ls_solve_chol(const cmat &A, const cmat &B, cmat &X);
00150
00156 cmat ls_solve_chol(const cmat &A, const cmat &B);
00157
00158
00159
00165 bool ls_solve_od(const mat &A, const vec &b, vec &x);
00166
00172 vec ls_solve_od(const mat &A, const vec &b);
00173
00179 bool ls_solve_od(const mat &A, const mat &B, mat &X);
00180
00186 mat ls_solve_od(const mat &A, const mat &B);
00187
00188
00194 bool ls_solve_od(const cmat &A, const cvec &b, cvec &x);
00195
00201 cvec ls_solve_od(const cmat &A, const cvec &b);
00202
00208 bool ls_solve_od(const cmat &A, const cmat &B, cmat &X);
00209
00215 cmat ls_solve_od(const cmat &A, const cmat &B);
00216
00217
00218
00224 bool ls_solve_ud(const mat &A, const vec &b, vec &x);
00225
00231 vec ls_solve_ud(const mat &A, const vec &b);
00232
00238 bool ls_solve_ud(const mat &A, const mat &B, mat &X);
00239
00245 mat ls_solve_ud(const mat &A, const mat &B);
00246
00247
00253 bool ls_solve_ud(const cmat &A, const cvec &b, cvec &x);
00254
00260 cvec ls_solve_ud(const cmat &A, const cvec &b);
00261
00267 bool ls_solve_ud(const cmat &A, const cmat &B, cmat &X);
00268
00274 cmat ls_solve_ud(const cmat &A, const cmat &B);
00275
00276
00282 bool backslash(const mat &A, const vec &b, vec &x);
00283
00289 vec backslash(const mat &A, const vec &b);
00290
00296 bool backslash(const mat &A, const mat &B, mat &X);
00297
00303 mat backslash(const mat &A, const mat &B);
00304
00305
00311 bool backslash(const cmat &A, const cvec &b, cvec &x);
00312
00318 cvec backslash(const cmat &A, const cvec &b);
00319
00325 bool backslash(const cmat &A, const cmat &B, cmat &X);
00326
00332 cmat backslash(const cmat &A, const cmat &B);
00333
00334
00335
00342 vec forward_substitution(const mat &L, const vec &b);
00343
00350 void forward_substitution(const mat &L, const vec &b, vec &x);
00351
00359 vec forward_substitution(const mat &L, int p, const vec &b);
00360
00368 void forward_substitution(const mat &L, int p, const vec &b, vec &x);
00369
00376 vec backward_substitution(const mat &U, const vec &b);
00377
00384 void backward_substitution(const mat &U, const vec &b, vec &x);
00385
00393 vec backward_substitution(const mat &U, int q, const vec &b);
00394
00402 void backward_substitution(const mat &U, int q, const vec &b, vec &x);
00403
00405
00406 }
00407
00408 #endif // #ifndef LS_SOLVE_H
00409
00410
00411