<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-14239</id>
	<title>Nabble - MTL Dev</title>
	<updated>2009-10-18T09:33:37Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/MTL-Dev-f14239.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL-Dev-f14239.html" />
	<subtitle type="html">General user/development list for the Matrix Template Library (MTL) software package.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-25948202</id>
	<title>traversal and update of sparse matrix</title>
	<published>2009-10-18T09:33:37Z</published>
	<updated>2009-10-18T09:33:37Z</updated>
	<author>
		<name>Rechnan</name>
	</author>
	<content type="html">Hi there,
&lt;br&gt;&lt;br&gt;I want to traverse a sparse matrix and update its elements. I have slightly modified the iteration example from the tutorial, and the traversal works fine. But if I add an inserter, the programm terminates with
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Assertion failed: ma.starts[major+1] &amp;lt;= ma.my_nnz, file c:\programme\boost\boost_1_39\boost\numeric\mtl\matrix\compressed2d.hpp, line 209
&lt;br&gt;&lt;br&gt;If I put the inserter in an own subroutine, everything works fine, but the update process is very slow (probably due to the repeated construction of the inserter). 
&lt;br&gt;Has someone an idea how to solve this problem?
&lt;br&gt;&lt;br&gt;&lt;br&gt;The source code is as follows:
&lt;br&gt;&lt;br&gt;template &amp;lt;typename Matrix&amp;gt;
&lt;br&gt;void f(Matrix&amp; m)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using traits::range_generator; using traits::range::min;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Choose between row and column traversal
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef typename min&amp;lt;range_generator&amp;lt;tag::row, Matrix&amp;gt;, range_generator&amp;lt;tag::col, Matrix&amp;gt; &amp;gt;::type range_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; range_type &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;my_range;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; // Type of outer cursor
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef typename range_type::type &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Type of inner cursor
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef typename traits::range_generator&amp;lt;tag::nz, c_type&amp;gt;::type ic_type;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; // Define the property maps
&lt;br&gt;&amp;nbsp; &amp;nbsp; typename traits::row&amp;lt;Matrix&amp;gt;::type &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;row(m); 
&lt;br&gt;&amp;nbsp; &amp;nbsp; typename traits::col&amp;lt;Matrix&amp;gt;::type &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col(m);
&lt;br&gt;&amp;nbsp; &amp;nbsp; typename traits::const_value&amp;lt;Matrix&amp;gt;::type &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value(m); 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; // Type of m's elements
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef typename Collection&amp;lt;Matrix&amp;gt;::value_type value_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mtl::matrix::inserter&amp;lt;Matrix, update_store&amp;lt;value_type&amp;gt; &amp;gt; ins(m);	
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (c_type cursor(my_range.begin(m)), cend(my_range.end(m)); cursor != cend; ++cursor)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (ic_type icursor(begin&amp;lt;tag::nz&amp;gt;(cursor)), icend(end&amp;lt;tag::nz&amp;gt;(cursor)); icursor != icend; ++icursor){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int r=row(*icursor);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int c=col(*icursor);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double insval=6.789; // or something else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ins[r][c] &amp;lt;&amp;lt; insval;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks in advance,
&lt;br&gt;&lt;br&gt;Burkhard
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/traversal-and-update-of-sparse-matrix-tp25948202p25948202.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25927014</id>
	<title>Re: MTL: compressed2D insertion</title>
	<published>2009-10-16T08:09:54Z</published>
	<updated>2009-10-16T08:09:54Z</updated>
	<author>
		<name>Rechnan</name>
	</author>
	<content type="html">Hi Elmar,
&lt;br&gt;&lt;br&gt;thanks for your help!
&lt;br&gt;&lt;br&gt;Since I am a C++ novice, this will take its time... but I am working on it! Since the adjacency matrix is of a graph that consits of cliques only, the building of the blocks will come in a natural way.
&lt;br&gt;&lt;br&gt;Best,
&lt;br&gt;Burkhard
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Hess, Elmar wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Burkhard
&lt;br&gt;&lt;br&gt;I think you should use block-wise insertion (see &lt;a href=&quot;http://www.osl.iu.edu/research/mtl/mtl4/doc/matrix_insertion.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/research/mtl/mtl4/doc/matrix_insertion.html&lt;/a&gt;&amp;nbsp;). This is much faster.
&lt;br&gt;Nevertheless since you are reading your matrix data from a file you will need to think about how to block it first.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Elmar
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: mtl-devel-bounces@osl.iu.edu [mailto:mtl-devel-bounces@osl.iu.edu] On Behalf Of Burkhard Möller
&lt;br&gt;Sent: 16 October 2009 11:52
&lt;br&gt;To: mtl-devel@osl.iu.edu
&lt;br&gt;Subject: MTL: compressed2D insertion
&lt;br&gt;&lt;br&gt;Hi there,
&lt;br&gt;&lt;br&gt;I have an adjacency matrix of about 30000x30000 with ~200000 nonzero 
&lt;br&gt;entries and I would like to use it with MTL. The matrix is in a file in 
&lt;br&gt;matrix market format and I have slightly modified the first Matrix 
&lt;br&gt;Insertion example to read it. The insertion of the first 100 elements 
&lt;br&gt;already takes over 15 sec time, what am I doing wrong? I am using Visual 
&lt;br&gt;Studio 2008 Express.
&lt;br&gt;&lt;br&gt;The source code is as follows:
&lt;br&gt;&lt;br&gt;// File: insert.cpp
&lt;br&gt;&lt;br&gt;#include &amp;lt;iostream&amp;gt;
&lt;br&gt;#include &amp;lt;boost/numeric/mtl/mtl.hpp&amp;gt;
&lt;br&gt;&lt;br&gt;using namespace mtl;
&lt;br&gt;&lt;br&gt;template &amp;lt;typename Matrix&amp;gt;
&lt;br&gt;void insval(Matrix&amp; m, int index1, int index2, double val)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Matrices are not initialized by default
&lt;br&gt;&amp;nbsp; &amp;nbsp; m= 0.0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; // Create inserter for matrix m
&lt;br&gt;&amp;nbsp; &amp;nbsp; matrix::inserter&amp;lt;Matrix&amp;gt; ins(m);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Insert value
&lt;br&gt;&amp;nbsp; &amp;nbsp; ins[index1][index2] &amp;lt;&amp;lt; val;
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;int main(int argc, char* argv[])
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; compressed2D&amp;lt;double&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A(30000, 30000);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; FILE* matrixfile;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; matrixfile=fopen(&amp;quot;A_cpp.txt&amp;quot;,&amp;quot;r&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; int count=0, index1=0, index2=0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; double value=0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; clock_t start, finish;
&lt;br&gt;&amp;nbsp; &amp;nbsp; double duration;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; start = clock();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; while(fscanf(matrixfile, &amp;quot;%d %d %Lg&amp;quot;, &amp;index1, &amp;index2, &amp;value)!=EOF 
&lt;br&gt;&amp;&amp; count&amp;lt;100){// insert first 100 values only
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; count++;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; insval(A, index1-40360, index2-40360, value); // smallest index 
&lt;br&gt;is 40360...
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; finish = clock();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; duration = (double)(finish - start) / CLOCKS_PER_SEC;
&lt;br&gt;&amp;nbsp; &amp;nbsp; printf( &amp;quot;%2.1f seconds\n&amp;quot;, duration );
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks for your time!
&lt;br&gt;&lt;br&gt;Rechnan
&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Forward this message to spam@mailcontrol.com to report this email as spam.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Visit our website at &lt;a href=&quot;http://www.halcrow.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.halcrow.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------
&lt;br&gt;The contents of this email are confidential, for the sole use
&lt;br&gt;of the intended recipient at the email address to which it has
&lt;br&gt;been addressed and do not give rise to any binding legal
&lt;br&gt;obligation upon Halcrow companies unless subsequently confirmed
&lt;br&gt;on headed business notepaper sent by fax, letter or as an email
&lt;br&gt;attachment. &amp;nbsp;Whilst reasonable care has been taken to avoid virus
&lt;br&gt;transmission, no responsibility for viruses is taken and it is
&lt;br&gt;your responsibility to carry out such checks as you feel
&lt;br&gt;appropriate. &amp;nbsp;Emails supplied are as found and there's no
&lt;br&gt;guarantee that the messages contained within the body of the
&lt;br&gt;email have not been edited after receipt. If you receive this
&lt;br&gt;email in error, please contact the sender immediately and delete
&lt;br&gt;the message from your system.
&lt;br&gt;Thank you.
&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-compressed2D-insertion-tp25923455p25927014.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25923890</id>
	<title>Re: MTL: compressed2D insertion</title>
	<published>2009-10-16T04:27:48Z</published>
	<updated>2009-10-16T04:27:48Z</updated>
	<author>
		<name>Hess, Elmar</name>
	</author>
	<content type="html">Burkhard
&lt;br&gt;&lt;br&gt;I think you should use block-wise insertion (see &lt;a href=&quot;http://www.osl.iu.edu/research/mtl/mtl4/doc/matrix_insertion.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/research/mtl/mtl4/doc/matrix_insertion.html&lt;/a&gt;&amp;nbsp;). This is much faster.
&lt;br&gt;Nevertheless since you are reading your matrix data from a file you will need to think about how to block it first.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Elmar
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25923890&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl-devel-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25923890&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl-devel-bounces@...&lt;/a&gt;] On Behalf Of Burkhard Möller
&lt;br&gt;Sent: 16 October 2009 11:52
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25923890&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl-devel@...&lt;/a&gt;
&lt;br&gt;Subject: MTL: compressed2D insertion
&lt;br&gt;&lt;br&gt;Hi there,
&lt;br&gt;&lt;br&gt;I have an adjacency matrix of about 30000x30000 with ~200000 nonzero 
&lt;br&gt;entries and I would like to use it with MTL. The matrix is in a file in 
&lt;br&gt;matrix market format and I have slightly modified the first Matrix 
&lt;br&gt;Insertion example to read it. The insertion of the first 100 elements 
&lt;br&gt;already takes over 15 sec time, what am I doing wrong? I am using Visual 
&lt;br&gt;Studio 2008 Express.
&lt;br&gt;&lt;br&gt;The source code is as follows:
&lt;br&gt;&lt;br&gt;// File: insert.cpp
&lt;br&gt;&lt;br&gt;#include &amp;lt;iostream&amp;gt;
&lt;br&gt;#include &amp;lt;boost/numeric/mtl/mtl.hpp&amp;gt;
&lt;br&gt;&lt;br&gt;using namespace mtl;
&lt;br&gt;&lt;br&gt;template &amp;lt;typename Matrix&amp;gt;
&lt;br&gt;void insval(Matrix&amp; m, int index1, int index2, double val)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Matrices are not initialized by default
&lt;br&gt;&amp;nbsp; &amp;nbsp; m= 0.0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; // Create inserter for matrix m
&lt;br&gt;&amp;nbsp; &amp;nbsp; matrix::inserter&amp;lt;Matrix&amp;gt; ins(m);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Insert value
&lt;br&gt;&amp;nbsp; &amp;nbsp; ins[index1][index2] &amp;lt;&amp;lt; val;
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;int main(int argc, char* argv[])
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; compressed2D&amp;lt;double&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A(30000, 30000);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; FILE* matrixfile;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; matrixfile=fopen(&amp;quot;A_cpp.txt&amp;quot;,&amp;quot;r&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; int count=0, index1=0, index2=0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; double value=0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; clock_t start, finish;
&lt;br&gt;&amp;nbsp; &amp;nbsp; double duration;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; start = clock();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; while(fscanf(matrixfile, &amp;quot;%d %d %Lg&amp;quot;, &amp;index1, &amp;index2, &amp;value)!=EOF 
&lt;br&gt;&amp;&amp; count&amp;lt;100){// insert first 100 values only
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; count++;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; insval(A, index1-40360, index2-40360, value); // smallest index 
&lt;br&gt;is 40360...
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; finish = clock();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; duration = (double)(finish - start) / CLOCKS_PER_SEC;
&lt;br&gt;&amp;nbsp; &amp;nbsp; printf( &amp;quot;%2.1f seconds\n&amp;quot;, duration );
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks for your time!
&lt;br&gt;&lt;br&gt;Rechnan
&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Forward this message to &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25923890&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;spam@...&lt;/a&gt; to report this email as spam.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Visit our website at &lt;a href=&quot;http://www.halcrow.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.halcrow.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------
&lt;br&gt;The contents of this email are confidential, for the sole use
&lt;br&gt;of the intended recipient at the email address to which it has
&lt;br&gt;been addressed and do not give rise to any binding legal
&lt;br&gt;obligation upon Halcrow companies unless subsequently confirmed
&lt;br&gt;on headed business notepaper sent by fax, letter or as an email
&lt;br&gt;attachment. &amp;nbsp;Whilst reasonable care has been taken to avoid virus
&lt;br&gt;transmission, no responsibility for viruses is taken and it is
&lt;br&gt;your responsibility to carry out such checks as you feel
&lt;br&gt;appropriate. &amp;nbsp;Emails supplied are as found and there's no
&lt;br&gt;guarantee that the messages contained within the body of the
&lt;br&gt;email have not been edited after receipt. If you receive this
&lt;br&gt;email in error, please contact the sender immediately and delete
&lt;br&gt;the message from your system.
&lt;br&gt;Thank you.
&lt;br&gt;-------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-compressed2D-insertion-tp25923455p25923890.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25923455</id>
	<title>MTL: compressed2D insertion</title>
	<published>2009-10-16T03:52:10Z</published>
	<updated>2009-10-16T03:52:10Z</updated>
	<author>
		<name>Rechnan</name>
	</author>
	<content type="html">Hi there,
&lt;br&gt;&lt;br&gt;I have an adjacency matrix of about 30000x30000 with ~200000 nonzero 
&lt;br&gt;entries and I would like to use it with MTL. The matrix is in a file in 
&lt;br&gt;matrix market format and I have slightly modified the first Matrix 
&lt;br&gt;Insertion example to read it. The insertion of the first 100 elements 
&lt;br&gt;already takes over 15 sec time, what am I doing wrong? I am using Visual 
&lt;br&gt;Studio 2008 Express.
&lt;br&gt;&lt;br&gt;The source code is as follows:
&lt;br&gt;&lt;br&gt;// File: insert.cpp
&lt;br&gt;&lt;br&gt;#include &amp;lt;iostream&amp;gt;
&lt;br&gt;#include &amp;lt;boost/numeric/mtl/mtl.hpp&amp;gt;
&lt;br&gt;&lt;br&gt;using namespace mtl;
&lt;br&gt;&lt;br&gt;template &amp;lt;typename Matrix&amp;gt;
&lt;br&gt;void insval(Matrix&amp; m, int index1, int index2, double val)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Matrices are not initialized by default
&lt;br&gt;&amp;nbsp; &amp;nbsp; m= 0.0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; // Create inserter for matrix m
&lt;br&gt;&amp;nbsp; &amp;nbsp; matrix::inserter&amp;lt;Matrix&amp;gt; ins(m);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Insert value
&lt;br&gt;&amp;nbsp; &amp;nbsp; ins[index1][index2] &amp;lt;&amp;lt; val;
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;int main(int argc, char* argv[])
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; compressed2D&amp;lt;double&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A(30000, 30000);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; FILE* matrixfile;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; matrixfile=fopen(&amp;quot;A_cpp.txt&amp;quot;,&amp;quot;r&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; int count=0, index1=0, index2=0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; double value=0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; clock_t start, finish;
&lt;br&gt;&amp;nbsp; &amp;nbsp; double duration;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; start = clock();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; while(fscanf(matrixfile, &amp;quot;%d %d %Lg&amp;quot;, &amp;index1, &amp;index2, &amp;value)!=EOF 
&lt;br&gt;&amp;&amp; count&amp;lt;100){// insert first 100 values only
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; count++;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; insval(A, index1-40360, index2-40360, value); // smallest index 
&lt;br&gt;is 40360...
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; finish = clock();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; duration = (double)(finish - start) / CLOCKS_PER_SEC;
&lt;br&gt;&amp;nbsp; &amp;nbsp; printf( &amp;quot;%2.1f seconds\n&amp;quot;, duration );
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks for your time!
&lt;br&gt;&lt;br&gt;Rechnan
&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-compressed2D-insertion-tp25923455p25923455.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25923416</id>
	<title>compressed2D insertion</title>
	<published>2009-10-16T03:48:30Z</published>
	<updated>2009-10-16T03:48:30Z</updated>
	<author>
		<name>Rechnan</name>
	</author>
	<content type="html">Hi there,
&lt;br&gt;&lt;br&gt;I have an adjacency matrix of about 30000x30000 with ~200000 nonzero entries and I would like to use it with MTL. The matrix is in a file in matrix market format and I have slightly modified the first Matrix Insertion example to read it. The insertion of the first 100 elements already takes over 15 sec time, what am I doing wrong? I am using Visual Studio 2008 Express.
&lt;br&gt;&lt;br&gt;The source code is as follows:
&lt;br&gt;&lt;br&gt;// File: insert.cpp
&lt;br&gt;&lt;br&gt;#include &amp;lt;iostream&amp;gt;
&lt;br&gt;#include &amp;lt;boost/numeric/mtl/mtl.hpp&amp;gt;
&lt;br&gt;&lt;br&gt;using namespace mtl;
&lt;br&gt;&lt;br&gt;template &amp;lt;typename Matrix&amp;gt;
&lt;br&gt;void insval(Matrix&amp; m, int index1, int index2, double val)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Matrices are not initialized by default
&lt;br&gt;&amp;nbsp; &amp;nbsp; m= 0.0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; // Create inserter for matrix m
&lt;br&gt;&amp;nbsp; &amp;nbsp; matrix::inserter&amp;lt;Matrix&amp;gt; ins(m);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; // Insert value
&lt;br&gt;&amp;nbsp; &amp;nbsp; ins[index1][index2] &amp;lt;&amp;lt; val;
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;int main(int argc, char* argv[])
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; compressed2D&amp;lt;double&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A(30000, 30000);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FILE* matrixfile;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; matrixfile=fopen(&amp;quot;A_cpp.txt&amp;quot;,&amp;quot;r&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int count=0, index1=0, index2=0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double value=0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clock_t start, finish;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double duration;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; start = clock();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while(fscanf(matrixfile, &amp;quot;%d %d %Lg&amp;quot;, &amp;index1, &amp;index2, &amp;value)!=EOF &amp;&amp; count&amp;lt;100){// insert first 100 values only
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; count++;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; insval(A, index1-40360, index2-40360, value); // smallest index is 40360...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finish = clock();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; duration = (double)(finish - start) / CLOCKS_PER_SEC;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf( &amp;quot;%2.1f seconds\n&amp;quot;, duration );
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks for your time!
&lt;br&gt;&lt;br&gt;Rechnan</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/compressed2D-insertion-tp25923416p25923416.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21708136</id>
	<title>MTL: matrix library for relational joins</title>
	<published>2009-01-28T06:22:12Z</published>
	<updated>2009-01-28T06:22:12Z</updated>
	<author>
		<name>Eric Prud'hommeaux-4</name>
	</author>
	<content type="html">I'm looking for a lib to use to do relational joins (cross products
&lt;br&gt;with restrictions on a subset of the columns) and was wondering if MTL
&lt;br&gt;was appropriate.
&lt;br&gt;&lt;br&gt;While poking through the faq, I noticed a couple broken fragments:
&lt;br&gt;&amp;nbsp; &amp;lt;A NAME=&amp;quot;#howtoinvert&amp;quot;&amp;gt;&amp;lt;/A&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;lt;A NAME=&amp;quot;#howtosolve&amp;quot;&amp;gt;&amp;lt;/A&amp;gt;
&lt;br&gt;The table of contents should work again if you remove the '#'s from
&lt;br&gt;those anchors. You can use an html validator to find such problems:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://validator.w3.org/check?uri=http%3A%2F%2Fwww.osl.iu.edu%2Fresearch%2Fmtl%2Ffaq.php3&amp;charset=(detect+automatically)&amp;doctype=Inline&amp;group=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://validator.w3.org/check?uri=http%3A%2F%2Fwww.osl.iu.edu%2Fresearch%2Fmtl%2Ffaq.php3&amp;charset=(detect+automatically)&amp;doctype=Inline&amp;group=0&lt;/a&gt;&lt;br&gt;but you'll have a bunch to tackle. You can always run it through tidy,
&lt;br&gt;perhaps with -asxml if you'd like xhtml output.
&lt;br&gt;-- 
&lt;br&gt;-eric
&lt;br&gt;&lt;br&gt;office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA
&lt;br&gt;mobile: +1.617.599.3509
&lt;br&gt;&lt;br&gt;(&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=21708136&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;eric@...&lt;/a&gt;)
&lt;br&gt;Feel free to forward this message to any list for any purpose other than
&lt;br&gt;email address distribution.
&lt;br&gt;&lt;br&gt;There are subtle nuances encoded in font variation and clever layout
&lt;br&gt;which can only be seen by printing this message on high-clay paper.&lt;br /&gt; &lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;signature.asc&lt;/strong&gt; (492 bytes) &lt;a href=&quot;http://old.nabble.com/attachment/21708136/0/signature.asc&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-matrix-library-for-relational-joins-tp21708136p21708136.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21409216</id>
	<title>MTL: Examples work correctly with Anthony's defines under MS Visual Studio 2005 Express Edition</title>
	<published>2009-01-11T22:39:03Z</published>
	<updated>2009-01-11T22:39:03Z</updated>
	<author>
		<name>Сергей Авдеев</name>
	</author>
	<content type="html">Problem (which was described in my message &lt;em&gt;on 2008-11-03)&lt;/em&gt; can be really resolved by adding two preprocessor definitions:&lt;br&gt;&lt;br&gt;#define _HAS_ITERATOR_DEBUGGING 0&lt;br&gt;#define _SECURE_SCL 0&lt;br&gt;&lt;br&gt;before including of any STL, MTL or ITL files.&lt;br&gt;
After this examples array2D.cc, sparse_copy.cc, sparse_matrix.cc, sparse_mult.cc work correctly.&lt;br&gt;&lt;br&gt;Thanks a lot to Anthony Lock. Now I can continue my research work with MTL + ITL.&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Examples-work-correctly-with-Anthony%27s-defines-under-MS-Visual-Studio-2005-Express-Edition-tp21409216p21409216.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21392865</id>
	<title>MTL: 'debug assertion failed' -- work-around</title>
	<published>2009-01-10T13:10:01Z</published>
	<updated>2009-01-10T13:10:01Z</updated>
	<author>
		<name>Anthony Lock</name>
	</author>
	<content type="html">&lt;div&gt;One way to get around the &amp;#39;debug assertion failed&amp;#39; error I encountered when running ITL on MS Visual Studio 2008 is given below. &amp;nbsp;[See my posting of 2009-01-05 and that of Sergey Avdeev on 2008-11-03.]&lt;/div&gt;&lt;div&gt;
&lt;br&gt;&lt;/div&gt;&lt;div&gt;In order to get ITL to work, I have included the following preprocessor macros:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1.&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_HAS_ITERATOR_DEBUGGING=0&lt;/div&gt;&lt;div&gt;2.&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_SECURE_SCL=0&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;In the Properties page for the project, add these to: &amp;#39;C/C++ -&amp;gt; Preprocessor -&amp;gt; Preprocessor definitions&amp;#39;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This isn&amp;#39;t ideal, but it works.&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-%27debug-assertion-failed%27----work-around-tp21392865p21392865.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21298525</id>
	<title>MTL: QMR iterative method using Visual Studio 2008 Express Edition</title>
	<published>2009-01-05T12:15:28Z</published>
	<updated>2009-01-05T12:15:28Z</updated>
	<author>
		<name>Anthony Lock</name>
	</author>
	<content type="html">Hi&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I am having difficulty trying to run the QMR iterative method, in ITL, using Visual Studio 2008 Express Edition. &amp;nbsp;The method is the first example at:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.osl.iu.edu/research/itl/examples.php3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/research/itl/examples.php3&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;When I build my &amp;#39;solution&amp;#39;, it compiles without any problems, but when I try to run the code, I get a message saying &amp;quot;debug assertion failed&amp;quot;. &amp;nbsp;In the same pop-up message it says &amp;quot;Expression: vector iterator is not dereferencable&amp;quot;. &amp;nbsp;The error seems to come from:&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;C:\program files\microsoft visual studio 9.0\vc\include\vector&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;When I click &amp;#39;retry&amp;#39;, to debug, a break point is introduced in the call stack window at:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&amp;gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;ITL_Test.exe!std::_Vector_const_iterator&amp;lt;int,std::allocator&amp;lt;int&amp;gt; &amp;gt;::operator*() &amp;nbsp;Line 98 + 0x14 bytes&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;C++&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Any help would be appreciated,&lt;/div&gt;&lt;div&gt;Anthony.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-QMR-iterative-method-using-Visual-Studio-2008-Express-Edition-tp21298525p21298525.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21263870</id>
	<title>MTL: MTL and Visual Studio 2008 (Express Edition)</title>
	<published>2009-01-03T03:05:26Z</published>
	<updated>2009-01-03T03:05:26Z</updated>
	<author>
		<name>Anthony Lock</name>
	</author>
	<content type="html">&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; &quot;&gt;Hi&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I am currently trying to move some C++ code from Linux to Windows; the code uses MTL for all of the linear algebra. &amp;nbsp;As a first test, I have tried to use MS Visual Studio 2008 (express edition) to run the simple example given at:&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.osl.iu.edu/research/mtl/examples/euclid_norm.cc&quot; target=&quot;_blank&quot; style=&quot;color: rgb(66, 99, 171); &quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/research/mtl/examples/euclid_norm.cc&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;However, I end up with 54 error messages and 11 warnings, all of which seem to stem from the header file &amp;#39;light_matrix.h&amp;#39;. &amp;nbsp;Please find below the test, together with the error messages. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;Any help would be appreciated,&lt;/div&gt;&lt;div&gt;Anthony.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;****************************&lt;/div&gt;&lt;div&gt;test&lt;/div&gt;****************************&lt;div&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;// 02Jan09&lt;/div&gt;
&lt;div&gt;// Taken from:&amp;nbsp;&lt;a href=&quot;http://www.osl.iu.edu/research/mtl/examples/euclid_norm.cc&quot; target=&quot;_blank&quot; style=&quot;color: rgb(66, 99, 171); &quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/research/mtl/examples/euclid_norm.cc&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;// -*- c++ -*-&lt;/div&gt;&lt;div&gt;//&lt;/div&gt;&lt;div&gt;// $COPYRIGHT$&lt;/div&gt;&lt;div&gt;//&lt;/div&gt;&lt;div&gt;//===========================================================================&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;/*&lt;/div&gt;&lt;div&gt;#include &amp;quot;mtl/mtl.h&amp;quot;&lt;/div&gt;
&lt;div&gt;#include &amp;quot;mtl/utils.h&amp;quot;&lt;/div&gt;&lt;div&gt;#include &amp;quot;mtl/linalg_vec.h&amp;quot;&lt;/div&gt;&lt;div&gt;*/&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;#include &amp;lt;mtl/mtl.h&amp;gt;&lt;/div&gt;&lt;div&gt;#include &amp;lt;mtl/utils.h&amp;gt;&lt;/div&gt;&lt;div&gt;#include &amp;lt;mtl/linalg_vec.h&amp;gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;/*&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;Sample output;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;X: [1,5,3,1,]&lt;/div&gt;&lt;div&gt;The L-2 norm of X is 6 &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;*/&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;using namespace mtl;&lt;/div&gt;&lt;div&gt;using namespace std;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;typedef external_vec&amp;lt;double&amp;gt; Vec;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;int&lt;/div&gt;&lt;div&gt;main()&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;double data[] = {1,5,3,1};&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;Vec x(data, 4);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;double s = two_norm(x);&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;X: &amp;quot;;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;print_vector(x);&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;The L-2 norm of X is &amp;quot; &amp;lt;&amp;lt; s &amp;lt;&amp;lt; endl;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;/div&gt;
&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;****************************&lt;br&gt;&lt;/div&gt;&lt;div&gt;error messages&lt;/div&gt;****************************&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Compiling...&lt;/div&gt;&lt;div&gt;euclid_norm.cpp&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(128) : warning C4346: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::value_type&amp;#39; : dependent name is not a type&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with &amp;#39;typename&amp;#39; to indicate a type&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(177) : see reference to class template instantiation &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;&amp;#39; being compiled&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(106) : see reference to class template instantiation &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned&amp;#39; being compiled&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(414) : see reference to class template instantiation &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;&amp;#39; being compiled&lt;/div&gt;&lt;div&gt;
c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(128) : error C2144: syntax error : &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::value_type&amp;#39; should be preceded by &amp;#39;;&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(128) : error C2208: &amp;#39;T&amp;#39; : no members defined using this type&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : warning C4346: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer&amp;#39; : dependent name is not a type&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with &amp;#39;typename&amp;#39; to indicate a type&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2144: syntax error : &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer&amp;#39; should be preceded by &amp;#39;;&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2602: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer&amp;#39; is not a member of a base class of &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;&amp;#39;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(111) : see declaration of &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2868: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer&amp;#39; : illegal syntax for using-declaration; expected qualified-name&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : warning C4346: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::size_type&amp;#39; : dependent name is not a type&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with &amp;#39;typename&amp;#39; to indicate a type&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : error C2144: syntax error : &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::size_type&amp;#39; should be preceded by &amp;#39;;&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : error C2208: &amp;#39;SizeType&amp;#39; : no members defined using this type&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : warning C4346: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type&amp;#39; : dependent name is not a type&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with &amp;#39;typename&amp;#39; to indicate a type&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2144: syntax error : &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type&amp;#39; should be preceded by &amp;#39;;&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2602: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type&amp;#39; is not a member of a base class of &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;&amp;#39;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(113) : see declaration of &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2868: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type&amp;#39; : illegal syntax for using-declaration; expected qualified-name&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : warning C4346: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::const_reference&amp;#39; : dependent name is not a type&lt;/div&gt;&lt;div&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with &amp;#39;typename&amp;#39; to indicate a type&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2923: &amp;#39;mtl::IF&amp;#39; : &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::const_reference&amp;#39; is not a valid template type argument for parameter &amp;#39;A&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : warning C4346: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference&amp;#39; : dependent name is not a type&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with &amp;#39;typename&amp;#39; to indicate a type&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2923: &amp;#39;mtl::IF&amp;#39; : &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference&amp;#39; is not a valid template type argument for parameter &amp;#39;B&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2146: syntax error : missing &amp;#39;;&amp;#39; before identifier &amp;#39;reference&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2602: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference&amp;#39; is not a member of a base class of &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;&amp;#39;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(108) : see declaration of &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2868: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference&amp;#39; : illegal syntax for using-declaration; expected qualified-name&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(137) : error C2061: syntax error : identifier &amp;#39;size_type&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(154) : error C2061: syntax error : identifier &amp;#39;size_type&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(154) : error C2805: binary &amp;#39;operator +=&amp;#39; has too few parameters&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(154) : error C2333: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::operator +=&amp;#39; : error in function declaration; skipping function body&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(159) : error C2061: syntax error : identifier &amp;#39;size_type&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(159) : error C2805: binary &amp;#39;operator -=&amp;#39; has too few parameters&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(159) : error C2333: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::operator -=&amp;#39; : error in function declaration; skipping function body&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C2146: syntax error : missing &amp;#39;;&amp;#39; before identifier &amp;#39;index&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C2433: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type&amp;#39; : &amp;#39;inline&amp;#39; not permitted on data declarations&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : warning C4183: &amp;#39;index&amp;#39;: missing return type; assumed to be a member function returning &amp;#39;int&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C2143: syntax error : missing &amp;#39;;&amp;#39; before &amp;#39;&amp;amp;&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C2433: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type&amp;#39; : &amp;#39;inline&amp;#39; not permitted on data declarations&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : warning C4183: &amp;#39;pos&amp;#39;: missing return type; assumed to be a member function returning &amp;#39;int&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C2143: syntax error : missing &amp;#39;;&amp;#39; before &amp;#39;&amp;amp;&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C2433: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type&amp;#39; : &amp;#39;inline&amp;#39; not permitted on data declarations&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C2086: &amp;#39;oned::oned::size_type size_type&amp;#39; : redefinition&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : see declaration of &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::operator size_type&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : warning C4183: &amp;#39;pos&amp;#39;: missing return type; assumed to be a member function returning &amp;#39;int&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C2146: syntax error : missing &amp;#39;;&amp;#39; before identifier &amp;#39;row&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C2433: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type&amp;#39; : &amp;#39;inline&amp;#39; not permitted on data declarations&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : warning C4183: &amp;#39;row&amp;#39;: missing return type; assumed to be a member function returning &amp;#39;int&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C2146: syntax error : missing &amp;#39;;&amp;#39; before identifier &amp;#39;column&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C2433: &amp;#39;mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type&amp;#39; : &amp;#39;inline&amp;#39; not permitted on data declarations&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : warning C4183: &amp;#39;column&amp;#39;: missing return type; assumed to be a member function returning &amp;#39;int&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C2146: syntax error : missing &amp;#39;;&amp;#39; before identifier &amp;#39;i&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(175) : error C2146: syntax error : missing &amp;#39;;&amp;#39; before identifier &amp;#39;offset&amp;#39;&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(175) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(175) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(176) : error C2146: syntax error : missing &amp;#39;;&amp;#39; before identifier &amp;#39;stride&amp;#39;&lt;/div&gt;&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(176) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;
&lt;div&gt;c:\program files\matrix template library\mtl-2.1.2-21\mtl\light_matrix.h(176) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int&lt;/div&gt;&lt;div&gt;Build log was saved at &amp;quot;file://c:\Documents and Settings\Anthony\My Documents\Visual Studio 2008\Projects\MTL_Test\MTL_Test\Debug\BuildLog.htm&amp;quot;&lt;/div&gt;
&lt;div&gt;MTL_Test - 54 error(s), 11 warning(s)&lt;/div&gt;&lt;div&gt;========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-MTL-and-Visual-Studio-2008-%28Express-Edition%29-tp21263870p21263870.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20513929</id>
	<title>MTL: missing files</title>
	<published>2008-11-15T02:05:52Z</published>
	<updated>2008-11-15T02:05:52Z</updated>
	<author>
		<name>Dr Paolo Remagnino</name>
	</author>
	<content type="html">&lt;html xmlns:v=&quot;urn:schemas-microsoft-com:vml&quot; xmlns:o=&quot;urn:schemas-microsoft-com:office:office&quot; xmlns:w=&quot;urn:schemas-microsoft-com:office:word&quot; xmlns:x=&quot;urn:schemas-microsoft-com:office:excel&quot; xmlns:p=&quot;urn:schemas-microsoft-com:office:powerpoint&quot; xmlns:a=&quot;urn:schemas-microsoft-com:office:access&quot; xmlns:dt=&quot;uuid:C2F41010-65B3-11d1-A29F-00AA00C14882&quot; xmlns:s=&quot;uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882&quot; xmlns:rs=&quot;urn:schemas-microsoft-com:rowset&quot; xmlns:Z=&quot;urn:schemas-microsoft-com:&quot; xmlns:b=&quot;urn:schemas-microsoft-com:office:publisher&quot; xmlns:ss=&quot;urn:schemas-microsoft-com:office:spreadsheet&quot; xmlns:c=&quot;urn:schemas-microsoft-com:office:component:spreadsheet&quot; xmlns:odc=&quot;urn:schemas-microsoft-com:office:odc&quot; xmlns:oa=&quot;urn:schemas-microsoft-com:office:activation&quot; xmlns:html=&quot;http://www.w3.org/TR/REC-html40&quot; xmlns:q=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:D=&quot;DAV:&quot; xmlns:x2=&quot;http://schemas.microsoft.com/office/excel/2003/xml&quot; xmlns:ois=&quot;http://schemas.microsoft.com/sharepoint/soap/ois/&quot; xmlns:dir=&quot;http://schemas.microsoft.com/sharepoint/soap/directory/&quot; xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot; xmlns:dsp=&quot;http://schemas.microsoft.com/sharepoint/dsp&quot; xmlns:udc=&quot;http://schemas.microsoft.com/data/udc&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:sub=&quot;http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/&quot; xmlns:ec=&quot;http://www.w3.org/2001/04/xmlenc#&quot; xmlns:sp=&quot;http://schemas.microsoft.com/sharepoint/&quot; xmlns:sps=&quot;http://schemas.microsoft.com/sharepoint/soap/&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:udcxf=&quot;http://schemas.microsoft.com/data/udc/xmlfile&quot; xmlns:wf=&quot;http://schemas.microsoft.com/sharepoint/soap/workflow/&quot; xmlns:mver=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot; xmlns:m=&quot;http://schemas.microsoft.com/office/2004/12/omml&quot; xmlns:mrels=&quot;http://schemas.openxmlformats.org/package/2006/relationships&quot; xmlns:ex12t=&quot;http://schemas.microsoft.com/exchange/services/2006/types&quot; xmlns:ex12m=&quot;http://schemas.microsoft.com/exchange/services/2006/messages&quot; xmlns:st=&quot;&amp;#1;&quot; xmlns=&quot;http://www.w3.org/TR/REC-html40&quot;&gt;

&lt;head&gt;
&lt;META HTTP-EQUIV=&quot;Content-Type&quot; CONTENT=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;meta name=Generator content=&quot;Microsoft Word 12 (filtered medium)&quot;&gt;

&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapedefaults v:ext=&quot;edit&quot; spidmax=&quot;1026&quot; /&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapelayout v:ext=&quot;edit&quot;&gt;
  &lt;o:idmap v:ext=&quot;edit&quot; data=&quot;1&quot; /&gt;
 &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;
&lt;/head&gt;

&lt;body lang=EN-GB link=blue vlink=purple&gt;

&lt;div class=Section1&gt;

&lt;p class=MsoNormal&gt;Good Morning &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp; I have just installed your library and noticed that &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;;color:blue'&gt;#include&lt;/span&gt;&lt;span style='font-size:
10.0pt;font-family:&quot;Courier New&quot;'&gt; &lt;span style='color:#A31515'&gt;&amp;lt;boost/static_assert.hpp&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;;color:blue'&gt;#include&lt;/span&gt;&lt;span style='font-size:
10.0pt;font-family:&quot;Courier New&quot;'&gt; &lt;span style='color:#A31515'&gt;&amp;lt;boost/type_traits.hpp&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;;
color:blue'&gt;#include&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;
&lt;span style='color:#A31515'&gt;&amp;lt;boost/utility/enable_if.hpp&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;;
color:#A31515'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;Are
missing from the distribution!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;I am
on a DELL machine running Windows XP&lt;span style='color:#A31515'&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;;
color:#A31515'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Courier New&quot;'&gt;Regards&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;-----------------------------------------------------------------------&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span lang=EN-US style='font-size:10.0pt;font-family:
&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;Dr Paolo Remagnino&lt;/span&gt;&lt;/b&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;Faculty
of Computing, Information Systems and Mathematics&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;Kingston
University&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;voice:
+44 (0)20 8547 7930&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;facsimile:
+44 (0)20 8547 7824&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;e-mail:
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20513929&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;p.remagnino@...&lt;/a&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;URL:
DrPaoloRemagnino.googlepages.com/home&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;URL:
www.kingston.ac.uk/dirc &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-missing-files-tp20513929p20513929.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20298554</id>
	<title>MTL: Problem: Debug assertion failed with sparse types under Microsoft Visual Studio 2005</title>
	<published>2008-11-03T00:00:21Z</published>
	<updated>2008-11-03T00:00:21Z</updated>
	<author>
		<name>Сергей Авдеев</name>
	</author>
	<content type="html">&amp;nbsp;&amp;nbsp; I try to execute an example (sparse_matrix.cc) from mtl-2.1.2-22 and get &amp;quot;debug assertion failed&amp;quot; (attached). The error occur in line 85 of the example in expression B(0,2) = 2; . Then I try to execute others example. So, there is a list of break down examples: array2D.cc , sparse_copy.cc, sparse_matrix.cc, sparse_mult.cc . All this examples contain routine with sparse storage types. Error occur deep in library (5 levels of nesting), where MTL works with STL (usually call std::vector methods). And error usually occur in STL code.&lt;br&gt;
&amp;nbsp;&amp;nbsp; I don&amp;#39;t know how debug this, because I must not change STL code and I really don&amp;#39;t know how to change MTL. Only one idea in this direction: remove working vector class with another one (may be another std::vector&amp;lt;&amp;gt; implementation or boost::vector implementation). But I have not started realize yet.&lt;br&gt;
&amp;nbsp;&amp;nbsp; If you are familiar with this problem or suppose anything about reasons, please, tell me.&lt;br&gt; 
&lt;br /&gt; &lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;MTL_sparse_error.jpg&lt;/strong&gt; (38K) &lt;a href=&quot;http://old.nabble.com/attachment/20298554/0/MTL_sparse_error.jpg&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Problem%3A-Debug-assertion-failed-with-sparse-types-under-Microsoft-Visual-Studio-2005-tp20298554p20298554.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20298145</id>
	<title>MTL: How to compile MTL under Microsoft Visual Studio 2005</title>
	<published>2008-11-02T23:14:30Z</published>
	<updated>2008-11-02T23:14:30Z</updated>
	<author>
		<name>Сергей Авдеев</name>
	</author>
	<content type="html">&amp;nbsp;&amp;nbsp; My previous post in the mailing list dated 2008-09-20 was about how to compile MTL for Visual C++ 7(MS VS 2003) (&lt;a href=&quot;http://www.osl.iu.edu/download/research/mtl//mtl-2.1.2-21.zip&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl-2.1.2-21.zip&lt;/a&gt;) under Visual C++ 8 (MS VS 2005). But I did not realize that it can be made easier. For easier compilation you must download MTL for Unix (&lt;a href=&quot;http://www.osl.iu.edu/download/research/mtl//mtl-2.1.2-22.tar.gz&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl-2.1.2-22.tar.gz&lt;/a&gt;), then patch it for MS VS 2005 (&lt;a href=&quot;http://www.osl.iu.edu/download/research/mtl//mtl-2.1.2-22ForVS2005.zip&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl-2.1.2-22ForVS2005.zip&lt;/a&gt;). Why I didn&amp;#39;t do like this firstly? First time when I try to compile MTL under MS VS 2005 it wasn&amp;#39;t obvious for me that I should patch version for Unix. And I downloaded version for VS 2003 and tryed patch this version. That&amp;#39;s why my first way of solving this problem was much more complicated.&lt;br&gt;
&amp;nbsp;&amp;nbsp; So, I tell about two ways to compile MTL under MS VS 2005. If you find difficulties in compiling how I was, probably you should make use the easiest compile method.&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-How-to-compile-MTL-under-Microsoft-Visual-Studio-2005-tp20298145p20298145.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19583368</id>
	<title>MTL: Hello dear MTL-developers</title>
	<published>2008-09-20T00:56:52Z</published>
	<updated>2008-09-20T00:56:52Z</updated>
	<author>
		<name>Сергей Авдеев</name>
	</author>
	<content type="html">&lt;div dir=&quot;ltr&quot;&gt;&lt;div class=&quot;gmail_quote&quot;&gt;Good day.&lt;br&gt;&lt;div dir=&quot;ltr&quot;&gt;&lt;br&gt;My name Sergey Avdeev. And I&amp;#39;m a student of Novosibirsk State University (Russia). In my research work I need to manage with big matrices and vectors and I wanted it faster, then my own BLAS did this. That is why I decided to download and use your library. According to the site (&lt;a href=&quot;http://www.osl.iu.edu/research/mtl/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/research/mtl/&lt;/a&gt;) MTL have many matrix/vector types and basic operators implementation. Only one problem I had, this is Microsoft Visual Studio 2005 Express Edition (I develop my project with it). I downloaded and installed &lt;a href=&quot;http://www.osl.iu.edu/download/research/mtl//mtl-2.1.2-21.zip&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;mtl-2.1.2-21&lt;/a&gt; (For Visual C++ 7 .NET, I know that I have VC8). So, when I try to compile the simplest code like:&lt;br&gt;

&lt;br&gt;#include &amp;quot;mtl/mtl.h&amp;quot;&lt;br&gt;void main()&lt;br&gt;{}&lt;br&gt;&lt;br&gt;I have got a long list of compile errors in MTL&amp;#39;s files (Error list 1.txt file in the attachment).&lt;br&gt;The first and probably the most important error was &lt;br&gt;

&amp;nbsp;&amp;nbsp; mtl-2.1.2-21\mtl\light1d.h(87) : error C2039: &amp;#39;_Ptrit&amp;#39; : is not a member of &amp;#39;std&amp;#39;&lt;br&gt;&lt;br&gt;Then I download &lt;a href=&quot;http://www.osl.iu.edu/download/research/mtl//mtl-2.1.2-22ForVS2005.zip&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;mtl-2.1.2-22ForVS2005.zip&lt;/a&gt; and patch the library with this files.&lt;br&gt;

Try the same code again. And I got another long list of errors (Error list 2.txt)&lt;br&gt;&lt;br&gt;I was very upset, because I did not know what to do with this error. Did not find the answer, I try to search it in the Internet. And I found something:&lt;br&gt;

&lt;a href=&quot;http://osdir.com/ml/lib.mtl.devel/2004-06/msg00004.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://osdir.com/ml/lib.mtl.devel/2004-06/msg00004.html&lt;/a&gt; on this web-page one user asked, and one another answered him by posting some files, which was corrected by him to compile under .NET 2003.&lt;br&gt;

List of files: mtl.h , dense2D.h , linalg_vec.h , dense_iterator.h , light_matrix.h , ligth1D.h .&lt;br&gt;I patched the library by this files and try to compile again.&lt;br&gt;That time I got much shorter error list than all previous (Error list 3.txt). I was inspired and try to eliminate errors (by my self). After light_matrix.h was a little bit changed (ligth_matrix.h in the attachment, new lines have now comment // Changed by SergeyAvd ...), then the simplest code was compiled successfully(!!!).&lt;br&gt;

Next I try to compile ITL(4.0.0-1) examples with MTL. Got some errors. Change one file (gmres.h) from ITL. Only then I was able to use libraries.&lt;br&gt;&lt;br&gt;I write this letter for probably improve MTL and ITL for MS VS 2005 . If my information are urgent, post it on your site to help new MS VS 2005/2008 users to start with MTL, ITL..&lt;br&gt;

&lt;br&gt;In the end of my letter I want to note that your library is not on top of perfection in field of documentation (manual) and have mistakes in pseudo-code (concept files). So, I can help project to improve this things.&lt;br&gt;

&lt;br&gt;If you are interested in my proposal answer me.&lt;br&gt;&lt;br&gt;Good bye.&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;PRE&gt;
*****************************************************************************
**                                                                         **
** WARNING:  This email contains an attachment of a very suspicious type.  **
** You are urged NOT to open this attachment unless you are absolutely     **
** sure it is legitimate.  Opening this attachment may cause irreparable   **
** damage to your computer and your files.  If you have any questions      **
** about the validity of this message, PLEASE SEEK HELP BEFORE OPENING IT. **
**                                                                         **
** This warning was added by the IU Computer Science Dept. mail scanner.   **
*****************************************************************************

&lt;/PRE&gt;
&lt;br /&gt;1&amp;gt;------ Build started: Project: TryITL2, Configuration: Debug Win32 ------
&lt;br&gt;1&amp;gt;Compiling...
&lt;br&gt;1&amp;gt;Main.cpp
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(87) : error C2039: '_Ptrit' : is not a member of 'std'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(200) : see reference to class template instantiation 'mtl::light1D&amp;lt;T,NN,IND_OFFSET&amp;gt;' being compiled
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(87) : error C2143: syntax error : missing ';' before '&amp;lt;'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(87) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(87) : error C2238: unexpected token(s) preceding ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(88) : error C2039: '_Ptrit' : is not a member of 'std'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(88) : error C2059: syntax error : '&amp;lt;'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(88) : error C2238: unexpected token(s) preceding ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(90) : error C2065: 'ptr_iterator' : undeclared identifier
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(92) : error C2065: 'ptr_const_iterator' : undeclared identifier
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(102) : error C3203: 'dense_iterator' : unspecialized class template can't be used as a template argument for template parameter 'Iter', expected a real type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light1d.h(104) : error C3203: 'dense_iterator' : unspecialized class template can't be used as a template argument for template parameter 'Iter', expected a real type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(415) : error C2039: '_Ptrit' : is not a member of 'std'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(570) : see reference to class template instantiation 'mtl::external_vec&amp;lt;T,NN,SizeType&amp;gt;' being compiled
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(415) : error C2143: syntax error : missing ';' before '&amp;lt;'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(415) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(415) : error C2238: unexpected token(s) preceding ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(416) : error C2039: '_Ptrit' : is not a member of 'std'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(416) : error C2059: syntax error : '&amp;lt;'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(416) : error C2238: unexpected token(s) preceding ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(428) : error C3203: 'dense_iterator' : unspecialized class template can't be used as a template argument for template parameter 'Iter', expected a real type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\linalg_vec.h(430) : error C3203: 'dense_iterator' : unspecialized class template can't be used as a template argument for template parameter 'Iter', expected a real type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(128) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::value_type' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(177) : see reference to class template instantiation 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;' being compiled
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(106) : see reference to class template instantiation 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned' being compiled
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(414) : see reference to class template instantiation 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;' being compiled
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(128) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::value_type' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(128) : error C2208: 'T' : no members defined using this type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2602: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' is not a member of a base class of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(111) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2868: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' : illegal syntax for using-declaration; expected qualified-name
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::size_type' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::size_type' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : error C2208: 'SizeType' : no members defined using this type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2602: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' is not a member of a base class of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(113) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2868: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' : illegal syntax for using-declaration; expected qualified-name
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::const_reference' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2923: 'mtl::IF' : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::const_reference' is not a valid template type argument for parameter 'A'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2923: 'mtl::IF' : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' is not a valid template type argument for parameter 'B'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(137) : error C2061: syntax error : identifier 'size_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(154) : error C2061: syntax error : identifier 'size_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(154) : error C2805: binary 'operator +=' has too few parameters
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(154) : error C2333: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::operator +=' : error in function declaration; skipping function body
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(159) : error C2061: syntax error : identifier 'size_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(159) : error C2805: binary 'operator -=' has too few parameters
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(159) : error C2333: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::operator -=' : error in function declaration; skipping function body
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C2146: syntax error : missing ';' before identifier 'index'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : warning C4183: 'index': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C2143: syntax error : missing ';' before '&amp;'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : warning C4183: 'pos': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C2143: syntax error : missing ';' before '&amp;'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C2086: 'oned::size_type size_type' : redefinition
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::operator size_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : warning C4183: 'pos': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C2146: syntax error : missing ';' before identifier 'row'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : warning C4183: 'row': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C2146: syntax error : missing ';' before identifier 'column'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : warning C4183: 'column': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C2146: syntax error : missing ';' before identifier 'i'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(175) : error C2146: syntax error : missing ';' before identifier 'offset'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(175) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(175) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(176) : error C2146: syntax error : missing ';' before identifier 'stride'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(176) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(176) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\dense2d.h(200) : error C2065: 'x' : undeclared identifier
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\dense2d.h(201) : error C2433: 'mtl::rect_offset&amp;lt;size_t,MM,NN&amp;gt;::{ctor}' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\dense2d.h(201) : warning C4346: 'mtl::rect_offset&amp;lt;size_t,MM,NN&amp;gt;::transpose_type' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\dense2d.h(201) : error C2350: 'mtl::rect_offset&amp;lt;size_t,MM,NN&amp;gt;::{ctor}' is not a static member
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\utils.h(477) : warning C4244: 'return' : conversion from 'double' to 'float', possible loss of data
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\mtl.h(1046) : error C2906: 'mtl::givens_rotation&amp;lt;std::complex&amp;lt;double&amp;gt;&amp;gt;' : explicit specialization requires 'template &amp;lt;&amp;gt;'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\mtl.h(1155) : error C2906: 'mtl::givens_rotation&amp;lt;std::complex&amp;lt;float&amp;gt;&amp;gt;' : explicit specialization requires 'template &amp;lt;&amp;gt;'
&lt;br&gt;1&amp;gt;Build log was saved at &amp;quot;file://f:\Sergey\Work\Current projects\Try BLAS\TryITL2\TryITL2\Debug\BuildLog.htm&amp;quot;
&lt;br&gt;1&amp;gt;TryITL2 - 75 error(s), 13 warning(s)
&lt;br&gt;========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
&lt;br&gt;&lt;br /&gt;1&amp;gt;------ Build started: Project: TryITL2, Configuration: Debug Win32 ------
&lt;br&gt;1&amp;gt;Compiling...
&lt;br&gt;1&amp;gt;Main.cpp
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(128) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::value_type' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(177) : see reference to class template instantiation 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;' being compiled
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(106) : see reference to class template instantiation 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned' being compiled
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(414) : see reference to class template instantiation 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;' being compiled
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(128) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::value_type' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(128) : error C2208: 'T' : no members defined using this type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2602: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' is not a member of a base class of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(111) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2868: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' : illegal syntax for using-declaration; expected qualified-name
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::size_type' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::size_type' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : error C2208: 'SizeType' : no members defined using this type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2602: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' is not a member of a base class of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(113) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2868: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' : illegal syntax for using-declaration; expected qualified-name
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::const_reference' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2923: 'mtl::IF' : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::const_reference' is not a valid template type argument for parameter 'A'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2923: 'mtl::IF' : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' is not a valid template type argument for parameter 'B'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2039: 'RET' : is not a member of 'mtl::IF'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\meta_if.h(31) : see declaration of 'mtl::IF'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2146: syntax error : missing ';' before identifier 'reference'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2602: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' is not a member of a base class of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(108) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2868: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' : illegal syntax for using-declaration; expected qualified-name
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(137) : error C2061: syntax error : identifier 'size_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(154) : error C2061: syntax error : identifier 'size_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(154) : error C2805: binary 'operator +=' has too few parameters
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(154) : error C2333: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::operator +=' : error in function declaration; skipping function body
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(159) : error C2061: syntax error : identifier 'size_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(159) : error C2805: binary 'operator -=' has too few parameters
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(159) : error C2333: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::operator -=' : error in function declaration; skipping function body
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C2146: syntax error : missing ';' before identifier 'index'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(165) : warning C4183: 'index': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C2143: syntax error : missing ';' before '&amp;'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(167) : warning C4183: 'pos': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C2143: syntax error : missing ';' before '&amp;'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C2086: 'oned::size_type size_type' : redefinition
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(130) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::operator size_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(168) : warning C4183: 'pos': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C2146: syntax error : missing ';' before identifier 'row'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(170) : warning C4183: 'row': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C2146: syntax error : missing ';' before identifier 'column'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C2433: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;::size_type' : 'inline' not permitted on data declarations
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(171) : warning C4183: 'column': missing return type; assumed to be a member function returning 'int'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C2146: syntax error : missing ';' before identifier 'i'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(174) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(175) : error C2146: syntax error : missing ';' before identifier 'offset'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(175) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(175) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(176) : error C2146: syntax error : missing ';' before identifier 'stride'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(176) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(176) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;Build log was saved at &amp;quot;file://f:\Sergey\Work\Current projects\Try BLAS\TryITL2\TryITL2\Debug\BuildLog.htm&amp;quot;
&lt;br&gt;1&amp;gt;TryITL2 - 55 error(s), 11 warning(s)
&lt;br&gt;========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
&lt;br&gt;&lt;br /&gt; &lt;br /&gt;1&amp;gt;------ Build started: Project: TryITL2, Configuration: Debug Win32 ------
&lt;br&gt;1&amp;gt;Compiling...
&lt;br&gt;1&amp;gt;Main.cpp
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(177) : see reference to class template instantiation 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;' being compiled
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(106) : see reference to class template instantiation 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned' being compiled
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(414) : see reference to class template instantiation 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;' being compiled
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2602: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' is not a member of a base class of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(111) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(129) : error C2868: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::pointer' : illegal syntax for using-declaration; expected qualified-name
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2144: syntax error : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' should be preceded by ';'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2602: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' is not a member of a base class of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(113) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(131) : error C2868: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::difference_type' : illegal syntax for using-declaration; expected qualified-name
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::const_reference' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2923: 'mtl::IF' : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::const_reference' is not a valid template type argument for parameter 'A'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : warning C4346: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' : dependent name is not a type
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prefix with 'typename' to indicate a type
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2923: 'mtl::IF' : 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' is not a valid template type argument for parameter 'B'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2039: 'RET' : is not a member of 'mtl::IF'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\meta_if.h(31) : see declaration of 'mtl::IF'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2146: syntax error : missing ';' before identifier 'reference'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2602: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' is not a member of a base class of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::__iterator&amp;lt;isConst&amp;gt;'
&lt;br&gt;1&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(108) : see declaration of 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference'
&lt;br&gt;1&amp;gt;f:\sergey\work\current projects\try blas\iterative template library\mtl-2.1.2-21\mtl\light_matrix.h(133) : error C2868: 'mtl::light_matrix&amp;lt;T,SizeType,Orien,Strided&amp;gt;::oned::reference' : illegal syntax for using-declaration; expected qualified-name
&lt;br&gt;1&amp;gt;Build log was saved at &amp;quot;file://f:\Sergey\Work\Current projects\Try BLAS\TryITL2\TryITL2\Debug\BuildLog.htm&amp;quot;
&lt;br&gt;1&amp;gt;TryITL2 - 13 error(s), 4 warning(s)
&lt;br&gt;========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
&lt;br&gt;&lt;br /&gt;#ifndef MTL_LIGHT_MATRIX_H
&lt;br&gt;#define MTL_LIGHT_MATRIX_H
&lt;br&gt;&lt;br&gt;#include &amp;quot;mtl/matrix_traits.h&amp;quot;
&lt;br&gt;#include &amp;quot;mtl/dimension.h&amp;quot;
&lt;br&gt;#include &amp;quot;mtl/meta_if.h&amp;quot;
&lt;br&gt;#include &amp;quot;mtl/meta_equal.h&amp;quot;
&lt;br&gt;&lt;br&gt;namespace mtl {
&lt;br&gt;&lt;br&gt;&lt;br&gt;template &amp;lt;int Orien&amp;gt;
&lt;br&gt;struct TRANS {
&lt;br&gt;&amp;nbsp; enum { RET = 0 };
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;template&amp;lt;&amp;gt;
&lt;br&gt;struct TRANS&amp;lt;ROW_MAJOR&amp;gt; {
&lt;br&gt;&amp;nbsp; enum { RET = COL_MAJOR };
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;template&amp;lt;&amp;gt;
&lt;br&gt;struct TRANS&amp;lt;COL_MAJOR&amp;gt; {
&lt;br&gt;&amp;nbsp; enum { RET = ROW_MAJOR };
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;&lt;br&gt;template &amp;lt;class T, class SizeType, int Orien, int Strided&amp;gt;
&lt;br&gt;class light_matrix {
&lt;br&gt;public:
&lt;br&gt;&amp;nbsp; typedef light_matrix self;
&lt;br&gt;&amp;nbsp; typedef light_matrix light_matrix_t; // VC++ workaround
&lt;br&gt;&amp;nbsp; typedef T* DataPtr;
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef rectangle_tag shape;
&lt;br&gt;&amp;nbsp; typedef typename IF&amp;lt; EQUAL&amp;lt;Orien,ROW_MAJOR&amp;gt;::RET,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; row_tag, column_tag&amp;gt;::RET orientation; // mostly wrong
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef typename IF&amp;lt; EQUAL&amp;lt;Orien,ROW_MAJOR&amp;gt;::RET,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; row_orien, column_orien&amp;gt;::RET orien;
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef light_matrix&amp;lt;T, SizeType, TRANS&amp;lt;Orien&amp;gt;::RET, Strided&amp;gt; transpose_type;
&lt;br&gt;&amp;nbsp; typedef light_matrix&amp;lt;T, SizeType, Orien, !Strided&amp;gt; strided_type;
&lt;br&gt;&amp;nbsp; typedef light_matrix&amp;lt;T, SizeType, Orien, Strided&amp;gt; scaled_type;// wrong
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef light_matrix&amp;lt;T, SizeType, Orien, Strided&amp;gt; submatrix_type;
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef int DiffType;
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: The size type
&lt;br&gt;&amp;nbsp; typedef SizeType size_type;
&lt;br&gt;&amp;nbsp; //: The type for differences between iterators
&lt;br&gt;&amp;nbsp; typedef DiffType difference_type;
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef T value_type;
&lt;br&gt;&amp;nbsp; typedef value_type&amp; reference;
&lt;br&gt;&amp;nbsp; typedef const value_type&amp; const_reference;
&lt;br&gt;&amp;nbsp; typedef value_type* pointer;
&lt;br&gt;&lt;br&gt;&amp;nbsp; enum { M = 0, N = 0 };
&lt;br&gt;&lt;br&gt;protected:
&lt;br&gt;&lt;br&gt;&amp;nbsp; static inline size_type&amp; twod_pos(size_type&amp; i, size_type&amp; j) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; if (Orien == ROW_MAJOR)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return i;
&lt;br&gt;&amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return j;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; static inline const size_type&amp; twod_pos(const size_type&amp; i,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const size_type&amp; j) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; if (Orien == ROW_MAJOR)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return i;
&lt;br&gt;&amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return j;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; static inline size_type&amp; oned_pos(size_type&amp; i, size_type&amp; j) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; if (Orien == ROW_MAJOR)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return j;
&lt;br&gt;&amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return i;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; static inline const size_type&amp; oned_pos(const size_type&amp; i,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const size_type&amp; j) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; if (Orien == ROW_MAJOR)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return j;
&lt;br&gt;&amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return i;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; // idea: completely separate stride/offset/positioning from indexing
&lt;br&gt;&amp;nbsp; // &amp;nbsp;but encapsulate both somehow
&lt;br&gt;&lt;br&gt;public:
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: This is a dense 2D container
&lt;br&gt;&amp;nbsp; typedef dense_tag sparsity;
&lt;br&gt;&amp;nbsp; //: This has external storage
&lt;br&gt;&amp;nbsp; typedef external_tag storage_loc;
&lt;br&gt;&amp;nbsp; //: This is strideable
&lt;br&gt;&amp;nbsp; typedef strideable strideability;
&lt;br&gt;&lt;br&gt;&amp;nbsp; class oned {
&lt;br&gt;&amp;nbsp; public:
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef T&amp; reference;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef const T&amp; const_reference;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef T value_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef T* pointer;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef SizeType size_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef int difference_type;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; enum { M = 0, N = 0 };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef oned subrange_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef dense_tag sparsity;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef oned IndexArray; /* bogus */
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef oned IndexArrayRef; /* bogus */
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef oned_tag dimension; /* bogus */
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; template &amp;lt;int isConst&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; class __iterator {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef __iterator self;
&lt;br&gt;&amp;nbsp; &amp;nbsp; public:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef typename oned::value_type value_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef typename oned::pointer pointer; // changed by SergeyAvd, old version: typedef oned::pointer pointer;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef typename oned::size_type size_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef typename oned::difference_type difference_type; // changed by SergeyAvd, old version: typedef oned::difference_type difference_type;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef typename IF&amp;lt;isConst, typename oned::const_reference, typename oned::reference&amp;gt;::RET reference; // changed by SergeyAvd, old version: typedef typename IF&amp;lt;isConst, oned::const_reference, oned::reference&amp;gt;::RET reference;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef std::random_access_iterator_tag iterator_category;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline __iterator(DataPtr d,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size_type ii, size_type jj,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size_type os, size_type s)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : data(d), i(ii), j(jj), offset(os), stride(s) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline __iterator(const self&amp; x)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : data(x.data), i(x.i), j(x.j), offset(x.offset), stride(x.stride) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline self&amp; operator=(const self&amp; x) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; data = x.data; i = x.i; j = x.j; offset = x.offset; stride = x.stride;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return *this;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline __iterator() : data(0), i(0), j(0), offset(0), stride(0) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline reference operator*() const { return data[offset]; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline self&amp; operator++() { ++pos(); offset += stride; return *this; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline self&amp; operator+=(size_type n) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pos() += n; offset += stride*n; return *this;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline self operator++(int) { self t = *this; ++(*this); return t; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline self&amp; operator--() { --pos(); offset -= stride; return *this; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline self&amp; operator-=(size_type n) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pos() -= n; offset -= stride*n; return *this; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline self operator--(int) { self t = *this; --(*this); return t; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline bool operator!=(const self&amp; x) const { return pos() != x.pos(); }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline bool operator==(const self&amp; x) const { return pos() == x.pos(); }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline bool operator&amp;lt;(const self&amp; x) const { return pos() &amp;lt; x.pos(); }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline size_type index() const { return pos(); }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline size_type&amp; pos() { return oned_pos(i,j); }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline const size_type&amp; pos() const { return oned_pos(i,j); }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline size_type row() const { return i; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; inline size_type column() const { return j; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; protected:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; DataPtr data;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; size_type i, j;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; size_type offset;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; size_type stride;
&lt;br&gt;&amp;nbsp; &amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef __iterator&amp;lt;0&amp;gt; iterator;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef __iterator&amp;lt;1&amp;gt; const_iterator;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline oned(DataPtr d, size_type ii, size_type jj,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size_type ie, size_type je,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size_type os, size_type ld)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; : data(d), i(ii), j(jj), iend(ie), jend(je),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; offset(os), ldim(ld) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline oned(const oned&amp; x)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; : data(x.data), i(x.i), j(x.j),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; iend(x.iend), jend(x.jend),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; offset(x.offset), ldim(x.ldim) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline oned&amp; operator=(const oned&amp; x) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; data = x.data; i = x.i; j = x.j;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; iend = x.iend; jend = x.jend;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; offset = x.offset; ldim = x.ldim;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return *this;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline oned()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; : data(0), i(0), j(0), iend(0), jend(0), offset(0), ldim(0) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline ~oned() { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline reference operator[](size_type n) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return data[ Strided ? offset + n * ldim : offset + n];
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline const_reference operator[](size_type n) const {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return data[ Strided ? offset + n * ldim : offset + n];
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline iterator begin() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return iterator(data, i, j, offset, Strided ? ldim : 1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline iterator end() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; size_type iiend, jjend;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if (Orien == ROW_MAJOR) { iiend = i; jjend = jend; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; else { iiend = iend; jjend = j; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return iterator(data, iiend, jjend, offset, Strided ? ldim: 1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline const_iterator begin() const {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return const_iterator(data, i, j, offset, Strided ? ldim : 1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline const_iterator end() const {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; size_type iiend, jjend;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if (Orien == ROW_MAJOR) { iiend = i; jjend = jend; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; else { iiend = iend; jjend = j; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return const_iterator(data, iiend, jjend, offset, Strided ? ldim : 1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; protected:
&lt;br&gt;&amp;nbsp; &amp;nbsp; DataPtr data;
&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type i, j;
&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type iend, jend;
&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type offset;
&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type ldim;
&lt;br&gt;&amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef oned OneD;
&lt;br&gt;&amp;nbsp; typedef OneD OneDRef;
&lt;br&gt;&amp;nbsp; typedef OneD Row;
&lt;br&gt;&amp;nbsp; typedef OneD RowRef;
&lt;br&gt;&amp;nbsp; typedef OneD Column;
&lt;br&gt;&amp;nbsp; typedef OneD ColumnRef;
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: The iterator type
&lt;br&gt;&amp;nbsp; template &amp;lt;int Const&amp;gt;
&lt;br&gt;&amp;nbsp; class __iterator {
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef __iterator self;
&lt;br&gt;&amp;nbsp; public:
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef std::random_access_iterator_tag iterator_category;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef oned value_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef value_type* pointer;
&lt;br&gt;&lt;br&gt;#if defined(_MSVCPP_)
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef typename light_matrix_t::size_type size_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef typename light_matrix_t::difference_type difference_type;
&lt;br&gt;#else
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef SizeType size_type;
&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef DiffType difference_type;
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; typedef typename IF&amp;lt;Const, const oned, oned&amp;gt;::RET reference;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline __iterator(DataPtr d, size_type ii, size_type jj,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size_type ie, size_type je, size_type ld)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; : data(d), i(ii), j(jj), iend(ie), jend(je), offset(0), ldim(ld) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (Strided) stride = 1; else stride = ldim;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline __iterator() : data(0), i(0), j(0), iend(0), jend(0),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; offset(0), stride(0), ldim(0) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline __iterator(const self&amp; x)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; : data(x.data), i(x.i), j(x.j),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; iend(x.iend), jend(x.jend), offset(x.offset),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stride(x.stride), ldim(x.ldim) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline self&amp; operator=(const self&amp; x) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; data = x.data; i = x.i; j = x.j;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; iend = x.iend; jend = x.jend;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; offset = x.offset; stride = x.stride; ldim = x.ldim;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return *this;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline reference operator*() const {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return oned(data, i, j, iend, jend, offset, ldim);
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline self&amp; operator++() { ++pos(); offset += stride; return *this; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline self&amp; operator+=(size_type n) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; pos() += n; offset += stride*n; return *this; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline self operator++(int) { self t = *this; ++(*this); return t; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline self&amp; operator--() { --pos(); offset -= stride; return *this; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline self&amp; operator-=(size_type n) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; pos() -= n; offset -= stride*n; return *this; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline self operator--(int) { self t = *this; --(*this); return t; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline bool operator!=(const self&amp; x) const { return pos() != x.pos(); }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline bool operator==(const self&amp; x) const { return pos() == x.pos(); }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline bool operator&amp;lt;(const self&amp; x) const { return pos() &amp;lt; x.pos(); }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline size_type index() const { return pos(); }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline size_type&amp; pos() { return twod_pos(i,j); }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline const size_type&amp; pos() const { return twod_pos(i,j); }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; inline size_type row() const { return i; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; inline size_type column() const { return j; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; protected:
&lt;br&gt;&amp;nbsp; &amp;nbsp; DataPtr data;
&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type i, j;
&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type iend, jend;
&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type offset;
&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type stride;
&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type ldim;
&lt;br&gt;&amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef __iterator&amp;lt;0&amp;gt; iterator;
&lt;br&gt;&amp;nbsp; typedef __iterator&amp;lt;1&amp;gt; const_iterator;
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: Standard Constructor
&lt;br&gt;&amp;nbsp; inline light_matrix(DataPtr d, size_type m, size_type n, size_type ld)
&lt;br&gt;&amp;nbsp; &amp;nbsp; : data_(d), nrows_(m), ncols_(n), ldim(ld) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; inline light_matrix(DataPtr d, size_type m, size_type n)
&lt;br&gt;&amp;nbsp; &amp;nbsp; : data_(d), nrows_(m), ncols_(n), ldim(Orien == ROW_MAJOR ? n : m) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: Copy Constructor
&lt;br&gt;&amp;nbsp; inline light_matrix(const light_matrix&amp; x)
&lt;br&gt;&amp;nbsp; &amp;nbsp; : data_(x.data_), nrows_(x.nrows_), ncols_(x.ncols_), ldim(x.ldim) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: Assignment Operator
&lt;br&gt;&amp;nbsp; inline const light_matrix&amp; operator=(const light_matrix&amp; x) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; data_ = x.data_; nrows_ = x.nrows_; ncols_ = x.ncols_; ldim = x.ldim;
&lt;br&gt;&amp;nbsp; &amp;nbsp; return *this;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; //: Default Constructor
&lt;br&gt;&amp;nbsp; inline light_matrix() : data_(0), nrows_(0), ncols_(0), ldim(0) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; inline light_matrix(const strided_type&amp; x, do_strided s)
&lt;br&gt;&amp;nbsp; &amp;nbsp; : data_(x.data_), nrows_(x.nrows_), ncols_(x.ncols_), ldim(x.ldim) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; template &amp;lt;class StridedType&amp;gt;
&lt;br&gt;&amp;nbsp; inline light_matrix(const StridedType&amp; x, do_strided s)
&lt;br&gt;&amp;nbsp; &amp;nbsp; : data_(x.data_), nrows_(x.nrows_), ncols_(x.ncols_), ldim(x.ldim) { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: Destructor
&lt;br&gt;&amp;nbsp; inline ~light_matrix() { }
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: Return an iterator pointing to the first 1D container
&lt;br&gt;&amp;nbsp; inline iterator begin() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; return iterator(data_, 0, 0, nrows_, ncols_, ldim);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; //: Return an iterator pointing past the end of the 2D container
&lt;br&gt;&amp;nbsp; inline iterator end() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; return iterator(data_, nrows_, ncols_, nrows_, ncols_, ldim);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: Return a const iterator pointing to the first 1D container
&lt;br&gt;&amp;nbsp; inline const_iterator begin() const {
&lt;br&gt;&amp;nbsp; &amp;nbsp; return const_iterator(data_, 0, 0, nrows_, ncols_, ldim);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; //: Return a const iterator pointing past the end of the 2D container
&lt;br&gt;&amp;nbsp; inline const_iterator end() const {
&lt;br&gt;&amp;nbsp; &amp;nbsp; return const_iterator(data_, nrows_, ncols_, nrows_, ncols_, ldim);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: Return a reference to the ith 1D container
&lt;br&gt;&amp;nbsp; inline oned operator[](size_type n) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; if (Orien == ROW_MAJOR)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return oned(data_, n, 0, nrows_, ncols_, Strided ? n : ldim * n, ldim);
&lt;br&gt;&amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return oned(data_, 0, n, nrows_, ncols_, Strided ? n : ldim * n, ldim);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; inline const oned operator[](size_type n) const {
&lt;br&gt;&amp;nbsp; &amp;nbsp; if (Orien == ROW_MAJOR)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return oned(data_, n, 0, nrows_, ncols_, Strided ? n : ldim * n, ldim);
&lt;br&gt;&amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return oned(data_, 0, n, nrows_, ncols_, Strided ? n : ldim * n, ldim);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: Return a reference to the (i,j) element, where (i,j) is in the 2D coordinate system
&lt;br&gt;&amp;nbsp; inline reference operator()(size_type i, size_type j) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; return Orien == ROW_MAJOR ? operator[](i)[j] : operator[](j)[i];
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; //: Return a const reference to the (i,j) element, where (i,j) is in the 2D coordinate system
&lt;br&gt;&amp;nbsp; inline const_reference operator()(size_type i, size_type j) const {
&lt;br&gt;&amp;nbsp; &amp;nbsp; return Orien == ROW_MAJOR ? operator[](i)[j] : operator[](j)[i];
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; inline size_type nrows() const { return nrows_; }
&lt;br&gt;&amp;nbsp; inline size_type ncols() const { return ncols_; }
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; inline submatrix_type sub_matrix(size_type i, size_type iend,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;size_type j, size_type jend) const
&lt;br&gt;&amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; if (Strided)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return submatrix_type(data_ + oned_pos(i,j) * ldim + twod_pos(iend,jend),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; iend - i, jend - j, ldim);
&lt;br&gt;&amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return submatrix_type(data_ + twod_pos(i,j) * ldim + oned_pos(iend,jend),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; iend - i, jend - j, ldim);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; DataPtr data_;
&lt;br&gt;&amp;nbsp; size_type nrows_, ncols_;
&lt;br&gt;&amp;nbsp; size_type ldim;
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;&lt;br&gt;} /* namespace mtl */
&lt;br&gt;&lt;br&gt;#endif /* MTL_LIGHT_MATRIX_H */
&lt;br&gt;&lt;br /&gt;// -*- c++ -*-
&lt;br&gt;// $COPYRIGHT$
&lt;br&gt;//
&lt;br&gt;&lt;br&gt;#ifndef ITL_KRYLOV_GMRES_H
&lt;br&gt;#define ITL_KRYLOV_GMRES_H
&lt;br&gt;&lt;br&gt;#include &amp;lt;vector&amp;gt;
&lt;br&gt;#include &amp;lt;algorithm&amp;gt;
&lt;br&gt;#include &amp;quot;itl/itl.h&amp;quot;
&lt;br&gt;#include &amp;quot;itl/givens_rotation.h&amp;quot;
&lt;br&gt;#include &amp;quot;itl/number_traits.h&amp;quot;
&lt;br&gt;#include &amp;lt;itl/modified_gram_schmidt.h&amp;gt;
&lt;br&gt;&lt;br&gt;namespace itl {
&lt;br&gt;&lt;br&gt;&amp;nbsp; // Generalized Minimum Residual
&lt;br&gt;&amp;nbsp; //
&lt;br&gt;&amp;nbsp; // &amp;nbsp; This solve the unsymmetric linear system Ax = b using restarted GMRES.
&lt;br&gt;&amp;nbsp; //
&lt;br&gt;&amp;nbsp; // &amp;nbsp; A return value of 0 indicates convergence within the
&lt;br&gt;&amp;nbsp; // &amp;nbsp; maximum number of iterations (determined by the iter object).
&lt;br&gt;&amp;nbsp; // &amp;nbsp; A return value of 1 indicates a failure to converge.
&lt;br&gt;&amp;nbsp; //
&lt;br&gt;&amp;nbsp; // &amp;nbsp; On instantiating Iteration object outer, the first parameter
&lt;br&gt;&amp;nbsp; // &amp;nbsp; Vector w must be the precondtioned one, i.e., solve(M, b, w) where
&lt;br&gt;&amp;nbsp; // &amp;nbsp; b is right side of linear system. See test_gmres.cc for example.
&lt;br&gt;&amp;nbsp; //
&lt;br&gt;&amp;nbsp; // &amp;nbsp; See: Y. Saad and M. Schulter. GMRES: A generalized minimum residual
&lt;br&gt;&amp;nbsp; // &amp;nbsp; algorithm for solving nonsysmmetric linear systems, SIAM
&lt;br&gt;&amp;nbsp; // &amp;nbsp; J. Sci. Statist. Comp. &amp;nbsp;7(1986), pp, 856-869
&lt;br&gt;&amp;nbsp; //
&lt;br&gt;&amp;nbsp; /* required operations: mult,copy,dot_conj,add,scaled,two_norm,tri_solve */
&lt;br&gt;template &amp;lt; class Matrix, class Vector, class VectorB, class Preconditioner, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;class Iter, class Basis &amp;gt;
&lt;br&gt;int 
&lt;br&gt;gmres(const Matrix &amp;A, Vector &amp;x, const VectorB &amp;b,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; const Preconditioner &amp;M, int restart, Iter&amp; outer, Basis&amp; KS)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; typedef typename itl_traits&amp;lt;Vector&amp;gt;::value_type T;
&lt;br&gt;&amp;nbsp; typedef typename itl_traits&amp;lt;Vector&amp;gt;::size_type size_type;
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef mtl::dense1D&amp;lt;T&amp;gt; TmpVec; // Changed by SergeyAvd, old version: typedef std::vector&amp;lt;T&amp;gt; TmpVec;
&lt;br&gt;&amp;nbsp; typedef Vector internal_vector;
&lt;br&gt;&lt;br&gt;&amp;nbsp; //These must be arithmetically compatible with x
&lt;br&gt;&amp;nbsp; internal_vector w(size(x)), r(size(x)), u(size(x));
&lt;br&gt;&lt;br&gt;&amp;nbsp; typedef typename number_traits&amp;lt;T&amp;gt;::magnitude_type Real;
&lt;br&gt;&amp;nbsp; typedef typename internal_matrix_traits&amp;lt;T&amp;gt;::Matrix HMat;
&lt;br&gt;&amp;nbsp; HMat H(restart+1, restart); //Elements in H must be real type
&lt;br&gt;&lt;br&gt;&amp;nbsp; TmpVec s(restart+1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; std::vector&amp;lt; itl::givens_rotation&amp;lt;T&amp;gt; &amp;gt; rotations(restart+1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; itl::mult(A, itl::scaled(x, -1.0), b, w);
&lt;br&gt;&lt;br&gt;&amp;nbsp; itl::solve(M, w, r);
&lt;br&gt;&amp;nbsp; Real beta = std::abs(itl::two_norm(r));
&lt;br&gt;&lt;br&gt;&amp;nbsp; while (! outer.finished(beta)) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; itl::copy(itl::scaled(r, 1./beta), KS[0]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; std::fill(s.begin(), s.end(), 0.0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; s[0] = beta;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; size_type i = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; Iter inner(outer.normb(), restart, outer.tol(), outer.atol());
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; do {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; size_type k;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; itl::mult(A, KS[i], u);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; itl::solve(M, u, KS[i+1]);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; itl::orthogonalize(KS, H[i], i);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Real H_ip1_i = itl::two_norm(KS[i+1]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; H(i+1, i) = H_ip1_i;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; itl::scale(KS[i+1], 1./H_ip1_i);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; for (k = 0; k &amp;lt; i; k++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rotations[k].scalar_apply(H(k,i), H(k+1,i));
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; rotations[i] = itl::givens_rotation&amp;lt;T&amp;gt;(H(i,i), H(i+1,i));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; rotations[i].scalar_apply(H(i,i), H(i+1,i));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; rotations[i].scalar_apply(s[i], s[i+1]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ++inner, ++outer, ++i;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; } while (! inner.finished(std::abs(s[i]))); 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; itl::upper_tri_solve(H, s, i);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; itl::combine(KS, s, x, i);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; itl::mult(A, itl::scaled(x, -1.0), b, w);
&lt;br&gt;&amp;nbsp; &amp;nbsp; itl::solve(M, w, r);
&lt;br&gt;&amp;nbsp; &amp;nbsp; beta = std::abs(itl::two_norm(r));
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; return outer.error_code();
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;template &amp;lt; class Matrix, class Vector, class VectorB, class Preconditioner, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;class Iter &amp;gt;
&lt;br&gt;int 
&lt;br&gt;gmres(const Matrix &amp;A, Vector &amp;x, const VectorB &amp;b,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; const Preconditioner &amp;M, int restart, Iter&amp; outer)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; itl::modified_gram_schmidt&amp;lt;Vector&amp;gt; orth(restart, size(x));
&lt;br&gt;&amp;nbsp; return itl::gmres(A, x, b, M, restart, outer, orth); 
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;#endif
&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;Aaron patch.zip&lt;/strong&gt; (49K) &lt;a href=&quot;http://old.nabble.com/attachment/19583368/0/Aaron%20patch.zip&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Hello-dear-MTL-developers-tp19583368p19583368.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-18912219</id>
	<title>MTL: installing and using MTL failed.</title>
	<published>2008-08-10T03:22:55Z</published>
	<updated>2008-08-10T03:22:55Z</updated>
	<author>
		<name>utab</name>
	</author>
	<content type="html">&lt;div dir=&quot;ltr&quot;&gt;Dear,
&lt;br&gt;
&lt;br&gt;I am trying to install MTL from tar ball mtl-2.1.2-22.tar.gz 
&lt;a class=&quot;moz-txt-link-rfc2396E&quot; href=&quot;http://www.osl.iu.edu/download/research/mtl//mtl-2.1.2-22.tar.gz&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;&amp;lt;http://www.osl.iu.edu/download/research/mtl//mtl-2.1.2-22.tar.gz&amp;gt;&lt;/a&gt; given 
on the webpage. However, I recently had some problems on autoconf and 
automake and after some search found out that, some version 
inconsistency was the reason for this. I change to autoconf 2.13 and 
automake 1.4-p6. I applied also the patch given on the mtl installation 
and download page, however that patch is already for gcc version 4.02 
and I have been using gcc 4.2.3 on ubuntu linux. Patch application 
succeded however(I think this was the 1st time I applied a patch. I am 
glad I learnt how to do that besides.) And following the order given on 
the download and installation page of the mtl, I was at the configure 
step, I read from the INSTALL file, some extra options have to supplied 
to work with LAPACK and so on.
&lt;br&gt;
&lt;br&gt;I used ./configure --with-blais --with-lapack=&amp;quot;-llapack -lblas -lg2c&amp;quot;
&lt;br&gt;
&lt;br&gt;which went ok except
&lt;br&gt;.
&lt;br&gt;.
&lt;br&gt;.
&lt;br&gt;checking whether to use interface to LAPACK... yes
&lt;br&gt;test: 2807: -lblas: unexpected operator
&lt;br&gt;checking whether the Fortran 77 compiler (g77 ) works... yes
&lt;br&gt;.
&lt;br&gt;.
&lt;br&gt;.
&lt;br&gt;The I tried make and I got this errors
&lt;br&gt;
&lt;br&gt;Making all in test
&lt;br&gt;make[1]: Entering directory `/home/utabak/Desktop/mtl-2.1.2-22/test&amp;#39;
&lt;br&gt;Making all in src
&lt;br&gt;make[2]: Entering directory `/home/utabak/Desktop/mtl-2.1.2-22/test/src&amp;#39;
&lt;br&gt;g++ -DHAVE_CONFIG_H -I. -I. -I../../mtl -I../.. -ftemplate-depth-30 
-Wall -c matrix_iterator_test.cc
&lt;br&gt;In file included from ../../mtl/matrix_implementation.h:32,
&lt;br&gt;from ../../mtl/matrix.h:33,
&lt;br&gt;from matrix_iterator_test.cc:15:
&lt;br&gt;../../mtl/initialize.h: In function 'void mtl::__initialize(Matrix&amp;amp;, 
mtl::matrix_market_stream&amp;lt;T&amp;gt;&amp;amp;, mtl::symmetric_tag)':
&lt;br&gt;../../mtl/initialize.h:49: error: there are no arguments to 'assert' 
that depend on a template parameter, so a declaration of 'assert' must 
be available
&lt;br&gt;../../mtl/initialize.h:49: error: (if you use '-fpermissive', G++ will 
accept your code, but allowing the use of an undeclared name is deprecated)
&lt;br&gt;make[2]: *** [matrix_iterator_test.o] Error 1
&lt;br&gt;make[2]: Leaving directory `/home/utabak/Desktop/mtl-2.1.2-22/test/src&amp;#39;
&lt;br&gt;make[1]: *** [all-recursive] Error 1
&lt;br&gt;make[1]: Leaving directory `/home/utabak/Desktop/mtl-2.1.2-22/test&amp;#39;
&lt;br&gt;make: *** [all-recursive] Error 1
&lt;br&gt;
&lt;br&gt;Could somebody direct me from this point on to find the point where I am 
mistaken. Do I strictly need gcc 4.02? Or there is another workaround to 
this problem...
&lt;br&gt;
&lt;br&gt;Thanks for your help and time in advance.
&lt;br&gt;
&lt;br&gt;Umut
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-installing-and-using-MTL-failed.-tp18912219p18912219.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17433176</id>
	<title>MTL: diag_matrix bug</title>
	<published>2008-05-23T11:42:59Z</published>
	<updated>2008-05-23T11:42:59Z</updated>
	<author>
		<name>Aaron Scamehorn</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.6000.16640&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;Hello,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;I think I've found a 
bug when multiplying a diagonal Matrix times a Vector.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;It appears that 
mult_generic__ was being called, picking up the banded_tag in the diagonal 
matrix.&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;Attached is a test 
program which produces the following output:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face=Arial size=2&gt;V=&lt;BR&gt;[6,7,8,9,10,]&lt;BR&gt;Diag 
A=&lt;BR&gt;5x5&lt;BR&gt;[&lt;BR&gt;[1,0,0,0,0],&lt;BR&gt;[0,2,0,0,0],&lt;BR&gt;[0,0,3,0,0],&lt;BR&gt;[0,0,0,4,0],&lt;BR&gt;[0,0,0,0,5]&lt;BR&gt;]&lt;BR&gt;Full 
B=&lt;BR&gt;5x5&lt;BR&gt;[&lt;BR&gt;[1,0,0,0,0],&lt;BR&gt;[0,2,0,0,0],&lt;BR&gt;[0,0,3,0,0],&lt;BR&gt;[0,0,0,4,0],&lt;BR&gt;[0,0,0,0,5]&lt;BR&gt;]&lt;BR&gt;Output 
AxV=&lt;BR&gt;[6,12,18,24,30,]&lt;BR&gt;Output BxV=&lt;BR&gt;[6,14,24,36,50,]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;Also 
attached&amp;nbsp;is a patch that adds a diag_mult__ method to mtl.h.&amp;nbsp; I have 
to admit: templates as well as matrices are a little out of my league,&amp;nbsp;but 
the patch solved my problem!&lt;BR&gt;&lt;BR&gt;Great work on the project!&amp;nbsp; Hope this 
helps.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;Thanks,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=118024517-23052008&gt;&lt;FONT face=Arial size=2&gt;Aaron&lt;/FONT&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;mtl_bug.cpp&lt;/strong&gt; (1K) &lt;a href=&quot;http://old.nabble.com/attachment/17433176/0/mtl_bug.cpp&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;mtl_diag.patch&lt;/strong&gt; (1K) &lt;a href=&quot;http://old.nabble.com/attachment/17433176/1/mtl_diag.patch&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-diag_matrix-bug-tp17433176p17433176.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-16071533</id>
	<title>MTL: Matlab equivalent functions: rref and null</title>
	<published>2008-03-15T12:32:42Z</published>
	<updated>2008-03-15T12:32:42Z</updated>
	<author>
		<name>S M Mahbub Murshed</name>
	</author>
	<content type="html">Hi,&lt;br&gt;I would like to convert some matlab code in C++. It uses rref and null functions all over the place. What are the equivalent functions for these in mtl?&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;S M Mahbub Murshed
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Matlab-equivalent-functions%3A-rref-and-null-tp16071533p16071533.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14733729</id>
	<title>MTL: BIT Mask and change of Matrix order</title>
	<published>2008-01-10T04:56:44Z</published>
	<updated>2008-01-10T04:56:44Z</updated>
	<author>
		<name>Kassem Nasser</name>
	</author>
	<content type="html">Hello all,
&lt;br&gt;I am resending my message to this list after I have send it to the &amp;nbsp;
&lt;br&gt;MTL4 list in case someone can help here.
&lt;br&gt;I am working on Peano order matrix recursive multiplication traversal.
&lt;br&gt;In the paper &amp;quot;representation-transparent Matrix Algorithms with
&lt;br&gt;scalable performance&amp;quot; by Gottschling et al., it is mentioned that
&lt;br&gt;using MTL4 it is easy to choose the order by changing the Bit-Mask
&lt;br&gt;representation of the matrix.
&lt;br&gt;I would like to ask if anyone knows or have experienced on changing
&lt;br&gt;the order using the bit-masks and whether this can be done through
&lt;br&gt;passing some parameters to the matrix type, or it requires some work
&lt;br&gt;on the predefined bit-masks in the library header files
&lt;br&gt;(predefinedmasks.hpp, recursion.hpp, bit-masking.hpp(generatemask
&lt;br&gt;class) ).
&lt;br&gt;&lt;br&gt;thanks.
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-BIT-Mask-and-change-of-Matrix-order-tp14733729p14733729.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14512508</id>
	<title>Re: MTL: Loop-free submatrix extraction</title>
	<published>2007-12-27T04:18:36Z</published>
	<updated>2007-12-27T04:18:36Z</updated>
	<author>
		<name>Peter Gottschling</name>
	</author>
	<content type="html">&lt;html&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;
Hi Michael,&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Thank you for reminding me on that.  I thought I already fixed that.  Early January I hope finding the time for that.&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Peter&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;On Dec 26, 2007, at 8:44 PM, Michael Smolsky wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;Peter,&lt;br&gt;&lt;br&gt;I seem to be unable to say&lt;br&gt;&lt;br&gt;result += op1 * transposed_view &amp;lt;const M&amp;gt; (op2),&lt;br&gt;&lt;br&gt;where op1, op2, result are of the type dense2D&amp;lt;double&amp;gt; and M is a typedef for dense2D&amp;lt;double&amp;gt;.&lt;br&gt;&lt;br&gt;The compiler barks at the absense of a type named type in struct mtl::traits::mult_result&amp;lt;compressed2D&amp;lt;...&amp;gt;, mtl::transposed_view&amp;lt;compressed2D&amp;lt;..&amp;gt; &amp;gt; &amp;gt;.&lt;br&gt;&lt;br&gt;The code, that tests a product of a dense and a transposed matrix seems to be commented out from matrix_product_test.cpp.&lt;br&gt;&lt;br&gt;Does MTL support calculation of the product of a transposed and dense matrix?&lt;br&gt;&lt;br&gt;Thank you,&lt;br&gt;&lt;br&gt;Michael&lt;br&gt;&lt;br&gt; -- &lt;div&gt; Got No Time? Shop Online for &lt;a href=&quot;http://mail.shopping.com/?linkin_id=8033174&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt; &lt;b&gt; Great Gift Ideas!&lt;/b&gt;&lt;/a&gt;&lt;br&gt; mail.com Shopping&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;_______________________________________________&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; &quot;&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;------------&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Peter Gottschling&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Research Associate&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Open Systems Laboratory&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Indiana University&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;135 Lindley Hall&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Bloomington, IN 47405&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Tel.: +1-812-855-3608&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;/span&gt;Fax: +1-812-856-0853&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;&lt;a href=&quot;http://www.osl.iu.edu/~pgottsch&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/~pgottsch&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;/span&gt; &lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Loop-free-submatrix-extraction-tp14467087p14512508.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14505752</id>
	<title>Re: MTL: Loop-free submatrix extraction</title>
	<published>2007-12-26T11:44:53Z</published>
	<updated>2007-12-26T11:44:53Z</updated>
	<author>
		<name>Michael Smolsky-2</name>
	</author>
	<content type="html">Peter,&lt;br&gt;&lt;br&gt;I seem to be unable to say&lt;br&gt;&lt;br&gt;result += op1 * transposed_view &amp;lt;const M&amp;gt; (op2),&lt;br&gt;&lt;br&gt;where op1, op2, result are of the type dense2D&amp;lt;double&amp;gt; and M is a typedef for dense2D&amp;lt;double&amp;gt;.&lt;br&gt;&lt;br&gt;The compiler barks at the absense of a type named type in struct mtl::traits::mult_result&amp;lt;compressed2D&amp;lt;...&amp;gt;, mtl::transposed_view&amp;lt;compressed2D&amp;lt;..&amp;gt; &amp;gt; &amp;gt;.&lt;br&gt;&lt;br&gt;The code, that tests a product of a dense and a transposed matrix seems to be commented out from matrix_product_test.cpp.&lt;br&gt;&lt;br&gt;Does MTL support calculation of the product of a transposed and dense matrix?&lt;br&gt;&lt;br&gt;Thank you,&lt;br&gt;&lt;br&gt;Michael&lt;br&gt;&lt;BR&gt;

-- 
&lt;div&gt; Got No Time? Shop Online for &lt;a href=http://mail.shopping.com/?linkin_id=8033174 target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt; &lt;b&gt; Great Gift Ideas!&lt;/b&gt;&lt;/a&gt;&lt;br&gt;
mail.com Shopping&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Loop-free-submatrix-extraction-tp14467087p14505752.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14477801</id>
	<title>Re: MTL: creation of matrix elements</title>
	<published>2007-12-23T04:01:23Z</published>
	<updated>2007-12-23T04:01:23Z</updated>
	<author>
		<name>Bugzilla from ndbecker2@gmail.com</name>
	</author>
	<content type="html">On Sunday 23 December 2007, Michael Smolsky wrote:
&lt;br&gt;&amp;gt; Thank you for your insight, Peter.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; By looking at your code (contiguous_memory_block.hpp,
&lt;br&gt;&amp;gt; generic_array&amp;lt;..&amp;gt;::alloc(..)) I've noticed, that you don't initialize
&lt;br&gt;&amp;gt; matrix elements on allocation. That method seems to be called from some
&lt;br&gt;&amp;gt; methods of dense2D, such as resize(..). If that is the case, the library
&lt;br&gt;&amp;gt; won't work with any class, that has a non-trivial default constructor.
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;If you look at the current boost::ublas, you'll find e.g.:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unbounded_array (size_type size, const ALLOC &amp;a = ALLOC()):
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alloc_(a), size_ (size) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (size_) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; data_ = alloc_.allocate (size_);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (! detail::has_trivial_constructor&amp;lt;T&amp;gt;::value) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (pointer d = data_; d != data_ + size_; ++d)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alloc_.construct(d, value_type());
&lt;br&gt;&amp;nbsp;
&lt;br&gt;also:
&lt;br&gt;&amp;nbsp; &amp;nbsp; namespace detail {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // specialisation which define whether a type has a trivial 
&lt;br&gt;constructor
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // or not. This is used by array types.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; template&amp;lt;typename T&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct has_trivial_constructor : public 
&lt;br&gt;boost::has_trivial_constructor&amp;lt;T&amp;gt; {};
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; template&amp;lt;typename T&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct has_trivial_destructor : public 
&lt;br&gt;boost::has_trivial_destructor&amp;lt;T&amp;gt; {};
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; template&amp;lt;typename FLT&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct has_trivial_constructor&amp;lt;std::complex&amp;lt;FLT&amp;gt; &amp;gt; : public 
&lt;br&gt;boost::true_type {};
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; template&amp;lt;typename FLT&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct has_trivial_destructor&amp;lt;std::complex&amp;lt;FLT&amp;gt; &amp;gt; : public 
&lt;br&gt;boost::true_type {};
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;I believe this is a good approach
&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-creation-of-matrix-elements-tp14476268p14477801.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14476268</id>
	<title>MTL: creation of matrix elements</title>
	<published>2007-12-22T22:36:19Z</published>
	<updated>2007-12-22T22:36:19Z</updated>
	<author>
		<name>Michael Smolsky-2</name>
	</author>
	<content type="html">Thank you for your insight, Peter.&lt;br&gt;&lt;br&gt;By looking at your code (contiguous_memory_block.hpp, generic_array&amp;lt;..&amp;gt;::alloc(..)) I've noticed, that you don't initialize matrix elements on allocation. That method seems to be called from some methods of dense2D, such as resize(..). If that is the case, the library won't work with any class, that has a non-trivial default constructor.&lt;br&gt;&lt;br&gt;Is this by design?&lt;br&gt;&lt;br&gt;In order to cover classes with non-trivial default constructors (STL has no problem with this), you might want to invoke in-place operator new on the newly allocated memory in generic_array&amp;lt;..&amp;gt;::alloc(..) and perhaps other places as well. If the default constructor of the element type is trivial, the compiler will probably optimize this call out and you won't loose in performance.&lt;br&gt;&lt;br&gt;
&lt;div&gt;
Michael.&lt;br&gt;
&lt;br&gt;
&lt;blockquote style=&quot;border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;&quot;&gt;----- Original Message -----&lt;br&gt;
From: &quot;Peter Gottschling&quot; &lt;pgottsch@osl.iu.edu&gt;&lt;br&gt;
To: &quot;General Matrix Template Library \(MTL\) list&quot; &lt;mtl-devel@osl.iu.edu&gt;&lt;br&gt;
Subject: Re: MTL: Loop-free submatrix extraction&lt;br&gt;
Date: Sat, 22 Dec 2007 17:24:03 +0100&lt;br&gt;
&lt;br&gt;


Hi again, Michael,&lt;/mtl-devel@osl.iu.edu&gt;&lt;/pgottsch@osl.iu.edu&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;For dense2D and morton_dense there is a function sub_matrix (shame on me that there is no documentation yet). &amp;nbsp;You can use it like:&lt;/div&gt;&lt;div&gt;b= sub_matrix(a, begin_row, end_row, begin_column, end_column);&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;As you see it only supports intervals of rows and columns not arbitrary sets. &amp;nbsp;The reason is that this can be realized efficiently with a view.&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;If you are going to write a function I would do something like (only sketch not tested code):&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;template &amp;lt;typename Matrix, typename RowVector, typename ColVector&amp;gt;&lt;/div&gt;&lt;div&gt;Matrix list_sub_matrix(const Matrix&amp;amp; matrix, const RowVector&amp;amp; row_vector, const ColVector&amp;amp; col_vector)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;Matrix s(size(row_vector), size(col_vector));&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;matrix::inserter&amp;lt;Matrix&amp;gt; &amp;nbsp; ins(s);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (size_t r= 0; r &amp;lt; size(row_vector); r++)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; for (size_t c= 0; c &amp;lt; size(col_vector); c++)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ins(r, c) &amp;lt;&amp;lt; matrix[row_vector[r]][col_vector[c]];&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;return s;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Returning a matrix is quite expensive at the moment but will be okay once I've implemented move semantics. &amp;nbsp;I hope I haven't overseen a detail otherwise you can asked again. &amp;nbsp;Once you have it done and tested I'd like to put it in the repository.&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Good luck and Merry Christmas,&lt;/div&gt;&lt;div&gt;Peter&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;BR&gt;

-- 
&lt;div&gt; Want an e-mail address like mine? &lt;/b&gt;&lt;br&gt;
Get a &lt;b&gt;free e-mail &lt;/b&gt;account today at &lt;a href=&quot;http://www.mail.com/Product.aspx&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.mail.com&lt;/a&gt;!&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-creation-of-matrix-elements-tp14476268p14476268.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14470864</id>
	<title>Re: MTL: Loop-free submatrix extraction</title>
	<published>2007-12-22T08:24:03Z</published>
	<updated>2007-12-22T08:24:03Z</updated>
	<author>
		<name>Peter Gottschling</name>
	</author>
	<content type="html">&lt;html&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;
Hi again, Michael,&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;For dense2D and morton_dense there is a function sub_matrix (shame on me that there is no documentation yet).  You can use it like:&lt;/div&gt;&lt;div&gt;b= sub_matrix(a, begin_row, end_row, begin_column, end_column);&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;As you see it only supports intervals of rows and columns not arbitrary sets.  The reason is that this can be realized efficiently with a view.&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;If you are going to write a function I would do something like (only sketch not tested code):&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;template &amp;lt;typename Matrix, typename RowVector, typename ColVector&amp;gt;&lt;/div&gt;&lt;div&gt;Matrix list_sub_matrix(const Matrix&amp;amp; matrix, const RowVector&amp;amp; row_vector, const ColVector&amp;amp; col_vector)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;  Matrix s(size(row_vector), size(col_vector));&lt;/div&gt;&lt;div&gt;  {&lt;/div&gt;&lt;div&gt;    matrix::inserter&amp;lt;Matrix&amp;gt;   ins(s);&lt;/div&gt;&lt;div&gt;    for (size_t r= 0; r &amp;lt; size(row_vector); r++)&lt;/div&gt;&lt;div&gt;       for (size_t c= 0; c &amp;lt; size(col_vector); c++)&lt;/div&gt;&lt;div&gt;            ins(r, c) &amp;lt;&amp;lt; matrix[row_vector[r]][col_vector[c]];&lt;/div&gt;&lt;div&gt;  }&lt;/div&gt;&lt;div&gt;  return s;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Returning a matrix is quite expensive at the moment but will be okay once I've implemented move semantics.  I hope I haven't overseen a detail otherwise you can asked again.  Once you have it done and tested I'd like to put it in the repository.&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Good luck and Merry Christmas,&lt;/div&gt;&lt;div&gt;Peter&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;On Dec 22, 2007, at 8:24 AM, Michael Smolsky wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Peter,&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Thank you for your detailed response.&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;I'm exploring MTL further. I hope you don't mind if I ask you some questions, the answers to which I couldn't find in the documentation.&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;I need to extract a submatrix of a matrix, in a way similar to:&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;octave:4&amp;gt; a=rand(4),b=a([1,2],[2,4])&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;a =&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;   &lt;/span&gt;0.622575 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.844744 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.424293 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.207615&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;   &lt;/span&gt;0.642011 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.102342 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.011919 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.168107&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;   &lt;/span&gt;0.774028 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.446422 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.076552 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.759136&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;   &lt;/span&gt;0.633285 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.792054 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.738877 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.982645&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;b =&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;   &lt;/span&gt;0.84474 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.20762&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;   &lt;/span&gt;0.10234 &lt;span class=&quot;Apple-converted-space&quot;&gt;  &lt;/span&gt;0.16811&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Is there an elegant way of doing this, or I need to write loops? I feel optimistic having read about inserters in your documentation...&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;My matrix is dense for now, but I will probably need to apply this to a sparse matrix as well.&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Thanks you in advance,&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Michael.&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt; &lt;blockquote type=&quot;cite&quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;----- Original Message -----&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;From: &quot;Peter Gottschling&quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=14470864&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pgottsch@...&lt;/a&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;To: &quot;General Matrix Template Library (MTL) list&quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=14470864&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl-devel@...&lt;/a&gt;&amp;gt;, &quot;Matrix Template Library 4&quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=14470864&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl4@...&lt;/a&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Subject: Re: MTL: MTL development road&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Date: Mon, 03 Dec 2007 10:53:38 +0100&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;--&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Want an e-mail address like mine?&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Get a free e-mail account today at &lt;a href=&quot;http://www.mail.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;www.mail.com&lt;/a&gt;!&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;_______________________________________________&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; &quot;&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;------------&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Peter Gottschling&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Research Associate&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Open Systems Laboratory&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Indiana University&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;135 Lindley Hall&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Bloomington, IN 47405&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Tel.: +1-812-855-3608&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;/span&gt;Fax: +1-812-856-0853&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;&lt;a href=&quot;http://www.osl.iu.edu/~pgottsch&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/~pgottsch&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;/span&gt; &lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Loop-free-submatrix-extraction-tp14467087p14470864.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14470622</id>
	<title>Re: MTL: Patch for mtl4-alpha-1-r6398, gcc 4.1.2</title>
	<published>2007-12-22T07:58:45Z</published>
	<updated>2007-12-22T07:58:45Z</updated>
	<author>
		<name>Peter Gottschling</name>
	</author>
	<content type="html">&lt;html&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;
Hi Michael,&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Thank you for the patch.  I'll apply it eventually.&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;I'm kind of surprised that a C++ compiler complains about this, esp. as I already tried gcc 4.1.2 on.  It's also surprising that I put semicolons after function definitions so often.&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;Peter&lt;/div&gt;&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;On Dec 22, 2007, at 6:13 AM, Michael Smolsky wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Hi,&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;I'm trying to compile mtl4-alpha-1-r6398.tar.gz using gcc 4.1.2&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;20070925 (Red Hat 4.1.2-27), and it fails on a bunch of files. Essentially, there're extra semicolons after definitions of some functions, which gcc doesn't like any more.&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;I've created a patch file, that I'm attaching. To apply the patch, go to mtl4 directory and execute&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;patch -p1 &amp;lt; /path/to/patch/file.txt&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Thank you for supporting MTL,&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Michael&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;--&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Want an e-mail address like mine?&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;Get a free e-mail account today at &lt;a href=&quot;http://www.mail.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;www.mail.com&lt;/a&gt;!&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;span&gt;&amp;lt;patch-alpha-1-r6398-remove-semicolons.txt&amp;gt;&lt;/span&gt;_______________________________________________&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;/div&gt; &lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; &quot;&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;------------&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Peter Gottschling&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Research Associate&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Open Systems Laboratory&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Indiana University&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;135 Lindley Hall&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Bloomington, IN 47405&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Tel.: +1-812-855-3608&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;/span&gt;Fax: +1-812-856-0853&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;&lt;a href=&quot;http://www.osl.iu.edu/~pgottsch&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/~pgottsch&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;/span&gt; &lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Patch-for-mtl4-alpha-1-r6398%2C-gcc-4.1.2-tp14466475p14470622.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14467087</id>
	<title>MTL: Loop-free submatrix extraction</title>
	<published>2007-12-21T23:24:05Z</published>
	<updated>2007-12-21T23:24:05Z</updated>
	<author>
		<name>Michael Smolsky-2</name>
	</author>
	<content type="html">Peter,
&lt;br&gt;&lt;br&gt;Thank you for your detailed response.
&lt;br&gt;&lt;br&gt;I'm exploring MTL further. I hope you don't mind if I ask you some questions, the answers to which I couldn't find in the documentation.
&lt;br&gt;&lt;br&gt;I need to extract a submatrix of a matrix, in a way similar to:
&lt;br&gt;&lt;br&gt;octave:4&amp;gt; a=rand(4),b=a([1,2],[2,4])
&lt;br&gt;a =
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;0.622575 &amp;nbsp; 0.844744 &amp;nbsp; 0.424293 &amp;nbsp; 0.207615
&lt;br&gt;&amp;nbsp; &amp;nbsp;0.642011 &amp;nbsp; 0.102342 &amp;nbsp; 0.011919 &amp;nbsp; 0.168107
&lt;br&gt;&amp;nbsp; &amp;nbsp;0.774028 &amp;nbsp; 0.446422 &amp;nbsp; 0.076552 &amp;nbsp; 0.759136
&lt;br&gt;&amp;nbsp; &amp;nbsp;0.633285 &amp;nbsp; 0.792054 &amp;nbsp; 0.738877 &amp;nbsp; 0.982645
&lt;br&gt;&lt;br&gt;b =
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;0.84474 &amp;nbsp; 0.20762
&lt;br&gt;&amp;nbsp; &amp;nbsp;0.10234 &amp;nbsp; 0.16811
&lt;br&gt;&lt;br&gt;Is there an elegant way of doing this, or I need to write loops? I feel optimistic having read about inserters in your documentation...
&lt;br&gt;&lt;br&gt;My matrix is dense for now, but I will probably need to apply this to a sparse matrix as well.
&lt;br&gt;&lt;br&gt;Thanks you in advance,
&lt;br&gt;&lt;br&gt;Michael.
&lt;br&gt;&lt;br&gt;&amp;gt; ----- Original Message -----
&lt;br&gt;&amp;gt; From: &amp;quot;Peter Gottschling&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=14467087&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pgottsch@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; To: &amp;quot;General Matrix Template Library (MTL) list&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=14467087&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl-devel@...&lt;/a&gt;&amp;gt;, &amp;quot;Matrix Template Library 4&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=14467087&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl4@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Subject: Re: MTL: MTL development road
&lt;br&gt;&amp;gt; Date: Mon, 03 Dec 2007 10:53:38 +0100
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Want an e-mail address like mine?
&lt;br&gt;Get a free e-mail account today at www.mail.com!
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Loop-free-submatrix-extraction-tp14467087p14467087.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14466475</id>
	<title>MTL: Patch for mtl4-alpha-1-r6398, gcc 4.1.2</title>
	<published>2007-12-21T21:13:54Z</published>
	<updated>2007-12-21T21:13:54Z</updated>
	<author>
		<name>Michael Smolsky-2</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I'm trying to compile mtl4-alpha-1-r6398.tar.gz using gcc 4.1.2 
&lt;br&gt;20070925 (Red Hat 4.1.2-27), and it fails on a bunch of files. Essentially, there're extra semicolons after definitions of some functions, which gcc doesn't like any more.
&lt;br&gt;&lt;br&gt;I've created a patch file, that I'm attaching. To apply the patch, go to mtl4 directory and execute
&lt;br&gt;&lt;br&gt;patch -p1 &amp;lt; /path/to/patch/file.txt
&lt;br&gt;&lt;br&gt;Thank you for supporting MTL,
&lt;br&gt;&lt;br&gt;Michael
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Want an e-mail address like mine?
&lt;br&gt;Get a free e-mail account today at www.mail.com!
&lt;br&gt;&lt;br&gt;&lt;br /&gt;diff -ru mtl4/boost/numeric/mtl/operation/conj.hpp mtl4-fixed/boost/numeric/mtl/operation/conj.hpp
&lt;br&gt;--- mtl4/boost/numeric/mtl/operation/conj.hpp	2007-10-26 05:33:04.000000000 -0400
&lt;br&gt;+++ mtl4-fixed/boost/numeric/mtl/operation/conj.hpp	2007-12-21 23:50:35.000000000 -0500
&lt;br&gt;@@ -97,7 +97,7 @@
&lt;br&gt;&amp;nbsp;inline conj(const Value&amp; v)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return sfunctor::conj&amp;lt;Value, typename traits::algebraic_category&amp;lt;Value&amp;gt;::type&amp;gt;::apply(v);
&lt;br&gt;-};
&lt;br&gt;+}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;namespace sfunctor {
&lt;br&gt;@@ -129,7 +129,7 @@
&lt;br&gt;&amp;nbsp;inline typename sfunctor::real&amp;lt;Value&amp;gt;::result_type real(const Value&amp; v)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return sfunctor::real&amp;lt;Value&amp;gt;::apply(v);
&lt;br&gt;-};
&lt;br&gt;+}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;namespace sfunctor {
&lt;br&gt;@@ -163,7 +163,7 @@
&lt;br&gt;&amp;nbsp;inline typename sfunctor::imag&amp;lt;Value&amp;gt;::result_type imag(const Value&amp; v)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return sfunctor::imag&amp;lt;Value&amp;gt;::apply(v);
&lt;br&gt;-};
&lt;br&gt;+}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;} // namespace mtl
&lt;br&gt;diff -ru mtl4/boost/numeric/mtl/operation/trans.hpp mtl4-fixed/boost/numeric/mtl/operation/trans.hpp
&lt;br&gt;--- mtl4/boost/numeric/mtl/operation/trans.hpp	2007-10-26 05:33:04.000000000 -0400
&lt;br&gt;+++ mtl4-fixed/boost/numeric/mtl/operation/trans.hpp	2007-12-21 23:50:51.000000000 -0500
&lt;br&gt;@@ -49,7 +49,7 @@
&lt;br&gt;&amp;nbsp;inline trans(const Value&amp; v)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return sfunctor::trans&amp;lt;Value, typename traits::algebraic_category&amp;lt;Value&amp;gt;::type&amp;gt;::apply(v);
&lt;br&gt;-};
&lt;br&gt;+}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;} // namespace mtl
&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Patch-for-mtl4-alpha-1-r6398%2C-gcc-4.1.2-tp14466475p14466475.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14127384</id>
	<title>Re: MTL: MTL development road</title>
	<published>2007-12-03T02:27:47Z</published>
	<updated>2007-12-03T02:27:47Z</updated>
	<author>
		<name>Rene van Paassen-2</name>
	</author>
	<content type="html">On Mon, 2007-12-03 at 10:53 +0100, Peter Gottschling wrote:
&lt;br&gt;&amp;gt; Hi Michael,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Michael Smolsky schrieb:
&lt;br&gt;&amp;gt; &amp;gt; Hi,
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; MTL looks like a very promising development. I am considering 
&lt;br&gt;&amp;gt; &amp;gt; switching my project to MTL.
&lt;br&gt;&lt;br&gt;Snip
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; That's an excellent idea!
&lt;br&gt;&amp;gt; &amp;gt; * Is there a reason, why standard matrix-algebraic operations, such as 
&lt;br&gt;&amp;gt; &amp;gt; matrix products, addition, etc are not expressed in terms of C++ 
&lt;br&gt;&amp;gt; &amp;gt; operators (*, +, etc)?
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; Because it is not trivial to dispatch between all the possible 
&lt;br&gt;&amp;gt; multiplication operations. &amp;nbsp;If one says alpha * A it should return a 
&lt;br&gt;&amp;gt; scaled view on a matrix, A * x it should perform a matrix vector 
&lt;br&gt;&amp;gt; product, ...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Furthermore, if one has three matrices that approach memory size, one 
&lt;br&gt;&amp;gt; don't want to set up another as temporary. &amp;nbsp;Another reason is 
&lt;br&gt;&amp;gt; genericity, mult(A, B, C) allows you to store the temporary results 
&lt;br&gt;&amp;gt; directly into C whether it is the same type as A and B or not. &amp;nbsp;If you 
&lt;br&gt;&amp;gt; have an operator A * B you don't know what type C has and if A and B 
&lt;br&gt;&amp;gt; have different types what type should have the temporary matrix (that 
&lt;br&gt;&amp;gt; might or might not shallow copied to C (but this is already another 
&lt;br&gt;&amp;gt; non-trivial problem)).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; However, MTL4 supports C= A * B;
&lt;br&gt;&amp;gt; - without creating temporaries;
&lt;br&gt;&amp;gt; - while supporting arbitrary type combinations; and
&lt;br&gt;&amp;gt; - performing dgemm, sgemm, ... if the type combination allows.
&lt;/div&gt;&lt;br&gt;We use MTL in real-time applications. There it is extremely important to
&lt;br&gt;avoid temporaries, since allocation / freeing of memory will quickly
&lt;br&gt;lead to unpredictable timing. A &amp;quot;fancier&amp;quot; matrix library like newmat is
&lt;br&gt;not compatible with real-time software. 
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;M.M. (René) van Paassen &amp;nbsp; &amp;nbsp;| ______o____/_| &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=14127384&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;M.M.vanPaassen@...&lt;/a&gt;
&lt;br&gt;Associate Professor &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;[___\_\_-----&amp;lt; &amp;nbsp; &amp;nbsp; &amp;nbsp;t/f: +31 15 27 85370/86480
&lt;br&gt;Aerospace Engineering &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp;o' &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.cs.lr.tudelft.nl&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.cs.lr.tudelft.nl&lt;/a&gt;&lt;br&gt;Delft University of Technology &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Kluijverweg 1, NL-2629 HS &amp;nbsp;Delft
&lt;br&gt;###########################################
&lt;br&gt;&lt;br&gt;This message has been scanned by F-Secure Anti-Virus for Microsoft Exchange.
&lt;br&gt;For more information, connect to &lt;a href=&quot;http://www.f-secure.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.f-secure.com/&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-MTL-development-road-tp14109193p14127384.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14127051</id>
	<title>Re: MTL: MTL development road</title>
	<published>2007-12-03T01:53:38Z</published>
	<updated>2007-12-03T01:53:38Z</updated>
	<author>
		<name>Peter Gottschling</name>
	</author>
	<content type="html">Hi Michael,
&lt;br&gt;&lt;br&gt;Michael Smolsky schrieb:
&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; MTL looks like a very promising development. I am considering 
&lt;br&gt;&amp;gt; switching my project to MTL.
&lt;br&gt;&amp;gt;
&lt;br&gt;Thank you for the compliment and we are glad about your intentions.
&lt;br&gt;&amp;gt; I would like to know MTL maintainers' opinion about the immediate 
&lt;br&gt;&amp;gt; future of MTL. The first set of questions, that comes to mind is:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; * Is there a document, that describes the roadmap for MTL?
&lt;br&gt;&amp;gt;
&lt;br&gt;Currently not. &amp;nbsp;We have to clarify the funding situation for the project 
&lt;br&gt;at the moment. &amp;nbsp;Otherwise the roadmap would be pure fiction.
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; * I noticed, that MTL currently doesn't do bound checking: my test 
&lt;br&gt;&amp;gt; code, in which I deliberately assigned a value to an out-of-bound 
&lt;br&gt;&amp;gt; element of a dense matrix didn't crash in any way. I find this pretty 
&lt;br&gt;&amp;gt; inconvenient. Having bound checking (when compiled under -DDEBUG) can 
&lt;br&gt;&amp;gt; save a lot of development time. From talking to Java folks, I noticed, 
&lt;br&gt;&amp;gt; that presence such checks in Java libraries, and lack of those in STL 
&lt;br&gt;&amp;gt; implementations was one of the reasons, that drove them away from C++ 
&lt;br&gt;&amp;gt; and towards Java. Is there a plan to add bound checking? A place, such 
&lt;br&gt;&amp;gt; as dense2D.h:rect_offset&amp;lt;..&amp;gt;::elt(..) would be my guess?
&lt;br&gt;&amp;gt;
&lt;/div&gt;Are you talking about MTL2 or MTL4? &amp;nbsp;For the latter this is mostly 
&lt;br&gt;prepared and was later disabled for simple annoying reason. &amp;nbsp;For STL 
&lt;br&gt;like implementations one needs end-iterators for half-open intervals. &amp;nbsp;
&lt;br&gt;By nature they are past the end and unfortunately I implemented them by 
&lt;br&gt;&amp;A[i][end_column]. &amp;nbsp;Therefore, the library provokes the exception 
&lt;br&gt;itself. &amp;nbsp;This annoying detail will be fixed soon.
&lt;br&gt;&lt;br&gt;Thank you for pointing out the importance of it.
&lt;br&gt;&amp;gt; * It's great, that MTL supports some LAPACK/BLAS. With all due respect 
&lt;br&gt;&amp;gt; to optimizations, that are built into MTL, some vendors optimize these 
&lt;br&gt;&amp;gt; libraries to their hardware, and that perhaps can beat sophisticated 
&lt;br&gt;&amp;gt; template unwrapping techniques. Hence my questions:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ** Is there a plan to support sparse BLAS routines? Maybe MTL supports 
&lt;br&gt;&amp;gt; those now, and I just missed it?
&lt;br&gt;&amp;gt;
&lt;br&gt;Is there a sparse BLAS implementation that is worth the effort? &amp;nbsp;AFAIK 
&lt;br&gt;there is only a prototype in C++ and no hand-tuned implementation. &amp;nbsp;Even 
&lt;br&gt;if there was I doubt that sparse operations could be implemented much 
&lt;br&gt;faster than in C++. &amp;nbsp;For dense matrix multiplication the run-time is 
&lt;br&gt;practically independent from memory bandwidth if you use caches well and 
&lt;br&gt;the performance depends on a filigree register choreography that 
&lt;br&gt;compilers these days do quite well but still not with the same 
&lt;br&gt;perfection as hand-tuned code. For sparse matrix operations the run time 
&lt;br&gt;is mainly determined by loading the matrix/matrices and there is not 
&lt;br&gt;much one can do with hardware optimization, eventually some prefetching 
&lt;br&gt;but even this is questionable since there would be not spare bandwidth 
&lt;br&gt;for the it.
&lt;br&gt;&lt;br&gt;I must admit that I only skimmed the sparse BLAS proposal but there are 
&lt;br&gt;several operations supported by MTL that are not part of sparse BLAS, 
&lt;br&gt;e.g., sparse matrix multiplication (which one could use in algebraic 
&lt;br&gt;multigrid methods), sparse dense matrix product (which could be used to 
&lt;br&gt;multiply a sparse matrix simultaneously with multiple vectors). &amp;nbsp;I 
&lt;br&gt;neither recall that the standard addressed the fundamental question how 
&lt;br&gt;the matrix should be filled. &amp;nbsp;MTL4 has a very efficient implementation 
&lt;br&gt;for this and the matrix insertion can be done in generic fashion, i.e. 
&lt;br&gt;sparse and dense matrices can be filled in the same way.
&lt;br&gt;&amp;gt; ** It seems, that matrix/vector products are handled by MTL itself, 
&lt;br&gt;&amp;gt; rather than by BLAS. Is this the case? Is there a doc, that describes 
&lt;br&gt;&amp;gt; what functionalities of BLAS/LAPACK are utilized, rather than being 
&lt;br&gt;&amp;gt; implemented within MTL?
&lt;br&gt;&amp;gt;
&lt;br&gt;In MTL2 are 2 files you can just look it up and in MTL4 there is 
&lt;br&gt;currently only matrix multiplication, but this can be done in 
&lt;br&gt;user-transparent manner (a feature I haven't found in another generic 
&lt;br&gt;library yet).
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; AMD promises to start selling FireStream boards fairly soon 
&lt;br&gt;&amp;gt; (&lt;a href=&quot;http://ati.amd.com/products/streamprocessor/specs.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ati.amd.com/products/streamprocessor/specs.html&lt;/a&gt;), and those 
&lt;br&gt;&amp;gt; might turn out to be ideal platform for running applications, built on 
&lt;br&gt;&amp;gt; top of MTL. Has anybody tried linking an MTL-based application to 
&lt;br&gt;&amp;gt; ACML, which is AMD's implementation of BLAS/LAPACK?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Regarding the previous questions, it looks like MTL does not use 
&lt;br&gt;&amp;gt; utilize exceptions for reporting BLAS/LAPACK error codes. Is there a 
&lt;br&gt;&amp;gt; plan to wrap LAPACK's INFO variable into exceptions?
&lt;br&gt;&amp;gt;
&lt;/div&gt;That's an excellent idea!
&lt;br&gt;&amp;gt; * Is there a reason, why standard matrix-algebraic operations, such as 
&lt;br&gt;&amp;gt; matrix products, addition, etc are not expressed in terms of C++ 
&lt;br&gt;&amp;gt; operators (*, +, etc)?
&lt;br&gt;&amp;gt;
&lt;br&gt;Because it is not trivial to dispatch between all the possible 
&lt;br&gt;multiplication operations. &amp;nbsp;If one says alpha * A it should return a 
&lt;br&gt;scaled view on a matrix, A * x it should perform a matrix vector 
&lt;br&gt;product, ...
&lt;br&gt;&lt;br&gt;Furthermore, if one has three matrices that approach memory size, one 
&lt;br&gt;don't want to set up another as temporary. &amp;nbsp;Another reason is 
&lt;br&gt;genericity, mult(A, B, C) allows you to store the temporary results 
&lt;br&gt;directly into C whether it is the same type as A and B or not. &amp;nbsp;If you 
&lt;br&gt;have an operator A * B you don't know what type C has and if A and B 
&lt;br&gt;have different types what type should have the temporary matrix (that 
&lt;br&gt;might or might not shallow copied to C (but this is already another 
&lt;br&gt;non-trivial problem)).
&lt;br&gt;&lt;br&gt;However, MTL4 supports C= A * B;
&lt;br&gt;- without creating temporaries;
&lt;br&gt;- while supporting arbitrary type combinations; and
&lt;br&gt;- performing dgemm, sgemm, ... if the type combination allows.
&lt;br&gt;&lt;br&gt;Nevertheless there is still a lot to do. &amp;nbsp;This said, if somebody 
&lt;br&gt;volunteers to extend the interface to BLAS and LAPACK it would be more 
&lt;br&gt;then welcome. &amp;nbsp;This could also be done as a master thesis, the principle 
&lt;br&gt;is clear and I would be glad to introduce it to the student and if 
&lt;br&gt;desired talk to his/her professor.
&lt;br&gt;&lt;br&gt;Best Regards,
&lt;br&gt;&lt;br&gt;Peter
&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-MTL-development-road-tp14109193p14127051.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-14109193</id>
	<title>MTL: MTL development road</title>
	<published>2007-12-01T12:19:44Z</published>
	<updated>2007-12-01T12:19:44Z</updated>
	<author>
		<name>Michael Smolsky-2</name>
	</author>
	<content type="html">Hi,&lt;br&gt;&lt;br&gt;MTL looks like a very promising development. I am considering switching my project to MTL.&lt;br&gt;&lt;br&gt;I would like to know MTL maintainers' opinion about the immediate future of MTL. The first set of questions, that comes to mind is:&lt;br&gt;&lt;br&gt;* Is there a document, that describes the roadmap for MTL? &lt;br&gt;&lt;br&gt;* I noticed, that MTL currently doesn't do bound checking: my test code, in which I deliberately assigned a value to an out-of-bound element of a dense matrix didn't crash in any way. I find this pretty inconvenient. Having bound checking (when compiled under -DDEBUG) can save a lot of development time. From talking to Java folks, I noticed, that presence such checks in Java libraries, and lack of those in STL implementations was one of the reasons, that drove them away from C++ and towards Java. Is there a plan to add bound checking? A place, such as dense2D.h:rect_offset&amp;lt;..&amp;gt;::elt(..) would be my guess?&lt;br&gt;&lt;br&gt;* It's great, that MTL supports some LAPACK/BLAS. With all due respect to optimizations, that are built into MTL, some vendors optimize these libraries to their hardware, and that perhaps can beat sophisticated template unwrapping techniques. Hence my questions:&lt;br&gt;&lt;br&gt;** Is there a plan to support sparse BLAS routines? Maybe MTL supports those now, and I just missed it?&lt;br&gt;&lt;br&gt;** It seems, that matrix/vector products are handled by MTL itself, rather than by BLAS. Is this the case? Is there a doc, that describes what functionalities of BLAS/LAPACK are utilized, rather than being implemented within MTL?&lt;br&gt;&lt;br&gt;AMD promises to start selling FireStream boards fairly soon (http://ati.amd.com/products/streamprocessor/specs.html), and those might turn out to be ideal platform for running applications, built on top of MTL. Has anybody tried linking an MTL-based application to ACML, which is AMD's implementation of BLAS/LAPACK?&lt;br&gt;&lt;br&gt;Regarding the previous questions, it looks like MTL does not use utilize exceptions for reporting BLAS/LAPACK error codes. Is there a plan to wrap LAPACK's INFO variable into exceptions?&lt;br&gt;&lt;br&gt;* Is there a reason, why standard matrix-algebraic operations, such as matrix products, addition, etc are not expressed in terms of C++ operators (*, +, etc)?&lt;br&gt;&lt;br&gt;
&lt;div&gt;

&lt;/div&gt;
Thank you for programming and supporting something, that looks like a very useful library.&lt;br&gt;&lt;br&gt;Regards,&lt;br&gt;&lt;br&gt;Michael.&lt;br&gt;&lt;BR&gt;

-- 
&lt;div&gt; Over 2 Million Holiday Gift Ideas -&lt;a href=http://mail.shopping.com/?linkin_id=8033174 target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt; &lt;b&gt;Take a Look!&lt;/b&gt;&lt;/a&gt;&lt;br&gt;
mail.com Shopping&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-MTL-development-road-tp14109193p14109193.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13581057</id>
	<title>Re: MTL: Symmetric Matrix Resize</title>
	<published>2007-11-04T19:44:06Z</published>
	<updated>2007-11-04T19:44:06Z</updated>
	<author>
		<name>Peter J. Stieber</name>
	</author>
	<content type="html">PS = Pete Stieber
&lt;br&gt;PS&amp;gt;&amp;gt; MTL version: mtl-2.1.2-23.tenative
&lt;br&gt;PS&amp;gt;&amp;gt; Compiler: g++ (GCC) 4.1.2 20070925 (Red Hat 4.1.2-27)
&lt;br&gt;PS&amp;gt;&amp;gt; Platform: Fedora 7 x86_64
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; I'm trying to resize a symmetric matrix using a simple
&lt;br&gt;PS&amp;gt;&amp;gt; test jig called SymmetricPackedResize.cpp ...
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; #include &amp;lt;mtl/mtl.h&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; int main()
&lt;br&gt;PS&amp;gt;&amp;gt; {
&lt;br&gt;PS&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;typedef mtl::matrix&amp;lt;
&lt;br&gt;PS&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;double,
&lt;br&gt;PS&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;mtl::symmetric&amp;lt;mtl::lower&amp;gt;,
&lt;br&gt;PS&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;mtl::packed&amp;lt;&amp;gt; &amp;gt;::type TDSymmetricMatrix;
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;TDSymmetricMatrix Symmetric(6, 6);
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;Symmetric.resize(16, 16);
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;PS&amp;gt;&amp;gt; }
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; I'm compiling with
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; g++ -IPathToMtlHeaders SymmetricPackedResize.cpp
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; The first set of errors I receive follow...
&lt;br&gt;Snip
&lt;br&gt;PS&amp;gt;&amp;gt; So the packed_offset class has the dim data member
&lt;br&gt;PS&amp;gt;&amp;gt; declared private. &amp;nbsp;Looking at the rect_offset class
&lt;br&gt;PS&amp;gt;&amp;gt; for which resize actually works, there is a
&lt;br&gt;PS&amp;gt;&amp;gt; suspicious commenting out for the private: scope
&lt;br&gt;PS&amp;gt;&amp;gt; qualifier ahead of the data members.
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; I could do the same in packed_offset, but this
&lt;br&gt;PS&amp;gt;&amp;gt; would still leave me with the &amp;quot;packed_offset&amp;lt;...&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; has no member named ld. &amp;nbsp;It looks like resize
&lt;br&gt;PS&amp;gt;&amp;gt; will only work for rect_offset storage.
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; Does anyone see a workaround for this?
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; Peter, does version 4 deal with this?
&lt;br&gt;PS&amp;gt;&amp;gt;
&lt;br&gt;PS&amp;gt;&amp;gt; How do I become an alpha tester of version 4?
&lt;br&gt;&lt;br&gt;PS&amp;gt; Instead of explicitly setting the values of the
&lt;br&gt;PS&amp;gt; offset class in the resize function, I changed
&lt;br&gt;PS&amp;gt; the code to call a new resize member function of
&lt;br&gt;PS&amp;gt; the offset class. &amp;nbsp;The following code implements
&lt;br&gt;PS&amp;gt; resize for the rect_offset class by performing
&lt;br&gt;PS&amp;gt; the same functionality that was in the dense2D
&lt;br&gt;PS&amp;gt; class resize function.
&lt;br&gt;PS&amp;gt;
&lt;br&gt;PS&amp;gt; &amp;nbsp;inline void resize(size_type m, size_type n)
&lt;br&gt;PS&amp;gt; &amp;nbsp;{
&lt;br&gt;PS&amp;gt; &amp;nbsp; &amp;nbsp;dim = dim_type(m, n);
&lt;br&gt;PS&amp;gt; &amp;nbsp; &amp;nbsp;ld = n;
&lt;br&gt;PS&amp;gt; &amp;nbsp;}
&lt;br&gt;PS&amp;gt;
&lt;br&gt;PS&amp;gt; Now I need to add a resize function to the
&lt;br&gt;PS&amp;gt; packed_offset class. &amp;nbsp;Here's my first cut...
&lt;br&gt;PS&amp;gt;
&lt;br&gt;PS&amp;gt; &amp;nbsp;inline void resize(size_type m, size_type n)
&lt;br&gt;PS&amp;gt; &amp;nbsp;{
&lt;br&gt;PS&amp;gt; &amp;nbsp; &amp;nbsp;dim = dim_type(m, n);
&lt;br&gt;PS&amp;gt; &amp;nbsp;}
&lt;br&gt;PS&amp;gt;
&lt;br&gt;PS&amp;gt; but the packed_offset class has an addition
&lt;br&gt;PS&amp;gt; data member called bw. &amp;nbsp;Can anyone explain the
&lt;br&gt;PS&amp;gt; purpose of this data member so I can figure out
&lt;br&gt;PS&amp;gt; if I need to alter it in packed_offset::resize?
&lt;br&gt;&lt;br&gt;OK. &amp;nbsp;I believe bw stands for band width, as in which bands are required 
&lt;br&gt;with respect to the storage scheme. &amp;nbsp;My new packed_offset resize now 
&lt;br&gt;looks like the following:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;inline void resize(size_type m, size_type n)
&lt;br&gt;&amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dim = dim_type(m, n);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;bw = band_type(0, n);
&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;since my symmetric matrix is full. &amp;nbsp;I also had to modify the storage 
&lt;br&gt;allocation call in dense2d::resize from
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;rep_ptr newdata = new reptype(Offset::size(m, n, 0, 0));
&lt;br&gt;&lt;br&gt;to
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;rep_ptr newdata = new reptype(Offset::size(m, n, 0, n));
&lt;br&gt;&lt;br&gt;to generate the proper amount of storage for a full symmetric matrix. &amp;nbsp;A 
&lt;br&gt;general dense matrix using rect_offset doesn't use the last two 
&lt;br&gt;parameters, so it still works.
&lt;br&gt;&lt;br&gt;Unfortunately, I couldn't figure out how to copy the previously existing 
&lt;br&gt;existing matrix elements to the new storage. &amp;nbsp;The (size_type, size_type) 
&lt;br&gt;operator doesn't work properly at this level of scope. &amp;nbsp;If anyone can 
&lt;br&gt;help me with that it would be greatly appreciated.
&lt;br&gt;&lt;br&gt;I also noticed that the following code to zero out any extra matrix 
&lt;br&gt;elements if the new matrix is bigger
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;for (; i &amp;lt; m; ++i)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (; j &amp;lt; n; ++j)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(*newdata)[i * n + j] = T();
&lt;br&gt;&lt;br&gt;was incorrect and seemed to be unneeded because the allocation code 
&lt;br&gt;seems to zero out the data.
&lt;br&gt;&lt;br&gt;If anyone is interested in a patch to the dense2d.h file that will 
&lt;br&gt;resize both general and symmetric matrices, but will not copy old 
&lt;br&gt;elements, I believe I have one.
&lt;br&gt;&lt;br&gt;If anyone can help me figure out how to copy the old elements, I would 
&lt;br&gt;greatly appreciate it.
&lt;br&gt;&lt;br&gt;Pete
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Symmetric-Matrix-Resize-tp13477419p13581057.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13492476</id>
	<title>Re: MTL: Test fails in MTL4 alpha 1</title>
	<published>2007-10-30T10:37:35Z</published>
	<updated>2007-10-30T10:37:35Z</updated>
	<author>
		<name>Peter Gottschling-2</name>
	</author>
	<content type="html">Hi Jari,
&lt;br&gt;&lt;br&gt;You are right, my hand-written CCS matrix was wrong. &amp;nbsp;Which shows how 
&lt;br&gt;useful the inserter is. ;-) &amp;nbsp;The version on the web page is fixed.
&lt;br&gt;&lt;br&gt;I also threw out the test for Fortran-indexed matrices since I stopped 
&lt;br&gt;supporting them some day. 
&lt;br&gt;&lt;br&gt;Thank you for helping us to make the lib bug-free.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&lt;br&gt;Peter
&lt;br&gt;&lt;br&gt;Jari Häkkinen schrieb:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; One of the tests fails on my mac. The problem seems to be related to the 
&lt;br&gt;&amp;gt; function
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; template &amp;lt;typename Matrix&amp;gt;
&lt;br&gt;&amp;gt; void raw_copy_test(Matrix&amp; matrix, col_major)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; in compressed2D_inserter.cpp. The index array created in the problematic 
&lt;br&gt;&amp;gt; function looks strange. I get the output attached below.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I am using:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; boost 1.34.1
&lt;br&gt;&amp;gt; i686-apple-darwin8-g++-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5363)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The other tests works fine.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Jari
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; # scons -D . check=1 with-blas=1
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; scons: Entering directory `/projects/osd/mtl4'
&lt;br&gt;&amp;gt; scons: Reading SConscript files ...
&lt;br&gt;&amp;gt; -DMTL_ASSERT_FOR_THROW
&lt;br&gt;&amp;gt; scons: done reading SConscript files.
&lt;br&gt;&amp;gt; scons: Building targets ...
&lt;br&gt;&amp;gt; g++ -o libs/numeric/mtl/test/compressed2D_inserter.o -c -Wno-long-double 
&lt;br&gt;&amp;gt; -g -DMTL_ASSERT_FOR_THROW -DNDEBUG -Wno-long-double -I. 
&lt;br&gt;&amp;gt; libs/numeric/mtl/test/compressed2D_inserter.cpp
&lt;br&gt;&amp;gt; g++ -o libs/numeric/mtl/test/compressed2D_inserter 
&lt;br&gt;&amp;gt; libs/numeric/mtl/test/compressed2D_inserter.o
&lt;br&gt;&amp;gt; /projects/osd/mtl4/libs/numeric/mtl/test/compressed2D_inserter
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 8 &amp;nbsp; 0 &amp;nbsp; 9]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp;11 &amp;nbsp;12 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;17 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp;31 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0 &amp;nbsp; 9]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp;11 &amp;nbsp;37 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;&amp;gt; [ 35 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;17 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp;27 &amp;nbsp;31 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp;27 &amp;nbsp; 7 &amp;nbsp;22 &amp;nbsp;26]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;28 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0 &amp;nbsp; 9]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp;54 &amp;nbsp;11 &amp;nbsp;37 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;&amp;gt; [ 35 &amp;nbsp;23 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;43 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; matrix[2][2] = 28
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 2]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 8 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp;11 &amp;nbsp;12]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp;31 &amp;nbsp; 2]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp;11 &amp;nbsp;37]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;35 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 1 &amp;nbsp;27 &amp;nbsp;31 &amp;nbsp; 2]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 4 &amp;nbsp; 5 &amp;nbsp;27 &amp;nbsp; 7 &amp;nbsp;22]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;28 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;10 &amp;nbsp;54 &amp;nbsp;11 &amp;nbsp;37]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;35 &amp;nbsp;23 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; matrix[2][2] = 28
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 8 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;12 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;17 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp;31 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;37 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;&amp;gt; [ 35 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;17 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp;27 &amp;nbsp;31 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp;27 &amp;nbsp; 7 &amp;nbsp;22 &amp;nbsp;26]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;28 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp;54 &amp;nbsp; 0 &amp;nbsp;37 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;&amp;gt; [ 35 &amp;nbsp;23 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&amp;gt; [ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;43 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; matrix[2][2] = 28
&lt;br&gt;&amp;gt; /usr/local/include/boost/test/minimal.hpp(122): exception &amp;quot;memory access 
&lt;br&gt;&amp;gt; violation&amp;quot; caught in function: 'int main(int, char**)'
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; **** Testing aborted.
&lt;br&gt;&amp;gt; **** 1 error detected
&lt;br&gt;&amp;gt; [scons: *** [libs/numeric/mtl/test/compressed2D_inserter] Error 201
&lt;br&gt;&amp;gt; scons: building terminated because of errors.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Dr. rer. nat. Peter Gottschling
&lt;br&gt;&lt;br&gt;Dresdner Grundwasserforschungszentrum e.V. (DGFZ)
&lt;br&gt;Meraner Str. 10
&lt;br&gt;01217 Dresden
&lt;br&gt;Germany
&lt;br&gt;.....................................................................
&lt;br&gt;phone: &amp;nbsp;+49 (0) 351 / 4050651
&lt;br&gt;fax: &amp;nbsp; &amp;nbsp;+49 (0) 351 / 4050679
&lt;br&gt;web: &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.dgfz.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.dgfz.de&lt;/a&gt;&lt;br&gt;.....................................................................
&lt;br&gt;VR 210 &amp;nbsp; &amp;nbsp;Ust.-Id DE140134319
&lt;br&gt;GF: Dr. F. Börner
&lt;br&gt;.....................................................................
&lt;br&gt;&lt;br&gt;&lt;br&gt;Veranstaltungshinweise:
&lt;br&gt;&lt;br&gt;Weiterbildung im DGFZ e.V.
&lt;br&gt;&lt;br&gt;14.-16.11.2007 Modellierung mit PCGEOFIM
&lt;br&gt;&lt;br&gt;Programm und Termine:
&lt;br&gt;&lt;a href=&quot;http://www.dgfz.de/aktuell&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.dgfz.de/aktuell&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;06./07.11.2007
&lt;br&gt;&lt;br&gt;XVIII. Sächsisches Altlastenkolloquium
&lt;br&gt;und regionaler Workshop des BMBF-Förderschwerpunktes KORA
&lt;br&gt;&lt;br&gt;&amp;quot;Natürliche Schadstoffminderungsprozesse bei der Altlastenbearbeitung&amp;quot;
&lt;br&gt;&lt;br&gt;Programm und Anmeldung:
&lt;br&gt;&lt;a href=&quot;http://www.dgfz.de/index_altlastenkolloquium&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.dgfz.de/index_altlastenkolloquium&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Test-fails-in-MTL4-alpha-1-tp13434803p13492476.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13492150</id>
	<title>Re: MTL: Symmetric Matrix Resize</title>
	<published>2007-10-30T10:23:16Z</published>
	<updated>2007-10-30T10:23:16Z</updated>
	<author>
		<name>Peter J. Stieber</name>
	</author>
	<content type="html">Peter J. Stieber wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; MTL version: mtl-2.1.2-23.tenative
&lt;br&gt;&amp;gt; Compiler: g++ (GCC) 4.1.2 20070925 (Red Hat 4.1.2-27)
&lt;br&gt;&amp;gt; Platform: Fedora 7 x86_64
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm trying to resize a symmetric matrix using a simple test jig called 
&lt;br&gt;&amp;gt; SymmetricPackedResize.cpp ...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; #include &amp;lt;mtl/mtl.h&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; int main()
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;typedef mtl::matrix&amp;lt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;double,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;mtl::symmetric&amp;lt;mtl::lower&amp;gt;,
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;mtl::packed&amp;lt;&amp;gt; &amp;gt;::type TDSymmetricMatrix;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;TDSymmetricMatrix Symmetric(6, 6);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Symmetric.resize(16, 16);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm compiling with
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; g++ -IPathToMtlHeaders SymmetricPackedResize.cpp
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The first set of errors I receive follow. &amp;nbsp;I've tried to separate them 
&lt;br&gt;&amp;gt; onto different lines for readability:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; mtl-2.1.2-23/mtl/dense2D.h: In member function ‘void mtl::dense2D&amp;lt;T, 
&lt;br&gt;&amp;gt; OffsetGen, MM, NN&amp;gt;::resize(typename mtl::generic_dense2D&amp;lt;std::vector&amp;lt;T, 
&lt;br&gt;&amp;gt; std::allocator&amp;lt;_CharT&amp;gt; &amp;gt;, mtl::refcnt_ptr&amp;lt;std::vector&amp;lt;T, 
&lt;br&gt;&amp;gt; std::allocator&amp;lt;_CharT&amp;gt; &amp;gt; &amp;gt;, OffsetGen, MM, NN&amp;gt;::size_type, typename 
&lt;br&gt;&amp;gt; mtl::generic_dense2D&amp;lt;std::vector&amp;lt;T, std::allocator&amp;lt;_CharT&amp;gt; &amp;gt;, 
&lt;br&gt;&amp;gt; mtl::refcnt_ptr&amp;lt;std::vector&amp;lt;T, std::allocator&amp;lt;_CharT&amp;gt; &amp;gt; &amp;gt;, OffsetGen, 
&lt;br&gt;&amp;gt; MM, NN&amp;gt;::size_type) [with T = double, OffsetGen = 
&lt;br&gt;&amp;gt; mtl::gen_packed_offset&amp;lt;0, 0&amp;gt;, int MM = 0, int NN = 0]’:
&lt;br&gt;&amp;gt; mtl-2.1.2-23/mtl/matrix_implementation.h:616: &amp;nbsp; instantiated from ‘void 
&lt;br&gt;&amp;gt; mtl::row_matrix&amp;lt;TwoDGen, IndexerGen&amp;gt;::resize(typename 
&lt;br&gt;&amp;gt; mtl::matrix_implementation&amp;lt;TwoDGen, IndexerGen&amp;gt;::size_type, typename 
&lt;br&gt;&amp;gt; mtl::matrix_implementation&amp;lt;TwoDGen, IndexerGen&amp;gt;::size_type) [with 
&lt;br&gt;&amp;gt; TwoDGen = mtl::gen_dense2D&amp;lt;double, mtl::gen_packed_offset&amp;lt;0, 0&amp;gt;, 0, 0&amp;gt;, 
&lt;br&gt;&amp;gt; IndexerGen = mtl::gen_banded_indexer&amp;lt;mtl::row_orien, 0, 0, long unsigned 
&lt;br&gt;&amp;gt; int&amp;gt;]’
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; SymmetricPackedResize.cpp:12: &amp;nbsp; instantiated from here
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; mtl-2.1.2-23/mtl/dense2D.h:548: error: ‘mtl::dimension&amp;lt;long unsigned 
&lt;br&gt;&amp;gt; int, 0, 0&amp;gt; mtl::packed_offset&amp;lt;long unsigned int, 0, 0&amp;gt;::dim’ is private
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; mtl-2.1.2-23/mtl/dense2D.h:1235: error: within this context
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; mtl-2.1.2-23/mtl/dense2D.h:1236: error: ‘class mtl::packed_offset&amp;lt;long 
&lt;br&gt;&amp;gt; unsigned int, 0, 0&amp;gt;’ has no member named ‘ld’
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So the packed_offset class has the dim data member declared private. 
&lt;br&gt;&amp;gt; Looking at the rect_offset class for which resize actually works, there 
&lt;br&gt;&amp;gt; is a suspicious commenting out for the private: scope qualifier ahead of 
&lt;br&gt;&amp;gt; the data members.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I could do the same in packed_offset, but this would still leave me with 
&lt;br&gt;&amp;gt; the &amp;quot;packed_offset&amp;lt;...&amp;gt; has no member named ld. &amp;nbsp;It looks like resize 
&lt;br&gt;&amp;gt; will only work for rect_offset storage.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Does anyone see a workaround for this?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Peter, does version 4 deal with this?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; How do I become an alpha tester of version 4?
&lt;/div&gt;&lt;br&gt;Instead of explicitly setting the values of the offset class in the 
&lt;br&gt;resize function, I changed the code to call a new resize member function 
&lt;br&gt;of the offset class. &amp;nbsp;The following code implements resize for the 
&lt;br&gt;rect_offset class by performing the same functionality that was in the 
&lt;br&gt;dense2D class resize function.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;inline void resize(size_type m, size_type n)
&lt;br&gt;&amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dim = dim_type(m, n);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ld = n;
&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Now I need to add a resize function to the packed_offset class. &amp;nbsp;Here's 
&lt;br&gt;my first cut...
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;inline void resize(size_type m, size_type n)
&lt;br&gt;&amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;dim = dim_type(m, n);
&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;but the packed_offset class has an addition data member called bw. &amp;nbsp;Can 
&lt;br&gt;anyone explain the purpose of this data member so I can figure out if I 
&lt;br&gt;need to alter it in packed_offset::resize?
&lt;br&gt;&lt;br&gt;Pete
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Symmetric-Matrix-Resize-tp13477419p13492150.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13491824</id>
	<title>MTL: MTL 4 released</title>
	<published>2007-10-30T10:07:15Z</published>
	<updated>2007-10-30T10:07:15Z</updated>
	<author>
		<name>Peter Gottschling</name>
	</author>
	<content type="html">Hi everybody on the two mailing lists,
&lt;br&gt;&lt;br&gt;We are happy announce that we now release the Alpha version of MTL 4. &amp;nbsp;I 
&lt;br&gt;fixed the few bugs that I heard of in the last weeks. &amp;nbsp;The latest 
&lt;br&gt;version can be downloaded at 
&lt;br&gt;&lt;a href=&quot;http://www.osl.iu.edu/research/mtl/mtl4/download.php3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/research/mtl/mtl4/download.php3&lt;/a&gt;&lt;br&gt;&lt;br&gt;I like to thank for all the helpful and encouraging comments I received.
&lt;br&gt;&lt;br&gt;To separate concerns a little I want to ask sending mails concerning MTL 
&lt;br&gt;4 to &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=13491824&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mtl4@...&lt;/a&gt;. &amp;nbsp;You can subscribe at:
&lt;br&gt;&lt;a href=&quot;http://www.osl.iu.edu/mailman/listinfo.cgi/mtl4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/mailman/listinfo.cgi/mtl4&lt;/a&gt;&lt;br&gt;The mailing list was fairly silent in the last years but it is now a 
&lt;br&gt;good moment to revive it.
&lt;br&gt;&lt;br&gt;Best,
&lt;br&gt;Peter
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-MTL-4-released-tp13491824p13491824.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13477419</id>
	<title>MTL: Symmetric Matrix Resize</title>
	<published>2007-10-29T15:26:08Z</published>
	<updated>2007-10-29T15:26:08Z</updated>
	<author>
		<name>Peter J. Stieber</name>
	</author>
	<content type="html">MTL version: mtl-2.1.2-23.tenative
&lt;br&gt;Compiler: g++ (GCC) 4.1.2 20070925 (Red Hat 4.1.2-27)
&lt;br&gt;Platform: Fedora 7 x86_64
&lt;br&gt;&lt;br&gt;I'm trying to resize a symmetric matrix using a simple test jig called 
&lt;br&gt;SymmetricPackedResize.cpp ...
&lt;br&gt;&lt;br&gt;#include &amp;lt;mtl/mtl.h&amp;gt;
&lt;br&gt;&lt;br&gt;int main()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp;typedef mtl::matrix&amp;lt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;double,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mtl::symmetric&amp;lt;mtl::lower&amp;gt;,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mtl::packed&amp;lt;&amp;gt; &amp;gt;::type TDSymmetricMatrix;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;TDSymmetricMatrix Symmetric(6, 6);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Symmetric.resize(16, 16);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;I'm compiling with
&lt;br&gt;&lt;br&gt;g++ -IPathToMtlHeaders SymmetricPackedResize.cpp
&lt;br&gt;&lt;br&gt;The first set of errors I receive follow. &amp;nbsp;I've tried to separate them 
&lt;br&gt;onto different lines for readability:
&lt;br&gt;&lt;br&gt;mtl-2.1.2-23/mtl/dense2D.h: In member function ‘void mtl::dense2D&amp;lt;T, 
&lt;br&gt;OffsetGen, MM, NN&amp;gt;::resize(typename mtl::generic_dense2D&amp;lt;std::vector&amp;lt;T, 
&lt;br&gt;std::allocator&amp;lt;_CharT&amp;gt; &amp;gt;, mtl::refcnt_ptr&amp;lt;std::vector&amp;lt;T, 
&lt;br&gt;std::allocator&amp;lt;_CharT&amp;gt; &amp;gt; &amp;gt;, OffsetGen, MM, NN&amp;gt;::size_type, typename 
&lt;br&gt;mtl::generic_dense2D&amp;lt;std::vector&amp;lt;T, std::allocator&amp;lt;_CharT&amp;gt; &amp;gt;, 
&lt;br&gt;mtl::refcnt_ptr&amp;lt;std::vector&amp;lt;T, std::allocator&amp;lt;_CharT&amp;gt; &amp;gt; &amp;gt;, OffsetGen, 
&lt;br&gt;MM, NN&amp;gt;::size_type) [with T = double, OffsetGen = 
&lt;br&gt;mtl::gen_packed_offset&amp;lt;0, 0&amp;gt;, int MM = 0, int NN = 0]’:
&lt;br&gt;mtl-2.1.2-23/mtl/matrix_implementation.h:616: &amp;nbsp; instantiated from ‘void 
&lt;br&gt;mtl::row_matrix&amp;lt;TwoDGen, IndexerGen&amp;gt;::resize(typename 
&lt;br&gt;mtl::matrix_implementation&amp;lt;TwoDGen, IndexerGen&amp;gt;::size_type, typename 
&lt;br&gt;mtl::matrix_implementation&amp;lt;TwoDGen, IndexerGen&amp;gt;::size_type) [with 
&lt;br&gt;TwoDGen = mtl::gen_dense2D&amp;lt;double, mtl::gen_packed_offset&amp;lt;0, 0&amp;gt;, 0, 0&amp;gt;, 
&lt;br&gt;IndexerGen = mtl::gen_banded_indexer&amp;lt;mtl::row_orien, 0, 0, long unsigned 
&lt;br&gt;int&amp;gt;]’
&lt;br&gt;&lt;br&gt;SymmetricPackedResize.cpp:12: &amp;nbsp; instantiated from here
&lt;br&gt;&lt;br&gt;mtl-2.1.2-23/mtl/dense2D.h:548: error: ‘mtl::dimension&amp;lt;long unsigned 
&lt;br&gt;int, 0, 0&amp;gt; mtl::packed_offset&amp;lt;long unsigned int, 0, 0&amp;gt;::dim’ is private
&lt;br&gt;&lt;br&gt;mtl-2.1.2-23/mtl/dense2D.h:1235: error: within this context
&lt;br&gt;&lt;br&gt;mtl-2.1.2-23/mtl/dense2D.h:1236: error: ‘class mtl::packed_offset&amp;lt;long 
&lt;br&gt;unsigned int, 0, 0&amp;gt;’ has no member named ‘ld’
&lt;br&gt;&lt;br&gt;So the packed_offset class has the dim data member declared private. 
&lt;br&gt;Looking at the rect_offset class for which resize actually works, there 
&lt;br&gt;is a suspicious commenting out for the private: scope qualifier ahead of 
&lt;br&gt;the data members.
&lt;br&gt;&lt;br&gt;I could do the same in packed_offset, but this would still leave me with 
&lt;br&gt;the &amp;quot;packed_offset&amp;lt;...&amp;gt; has no member named ld. &amp;nbsp;It looks like resize 
&lt;br&gt;will only work for rect_offset storage.
&lt;br&gt;&lt;br&gt;Does anyone see a workaround for this?
&lt;br&gt;&lt;br&gt;Peter, does version 4 deal with this?
&lt;br&gt;&lt;br&gt;How do I become an alpha tester of version 4?
&lt;br&gt;&lt;br&gt;Pete
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Symmetric-Matrix-Resize-tp13477419p13477419.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-13434803</id>
	<title>MTL: Test fails in MTL4 alpha 1</title>
	<published>2007-10-26T14:21:29Z</published>
	<updated>2007-10-26T14:21:29Z</updated>
	<author>
		<name>Jari Häkkinen-2</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;One of the tests fails on my mac. The problem seems to be related to the 
&lt;br&gt;function
&lt;br&gt;&lt;br&gt;template &amp;lt;typename Matrix&amp;gt;
&lt;br&gt;void raw_copy_test(Matrix&amp; matrix, col_major)
&lt;br&gt;&lt;br&gt;in compressed2D_inserter.cpp. The index array created in the problematic 
&lt;br&gt;function looks strange. I get the output attached below.
&lt;br&gt;&lt;br&gt;I am using:
&lt;br&gt;&lt;br&gt;boost 1.34.1
&lt;br&gt;i686-apple-darwin8-g++-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5363)
&lt;br&gt;&lt;br&gt;&lt;br&gt;The other tests works fine.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&lt;br&gt;Jari
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;# scons -D . check=1 with-blas=1
&lt;br&gt;&lt;br&gt;scons: Entering directory `/projects/osd/mtl4'
&lt;br&gt;scons: Reading SConscript files ...
&lt;br&gt;-DMTL_ASSERT_FOR_THROW
&lt;br&gt;scons: done reading SConscript files.
&lt;br&gt;scons: Building targets ...
&lt;br&gt;g++ -o libs/numeric/mtl/test/compressed2D_inserter.o -c -Wno-long-double 
&lt;br&gt;-g -DMTL_ASSERT_FOR_THROW -DNDEBUG -Wno-long-double -I. 
&lt;br&gt;libs/numeric/mtl/test/compressed2D_inserter.cpp
&lt;br&gt;g++ -o libs/numeric/mtl/test/compressed2D_inserter 
&lt;br&gt;libs/numeric/mtl/test/compressed2D_inserter.o
&lt;br&gt;/projects/osd/mtl4/libs/numeric/mtl/test/compressed2D_inserter
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 8 &amp;nbsp; 0 &amp;nbsp; 9]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp;11 &amp;nbsp;12 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;17 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&lt;br&gt;&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp;31 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0 &amp;nbsp; 9]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp;11 &amp;nbsp;37 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;[ 35 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;17 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&lt;br&gt;&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp;27 &amp;nbsp;31 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp;27 &amp;nbsp; 7 &amp;nbsp;22 &amp;nbsp;26]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;28 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0 &amp;nbsp; 9]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp;54 &amp;nbsp;11 &amp;nbsp;37 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;[ 35 &amp;nbsp;23 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;43 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;matrix[2][2] = 28
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 2]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 8 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp;11 &amp;nbsp;12]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&lt;br&gt;&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp;31 &amp;nbsp; 2]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp;11 &amp;nbsp;37]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;35 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&lt;br&gt;&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 1 &amp;nbsp;27 &amp;nbsp;31 &amp;nbsp; 2]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 4 &amp;nbsp; 5 &amp;nbsp;27 &amp;nbsp; 7 &amp;nbsp;22]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;28 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;10 &amp;nbsp;54 &amp;nbsp;11 &amp;nbsp;37]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp;14 &amp;nbsp;15]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;35 &amp;nbsp;23 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;matrix[2][2] = 28
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 8 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;12 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;17 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&lt;br&gt;&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp; 0 &amp;nbsp;31 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp; 6 &amp;nbsp; 7 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;37 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;[ 35 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;17 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&lt;br&gt;&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 1 &amp;nbsp;27 &amp;nbsp;31 &amp;nbsp; 2 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 3 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;4 &amp;nbsp; 5 &amp;nbsp;27 &amp;nbsp; 7 &amp;nbsp;22 &amp;nbsp;26]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;28 &amp;nbsp; 0 &amp;nbsp;33 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;10 &amp;nbsp;54 &amp;nbsp; 0 &amp;nbsp;37 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp;13 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;15 &amp;nbsp;16]
&lt;br&gt;[ 35 &amp;nbsp;23 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0]
&lt;br&gt;[ &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp;43 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;18]
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;matrix[2][2] = 28
&lt;br&gt;/usr/local/include/boost/test/minimal.hpp(122): exception &amp;quot;memory access 
&lt;br&gt;violation&amp;quot; caught in function: 'int main(int, char**)'
&lt;br&gt;&lt;br&gt;**** Testing aborted.
&lt;br&gt;**** 1 error detected
&lt;br&gt;[scons: *** [libs/numeric/mtl/test/compressed2D_inserter] Error 201
&lt;br&gt;scons: building terminated because of errors.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;This list is archived at &lt;a href=&quot;http://www.osl.iu.edu/MailArchives/mtl-devel/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.osl.iu.edu/MailArchives/mtl-devel/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MTL%3A-Test-fails-in-MTL4-alpha-1-tp13434803p13434803.html" />
</entry>

</feed>
