19 namespace JPP {
using namespace JMATH; }
69 const double __a10,
const double __a11,
70 const double __a20,
const double __a21,
const double __a22) :
93 if (fabs(
a10) > fabs(val)) {
98 if (fabs(
a20) > fabs(val)) {
132 if (fabs(
a21) > fabs(val)) {
237 const double q = (
a00 +
a11 +
a22) / 3.0;
239 const double p = sqrt(p2 / 6.0);
247 const double phi = (
r < -1.0 ?
PI / 3.0 : (
r > 1.0 ? 0.0 : acos(
r) / 3.0));
249 eigenvalues[0] = q + 2*p*cos(phi);
250 eigenvalues[2] = q + 2*p*cos(phi + 2*
PI/3.0);
251 eigenvalues[1] = 3 * q - eigenvalues[0] - eigenvalues[2];
260 if (fabs(eigenvalues[0]) < fabs(eigenvalues[1])) {
261 swap(eigenvalues[0], eigenvalues[1]);
264 if (fabs(eigenvalues[1]) < fabs(eigenvalues[2])) {
266 swap(eigenvalues[1], eigenvalues[2]);
268 if (fabs(eigenvalues[0]) < fabs(eigenvalues[1])) {
269 swap(eigenvalues[0], eigenvalues[1]);
Exception for division by zero.
static const JMatrix3D & getIdentity()
Get reference to unique instance of this class object.
double getDeterminant() const
Get determinant of matrix.
JMatrix3D & div(const double factor)
Scale matrix.
JMatrix3D & sub(const JMatrix3D &A)
Matrix subtraction.
std::array< double, 3 > eigen_values
Type definition of Eigen values.
JMatrix3S(const JMatrix3D &A)
Contructor.
eigen_values getEigenValues(const double epsilon=1e-6) const
Get eigen values.
JMatrix3S(const double __a00, const double __a10, const double __a11, const double __a20, const double __a21, const double __a22)
Contructor.
JMatrix3S()
Default constructor.
void invert()
Invert matrix.
Auxiliary classes and methods for mathematical operations.
static const double PI
Mathematical constants.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).