<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.2873" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=608441017-24052006><FONT face=Arial 
color=#0000ff size=2>I've used both and don't have a strong&nbsp;preference 
either&nbsp;way.&nbsp;</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=608441017-24052006><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=608441017-24052006><FONT face=Arial 
color=#0000ff size=2>In the past, valgrind has a tendency to seg-fault randomly, 
and sometimes it gives back false positives - or, at least, I have searched high 
and low and cannot find the reason for a memcheck warning/error. Purify has 
never given me a false positive - I think its an excellent product. Quantify 
(part of the Rational Purify Plus suite) is also an excellent product for 
profiling. I have not found anything that comes even close to 
Quantify.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=608441017-24052006><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=608441017-24052006><FONT face=Arial 
color=#0000ff size=2>Purify includes a nice GUI with some interactive features, 
which also makes it slightly better than valgrind. Purify/Quantify also 
integrate nicely with Visual Studio. That being said, Purify/Quantify costs $$ 
and valgrind is free.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=608441017-24052006><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=608441017-24052006><FONT face=Arial 
color=#0000ff size=2>Matt</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=608441017-24052006><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV><BR>
<BLOCKQUOTE 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> coin-discuss-bounces@list.coin-or.org 
  [mailto:coin-discuss-bounces@list.coin-or.org] <B>On Behalf Of </B>Leo 
  Lopes<BR><B>Sent:</B> Wednesday, May 24, 2006 12:19 PM<BR><B>To:</B> 
  Discussions about open source software for Operations 
  Research<BR><B>Subject:</B> (offtopic: Purify and Valgrind) Re: [Coin-discuss] 
  Purify UMRCoinFactorization::pivotOneOtherRow<BR></FONT><BR></DIV>
  <DIV></DIV>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="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
    <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>"Matthew Galati" 
          &lt;<A onclick="return top.js.OpenExtLink(window,event,this)" 
          href="mailto:Matthew.Galati@sas.com" 
          target=_blank>Matthew.Galati@sas.com</A>&gt;</B> </FONT><BR><FONT 
          face=sans-serif size=1>Sent by: <A 
          onclick="return top.js.OpenExtLink(window,event,this)" 
          href="mailto:coin-discuss-bounces@list.coin-or.org" 
          target=_blank>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 
                onclick="return top.js.OpenExtLink(window,event,this)" 
                href="mailto:coin-discuss@list.coin-or.org" 
                target=_blank>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>"Discussions about open source 
                software for Operations Research" &lt;<A 
                onclick="return top.js.OpenExtLink(window,event,this)" 
                href="mailto:coin-discuss@list.coin-or.org" 
                target=_blank>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 onclick="return top.js.OpenExtLink(window,event,this)" 
    href="mailto:Coin-discuss@list.coin-or.org" 
    target=_blank>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></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></BLOCKQUOTE></BODY></HTML>