I've used valgrind before, sparingly, but never purify. Do you guys have experience with both? Comments on one versus the other?<br>
<br>
TIA,<br>
Leo.<br><br><div><span class="gmail_quote">On 5/23/06, <b class="gmail_sendername">John J Forrest</b> &lt;<a href="mailto:jjforre@us.ibm.com">jjforre@us.ibm.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>
<br><font face="sans-serif" size="2">That one is OK. &nbsp;There used to
be a define of ZEROFAULT if -g but it seems to have vanished.</font>
<br>
<br><font face="sans-serif" size="2">Just define ZEROFAULT and Purify should
be happy.</font>
<br>
<br><font face="sans-serif" size="2">John</font>
<br>
<br>
<br>
<table width="100%">
<tbody><tr valign="top">
<td width="40%"><font face="sans-serif" size="1"><b>&quot;Matthew Galati&quot;
&lt;<a href="mailto:Matthew.Galati@sas.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Matthew.Galati@sas.com</a>&gt;</b> </font>
<br><font face="sans-serif" size="1">Sent by: <a href="mailto:coin-discuss-bounces@list.coin-or.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">coin-discuss-bounces@list.coin-or.org</a></font>

<p><font face="sans-serif" size="1">05/24/2006 03:32 AM</font>
<table border="1">
<tbody><tr valign="top">
<td bgcolor="white">
<div align="center"><font face="sans-serif" size="1">Please respond to<br>
Discussions about open source software for Operations Research &nbsp; &nbsp;
&nbsp; &nbsp;&lt;<a href="mailto:coin-discuss@list.coin-or.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">coin-discuss@list.coin-or.org</a>&gt;</font></div></td></tr></tbody></table>
<br>
</p></td><td width="59%">
<table width="100%">
<tbody><tr valign="top">
<td>
<div align="right"><font face="sans-serif" size="1">To</font></div>
</td><td><font face="sans-serif" size="1">&quot;Discussions about open source
software for Operations Research&quot; &lt;<a href="mailto:coin-discuss@list.coin-or.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">coin-discuss@list.coin-or.org</a>&gt;</font>
</td></tr><tr valign="top">
<td>
<div align="right"><font face="sans-serif" size="1">cc</font></div>
</td><td>
              <br>
</td></tr><tr valign="top">
<td>
<div align="right"><font face="sans-serif" size="1">Subject</font></div>
</td><td><font face="sans-serif" size="1">[Coin-discuss] Purify UMR CoinFactorization::pivotOneOtherRow</font></td></tr></tbody></table>
<br>
<table>
<tbody><tr valign="top">
<td>
              <br>
