Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > df736a3bc446df5b16150bebb7296274 > files > 38

DSDP-devel-5.8-2.fc14.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>DSDP: src/bounds/dbounds.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">DSDP</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="dir_23046874d7fed141927c769a66d8e3a5.html">src</a>      </li>
      <li class="navelem"><a class="el" href="dir_e1dbff585e14e1242e5f1271df2e7fff.html">bounds</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="headertitle">
<div class="title">dbounds.c</div>  </div>
</div>
<div class="contents">
<a href="dbounds_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include &quot;<a class="code" href="dsdpcone__impl_8h.html" title="Implementations of a cone (SDP,LP,...) must provide a structure of function pointers.">dsdpcone_impl.h</a>&quot;</span>
<a name="l00002"></a>00002 <span class="preprocessor">#include &quot;<a class="code" href="dsdpsys_8h.html" title="Error handling, printing, and profiling.">dsdpsys.h</a>&quot;</span>
<a name="l00003"></a>00003 <span class="preprocessor">#include &quot;<a class="code" href="dsdp5_8h.html" title="The API to DSDP for those applications using DSDP as a subroutine library.">dsdp5.h</a>&quot;</span>
<a name="l00004"></a>00004 
<a name="l00005"></a>00005 <span class="preprocessor">#define COMPUTEUBS(a,b,c)  (-(a)-(b)-(c))</span>
<a name="l00006"></a>00006 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <span class="keyword">struct </span>BCone_C{
<a name="l00016"></a>00016   <span class="keywordtype">int</span> keyid;
<a name="l00017"></a>00017   <span class="keywordtype">int</span> nn,nnmax;
<a name="l00018"></a>00018   <span class="keywordtype">int</span> *ib;
<a name="l00019"></a>00019   <span class="keywordtype">double</span> *u,*au,*us,*uss,*ux,*uds;
<a name="l00020"></a>00020   <span class="keywordtype">double</span> r,muscale;
<a name="l00021"></a>00021   <span class="keywordtype">int</span> m;
<a name="l00022"></a>00022   <span class="keywordtype">double</span> *xuout;
<a name="l00023"></a>00023   <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> WY,WY2;
<a name="l00024"></a>00024 };
<a name="l00025"></a>00025 
<a name="l00026"></a>00026 <span class="preprocessor">#define BKEY  5432</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define BConeValid(a) {if (!(a)||((a)-&gt;keyid!=BKEY)){ DSDPSETERR(101,&quot;DSDPERROR: Invalid Bcone object\n&quot;);}}</span>
<a name="l00028"></a>00028 <span class="preprocessor"></span>
<a name="l00029"></a>00029 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSetUp&quot;</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeSetup(<span class="keywordtype">void</span> *dcone,<a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> y){
<a name="l00032"></a>00032   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00033"></a>00033   <span class="keywordtype">int</span> nn=bcone-&gt;nn;
<a name="l00034"></a>00034   <span class="keywordtype">int</span> info;
<a name="l00035"></a>00035 
<a name="l00036"></a>00036   DSDPFunctionBegin;
<a name="l00037"></a>00037   <span class="keywordflow">if</span> (bcone-&gt;nn&lt;1) <span class="keywordflow">return</span> 0;
<a name="l00038"></a>00038   DSDPCALLOC2(&amp;bcone-&gt;us,<span class="keywordtype">double</span>,nn,&amp;info);DSDPCHKERR(info);
<a name="l00039"></a>00039   DSDPCALLOC2(&amp;bcone-&gt;uss,<span class="keywordtype">double</span>,nn,&amp;info);DSDPCHKERR(info);
<a name="l00040"></a>00040   DSDPCALLOC2(&amp;bcone-&gt;ux,<span class="keywordtype">double</span>,nn,&amp;info);DSDPCHKERR(info);
<a name="l00041"></a>00041   DSDPCALLOC2(&amp;bcone-&gt;uds,<span class="keywordtype">double</span>,nn,&amp;info);DSDPCHKERR(info);
<a name="l00042"></a>00042   DSDPFunctionReturn(0);
<a name="l00043"></a>00043 }
<a name="l00044"></a>00044 
<a name="l00045"></a>00045 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSetUp2&quot;</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeSetup2(<span class="keywordtype">void</span> *dcone, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> Y, <a class="code" href="structDSDPSchurMat__C.html" title="Schur complement matrix whose solution is the Newton direction.">DSDPSchurMat</a> M){
<a name="l00048"></a>00048   <span class="keywordtype">int</span> info;
<a name="l00049"></a>00049   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00050"></a>00050   DSDPFunctionBegin;
<a name="l00051"></a>00051   info=DSDPVecDuplicate(Y,&amp;bcone-&gt;WY);DSDPCHKERR(info);
<a name="l00052"></a>00052   info=DSDPVecDuplicate(Y,&amp;bcone-&gt;WY2);DSDPCHKERR(info);
<a name="l00053"></a>00053   DSDPFunctionReturn(0);
<a name="l00054"></a>00054 }
<a name="l00055"></a>00055 
<a name="l00056"></a>00056 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeDestroy&quot;</span>
<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeDestroy(<span class="keywordtype">void</span> *dcone){
<a name="l00059"></a>00059   <span class="keywordtype">int</span> info;
<a name="l00060"></a>00060   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00061"></a>00061   DSDPFunctionBegin;
<a name="l00062"></a>00062   DSDPFREE(&amp;bcone-&gt;ib,&amp;info);DSDPCHKERR(info);
<a name="l00063"></a>00063   DSDPFREE(&amp;bcone-&gt;u,&amp;info);DSDPCHKERR(info);
<a name="l00064"></a>00064   DSDPFREE(&amp;bcone-&gt;au,&amp;info);DSDPCHKERR(info);
<a name="l00065"></a>00065   DSDPFREE(&amp;bcone-&gt;us,&amp;info);DSDPCHKERR(info);
<a name="l00066"></a>00066   DSDPFREE(&amp;bcone-&gt;uss,&amp;info);DSDPCHKERR(info);
<a name="l00067"></a>00067   DSDPFREE(&amp;bcone-&gt;uds,&amp;info);DSDPCHKERR(info);
<a name="l00068"></a>00068   DSDPFREE(&amp;bcone-&gt;ux,&amp;info);DSDPCHKERR(info);
<a name="l00069"></a>00069 
<a name="l00070"></a>00070   info=DSDPVecDestroy(&amp;bcone-&gt;WY);DSDPCHKERR(info);
<a name="l00071"></a>00071   info=DSDPVecDestroy(&amp;bcone-&gt;WY2);DSDPCHKERR(info);
<a name="l00072"></a>00072 
<a name="l00073"></a>00073   DSDPFREE(&amp;dcone,&amp;info);DSDPCHKERR(info);
<a name="l00074"></a>00074   DSDPFunctionReturn(0);
<a name="l00075"></a>00075 }
<a name="l00076"></a>00076 
<a name="l00077"></a>00077 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00078"></a>00078 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSize&quot;</span>
<a name="l00079"></a>00079 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeSize(<span class="keywordtype">void</span> *dcone, <span class="keywordtype">double</span> *n){
<a name="l00080"></a>00080   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00081"></a>00081   DSDPFunctionBegin;
<a name="l00082"></a>00082   *n=(double)(bcone-&gt;nn);
<a name="l00083"></a>00083   DSDPFunctionReturn(0);
<a name="l00084"></a>00084 }
<a name="l00085"></a>00085 
<a name="l00086"></a>00086 
<a name="l00087"></a>00087 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeComputeS&quot;</span>
<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeComputeS(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone,<a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> Y,<span class="keywordtype">double</span> ss[], <span class="keywordtype">int</span> n){
<a name="l00090"></a>00090   <span class="keywordtype">int</span> i,ii,info;
<a name="l00091"></a>00091   <span class="keywordtype">int</span> *ib=bcone-&gt;ib, nn=bcone-&gt;nn;
<a name="l00092"></a>00092   <span class="keywordtype">double</span> cr,rr,r,yy,*au=bcone-&gt;au,*u=bcone-&gt;u;
<a name="l00093"></a>00093 
<a name="l00094"></a>00094   DSDPFunctionBegin;
<a name="l00095"></a>00095   info=DSDPVecGetC(Y,&amp;cr);
<a name="l00096"></a>00096   info=DSDPVecGetR(Y,&amp;rr);
<a name="l00097"></a>00097   r=rr*bcone-&gt;r;
<a name="l00098"></a>00098   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00099"></a>00099     ii=ib[i];
<a name="l00100"></a>00100     info=DSDPVecGetElement(Y,ii,&amp;yy);
<a name="l00101"></a>00101     ss[i]=-cr*u[i]-au[i]*yy-r;
<a name="l00102"></a>00102   }  
<a name="l00103"></a>00103   DSDPFunctionReturn(0);
<a name="l00104"></a>00104 }
<a name="l00105"></a>00105 
<a name="l00106"></a>00106 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeHessian&quot;</span>
<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeHessian(<span class="keywordtype">void</span>* dcone, <span class="keywordtype">double</span> mu, <a class="code" href="structDSDPSchurMat__C.html" title="Schur complement matrix whose solution is the Newton direction.">DSDPSchurMat</a> M,
<a name="l00109"></a>00109                         <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> vrhs1, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> vrhs2){
<a name="l00110"></a>00110   <span class="keywordtype">int</span> info,i,ii;
<a name="l00111"></a>00111   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00112"></a>00112   <span class="keywordtype">int</span> *ib=bcone-&gt;ib, nn=bcone-&gt;nn;
<a name="l00113"></a>00113   <span class="keywordtype">double</span> *us=bcone-&gt;us;
<a name="l00114"></a>00114   <span class="keywordtype">double</span> *au=bcone-&gt;au,*u=bcone-&gt;u;
<a name="l00115"></a>00115   <span class="keywordtype">double</span> dd,cc,rr,cs,as,rs;
<a name="l00116"></a>00116   <span class="keywordtype">double</span> r=bcone-&gt;r;
<a name="l00117"></a>00117   <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> DD=bcone-&gt;WY,MScale=bcone-&gt;WY2;
<a name="l00118"></a>00118   
<a name="l00119"></a>00119   DSDPFunctionBegin;
<a name="l00120"></a>00120   <span class="keywordflow">if</span> (bcone-&gt;nn&lt;1) <span class="keywordflow">return</span> 0;
<a name="l00121"></a>00121   mu*=bcone-&gt;muscale;
<a name="l00122"></a>00122   info=DSDPVecZero(DD);DSDPCHKERR(info);
<a name="l00123"></a>00123 
<a name="l00124"></a>00124   info=<a class="code" href="dsdpschurmat_8h.html#afa6d59fd28e2666d6fbeae8abf370dda" title="Get the scaling and nonzero pattern of each diagonal element of the matrix.">DSDPSchurMatDiagonalScaling</a>(M,MScale);DSDPCHKERR(info);
<a name="l00125"></a>00125   info=DSDPVecGetC(MScale,&amp;cc);DSDPCHKERR(info);
<a name="l00126"></a>00126   info=DSDPVecGetR(MScale,&amp;rr);DSDPCHKERR(info);
<a name="l00127"></a>00127   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00128"></a>00128     ii=ib[i];
<a name="l00129"></a>00129     info=DSDPVecGetElement(MScale,ii,&amp;dd);DSDPCHKERR(info);
<a name="l00130"></a>00130 
<a name="l00131"></a>00131     cs=cc*u[i]/us[i];
<a name="l00132"></a>00132     as=dd*au[i]/us[i];
<a name="l00133"></a>00133     rs=rr*r/us[i];
<a name="l00134"></a>00134 
<a name="l00135"></a>00135     <span class="keywordflow">if</span> (cs){
<a name="l00136"></a>00136       info=DSDPVecAddC(vrhs2,mu*cs);DSDPCHKERR(info);
<a name="l00137"></a>00137       info=DSDPVecAddC(DD,mu*cs*cs);DSDPCHKERR(info);
<a name="l00138"></a>00138       info=DSDPSchurMatAddC(M,ii,mu*as*cs);DSDPCHKERR(info);
<a name="l00139"></a>00139       info=<a class="code" href="dsdpschurmat_8h.html#a22e5445e2278117b9d34b1ed0f134880" title="Add an element to the Schur matrix correponding the variable r.">DSDPSchurMatAddR</a>(M,0,mu*cs*rs);DSDPCHKERR(info);
<a name="l00140"></a>00140     }
<a name="l00141"></a>00141     <span class="keywordflow">if</span> (as){
<a name="l00142"></a>00142       info=DSDPVecAddElement(vrhs2,ii,mu*as);DSDPCHKERR(info);
<a name="l00143"></a>00143       info=DSDPVecAddElement(DD,ii,mu*as*as);DSDPCHKERR(info);
<a name="l00144"></a>00144     }
<a name="l00145"></a>00145     <span class="keywordflow">if</span> (rs){
<a name="l00146"></a>00146       info=DSDPVecAddR(vrhs2,mu*rs);DSDPCHKERR(info);
<a name="l00147"></a>00147       info=DSDPVecAddR(DD,mu*rs*rs);DSDPCHKERR(info);
<a name="l00148"></a>00148       info=<a class="code" href="dsdpschurmat_8h.html#a22e5445e2278117b9d34b1ed0f134880" title="Add an element to the Schur matrix correponding the variable r.">DSDPSchurMatAddR</a>(M,ii,mu*as*rs);DSDPCHKERR(info);
<a name="l00149"></a>00149     }
<a name="l00150"></a>00150 
<a name="l00151"></a>00151   }
<a name="l00152"></a>00152   info=<a class="code" href="dsdpschurmat_8h.html#a1d4c2d546c94985883abe1e4ad9173a6" title="Add elements to a row of the Schur matrix.">DSDPSchurMatAddDiagonal</a>(M,DD);DSDPCHKERR(info);
<a name="l00153"></a>00153   
<a name="l00154"></a>00154   DSDPFunctionReturn(0);
<a name="l00155"></a>00155 }
<a name="l00156"></a>00156 
<a name="l00157"></a>00157 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeHessian&quot;</span>
<a name="l00159"></a>00159 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeRHS(<span class="keywordtype">void</span>* dcone, <span class="keywordtype">double</span> mu, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> vrow,
<a name="l00160"></a>00160                          <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> vrhs1, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> vrhs2){
<a name="l00161"></a>00161   <span class="keywordtype">int</span> info,i,ii;
<a name="l00162"></a>00162   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00163"></a>00163   <span class="keywordtype">int</span> *ib=bcone-&gt;ib, nn=bcone-&gt;nn;
<a name="l00164"></a>00164   <span class="keywordtype">double</span> *us=bcone-&gt;us, *au=bcone-&gt;au,*u=bcone-&gt;u;
<a name="l00165"></a>00165   <span class="keywordtype">double</span> dd,cc,rr,cs,as,rs;
<a name="l00166"></a>00166   <span class="keywordtype">double</span> r=bcone-&gt;r;
<a name="l00167"></a>00167   
<a name="l00168"></a>00168   DSDPFunctionBegin;
<a name="l00169"></a>00169   mu*=bcone-&gt;muscale;
<a name="l00170"></a>00170   info=DSDPVecGetC(vrow,&amp;cc);DSDPCHKERR(info);
<a name="l00171"></a>00171   info=DSDPVecGetR(vrow,&amp;rr);DSDPCHKERR(info);
<a name="l00172"></a>00172   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00173"></a>00173     ii=ib[i];
<a name="l00174"></a>00174     info=DSDPVecGetElement(vrow,ii,&amp;dd);DSDPCHKERR(info);
<a name="l00175"></a>00175 
<a name="l00176"></a>00176     cs=cc*u[i]/us[i];
<a name="l00177"></a>00177     as=dd*au[i]/us[i];
<a name="l00178"></a>00178     rs=rr*r/us[i];
<a name="l00179"></a>00179 
<a name="l00180"></a>00180     <span class="keywordflow">if</span> (cs){
<a name="l00181"></a>00181       info=DSDPVecAddC(vrhs2,mu*cs);DSDPCHKERR(info);
<a name="l00182"></a>00182     }
<a name="l00183"></a>00183     <span class="keywordflow">if</span> (as){
<a name="l00184"></a>00184       info=DSDPVecAddElement(vrhs2,ii,mu*as);DSDPCHKERR(info);
<a name="l00185"></a>00185     }
<a name="l00186"></a>00186     <span class="keywordflow">if</span> (rs){
<a name="l00187"></a>00187       info=DSDPVecAddR(vrhs2,mu*rs);DSDPCHKERR(info);
<a name="l00188"></a>00188     }
<a name="l00189"></a>00189 
<a name="l00190"></a>00190   }
<a name="l00191"></a>00191   DSDPFunctionReturn(0);
<a name="l00192"></a>00192 }
<a name="l00193"></a>00193 
<a name="l00194"></a>00194 
<a name="l00195"></a>00195 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00196"></a>00196 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeMultiply&quot;</span>
<a name="l00197"></a>00197 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeMultiply(<span class="keywordtype">void</span>* dcone,  <span class="keywordtype">double</span> mu, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> vrow, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> vin, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> vout){
<a name="l00198"></a>00198   <span class="keywordtype">int</span> info,i,ii;
<a name="l00199"></a>00199   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00200"></a>00200   <span class="keywordtype">int</span> *ib=bcone-&gt;ib, nn=bcone-&gt;nn;
<a name="l00201"></a>00201   <span class="keywordtype">double</span> *au=bcone-&gt;au,*us=bcone-&gt;us;
<a name="l00202"></a>00202   <span class="keywordtype">double</span> assa,dd,vv;
<a name="l00203"></a>00203    
<a name="l00204"></a>00204   DSDPFunctionBegin;
<a name="l00205"></a>00205   mu*=bcone-&gt;muscale;
<a name="l00206"></a>00206   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00207"></a>00207     ii=ib[i];
<a name="l00208"></a>00208     info=DSDPVecGetElement(vin,ii,&amp;dd);DSDPCHKERR(info);
<a name="l00209"></a>00209     info=DSDPVecGetElement(vrow,ii,&amp;vv);DSDPCHKERR(info);
<a name="l00210"></a>00210     <span class="keywordflow">if</span> (dd==0 || vv==0) <span class="keywordflow">continue</span>;
<a name="l00211"></a>00211     assa=(au[i]/us[i]);
<a name="l00212"></a>00212     assa=mu*vv*assa*assa;
<a name="l00213"></a>00213     info=DSDPVecAddElement(vout,ii,assa);DSDPCHKERR(info);
<a name="l00214"></a>00214   }
<a name="l00215"></a>00215   DSDPFunctionReturn(0);
<a name="l00216"></a>00216 }
<a name="l00217"></a>00217 
<a name="l00218"></a>00218 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00219"></a>00219 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeS&quot;</span>
<a name="l00220"></a>00220 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeS(<span class="keywordtype">void</span>* dcone,<a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> Y,<a class="code" href="dsdpbasictypes_8h.html#ae47666e7e5d77002110e20ef9ebb634b" title="DSDP requires two instances of the data structures S.">DSDPDualFactorMatrix</a> flag,<a class="code" href="dsdpbasictypes_8h.html#ae667f2bff3ab5ab0bc109fa76dc4ed65" title="Boolean variables.">DSDPTruth</a> *psdefinite){
<a name="l00221"></a>00221   <span class="keywordtype">int</span> i,info;
<a name="l00222"></a>00222   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00223"></a>00223   <span class="keywordtype">int</span> nn=bcone-&gt;nn;
<a name="l00224"></a>00224   <span class="keywordtype">double</span> *us;
<a name="l00225"></a>00225   DSDPFunctionBegin;
<a name="l00226"></a>00226 
<a name="l00227"></a>00227   <span class="keywordflow">if</span> (flag==<a class="code" href="dsdpbasictypes_8h.html#ae47666e7e5d77002110e20ef9ebb634bab6fdf4f2eac3be74db4cdd12007f3cb0">DUAL_FACTOR</a>){
<a name="l00228"></a>00228     us=bcone-&gt;us;
<a name="l00229"></a>00229   } <span class="keywordflow">else</span> {
<a name="l00230"></a>00230     us=bcone-&gt;uss;
<a name="l00231"></a>00231   }
<a name="l00232"></a>00232   info=BConeComputeS(bcone,Y,us,nn);DSDPCHKERR(info);
<a name="l00233"></a>00233   *psdefinite=<a class="code" href="dsdpbasictypes_8h.html#ae667f2bff3ab5ab0bc109fa76dc4ed65ae6b2e53e51e94a5fa7204ceac78f824f">DSDP_TRUE</a>;
<a name="l00234"></a>00234   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00235"></a>00235     <span class="keywordflow">if</span> (us[i]&lt;=0){*psdefinite=<a class="code" href="dsdpbasictypes_8h.html#ae667f2bff3ab5ab0bc109fa76dc4ed65a74385569aa7a59059a8847e2d39b754c">DSDP_FALSE</a>;<span class="keywordflow">break</span>;}
<a name="l00236"></a>00236   }
<a name="l00237"></a>00237 
<a name="l00238"></a>00238   DSDPFunctionReturn(0);
<a name="l00239"></a>00239 }
<a name="l00240"></a>00240 
<a name="l00241"></a>00241 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00242"></a>00242 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSInvert&quot;</span>
<a name="l00243"></a>00243 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeSInvert(<span class="keywordtype">void</span>* dcone){
<a name="l00244"></a>00244   DSDPFunctionBegin;
<a name="l00245"></a>00245   DSDPFunctionReturn(0);
<a name="l00246"></a>00246 }
<a name="l00247"></a>00247 
<a name="l00248"></a>00248 
<a name="l00249"></a>00249 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00250"></a>00250 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSetX&quot;</span>
<a name="l00251"></a>00251 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeSetX(<span class="keywordtype">void</span>* dcone,<span class="keywordtype">double</span> mu, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> Y,<a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> DY){
<a name="l00252"></a>00252   DSDPFunctionBegin;
<a name="l00253"></a>00253   DSDPFunctionReturn(0);
<a name="l00254"></a>00254 }
<a name="l00255"></a>00255 
<a name="l00256"></a>00256 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00257"></a>00257 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeX&quot;</span>
<a name="l00258"></a>00258 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeX(<span class="keywordtype">void</span>* dcone,<span class="keywordtype">double</span> mu, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> Y,<a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> DY, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> AX , <span class="keywordtype">double</span> *tracexs){
<a name="l00259"></a>00259   <span class="keywordtype">int</span> i,ii,info;
<a name="l00260"></a>00260   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00261"></a>00261   <span class="keywordtype">int</span> *ib=bcone-&gt;ib, nn=bcone-&gt;nn;
<a name="l00262"></a>00262   <span class="keywordtype">double</span> *au=bcone-&gt;au, *us=bcone-&gt;uss, *ux=bcone-&gt;ux, *uds=bcone-&gt;uds, *u=bcone-&gt;u;
<a name="l00263"></a>00263   <span class="keywordtype">double</span> *xuout=bcone-&gt;xuout;
<a name="l00264"></a>00264   <span class="keywordtype">double</span> ds,dus,dau,xx,cr,rr;
<a name="l00265"></a>00265   <span class="keywordtype">double</span> pobj1=0,xdots1=0;
<a name="l00266"></a>00266   <a class="code" href="dsdpbasictypes_8h.html#ae667f2bff3ab5ab0bc109fa76dc4ed65" title="Boolean variables.">DSDPTruth</a> psdefinite;
<a name="l00267"></a>00267 
<a name="l00268"></a>00268   DSDPFunctionBegin;
<a name="l00269"></a>00269 
<a name="l00270"></a>00270   info=BConeS(dcone,Y,<a class="code" href="dsdpbasictypes_8h.html#ae47666e7e5d77002110e20ef9ebb634baa8adedc328d310fc0bb1b04a9091bad1">PRIMAL_FACTOR</a>,&amp;psdefinite); DSDPCHKERR(info);
<a name="l00271"></a>00271   info=BConeComputeS(bcone,DY,uds,nn);DSDPCHKERR(info);
<a name="l00272"></a>00272   info=DSDPVecGetC(Y,&amp;cr);DSDPCHKERR(info);
<a name="l00273"></a>00273   info=DSDPVecGetR(Y,&amp;rr);DSDPCHKERR(info);
<a name="l00274"></a>00274 
<a name="l00275"></a>00275   mu*=bcone-&gt;muscale;
<a name="l00276"></a>00276   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00277"></a>00277     ii=ib[i];
<a name="l00278"></a>00278     ds=uds[i]; dus=us[i]; dau=au[i];
<a name="l00279"></a>00279     xx=(mu/dus)-(mu/dus)*(ds/dus);
<a name="l00280"></a>00280     ux[i]=xx;
<a name="l00281"></a>00281     info=DSDPVecAddElement(AX,ii,dau*xx);DSDPCHKERR(info);
<a name="l00282"></a>00282     xdots1+=xx*us[i];
<a name="l00283"></a>00283     pobj1+=xx*u[i];
<a name="l00284"></a>00284     <span class="keywordflow">if</span> (xuout) xuout[i]=xx;
<a name="l00285"></a>00285   }
<a name="l00286"></a>00286 
<a name="l00287"></a>00287   info=DSDPVecAddC(AX,pobj1);DSDPCHKERR(info);
<a name="l00288"></a>00288   *tracexs+=xdots1;
<a name="l00289"></a>00289   DSDPFunctionReturn(0);
<a name="l00290"></a>00290 }
<a name="l00291"></a>00291 
<a name="l00292"></a>00292 
<a name="l00293"></a>00293 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00294"></a>00294 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeComputeMaxStepLength&quot;</span>
<a name="l00295"></a>00295 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeComputeMaxStepLength(<span class="keywordtype">void</span>* dcone, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> DY, <a class="code" href="dsdpbasictypes_8h.html#ae47666e7e5d77002110e20ef9ebb634b" title="DSDP requires two instances of the data structures S.">DSDPDualFactorMatrix</a> flag, <span class="keywordtype">double</span> *maxsteplength){
<a name="l00296"></a>00296   <span class="keywordtype">int</span> i,info;
<a name="l00297"></a>00297   <span class="keywordtype">double</span> mstep=1.0e200;
<a name="l00298"></a>00298   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00299"></a>00299   <span class="keywordtype">int</span> nn=bcone-&gt;nn;
<a name="l00300"></a>00300   <span class="keywordtype">double</span> *us,*uds=bcone-&gt;uds;
<a name="l00301"></a>00301   DSDPFunctionBegin;
<a name="l00302"></a>00302   
<a name="l00303"></a>00303   <span class="keywordflow">if</span> (bcone-&gt;nn&lt;1) <span class="keywordflow">return</span> 0;
<a name="l00304"></a>00304   <span class="keywordflow">if</span> (flag==<a class="code" href="dsdpbasictypes_8h.html#ae47666e7e5d77002110e20ef9ebb634bab6fdf4f2eac3be74db4cdd12007f3cb0">DUAL_FACTOR</a>){
<a name="l00305"></a>00305     us=bcone-&gt;us;
<a name="l00306"></a>00306   } <span class="keywordflow">else</span> {
<a name="l00307"></a>00307     us=bcone-&gt;uss;
<a name="l00308"></a>00308   }
<a name="l00309"></a>00309 
<a name="l00310"></a>00310   info=BConeComputeS(bcone,DY,uds,nn);DSDPCHKERR(info);
<a name="l00311"></a>00311 
<a name="l00312"></a>00312   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00313"></a>00313     <span class="keywordflow">if</span> (uds[i]&lt;0){mstep=DSDPMin(mstep,-us[i]/uds[i]);}
<a name="l00314"></a>00314   }
<a name="l00315"></a>00315 
<a name="l00316"></a>00316   *maxsteplength=mstep;
<a name="l00317"></a>00317 
<a name="l00318"></a>00318   DSDPFunctionReturn(0);
<a name="l00319"></a>00319 }
<a name="l00320"></a>00320 
<a name="l00321"></a>00321 
<a name="l00322"></a>00322 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00323"></a>00323 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConePotential&quot;</span>
<a name="l00324"></a>00324 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConePotential(<span class="keywordtype">void</span>* dcone, <span class="keywordtype">double</span> *logobj, <span class="keywordtype">double</span> *logdet){
<a name="l00325"></a>00325   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00326"></a>00326   <span class="keywordtype">int</span> i;
<a name="l00327"></a>00327   <span class="keywordtype">double</span> sumlog=0;
<a name="l00328"></a>00328   <span class="keywordtype">double</span> mu=bcone-&gt;muscale;
<a name="l00329"></a>00329   <span class="keywordtype">int</span> nn=bcone-&gt;nn;
<a name="l00330"></a>00330   <span class="keywordtype">double</span> *us=bcone-&gt;us;
<a name="l00331"></a>00331 
<a name="l00332"></a>00332   DSDPFunctionBegin;
<a name="l00333"></a>00333   <span class="keywordflow">if</span> (bcone-&gt;nn&lt;1) <span class="keywordflow">return</span> 0;
<a name="l00334"></a>00334   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00335"></a>00335     sumlog+= mu*log(us[i]);
<a name="l00336"></a>00336   }
<a name="l00337"></a>00337   *logdet=sumlog;
<a name="l00338"></a>00338   *logobj=0;
<a name="l00339"></a>00339   DSDPFunctionReturn(0);
<a name="l00340"></a>00340 }
<a name="l00341"></a>00341 
<a name="l00342"></a>00342 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00343"></a>00343 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSparsity&quot;</span>
<a name="l00344"></a>00344 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeSparsity(<span class="keywordtype">void</span> *dcone,<span class="keywordtype">int</span> row, <span class="keywordtype">int</span> *tnnz, <span class="keywordtype">int</span> rnnz[], <span class="keywordtype">int</span> m){
<a name="l00345"></a>00345   DSDPFunctionBegin;
<a name="l00346"></a>00346   *tnnz=1;rnnz[row]++;
<a name="l00347"></a>00347   DSDPFunctionReturn(0);
<a name="l00348"></a>00348 }
<a name="l00349"></a>00349 
<a name="l00350"></a>00350 
<a name="l00351"></a>00351 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00352"></a>00352 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeMonitor&quot;</span>
<a name="l00353"></a>00353 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeMonitor(<span class="keywordtype">void</span> *dcone,<span class="keywordtype">int</span> di){
<a name="l00354"></a>00354   DSDPFunctionBegin;
<a name="l00355"></a>00355   DSDPFunctionReturn(0);
<a name="l00356"></a>00356 }
<a name="l00357"></a>00357 
<a name="l00358"></a>00358 
<a name="l00359"></a>00359 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00360"></a>00360 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;LPANorm2&quot;</span>
<a name="l00361"></a>00361 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> LPANorm2( <span class="keywordtype">void</span> *dcone, <a class="code" href="dsdpvec_8h.html#a421243d35437ad44ded3c1e34198e8e9" title="This object hold m+2 variables: a scaling of C, the y variables, and r.">DSDPVec</a> ANorm){
<a name="l00362"></a>00362   <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone=(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a>)dcone;
<a name="l00363"></a>00363   <span class="keywordtype">int</span> *ib=bcone-&gt;ib, nn=bcone-&gt;nn;
<a name="l00364"></a>00364   <span class="keywordtype">double</span> *u=bcone-&gt;u;
<a name="l00365"></a>00365   <span class="keywordtype">double</span> yy=1.0,cnorm2=0;
<a name="l00366"></a>00366   <span class="keywordtype">int</span> i,ii,info;
<a name="l00367"></a>00367   DSDPFunctionBegin;
<a name="l00368"></a>00368   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00369"></a>00369     ii=ib[i]; yy=1.0;
<a name="l00370"></a>00370     info=DSDPVecAddElement(ANorm,ii,yy);
<a name="l00371"></a>00371     yy=u[i]; cnorm2+=yy*yy;
<a name="l00372"></a>00372   }
<a name="l00373"></a>00373   info=DSDPVecAddC(ANorm,cnorm2);
<a name="l00374"></a>00374   info=DSDPVecAddR(ANorm,bcone-&gt;r*bcone-&gt;nn);
<a name="l00375"></a>00375   DSDPFunctionReturn(0);
<a name="l00376"></a>00376 }
<a name="l00377"></a>00377 
<a name="l00378"></a>00378 
<a name="l00379"></a>00379 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00380"></a>00380 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeView&quot;</span>
<a name="l00381"></a>00381 <span class="preprocessor"></span><span class="keywordtype">int</span> BConeView(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone){
<a name="l00382"></a>00382   <span class="keywordtype">int</span> i,ii;
<a name="l00383"></a>00383   <span class="keywordtype">int</span> *ib=bcone-&gt;ib, nn=bcone-&gt;nn;
<a name="l00384"></a>00384   <span class="keywordtype">double</span>  *au=bcone-&gt;au,*u=bcone-&gt;u;
<a name="l00385"></a>00385   DSDPFunctionBegin;
<a name="l00386"></a>00386   BConeValid(bcone);
<a name="l00387"></a>00387   ib=bcone-&gt;ib; nn=bcone-&gt;nn;
<a name="l00388"></a>00388   au=bcone-&gt;au;  u=bcone-&gt;u;
<a name="l00389"></a>00389   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00390"></a>00390     ii=ib[i];
<a name="l00391"></a>00391     <span class="keywordflow">if</span> (au[i]&gt;0){
<a name="l00392"></a>00392       printf(<span class="stringliteral">&quot;Upper Bound.  Var %d: %4.8e\n&quot;</span>,ii,u[i]);
<a name="l00393"></a>00393     } <span class="keywordflow">else</span> {
<a name="l00394"></a>00394       printf(<span class="stringliteral">&quot;Lower Bound.  Var %d: %4.8e\n&quot;</span>,ii,u[i]);
<a name="l00395"></a>00395     }
<a name="l00396"></a>00396   }
<a name="l00397"></a>00397   DSDPFunctionReturn(0);
<a name="l00398"></a>00398 }
<a name="l00399"></a>00399 
<a name="l00400"></a>00400 
<a name="l00401"></a>00401 <span class="keyword">static</span> <span class="keyword">struct  </span>DSDPCone_Ops kops;
<a name="l00402"></a>00402 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *bconename=<span class="stringliteral">&quot;VariableBounds Cone&quot;</span>;
<a name="l00403"></a>00403 
<a name="l00404"></a>00404 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00405"></a>00405 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeOperationsInitialize&quot;</span>
<a name="l00406"></a>00406 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">int</span> BConeOperationsInitialize(<span class="keyword">struct</span>  DSDPCone_Ops* coneops){
<a name="l00407"></a>00407   <span class="keywordtype">int</span> info;
<a name="l00408"></a>00408   <span class="keywordflow">if</span> (coneops==NULL) <span class="keywordflow">return</span> 0;
<a name="l00409"></a>00409   info=<a class="code" href="dsdpcone_8c.html#ad1e12a500997ab2be6b7e24536017e95" title="Initialize the function pointers to 0.">DSDPConeOpsInitialize</a>(coneops); DSDPCHKERR(info);
<a name="l00410"></a>00410   coneops-&gt;conehessian=BConeHessian;
<a name="l00411"></a>00411   coneops-&gt;conerhs=BConeRHS;
<a name="l00412"></a>00412   coneops-&gt;conesetup=BConeSetup;
<a name="l00413"></a>00413   coneops-&gt;conesetup2=BConeSetup2;
<a name="l00414"></a>00414   coneops-&gt;conedestroy=BConeDestroy;
<a name="l00415"></a>00415   coneops-&gt;conecomputes=BConeS;
<a name="l00416"></a>00416   coneops-&gt;coneinverts=BConeSInvert;
<a name="l00417"></a>00417   coneops-&gt;conecomputex=BConeX;
<a name="l00418"></a>00418   coneops-&gt;conesetxmaker=BConeSetX;
<a name="l00419"></a>00419   coneops-&gt;conemaxsteplength=BConeComputeMaxStepLength;
<a name="l00420"></a>00420   coneops-&gt;conelogpotential=BConePotential;
<a name="l00421"></a>00421   coneops-&gt;conesize=BConeSize;
<a name="l00422"></a>00422   coneops-&gt;conemonitor=BConeMonitor;
<a name="l00423"></a>00423   coneops-&gt;conesparsity=BConeSparsity;
<a name="l00424"></a>00424   coneops-&gt;conehmultiplyadd=BConeMultiply;
<a name="l00425"></a>00425   coneops-&gt;coneanorm2=LPANorm2;
<a name="l00426"></a>00426   coneops-&gt;id=2;
<a name="l00427"></a>00427   coneops-&gt;name=bconename;
<a name="l00428"></a>00428   <span class="keywordflow">return</span> 0;
<a name="l00429"></a>00429 }
<a name="l00430"></a>00430 
<a name="l00431"></a>00431 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00432"></a>00432 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPAddBounds&quot;</span>
<a name="l00433"></a>00433 <span class="preprocessor"></span><span class="keywordtype">int</span> DSDPAddBounds(<a class="code" href="structDSDP__C.html" title="Internal structures for the DSDP solver.">DSDP</a> dsdp,<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone){
<a name="l00434"></a>00434   <span class="keywordtype">int</span> info;
<a name="l00435"></a>00435   DSDPFunctionBegin;
<a name="l00436"></a>00436   BConeValid(bcone);
<a name="l00437"></a>00437   info=BConeOperationsInitialize(&amp;kops); DSDPCHKERR(info);
<a name="l00438"></a>00438   info=<a class="code" href="dsdpcone__impl_8h.html#ae305676af8ca6fb9340d129b392c0f4d" title="Apply DSDP to a conic structure.">DSDPAddCone</a>(dsdp,&amp;kops,(<span class="keywordtype">void</span>*)bcone); DSDPCHKERR(info);
<a name="l00439"></a>00439   DSDPFunctionReturn(0); 
<a name="l00440"></a>00440 }
<a name="l00441"></a>00441 
<a name="l00442"></a>00442 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00443"></a>00443 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;DSDPCreateBCone&quot;</span>
<a name="l00444"></a>00444 <span class="preprocessor"></span>
<a name="l00467"></a><a class="code" href="group__Bounds.html#ga66c37f394d6efb45e686aed600015d09">00467</a> <span class="keywordtype">int</span> <a class="code" href="group__Bounds.html#ga66c37f394d6efb45e686aed600015d09" title="Create a new cone that represents bounds on the y variables.">DSDPCreateBCone</a>(<a class="code" href="structDSDP__C.html" title="Internal structures for the DSDP solver.">DSDP</a> dsdp, <a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> *dspcone){
<a name="l00468"></a>00468   <span class="keywordtype">int</span> m,info;
<a name="l00469"></a>00469   <span class="keyword">struct </span>BCone_C *bcone;
<a name="l00470"></a>00470   DSDPFunctionBegin;
<a name="l00471"></a>00471   <span class="keywordflow">if</span> (!dsdp){DSDPFunctionReturn(1);}
<a name="l00472"></a>00472   DSDPCALLOC1(&amp;bcone,<span class="keyword">struct</span> BCone_C,&amp;info);DSDPCHKERR(info);
<a name="l00473"></a>00473   bcone-&gt;keyid=BKEY;
<a name="l00474"></a>00474   *dspcone=bcone;
<a name="l00475"></a>00475   <span class="comment">/* info=DSDPAddBounds(dsdp,bcone);DSDPCHKERR(info); */</span>
<a name="l00476"></a>00476   info=BConeOperationsInitialize(&amp;kops); DSDPCHKERR(info);
<a name="l00477"></a>00477   info=<a class="code" href="dsdpcone__impl_8h.html#ae305676af8ca6fb9340d129b392c0f4d" title="Apply DSDP to a conic structure.">DSDPAddCone</a>(dsdp,&amp;kops,(<span class="keywordtype">void</span>*)bcone); DSDPCHKERR(info);
<a name="l00478"></a>00478   info=<a class="code" href="group__DSDPSolution.html#gae212bb3666f5c021f9d310a49438e94b" title="Copy the number of variables y.">DSDPGetNumberOfVariables</a>(dsdp,&amp;m);DSDPCHKERR(info);
<a name="l00479"></a>00479   bcone-&gt;nn=0;
<a name="l00480"></a>00480   bcone-&gt;m=m;
<a name="l00481"></a>00481   bcone-&gt;muscale=1.0;
<a name="l00482"></a>00482   bcone-&gt;r=1.0;
<a name="l00483"></a>00483   bcone-&gt;nnmax=0;
<a name="l00484"></a>00484   bcone-&gt;xuout=0;
<a name="l00485"></a>00485   DSDPFunctionReturn(0); 
<a name="l00486"></a>00486 }
<a name="l00487"></a>00487 
<a name="l00488"></a>00488 
<a name="l00489"></a>00489 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00490"></a>00490 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeScaleBarrier&quot;</span>
<a name="l00491"></a>00491 <span class="preprocessor"></span><span class="keywordtype">int</span> BConeScaleBarrier(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone,<span class="keywordtype">double</span> muscale){
<a name="l00492"></a>00492   DSDPFunctionBegin;
<a name="l00493"></a>00493   BConeValid(bcone);
<a name="l00494"></a>00494   <span class="keywordflow">if</span> (muscale&gt;0){
<a name="l00495"></a>00495     bcone-&gt;muscale=muscale;
<a name="l00496"></a>00496   }
<a name="l00497"></a>00497   DSDPFunctionReturn(0); 
<a name="l00498"></a>00498 }
<a name="l00499"></a>00499 
<a name="l00500"></a>00500 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00501"></a>00501 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeCopyX&quot;</span>
<a name="l00502"></a>00502 <span class="preprocessor"></span>
<a name="l00517"></a><a class="code" href="group__Bounds.html#ga07bca4d64dd4dfd3f7a77d59c7694c87">00517</a> <span class="keywordtype">int</span> <a class="code" href="group__Bounds.html#ga07bca4d64dd4dfd3f7a77d59c7694c87" title="Copy the variables into arrays.">BConeCopyX</a>(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone,<span class="keywordtype">double</span> xl[], <span class="keywordtype">double</span> xu[], <span class="keywordtype">int</span> m){
<a name="l00518"></a>00518   <span class="keywordtype">int</span> i,ii,*ib,nn;
<a name="l00519"></a>00519   <span class="keywordtype">double</span> *xx,*au;
<a name="l00520"></a>00520   DSDPFunctionBegin;
<a name="l00521"></a>00521   BConeValid(bcone);
<a name="l00522"></a>00522   <span class="keywordflow">if</span> (m!=bcone-&gt;m){ DSDPSETERR1(6,<span class="stringliteral">&quot;Invalid Array Length.\n&quot;</span>,bcone-&gt;m);}
<a name="l00523"></a>00523   xx=bcone-&gt;ux; au=bcone-&gt;au; nn=bcone-&gt;nn; ib=bcone-&gt;ib;
<a name="l00524"></a>00524   <span class="keywordflow">for</span> (i=0;i&lt;m;i++){
<a name="l00525"></a>00525     xl[i]=0;xu[i]=0;
<a name="l00526"></a>00526   }
<a name="l00527"></a>00527   <span class="keywordflow">for</span> (i=0;i&lt;nn;i++){
<a name="l00528"></a>00528     ii=ib[i]-1;
<a name="l00529"></a>00529     <span class="keywordflow">if</span> (au[i]&lt;0){
<a name="l00530"></a>00530       xl[ii]+=xx[i];
<a name="l00531"></a>00531     } <span class="keywordflow">else</span> {
<a name="l00532"></a>00532       xu[ii]+=xx[i];
<a name="l00533"></a>00533     }
<a name="l00534"></a>00534   }
<a name="l00535"></a>00535   DSDPFunctionReturn(0); 
<a name="l00536"></a>00536 }
<a name="l00537"></a>00537 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00538"></a>00538 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSetBound&quot;</span>
<a name="l00539"></a>00539 <span class="preprocessor"></span><span class="keywordtype">int</span> BConeSetBound(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone,<span class="keywordtype">int</span> vari, <span class="keywordtype">double</span> ai, <span class="keywordtype">double</span> bound){
<a name="l00540"></a>00540   <span class="keywordtype">int</span> spot,info;
<a name="l00541"></a>00541   DSDPFunctionBegin;
<a name="l00542"></a>00542   BConeValid(bcone);
<a name="l00543"></a>00543   <span class="keywordflow">if</span> (vari&lt;1 || vari&gt;bcone-&gt;m){ DSDPSETERR2(6,<span class="stringliteral">&quot;Invalid Variable number 1 &lt;= %d &lt;= %d.\n&quot;</span>,vari,bcone-&gt;m);}
<a name="l00544"></a>00544   <span class="keywordflow">if</span> (bcone-&gt;nn&gt;=bcone-&gt;nnmax){
<a name="l00545"></a>00545     DSDPLogInfo(0,19,<span class="stringliteral">&quot;REALLOCATING SPACE FOR BOUNDS! %d \n&quot;</span>,bcone-&gt;nnmax);
<a name="l00546"></a>00546     info=<a class="code" href="group__Bounds.html#gade1222d9b36e71a1b9a97fb7ffc07e76" title="Set a surplus variable in constraint in (P).">BConeAllocateBounds</a>(bcone,2*bcone-&gt;nn+4);DSDPCHKERR(info);
<a name="l00547"></a>00547   }
<a name="l00548"></a>00548   spot=bcone-&gt;nn;
<a name="l00549"></a>00549   bcone-&gt;u[spot]=bound;
<a name="l00550"></a>00550   bcone-&gt;au[spot]=ai;
<a name="l00551"></a>00551   bcone-&gt;ib[spot]=vari;
<a name="l00552"></a>00552   bcone-&gt;nn++;
<a name="l00553"></a>00553   DSDPFunctionReturn(0); 
<a name="l00554"></a>00554 }
<a name="l00555"></a>00555 
<a name="l00556"></a>00556 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00557"></a>00557 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSetLowerBound&quot;</span>
<a name="l00558"></a>00558 <span class="preprocessor"></span>
<a name="l00566"></a><a class="code" href="group__Bounds.html#ga297f00a5e6f5879e63d12eca63dbc715">00566</a> <span class="keywordtype">int</span> <a class="code" href="group__Bounds.html#ga297f00a5e6f5879e63d12eca63dbc715" title="Set a lower bound on a variable y.">BConeSetLowerBound</a>(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone,<span class="keywordtype">int</span> vari, <span class="keywordtype">double</span> lbound){
<a name="l00567"></a>00567   <span class="keywordtype">int</span> info;
<a name="l00568"></a>00568   DSDPFunctionBegin;
<a name="l00569"></a>00569   info=BConeSetBound(bcone,vari,-1.0,-lbound);DSDPCHKERR(info);
<a name="l00570"></a>00570   DSDPFunctionReturn(0); 
<a name="l00571"></a>00571 }
<a name="l00572"></a>00572 
<a name="l00573"></a>00573 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00574"></a>00574 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSetUpperBound&quot;</span>
<a name="l00575"></a>00575 <span class="preprocessor"></span>
<a name="l00583"></a><a class="code" href="group__Bounds.html#ga28c140fa13c908eaae22fb4c087ea2ea">00583</a> <span class="keywordtype">int</span> <a class="code" href="group__Bounds.html#ga28c140fa13c908eaae22fb4c087ea2ea" title="Set an upper bound on a variable y.">BConeSetUpperBound</a>(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone,<span class="keywordtype">int</span> vari, <span class="keywordtype">double</span> ubound){
<a name="l00584"></a>00584   <span class="keywordtype">int</span> info;
<a name="l00585"></a>00585   DSDPFunctionBegin;
<a name="l00586"></a>00586   info=BConeSetBound(bcone,vari,1.0,ubound);DSDPCHKERR(info);
<a name="l00587"></a>00587   DSDPFunctionReturn(0); 
<a name="l00588"></a>00588 }
<a name="l00589"></a>00589 
<a name="l00590"></a>00590 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00591"></a>00591 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSetPSlackVariable&quot;</span>
<a name="l00592"></a>00592 <span class="preprocessor"></span>
<a name="l00607"></a><a class="code" href="group__Bounds.html#gae139bf5bb64763263a3605f97d4f5526">00607</a> <span class="keywordtype">int</span> <a class="code" href="group__Bounds.html#gae139bf5bb64763263a3605f97d4f5526" title="Set a slack variable to a constraint in (P).">BConeSetPSlackVariable</a>(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone,<span class="keywordtype">int</span> vari){
<a name="l00608"></a>00608   <span class="keywordtype">int</span> info;
<a name="l00609"></a>00609   DSDPFunctionBegin;
<a name="l00610"></a>00610   info=<a class="code" href="group__Bounds.html#ga28c140fa13c908eaae22fb4c087ea2ea" title="Set an upper bound on a variable y.">BConeSetUpperBound</a>(bcone,vari,0);DSDPCHKERR(info);
<a name="l00611"></a>00611   DSDPFunctionReturn(0); 
<a name="l00612"></a>00612 }
<a name="l00613"></a>00613 
<a name="l00614"></a>00614 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00615"></a>00615 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSetPSurplusVariable&quot;</span>
<a name="l00616"></a>00616 <span class="preprocessor"></span>
<a name="l00624"></a><a class="code" href="group__Bounds.html#gaa135107aae25d342c061838ca7690036">00624</a> <span class="keywordtype">int</span> <a class="code" href="group__Bounds.html#gaa135107aae25d342c061838ca7690036" title="Set a surplus variable in constraint in (P).">BConeSetPSurplusVariable</a>(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone,<span class="keywordtype">int</span> vari){
<a name="l00625"></a>00625   <span class="keywordtype">int</span> info;
<a name="l00626"></a>00626   DSDPFunctionBegin;
<a name="l00627"></a>00627   info=<a class="code" href="group__Bounds.html#ga297f00a5e6f5879e63d12eca63dbc715" title="Set a lower bound on a variable y.">BConeSetLowerBound</a>(bcone,vari,0);DSDPCHKERR(info);
<a name="l00628"></a>00628   DSDPFunctionReturn(0); 
<a name="l00629"></a>00629 }
<a name="l00630"></a>00630 
<a name="l00631"></a>00631 <span class="preprocessor">#undef __FUNCT__  </span>
<a name="l00632"></a>00632 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeAllocateBounds&quot;</span>
<a name="l00633"></a>00633 <span class="preprocessor"></span>
<a name="l00645"></a><a class="code" href="group__Bounds.html#gade1222d9b36e71a1b9a97fb7ffc07e76">00645</a> <span class="keywordtype">int</span> <a class="code" href="group__Bounds.html#gade1222d9b36e71a1b9a97fb7ffc07e76" title="Set a surplus variable in constraint in (P).">BConeAllocateBounds</a>(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone, <span class="keywordtype">int</span> nnz){
<a name="l00646"></a>00646   <span class="keywordtype">int</span> j,info,*uindex;
<a name="l00647"></a>00647   <span class="keywordtype">double</span> *uu,*au;
<a name="l00648"></a>00648 
<a name="l00649"></a>00649   DSDPFunctionBegin;
<a name="l00650"></a>00650   BConeValid(bcone);
<a name="l00651"></a>00651   <span class="keywordflow">if</span> (nnz&lt;=bcone-&gt;nnmax){DSDPFunctionReturn(0);}
<a name="l00652"></a>00652   DSDPCALLOC2(&amp;uu,<span class="keywordtype">double</span>,(nnz),&amp;info); DSDPCHKERR(info);
<a name="l00653"></a>00653   DSDPCALLOC2(&amp;au,<span class="keywordtype">double</span>,(nnz),&amp;info); DSDPCHKERR(info);
<a name="l00654"></a>00654   DSDPCALLOC2(&amp;uindex,<span class="keywordtype">int</span>,(nnz),&amp;info); DSDPCHKERR(info);
<a name="l00655"></a>00655   <span class="keywordflow">for</span> (j=0;j&lt;nnz;j++){uu[j]=0; uindex[j]=0; au[j]=0;}
<a name="l00656"></a>00656   <span class="keywordflow">if</span> (bcone-&gt;nnmax&gt;0){
<a name="l00657"></a>00657     <span class="keywordflow">for</span> (j=0;j&lt;bcone-&gt;nn;j++){uu[j]=bcone-&gt;u[j];}
<a name="l00658"></a>00658     <span class="keywordflow">for</span> (j=0;j&lt;bcone-&gt;nn;j++){uindex[j]=bcone-&gt;ib[j];}
<a name="l00659"></a>00659     <span class="keywordflow">for</span> (j=0;j&lt;bcone-&gt;nn;j++){au[j]=bcone-&gt;au[j];}
<a name="l00660"></a>00660     DSDPFREE(&amp;bcone-&gt;u,&amp;info);DSDPCHKERR(info);
<a name="l00661"></a>00661     DSDPFREE(&amp;bcone-&gt;au,&amp;info);DSDPCHKERR(info);
<a name="l00662"></a>00662     DSDPFREE(&amp;bcone-&gt;ib,&amp;info);DSDPCHKERR(info);
<a name="l00663"></a>00663   } <span class="keywordflow">else</span> {
<a name="l00664"></a>00664     bcone-&gt;nn=0;
<a name="l00665"></a>00665   }
<a name="l00666"></a>00666   bcone-&gt;nnmax=nnz;
<a name="l00667"></a>00667   bcone-&gt;u=uu;
<a name="l00668"></a>00668   bcone-&gt;au=au;
<a name="l00669"></a>00669   bcone-&gt;ib=uindex;
<a name="l00670"></a>00670   DSDPFunctionReturn(0);
<a name="l00671"></a>00671 }
<a name="l00672"></a>00672 
<a name="l00673"></a>00673 <span class="preprocessor">#undef __FUNCT__</span>
<a name="l00674"></a>00674 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCT__ &quot;BConeSetXArray&quot;</span>
<a name="l00675"></a>00675 <span class="preprocessor"></span><span class="keywordtype">int</span> BConeSetXArray(<a class="code" href="dsdp5_8h.html#a266598a85e3c9c12e8706e21cf7f0f45" title="The BCone object points to lower and upper bounds on the variable y in (D).">BCone</a> bcone,<span class="keywordtype">double</span> *xuout, <span class="keywordtype">int</span> n){
<a name="l00676"></a>00676   DSDPFunctionBegin;
<a name="l00677"></a>00677   BConeValid(bcone);
<a name="l00678"></a>00678   <span class="keywordflow">if</span> (n==bcone-&gt;nn) bcone-&gt;xuout=xuout;
<a name="l00679"></a>00679   DSDPFunctionReturn(0); 
<a name="l00680"></a>00680 }
<a name="l00681"></a>00681 
</pre></div></div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Wed Jun 8 2011 for DSDP by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>