<br><font size=2 face="sans-serif">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 size=2 face="sans-serif">Just define ZEROFAULT and Purify should
be happy.</font>
<br>
<br><font size=2 face="sans-serif">John</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>&quot;Matthew Galati&quot;
&lt;Matthew.Galati@sas.com&gt;</b> </font>
<br><font size=1 face="sans-serif">Sent by: coin-discuss-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">05/24/2006 03:32 AM</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
Discussions about open source software for Operations Research &nbsp; &nbsp;
&nbsp; &nbsp;&lt;coin-discuss@list.coin-or.org&gt;</font></div></table>
<br>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">&quot;Discussions about open source
software for Operations Research&quot; &lt;coin-discuss@list.coin-or.org&gt;</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">[Coin-discuss] Purify UMR CoinFactorization::pivotOneOtherRow</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<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>
Coin-discuss@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
</font></tt>
<br>