Thanks Alexei<br><br>i complicated myself with the archive_node  because i didnt know i could do this<br>ex_to&lt;matrix&gt;<br><br>best regards,<br>Cristobal<br>
<br><br><span style="color: black;"><div dir="ltr"><div><a href="http://www.youtube.com/neoideo">Cristobal</a></div></div></span><br><br><div class="gmail_quote">On Wed, Jul 7, 2010 at 1:41 AM, Alexei Sheplyakov <span dir="ltr">&lt;<a href="mailto:alexei.sheplyakov@gmail.com">alexei.sheplyakov@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hello,<br>
<div class="im"><br>
On Tue, Jul 06, 2010 at 09:05:06PM -0400, Cristobal Navarro wrote:<br>
&gt;<br>
&gt; i am experiencing a little trouble when reading my stored matrix.<br>
&gt; when i write and read the same matrix i stored, it works.<br>
&gt; but if i only run the program to read the matrix file, i get this error.<br>
&gt;<br>
&gt; terminate called after throwing an instance of &#39;std::runtime_error&#39;<br>
&gt;   what():  unknown matrix dimensions in archive<br>
&gt;<br>
<br>
</div>The example below works for me just fine.<br>
<br>
#include &lt;string&gt;<br>
#include &lt;fstream&gt;<br>
#include &lt;stdexcept&gt;<br>
<div class="im">#include &lt;ginac/ginac.h&gt;<br>
using namespace std;<br>
using namespace GiNaC;<br>
<br>
</div>static void read(const string&amp; filename, matrix&amp; qvCol, matrix&amp; qvMat, const lst&amp; symlst)<br>
{<br>
        archive ar;<br>
        ifstream f(filename.c_str());<br>
        if (!f.is_open())<br>
                throw std::runtime_error(string(&quot;Failed to open input file: &quot;) + filename);<br>
        f &gt;&gt; ar;<br>
        f.close();<br>
        ex qvColEx = ar.unarchive_ex(symlst, &quot;qvCol&quot;);<br>
        ex qvMatEx = ar.unarchive_ex(symlst, &quot;qvMat&quot;);<br>
        if (!(is_a&lt;matrix&gt;(qvColEx) &amp;&amp; is_a&lt;matrix&gt;(qvMatEx)))<br>
                throw std::runtime_error(&quot;expected a matrix&quot;);<br>
        qvCol = ex_to&lt;matrix&gt;(qvColEx);<br>
        qvMat = ex_to&lt;matrix&gt;(qvMatEx);<br>
}<br>
<br>
static void write(const string&amp; filename, const matrix&amp; qvCol, const matrix&amp; qvMat)<br>
{<br>
        archive ar;<br>
        ar.archive_ex(qvCol, &quot;qvCol&quot;);<br>
        ar.archive_ex(qvMat, &quot;qvMat&quot;);<br>
        ofstream f(filename.c_str());<br>
        if (!f.is_open())<br>
                throw std::runtime_error(string(&quot;Failed to open output file: &quot;) + filename);<br>
        f &lt;&lt; ar &lt;&lt; flush;<br>
        f.close();<br>
<div class="im">}<br>
<br>
int main(int argc, char** argv)<br>
{<br>
</div>        const symbol q(&quot;q&quot;), v(&quot;v&quot;);<br>
        lst symlst;<br>
        symlst = q, v;<br>
<br>
        matrix qvMat(2, 2), qvCol(2, 1);<br>
        qvCol = q*v, 2*q*v;<br>
        qvMat = q*v,    2*q*v,<br>
                3*q*v,  4*q*v;<br>
<div class="im">        cout &lt;&lt; endl &lt;&lt; &quot;m1: &quot; &lt;&lt; endl &lt;&lt; qvCol &lt;&lt; endl;<br>
        cout &lt;&lt; &quot;m2: &quot; &lt;&lt; endl &lt;&lt; qvMat &lt;&lt; endl &lt;&lt; endl;<br>
<br>
</div>        write(&quot;example.gar&quot;, qvCol, qvMat);<br>
        matrix rm1, rm2;<br>
        read(&quot;example.gar&quot;, rm1, rm2, symlst);<br>
<div class="im">        cout &lt;&lt; endl &lt;&lt; &quot;rm1: &quot; &lt;&lt; endl &lt;&lt; rm1 &lt;&lt; endl;<br>
        cout &lt;&lt; &quot;rm2: &quot; &lt;&lt; endl &lt;&lt; rm2 &lt;&lt; endl &lt;&lt; endl;<br>
        return 0;<br>
}<br>
<br>
</div><div class="im">&gt; This is a one-file example source code i made for you guys so you can test,<br>
&gt; its based on the same problem i have on my bigger code.<br>
&gt; try running it as it is, then comment the &quot;write&quot; method and run it again so<br>
&gt; it only reads the matrices, youll get the error eventually. but you will<br>
&gt; never get it if you write and read, its weird.<br>
<br>
</div>[skipped the code]<br>
<div class="im"><br>
&gt; how can this be solved?<br>
<br>
</div>First of all, please (re)read the manual, in particular, the (sub)section<br>
called `Archiving&#39;. Secondly, stop abusing read_archive() and archive_node.<br>
<br>
Hope this helps,<br>
        Alexei<br>
<br>
_______________________________________________<br>
GiNaC-list mailing list<br>
<a href="mailto:GiNaC-list@ginac.de">GiNaC-list@ginac.de</a><br>
<a href="https://www.cebix.net/mailman/listinfo/ginac-list" target="_blank">https://www.cebix.net/mailman/listinfo/ginac-list</a><br>
</blockquote></div><br>