</td><td><br>
</td></tr></tbody></table>
<br></td></tr></tbody></table></div><div><span class="e" id="q_10b6521763e27a5e_1">
<br>
<br>
<br><tt><font size="2">I recall CLP ignoring some UMR's in past postings.
This one comes up a lot - is it safe?<br>
<br>
Matt<br>
<br>
<br>
<br>
[I] Starting Purify'd C:\cygwin\home\magala\sasopt\cbuild\exemilpNET03\exemilp\Debug\exemilp.exe
at 05/23/2006 21:27:41<br>
[I] Starting main<br>
[W] UMR: Uninitialized memory read in CoinFactorization::pivotOneOtherRow(int,int)
{47 occurrences}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Reading 4 bytes from 0x038fda50 (4 bytes at
0x038fda50 uninitialized)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Address 0x038fda50 is 11000 bytes into a 234016
byte block at 0x038faf58<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Address 0x038fda50 points to a C++ new block
in heap 0x00390000<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Thread ID: 0xb4c<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Error location<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CoinFactorization::pivotOneOtherRow(int,int)
[c:\cygwin\home\magala\coin\coin\coinfactorization1.cpp:1949]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;if ( i + 1 &lt; endColumn ) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#endif<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp;nextIRow = indexRowU_[i + 1];<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; nextValue = elementU_[i + 1];<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#ifdef ZEROFAULT<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#endif<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CoinFactorization::factorSparse(void)
[c:\cygwin\home\magala\coin\coin\coinfactorization2.cpp:322]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp;} else {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; if ( !pivotOneOtherRow ( pivotRow, pivotColumn ) )
{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;status = -99;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count=biggerDimension_+1;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CoinFactorization::factor(void)
[c:\cygwin\home\magala\coin\coin\coinfactorization1.cpp:980]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CoinFactorization::factor
( &nbsp;)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//sparse<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; status_ = factorSparse
( &nbsp;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;switch (
status_ ) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case 0:
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//finished<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;totalElements_
= 0;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpFactorization::factorize(ClpSimplex
*,int,bool) [c:\cygwin\home\magala\coin\clp\clpfactorization.cpp:361]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;preProcess ( 2 );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;preProcess ( 3 ); // no row copy<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; factor (
&nbsp;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
(status_==-99) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;// get more memory<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;areaFactor(2.0*areaFactor());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplex::internalFactorize(int)
[c:\cygwin\home\magala\coin\clp\clpsimplex.cpp:1395]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;exit(0);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;k++;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; int status = factorization_-&gt;factorize(this,
solveType,valuesPass);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (status)
{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;handler_-&gt;message(CLP_SIMPLEX_BADFACTOR,messages_)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;&lt;&lt;status<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplexDual::statusOfProblemInDual(int&amp;,int,double
*,ClpDataSave&amp;,int) [c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:3292]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dualRowPivot_-&gt;saveWeights(this,1);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
(type) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;// is factorization okay?<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; &nbsp; if
(internalFactorize(1)) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
no - restore previous basis<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unflagVariables
= false;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;assert
(type==1);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplexDual::gutsOfDual(int,double
*&amp;,int,ClpDataSave&amp;) [c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:388]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
may factorize, checks if problem finished<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;statusOfProblemInDual(lastCleaned,factorType,saveDuals,data,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ifValuesPass);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
If values pass then do easy ones on first time<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
(ifValuesPass&amp;&amp;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;progress_-&gt;lastIterationNumber(0)&lt;0&amp;&amp;saveDuals)
{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplexDual::dual(int,int)
[c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:452]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int initialStatus=problemStatus_;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!returnCode)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; gutsOfDual(ifValuesPass,saveDuals,initialStatus,data);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (problemStatus_==10)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;startFinishOptions
|= 1;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;finishSolve(startFinishOptions);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplex::dual(int,int) [c:\cygwin\home\magala\coin\clp\clpsimplex.cpp:4408]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;As far as I can see this is perfectly safe.<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; int returnCode
= ((ClpSimplexDual *) this)-&gt;dual(ifValuesPass, startFinishOptions);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((specialOptions_&amp;2048)!=0&amp;&amp;problemStatus_==10&amp;&amp;!numberPrimalInfeasibilities_<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;&amp;&amp;sumDualInfeasibilities_&lt;1000.0*dualTolerance_&amp;&amp;perturbation_&gt;=100)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;problemStatus_=0;
// ignore<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OsiClpSolverInterface::resolve(void)
[c:\cygwin\home\magala\coin\osi\osiclp\osiclpsolverinterface.cpp:475]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;} else {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
if((specialOptions_&amp;1)==0) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; modelPtr_-&gt;dual(0,startFinishOptions);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;} else {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp;crunch();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Allocation location<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new(UINT) &nbsp; &nbsp; &nbsp;[f:\vs70builds\3077\vc\crtbld\crt\src\newop.cpp:10]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;&gt;=(UINT) &nbsp; &nbsp;
&nbsp;[f:\vs70builds\3077\vc\crtbld\crt\src\newaop.cpp:7]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CoinFactorization::getAreas(int,int,int,int)
[c:\cygwin\home\magala\coin\coin\coinfactorization1.cpp:616]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lengthAreaU_
= &nbsp;(CoinBigIndex) (areaFactor_*lengthAreaU_);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lengthAreaL_
= &nbsp;(CoinBigIndex) (areaFactor_*lengthAreaL_);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; elementU_ = new
double [ lengthAreaU_ ];<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;indexRowU_
= new int [ lengthAreaU_ ];<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;indexColumnU_
= new int [ lengthAreaU_ ];<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;elementL_
= new double [ lengthAreaL_ ];<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpFactorization::factorize(ClpSimplex
*,int,bool) [c:\cygwin\home\magala\coin\clp\clpfactorization.cpp:315]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#else<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;getAreas
( numberRows,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; numberRowBasic+numberColumnBasic, numberElements,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;2 * numberElements );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#endif<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//fill<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
Fill in counts so we can skip part of preProcess<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplex::internalFactorize(int)
[c:\cygwin\home\magala\coin\clp\clpsimplex.cpp:1395]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;exit(0);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;k++;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; int status = factorization_-&gt;factorize(this,
solveType,valuesPass);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (status)
{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;handler_-&gt;message(CLP_SIMPLEX_BADFACTOR,messages_)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;&lt;&lt;status<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplexDual::statusOfProblemInDual(int&amp;,int,double
*,ClpDataSave&amp;,int) [c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:3292]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dualRowPivot_-&gt;saveWeights(this,1);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
(type) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;// is factorization okay?<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; &nbsp; if
(internalFactorize(1)) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
no - restore previous basis<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;unflagVariables
= false;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;assert
(type==1);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplexDual::gutsOfDual(int,double
*&amp;,int,ClpDataSave&amp;) [c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:388]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
may factorize, checks if problem finished<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;statusOfProblemInDual(lastCleaned,factorType,saveDuals,data,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ifValuesPass);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//
If values pass then do easy ones on first time<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if
(ifValuesPass&amp;&amp;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;progress_-&gt;lastIterationNumber(0)&lt;0&amp;&amp;saveDuals)
{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplexDual::dual(int,int)
[c:\cygwin\home\magala\coin\clp\clpsimplexdual.cpp:452]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int initialStatus=problemStatus_;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!returnCode)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; gutsOfDual(ifValuesPass,saveDuals,initialStatus,data);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (problemStatus_==10)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;startFinishOptions
|= 1;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;finishSolve(startFinishOptions);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ClpSimplex::dual(int,int) [c:\cygwin\home\magala\coin\clp\clpsimplex.cpp:4408]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;As far as I can see this is perfectly safe.<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; int returnCode
= ((ClpSimplexDual *) this)-&gt;dual(ifValuesPass, startFinishOptions);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ((specialOptions_&amp;2048)!=0&amp;&amp;problemStatus_==10&amp;&amp;!numberPrimalInfeasibilities_<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;&amp;&amp;sumDualInfeasibilities_&lt;1000.0*dualTolerance_&amp;&amp;perturbation_&gt;=100)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;problemStatus_=0;
// ignore<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OsiClpSolverInterface::resolve(void)
[c:\cygwin\home\magala\coin\osi\osiclp\osiclpsolverinterface.cpp:475]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;} else {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
if((specialOptions_&amp;1)==0) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; modelPtr_-&gt;dual(0,startFinishOptions);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;} else {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp;crunch();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp;}<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
Coin-discuss mailing list<br>
<a href="mailto:Coin-discuss@list.coin-or.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Coin-discuss@list.coin-or.org</a><br>
<a href="http://list.coin-or.org/mailman/listinfo/coin-discuss" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://list.coin-or.org/mailman/listinfo/coin-discuss</a><br>
</font></tt>
<br>
</span></div><br>_______________________________________________<br>Coin-discuss mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Coin-discuss@list.coin-or.org">Coin-discuss@list.coin-or.org
</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://list.coin-or.org/mailman/listinfo/coin-discuss" target="_blank">http://list.coin-or.org/mailman/listinfo/coin-discuss</a><br><br><br></blockquote>
</div><br><br clear="all"><br>-- <br>========================================================================<br>Leonardo
B.
Lopes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:leo@sie.arizona.edu">leo@sie.arizona.edu</a><br>Assistant
Professor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(520)621-2342<br>SIE - University of Arizona&nbsp;&nbsp;<a href="http://www.sie.arizona.edu/faculty/leolopes">http://www.sie.arizona.edu/faculty/leolopes</a><br>