From ee63e15e2cad25d8acd0ac6ba6dc9d7a84f74f6c Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Sat, 29 Sep 2007 08:28:36 +0000 Subject: make matrix multiplication do immediate evaluation; add lazyMul() for the old behaviour some reorganization, especially in MatrixStorage start playing with loop unrolling, always_inline, and __restrict__ --- doc/example.cpp | 2 +- doc/tutorial.cpp | 18 ------------------ 2 files changed, 1 insertion(+), 19 deletions(-) (limited to 'doc') diff --git a/doc/example.cpp b/doc/example.cpp index 89f7820b1..25321f4f8 100644 --- a/doc/example.cpp +++ b/doc/example.cpp @@ -12,7 +12,7 @@ template EiScalarProduct twice(const EiObject& m) { - return static_cast(2) * m; + return 2 * m; } int main(int, char**) diff --git a/doc/tutorial.cpp b/doc/tutorial.cpp index 1da3deb1d..03495dbcb 100644 --- a/doc/tutorial.cpp +++ b/doc/tutorial.cpp @@ -29,23 +29,5 @@ int main(int, char **) cout << "Row 0 of m2, written as a column vector, is:" << endl << m2.row(0) << endl; cout << "Column 1 of m2 is:" << endl << m2.col(1) << endl; cout << "The matrix m2 with row 0 and column 1 removed is:" << endl << m2.minor(0,1) << endl; - - cout << endl << "Now let us study a tricky issue." << endl; - cout << "Recall that the matrix product m*m is:" << endl << m*m << endl; - cout << "We want to store that into m, i.e. do \"m = m * m;\"" << endl; - cout << "Here we must be very careful. For if we do \"m = m * m;\"," << endl - << "the matrix m becomes" << endl; - EiMatrix m_save = m; - m = m * m; // the bogus operation - cout << m << "," << endl; - cout << "which is not what was wanted!" << endl - << "Explanation: because of the way expression templates work, the matrix m gets" << endl - << "overwritten _while_ the matrix product m * m is being computed." << endl - << "This is the counterpart of eliminating temporary objects!" << endl - << "Anyway, if you want to store m * m into m, you can do this:" << endl - << " m = (m * m).eval();" << endl; - m = m_save; - m = (m * m).eval(); - cout << "And m is now:" << endl << m << endl << "as was expected." << endl; return 0; } -- cgit v1.2.3