MyraMath
Classes
rotate.h File Reference

Computes a plane rotation, either single sided (rotate1) or double sided (rotate2). More...

#include <myramath/MYRAMATH_EXPORT.h>
#include <myramath/utility/Number.h>
#include <utility>
Include dependency graph for rotate.h:

Go to the source code of this file.

Classes

class  myra::Matrix22< Number >
 Matrix type with fixed size 2x2. More...
 
class  myra::gesvd2_output< Number >
 Return type of gesvd2() More...
 

Functions

std::pair< NumberS, NumberS > myra::rotate1 (NumberS a0, NumberS a1)
 Single sided rotation. Returns a (c,s) pair such that [c s; -s' c] * [a0; a1] = [x 0], and x is real.
 
std::pair< NumberD, NumberD > myra::rotate1 (NumberD a0, NumberD a1)
 Single sided rotation. Returns a (c,s) pair such that [c s; -s' c] * [a0; a1] = [x 0], and x is real.
 
std::pair< NumberC, NumberC > myra::rotate1 (NumberC a0, NumberC a1)
 Single sided rotation. Returns a (c,s) pair such that [c s; -s' c] * [a0; a1] = [x 0], and x is real.
 
std::pair< NumberZ, NumberZ > myra::rotate1 (NumberZ a0, NumberZ a1)
 Single sided rotation. Returns a (c,s) pair such that [c s; -s' c] * [a0; a1] = [x 0], and x is real.
 
Matrix22< NumberS > myra::make_Matrix22 (NumberS a0, NumberS a1)
 Populates a Matrix22 rotation from a (c,s) pair returned by rotate1(), returns [c s; -s' c].
 
Matrix22< NumberD > myra::make_Matrix22 (NumberD a0, NumberD a1)
 Populates a Matrix22 rotation from a (c,s) pair returned by rotate1(), returns [c s; -s' c].
 
Matrix22< NumberC > myra::make_Matrix22 (NumberC a0, NumberC a1)
 Populates a Matrix22 rotation from a (c,s) pair returned by rotate1(), returns [c s; -s' c].
 
Matrix22< NumberZ > myra::make_Matrix22 (NumberZ a0, NumberZ a1)
 Populates a Matrix22 rotation from a (c,s) pair returned by rotate1(), returns [c s; -s' c].
 
Matrix22< NumberS > myra::sy_rotate2 (NumberS a00, NumberS a11, NumberS a10)
 Double sided rotation, symmetric case. Returns unitary plane rotation R (R*Rh = Rh*R = I) such that R * [a00 a10; a10 a11] * Rt = [x 0; 0 y] is diagonal and real.
 
Matrix22< NumberD > myra::sy_rotate2 (NumberD a00, NumberD a11, NumberD a10)
 Double sided rotation, symmetric case. Returns unitary plane rotation R (R*Rh = Rh*R = I) such that R * [a00 a10; a10 a11] * Rt = [x 0; 0 y] is diagonal and real.
 
Matrix22< NumberC > myra::sy_rotate2 (NumberC a00, NumberC a11, NumberC a10)
 Double sided rotation, symmetric case. Returns unitary plane rotation R (R*Rh = Rh*R = I) such that R * [a00 a10; a10 a11] * Rt = [x 0; 0 y] is diagonal and real.
 
Matrix22< NumberZ > myra::sy_rotate2 (NumberZ a00, NumberZ a11, NumberZ a10)
 Double sided rotation, symmetric case. Returns unitary plane rotation R (R*Rh = Rh*R = I) such that R * [a00 a10; a10 a11] * Rt = [x 0; 0 y] is diagonal and real.
 
Matrix22< NumberS > myra::sy_rotate2 (const Matrix22< NumberS > &A)
 Double sided symmetric rotations that work directly on a symmetric Matrix22 input.
 
Matrix22< NumberD > myra::sy_rotate2 (const Matrix22< NumberD > &A)
 Double sided symmetric rotations that work directly on a symmetric Matrix22 input.
 
Matrix22< NumberC > myra::sy_rotate2 (const Matrix22< NumberC > &A)
 Double sided symmetric rotations that work directly on a symmetric Matrix22 input.
 
Matrix22< NumberZ > myra::sy_rotate2 (const Matrix22< NumberZ > &A)
 Double sided symmetric rotations that work directly on a symmetric Matrix22 input.
 
Matrix22< NumberC > myra::he_rotate2 (NumberS a00, NumberS a11, NumberC a10)
 Double sided rotation, hermitian case. Returns unitary plane rotation R (R*Rh = Rh*R = I) such that R * [a00 a10'; a10 a11] * Rh = [x 0; 0 y] is diagonal and real.
 
Matrix22< NumberZ > myra::he_rotate2 (NumberD a00, NumberD a11, NumberZ a10)
 Double sided rotation, hermitian case. Returns unitary plane rotation R (R*Rh = Rh*R = I) such that R * [a00 a10'; a10 a11] * Rh = [x 0; 0 y] is diagonal and real.
 
Matrix22< NumberC > myra::he_rotate2 (const Matrix22< NumberC > &A)
 Double sided hermitian rotations that work directly on a hermitian Matrix22 input.
 
Matrix22< NumberZ > myra::he_rotate2 (const Matrix22< NumberZ > &A)
 Double sided hermitian rotations that work directly on a hermitian Matrix22 input.
 
gesvd2_output< NumberS > myra::gesvd2 (const Matrix22< NumberS > &A)
 Computes the svd of a Matrix22, A = U*S*V. The outputs U and V are orthogonal (U'U = VV' = I), while S is real and diagonal.
 
gesvd2_output< NumberD > myra::gesvd2 (const Matrix22< NumberD > &A)
 Computes the svd of a Matrix22, A = U*S*V. The outputs U and V are orthogonal (U'U = VV' = I), while S is real and diagonal.
 
gesvd2_output< NumberC > myra::gesvd2 (const Matrix22< NumberC > &A)
 Computes the svd of a Matrix22, A = U*S*V. The outputs U and V are orthogonal (U'U = VV' = I), while S is real and diagonal.
 
gesvd2_output< NumberZ > myra::gesvd2 (const Matrix22< NumberZ > &A)
 Computes the svd of a Matrix22, A = U*S*V. The outputs U and V are orthogonal (U'U = VV' = I), while S is real and diagonal.
 

Detailed Description

Computes a plane rotation, either single sided (rotate1) or double sided (rotate2).