| 259 | 
  | 
                 | 
| 260 | 
  | 
      // set the tolerance for Euler angles and rotation elements | 
| 261 | 
  | 
 | 
| 262 | 
< | 
      theta = acos(std::min(1.0, std::max(-1.0,this->data_[2][2]))); | 
| 262 | 
> | 
      theta = acos(std::min((RealType)1.0, std::max((RealType)-1.0,this->data_[2][2]))); | 
| 263 | 
  | 
      ctheta = this->data_[2][2];  | 
| 264 | 
  | 
      stheta = sqrt(1.0 - ctheta * ctheta); | 
| 265 | 
  | 
 | 
| 318 | 
  | 
     */ | 
| 319 | 
  | 
    SquareMatrix3<Real>  inverse() const { | 
| 320 | 
  | 
      SquareMatrix3<Real> m; | 
| 321 | 
< | 
      double det = determinant(); | 
| 321 | 
> | 
      RealType det = determinant(); | 
| 322 | 
  | 
      if (fabs(det) <= oopse::epsilon) { | 
| 323 | 
  | 
        //"The method was called on a matrix with |determinant| <= 1e-6.", | 
| 324 | 
  | 
        //"This is a runtime or a programming error in your application."); | 
| 336 | 
  | 
 | 
| 337 | 
  | 
            int a = (zeroDiagElementIndex[0] + 1) % 3; | 
| 338 | 
  | 
            int b = (zeroDiagElementIndex[0] + 2) %3; | 
| 339 | 
< | 
            double denom = this->data_[a][a] * this->data_[b][b] - this->data_[b][a]*this->data_[a][b]; | 
| 339 | 
> | 
            RealType denom = this->data_[a][a] * this->data_[b][b] - this->data_[b][a]*this->data_[a][b]; | 
| 340 | 
  | 
            m(a, a) = this->data_[b][b] /denom; | 
| 341 | 
  | 
            m(b, a) = -this->data_[b][a]/denom; | 
| 342 | 
  | 
 | 
| 561 | 
  | 
  } | 
| 562 | 
  | 
 | 
| 563 | 
  | 
     | 
| 564 | 
< | 
  typedef SquareMatrix3<double> Mat3x3d; | 
| 565 | 
< | 
  typedef SquareMatrix3<double> RotMat3x3d; | 
| 564 | 
> | 
  typedef SquareMatrix3<RealType> Mat3x3d; | 
| 565 | 
> | 
  typedef SquareMatrix3<RealType> RotMat3x3d; | 
| 566 | 
  | 
 | 
| 567 | 
  | 
} //namespace oopse | 
| 568 | 
  | 
#endif // MATH_SQUAREMATRIX_HPP |