diff options
Diffstat (limited to 'eigen/doc/examples/function_taking_ref.cpp')
-rw-r--r-- | eigen/doc/examples/function_taking_ref.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/eigen/doc/examples/function_taking_ref.cpp b/eigen/doc/examples/function_taking_ref.cpp new file mode 100644 index 0000000..162a202 --- /dev/null +++ b/eigen/doc/examples/function_taking_ref.cpp @@ -0,0 +1,19 @@ +#include <iostream> +#include <Eigen/SVD> +using namespace Eigen; +using namespace std; + +float inv_cond(const Ref<const MatrixXf>& a) +{ + const VectorXf sing_vals = a.jacobiSvd().singularValues(); + return sing_vals(sing_vals.size()-1) / sing_vals(0); +} + +int main() +{ + Matrix4f m = Matrix4f::Random(); + cout << "matrix m:" << endl << m << endl << endl; + cout << "inv_cond(m): " << inv_cond(m) << endl; + cout << "inv_cond(m(1:3,1:3)): " << inv_cond(m.topLeftCorner(3,3)) << endl; + cout << "inv_cond(m+I): " << inv_cond(m+Matrix4f::Identity()) << endl; +} |