#include <assert.h>
#include <math.h>
#include "EigValComp3x3.h"
#include <iostream>
#include <limits>
Go to the source code of this file.
Namespaces | |
| namespace | lsseg |
Functions | |
| void | xprod (const double *const u, const double *const v, double *res) |
| double | norm2 (const double *v) |
| void | normalize (double *v) |
| void | find_non_collinear (const double *const v, double *res) |
| void | find_kernel (const double *const col1, const double *const col2, const double *const col3, double *ker) |
| void | givens (const double a, const double b, double &c, double &s) |
| void | apply_givens (const double c, const double s, double &alpha1, double &alpha2, double &alpha3, double &beta, double &delta, double &corner) |
| void | apply_givens (const double c, const double s, double &alpha1, double &alpha2, double &beta) |
| void | post_mul_givens (const double c, const double s, double *u, double *v) |
| void | construct_eigvecs (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3, double *v1, double *v2, double *v3) |
| void | lsseg::analytic_eigvals (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3) |
| Compute the eigenvalues of a 3x3 symmetric matrix by analytically solving the corresponding characteristic polynomial. | |
| void | lsseg::analytic_eigsys (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3, double *v1, double *v2, double *v3) |
| Compute the eigenvalues and eigenvectors of a 3x3 symmetric matrix by analytically solving the corresponding characteristic polynomial to find the eigenvalues, and then explicitly constructing the corresponding eigenvectors. | |
| void | lsseg::numeric_eigsys (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3, double *v1, double *v2, double *v3) |
| Compute the eigenvalues and eigenvectors of a 3x3 symmetric matrix by means of an iterative numerical algorithm using Householder transformations and Givens rotations. | |
| void | find_kernel (const double *const col1, const double *const col2, const double *const col3, double *ker) |
| void | construct_eigvecs (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3, double *v1, double *v2, double *v3) |
Variables | |
| const double | EPS = numeric_limits<double>::epsilon() |
| const double | PI = 3.1415926535897932384 |
| const double | THIRD = double(1)/3 |
| const double | TW7TH = double(1)/27 |
| double | tempvec1 [3] |
| double | tempvec2 [3] |
| double | tempvec3 [3] |
Definition in file EigValComp3x3.C.
| void @1::apply_givens | ( | const double | c, | |
| const double | s, | |||
| double & | alpha1, | |||
| double & | alpha2, | |||
| double & | beta | |||
| ) | [static] |
Definition at line 135 of file EigValComp3x3.C.
| void @1::apply_givens | ( | const double | c, | |
| const double | s, | |||
| double & | alpha1, | |||
| double & | alpha2, | |||
| double & | alpha3, | |||
| double & | beta, | |||
| double & | delta, | |||
| double & | corner | |||
| ) | [static] |
Definition at line 117 of file EigValComp3x3.C.
| void @2::construct_eigvecs | ( | double | alpha1, | |
| double | alpha2, | |||
| double | alpha3, | |||
| double | beta, | |||
| double | gamma, | |||
| double | delta, | |||
| double & | lambda1, | |||
| double & | lambda2, | |||
| double & | lambda3, | |||
| double * | v1, | |||
| double * | v2, | |||
| double * | v3 | |||
| ) | [static] |
Definition at line 409 of file EigValComp3x3.C.
| void @1::construct_eigvecs | ( | double | alpha1, | |
| double | alpha2, | |||
| double | alpha3, | |||
| double | beta, | |||
| double | gamma, | |||
| double | delta, | |||
| double & | lambda1, | |||
| double & | lambda2, | |||
| double & | lambda3, | |||
| double * | v1, | |||
| double * | v2, | |||
| double * | v3 | |||
| ) | [static] |
| void @2::find_kernel | ( | const double *const | col1, | |
| const double *const | col2, | |||
| const double *const | col3, | |||
| double * | ker | |||
| ) | [static] |
Definition at line 372 of file EigValComp3x3.C.
| void @1::find_kernel | ( | const double *const | col1, | |
| const double *const | col2, | |||
| const double *const | col3, | |||
| double * | ker | |||
| ) | [static] |
| void @1::find_non_collinear | ( | const double *const | v, | |
| double * | res | |||
| ) | [inline, static] |
Definition at line 81 of file EigValComp3x3.C.
| void @1::givens | ( | const double | a, | |
| const double | b, | |||
| double & | c, | |||
| double & | s | |||
| ) | [inline, static] |
Definition at line 99 of file EigValComp3x3.C.
| double @1::norm2 | ( | const double * | v | ) | [inline, static] |
Definition at line 70 of file EigValComp3x3.C.
| void @1::normalize | ( | double * | v | ) | [inline, static] |
Definition at line 73 of file EigValComp3x3.C.
| void @1::post_mul_givens | ( | const double | c, | |
| const double | s, | |||
| double * | u, | |||
| double * | v | |||
| ) | [static] |
Definition at line 148 of file EigValComp3x3.C.
| void @1::xprod | ( | const double *const | u, | |
| const double *const | v, | |||
| double * | res | |||
| ) | [inline, static] |
Definition at line 63 of file EigValComp3x3.C.
const double EPS = numeric_limits<double>::epsilon() [static] |
Definition at line 58 of file EigValComp3x3.C.
const double PI = 3.1415926535897932384 [static] |
Definition at line 59 of file EigValComp3x3.C.
double tempvec1[3] [static] |
Definition at line 367 of file EigValComp3x3.C.
double tempvec2[3] [static] |
Definition at line 368 of file EigValComp3x3.C.
double tempvec3[3] [static] |
Definition at line 369 of file EigValComp3x3.C.
const double THIRD = double(1)/3 [static] |
Definition at line 60 of file EigValComp3x3.C.
const double TW7TH = double(1)/27 [static] |
Definition at line 61 of file EigValComp3x3.C.
1.4.7