## Module ppm_module_util_eigen_3sym

This module provides the routines that compute Eigenvalues and Eigenvectors of symmetric 3x3 matrices.

name description

no types

### Defined Module Interfaces

name description

ppm_util_eigen_3sym

name description

no subroutines

### Interface ppm_util_eigen_3sym

Subroutines contained in this interface:

name description

ppm_util_eigen_3sym_s

This routine computes the Eigenvalues and

ppm_util_eigen_3sym_d

This routine computes the Eigenvalues and

### Subroutine ppm_util_eigen_3sym_d

This routine computes the Eigenvalues and orthonormal Eigenvectors of a symmetric, REAL 3x3 matrix.

Note This routine uses explicit formulas for the coefficients of the characteristic polynomial and solves the resulting cubic equation using the routine ppm_util_cubeq_real.
Note This routine only handles symmetric matrices, since in this case, all Eigenvalues are REAL and all Eigenvectors are pairwise orthogonal.
Tip For `ppm_debug > 1` the routine checks its own result. Maybe - after some time - this can be removed.

#### Arguments

name type dimension intent optional description

am

real array

(3,3)

(IN)

The 3x3 matrix stored in row-major order (i.e. first index is row

eval

real array

(3)

(OUT)

Eigenvectors. Evec(:,1) is the first vector (to Eval(1)),

evec

real array

(3,3)

(OUT)

Eigenvalues. Sorted with the largest value first.

info

integer

(OUT)

Return status, 0 on success

##### am

real array, `(3,3)`, (IN)

The 3x3 matrix stored in row-major order (i.e. first index is row number, 2nd is column number).

##### eval

real array, `(3)`, (OUT)

Eigenvectors. Evec(:,1) is the first vector (to Eval(1)), Evec(:,2) the second and Evec(:,3) the third. Eigenvectors are orthonormal when returned.

##### evec

real array, `(3,3)`, (OUT)

Eigenvalues. Sorted with the largest value first.

##### info

integer, , (OUT)

Return status, 0 on success

### Subroutine ppm_util_eigen_3sym_s

This routine computes the Eigenvalues and orthonormal Eigenvectors of a symmetric, REAL 3x3 matrix.

Note This routine uses explicit formulas for the coefficients of the characteristic polynomial and solves the resulting cubic equation using the routine ppm_util_cubeq_real.
Note This routine only handles symmetric matrices, since in this case, all Eigenvalues are REAL and all Eigenvectors are pairwise orthogonal.
Tip For `ppm_debug > 1` the routine checks its own result. Maybe - after some time - this can be removed.

#### Arguments

name type dimension intent optional description

am

real array

(3,3)

(IN)

The 3x3 matrix stored in row-major order (i.e. first index is row

eval

real array

(3)

(OUT)

Eigenvectors. Evec(:,1) is the first vector (to Eval(1)),

evec

real array

(3,3)

(OUT)

Eigenvalues. Sorted with the largest value first.

info

integer

(OUT)

Return status, 0 on success

##### am

real array, `(3,3)`, (IN)

The 3x3 matrix stored in row-major order (i.e. first index is row number, 2nd is column number).

##### eval

real array, `(3)`, (OUT)

Eigenvectors. Evec(:,1) is the first vector (to Eval(1)), Evec(:,2) the second and Evec(:,3) the third. Eigenvectors are orthonormal when returned.

##### evec

real array, `(3,3)`, (OUT)

Eigenvalues. Sorted with the largest value first.

##### info

integer, , (OUT)

Return status, 0 on success

### Defined Module Variables

name type dimension description

no variables

has no uses