1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <unsupported/Eigen/MatrixFunctions>
2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <iostream>
3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace Eigen;
5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathint main()
7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  MatrixXd A = MatrixXd::Random(3,3);
9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  std::cout << "A = \n" << A << "\n\n";
10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  MatrixXd sinA = A.sin();
12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  std::cout << "sin(A) = \n" << sinA << "\n\n";
13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  MatrixXd cosA = A.cos();
15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  std::cout << "cos(A) = \n" << cosA << "\n\n";
16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // The matrix functions satisfy sin^2(A) + cos^2(A) = I,
18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // like the scalar functions.
19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  std::cout << "sin^2(A) + cos^2(A) = \n" << sinA*sinA + cosA*cosA << "\n\n";
20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
21