summaryrefslogtreecommitdiffhomepage
path: root/eigen/doc/examples/function_taking_ref.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'eigen/doc/examples/function_taking_ref.cpp')
-rw-r--r--eigen/doc/examples/function_taking_ref.cpp19
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;
+}