<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">
<!--
p
        {margin-top:0;
        margin-bottom:0}
p
        {margin-top:0;
        margin-bottom:0}
-->
P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Hello,<br>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<div>
<div style="direction:ltr; font-family:Tahoma; color:#000000; font-size:10pt">
<div style="font-family:Times New Roman; color:#000000; font-size:16px">
<div>
<div style="direction:ltr; font-family:Tahoma; color:#000000; font-size:10pt"><br>
Using GiNaC, I recently encountered problems with the symbolic inversion of matrices,<br>
the inversion does not occur (or take more than 2h, which is the time I let the program run).<br>
<br>
I wrote a minimum code that exhibits the problem (the source code is in the zip file<br>
ginac_inversion_error_dorel.zip with a Makefile and my version compiled on <br>
Debian GNU/Linux 7.10 (wheezy)). The script simply build an symbolic matrix, with -1 in<br>
the diagonal and tries to invert it.<br>
<u>Usage</u>: ./ginac_testing < adjacency_list<br>
I ran my test script on a Debian GNU/Linux 7.10 (wheezy) machine with 16Gb of RAM<br>
and 8 i7-3770 processors, so the computation power and the memory shouldn't be the problem<br>
(and I checked, the memory is faaar from being full).<br>
<br>
The input file represents a directed graph.<br>
I joined several representative examples (in examples_ginac.zip):<br>
    - network_colonet.tab: does not work;<br>
    - lesscJun_network_colonet.tab: does not work;<br>
    - MEK-ERK_network_colonet.tab: does the inversion in 45s, it is only 'network_colonet.tab' with<br>
one entry removed (but which removal removes a cycle in the graph);<br>
    - plusdummy_MEK-ERK_network_colonet.tab: does the inversion in 52s, it's the previous network with<br>
a link that does not add any cycle;<br>
    - IKK-ERK_onlyEGF.tab: does the inversion in 830s/1400s !!, it is 'network_colonet.tab' with several entry removed, but with no<br>
cycles removed;<br>
    - onlyEGF.tab: does the inversion in 35~45s, it is the previous network with the IKK->ERK link remove,<br>
which removes a cycle;<br>
    - noTABK_EGF.tab: does the inversion in 43s, it is the 'onlyEGF' with extra-links removed<br>
<br>
Is this an expected behaviour ? Did I reach some limit of GiNaC on the size or complexity of the expression ?<br>
In my real program, I also need to evaluate the expressions in the inverted matrix, which also seems to take some time<br>
for the examples that are long to invert.<br>
I also tried the inversions in Mathematica, and those matrices are perfectly invertible (you can check by converting<br>
the input files to an adjacency matrix with the python script and executing the commands in 'script_mathematica').<br>
I find surprising that it takes so long, given that the matrices are not that big (and quite sparse)<br>
<br>
Thanks for any help regarding this problem,<br>
Mathurin Dorel<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>