19 M_[0] = M_[1] = M_[2] = M_[3] = M_[4] = M_[5] = 0;
24 double eigen_vectors[9];
27 axis_[0] =
Vec3r(eigen_vectors[0], eigen_vectors[1], eigen_vectors[2]);
29 axis_[1] =
Vec3r(eigen_vectors[3], eigen_vectors[4], eigen_vectors[5]);
31 axis_[2] =
Vec3r(eigen_vectors[6], eigen_vectors[7], eigen_vectors[8]);
34 for (
int i = 0; i < 3; i++) {
43 double l0 =
::fabs(eigen_value_[0]);
44 double l1 =
::fabs(eigen_value_[1]);
45 double l2 =
::fabs(eigen_value_[2]);
Vec< T, N > & normalize()
ccl_device_inline float2 fabs(const float2 &a)
VecMat::Vec3< real > Vec3r
void semi_definite_symmetric_eigen(const double *mat, int n, double *eigen_vec, double *eigen_val)
void ogf_swap(T &x, T &y)