VYPR
High severityNVD Advisory· Published Dec 17, 2021· Updated Aug 4, 2024

CVE-2021-41500

CVE-2021-41500

Description

Incomplete string comparison vulnerability exits in cvxopt.org cvxop <= 1.2.6 in APIs (cvxopt.cholmod.diag, cvxopt.cholmod.getfactor, cvxopt.cholmod.solve, cvxopt.cholmod.spsolve), which allows attackers to conduct Denial of Service attacks by construct fake Capsule objects.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Incomplete string comparison in cvxopt <=1.2.6 allows attackers to cause denial of service via crafted Capsule objects in Cholmod API functions.

Vulnerability

The vulnerability is an incomplete string comparison in the cvxopt library (Python convex optimization) versions up to and including 1.2.6. It affects the Cholmod module APIs: cvxopt.cholmod.diag, cvxopt.cholmod.getfactor, cvxopt.cholmod.solve, and cvxopt.cholmod.spsolve. The flaw allows attackers to construct fake Capsule objects that bypass proper type checking, leading to a denial of service condition. [1][3]

Exploitation

An attacker needs to be able to call the affected APIs with a crafted Capsule object. No authentication is required if the application exposes these functions to untrusted input. The attacker constructs a fake Capsule that passes the incomplete string comparison, causing the library to crash or hang. [1]

Impact

Successful exploitation results in denial of service (DoS) – the application becomes unresponsive or crashes. The impact is limited to availability; no data confidentiality or integrity is compromised. [1][3]

Mitigation

The vulnerability is fixed in cvxopt version 1.2.7, released on 2021-12-17 (the same day as the CVE publication). Users should upgrade to 1.2.7 or later. No workarounds are documented. [2][4]

AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
cvxoptPyPI
< 1.2.71.2.7

Affected products

3

Patches

1
d5a21cf1da62

Update to 1.2.7 (#199)

https://github.com/cvxopt/cvxoptMartin AndersenSep 20, 2021via ghsa
28 files changed · +1112 2519
  • doc/html/blas.html+106 212 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>The BLAS Interface &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="The LAPACK Interface" href="lapack.html" />
         <link rel="prev" title="Dense and Sparse Matrices" href="matrices.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -110,71 +62,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>The BLAS Interface</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="the-blas-interface">
    -<span id="c-blas"></span><h1>The BLAS Interface<a class="headerlink" href="#the-blas-interface" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="the-blas-interface">
    +<span id="c-blas"></span><h1>The BLAS Interface<a class="headerlink" href="#the-blas-interface" title="Permalink to this headline"></a></h1>
     <p>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">cvxopt.blas</span></code> module provides an interface to the double-precision
     real and complex Basic Linear Algebra Subprograms (BLAS).  The names and
     calling sequences of the Python functions in the interface closely match
    @@ -210,8 +122,8 @@
     ACM Transactions on Mathematical Software, 16(1), 1-17, 1990.</p></li>
     </ul>
     </div>
    -<div class="section" id="matrix-classes">
    -<span id="s-conventions"></span><h2>Matrix Classes<a class="headerlink" href="#matrix-classes" title="Permalink to this headline">¶</a></h2>
    +<section id="matrix-classes">
    +<span id="s-conventions"></span><h2>Matrix Classes<a class="headerlink" href="#matrix-classes" title="Permalink to this headline"></a></h2>
     <p>The BLAS exploit several types of matrix structure: symmetric, Hermitian,
     triangular, and banded.   We represent all these matrix classes by dense
     real or complex <a class="reference internal" href="matrices.html#cvxopt.matrix" title="cvxopt.matrix"><code class="xref py py-class docutils literal notranslate"><span class="pre">matrix</span></code></a> objects, with additional
    @@ -474,13 +386,13 @@
     submatrices for in-place operations.  The complete specification is
     documented in the docstrings of the source code, and can be viewed with the
     <strong class="program">pydoc</strong> help program.</p>
    -</div>
    -<div class="section" id="level-1-blas">
    -<span id="s-blas-1"></span><h2>Level 1 BLAS<a class="headerlink" href="#level-1-blas" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="level-1-blas">
    +<span id="s-blas-1"></span><h2>Level 1 BLAS<a class="headerlink" href="#level-1-blas" title="Permalink to this headline"></a></h2>
     <p>The level 1 functions implement vector operations.</p>
     <dl class="py function">
    -<dt id="cvxopt.blas.scal">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">scal</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">alpha</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.scal" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.scal">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">scal</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">alpha</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.scal" title="Permalink to this definition"></a></dt>
     <dd><p>Scales a vector by a constant:</p>
     <div class="math">
     <p><img src="_images/math/5052552450b786edab8e0415c96dfa848bc40be1.png" alt="x := \alpha x."/></p>
    @@ -490,25 +402,25 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.nrm2">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">nrm2</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.nrm2" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.nrm2">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">nrm2</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.nrm2" title="Permalink to this definition"></a></dt>
     <dd><p>Euclidean norm of a vector:  returns</p>
     <div class="math">
     <p><img src="_images/math/161320f045cc4315c31907ec05fe170909e3c274.png" alt="\|x\|_2."/></p>
     </div></dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.asum">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">asum</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.asum" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.asum">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">asum</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.asum" title="Permalink to this definition"></a></dt>
     <dd><p>1-Norm of a vector: returns</p>
     <div class="math">
     <p><img src="_images/math/42e6ff06c5afcf7438f6b7bd0027c3c738feceb6.png" alt="\|x\|_1 \quad \mbox{($x$ real)}, \qquad
     \|\Re x\|_1 + \|\Im x\|_1 \quad \mbox{($x$ complex)}."/></p>
     </div></dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.iamax">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">iamax</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.iamax" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.iamax">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">iamax</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.iamax" title="Permalink to this definition"></a></dt>
     <dd><p>Returns</p>
     <div class="math">
     <p><img src="_images/math/56ac83c03464e42463c625f1f9ef1833a2927d2e.png" alt="\mathop{\rm argmax}_{k=0,\ldots,n-1} |x_k| \quad \mbox{($x$ real)},
    @@ -520,8 +432,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.swap">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">swap</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.swap" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.swap">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">swap</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.swap" title="Permalink to this definition"></a></dt>
     <dd><p>Interchanges two vectors:</p>
     <div class="math">
     <p><img src="_images/math/146bec31bf294e89657786d59d21f9c4307ed72f.png" alt="x \leftrightarrow y."/></p>
    @@ -530,8 +442,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.copy">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">copy</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.copy" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.copy">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.copy" title="Permalink to this definition"></a></dt>
     <dd><p>Copies a vector to another vector:</p>
     <div class="math">
     <p><img src="_images/math/ac0d697baa79826d5fa42ee6fb1be506ff2ac3f8.png" alt="y := x."/></p>
    @@ -540,8 +452,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.axpy">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">axpy</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.axpy" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.axpy">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">axpy</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.axpy" title="Permalink to this definition"></a></dt>
     <dd><p>Constant times a vector plus a vector:</p>
     <div class="math">
     <p><img src="_images/math/4f58d165825711e6619115afb28c246c00440fa2.png" alt="y := \alpha x + y."/></p>
    @@ -552,8 +464,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.dot">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">dot</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.dot" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.dot">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">dot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.dot" title="Permalink to this definition"></a></dt>
     <dd><p>Returns</p>
     <div class="math">
     <p><img src="_images/math/bd466edf158386c56b457fb6aeb74b97766afdc6.png" alt="x^Hy."/></p>
    @@ -562,24 +474,24 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.dotu">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">dotu</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.dotu" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.dotu">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">dotu</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.dotu" title="Permalink to this definition"></a></dt>
     <dd><p>Returns</p>
     <div class="math">
     <p><img src="_images/math/1e913e459d7bcb538986828dad39d548fa73228f.png" alt="x^Ty."/></p>
     </div><p><code class="docutils literal notranslate"><span class="pre">x</span></code> and <code class="docutils literal notranslate"><span class="pre">y</span></code> are matrices of the same type (<code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code> or
     <code class="xref py py-const docutils literal notranslate"><span class="pre">'z'</span></code>).</p>
     </dd></dl>
     
    -</div>
    -<div class="section" id="level-2-blas">
    -<span id="s-blas-2"></span><h2>Level 2 BLAS<a class="headerlink" href="#level-2-blas" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="level-2-blas">
    +<span id="s-blas-2"></span><h2>Level 2 BLAS<a class="headerlink" href="#level-2-blas" title="Permalink to this headline"></a></h2>
     <p>The level 2 functions implement matrix-vector products and rank-1 and
     rank-2 matrix updates.  Different types of matrix structure can be exploited
     using the conventions of the section <a class="reference internal" href="#s-conventions"><span class="std std-ref">Matrix Classes</span></a>.</p>
     <dl class="py function">
    -<dt id="cvxopt.blas.gemv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">gemv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.gemv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.gemv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">gemv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.gemv" title="Permalink to this definition"></a></dt>
     <dd><p>Matrix-vector product with a general matrix:</p>
     <div class="math">
     <p><img src="_images/math/a810215e77878dec996b87e0d3007d8a6ded6b3c.png" alt="y &amp; := \alpha Ax + \beta y \quad
    @@ -594,8 +506,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.symv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">symv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.symv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.symv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">symv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.symv" title="Permalink to this definition"></a></dt>
     <dd><p>Matrix-vector  product with a real symmetric matrix:</p>
     <div class="math">
     <p><img src="_images/math/3f7c5e248ea93d509e428921ea91f68e03f1b029.png" alt="y := \alpha A x + \beta y,"/></p>
    @@ -605,8 +517,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.hemv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">hemv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.hemv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.hemv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">hemv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.hemv" title="Permalink to this definition"></a></dt>
     <dd><p>Matrix-vector  product with a real symmetric or complex Hermitian
     matrix:</p>
     <div class="math">
    @@ -618,8 +530,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.trmv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">trmv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.trmv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.trmv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">trmv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.trmv" title="Permalink to this definition"></a></dt>
     <dd><p>Matrix-vector  product with a triangular matrix:</p>
     <div class="math">
     <p><img src="_images/math/0e95b3c9bb477c1d27aa253d83fe2d3e1922b3ef.png" alt="x &amp; := Ax \quad (\mathrm{trans} = \mathrm{'N'}), \\
    @@ -630,8 +542,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.trsv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">trsv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.trsv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.trsv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">trsv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.trsv" title="Permalink to this definition"></a></dt>
     <dd><p>Solution of a nonsingular triangular set of linear equations:</p>
     <div class="math">
     <p><img src="_images/math/11969d386f3f62d281586721cb47b9bc640ea082.png" alt="x &amp; := A^{-1}x \quad (\mathrm{trans} = \mathrm{'N'}), \\
    @@ -643,8 +555,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.gbmv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">gbmv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">m</span></em>, <em class="sig-param"><span class="pre">kl</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.gbmv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.gbmv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">gbmv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">m</span></em>, <em class="sig-param"><span class="pre">kl</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.gbmv" title="Permalink to this definition"></a></dt>
     <dd><p>Matrix-vector product with a general band matrix:</p>
     <div class="math">
     <p><img src="_images/math/eb873a106ad1868e288ae26783dd930d360fdef5.png" alt="y &amp; := \alpha Ax + \beta y \quad
    @@ -660,8 +572,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.sbmv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">sbmv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.sbmv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.sbmv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">sbmv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.sbmv" title="Permalink to this definition"></a></dt>
     <dd><p>Matrix-vector  product with a real symmetric band matrix:</p>
     <div class="math">
     <p><img src="_images/math/5dacf40fdb001db01bc47f5b86fcb7ce6dc4a0e2.png" alt="y := \alpha Ax + \beta y,"/></p>
    @@ -671,8 +583,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.hbmv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">hbmv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.hbmv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.hbmv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">hbmv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.hbmv" title="Permalink to this definition"></a></dt>
     <dd><p>Matrix-vector  product with a real symmetric or complex Hermitian band
     matrix:</p>
     <div class="math">
    @@ -684,8 +596,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.tbmv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">tbmv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.tbmv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.tbmv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">tbmv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.tbmv" title="Permalink to this definition"></a></dt>
     <dd><p>Matrix-vector  product with a triangular band matrix:</p>
     <div class="math">
     <p><img src="_images/math/81787f23988417db8fee122d8cc6141a1985c4b7.png" alt="x &amp; := Ax \quad (\mathrm{trans} = \mathrm{'N'}), \\
    @@ -696,8 +608,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.tbsv">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">tbsv</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.tbsv" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.tbsv">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">tbsv</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.tbsv" title="Permalink to this definition"></a></dt>
     <dd><p>Solution of a triangular banded set of linear equations:</p>
     <div class="math">
     <p><img src="_images/math/d5a4cdcdf8e599dc8e0d8a8c1301f02f9e8b4fb3.png" alt="x &amp; := A^{-1}x \quad (\mathrm{trans} = \mathrm{'N'}), \\
    @@ -709,8 +621,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.ger">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">ger</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.ger" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.ger">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">ger</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.ger" title="Permalink to this definition"></a></dt>
     <dd><p>General rank-1 update:</p>
     <div class="math">
     <p><img src="_images/math/81868e29eaf33185bcc60e1d6ff7b0e307f2f892.png" alt="A := A + \alpha x y^H,"/></p>
    @@ -720,8 +632,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.geru">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">geru</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.geru" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.geru">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">geru</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.geru" title="Permalink to this definition"></a></dt>
     <dd><p>General rank-1 update:</p>
     <div class="math">
     <p><img src="_images/math/05c3b434aba8ec5e2ac1cdfcc3e3bb7ca8a69775.png" alt="A := A + \alpha x y^T,"/></p>
    @@ -731,8 +643,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.syr">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">syr</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.syr" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.syr">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">syr</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.syr" title="Permalink to this definition"></a></dt>
     <dd><p>Symmetric rank-1 update:</p>
     <div class="math">
     <p><img src="_images/math/8cb2d6eb037326c227a257ebad6eae725bd40148.png" alt="A := A + \alpha xx^T,"/></p>
    @@ -741,8 +653,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.her">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">her</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.her" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.her">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">her</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.her" title="Permalink to this definition"></a></dt>
     <dd><p>Hermitian rank-1 update:</p>
     <div class="math">
     <p><img src="_images/math/26e45da42a12ddc160256fb6cbbb944eeba0dee8.png" alt="A := A + \alpha xx^H,"/></p>
    @@ -752,8 +664,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.syr2">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">syr2</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.syr2" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.syr2">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">syr2</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.syr2" title="Permalink to this definition"></a></dt>
     <dd><p>Symmetric rank-2  update:</p>
     <div class="math">
     <p><img src="_images/math/73e26546f3f051d6cc494fa37072d2eac9856ac1.png" alt="A := A + \alpha (xy^T + yx^T),"/></p>
    @@ -762,8 +674,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.her2">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">her2</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.her2" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.her2">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">her2</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">y</span></em>, <em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.her2" title="Permalink to this definition"></a></dt>
     <dd><p>Symmetric rank-2  update:</p>
     <div class="math">
     <p><img src="_images/math/d2241f81f782d8593f9390f06af621fd3be21ab8.png" alt="A := A + \alpha xy^H + \bar \alpha yx^H,"/></p>
    @@ -807,13 +719,13 @@
     <span class="go">[ 5.00e-01]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="level-3-blas">
    -<span id="s-blas-3"></span><h2>Level 3 BLAS<a class="headerlink" href="#level-3-blas" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="level-3-blas">
    +<span id="s-blas-3"></span><h2>Level 3 BLAS<a class="headerlink" href="#level-3-blas" title="Permalink to this headline"></a></h2>
     <p>The level 3 BLAS include functions for matrix-matrix multiplication.</p>
     <dl class="py function">
    -<dt id="cvxopt.blas.gemm">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">gemm</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em>, <em class="sig-param"><span class="pre">C</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">transA</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">transB</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.gemm" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.gemm">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">gemm</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em>, <em class="sig-param"><span class="pre">C</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">transA</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">transB</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.gemm" title="Permalink to this definition"></a></dt>
     <dd><p>Matrix-matrix product of two general matrices:</p>
     <div class="math">
     <p><img src="_images/math/bc28eed8cb92072618037ffe78d36cdf031045b0.png" alt="\newcommand{\op}{\mathop{\mathrm{op}}}
    @@ -836,8 +748,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.symm">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">symm</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em>, <em class="sig-param"><span class="pre">C</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">side</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.symm" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.symm">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">symm</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em>, <em class="sig-param"><span class="pre">C</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">side</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.symm" title="Permalink to this definition"></a></dt>
     <dd><p>Product of a real or complex symmetric matrix <img class="math" src="_images/math/211284f68205c3e66773eaf026f32a0acdd3dfb3.png" alt="A"/> and a general
     matrix <img class="math" src="_images/math/4bc3e94a67870b41b7c20179693e889251e2c136.png" alt="B"/>:</p>
     <div class="math">
    @@ -849,8 +761,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.hemm">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">hemm</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em>, <em class="sig-param"><span class="pre">C</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">side</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.hemm" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.hemm">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">hemm</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em>, <em class="sig-param"><span class="pre">C</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">side</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.hemm" title="Permalink to this definition"></a></dt>
     <dd><p>Product of a real symmetric or complex Hermitian matrix <img class="math" src="_images/math/211284f68205c3e66773eaf026f32a0acdd3dfb3.png" alt="A"/> and a
     general matrix <img class="math" src="_images/math/4bc3e94a67870b41b7c20179693e889251e2c136.png" alt="B"/>:</p>
     <div class="math">
    @@ -862,8 +774,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.trmm">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">trmm</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">side</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">transA</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.trmm" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.trmm">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">trmm</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">side</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">transA</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.trmm" title="Permalink to this definition"></a></dt>
     <dd><p>Product of a triangular matrix <img class="math" src="_images/math/211284f68205c3e66773eaf026f32a0acdd3dfb3.png" alt="A"/> and a general matrix <img class="math" src="_images/math/4bc3e94a67870b41b7c20179693e889251e2c136.png" alt="B"/>:</p>
     <div class="math">
     <p><img src="_images/math/7056acd535c8f98331e8dd89e48cc0e927d42b12.png" alt="\newcommand{\op}{\mathop{\mathrm{op}}}
    @@ -884,8 +796,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.trsm">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">trsm</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">side</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">transA</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.trsm" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.trsm">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">trsm</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">side</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">transA</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">diag</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.trsm" title="Permalink to this definition"></a></dt>
     <dd><p>Solution of a nonsingular triangular system of equations:</p>
     <div class="math">
     <p><img src="_images/math/c20519763e75b58870bd25238b358057e2da4b86.png" alt="\newcommand{\op}{\mathop{\mathrm{op}}}
    @@ -907,8 +819,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.syrk">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">syrk</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">C</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.syrk" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.blas.syrk">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></span><span class="sig-name descname"><span class="pre">syrk</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">C</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em>, <em class="sig-param"><span class="pre">alpha</span> <span class="pre">=</span> <span class="pre">1.0</span></em>, <em class="sig-param"><span class="pre">beta</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.blas.syrk" title="Permalink to this definition"></a></dt>
     <dd><p>Rank-<img class="math" src="_images/math/9630132210b904754c9ab272b61cb527d12263ca.png" alt="k"/> update of a real or complex symmetric matrix <img class="math" src="_images/math/4db5b6e16e06f929ce3f675c5e535d06ffb02ff7.png" alt="C"/>:</p>
     <div class="math">
     <p><img src="_images/math/081eab67b8ad47c824c773f9ce571fe5883895bf.png" alt="C &amp; := \alpha AA^T + \beta C \quad
    @@ -921,8 +833,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.blas.herk">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.blas.</span></code><code class="sig-name descname"><span class="pre">herk</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">C</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <sp
    ... [truncated]
    
  • doc/html/c-api.html+45 151 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>C API &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="Matrix Formatting" href="printing.html" />
         <link rel="prev" title="Modeling" href="modeling.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -108,71 +60,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>C API</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="c-api">
    -<span id="c-capi"></span><h1>C API<a class="headerlink" href="#c-api" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="c-api">
    +<span id="c-capi"></span><h1>C API<a class="headerlink" href="#c-api" title="Permalink to this headline"></a></h1>
     <p>The API can be used to extend CVXOPT with interfaces to external C routines
     and libraries.  A C program that creates or manipulates the dense or sparse
     matrix objects defined in CVXOPT must include the <code class="xref py py-const docutils literal notranslate"><span class="pre">cvxopt.h</span></code> header
    @@ -187,7 +99,7 @@
         <span class="n">PyModuleDef_HEAD_INIT</span><span class="p">,</span>
         <span class="s">&quot;blas&quot;</span><span class="p">,</span>
         <span class="n">blas__doc__</span><span class="p">,</span>
    -    <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
    +    <span class="mi">-1</span><span class="p">,</span>
         <span class="n">blas_functions</span><span class="p">,</span>
         <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span>
     <span class="p">};</span>
    @@ -212,8 +124,8 @@
     <span class="cp">#endif</span>
     </pre></div>
     </div>
    -<div class="section" id="dense-matrices">
    -<h2>Dense Matrices<a class="headerlink" href="#dense-matrices" title="Permalink to this headline">¶</a></h2>
    +<section id="dense-matrices">
    +<h2>Dense Matrices<a class="headerlink" href="#dense-matrices" title="Permalink to this headline"></a></h2>
     <p>As can be seen from the header file <code class="xref py py-const docutils literal notranslate"><span class="pre">cvxopt.h</span></code>, a <code class="xref py py-class docutils literal notranslate"><span class="pre">matrix</span></code> is
     essentially a  structure with four fields.  The fields <code class="xref c c-member docutils literal notranslate"><span class="pre">nrows</span></code> and
     <code class="xref c c-member docutils literal notranslate"><span class="pre">ncols</span></code> are two integers that specify the dimensions.  The
    @@ -223,23 +135,23 @@ <h2>Dense Matrices<a class="headerlink" href="#dense-matrices" title="Permalink
     column-major order.</p>
     <p>The following C functions can be used to create matrices.</p>
     <dl class="c function">
    -<dt id="c.Matrix_New">
    -<span class="pre">matrix</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">Matrix_New</span></code><span class="sig-paren">(</span><span class="pre">int</span> <em><span class="pre">nrows</span></em>, <span class="pre">int</span> <em><span class="pre">ncols</span></em>, <span class="pre">int</span> <em><span class="pre">id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.Matrix_New" title="Permalink to this definition">¶</a><br /></dt>
    +<dt class="sig sig-object c" id="c.Matrix_New">
    +<span class="n"><span class="pre">matrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">Matrix_New</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">nrows</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">ncols</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">id</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.Matrix_New" title="Permalink to this definition"></a><br /></dt>
     <dd><p>Returns a <code class="xref py py-class docutils literal notranslate"><span class="pre">matrix</span></code> object of type <cite>id</cite> with <cite>nrows</cite> rows and
     <cite>ncols</cite> columns.  The elements of the matrix are uninitialized.</p>
     </dd></dl>
     
     <dl class="c function">
    -<dt id="c.Matrix_NewFromMatrix">
    -<span class="pre">matrix</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">Matrix_NewFromMatrix</span></code><span class="sig-paren">(</span><span class="pre">matrix</span> <span class="pre">*</span><em><span class="pre">src</span></em>, <span class="pre">int</span> <em><span class="pre">id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.Matrix_NewFromMatrix" title="Permalink to this definition">¶</a><br /></dt>
    +<dt class="sig sig-object c" id="c.Matrix_NewFromMatrix">
    +<span class="n"><span class="pre">matrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">Matrix_NewFromMatrix</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">matrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">src</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">id</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.Matrix_NewFromMatrix" title="Permalink to this definition"></a><br /></dt>
     <dd><p>Returns a copy of the matrix <cite>src</cite> converted to type <cite>id</cite>.  The
     following type conversions are allowed:  <code class="xref py py-const docutils literal notranslate"><span class="pre">'i'</span></code> to <code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code>,
     <code class="xref py py-const docutils literal notranslate"><span class="pre">'i'</span></code> to <code class="xref py py-const docutils literal notranslate"><span class="pre">'z'</span></code>, and <code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code>  to <code class="xref py py-const docutils literal notranslate"><span class="pre">'z'</span></code>.</p>
     </dd></dl>
     
     <dl class="c function">
    -<dt id="c.Matrix_NewFromSequence">
    -<span class="pre">matrix</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">Matrix_NewFromSequence</span></code><span class="sig-paren">(</span><span class="pre">PyListObject</span> <span class="pre">*</span><em><span class="pre">x</span></em>, <span class="pre">int</span> <em><span class="pre">id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.Matrix_NewFromSequence" title="Permalink to this definition">¶</a><br /></dt>
    +<dt class="sig sig-object c" id="c.Matrix_NewFromSequence">
    +<span class="n"><span class="pre">matrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">Matrix_NewFromSequence</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">PyListObject</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">x</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">id</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.Matrix_NewFromSequence" title="Permalink to this definition"></a><br /></dt>
     <dd><p>Creates a matrix of type <cite>id</cite> from the Python sequence type <cite>x</cite>. The
     returned matrix has size <code class="docutils literal notranslate"><span class="pre">(len(x),</span> <span class="pre">1)</span></code>.  The size can be changed
     by modifying the <code class="xref c c-member docutils literal notranslate"><span class="pre">nrows</span></code> and <code class="xref c c-member docutils literal notranslate"><span class="pre">ncols</span></code> fields of the
    @@ -274,9 +186,9 @@ <h2>Dense Matrices<a class="headerlink" href="#dense-matrices" title="Permalink
     <span class="p">}</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="sparse-matrices">
    -<h2>Sparse Matrices<a class="headerlink" href="#sparse-matrices" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="sparse-matrices">
    +<h2>Sparse Matrices<a class="headerlink" href="#sparse-matrices" title="Permalink to this headline"></a></h2>
     <p>Sparse matrices are stored in compressed column storage (CCS) format.  For
     a general <cite>nrows</cite> by <cite>ncols</cite> sparse matrix with <cite>nnz</cite> nonzero entries this
     means the following.  The sparsity pattern and the nonzero values are
    @@ -338,22 +250,22 @@ <h2>Sparse Matrices<a class="headerlink" href="#sparse-matrices" title="Permalin
     values <code class="xref py py-const docutils literal notranslate"><span class="pre">DOUBLE</span></code> and <code class="xref py py-const docutils literal notranslate"><span class="pre">COMPLEX</span></code>.</p>
     <p>Sparse matrices are created using the following functions from the API.</p>
     <dl class="c function">
    -<dt id="c.SpMatrix_New">
    -<span class="pre">spmatrix</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">SpMatrix_New</span></code><span class="sig-paren">(</span><span class="pre">int_t</span> <em><span class="pre">nrows</span></em>, <span class="pre">int_t</span> <em><span class="pre">ncols</span></em>, <span class="pre">int_t</span> <em><span class="pre">nzmax</span></em>, <span class="pre">int</span> <em><span class="pre">id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.SpMatrix_New" title="Permalink to this definition">¶</a><br /></dt>
    +<dt class="sig sig-object c" id="c.SpMatrix_New">
    +<span class="n"><span class="pre">spmatrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">SpMatrix_New</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int_t</span></span><span class="w"> </span><span class="n"><span class="pre">nrows</span></span>, <span class="n"><span class="pre">int_t</span></span><span class="w"> </span><span class="n"><span class="pre">ncols</span></span>, <span class="n"><span class="pre">int_t</span></span><span class="w"> </span><span class="n"><span class="pre">nzmax</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">id</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.SpMatrix_New" title="Permalink to this definition"></a><br /></dt>
     <dd><p>Returns a sparse zero matrix with <cite>nrows</cite> rows and <cite>ncols</cite> columns.
     <cite>nzmax</cite> is the number of elements that will be allocated (the length of
     the <code class="xref c c-member docutils literal notranslate"><span class="pre">values</span></code> and <code class="xref c c-member docutils literal notranslate"><span class="pre">rowind</span></code> fields).</p>
     </dd></dl>
     
     <dl class="c function">
    -<dt id="c.SpMatrix_NewFromMatrix">
    -<span class="pre">spmatrix</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">SpMatrix_NewFromMatrix</span></code><span class="sig-paren">(</span><span class="pre">spmatrix</span> <span class="pre">*</span><em><span class="pre">src</span></em>, <span class="pre">int</span> <em><span class="pre">id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.SpMatrix_NewFromMatrix" title="Permalink to this definition">¶</a><br /></dt>
    +<dt class="sig sig-object c" id="c.SpMatrix_NewFromMatrix">
    +<span class="n"><span class="pre">spmatrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">SpMatrix_NewFromMatrix</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">spmatrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">src</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">id</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.SpMatrix_NewFromMatrix" title="Permalink to this definition"></a><br /></dt>
     <dd><p>Returns a copy the sparse matrix var{src}.</p>
     </dd></dl>
     
     <dl class="c function">
    -<dt id="c.SpMatrix_NewFromIJV">
    -<span class="pre">spmatrix</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">SpMatrix_NewFromIJV</span></code><span class="sig-paren">(</span><span class="pre">matrix</span> <span class="pre">*</span><em><span class="pre">I</span></em>, <span class="pre">matrix</span> <span class="pre">*</span><em><span class="pre">J</span></em>, <span class="pre">matrix</span> <span class="pre">*</span><em><span class="pre">V</span></em>, <span class="pre">int_t</span> <em><span class="pre">nrows</span></em>, <span class="pre">int_t</span> <em><span class="pre">ncols</span></em>, <span class="pre">int</span> <em><span class="pre">id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.SpMatrix_NewFromIJV" title="Permalink to this definition">¶</a><br /></dt>
    +<dt class="sig sig-object c" id="c.SpMatrix_NewFromIJV">
    +<span class="n"><span class="pre">spmatrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">SpMatrix_NewFromIJV</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">matrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">I</span></span>, <span class="n"><span class="pre">matrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">J</span></span>, <span class="n"><span class="pre">matrix</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">V</span></span>, <span class="n"><span class="pre">int_t</span></span><span class="w"> </span><span class="n"><span class="pre">nrows</span></span>, <span class="n"><span class="pre">int_t</span></span><span class="w"> </span><span class="n"><span class="pre">ncols</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">id</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.SpMatrix_NewFromIJV" title="Permalink to this definition"></a><br /></dt>
     <dd><p>Creates a sparse matrix with <cite>nrows</cite> rows and <cite>ncols</cite> columns from a
     triplet description.  <cite>I</cite> and <cite>J</cite> must be integer matrices and <cite>V</cite>
     either a double or complex matrix, or <code class="xref py py-const docutils literal notranslate"><span class="pre">NULL</span></code>. If <cite>V</cite> is
    @@ -385,60 +297,42 @@ <h2>Sparse Matrices<a class="headerlink" href="#sparse-matrices" title="Permalin
     <span class="p">}</span>
     </pre></div>
     </div>
    -</div>
    -</div>
    +</section>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    -        <a href="printing.html" class="btn btn-neutral float-right" title="Matrix Formatting" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="modeling.html" class="btn btn-neutral float-left" title="Modeling" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    +        <a href="printing.html" class="btn btn-neutral float-right" title="Matrix Formatting" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/coneprog.html+74 180 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Cone Programming &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="Nonlinear Convex Optimization" href="solvers.html" />
         <link rel="prev" title="Sparse Linear Equations" href="spsolvers.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -115,71 +67,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Cone Programming</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="cone-programming">
    -<span id="c-coneprog"></span><h1>Cone Programming<a class="headerlink" href="#cone-programming" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="cone-programming">
    +<span id="c-coneprog"></span><h1>Cone Programming<a class="headerlink" href="#cone-programming" title="Permalink to this headline"></a></h1>
     <p>In this chapter we consider convex optimization problems of the form</p>
     <div class="math">
     <p><img src="_images/math/bcfcc32ea50d37180cedf362db80a4901cbc05bd.png" alt="\begin{array}{ll}
    @@ -205,11 +117,11 @@
     be implemented that exploit structure in cone programs.  The last two
     sections describe optional interfaces to external solvers, and the
     algorithm parameters that control the cone programming solvers.</p>
    -<div class="section" id="linear-cone-programs">
    -<span id="s-conelp"></span><h2>Linear Cone Programs<a class="headerlink" href="#linear-cone-programs" title="Permalink to this headline">¶</a></h2>
    +<section id="linear-cone-programs">
    +<span id="s-conelp"></span><h2>Linear Cone Programs<a class="headerlink" href="#linear-cone-programs" title="Permalink to this headline"></a></h2>
     <dl class="py function">
    -<dt id="cvxopt.solvers.conelp">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></code><code class="sig-name descname"><span class="pre">conelp</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">primalstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dualstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">kktsolver</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.conelp" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.solvers.conelp">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></span><span class="sig-name descname"><span class="pre">conelp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">primalstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dualstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">kktsolver</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.conelp" title="Permalink to this definition"></a></dt>
     <dd><p>Solves a pair of primal and dual cone programs</p>
     <div class="math">
     <p><img src="_images/math/9f18ba54fa478c728e3a3536166f874c17aa7c04.png" alt="\begin{array}[t]{ll}
    @@ -475,12 +387,12 @@
     <span class="go">                  68., -30., -19.,  0.,  99.,  23.,  0.,  0.,  10.] )</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="quadratic-cone-programs">
    -<span id="s-coneqp"></span><h2>Quadratic Cone Programs<a class="headerlink" href="#quadratic-cone-programs" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="quadratic-cone-programs">
    +<span id="s-coneqp"></span><h2>Quadratic Cone Programs<a class="headerlink" href="#quadratic-cone-programs" title="Permalink to this headline"></a></h2>
     <dl class="py function">
    -<dt id="cvxopt.solvers.coneqp">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></code><code class="sig-name descname"><span class="pre">coneqp</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">P</span></em>, <em class="sig-param"><span class="pre">q</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">initvals</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">kktsolver</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.coneqp" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.solvers.coneqp">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></span><span class="sig-name descname"><span class="pre">coneqp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">P</span></em>, <em class="sig-param"><span class="pre">q</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">initvals</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">kktsolver</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.coneqp" title="Permalink to this definition"></a></dt>
     <dd><p>Solves a pair of primal and dual quadratic cone programs</p>
     <div class="math">
     <p><img src="_images/math/6d9473d4787aece2804514f0796e6abeb2ce4dda.png" alt="\begin{array}[t]{ll}
    @@ -638,10 +550,10 @@
     b = \left[ \begin{array}{r} 1.5 \\ 0.0 \\ -1.2 \\ -0.7 \\ 0.0
         \end{array} \right]."/></p>
     </div><div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">cvxopt</span> <span class="kn">import</span> <span class="n">matrix</span><span class="p">,</span> <span class="n">solvers</span>
    -<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([</span> <span class="p">[</span> <span class="o">.</span><span class="mi">3</span><span class="p">,</span> <span class="o">-.</span><span class="mi">4</span><span class="p">,</span>  <span class="o">-.</span><span class="mi">2</span><span class="p">,</span>  <span class="o">-.</span><span class="mi">4</span><span class="p">,</span>  <span class="mf">1.3</span> <span class="p">],</span>
    +<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([</span> <span class="p">[</span> <span class="mf">.3</span><span class="p">,</span> <span class="o">-</span><span class="mf">.4</span><span class="p">,</span>  <span class="o">-</span><span class="mf">.2</span><span class="p">,</span>  <span class="o">-</span><span class="mf">.4</span><span class="p">,</span>  <span class="mf">1.3</span> <span class="p">],</span>
     <span class="go">                 [ .6, 1.2, -1.7,   .3,  -.3 ],</span>
     <span class="go">                 [-.3,  .0,   .6, -1.2, -2.0 ] ])</span>
    -<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([</span> <span class="mf">1.5</span><span class="p">,</span> <span class="o">.</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.2</span><span class="p">,</span> <span class="o">-.</span><span class="mi">7</span><span class="p">,</span> <span class="o">.</span><span class="mi">0</span><span class="p">])</span>
    +<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([</span> <span class="mf">1.5</span><span class="p">,</span> <span class="mf">.0</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.2</span><span class="p">,</span> <span class="o">-</span><span class="mf">.7</span><span class="p">,</span> <span class="mf">.0</span><span class="p">])</span>
     <span class="gp">&gt;&gt;&gt; </span><span class="n">m</span><span class="p">,</span> <span class="n">n</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">size</span>
     <span class="gp">&gt;&gt;&gt; </span><span class="n">I</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">n</span><span class="p">))</span>
     <span class="gp">&gt;&gt;&gt; </span><span class="n">I</span><span class="p">[::</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
    @@ -655,16 +567,16 @@
     <span class="go">[ 3.03e-01]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="linear-programming">
    -<span id="s-lpsolver"></span><h2>Linear Programming<a class="headerlink" href="#linear-programming" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="linear-programming">
    +<span id="s-lpsolver"></span><h2>Linear Programming<a class="headerlink" href="#linear-programming" title="Permalink to this headline"></a></h2>
     <p>The function <a class="reference internal" href="#cvxopt.solvers.lp" title="cvxopt.solvers.lp"><code class="xref py py-func docutils literal notranslate"><span class="pre">lp</span></code></a> is an interface to
     <a class="reference internal" href="#cvxopt.solvers.conelp" title="cvxopt.solvers.conelp"><code class="xref py py-func docutils literal notranslate"><span class="pre">conelp</span></code></a> for linear
     programs.  It also provides the option of using the linear programming
     solvers from GLPK or MOSEK.</p>
     <dl class="py function">
    -<dt id="cvxopt.solvers.lp">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></code><code class="sig-name descname"><span class="pre">lp</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">primalstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dualstart</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.lp" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.solvers.lp">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></span><span class="sig-name descname"><span class="pre">lp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">primalstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dualstart</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.lp" title="Permalink to this definition"></a></dt>
     <dd><p>Solves the pair of primal and dual linear programs</p>
     <div class="math">
     <p><img src="_images/math/9f18ba54fa478c728e3a3536166f874c17aa7c04.png" alt="\begin{array}[t]{ll}
    @@ -716,16 +628,16 @@
     <span class="go">[ 1.00e+00]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="quadratic-programming">
    -<span id="s-qp"></span><h2>Quadratic Programming<a class="headerlink" href="#quadratic-programming" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="quadratic-programming">
    +<span id="s-qp"></span><h2>Quadratic Programming<a class="headerlink" href="#quadratic-programming" title="Permalink to this headline"></a></h2>
     <p>The function <a class="reference internal" href="#cvxopt.solvers.qp" title="cvxopt.solvers.qp"><code class="xref py py-func docutils literal notranslate"><span class="pre">qp</span></code></a> is an interface to
     <a class="reference internal" href="#cvxopt.solvers.coneqp" title="cvxopt.solvers.coneqp"><code class="xref py py-func docutils literal notranslate"><span class="pre">coneqp</span></code></a> for quadratic
     programs.  It also provides the option of using the quadratic programming
     solver from MOSEK.</p>
     <dl class="py function">
    -<dt id="cvxopt.solvers.qp">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></code><code class="sig-name descname"><span class="pre">qp</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">P</span></em>, <em class="sig-param"><span class="pre">q</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">initvals</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.qp" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.solvers.qp">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></span><span class="sig-name descname"><span class="pre">qp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">P</span></em>, <em class="sig-param"><span class="pre">q</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">initvals</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.qp" title="Permalink to this definition"></a></dt>
     <dd><p>Solves the pair of primal and dual convex quadratic programs</p>
     <div class="math">
     <p><img src="_images/math/ac5ad3214d3caf44e5cc4e9514908ba2a7bb48dc.png" alt="\begin{array}[t]{ll}
    @@ -798,7 +710,7 @@
                 <span class="p">[</span> <span class="mf">6e-3</span><span class="p">,</span>  <span class="mf">1e-2</span><span class="p">,</span>  <span class="mf">0.0</span><span class="p">,</span>     <span class="mf">0.0</span> <span class="p">],</span>
                 <span class="p">[</span><span class="o">-</span><span class="mf">4e-3</span><span class="p">,</span>  <span class="mf">0.0</span><span class="p">,</span>   <span class="mf">2.5e-3</span><span class="p">,</span>  <span class="mf">0.0</span> <span class="p">],</span>
                 <span class="p">[</span> <span class="mf">0.0</span><span class="p">,</span>   <span class="mf">0.0</span><span class="p">,</span>   <span class="mf">0.0</span><span class="p">,</span>     <span class="mf">0.0</span> <span class="p">]])</span>
    -<span class="n">pbar</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([</span><span class="o">.</span><span class="mi">12</span><span class="p">,</span> <span class="o">.</span><span class="mi">10</span><span class="p">,</span> <span class="o">.</span><span class="mi">07</span><span class="p">,</span> <span class="o">.</span><span class="mi">03</span><span class="p">])</span>
    +<span class="n">pbar</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">([</span><span class="mf">.12</span><span class="p">,</span> <span class="mf">.10</span><span class="p">,</span> <span class="mf">.07</span><span class="p">,</span> <span class="mf">.03</span><span class="p">])</span>
     <span class="n">G</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">n</span><span class="p">))</span>
     <span class="n">G</span><span class="p">[::</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.0</span>
     <span class="n">h</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
    @@ -826,30 +738,30 @@
     <span class="n">c2</span> <span class="o">=</span> <span class="p">[</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">portfolios</span> <span class="p">]</span>
     <span class="n">c3</span> <span class="o">=</span> <span class="p">[</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">portfolios</span> <span class="p">]</span>
     <span class="n">c4</span> <span class="o">=</span> <span class="p">[</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">portfolios</span> <span class="p">]</span>
    -<span class="n">pylab</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">risks</span> <span class="o">+</span> <span class="p">[</span><span class="o">.</span><span class="mi">20</span><span class="p">],</span> <span class="n">c1</span> <span class="o">+</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">],</span> <span class="s1">&#39;#F0F0F0&#39;</span><span class="p">)</span>
    +<span class="n">pylab</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">risks</span> <span class="o">+</span> <span class="p">[</span><span class="mf">.20</span><span class="p">],</span> <span class="n">c1</span> <span class="o">+</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">],</span> <span class="s1">&#39;#F0F0F0&#39;</span><span class="p">)</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">risks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">risks</span><span class="p">,</span> <span class="n">c2</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">c1</span><span class="p">,</span> <span class="n">facecolor</span> <span class="o">=</span> <span class="s1">&#39;#D0D0D0&#39;</span><span class="p">)</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">risks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">risks</span><span class="p">,</span> <span class="n">c3</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">c2</span><span class="p">,</span> <span class="n">facecolor</span> <span class="o">=</span> <span class="s1">&#39;#F0F0F0&#39;</span><span class="p">)</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">risks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">risks</span><span class="p">,</span> <span class="n">c4</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">c3</span><span class="p">,</span> <span class="n">facecolor</span> <span class="o">=</span> <span class="s1">&#39;#D0D0D0&#39;</span><span class="p">)</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">])</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;standard deviation&#39;</span><span class="p">)</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;allocation&#39;</span><span class="p">)</span>
    -<span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="o">.</span><span class="mi">15</span><span class="p">,</span><span class="o">.</span><span class="mi">5</span><span class="p">,</span><span class="s1">&#39;x1&#39;</span><span class="p">)</span>
    -<span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="o">.</span><span class="mi">10</span><span class="p">,</span><span class="o">.</span><span class="mi">7</span><span class="p">,</span><span class="s1">&#39;x2&#39;</span><span class="p">)</span>
    -<span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="o">.</span><span class="mi">05</span><span class="p">,</span><span class="o">.</span><span class="mi">7</span><span class="p">,</span><span class="s1">&#39;x3&#39;</span><span class="p">)</span>
    -<span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="o">.</span><span class="mi">01</span><span class="p">,</span><span class="o">.</span><span class="mi">7</span><span class="p">,</span><span class="s1">&#39;x4&#39;</span><span class="p">)</span>
    +<span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mf">.15</span><span class="p">,</span><span class="mf">.5</span><span class="p">,</span><span class="s1">&#39;x1&#39;</span><span class="p">)</span>
    +<span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mf">.10</span><span class="p">,</span><span class="mf">.7</span><span class="p">,</span><span class="s1">&#39;x2&#39;</span><span class="p">)</span>
    +<span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mf">.05</span><span class="p">,</span><span class="mf">.7</span><span class="p">,</span><span class="s1">&#39;x3&#39;</span><span class="p">)</span>
    +<span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mf">.01</span><span class="p">,</span><span class="mf">.7</span><span class="p">,</span><span class="s1">&#39;x4&#39;</span><span class="p">)</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Optimal allocations (fig 4.12)&#39;</span><span class="p">)</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="second-order-cone-programming">
    -<span id="s-socpsolver"></span><h2>Second-Order Cone Programming<a class="headerlink" href="#second-order-cone-programming" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="second-order-cone-programming">
    +<span id="s-socpsolver"></span><h2>Second-Order Cone Programming<a class="headerlink" href="#second-order-cone-programming" title="Permalink to this headline"></a></h2>
     <p>The function <a class="reference internal" href="#cvxopt.solvers.socp" title="cvxopt.solvers.socp"><code class="xref py py-func docutils literal notranslate"><span class="pre">socp</span></code></a> is a simpler interface to
     <a class="reference internal" href="#cvxopt.solvers.conelp" title="cvxopt.solvers.conelp"><code class="xref py py-func docutils literal notranslate"><span class="pre">conelp</span></code></a> for
     cone programs with no linear matrix inequality constraints.</p>
     <dl class="py function">
    -<dt id="cvxopt.solvers.socp">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></code><code class="sig-name descname"><span class="pre">socp</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">Gl</span></em>, <em class="sig-param"><span class="pre">hl</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">Gq</span></em>, <em class="sig-param"><span class="pre">hq</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">primalstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dualstart</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.socp" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.solvers.socp">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></span><span class="sig-name descname"><span class="pre">socp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">Gl</span></em>, <em class="sig-param"><span class="pre">hl</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">Gq</span></em>, <em class="sig-param"><span class="pre">hq</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">primalstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dualstart</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.socp" title="Permalink to this definition"></a></dt>
     <dd><p>Solves the pair of primal and dual second-order cone programs</p>
     <div class="math">
     <p><img src="_images/math/32cab048b453581f0ca59dc31e33e56b7c8b3a0e.png" alt="\begin{array}[t]{ll}
    @@ -965,16 +877,16 @@
     <span class="go">[-5.17e-01]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="semidefinite-programming">
    -<span id="s-sdpsolver"></span><h2>Semidefinite Programming<a class="headerlink" href="#semidefinite-programming" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="semidefinite-programming">
    +<span id="s-sdpsolver"></span><h2>Semidefinite Programming<a class="headerlink" href="#semidefinite-programming" title="Permalink to this headline"></a></h2>
     <p>The function <a class="reference internal" href="#cvxopt.solvers.sdp" title="cvxopt.solvers.sdp"><code class="xref py py-func docutils literal notranslate"><span class="pre">sdp</span></code></a> is a simple interface to
     <a class="reference internal" href="#cvxopt.solvers.conelp" title="cvxopt.solvers.conelp"><code class="xref py py-func docutils literal notranslate"><span class="pre">conelp</span></code></a> for cone
     programs with no second-order cone constraints.  It also provides the
     option of using the DSDP semidefinite programming solver.</p>
     <dl class="py function">
    -<dt id="cvxopt.solvers.sdp">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></code><code class="sig-name descname"><span class="pre">sdp</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">Gl</span></em>, <em class="sig-param"><span class="pre">hl</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">Gs</span></em>, <em class="sig-param"><span class="pre">hs</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">primalstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dualstart</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.sdp" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.solvers.sdp">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></span><span class="sig-name descname"><span class="pre">sdp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">Gl</span></em>, <em class="sig-param"><span class="pre">hl</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">Gs</span></em>, <em class="sig-param"><span class="pre">hs</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">primalstart</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dualstart</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.sdp" title="Permalink to this definition"></a></dt>
     <dd><p>Solves the pair of primal and dual semidefinite programs</p>
     <div class="math">
     <p><img src="_images/math/191bc203fa207a53847c892bc9bc56a69a1c60c1.png" alt="\newcommand{\svec}{\mathop{\mathbf{vec}}}
    @@ -1140,9 +1052,9 @@
     <span class="gp">&gt;&gt;&gt; </span><span class="n">h</span> <span class="o">+=</span> <span class="p">[</span> <span class="n">matrix</span><span class="p">([[</span><span class="mf">14.</span><span class="p">,</span> <span class="mf">9.</span><span class="p">,</span> <span class="mf">40.</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">91.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">],</span> <span class="p">[</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">15.</span><span class="p">]])</span> <span class="p">]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="exploiting-structure">
    -<span id="s-conelp-struct"></span><h2>Exploiting Structure<a class="headerlink" href="#exploiting-structure" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="exploiting-structure">
    +<span id="s-conelp-struct"></span><h2>Exploiting Structure<a class="headerlink" href="#exploiting-structure" title="Permalink to this headline"></a></h2>
     <p>By default, the functions
     <a class="reference internal" href="#cvxopt.solvers.conelp" title="cvxopt.solvers.conelp"><code class="xref py py-func docutils literal notranslate"><span class="pre">conelp</span></code></a> and
     <a class="reference internal" href="#cvxopt.solvers.coneqp" title="cvxopt.solvers.coneqp"><code class="xref py py-func docutils literal notranslate"><span class="pre">coneqp</span></code></a> exploit no
    @@ -1155,7 +1067,7 @@
     <a class="reference internal" href="#cvxopt.solvers.coneqp" title="cvxopt.solvers.coneqp"><code class="xref py py-func docutils literal notranslate"><span class="pre">coneqp</span></code></a> is the solution of a set of
     linear equations (<em>KKT equations</em>) of the form</p>
     <div class="math" id="equation-e-conelp-kkt">
    -<p><span class="eqno">(1)<a class="headerlink" href="#equation-e-conelp-kkt" title="Permalink to this equation">¶</a></span><img src="_images/math/3157de5f84013f57240cf058275c3ae9deb3287a.png" alt="\left[\begin{array}{ccc}
    +<p><span class="eqno">(1)<a class="headerlink" href="#equation-e-conelp-kkt" title="Permalink to this equation"></a></span><img src="_images/math/3157de5f84013f57240cf058275c3ae9deb3287a.png" alt="\left[\begin{array}{ccc}
         P &amp; A^T &amp; G^T \\
         A &amp; 0   &amp; 0  \\
         G &amp; 0   &amp; -W^T W
    @@ -1845,9 +1757,9 @@
     </div>
     </dd>
     </dl>
    -</div>
    -<div class="section" id="optional-solvers">
    -<span id="s-external"></span><h2>Optional Solvers<a class="headerlink" href="#optional-solvers" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="optional-solvers">
    +<span id="s-external"></span><h2>Optional Solvers<a class="headerlink" href="#optional-solvers" title="Permalink to this headline"></a></h2>
     <p>CVXOPT includes optional interfaces to several other optimization
     libraries.</p>
     <dl class="simple">
    @@ -1867,9 +1779,9 @@
     </dl>
     <p>GLPK, MOSEK and DSDP are not included in the CVXOPT distribution and
     need to be installed separately.</p>
    -</div>
    -<div class="section" id="algorithm-parameters">
    -<span id="s-parameters"></span><h2>Algorithm Parameters<a class="headerlink" href="#algorithm-parameters" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="algorithm-parameters">
    +<span id="s-parameters"></span><h2>Algorithm Parameters<a class="headerlink" href="#algorithm-parameters" title="Permalink to this headline"></a></h2>
     <p>In this section we list some algorithm control parameters that can be
     modified without editing the source code.  These control parameters are
     accessible via the dictionary <code class="xref py py-attr docutils literal notranslate"><span class="pre">solvers.options</span></code>.  By default the
    @@ -2016,60 +1928,42 @@
     <code class="xref py py-attr docutils literal notranslate"><span class="pre">solvers.options</span></code> and use the options in the dictionary
     <code class="xref py py-attr docutils literal notranslate"><span class="pre">opts</span></code> instead. This is useful e.g. when several problem
     instances should be solved in parallel, but using different options.</p>
    -</div>
    -</div>
    +</section>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    -        <a href="solvers.html" class="btn btn-neutral float-right" title="Nonlinear Convex Optimization" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="spsolvers.html" class="btn btn-neutral float-left" title="Sparse Linear Equations" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    +        <a href="solvers.html" class="btn btn-neutral float-right" title="Nonlinear Convex Optimization" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/copyright.html+26 132 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Copyright and License &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="#" />
         <link rel="next" title="Introduction" href="intro.html" />
         <link rel="prev" title="CVXOPT User’s Guide" href="index.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1 current"><a class="current reference internal" href="#">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -104,71 +56,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Copyright and License</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="copyright-and-license">
    -<h1>Copyright and License<a class="headerlink" href="#copyright-and-license" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="copyright-and-license">
    +<h1>Copyright and License<a class="headerlink" href="#copyright-and-license" title="Permalink to this headline"></a></h1>
     <div class="line-block">
     <div class="line"><span class="raw-html">&copy;</span> 2012-2021 M. Andersen and L. Vandenberghe.</div>
     <div class="line"><span class="raw-html">&copy;</span> 2010-2011 L. Vandenberghe.</div>
    @@ -186,59 +98,41 @@ <h1>Copyright and License<a class="headerlink" href="#copyright-and-license" tit
     See the
     <a class="reference external" href="http://www.gnu.org/licenses/gpl-3.0.html">GNU General Public License</a>
     for more details.</p>
    -</div>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    -        <a href="intro.html" class="btn btn-neutral float-right" title="Introduction" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="index.html" class="btn btn-neutral float-left" title="CVXOPT User’s Guide" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    +        <a href="intro.html" class="btn btn-neutral float-right" title="Introduction" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="#">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="#">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/fftw.html+59 165 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Discrete Transforms &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="Sparse Linear Equations" href="spsolvers.html" />
         <link rel="prev" title="The LAPACK Interface" href="lapack.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -109,71 +61,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Discrete Transforms</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="discrete-transforms">
    -<span id="c-fftw"></span><h1>Discrete Transforms<a class="headerlink" href="#discrete-transforms" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="discrete-transforms">
    +<span id="c-fftw"></span><h1>Discrete Transforms<a class="headerlink" href="#discrete-transforms" title="Permalink to this headline"></a></h1>
     <p>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">cvxopt.fftw</span></code> module is an interface to the FFTW library and
     contains routines for discrete Fourier, cosine, and sine transforms.
     This module is optional, and only installed when the FFTW library is made
    @@ -182,11 +94,11 @@
     <p class="admonition-title">See also</p>
     <p><a class="reference external" href="http://www.fftw.org">FFTW3 code, documentation, copyright and license</a></p>
     </div>
    -<div class="section" id="discrete-fourier-transform">
    -<h2>Discrete Fourier Transform<a class="headerlink" href="#discrete-fourier-transform" title="Permalink to this headline">¶</a></h2>
    +<section id="discrete-fourier-transform">
    +<h2>Discrete Fourier Transform<a class="headerlink" href="#discrete-fourier-transform" title="Permalink to this headline"></a></h2>
     <dl class="py function">
    -<dt id="cvxopt.fftw.dft">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">dft</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">X</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dft" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.dft">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">dft</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">X</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dft" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces the columns of a dense complex matrix with their discrete
     Fourier transforms:  if <code class="docutils literal notranslate"><span class="pre">X</span></code> has <img class="math" src="_images/math/5a939c5280da7202ca4531f175a7780ad5e1f80a.png" alt="n"/> rows,</p>
     <div class="math">
    @@ -195,8 +107,8 @@ <h2>Discrete Fourier Transform<a class="headerlink" href="#discrete-fourier-tran
     </div></dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.fftw.idft">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">idft</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">X</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idft" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.idft">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">idft</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">X</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idft" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces the columns of a dense complex matrix with their inverse
     discrete Fourier transforms: if <code class="docutils literal notranslate"><span class="pre">X</span></code> has <img class="math" src="_images/math/5a939c5280da7202ca4531f175a7780ad5e1f80a.png" alt="n"/> rows,</p>
     <div class="math">
    @@ -213,29 +125,29 @@ <h2>Discrete Fourier Transform<a class="headerlink" href="#discrete-fourier-tran
     transform to all the columns of the matrix, followed by a one-dimensional
     transform to all the rows of the matrix.</p>
     <dl class="py function">
    -<dt id="cvxopt.fftw.dftn">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">dftn</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dftn" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.dftn">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">dftn</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dftn" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces a dense complex matrix with its <em>N</em>-dimensional discrete
     Fourier transform.  The dimensions of the <em>N</em>-dimensional matrix
     are given by the <em>N</em>-tuple <code class="docutils literal notranslate"><span class="pre">dims</span></code>.  The two-dimensional transform is
     computed as <code class="docutils literal notranslate"><span class="pre">dftn(X,</span> <span class="pre">X.size)</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.fftw.idftn">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">idftn</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idftn" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.idftn">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">idftn</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idftn" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces a dense complex <em>N</em>-dimensional matrix with its inverse
     <em>N</em>-dimensional discrete Fourier transform.  The dimensions of the
     matrix are given by the tuple <code class="docutils literal notranslate"><span class="pre">dims</span></code>. The two-dimensional inverse
     transform is computed as <code class="docutils literal notranslate"><span class="pre">idftn(X,</span> <span class="pre">X.size)</span></code>.</p>
     </dd></dl>
     
    -</div>
    -<div class="section" id="discrete-cosine-transform">
    -<h2>Discrete Cosine Transform<a class="headerlink" href="#discrete-cosine-transform" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="discrete-cosine-transform">
    +<h2>Discrete Cosine Transform<a class="headerlink" href="#discrete-cosine-transform" title="Permalink to this headline"></a></h2>
     <dl class="py function">
    -<dt id="cvxopt.fftw.dct">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">dct</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dct" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.dct">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">dct</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dct" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces the columns of a dense real matrix with their discrete
     cosine transforms.  The second argument, an integer between 1 and 4,
     denotes the type of transform (DCT-I, DCT-II, DCT-III, DCT-IV).
    @@ -261,8 +173,8 @@ <h2>Discrete Cosine Transform<a class="headerlink" href="#discrete-cosine-transf
     </div></dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.fftw.idct">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">idct</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idct" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.idct">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">idct</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idct" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces the columns of a dense real matrix with the inverses
     of the discrete cosine transforms defined above.</p>
     </dd></dl>
    @@ -275,29 +187,29 @@ <h2>Discrete Cosine Transform<a class="headerlink" href="#discrete-cosine-transf
     transform to all the rows of the matrix, followed by a one-dimensional
     transform to all the columns of the matrix.</p>
     <dl class="py function">
    -<dt id="cvxopt.fftw.dctn">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">dctn</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dctn" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.dctn">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">dctn</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dctn" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces a dense real matrix with its <em>N</em>-dimensional discrete cosine
     transform. The dimensions of the <em>N</em>-dimensional matrix are given by
     the <em>N</em>-tuple <code class="docutils literal notranslate"><span class="pre">dims</span></code>.  The two-dimensional transform is computed as
     <code class="docutils literal notranslate"><span class="pre">dctn(X,</span> <span class="pre">X.size)</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.fftw.idctn">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">idctn</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idctn" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.idctn">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">idctn</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idctn" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces a dense real <em>N</em>-dimensional matrix with its inverse
     <em>N</em>-dimensional discrete cosine transform. The dimensions of the
     matrix are given by the tuple <code class="docutils literal notranslate"><span class="pre">dims</span></code>.  The two-dimensional inverse
     transform is computed as <code class="docutils literal notranslate"><span class="pre">idctn(X,</span> <span class="pre">X.size)</span></code>.</p>
     </dd></dl>
     
    -</div>
    -<div class="section" id="discrete-sine-transform">
    -<h2>Discrete Sine Transform<a class="headerlink" href="#discrete-sine-transform" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="discrete-sine-transform">
    +<h2>Discrete Sine Transform<a class="headerlink" href="#discrete-sine-transform" title="Permalink to this headline"></a></h2>
     <dl class="py function">
    -<dt id="cvxopt.fftw.dst">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">dst</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dst" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.dst">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">dst</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dst" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces the columns of a dense real matrix with their discrete
     sine transforms.  The second argument, an integer between 1 and 4,
     denotes the type of transform (DST-I, DST-II, DST-III, DST-IV).
    @@ -321,8 +233,8 @@ <h2>Discrete Sine Transform<a class="headerlink" href="#discrete-sine-transform"
     </div></dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.fftw.idst">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">idst</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idst" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.idst">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">idst</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idst" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces the columns of a dense real matrix with the inverses of the
     discrete sine transforms defined above.</p>
     </dd></dl>
    @@ -335,77 +247,59 @@ <h2>Discrete Sine Transform<a class="headerlink" href="#discrete-sine-transform"
     transform to all the rows of the matrix, followed by a one-dimensional
     transform to all the columns of the matrix.</p>
     <dl class="py function">
    -<dt id="cvxopt.fftw.dstn">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">dstn</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dstn" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.dstn">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">dstn</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.dstn" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces a dense real matrix with its <em>N</em>-dimensional discrete sine
     transform. The dimensions of the <em>N</em>-dimensional matrix are given by
     the <em>N</em>-tuple <code class="docutils literal notranslate"><span class="pre">dims</span></code>.  The two-dimensional transform is computed as
     <code class="docutils literal notranslate"><span class="pre">dstn(X,</span> <span class="pre">X.size)</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.fftw.idstn">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></code><code class="sig-name descname"><span class="pre">idstn</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idstn" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.fftw.idstn">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.fftw.</span></span><span class="sig-name descname"><span class="pre">idstn</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">X</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span> <span class="pre">=</span> <span class="pre">X.size</span></em>, <em class="sig-param"><span class="pre">type</span> <span class="pre">=</span> <span class="pre">2</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.fftw.idstn" title="Permalink to this definition"></a></dt>
     <dd><p>Replaces a dense real <em>N</em>-dimensional matrix with its inverse
     <em>N</em>-dimensional discrete sine transform.  The dimensions of the
     matrix are given by the tuple <code class="docutils literal notranslate"><span class="pre">dims</span></code>.  The two-dimensional inverse
     transform is computed as <code class="docutils literal notranslate"><span class="pre">idstn(X,</span> <span class="pre">X.size)</span></code>.</p>
     </dd></dl>
     
    -</div>
    -</div>
    +</section>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    -        <a href="spsolvers.html" class="btn btn-neutral float-right" title="Sparse Linear Equations" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="lapack.html" class="btn btn-neutral float-left" title="The LAPACK Interface" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    +        <a href="spsolvers.html" class="btn btn-neutral float-right" title="Sparse Linear Equations" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/index.html+26 132 modified
    @@ -1,92 +1,44 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Table of Contents &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="Copyright and License" href="copyright.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="#" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul>
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -103,72 +55,32 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="#">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="#" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Table of Contents</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="cvxopt-user-s-guide">
    -<h1>CVXOPT User’s Guide<a class="headerlink" href="#cvxopt-user-s-guide" title="Permalink to this headline">¶</a></h1>
    -<p><strong>Release 1.2.6 – February 18, 2021</strong></p>
    +             
    +  <section id="cvxopt-user-s-guide">
    +<h1>CVXOPT User’s Guide<a class="headerlink" href="#cvxopt-user-s-guide" title="Permalink to this headline"></a></h1>
    +<p><strong>Release 1.2.7 – September 20, 2021</strong></p>
     <p><strong>Martin Andersen, Joachim Dahl, and Lieven Vandenberghe</strong></p>
     <div class="toctree-wrapper compound">
     <ul>
    @@ -255,58 +167,40 @@ <h1>CVXOPT User’s Guide<a class="headerlink" href="#cvxopt-user-s-guide" title
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     </div>
    -</div>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="copyright.html" class="btn btn-neutral float-right" title="Copyright and License" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/intro.html+26 132 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Introduction &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="Dense and Sparse Matrices" href="matrices.html" />
         <link rel="prev" title="Copyright and License" href="copyright.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1 current"><a class="current reference internal" href="#">Introduction</a></li>
    @@ -104,71 +56,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Introduction</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="introduction">
    -<span id="intro"></span><h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="introduction">
    +<span id="intro"></span><h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline"></a></h1>
     <p>CVXOPT is a free software package for convex optimization based on the
     Python programming language.  It can be used with the interactive Python
     interpreter, on the command line by executing Python scripts, or integrated
    @@ -223,59 +135,41 @@
     <p>The modules are described in detail in this manual and in the on-line Python
     help facility <strong class="program">pydoc</strong>.  Several example scripts are included in
     the distribution.</p>
    -</div>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    -        <a href="matrices.html" class="btn btn-neutral float-right" title="Dense and Sparse Matrices" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="copyright.html" class="btn btn-neutral float-left" title="Copyright and License" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    +        <a href="matrices.html" class="btn btn-neutral float-right" title="Dense and Sparse Matrices" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/lapack.html+172 278 modified
  • doc/html/matrices.html+120 226 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Dense and Sparse Matrices &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="The BLAS Interface" href="blas.html" />
         <link rel="prev" title="Introduction" href="intro.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -114,83 +66,43 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Dense and Sparse Matrices</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="dense-and-sparse-matrices">
    -<span id="c-matrices"></span><h1>Dense and Sparse Matrices<a class="headerlink" href="#dense-and-sparse-matrices" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="dense-and-sparse-matrices">
    +<span id="c-matrices"></span><h1>Dense and Sparse Matrices<a class="headerlink" href="#dense-and-sparse-matrices" title="Permalink to this headline"></a></h1>
     <p>This chapter describes the two CVXOPT matrix types:
     <a class="reference internal" href="#cvxopt.matrix" title="cvxopt.matrix"><code class="xref py py-class docutils literal notranslate"><span class="pre">matrix</span></code></a> objects, used for dense matrix
     computations, and <a class="reference internal" href="#cvxopt.spmatrix" title="cvxopt.spmatrix"><code class="xref py py-class docutils literal notranslate"><span class="pre">spmatrix</span></code></a> objects, used for
     sparse matrix computations.</p>
    -<div class="section" id="dense-matrices">
    -<span id="s-dense-matrices"></span><h2>Dense Matrices<a class="headerlink" href="#dense-matrices" title="Permalink to this headline">¶</a></h2>
    +<section id="dense-matrices">
    +<span id="s-dense-matrices"></span><h2>Dense Matrices<a class="headerlink" href="#dense-matrices" title="Permalink to this headline"></a></h2>
     <p>A dense matrix is created by calling the function <code class="xref py py-func docutils literal notranslate"><span class="pre">matrix</span></code>.  The
     arguments specify the values of the coefficients, the dimensions, and the
     type (integer, double, or complex) of the matrix.</p>
     <dl class="py function">
    -<dt id="cvxopt.matrix">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">matrix</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">size</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">tc</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.matrix" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.matrix">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">matrix</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">size</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">tc</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.matrix" title="Permalink to this definition"></a></dt>
     <dd><p><code class="docutils literal notranslate"><span class="pre">size</span></code>  is a tuple of length two with the matrix dimensions.
     The number of rows and/or the number of columns can be zero.</p>
     <p><code class="docutils literal notranslate"><span class="pre">tc</span></code>  stands for type code. The possible values are <code class="xref py py-const docutils literal notranslate"><span class="pre">'i'</span></code>,
    @@ -331,9 +243,9 @@
     </ul>
     </dd></dl>
     
    -</div>
    -<div class="section" id="sparse-matrices">
    -<span id="s-sparse-matrices"></span><h2>Sparse Matrices<a class="headerlink" href="#sparse-matrices" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="sparse-matrices">
    +<span id="s-sparse-matrices"></span><h2>Sparse Matrices<a class="headerlink" href="#sparse-matrices" title="Permalink to this headline"></a></h2>
     <p>A general <a class="reference internal" href="#cvxopt.spmatrix" title="cvxopt.spmatrix"><code class="xref py py-class docutils literal notranslate"><span class="pre">spmatrix</span></code></a> object can be thought of as
     a <em>triplet description</em> of a sparse matrix, i.e., a list of entries of the
     matrix, with for each entry the value, row index, and column index.
    @@ -363,8 +275,8 @@
     The first, <code class="xref py py-func docutils literal notranslate"><span class="pre">spmatrix</span></code>,
     constructs a sparse matrix from a triplet description.</p>
     <dl class="py function">
    -<dt id="cvxopt.spmatrix">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">spmatrix</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">I</span></em>, <em class="sig-param"><span class="pre">J</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">size</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">tc</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.spmatrix" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.spmatrix">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">spmatrix</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em>, <em class="sig-param"><span class="pre">I</span></em>, <em class="sig-param"><span class="pre">J</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">size</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">tc</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.spmatrix" title="Permalink to this definition"></a></dt>
     <dd><p><code class="docutils literal notranslate"><span class="pre">I</span></code> and <code class="docutils literal notranslate"><span class="pre">J</span></code> are sequences of integers (lists, tuples,
     <code class="xref py py-mod docutils literal notranslate"><span class="pre">array</span></code> arrays, …) or integer matrices
     (<a class="reference internal" href="#cvxopt.matrix" title="cvxopt.matrix"><code class="xref py py-class docutils literal notranslate"><span class="pre">matrix</span></code></a> objects with typecode <code class="xref py py-const docutils literal notranslate"><span class="pre">'i'</span></code>),
    @@ -434,8 +346,8 @@
     <p>The function <code class="xref py py-func docutils literal notranslate"><span class="pre">sparse</span></code> constructs a sparse matrix
     from a block-matrix description.</p>
     <dl class="py function">
    -<dt id="cvxopt.sparse">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">sparse</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">tc</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.sparse" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.sparse">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">sparse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">tc</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.sparse" title="Permalink to this definition"></a></dt>
     <dd><p><code class="docutils literal notranslate"><span class="pre">tc</span></code> is the typecode, <code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code> or <code class="xref py py-const docutils literal notranslate"><span class="pre">'z'</span></code>, for double and
     complex matrices, respectively.</p>
     <p><code class="docutils literal notranslate"><span class="pre">x</span></code> can be a <a class="reference internal" href="#cvxopt.matrix" title="cvxopt.matrix"><code class="xref py py-class docutils literal notranslate"><span class="pre">matrix</span></code></a>, <a class="reference internal" href="#cvxopt.spmatrix" title="cvxopt.spmatrix"><code class="xref py py-class docutils literal notranslate"><span class="pre">spmatrix</span></code></a>, or a list of lists
    @@ -498,8 +410,8 @@
     <p>The function <code class="xref py py-func docutils literal notranslate"><span class="pre">spdiag</span></code> constructs a block-diagonal
     sparse matrix from a list of matrices.</p>
     <dl class="py function">
    -<dt id="cvxopt.spdiag">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">spdiag</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.spdiag" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.spdiag">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">spdiag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.spdiag" title="Permalink to this definition"></a></dt>
     <dd><p><code class="docutils literal notranslate"><span class="pre">x</span></code> is a dense or sparse matrix with a single row or column, or a
     list of square dense or sparse matrices or scalars.
     If <code class="docutils literal notranslate"><span class="pre">x</span></code> is a matrix, a sparse diagonal matrix is returned with
    @@ -522,9 +434,9 @@
     </div>
     </dd></dl>
     
    -</div>
    -<div class="section" id="arithmetic-operations">
    -<span id="s-arithmetic"></span><h2>Arithmetic Operations<a class="headerlink" href="#arithmetic-operations" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="arithmetic-operations">
    +<span id="s-arithmetic"></span><h2>Arithmetic Operations<a class="headerlink" href="#arithmetic-operations" title="Permalink to this headline"></a></h2>
     <p>The following table lists the arithmetic operations defined for dense and
     sparse matrices.  In the table <code class="docutils literal notranslate"><span class="pre">A</span></code> and <code class="docutils literal notranslate"><span class="pre">B</span></code> are dense or sparse
     matrices of compatible dimensions, <code class="docutils literal notranslate"><span class="pre">c</span></code>  is a scalar (a Python number or
    @@ -669,9 +581,9 @@
     </div>
     </li>
     </ul>
    -</div>
    -<div class="section" id="indexing-and-slicing">
    -<span id="s-indexing"></span><h2>Indexing and Slicing<a class="headerlink" href="#indexing-and-slicing" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="indexing-and-slicing">
    +<span id="s-indexing"></span><h2>Indexing and Slicing<a class="headerlink" href="#indexing-and-slicing" title="Permalink to this headline"></a></h2>
     <p>Matrices can be indexed using one or two arguments.  In single-argument
     indexing of a matrix <code class="docutils literal notranslate"><span class="pre">A</span></code>, the index runs from <code class="docutils literal notranslate"><span class="pre">-len(A)</span></code> to
     <code class="docutils literal notranslate"><span class="pre">len(A)-1</span></code>, and is interpreted as an index in the one-dimensional
    @@ -847,58 +759,58 @@
     <span class="go">[ 0.00e+00 -2.00e+00     0    ]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="attributes-and-methods">
    -<h2>Attributes and Methods<a class="headerlink" href="#attributes-and-methods" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="attributes-and-methods">
    +<h2>Attributes and Methods<a class="headerlink" href="#attributes-and-methods" title="Permalink to this headline"></a></h2>
     <p>Dense and sparse matrices have the following attributes.</p>
     <dl class="py attribute">
    -<dt id="size">
    -<code class="sig-name descname"><span class="pre">size</span></code><a class="headerlink" href="#size" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="size">
    +<span class="sig-name descname"><span class="pre">size</span></span><a class="headerlink" href="#size" title="Permalink to this definition"></a></dt>
     <dd><p>A tuple with the dimensions of the matrix. The size of the matrix can
     be changed by altering this attribute, as long as the number of
     elements in the matrix remains unchanged.</p>
     </dd></dl>
     
     <dl class="py attribute">
    -<dt id="typecode">
    -<code class="sig-name descname"><span class="pre">typecode</span></code><a class="headerlink" href="#typecode" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="typecode">
    +<span class="sig-name descname"><span class="pre">typecode</span></span><a class="headerlink" href="#typecode" title="Permalink to this definition"></a></dt>
     <dd><p>A character, either <code class="xref py py-const docutils literal notranslate"><span class="pre">'i'</span></code>, <code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code>, or <code class="xref py py-const docutils literal notranslate"><span class="pre">'z'</span></code>, for
     integer, real, and complex matrices, respectively.  A read-only
     attribute.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="trans">
    -<code class="sig-name descname"><span class="pre">trans</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#trans" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="trans">
    +<span class="sig-name descname"><span class="pre">trans</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#trans" title="Permalink to this definition"></a></dt>
     <dd><p>Returns the transpose of the matrix as a new matrix.  One can also use
     <code class="docutils literal notranslate"><span class="pre">A.T</span></code> instead of <code class="docutils literal notranslate"><span class="pre">A.trans()</span></code>.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="ctrans">
    -<code class="sig-name descname"><span class="pre">ctrans</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ctrans" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="ctrans">
    +<span class="sig-name descname"><span class="pre">ctrans</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#ctrans" title="Permalink to this definition"></a></dt>
     <dd><p>Returns the conjugate transpose of the matrix as a new matrix.  One
     can also use <code class="docutils literal notranslate"><span class="pre">A.H</span></code> instead of <code class="docutils literal notranslate"><span class="pre">A.ctrans()</span></code>.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="real">
    -<code class="sig-name descname"><span class="pre">real</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#real" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="real">
    +<span class="sig-name descname"><span class="pre">real</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#real" title="Permalink to this definition"></a></dt>
     <dd><p>For complex matrices, returns the real part as a real matrix.  For
     integer and real matrices, returns a copy of the matrix.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="imag">
    -<code class="sig-name descname"><span class="pre">imag</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imag" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="imag">
    +<span class="sig-name descname"><span class="pre">imag</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imag" title="Permalink to this definition"></a></dt>
     <dd><p>For complex matrices, returns the imaginary part as a real matrix.
     For integer and real matrices, returns an integer or real zero matrix.</p>
     </dd></dl>
     
     <p>In addition, sparse matrices have the following attributes.</p>
     <dl class="py attribute">
    -<dt id="V">
    -<code class="sig-name descname"><span class="pre">V</span></code><a class="headerlink" href="#V" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="V">
    +<span class="sig-name descname"><span class="pre">V</span></span><a class="headerlink" href="#V" title="Permalink to this definition"></a></dt>
     <dd><p>A single-column dense matrix containing the numerical values of the
     nonzero entries in column-major order.  Making an assignment to the
     attribute is an efficient way of changing the values of the sparse
    @@ -912,22 +824,22 @@ <h2>Attributes and Methods<a class="headerlink" href="#attributes-and-methods" t
     </dd></dl>
     
     <dl class="py attribute">
    -<dt id="I">
    -<code class="sig-name descname"><span class="pre">I</span></code><a class="headerlink" href="#I" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="I">
    +<span class="sig-name descname"><span class="pre">I</span></span><a class="headerlink" href="#I" title="Permalink to this definition"></a></dt>
     <dd><p>A single-column integer dense matrix with the row indices of the
     entries in <a class="reference internal" href="#V" title="V"><code class="xref py py-attr docutils literal notranslate"><span class="pre">V</span></code></a>.  A read-only attribute.</p>
     </dd></dl>
     
     <dl class="py attribute">
    -<dt id="J">
    -<code class="sig-name descname"><span class="pre">J</span></code><a class="headerlink" href="#J" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="J">
    +<span class="sig-name descname"><span class="pre">J</span></span><a class="headerlink" href="#J" title="Permalink to this definition"></a></dt>
     <dd><p>A single-column integer dense matrix with the column indices of the
     entries in <a class="reference internal" href="#V" title="V"><code class="xref py py-attr docutils literal notranslate"><span class="pre">V</span></code></a>.  A read-only attribute.</p>
     </dd></dl>
     
     <dl class="py attribute">
    -<dt id="CCS">
    -<code class="sig-name descname"><span class="pre">CCS</span></code><a class="headerlink" href="#CCS" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="CCS">
    +<span class="sig-name descname"><span class="pre">CCS</span></span><a class="headerlink" href="#CCS" title="Permalink to this definition"></a></dt>
     <dd><p>A triplet (column pointers, row indices, values) with the
     compressed-column-storage representation of the matrix.  A read-only
     attribute.  This attribute can be used to export sparse matrices to
    @@ -957,15 +869,15 @@ <h2>Attributes and Methods<a class="headerlink" href="#attributes-and-methods" t
     </div>
     <p>The following attributes and methods are defined for dense matrices.</p>
     <dl class="py method">
    -<dt id="tofile">
    -<code class="sig-name descname"><span class="pre">tofile</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tofile" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="tofile">
    +<span class="sig-name descname"><span class="pre">tofile</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tofile" title="Permalink to this definition"></a></dt>
     <dd><p>Writes the elements of the matrix in column-major order to a binary
     file <code class="docutils literal notranslate"><span class="pre">f</span></code>.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="fromfile">
    -<code class="sig-name descname"><span class="pre">fromfile</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#fromfile" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="fromfile">
    +<span class="sig-name descname"><span class="pre">fromfile</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#fromfile" title="Permalink to this definition"></a></dt>
     <dd><p>Reads the contents of a binary file <code class="docutils literal notranslate"><span class="pre">f</span></code> into the matrix object.</p>
     </dd></dl>
     
    @@ -1006,50 +918,50 @@ <h2>Attributes and Methods<a class="headerlink" href="#attributes-and-methods" t
     <p>Note that the <code class="xref py py-func docutils literal notranslate"><span class="pre">dump</span></code> and <code class="xref py py-func docutils literal notranslate"><span class="pre">load</span></code> functions in the <code class="xref py py-mod docutils literal notranslate"><span class="pre">pickle</span></code>
     module offer a convenient alternative for writing matrices to files and
     reading matrices from files.</p>
    -</div>
    -<div class="section" id="built-in-functions">
    -<h2>Built-In Functions<a class="headerlink" href="#built-in-functions" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="built-in-functions">
    +<h2>Built-In Functions<a class="headerlink" href="#built-in-functions" title="Permalink to this headline"></a></h2>
     <p>Many Python built-in functions and operations can be used with matrix
     arguments.  We list some useful examples.</p>
     <dl class="py function">
    -<dt id="len">
    -<code class="sig-name descname"><span class="pre">len</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#len" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="len">
    +<span class="sig-name descname"><span class="pre">len</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#len" title="Permalink to this definition"></a></dt>
     <dd><p>If <code class="docutils literal notranslate"><span class="pre">x</span></code> is a dense matrix, returns the product of the number of rows
     and the number of columns.  If <code class="docutils literal notranslate"><span class="pre">x</span></code> is a sparse matrix, returns the
     number of nonzero entries.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="bool">
    -<code class="sig-name descname"><span class="pre">bool</span></code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">x</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#bool" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="bool">
    +<span class="sig-name descname"><span class="pre">bool</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">x</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#bool" title="Permalink to this definition"></a></dt>
     <dd><p>Returns <code class="xref py py-const docutils literal notranslate"><span class="pre">False</span></code> if <code class="docutils literal notranslate"><span class="pre">x</span></code> is a zero matrix and <code class="xref py py-const docutils literal notranslate"><span class="pre">True</span></code>
     otherwise.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="max">
    -<code class="sig-name descname"><span class="pre">max</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#max" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="max">
    +<span class="sig-name descname"><span class="pre">max</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#max" title="Permalink to this definition"></a></dt>
     <dd><p>If <code class="docutils literal notranslate"><span class="pre">x</span></code> is a dense matrix, returns the maximum element of <code class="docutils literal notranslate"><span class="pre">x</span></code>.
     If <code class="docutils literal notranslate"><span class="pre">x</span></code> is a sparse, returns the maximum nonzero element of <code class="docutils literal notranslate"><span class="pre">x</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="min">
    -<code class="sig-name descname"><span class="pre">min</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#min" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="min">
    +<span class="sig-name descname"><span class="pre">min</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#min" title="Permalink to this definition"></a></dt>
     <dd><p>If <code class="docutils literal notranslate"><span class="pre">x</span></code> is a dense matrix, returns the minimum element of <code class="docutils literal notranslate"><span class="pre">x</span></code>.
     If <code class="docutils literal notranslate"><span class="pre">x</span></code> is a sparse matrix, returns the minimum nonzero element of
     <code class="docutils literal notranslate"><span class="pre">x</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="abs">
    -<code class="sig-name descname"><span class="pre">abs</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#abs" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="abs">
    +<span class="sig-name descname"><span class="pre">abs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#abs" title="Permalink to this definition"></a></dt>
     <dd><p>Returns a matrix with the absolute values of the elements of <code class="docutils literal notranslate"><span class="pre">x</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="sum">
    -<code class="sig-name descname"><span class="pre">sum</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">start</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#sum" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="sum">
    +<span class="sig-name descname"><span class="pre">sum</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">start</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#sum" title="Permalink to this definition"></a></dt>
     <dd><p>Returns the sum of <code class="docutils literal notranslate"><span class="pre">start</span></code> and the elements of <code class="docutils literal notranslate"><span class="pre">x</span></code>.</p>
     </dd></dl>
     
    @@ -1124,13 +1036,13 @@ <h2>Built-In Functions<a class="headerlink" href="#built-in-functions" title="Pe
     <p>The expression <code class="docutils literal notranslate"><span class="pre">x</span> <span class="pre">in</span> <span class="pre">A</span></code> returns <code class="xref py py-const docutils literal notranslate"><span class="pre">True</span></code> if an element
     of <code class="docutils literal notranslate"><span class="pre">A</span></code> (or a nonzero element of <code class="docutils literal notranslate"><span class="pre">A</span></code> if <code class="docutils literal notranslate"><span class="pre">A</span></code> is sparse)
     is equal to <code class="docutils literal notranslate"><span class="pre">x</span></code> and <code class="xref py py-const docutils literal notranslate"><span class="pre">False</span></code> otherwise.</p>
    -</div>
    -<div class="section" id="other-matrix-functions">
    -<h2>Other Matrix Functions<a class="headerlink" href="#other-matrix-functions" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="other-matrix-functions">
    +<h2>Other Matrix Functions<a class="headerlink" href="#other-matrix-functions" title="Permalink to this headline"></a></h2>
     <p>The following functions can be imported from CVXOPT.</p>
     <dl class="py function">
    -<dt id="cvxopt.sqrt">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">sqrt</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.sqrt" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.sqrt">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">sqrt</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.sqrt" title="Permalink to this definition"></a></dt>
     <dd><p>The elementwise square root of a dense matrix <code class="docutils literal notranslate"><span class="pre">x</span></code>.  The result is
     returned as a real matrix if <code class="docutils literal notranslate"><span class="pre">x</span></code> is an integer or real matrix and
     as a complex matrix if <code class="docutils literal notranslate"><span class="pre">x</span></code> is a complex matrix.  Raises an exception
    @@ -1155,32 +1067,32 @@ <h2>Other Matrix Functions<a class="headerlink" href="#other-matrix-functions" t
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.sin">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">sin</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.sin" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.sin">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">sin</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.sin" title="Permalink to this definition"></a></dt>
     <dd><p>The sine function applied elementwise to a dense matrix <code class="docutils literal notranslate"><span class="pre">x</span></code>.
     The result is returned as a real matrix if <code class="docutils literal notranslate"><span class="pre">x</span></code> is an integer
     or real matrix and as a complex matrix otherwise.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.cos">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">cos</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cos" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.cos">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">cos</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cos" title="Permalink to this definition"></a></dt>
     <dd><p>The cosine function applied elementwise to a dense matrix <code class="docutils literal notranslate"><span class="pre">x</span></code>.
     The result is returned as a real matrix if <code class="docutils literal notranslate"><span class="pre">x</span></code> is an integer
     or real matrix and as a complex matrix otherwise.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.exp">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">exp</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.exp" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.exp">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">exp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.exp" title="Permalink to this definition"></a></dt>
     <dd><p>The exponential function applied elementwise to a dense matrix <code class="docutils literal notranslate"><span class="pre">x</span></code>.
     The result is returned as a real matrix if <code class="docutils literal notranslate"><span class="pre">x</span></code> is an integer
     or real matrix and as a complex matrix otherwise.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.log">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">log</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.log" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.log">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">log</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.log" title="Permalink to this definition"></a></dt>
     <dd><p>The natural logarithm applied elementwise to a dense matrix <code class="docutils literal notranslate"><span class="pre">x</span></code>.
     The result is returned as a real matrix if <code class="docutils literal notranslate"><span class="pre">x</span></code> is an integer
     or real matrix and as a complex matrix otherwise.
    @@ -1189,8 +1101,8 @@ <h2>Other Matrix Functions<a class="headerlink" href="#other-matrix-functions" t
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.mul">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">mul</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x2</span> <span class="pre">...</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.mul" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.mul">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">mul</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x2</span> <span class="pre">...</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.mul" title="Permalink to this definition"></a></dt>
     <dd><p>If the arguments are dense or sparse matrices of the same size, returns
     the elementwise product of its arguments.  The result is a sparse
     matrix if one or more of its arguments is sparse, and a dense matrix
    @@ -1216,16 +1128,16 @@ <h2>Other Matrix Functions<a class="headerlink" href="#other-matrix-functions" t
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.div">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">div</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.div" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.div">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">div</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.div" title="Permalink to this definition"></a></dt>
     <dd><p>Returns the elementwise division of <code class="docutils literal notranslate"><span class="pre">x</span></code> by <code class="docutils literal notranslate"><span class="pre">y</span></code>.  <code class="docutils literal notranslate"><span class="pre">x</span></code> is a dense
     or sparse matrix, or a scalar (Python number of 1 by 1 dense matrix).
     <code class="docutils literal notranslate"><span class="pre">y</span></code> is a dense matrix or a scalar.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.max">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">max</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x2</span> <span class="pre">...</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.max" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.max">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">max</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x2</span> <span class="pre">...</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.max" title="Permalink to this definition"></a></dt>
     <dd><p>When called with a single matrix argument, returns the maximum of the
     elements of the matrix (including the zero entries, if the matrix is
     sparse).</p>
    @@ -1271,8 +1183,8 @@ <h2>Other Matrix Functions<a class="headerlink" href="#other-matrix-functions" t
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.min">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">min</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x2</span> <span class="pre">...</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.min" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.min">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">min</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">x2</span> <span class="pre">...</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.min" title="Permalink to this definition"></a></dt>
     <dd><p>When called with a single matrix argument, returns the minimum of the
     elements of the matrix (including the zero entries, if the matrix is
     sparse).</p>
    @@ -1288,9 +1200,9 @@ <h2>Other Matrix Functions<a class="headerlink" href="#other-matrix-functions" t
     scalars.</p>
     </dd></dl>
     
    -</div>
    -<div class="section" id="randomly-generated-matrices">
    -<span id="s-random"></span><h2>Randomly Generated Matrices<a class="headerlink" href="#randomly-generated-matrices" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="randomly-generated-matrices">
    +<span id="s-random"></span><h2>Randomly Generated Matrices<a class="headerlink" href="#randomly-generated-matrices" title="Permalink to this headline"></a></h2>
     <p>The CVXOPT package provides two functions
     <a class="reference internal" href="#cvxopt.normal" title="cvxopt.normal"><code class="xref py py-func docutils literal notranslate"><span class="pre">normal</span></code></a> and
     <a class="reference internal" href="#cvxopt.uniform" title="cvxopt.uniform"><code class="xref py py-func docutils literal notranslate"><span class="pre">uniform</span></code></a> for generating randomly distributed
    @@ -1303,94 +1215,76 @@ <h2>Other Matrix Functions<a class="headerlink" href="#other-matrix-functions" t
     The random matrix functions based on GSL are faster than the default
     functions based on the <code class="xref py py-mod docutils literal notranslate"><span class="pre">random</span></code> module.</p>
     <dl class="py function">
    -<dt id="cvxopt.normal">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">normal</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">nrows</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">ncols</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">mean</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">std</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.normal" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.normal">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">normal</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">nrows</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">ncols</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">mean</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">std</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.normal" title="Permalink to this definition"></a></dt>
     <dd><p>Returns a type <code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code> dense matrix of size <code class="docutils literal notranslate"><span class="pre">nrows</span></code>  by
     <code class="docutils literal notranslate"><span class="pre">ncols</span></code> with elements chosen from a normal distribution
     with mean <code class="docutils literal notranslate"><span class="pre">mean</span></code> and standard deviation <code class="docutils literal notranslate"><span class="pre">std</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.uniform">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">uniform</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">nrows</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">ncols</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">a</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">b</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.uniform" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.uniform">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">uniform</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">nrows</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">ncols</span> <span class="pre">=</span> <span class="pre">1</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">a</span> <span class="pre">=</span> <span class="pre">0.0</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">b</span> <span class="pre">=</span> <span class="pre">1.0</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.uniform" title="Permalink to this definition"></a></dt>
     <dd><p>Returns a type <code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code> dense matrix of size <code class="docutils literal notranslate"><span class="pre">nrows</span></code> by
     <code class="docutils literal notranslate"><span class="pre">ncols</span></code> matrix with elements uniformly distributed between <code class="docutils literal notranslate"><span class="pre">a</span></code> and
     <code class="docutils literal notranslate"><span class="pre">b</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.setseed">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">setseed</span></code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">value</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.setseed" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.setseed">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">setseed</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">value</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.setseed" title="Permalink to this definition"></a></dt>
     <dd><p>Sets the state of the random number generator.  <code class="docutils literal notranslate"><span class="pre">value</span></code> must be an
     integer.  If <code class="docutils literal notranslate"><span class="pre">value</span></code> is absent or equal to zero, the value is taken
     from the system clock.  If the Python random number generators are
     used, this is equivalent to <code class="samp docutils literal notranslate"><span class="pre">random.seed(value)</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.getseed">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.</span></code><code class="sig-name descname"><span class="pre">getseed</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.getseed" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.getseed">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.</span></span><span class="sig-name descname"><span class="pre">getseed</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.getseed" title="Permalink to this definition"></a></dt>
     <dd><p>Returns the current state of the random number generator.  This
     function is only available if the GSL random number generators are
     installed.   (The state of the random number generators in the Python
     <code class="xref py py-mod docutils literal notranslate"><span class="pre">random</span></code> module can be managed via the functions
     <code class="xref py py-func docutils literal notranslate"><span class="pre">random.getstate</span></code> and <code class="xref py py-func docutils literal notranslate"><span class="pre">random.setstate</span></code>.)</p>
     </dd></dl>
     
    -</div>
    -</div>
    +</section>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    -        <a href="blas.html" class="btn btn-neutral float-right" title="The BLAS Interface" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="intro.html" class="btn btn-neutral float-left" title="Introduction" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    +        <a href="blas.html" class="btn btn-neutral float-right" title="The BLAS Interface" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/modeling.html+85 191 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Modeling &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="C API" href="c-api.html" />
         <link rel="prev" title="Nonlinear Convex Optimization" href="solvers.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -111,71 +63,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Modeling</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="modeling">
    -<span id="c-modeling"></span><h1>Modeling<a class="headerlink" href="#modeling" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="modeling">
    +<span id="c-modeling"></span><h1>Modeling<a class="headerlink" href="#modeling" title="Permalink to this headline"></a></h1>
     <p>The module <code class="xref py py-mod docutils literal notranslate"><span class="pre">cvxopt.modeling</span></code>  can be used to specify and solve
     optimization problems  with convex piecewise-linear objective and
     constraint functions.  Using this modeling tool, one can specify an
    @@ -189,12 +101,12 @@
     <a class="reference internal" href="#cvxopt.modeling.sum" title="cvxopt.modeling.sum"><code class="xref py py-func docutils literal notranslate"><span class="pre">sum</span></code></a> (see the section <a class="reference internal" href="#s-functions"><span class="std std-ref">Functions</span></a>).</p>
     <p>A more general Python convex modeling package is
     <a class="reference external" href="http://cvxpy.org">CVXPY</a>.</p>
    -<div class="section" id="variables">
    -<span id="s-variables"></span><h2>Variables<a class="headerlink" href="#variables" title="Permalink to this headline">¶</a></h2>
    +<section id="variables">
    +<span id="s-variables"></span><h2>Variables<a class="headerlink" href="#variables" title="Permalink to this headline"></a></h2>
     <p>Optimization variables are represented by <code class="xref py py-class docutils literal notranslate"><span class="pre">variable</span></code> objects.</p>
     <dl class="py function">
    -<dt id="cvxopt.modeling.variable">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.modeling.</span></code><code class="sig-name descname"><span class="pre">variable</span></code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">size</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">name</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.modeling.variable" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.modeling.variable">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.modeling.</span></span><span class="sig-name descname"><span class="pre">variable</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">size</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">name</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.modeling.variable" title="Permalink to this definition"></a></dt>
     <dd><p>A vector variable.  The first argument is the dimension of the vector
     (a positive integer with default value 1).  The second argument is a
     string with a name for the variable.  The name is optional and has
    @@ -208,14 +120,14 @@
     <p>The function <code class="xref py py-func docutils literal notranslate"><span class="pre">len</span></code> returns the length of a <code class="xref py py-class docutils literal notranslate"><span class="pre">variable</span></code>.
     A <code class="xref py py-class docutils literal notranslate"><span class="pre">variable</span></code> <code class="docutils literal notranslate"><span class="pre">x</span></code> has two attributes.</p>
     <dl class="py attribute">
    -<dt id="variable.name">
    -<code class="sig-prename descclassname"><span class="pre">variable.</span></code><code class="sig-name descname"><span class="pre">name</span></code><a class="headerlink" href="#variable.name" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="variable.name">
    +<span class="sig-prename descclassname"><span class="pre">variable.</span></span><span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#variable.name" title="Permalink to this definition"></a></dt>
     <dd><p>The name of the variable.</p>
     </dd></dl>
     
     <dl class="py attribute">
    -<dt id="variable.value">
    -<code class="sig-prename descclassname"><span class="pre">variable.</span></code><code class="sig-name descname"><span class="pre">value</span></code><a class="headerlink" href="#variable.value" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="variable.value">
    +<span class="sig-prename descclassname"><span class="pre">variable.</span></span><span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#variable.value" title="Permalink to this definition"></a></dt>
     <dd><p>Either <code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code> or a dense <code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code> matrix of size
     <code class="docutils literal notranslate"><span class="pre">len(x)</span></code> by 1.</p>
     <p>The attribute <code class="docutils literal notranslate"><span class="pre">x.value</span></code> is set to <code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code> when the variable
    @@ -248,22 +160,22 @@
     <span class="go">[ 1.00e+00]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="functions">
    -<span id="s-functions"></span><h2>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="functions">
    +<span id="s-functions"></span><h2>Functions<a class="headerlink" href="#functions" title="Permalink to this headline"></a></h2>
     <p>Objective and constraint functions can be defined via overloaded operations
     on variables and other functions.  A function <code class="docutils literal notranslate"><span class="pre">f</span></code> is interpreted as a
     column vector, with length <code class="docutils literal notranslate"><span class="pre">len(f)</span></code> and with a value that depends on
     the values of its variables.  Functions have two public attributes.</p>
     <dl class="py attribute">
    -<dt id="id0">
    -<code class="sig-name descname"><span class="pre">variables</span></code><a class="headerlink" href="#id0" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="id0">
    +<span class="sig-name descname"><span class="pre">variables</span></span><a class="headerlink" href="#id0" title="Permalink to this definition"></a></dt>
     <dd><p>Returns a copy of the list of variables of the function.</p>
     </dd></dl>
     
     <dl class="py attribute">
    -<dt id="value">
    -<code class="sig-name descname"><span class="pre">value</span></code><a class="headerlink" href="#value" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="value">
    +<span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#value" title="Permalink to this definition"></a></dt>
     <dd><p>The function value.  If any of the variables of <code class="docutils literal notranslate"><span class="pre">f</span></code> has value
     <code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code>, then <code class="docutils literal notranslate"><span class="pre">f.value()</span></code> returns <code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code>.  Otherwise,
     it returns a dense <code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code> matrix of size <code class="docutils literal notranslate"><span class="pre">(len(f),1)</span></code> with
    @@ -317,16 +229,16 @@
     as inner products of a constant vector with  a variable or affine
     function.</p>
     <dl class="py function">
    -<dt id="cvxopt.modeling.sum">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.modeling.</span></code><code class="sig-name descname"><span class="pre">sum</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.modeling.sum" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.modeling.sum">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.modeling.</span></span><span class="sig-name descname"><span class="pre">sum</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.modeling.sum" title="Permalink to this definition"></a></dt>
     <dd><p>The argument is an affine function or a variable.  The result is an
     affine function of length 1, with the sum of the components of the
     argument <code class="docutils literal notranslate"><span class="pre">v</span></code>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.modeling.dot">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.modeling.</span></code><code class="sig-name descname"><span class="pre">dot</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">u</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.modeling.dot" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.modeling.dot">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.modeling.</span></span><span class="sig-name descname"><span class="pre">dot</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">u</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.modeling.dot" title="Permalink to this definition"></a></dt>
     <dd><p>If <code class="docutils literal notranslate"><span class="pre">v</span></code> is a variable or affine function and <code class="docutils literal notranslate"><span class="pre">u</span></code> is a
     <code class="xref py py-const docutils literal notranslate"><span class="pre">'d'</span></code> matrix of size <code class="docutils literal notranslate"><span class="pre">(len(v),</span> <span class="pre">1)</span></code>, then
     <code class="docutils literal notranslate"><span class="pre">dot(u,</span> <span class="pre">v)</span></code> and <code class="docutils literal notranslate"><span class="pre">dot(v,</span> <span class="pre">u)</span></code> are equivalent to
    @@ -493,9 +405,9 @@
     and if they do not change the length of <code class="docutils literal notranslate"><span class="pre">f</span></code>.</p>
     </dd>
     </dl>
    -</div>
    -<div class="section" id="constraints">
    -<span id="s-constraints"></span><h2>Constraints<a class="headerlink" href="#constraints" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="constraints">
    +<span id="s-constraints"></span><h2>Constraints<a class="headerlink" href="#constraints" title="Permalink to this headline"></a></h2>
     <p>Linear equality and inequality constraints of the form</p>
     <div class="math">
     <p><img src="_images/math/12354e7e046bba1f8384eebcc70a2d9a09930e8e.png" alt="f(x_1,\ldots,x_n) = 0, \qquad f(x_1,\ldots,x_n) \preceq  0,"/></p>
    @@ -531,21 +443,21 @@
     constraint function.</p>
     <p>Constraints have four public attributes.</p>
     <dl class="py attribute">
    -<dt id="constraint.type">
    -<code class="sig-prename descclassname"><span class="pre">constraint.</span></code><code class="sig-name descname"><span class="pre">type</span></code><a class="headerlink" href="#constraint.type" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="constraint.type">
    +<span class="sig-prename descclassname"><span class="pre">constraint.</span></span><span class="sig-name descname"><span class="pre">type</span></span><a class="headerlink" href="#constraint.type" title="Permalink to this definition"></a></dt>
     <dd><p>Returns <code class="xref py py-const docutils literal notranslate"><span class="pre">'='</span></code> if the constraint is an equality constraint, and
     <strong>‘&lt;’</strong> if the constraint is an inequality constraint.</p>
     </dd></dl>
     
     <dl class="py attribute">
    -<dt id="constraint.value">
    -<code class="sig-prename descclassname"><span class="pre">constraint.</span></code><code class="sig-name descname"><span class="pre">value</span></code><a class="headerlink" href="#constraint.value" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="constraint.value">
    +<span class="sig-prename descclassname"><span class="pre">constraint.</span></span><span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#constraint.value" title="Permalink to this definition"></a></dt>
     <dd><p>Returns the value of the constraint function.</p>
     </dd></dl>
     
     <dl class="py attribute">
    -<dt id="constraint.multiplier">
    -<code class="sig-prename descclassname"><span class="pre">constraint.</span></code><code class="sig-name descname"><span class="pre">multiplier</span></code><a class="headerlink" href="#constraint.multiplier" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="constraint.multiplier">
    +<span class="sig-prename descclassname"><span class="pre">constraint.</span></span><span class="sig-name descname"><span class="pre">multiplier</span></span><a class="headerlink" href="#constraint.multiplier" title="Permalink to this definition"></a></dt>
     <dd><p>For a constraint <code class="docutils literal notranslate"><span class="pre">c</span></code>, <code class="docutils literal notranslate"><span class="pre">c.multiplier</span></code> is a <code class="xref py py-class docutils literal notranslate"><span class="pre">variable</span></code>
     object of dimension <code class="docutils literal notranslate"><span class="pre">len(c)</span></code>.  It is used to represent the
     Lagrange multiplier or dual variable associated with the constraint.
    @@ -554,22 +466,22 @@
     </dd></dl>
     
     <dl class="py attribute">
    -<dt id="constraint.name">
    -<code class="sig-prename descclassname"><span class="pre">constraint.</span></code><code class="sig-name descname"><span class="pre">name</span></code><a class="headerlink" href="#constraint.name" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="constraint.name">
    +<span class="sig-prename descclassname"><span class="pre">constraint.</span></span><span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#constraint.name" title="Permalink to this definition"></a></dt>
     <dd><p>The name of the constraint.  Changing the name of a constraint also
     changes the name of the multiplier of <code class="docutils literal notranslate"><span class="pre">c</span></code>.  For example, the command
     <code class="docutils literal notranslate"><span class="pre">c.name</span> <span class="pre">=</span> <span class="pre">'newname'</span></code> also changes
     <code class="docutils literal notranslate"><span class="pre">c.multiplier.name</span></code> to <code class="docutils literal notranslate"><span class="pre">'newname_mul'</span></code>.</p>
     </dd></dl>
     
    -</div>
    -<div class="section" id="optimization-problems">
    -<span id="s-lp"></span><h2>Optimization Problems<a class="headerlink" href="#optimization-problems" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="optimization-problems">
    +<span id="s-lp"></span><h2>Optimization Problems<a class="headerlink" href="#optimization-problems" title="Permalink to this headline"></a></h2>
     <p>Optimization problems are be constructed by calling the following
     function.</p>
     <dl class="py function">
    -<dt id="cvxopt.modeling.op">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.modeling.</span></code><code class="sig-name descname"><span class="pre">op</span></code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">objective</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">constraints</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">name</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.modeling.op" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.modeling.op">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.modeling.</span></span><span class="sig-name descname"><span class="pre">op</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">objective</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">constraints</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">name</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.modeling.op" title="Permalink to this definition"></a></dt>
     <dd><p>The first argument specifies the objective function to be minimized.
     It can be an affine or convex piecewise-linear function with length 1,
     a <a class="reference internal" href="#cvxopt.modeling.variable" title="cvxopt.modeling.variable"><code class="xref py py-class docutils literal notranslate"><span class="pre">variable</span></code></a> with length 1, or a scalar constant (integer, float,
    @@ -583,53 +495,53 @@
     <p>The following attributes and methods are useful for examining
     and modifying optimization problems.</p>
     <dl class="py attribute">
    -<dt id="op.objective">
    -<code class="sig-prename descclassname"><span class="pre">op.</span></code><code class="sig-name descname"><span class="pre">objective</span></code><a class="headerlink" href="#op.objective" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="op.objective">
    +<span class="sig-prename descclassname"><span class="pre">op.</span></span><span class="sig-name descname"><span class="pre">objective</span></span><a class="headerlink" href="#op.objective" title="Permalink to this definition"></a></dt>
     <dd><p>The objective or cost function.  One can write to this attribute to
     change the objective of an existing problem.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="op.variables">
    -<code class="sig-prename descclassname"><span class="pre">op.</span></code><code class="sig-name descname"><span class="pre">variables</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#op.variables" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="op.variables">
    +<span class="sig-prename descclassname"><span class="pre">op.</span></span><span class="sig-name descname"><span class="pre">variables</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#op.variables" title="Permalink to this definition"></a></dt>
     <dd><p>Returns a list of the variables of the problem.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="op.constraints">
    -<code class="sig-prename descclassname"><span class="pre">op.</span></code><code class="sig-name descname"><span class="pre">constraints</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#op.constraints" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="op.constraints">
    +<span class="sig-prename descclassname"><span class="pre">op.</span></span><span class="sig-name descname"><span class="pre">constraints</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#op.constraints" title="Permalink to this definition"></a></dt>
     <dd><p>Returns a list of the constraints.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="op.inequalities">
    -<code class="sig-prename descclassname"><span class="pre">op.</span></code><code class="sig-name descname"><span class="pre">inequalities</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#op.inequalities" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="op.inequalities">
    +<span class="sig-prename descclassname"><span class="pre">op.</span></span><span class="sig-name descname"><span class="pre">inequalities</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#op.inequalities" title="Permalink to this definition"></a></dt>
     <dd><p>Returns a list of the inequality constraints.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="op.equalities">
    -<code class="sig-prename descclassname"><span class="pre">op.</span></code><code class="sig-name descname"><span class="pre">equalities</span></code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#op.equalities" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="op.equalities">
    +<span class="sig-prename descclassname"><span class="pre">op.</span></span><span class="sig-name descname"><span class="pre">equalities</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#op.equalities" title="Permalink to this definition"></a></dt>
     <dd><p>Returns a list of the equality constraints.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="op.delconstraint">
    -<code class="sig-prename descclassname"><span class="pre">op.</span></code><code class="sig-name descname"><span class="pre">delconstraint</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">c</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#op.delconstraint" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="op.delconstraint">
    +<span class="sig-prename descclassname"><span class="pre">op.</span></span><span class="sig-name descname"><span class="pre">delconstraint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">c</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#op.delconstraint" title="Permalink to this definition"></a></dt>
     <dd><p>Deletes constraint <code class="docutils literal notranslate"><span class="pre">c</span></code> from the problem.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt id="op.addconstraint">
    -<code class="sig-prename descclassname"><span class="pre">op.</span></code><code class="sig-name descname"><span class="pre">addconstraint</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">c</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#op.addconstraint" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="op.addconstraint">
    +<span class="sig-prename descclassname"><span class="pre">op.</span></span><span class="sig-name descname"><span class="pre">addconstraint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">c</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#op.addconstraint" title="Permalink to this definition"></a></dt>
     <dd><p>Adds constraint <code class="docutils literal notranslate"><span class="pre">c</span></code> to the problem.</p>
     </dd></dl>
     
     <p>An optimization problem with convex piecewise-linear objective and
     constraints can be solved by calling the method <code class="xref py py-func docutils literal notranslate"><span class="pre">solve</span></code>.</p>
     <dl class="py method">
    -<dt id="op.solve">
    -<code class="sig-prename descclassname"><span class="pre">op.</span></code><code class="sig-name descname"><span class="pre">solve</span></code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">format</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#op.solve" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="op.solve">
    +<span class="sig-prename descclassname"><span class="pre">op.</span></span><span class="sig-name descname"><span class="pre">solve</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">format</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">solver</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#op.solve" title="Permalink to this definition"></a></dt>
     <dd><p>This function converts the optimization problem to a linear program in
     matrix form and then solves it using the solver described in
     the section <a class="reference internal" href="coneprog.html#s-lpsolver"><span class="std std-ref">Linear Programming</span></a>.</p>
    @@ -732,26 +644,26 @@
     files in
     <a class="reference external" href="http://lpsolve.sourceforge.net/5.5/mps-format.htm">MPS format</a>.</p>
     <dl class="py method">
    -<dt>
    -<code class="sig-name descname"><span class="pre">tofile(filename)</span> <span class="pre">:noindex:</span></code></dt>
    +<dt class="sig sig-object py">
    +<span class="sig-name descname"><span class="pre">tofile(filename)</span> <span class="pre">:noindex:</span></span></dt>
     <dd><p>If the problem is an LP, writes it to the file <cite>filename</cite> using the
     MPS format.  Row and column labels are assigned based on the variable
     and constraint names in the LP.</p>
     </dd></dl>
     
     <dl class="py method">
    -<dt>
    -<code class="sig-name descname"><span class="pre">fromfile(filename)</span> <span class="pre">:noindex:</span></code></dt>
    +<dt class="sig sig-object py">
    +<span class="sig-name descname"><span class="pre">fromfile(filename)</span> <span class="pre">:noindex:</span></span></dt>
     <dd><p>Reads the LP from the file <cite>filename</cite>.  The file must be a fixed-format
     MPS file.  Some features of the MPS format are not supported: comments
     beginning with dollar signs, the row types ‘DE’, ‘DL’, ‘DG’, and ‘DN’,
     and the capability of reading multiple righthand side, bound or range
     vectors.</p>
     </dd></dl>
     
    -</div>
    -<div class="section" id="examples">
    -<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="examples">
    +<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline"></a></h2>
     <p><strong>Norm and Penalty Approximation</strong></p>
     <blockquote>
     <div><p>In the first example we solve the norm approximation problems</p>
    @@ -884,60 +796,42 @@ <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this head
     </pre></div>
     </div>
     </div></blockquote>
    -</div>
    -</div>
    +</section>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    -        <a href="c-api.html" class="btn btn-neutral float-right" title="C API" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="solvers.html" class="btn btn-neutral float-left" title="Nonlinear Convex Optimization" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    +        <a href="c-api.html" class="btn btn-neutral float-right" title="C API" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/objects.inv+0 0 modified
  • doc/html/printing.html+25 131 modified
    @@ -1,92 +1,44 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Matrix Formatting &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="prev" title="C API" href="c-api.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -103,71 +55,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Matrix Formatting</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="matrix-formatting">
    -<span id="c-printing"></span><h1>Matrix Formatting<a class="headerlink" href="#matrix-formatting" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="matrix-formatting">
    +<span id="c-printing"></span><h1>Matrix Formatting<a class="headerlink" href="#matrix-formatting" title="Permalink to this headline"></a></h1>
     <p>This appendix describes ways to customize the formatting of CVXOPT matrices.</p>
     <p>As with other Python objects, the functions <code class="xref py py-func docutils literal notranslate"><span class="pre">repr</span></code> and <code class="xref py py-func docutils literal notranslate"><span class="pre">str</span></code>
     return strings with printable representations of matrices.  The command
    @@ -272,58 +184,40 @@
     <span class="go">(4,4)  4.00e+00</span>
     </pre></div>
     </div>
    -</div>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="c-api.html" class="btn btn-neutral float-left" title="C API" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/search.html+23 127 modified
    @@ -1,94 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
       <meta charset="utf-8" />
    -  
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Search &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
         
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    -    <script type="text/javascript" src="_static/searchtools.js"></script>
    -    <script type="text/javascript" src="_static/language_data.js"></script>
    +    <script src="_static/js/theme.js"></script>
    +    <script src="_static/searchtools.js"></script>
    +    <script src="_static/language_data.js"></script>
         <link rel="search" title="Search" href="#" />
         <link rel="copyright" title="Copyright" href="copyright.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="#" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul>
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -105,67 +56,29 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Search</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    +             
       <noscript>
       <div id="fallback" class="admonition warning">
         <p class="last">
    @@ -180,57 +93,40 @@
       </div>
     
                </div>
    -           
               </div>
               <footer>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
    -  <script type="text/javascript">
    +  <script>
         jQuery(function() { Search.loadIndex("searchindex.js"); });
       </script>
       
    -  <script type="text/javascript" id="searchindexloader"></script>
    +  <script id="searchindexloader"></script>
       
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     
    
  • doc/html/searchindex.js+1 1 modified
    @@ -1 +1 @@
    -Search.setIndex({docnames:["blas","c-api","coneprog","copyright","fftw","index","intro","lapack","matrices","modeling","printing","solvers","spsolvers"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["blas.rst","c-api.rst","coneprog.rst","copyright.rst","fftw.rst","index.rst","intro.rst","lapack.rst","matrices.rst","modeling.rst","printing.rst","solvers.rst","spsolvers.rst"],objects:{"":{CCS:[8,2,1,""],I:[8,2,1,""],J:[8,2,1,""],Matrix_New:[1,0,1,"c.Matrix_New"],Matrix_NewFromMatrix:[1,0,1,"c.Matrix_NewFromMatrix"],Matrix_NewFromSequence:[1,0,1,"c.Matrix_NewFromSequence"],SpMatrix_New:[1,0,1,"c.SpMatrix_New"],SpMatrix_NewFromIJV:[1,0,1,"c.SpMatrix_NewFromIJV"],SpMatrix_NewFromMatrix:[1,0,1,"c.SpMatrix_NewFromMatrix"],V:[8,2,1,""],abs:[8,3,1,""],bool:[8,3,1,""],ctrans:[8,4,1,""],fromfile:[8,4,1,""],imag:[8,4,1,""],len:[8,3,1,""],max:[8,3,1,""],min:[8,3,1,""],real:[8,4,1,""],size:[8,2,1,""],sum:[8,3,1,""],tofile:[8,4,1,""],trans:[8,4,1,""],typecode:[8,2,1,""],value:[9,2,1,""],variables:[9,2,1,"id0"]},"cvxopt.amd":{order:[12,3,1,""]},"cvxopt.blas":{asum:[0,3,1,""],axpy:[0,3,1,""],copy:[0,3,1,""],dot:[0,3,1,""],dotu:[0,3,1,""],gbmv:[0,3,1,""],gemm:[0,3,1,""],gemv:[0,3,1,""],ger:[0,3,1,""],geru:[0,3,1,""],hbmv:[0,3,1,""],hemm:[0,3,1,""],hemv:[0,3,1,""],her2:[0,3,1,""],her2k:[0,3,1,""],her:[0,3,1,""],herk:[0,3,1,""],iamax:[0,3,1,""],nrm2:[0,3,1,""],sbmv:[0,3,1,""],scal:[0,3,1,""],swap:[0,3,1,""],symm:[0,3,1,""],symv:[0,3,1,""],syr2:[0,3,1,""],syr2k:[0,3,1,""],syr:[0,3,1,""],syrk:[0,3,1,""],tbmv:[0,3,1,""],tbsv:[0,3,1,""],trmm:[0,3,1,""],trmv:[0,3,1,""],trsm:[0,3,1,""],trsv:[0,3,1,""]},"cvxopt.cholmod":{diag:[12,3,1,""],linsolve:[12,3,1,""],numeric:[12,3,1,""],solve:[12,3,1,""],splinsolve:[12,3,1,""],spsolve:[12,3,1,""],symbolic:[12,3,1,""]},"cvxopt.fftw":{dct:[4,3,1,""],dctn:[4,3,1,""],dft:[4,3,1,""],dftn:[4,3,1,""],dst:[4,3,1,""],dstn:[4,3,1,""],idct:[4,3,1,""],idctn:[4,3,1,""],idft:[4,3,1,""],idftn:[4,3,1,""],idst:[4,3,1,""],idstn:[4,3,1,""]},"cvxopt.lapack":{gbsv:[7,3,1,""],gbtrf:[7,3,1,""],gbtrs:[7,3,1,""],gees:[7,3,1,""],gelqf:[7,3,1,""],gels:[7,3,1,""],geqp3:[7,3,1,""],geqrf:[7,3,1,""],gesdd:[7,3,1,""],gesv:[7,3,1,""],gesvd:[7,3,1,""],getrf:[7,3,1,""],getri:[7,3,1,""],getrs:[7,3,1,""],gges:[7,3,1,""],gtsv:[7,3,1,""],gttrf:[7,3,1,""],gttrs:[7,3,1,""],heev:[7,3,1,""],heevd:[7,3,1,""],heevr:[7,3,1,""],heevx:[7,3,1,""],hegv:[7,3,1,""],hesv:[7,3,1,""],hetrf:[7,3,1,""],hetri:[7,3,1,""],hetrs:[7,3,1,""],orglq:[7,3,1,""],orgqr:[7,3,1,""],ormlq:[7,3,1,""],ormqr:[7,3,1,""],pbsv:[7,3,1,""],pbtrf:[7,3,1,""],pbtrs:[7,3,1,""],posv:[7,3,1,""],potrf:[7,3,1,""],potri:[7,3,1,""],potrs:[7,3,1,""],ptsv:[7,3,1,""],pttrf:[7,3,1,""],pttrs:[7,3,1,""],syev:[7,3,1,""],syevd:[7,3,1,""],syevr:[7,3,1,""],syevx:[7,3,1,""],sygv:[7,3,1,""],sysv:[7,3,1,""],sytrf:[7,3,1,""],sytri:[7,3,1,""],sytrs:[7,3,1,""],tbtrs:[7,3,1,""],trtri:[7,3,1,""],trtrs:[7,3,1,""],unglq:[7,3,1,""],ungqr:[7,3,1,""],unmlq:[7,3,1,""],unmqr:[7,3,1,""]},"cvxopt.modeling":{dot:[9,3,1,""],op:[9,3,1,""],sum:[9,3,1,""],variable:[9,3,1,""]},"cvxopt.solvers":{conelp:[2,3,1,""],coneqp:[2,3,1,""],cp:[11,3,1,""],cpl:[11,3,1,""],gp:[11,3,1,""],lp:[2,3,1,""],qp:[2,3,1,""],sdp:[2,3,1,""],socp:[2,3,1,""]},"cvxopt.umfpack":{linsolve:[12,3,1,""],numeric:[12,3,1,""],solve:[12,3,1,""],symbolic:[12,3,1,""]},Matrix_New:{id:[1,1,1,"c.Matrix_New"],ncols:[1,1,1,"c.Matrix_New"],nrows:[1,1,1,"c.Matrix_New"]},Matrix_NewFromMatrix:{id:[1,1,1,"c.Matrix_NewFromMatrix"],src:[1,1,1,"c.Matrix_NewFromMatrix"]},Matrix_NewFromSequence:{id:[1,1,1,"c.Matrix_NewFromSequence"],x:[1,1,1,"c.Matrix_NewFromSequence"]},SpMatrix_New:{id:[1,1,1,"c.SpMatrix_New"],ncols:[1,1,1,"c.SpMatrix_New"],nrows:[1,1,1,"c.SpMatrix_New"],nzmax:[1,1,1,"c.SpMatrix_New"]},SpMatrix_NewFromIJV:{I:[1,1,1,"c.SpMatrix_NewFromIJV"],J:[1,1,1,"c.SpMatrix_NewFromIJV"],V:[1,1,1,"c.SpMatrix_NewFromIJV"],id:[1,1,1,"c.SpMatrix_NewFromIJV"],ncols:[1,1,1,"c.SpMatrix_NewFromIJV"],nrows:[1,1,1,"c.SpMatrix_NewFromIJV"]},SpMatrix_NewFromMatrix:{id:[1,1,1,"c.SpMatrix_NewFromMatrix"],src:[1,1,1,"c.SpMatrix_NewFromMatrix"]},constraint:{multiplier:[9,2,1,""],name:[9,2,1,""],type:[9,2,1,""],value:[9,2,1,""]},cvxopt:{cos:[8,3,1,""],div:[8,3,1,""],exp:[8,3,1,""],getseed:[8,3,1,""],log:[8,3,1,""],matrix:[8,3,1,""],max:[8,3,1,""],min:[8,3,1,""],mul:[8,3,1,""],normal:[8,3,1,""],setseed:[8,3,1,""],sin:[8,3,1,""],sparse:[8,3,1,""],spdiag:[8,3,1,""],spmatrix:[8,3,1,""],sqrt:[8,3,1,""],uniform:[8,3,1,""]},op:{addconstraint:[9,4,1,""],constraints:[9,4,1,""],delconstraint:[9,4,1,""],equalities:[9,4,1,""],inequalities:[9,4,1,""],objective:[9,2,1,""],solve:[9,4,1,""],variables:[9,4,1,""]},variable:{name:[9,2,1,""],value:[9,2,1,""]}},objnames:{"0":["c","function","C function"],"1":["c","functionParam","C function parameter"],"2":["py","attribute","Python attribute"],"3":["py","function","Python function"],"4":["py","method","Python method"]},objtypes:{"0":"c:function","1":"c:functionParam","2":"py:attribute","3":"py:function","4":"py:method"},terms:{"0050798580569307e":7,"00e":[0,2,7,8,9,10,12],"01e":7,"02e":[2,7],"03e":2,"04e":[2,7],"05e":[2,7],"06e":[2,7],"07e":[7,12],"08e":7,"09e":7,"100":[2,7,9,11,12],"1000":11,"10e":[7,8,10],"10x_2":2,"10x_3":2,"110":11,"11e":[7,11],"11x_3":2,"12e":7,"12x_2":2,"12x_3":2,"13e":[2,7],"13x_2":2,"14e":7,"14x_2":2,"150":11,"15x_3":2,"16e":7,"16x_1":2,"17e":[2,7,12],"17x_3":2,"180":11,"187":2,"18e":[2,7],"18x_2":2,"196":12,"1975":0,"1988":0,"199":12,"1990":0,"1999":7,"19e":7,"1ex":2,"200":11,"2004":[3,12],"2008":12,"2009":3,"2010":3,"2011":3,"2012":3,"2021":[3,5],"20e":[0,8,9,10,11],"221":11,"222":11,"223":11,"224":11,"22e":[2,12],"24x_1":2,"25e":7,"26e":[2,7,12],"27e":7,"28e":7,"29e":7,"2ex":2,"2f_":11,"2f_0":11,"2f_1":11,"2f_k":11,"2f_m":11,"2k_l":7,"2x2":10,"2x_1":2,"2x_2":2,"309":0,"30e":[2,7,8,9,10],"311":9,"312":9,"313":9,"31e":[7,12],"323":0,"32e":[2,7,12],"33e":[2,12],"34e":2,"35e":[2,7],"37e":12,"381":12,"388":12,"38e":7,"39e":7,"3ex":2,"3x_1":2,"3x_2":2,"40e":[7,8,9,10],"41e":[2,7,8],"42e":2,"43e":7,"44e":12,"46e":[7,12],"47e":7,"48e":7,"4x_1":2,"4x_2":2,"500":9,"50533153593":12,"50e":[8,10,12],"51e":7,"52e":[2,7],"53e":7,"57e":7,"58e":[2,7],"59e":[2,11],"5x10":10,"5x_1":2,"5x_2":2,"5x_3":2,"60e":[7,8,10],"62e":7,"63e":[2,7,12],"64e":7,"66e":[2,7],"67e":[0,2,7],"68e":[2,7],"69e":7,"6x_1":2,"6x_2":2,"6x_3":2,"70e":[7,8,9,10],"71e":7,"72e":7,"73e":8,"74e":[2,7],"75e":[2,7],"76e":7,"77e":[2,7],"78e":[2,7],"79e":[2,7,12],"7x_1":2,"7x_2":2,"7x_3":2,"80e":[2,7,8,9,10],"81e":[7,12],"832":12,"837":12,"83e":[7,12],"84e":7,"85e":[2,7],"86e":7,"87e":[7,9],"887":12,"88e":[2,7,12],"89e":[7,12],"8x_1":2,"90e":[2,8,10],"92e":7,"93e":7,"95e":7,"96e":[2,7],"97e":12,"98e":[2,7],"9x_3":2,"break":[7,12],"case":[2,7,8,11],"char":1,"class":[1,5,7,9,11,12],"default":[2,8,9,10,11,12],"export":8,"final":7,"float":[0,1,8,9],"function":[0,1,2,5,6,7,10,11,12],"import":[0,2,7,8,9,10,11,12],"int":1,"long":8,"new":[8,9,12],"null":1,"public":[3,9],"return":[0,1,2,7,8,9,10,11,12],"static":1,"true":[2,7,8,11],"try":12,"var":1,"void":1,"while":[7,8],CCS:[1,8],FOR:3,For:[0,1,2,4,7,8,9,10,11,12],Its:[6,9,12],LPs:9,MPS:9,One:[2,8,9,11],The:[1,2,4,5,6,8,9,10,11,12],Their:11,Then:[2,11],There:[7,11],These:[2,4,6,8,11,12],Use:0,Using:9,With:[2,9,12],_inf:2,_infti:2,a_1:9,a_i:[7,9],a_n:9,abl:7,about:[2,11],abov:[4,8,11,12],abs:[2,8,9,11],absent:[2,8],absolut:[2,8,9,11],abstol:[2,11],abz:7,accept:2,access:[2,8,10,11,12],accuraci:[2,11],acent:[7,11],achiev:0,acm:[0,12],add:[8,9],addconstraint:9,added:[8,9],adding:[2,11],addit:[0,8,9,12],adjoint:[2,11],adjust:1,admit:9,advantag:[0,2,11],affect:2,affin:9,aflr:11,after:8,algebra:0,algorithm:[5,7,9,12],all:[0,2,4,7,8,9,10,11,12],alloc:[1,2],allow:[0,1,2,7,8,9,11],along:[4,7],alpha:[0,2,7,11],also:[0,2,4,7,8,9,11,12],alter:8,altern:[7,8,10],although:0,alwai:[0,1,8],amd:[6,12],amestoi:12,amin:11,amink:11,among:2,amount:1,analysi:12,analyt:[5,11],andersen:[3,5],ani:[0,2,3,8,9,10,12],anoth:[0,8,12],api:[2,5],appear:[7,8,12],append:8,appendix:10,appli:[4,8,11,12],applic:[2,6,7],approxim:[2,6,9,11,12],arg:1,argmax:0,argument:[0,2,4,7,8,9,10,11,12],aris:[9,12],arithmet:[0,5,6,9],arithmeticerror:[7,12],arrai:[0,1,2,7,8,9,11,12],asc:[2,7,11],ascend:7,aspect:11,assign:[8,9],associ:[2,9,11],assum:[2,7,8,11,12],assumpt:11,asum:0,attribut:[5,9],automat:1,avail:[4,8,9,12],avoid:1,awal:11,ax_0:11,ax_2:7,axi:[2,11],axpi:0,b_1:7,b_2:7,b_i:[7,9],b_x:[2,11],b_y:[2,11],b_z:[2,11],backtrack:[7,12],backward:2,band:[0,7],bar:[0,2],base:[6,7,8,9,11,12],basic:[0,11],baz:7,becaus:[2,8,11],been:2,befor:[1,11],begin:[0,1,2,7,8,9,11,12],behaviour:10,below:[0,2,7,8,9,10,11,12],best:12,beta:[0,2,7,11],beta_k:[2,11],between:[0,2,4,8,12],bidiagon:7,bin:8,binari:8,bla:[1,2,5,6,7,9,11,12],blas__doc__:1,blas_funct:1,blas_modul:1,block:[2,7,8,11],book:[2,11],bool:8,both:[7,8],bottom:11,bound:[7,9,11],box:11,briefli:7,buffer:1,build:6,built:[5,6,9,10],bzl:2,c_0:[2,11],c_1:[2,11],c_m:[2,11],calcul:[2,11],call:[0,1,2,7,8,9,10,11,12],can:[0,1,2,3,6,7,8,9,10,11,12],cannot:8,capabl:9,cartesian:[2,11],caus:1,ccc:[2,11],cccc:[0,1,7,11,12],ccccc:[0,7],cccccc:11,ccccccc:0,cdot:[0,2,9,11,12],center:[5,11],certain:1,certif:[2,9],chang:[1,2,8,9,11],chapter:[2,6,7,8,11],charact:[0,8,12],check:7,chen:12,choleski:[2,6,7,12],cholmod:[6,12],choos:2,chosen:8,circ:12,classif:9,classifi:9,clock:8,close:[0,8],cngrnc:2,code:[0,1,2,4,7,8,9,11,12],coeffici:[0,2,7,8,9,11,12],colptr:1,colum:8,column:[0,1,2,4,7,8,9,10,11,12],columnwis:1,combin:[0,8],command:[2,6,8,9,10,11],comment:[9,12],common:12,compar:12,comparison:[8,9],compat:[2,8],complet:[0,7],complex:[0,1,4,6,7,8,10,12],complic:0,compon:[2,9,11],componentwis:[2,9,11],compress:[1,8],comput:[2,4,6,7,8,9,12],concaten:8,concav:9,condit:[2,11],condition:12,cone:[5,6,11],conelp:2,coneqp:2,congruenc:[2,11],conjug:[7,8],conquer:7,consid:[2,8,11,12],consist:8,constant:[0,9],constrain:[2,11],constraint:[2,5,6,11,12],construct:[1,8,9],contai:7,contain:[1,2,4,6,7,8,11,12],content:[7,8],contigu:1,continu:8,control:[1,2,6,7,11,12],conveni:[2,8],convent:[0,7,8,9,12],convers:[1,8],convert:[1,8,9],convex:[2,5,6,9],coordin:11,copi:[0,1,3,8,9,11],copyright:[4,5],corner:11,correspond:[0,2,4,7,8,9,11],cos:[4,8],cosin:[5,8],cost:[2,6,9],covari:5,covsel:12,cpl:11,crash:1,creal:1,creat:[0,1,8,9,11,12],creation:1,criteria:[2,11],criterion:12,croz:0,crucial:1,ctran:8,current:[2,8,11],curv:2,custom:[2,10,11],cvxopt:[0,1,2,3,4,6,7,8,9,10,11,12],cvxpy:9,d0d0d0:[2,11],d_i:11,dagger:2,dahl:[3,5],data:[2,7,9],davi:12,dct:4,dctn:4,ddot:0,decomposit:5,decrement:[7,12],def:[2,7,11,12],defin:[1,2,4,6,7,8,9,10,11],definit:[2,5,6],degre:[6,12],delconstraint:9,delet:9,delta:11,denot:[2,4,9,11,12],dens:[0,2,4,5,6,7,9,10,11,12],depend:[2,9,11,12],deriv:11,descend:7,describ:[0,1,2,6,7,8,9,10,11,12],descript:[1,8],destroi:7,det:12,detail:[2,3,6,7,9,12],detect:2,determin:[2,7,8,9,10,12],develop:6,deviat:[2,8],dformat:10,dft:4,dftn:4,diag:[0,2,7,11,12],diagon:[0,2,7,8,11,12],dictionari:[2,10,11,12],differ:[0,2,6,7,8,9,12],differenti:11,difficulti:[2,11],dim:[2,4,11],dimens:[1,2,4,8,9,11,12],dimension:[4,8],direct:7,directli:[0,8],directori:1,discret:[5,6],discuss:[0,11],displai:[9,10],distinguish:0,distribut:[1,2,3,6,8,12],div:[2,7,8,11],divid:[2,7,8],divis:[8,9],divison:8,dnl:11,dnli:11,docstr:[0,7],document:[0,2,4,7],doe:[2,7,8,9,12],dollar:9,domain:[11,12],dongarra:0,dot:[0,2,7,9,12],dotu:0,doubl:[0,1,6,8,10],downdat:12,dsdp5:[2,6],dsdp:2,dsdp_gaptoler:2,dsdp_maxit:2,dsdp_monitor:2,dst:4,dstn:4,du2:7,dual:[2,9,11],dualiti:11,dualstart:2,due:[2,11],duff:[0,12],dump:8,duplic:8,dure:[2,4,8,11,12],e_1:12,e_2:12,each:[1,2,4,7,8,9,11],earli:2,easili:0,edit:[2,7],effici:[0,2,8,12],eigenproblem:5,eigenvalu:[5,6],eigenvector:7,either:[1,3,7,8,9],elem:12,element:[0,1,2,7,8,9,12],elementari:7,elementwis:[8,9],elimin:[2,7],els:[1,2,11,12],empti:[2,8,9,11],end:[0,1,2,7,8,9,11,12],endif:1,entir:10,entri:[0,1,2,7,8,9,10,11,12],epigraph:11,epsilon_:[2,11],equal:[1,2,7,8,9,11,12],equat:[0,2,5,6,11],equival:[1,2,7,8,9,12],especi:8,essenti:1,estim:12,euclidean:0,evalu:[2,9,11],even:[3,8],everi:8,exactli:0,examin:9,exampl:[0,1,2,4,5,6,8,10,11],except:[2,7,8,11,12],execut:[2,6,10],exist:[8,9,12],exit:[2,7,11,12],exp:[8,11],expand:9,expect:[2,7],expens:[2,11],explain:[2,8,11],explicit:9,explicitli:7,exploit:[0,5],exponenti:8,express:[8,9,12],extend:[0,1,6],extens:[1,6],extent:2,extern:[1,2],f0f0f0:2,f_0:11,f_0x:11,f_1:11,f_i:11,f_ix:11,f_k:11,f_m:11,facecolor:[2,11],facil:6,fact:2,factor:[2,5,12],fail:7,fals:[2,7,8,11],faster:[2,7,8,11],fea:[2,11],feasibl:[2,7,11],feastol:[2,11],featur:[2,9],februari:5,few:[6,12],fftw3:4,fftw:[4,6],field:[1,2,11],fig:2,figur:[2,9,11],file:[1,8,9],filenam:9,fill:[1,2,11,12],filter:8,first:[0,1,2,7,8,9,11,12],fit:3,five:[7,11],fix:9,fkkt:[2,11],floor:11,floorplan:11,flr:11,follow:[0,1,2,4,6,7,8,9,10,11,12],form:[2,7,8,9,11,12],format:[1,5,6,7,9],formul:[2,9],fortran:0,found:[2,11],foundat:3,four:[1,2,7,8,9,12],fourier:5,fourth:8,frac:[2,4,11],free:[3,6,7],from:[0,1,2,6,7,8,9,10,11,12],fromfil:[8,9],front:7,full:7,further:[7,10],futur:7,g_0:[2,11],g_1:[2,11],g_i:11,g_k:2,g_m:[2,11],gamma:11,gap:[2,11],gbmv:0,gbsv:7,gbtr:7,gbtrf:7,gee:7,gel:7,gelqf:7,gemm:[0,2],gemv:[0,2,7,11],gener:[0,1,2,3,5,6,9,11],geometr:5,geq:[2,9,11],geqp3:7,geqrf:7,ger:0,geru:0,gesdd:7,gesv:7,gesvd:7,get:8,getr:7,getrf:7,getri:7,getse:8,getstat:8,gge:7,give:[0,2,11],given:[1,4,7,8,9,12],glp_msg_off:2,glpk:[2,6,9],gnu:[2,3,8],grad:12,gradf:11,gradient:[7,11,12],greater:[2,7,9],grow:1,gsl:8,gtsv:7,gttr:7,gttrf:7,guid:[7,12],gx_0:11,h_0:2,h_1:[2,11],h_2:11,h_3:11,h_4:11,h_5:11,h_k:[2,11],h_kz_k:2,h_m:2,h_n:2,hadamard:12,hager:12,half:7,hammarl:0,hand:[0,2,7,8,11,12],handl:[2,11],hanson:0,has:[1,2,4,7,8,9,11,12],hat:2,have:[0,1,2,7,8,9,11,12],hbmv:0,header:1,heev:7,heevd:7,heevr:7,heevx:7,hegv:7,height:[10,11],help:[0,6],hemm:0,hemv:0,henc:[2,11],her2:0,her2k:0,her:0,here:[2,9,11],herk:0,hermitian:[0,5,12],hess:12,hessian:[7,11,12],hesv:7,hetr:7,hetrf:7,hetri:7,high:6,hist:9,histogram:9,hope:3,horizont:0,household:[2,11],how:[2,6,7,10,11],howev:[1,8],hyperbol:[2,11],i_1:12,i_2:12,i_k:12,i_l:7,i_q:12,i_u:7,iamax:0,idct:4,idctn:4,idd:1,ident:[7,8,9,12],idft:4,idftn:4,idst:4,idstn:4,iformat:10,ignor:[1,2,8,12],iii:4,illustr:[0,1,2,7,8,10,12],imag:8,imaginari:8,implement:[0,2,8,11,12],impli:[3,8],import_cvxopt:1,imposs:8,includ:[0,1,2,4,6,7,8,9,10,12],incompat:8,indefinit:12,independ:12,index:[0,1,5,9,12],indic:[0,1,2,8,11,12],ineq:9,inequ:[2,9,11],inf:7,infeas:[2,9,11],infin:9,info:6,inform:[2,11],infti:9,initbla:1,initi:[1,2,8,9],initv:2,inner:9,input:[2,4],instal:[2,4,6,8,9,12],instanc:[2,11],instead:[2,8,12],int_t:1,integ:[0,1,2,4,7,8,9,10,11,12],integr:6,interact:6,interchang:0,interfac:[1,2,4,5,6,11,12],interior:2,intermedi:0,intern:0,interpret:[2,4,6,8,9],interv:[2,7],introduc:6,introduct:5,invers:[2,4,7,11,12],involv:9,iparam:2,ipiv:7,iter:[2,7,8,11,12],its:[2,4,7,8,9,11,12],itself:1,ityp:7,j_1:12,j_2:12,j_k:12,j_q:12,joachim:5,jobu:7,jobvt:7,jobz:7,jpvt:7,juxtapos:8,jv_k:[2,11],k_l:[0,7],k_u:[0,7],karush:11,kei:[2,11],keyword:2,kincaid:0,kinv:12,kit:2,kkt:[2,7,11],kktsolver:[2,11],know:8,krogh:0,kuhn:11,kwlist:1,kwrd:1,l1regl:2,l2ac:11,label:9,lagrang:9,lam:7,lambda:[7,8],languag:6,lapack:[2,5,6,11,12],larg:[0,7,8],larger:1,last:[2,8,11,12],later:[3,9],lawson:0,ldl:[7,12],ldlh:[7,12],ldlt:[7,12],ldot:[0,2,4,9,11],ldx:12,lead:7,least:[2,4,5,8,11],left:[0,1,2,7,8,9,11,12],leftrightarrow:0,lemma:11,len:[1,8,9,12],length:[0,1,2,7,8,9,11,12],leq:[2,7,9,11],less:[0,1,7,11],let:2,level:[5,6,7],librari:[1,2,4,6,8,12],licens:[4,5,6],lieven:5,like:1,likelihood:12,limit:2,limits_:[7,11],line:[6,7,8,12],linear:[0,5,6,9],linsolv:12,list:[1,2,8,9,11,12],load:8,log:[2,7,8,11,12],logarithm:[8,12],low:11,lower:[0,2,7,11,12],lp1:9,lp2:9,lse:11,lsiter:12,m_k:9,macro:1,made:[4,8],mai:[2,8],main:[0,2,6],major:[0,1,2,4,8,11],make:[0,1,2,6,7,8,9,10,12],manag:8,mani:[0,2,7,8],manipul:1,manual:[2,6,7],map:8,martin:5,mat:8,mat_bufd:1,match:0,math:[2,7,12],mathbf:[2,7,11,12],mathemat:[0,12],mathop:[0,2,7,11,12],mathrm:[0,2,7,11,12],matplotlib:[2,9],matric:[0,2,5,6,7,9,10,11,12],matrix:[1,2,4,5,6,7,9,11],matrix_new:1,matrix_newfrommatrix:1,matrix_newfromsequ:1,matrix_repr:10,matrix_repr_default:10,matrix_str:10,matrix_str_default:10,matter:7,max:[2,7,8,9,11],maxim:2,maximum:[0,2,8,9,10,11,12],maxit:[2,7,11],mbox:[0,2,4,7,9,11,12],mcsdp:2,mean:[0,1,2,8,11,12],mechan:[2,11],memcpi:1,memori:[1,7],merchant:3,method:[1,2,5,7,9,11,12],mimimum:12,min:[2,7,8,9,11],minim:[2,7,9,11,12],minimum:[6,8,9,12],minu:[8,9],miss:2,model:[5,6],modifi:[1,2,3,7,8,9,12],modul:[0,1,2,4,6,7,8,9,10,11,12],more:[0,1,2,3,7,8,9,12],mosek:[2,6,8,9],most:[2,6,7,8,11,12],msg_lev:2,mul:[2,7,8,11,12],multifront:12,multipl:[0,2,8,9,11],multipli:[0,7,8,9],mus:2,must:[0,1,2,7,8,9,11,12],nabla:[11,12],name:[0,2,9],natur:8,ncol:[1,8],necessari:8,necessarili:[2,8],need:[2,7,8],neg:[1,8,10],nest:9,never:[0,1],newcommand:[0,2,7,9,11,12],newnam:9,newname_mul:9,newton:[7,11,12],next:[2,7,8,11],nmethod:12,nnz:[1,10],noindex:9,non:[0,1,12],none:[2,7,9,11,12],nonempti:8,nonlinear:[5,6],nonneg:[2,7,8,11],nonposit:8,nonsingular:[0,2,7,11,12],nonsymmetr:2,nonzero:[0,1,7,8,12],norm:[0,2,5,9],normal:[7,8,9,12],notat:[2,12],note:[7,8,12],notimplementederror:8,nrm2:[0,7,11],nrow:[1,8],number:[0,1,2,6,7,8,10,11,12],numer:[2,8,9,11,12],numpi:8,nzmax:1,obj:1,object:[0,1,2,5,6,8,9,10,12],obtain:[2,8,11],odd:8,off:[2,11],offer:[0,8],often:[0,2,11],omit:[0,2,7],onc:7,one:[0,2,4,7,8,9,11,12],ones:[2,7,9,11,12],onli:[0,2,4,7,8,9,12],opaqu:12,open:8,oper:[0,2,5,6,7,9,11],operand:8,opt:2,optim:[2,5,6,7,12],option:[0,3,4,5,6,7,8,9,10,11,12],order:[0,1,4,5,6,7,8,10,11],org:5,organ:6,orglq:7,orgqr:7,ormlq:7,ormqr:7,orthant:[2,11],orthogon:7,other:[0,2,5,6,7,9,10,11,12],otherwis:[1,2,7,8,9,11],our:0,outcom:9,output:[2,7,10,11,12],over:8,overload:9,overrid:2,overwritten:[7,12],packag:[2,6,8,9,12],page:[2,7],pair:[2,7,12],pap:[7,12],paper:11,parallel:2,paramet:[5,6,10,12],parameter:[2,10],part:[0,1,2,7,8,11,12],particular:[3,8,9],partit:2,pass:[2,12],pattern:[1,8,12],pbar:2,pbsv:7,pbtr:7,pbtrf:7,penalti:9,perform:[0,8,12],permit:8,permut:[7,12],phi:[9,11],pick:7,pickl:8,piecewis:[6,9],pivot:7,place:[0,8,9],plan:11,plane:7,plot:[2,9],plu:[0,1,7,8,9,11],point:[1,2,8,11,12],pointer:8,portfolio:2,portion:2,posit:[2,5,6,9,11],possibl:[0,1,2,7,8,11,12],postmultipli:8,posv:[7,12],posynomi:11,potr:[2,7,11],potrf:[2,7,11],potri:7,pre:12,prealloc:1,preceq:[2,9,11],precis:[0,1,6,12],prefer:10,premultipli:8,previou:[7,8],primal:[2,9,11],primalstart:2,print:[0,2,6,7,8,9,10,11,12],printabl:10,problem:[2,5,6,12],produc:2,product:[0,2,7,8,9,11,12],program:[0,1,5,6,9],proof:2,proper:[2,11],properti:[2,11],provid:[0,2,7,8,9,10,11,12],pseudo:8,ptsv:7,pttr:7,pttrf:7,publish:3,pure:2,purpos:[3,6],py_initmodule3:1,py_major_vers:1,pyarg_parsetupleandkeyword:1,pydoc:[0,6],pyerr_nomemori:1,pyerr_setstr:1,pyexc_typeerror:1,pyinit_bla:1,pylab:[2,9,11],pylistobject:1,pymodinit_func:1,pymodule_cr:1,pymoduledef:1,pymoduledef_head_init:1,pyobject:1,python:[0,1,2,6,7,8,9,10,11],q_1:7,q_2:7,qcl1:2,qquad:[0,2,4,7,8,9,11,12],quad:[0,2,7,9,11,12],quadrat:5,quasi:7,r_0:[2,11],r_1:7,r_2:7,r_k:[2,11],rais:[7,8,12],rajamanickam:12,random:[7,8],randomli:[1,5,7,9],rang:[2,7,8,9,10,11,12],rank:[0,2,7,11],ratio:[7,11],reach:[2,11],read:[8,9],real:[0,1,2,4,6,7,8,11,12],realloc:1,recent:[7,8],rectangular:[0,7,12],redefin:10,redistribut:3,reduc:[2,12],refer:[0,7,8,9],referenc:[2,7,8],refin:[2,11],reflector:7,regular:[2,8],rel:[2,11],releas:[5,7],reli:8,reltol:[2,11],remain:8,remaind:8,remov:8,reorder:12,repeat:[1,8],replac:[4,7,8,12],report:9,repr:[9,10],repres:[0,2,8,9,11,12],represent:[1,8,9,10],requir:[0,1,2,4,7,11],residu:[2,9,11],resiz:8,resp:[8,9],respect:[2,8,10,11,12],restrict:2,result:[0,2,8,9,11],ret:1,retriev:12,reus:7,revers:9,rho:11,rhs:2,right:[0,1,2,7,8,9,11,12],righthand:9,risk:2,robl:11,robust:[9,11],role:[2,11],root:[2,8],routin:[0,1,2,4,6,7,11,12],row:[0,1,2,4,7,8,9,10,11],rowind:1,rrr:[2,7,11],rrrr:[0,7,12],rrrrr:[7,8,12],rti:[2,11],rule:[8,9],run:8,s_0:2,s_1:2,s_k:2,s_m:2,s_n:2,safe:1,same:[0,1,2,7,8,9,10,11,12],satisfi:[2,11],sbmv:0,scal:0,scalar:[0,8,9,11],scale:[0,2,11,12],scheme:7,schur:5,scientif:8,screen:[2,11],script:6,sdp:2,search:[7,12],second:[0,4,5,8,9,11,12],section:[0,1,2,7,8,9,11,12],see:[2,3,7,9,12],seed:8,seen:[1,10],select:[0,2,5,7,8,9],self:[1,9],semidefinit:[5,11],separ:[2,7,12],sequenc:[0,1,2,7,8,11,12],sequenti:1,set:[0,2,7,8,9,10,11,12],setse:8,setstat:8,sever:[0,2,6,8,12],share:12,shift:0,should:[2,8,11,12],show:[1,2,8,9,11],show_progress:[2,11],shown:[9,10],siam:7,side:[0,2,7,8,9,11,12],sigma:7,sign:9,signific:0,similar:[0,2,7,8,9,10,11,12],similarli:[2,11],simpl:[2,8],simpler:[2,7,11],simplex:2,simpli:10,simplici:12,sin:[4,8],sinc:1,sine:[5,8],singl:[2,8,9,11],singular:[5,12],size:[0,1,2,4,7,8,9,11,12],sizeof:1,skip:8,slack:[2,11],slice:[0,5,9],small:[2,11],smaller:1,snl:11,soc:2,socp:2,softwar:[0,3,6,12],sol:[2,11],solut:[0,2,7,9,11,12],solv:[2,6,7,9,11,12],solvabl:[2,11],solver:[5,6,9,11],some:[0,2,8,9],sort:1,sourc:[0,1,2,7],sp_col:1,sp_id:1,sp_ncol:1,sp_nnz:1,sp_nrow:1,sp_row:1,sp_vald:1,sp_valz:1,space:11,spars:[2,5,6,9,10,11],sparser:12,sparsiti:[1,2,8,12],spdiag:[2,8,11],specif:[0,11],specifi:[0,1,2,6,7,8,9,10,11,12],splinsolv:12,split:[0,2,7,11,12],spmatrix:[1,2,6,8,10,11,12],spmatrix_new:1,spmatrix_newfromijv:1,spmatrix_newfrommatrix:1,spmatrix_r:1,spmatrix_repr:10,spmatrix_repr_default:10,spmatrix_repr_str:10,spmatrix_str:10,spmatrix_str_default:10,spmatrix_str_triplet:10,spsolv:12,sqntdecr:12,sqrt:[2,4,7,8,11],squar:[0,2,5,8,11,12],src:1,stand:8,standard:[2,6,7,8,11],start:[0,2,8,12],state:8,statement:9,statu:[2,9,11],std:8,stdin:8,step:[2,7,11],stop:[2,11,12],storag:[1,2,7,8],store:[0,1,2,4,7,8,11,12],str:[9,10],straightforward:[0,6],strategi:12,strength:6,strictli:[2,11],string:[2,6,9,10],structur:[0,1,5,8,10],style:10,subdiagon:[0,7],subject:[2,7,9,11,12],submatric:[0,7],submatrix:7,subplot:[9,11],subprogram:0,subsequ:2,subtract:[8,9],succeq:[2,9,11],success:12,successfulli:9,suffici:7,suitabl:7,sum:[1,2,7,8,9,11,12],sum_:[2,4,9,11],sum_k:[9,11],summar:[2,12],sup_:9,superdiagon:[0,7],supernod:12,supersed:7,suppli:[2,11],support:9,suppos:[9,11,12],svec:[2,11],swap:0,syev:7,syevd:7,syevr:7,syevx:7,sygv:7,symbol:12,symm:[0,2,11],symmetr:[0,2,5,11,12],symmetri:0,symv:0,syr2:0,syr2k:[0,2],syr:0,syrk:[0,2,7,11],sys:12,system:[0,2,7,8,11,12],sysv:7,sytr:7,sytrf:7,sytri:7,t_0:[2,11],t_k:[2,11],tabl:[8,12],take:[2,8,11],taken:[8,11],tau:7,tbmv:0,tbst:2,tbsv:0,tbtr:7,temporari:0,term:[2,3,9,11],termin:[2,7,11],test:8,text:[2,11],textrm:2,than:[0,1,2,7,8,9,11,12],thei:[0,1,2,7,8,9,10,11,12],them:6,therefor:[0,8],thi:[1,2,4,6,7,8,9,10,11,12],third:[7,9],though:8,thought:8,three:[1,2,7,8,9,11,12],through:7,thu:[0,1,8],tild:11,time:[0,2,11],titl:2,tofil:[8,9],togeth:6,tol:7,toler:[2,11],tool:[6,9],top:0,total:8,tpx:2,traceback:8,trade:2,tran:[0,2,7,8,9,11,12],transa:0,transact:[0,12],transb:[0,2],transform:[2,5,6,11],transpos:[2,7,8,11],trapezoid:7,treat:8,triangular:[0,2,5,11,12],trick:2,tridiagon:[0,7],tril:2,triplet:[1,8,10],trmm:[0,2],trmv:0,trsm:[0,7],trsv:0,trtr:7,trtri:7,tsq:2,tucker:11,tupl:[4,8,11],turn:[2,11],tutori:11,twice:[8,11],two:[0,1,2,4,6,7,8,9,10,11,12],type:[0,1,2,4,6,7,8,9,11,12],typecod:[7,8,12],typic:9,tz_0:2,tz_:11,tz_k:2,u_0:[2,11],u_1:[2,11],u_i:[2,11],u_k:[2,11],u_x:[2,11],u_z:[2,11],umfpack:[6,12],unari:[8,9],unchang:8,unconstrain:[9,11,12],undefin:1,under:[3,9],underli:7,unglq:7,ungqr:7,uniform:[1,7,8,9],uniformli:8,uniniti:1,uniqu:8,unit:[0,7,12],unitari:7,unknown:[2,9,11],unmlq:7,unmqr:7,unsymmetr:12,updat:[0,12],uplo:[0,7,12],upper:[0,2,7,11,12],use:[0,1,2,7,8,9,11,12],used:[0,1,2,6,7,8,9,10,11,12],useful:[2,3,7,8,9,12],user:[2,7,11,12],uses:[1,2,7,9,11],using:[0,1,2,7,8,9,12],v_k:[2,11],v_l:7,v_r:7,v_u:7,val:11,valid:9,valu:[0,1,2,5,8,9,10,11,12],vandenbergh:[3,5],variabl:[2,5,8,11,12],vdot:0,vec:[2,11],vector:[0,2,7,9,11],version:[2,3,6],via:[2,6,8,9,11,12],view:0,w_1:11,w_2:11,w_3:11,w_4:11,w_5:11,w_k:11,wai:[0,8,10,11],wall:11,warranti:3,well:1,were:7,when:[0,2,4,8,9,10,11],whenev:9,where:[0,2,7,8,9,11,12],wherea:[7,10],whether:[0,2,7],which:[1,2,7,8,9,11,12],whose:11,width:[10,11],without:[2,3,8],word:[2,9],work:[7,8],write:[8,9],written:[6,9],x_0:11,x_1:[2,7,9,11],x_2:[2,7,11],x_3:[2,11],x_4:11,x_5:11,x_i:11,x_k:0,x_n:9,xlabel:2,xrang:[7,8],xtick:11,y_1:[9,11],y_2:[9,11],y_3:11,y_4:11,y_5:11,yield:9,ylabel:2,you:3,your:3,ytick:[2,11],z_0:[2,11],z_1:[2,11],z_k:[2,11],z_m:[2,11],z_n:2,zero:[1,2,7,8,10,11,12],zip:8,znl:11},titles:["The BLAS Interface","C API","Cone Programming","Copyright and License","Discrete Transforms","Table of Contents","Introduction","The LAPACK Interface","Dense and Sparse Matrices","Modeling","Matrix Formatting","Nonlinear Convex Optimization","Sparse Linear Equations"],titleterms:{"class":0,"function":[8,9],The:[0,7],algorithm:[2,11],analyt:7,api:1,arithmet:8,attribut:8,bla:0,built:8,center:7,cone:2,constraint:9,convex:11,copyright:3,cosin:4,covari:12,cvxopt:5,decomposit:7,definit:[7,12],dens:[1,8],discret:4,eigenproblem:7,eigenvalu:7,equat:[7,12],exampl:[7,9,12],exploit:[2,11],factor:7,format:10,fourier:4,gener:[7,8,12],geometr:11,guid:5,hermitian:7,index:8,interfac:[0,7],introduct:6,lapack:7,least:7,level:0,licens:3,linear:[2,7,11,12],matric:[1,8],matrix:[0,8,10,12],method:8,model:9,nonlinear:11,norm:7,object:11,oper:8,optim:[9,11],option:2,order:[2,12],other:8,paramet:[2,11],posit:[7,12],problem:[7,9,11],program:[2,11],quadrat:2,randomli:8,schur:7,second:2,select:12,semidefinit:2,sine:4,singular:7,slice:8,solver:2,spars:[1,8,12],squar:7,structur:[2,11],symmetr:7,transform:4,triangular:7,user:5,valu:7,variabl:9}})
    \ No newline at end of file
    +Search.setIndex({docnames:["blas","c-api","coneprog","copyright","fftw","index","intro","lapack","matrices","modeling","printing","solvers","spsolvers"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["blas.rst","c-api.rst","coneprog.rst","copyright.rst","fftw.rst","index.rst","intro.rst","lapack.rst","matrices.rst","modeling.rst","printing.rst","solvers.rst","spsolvers.rst"],objects:{"":{CCS:[8,2,1,""],I:[8,2,1,""],J:[8,2,1,""],Matrix_New:[1,0,1,"c.Matrix_New"],Matrix_NewFromMatrix:[1,0,1,"c.Matrix_NewFromMatrix"],Matrix_NewFromSequence:[1,0,1,"c.Matrix_NewFromSequence"],SpMatrix_New:[1,0,1,"c.SpMatrix_New"],SpMatrix_NewFromIJV:[1,0,1,"c.SpMatrix_NewFromIJV"],SpMatrix_NewFromMatrix:[1,0,1,"c.SpMatrix_NewFromMatrix"],V:[8,2,1,""],abs:[8,3,1,""],bool:[8,3,1,""],ctrans:[8,4,1,""],fromfile:[8,4,1,""],imag:[8,4,1,""],len:[8,3,1,""],max:[8,3,1,""],min:[8,3,1,""],real:[8,4,1,""],size:[8,2,1,""],sum:[8,3,1,""],tofile:[8,4,1,""],trans:[8,4,1,""],typecode:[8,2,1,""],value:[9,2,1,""],variables:[9,2,1,"id0"]},"cvxopt.amd":{order:[12,3,1,""]},"cvxopt.blas":{asum:[0,3,1,""],axpy:[0,3,1,""],copy:[0,3,1,""],dot:[0,3,1,""],dotu:[0,3,1,""],gbmv:[0,3,1,""],gemm:[0,3,1,""],gemv:[0,3,1,""],ger:[0,3,1,""],geru:[0,3,1,""],hbmv:[0,3,1,""],hemm:[0,3,1,""],hemv:[0,3,1,""],her2:[0,3,1,""],her2k:[0,3,1,""],her:[0,3,1,""],herk:[0,3,1,""],iamax:[0,3,1,""],nrm2:[0,3,1,""],sbmv:[0,3,1,""],scal:[0,3,1,""],swap:[0,3,1,""],symm:[0,3,1,""],symv:[0,3,1,""],syr2:[0,3,1,""],syr2k:[0,3,1,""],syr:[0,3,1,""],syrk:[0,3,1,""],tbmv:[0,3,1,""],tbsv:[0,3,1,""],trmm:[0,3,1,""],trmv:[0,3,1,""],trsm:[0,3,1,""],trsv:[0,3,1,""]},"cvxopt.cholmod":{diag:[12,3,1,""],linsolve:[12,3,1,""],numeric:[12,3,1,""],solve:[12,3,1,""],splinsolve:[12,3,1,""],spsolve:[12,3,1,""],symbolic:[12,3,1,""]},"cvxopt.fftw":{dct:[4,3,1,""],dctn:[4,3,1,""],dft:[4,3,1,""],dftn:[4,3,1,""],dst:[4,3,1,""],dstn:[4,3,1,""],idct:[4,3,1,""],idctn:[4,3,1,""],idft:[4,3,1,""],idftn:[4,3,1,""],idst:[4,3,1,""],idstn:[4,3,1,""]},"cvxopt.lapack":{gbsv:[7,3,1,""],gbtrf:[7,3,1,""],gbtrs:[7,3,1,""],gees:[7,3,1,""],gelqf:[7,3,1,""],gels:[7,3,1,""],geqp3:[7,3,1,""],geqrf:[7,3,1,""],gesdd:[7,3,1,""],gesv:[7,3,1,""],gesvd:[7,3,1,""],getrf:[7,3,1,""],getri:[7,3,1,""],getrs:[7,3,1,""],gges:[7,3,1,""],gtsv:[7,3,1,""],gttrf:[7,3,1,""],gttrs:[7,3,1,""],heev:[7,3,1,""],heevd:[7,3,1,""],heevr:[7,3,1,""],heevx:[7,3,1,""],hegv:[7,3,1,""],hesv:[7,3,1,""],hetrf:[7,3,1,""],hetri:[7,3,1,""],hetrs:[7,3,1,""],orglq:[7,3,1,""],orgqr:[7,3,1,""],ormlq:[7,3,1,""],ormqr:[7,3,1,""],pbsv:[7,3,1,""],pbtrf:[7,3,1,""],pbtrs:[7,3,1,""],posv:[7,3,1,""],potrf:[7,3,1,""],potri:[7,3,1,""],potrs:[7,3,1,""],ptsv:[7,3,1,""],pttrf:[7,3,1,""],pttrs:[7,3,1,""],syev:[7,3,1,""],syevd:[7,3,1,""],syevr:[7,3,1,""],syevx:[7,3,1,""],sygv:[7,3,1,""],sysv:[7,3,1,""],sytrf:[7,3,1,""],sytri:[7,3,1,""],sytrs:[7,3,1,""],tbtrs:[7,3,1,""],trtri:[7,3,1,""],trtrs:[7,3,1,""],unglq:[7,3,1,""],ungqr:[7,3,1,""],unmlq:[7,3,1,""],unmqr:[7,3,1,""]},"cvxopt.modeling":{dot:[9,3,1,""],op:[9,3,1,""],sum:[9,3,1,""],variable:[9,3,1,""]},"cvxopt.solvers":{conelp:[2,3,1,""],coneqp:[2,3,1,""],cp:[11,3,1,""],cpl:[11,3,1,""],gp:[11,3,1,""],lp:[2,3,1,""],qp:[2,3,1,""],sdp:[2,3,1,""],socp:[2,3,1,""]},"cvxopt.umfpack":{linsolve:[12,3,1,""],numeric:[12,3,1,""],solve:[12,3,1,""],symbolic:[12,3,1,""]},Matrix_New:{id:[1,1,1,"c.Matrix_New"],ncols:[1,1,1,"c.Matrix_New"],nrows:[1,1,1,"c.Matrix_New"]},Matrix_NewFromMatrix:{id:[1,1,1,"c.Matrix_NewFromMatrix"],src:[1,1,1,"c.Matrix_NewFromMatrix"]},Matrix_NewFromSequence:{id:[1,1,1,"c.Matrix_NewFromSequence"],x:[1,1,1,"c.Matrix_NewFromSequence"]},SpMatrix_New:{id:[1,1,1,"c.SpMatrix_New"],ncols:[1,1,1,"c.SpMatrix_New"],nrows:[1,1,1,"c.SpMatrix_New"],nzmax:[1,1,1,"c.SpMatrix_New"]},SpMatrix_NewFromIJV:{I:[1,1,1,"c.SpMatrix_NewFromIJV"],J:[1,1,1,"c.SpMatrix_NewFromIJV"],V:[1,1,1,"c.SpMatrix_NewFromIJV"],id:[1,1,1,"c.SpMatrix_NewFromIJV"],ncols:[1,1,1,"c.SpMatrix_NewFromIJV"],nrows:[1,1,1,"c.SpMatrix_NewFromIJV"]},SpMatrix_NewFromMatrix:{id:[1,1,1,"c.SpMatrix_NewFromMatrix"],src:[1,1,1,"c.SpMatrix_NewFromMatrix"]},constraint:{multiplier:[9,2,1,""],name:[9,2,1,""],type:[9,2,1,""],value:[9,2,1,""]},cvxopt:{cos:[8,3,1,""],div:[8,3,1,""],exp:[8,3,1,""],getseed:[8,3,1,""],log:[8,3,1,""],matrix:[8,3,1,""],max:[8,3,1,""],min:[8,3,1,""],mul:[8,3,1,""],normal:[8,3,1,""],setseed:[8,3,1,""],sin:[8,3,1,""],sparse:[8,3,1,""],spdiag:[8,3,1,""],spmatrix:[8,3,1,""],sqrt:[8,3,1,""],uniform:[8,3,1,""]},op:{addconstraint:[9,4,1,""],constraints:[9,4,1,""],delconstraint:[9,4,1,""],equalities:[9,4,1,""],inequalities:[9,4,1,""],objective:[9,2,1,""],solve:[9,4,1,""],variables:[9,4,1,""]},variable:{name:[9,2,1,""],value:[9,2,1,""]}},objnames:{"0":["c","function","C function"],"1":["c","functionParam","C function parameter"],"2":["py","attribute","Python attribute"],"3":["py","function","Python function"],"4":["py","method","Python method"]},objtypes:{"0":"c:function","1":"c:functionParam","2":"py:attribute","3":"py:function","4":"py:method"},terms:{"0":[0,1,2,4,7,8,9,10,11,12],"00":[0,2,7,8,9,10,12],"0050798580569307e":7,"00e":[0,2,7,8,9,10,12],"01":[0,2,7,8,9,10,11,12],"01e":7,"02":[2,7,12],"02e":[2,7],"03":2,"03e":2,"04":2,"04e":[2,7],"05":2,"05e":[2,7],"06e":[2,7],"07":2,"07e":[7,12],"08":[2,9],"08e":7,"09":2,"09e":7,"1":[1,2,4,5,7,8,9,10,11,12],"10":[2,7,8,9,10,11,12],"100":[2,7,9,11,12],"1000":11,"10e":[7,8,10],"10x_2":2,"10x_3":2,"11":[2,7,8,10,11],"110":11,"11e":[7,11],"11x_3":2,"12":[2,7,8,9,10,11,12],"12e":7,"12x_2":2,"12x_3":2,"13":[2,7,8,9,10,11],"13e":[2,7],"13x_2":2,"14":[0,2,7,8,10,11,12],"14e":7,"14x_2":2,"15":[2,8,10,11],"150":11,"15x_3":2,"16":[0,2,7,8,10,11],"16e":7,"16x_1":2,"17":[0,2,7,8,9,10,11],"17e":[2,7,12],"17x_3":2,"18":[2,8,10,11],"180":11,"187":2,"18e":[2,7],"18x_2":2,"19":[2,7,8,10,11],"196":12,"1975":0,"1988":0,"199":12,"1990":0,"1999":7,"19e":7,"1e":[2,7,11,12],"1ex":2,"1f":10,"1j":8,"2":[1,2,4,5,7,8,9,10,11,12],"20":[2,5,8,10,11],"200":11,"2004":[3,12],"2008":12,"2009":3,"2010":3,"2011":3,"2012":3,"2021":[3,5],"20e":[0,8,9,10,11],"21":[2,10,11],"22":[10,11,12],"221":11,"222":11,"223":11,"224":11,"22e":[2,12],"23":[2,10,11],"24":[2,8,10,11],"24x_1":2,"25":[9,10,11],"25e":7,"26":[2,10,11],"26e":[2,7,12],"27":[2,10],"27e":7,"28":[2,10],"28e":7,"29":10,"29e":7,"2e":10,"2ex":2,"2f_":11,"2f_0":11,"2f_1":11,"2f_k":11,"2f_m":11,"2k":0,"2k_l":7,"2x":9,"2x2":10,"2x_1":2,"2x_2":2,"2y":9,"3":[1,2,3,5,7,8,9,10,11,12],"30":[2,8,10,12],"309":0,"30e":[2,7,8,9,10],"31":10,"311":9,"312":9,"313":9,"31e":[7,12],"32":10,"323":0,"32e":[2,7,12],"33":[2,10],"33e":[2,12],"34":10,"34e":2,"35":[10,12],"35e":[2,7],"36":10,"37":10,"37e":12,"38":10,"381":12,"388":12,"38e":7,"39":10,"39e":7,"3ex":2,"3x_1":2,"3x_2":2,"4":[0,1,2,4,7,8,9,10,11,12],"40":[2,10,11],"40e":[7,8,9,10],"41":10,"41e":[2,7,8],"42":[2,10],"42e":2,"43":10,"43e":7,"44":10,"44e":12,"45":10,"46":10,"46e":[7,12],"47":10,"47e":7,"48":10,"48e":7,"49":10,"4e":2,"4x":9,"4x_1":2,"4x_2":2,"5":[0,1,2,7,8,9,10,11,12],"50":[2,7,10,11,12],"500":9,"50533153593":12,"50e":[8,10,12],"51e":7,"52e":[2,7],"53e":7,"57e":7,"58e":[2,7],"59e":[2,11],"5e":[2,12],"5x10":10,"5x_1":2,"5x_2":2,"5x_3":2,"5y":9,"6":[0,1,2,7,8,10,11,12],"60e":[7,8,10],"62e":7,"63e":[2,7,12],"64e":7,"66e":[2,7],"67e":[0,2,7],"68":2,"68e":[2,7],"69e":7,"6e":2,"6x_1":2,"6x_2":2,"6x_3":2,"7":[2,5,7,8,10,11,12],"70e":[7,8,9,10],"71e":7,"72e":7,"73e":8,"74e":[2,7],"75":9,"75e":[2,7],"76e":7,"77e":[2,7],"78e":[2,7],"79e":[2,7,12],"7x_1":2,"7x_2":2,"7x_3":2,"8":[2,7,8,9,10,11,12],"80":11,"80e":[2,7,8,9,10],"81e":[7,12],"832":12,"837":12,"83e":[7,12],"84e":7,"85e":[2,7],"86e":7,"87e":[7,9],"887":12,"88e":[2,7,12],"89e":[7,12],"8x_1":2,"9":[2,7,8,9,10,11],"90e":[2,8,10],"91":2,"92e":7,"93e":7,"95e":7,"96e":[2,7],"97e":12,"98e":[2,7],"99":2,"9x_3":2,"break":[7,12],"case":[2,7,8,11],"char":1,"class":[1,5,7,9,11,12],"default":[2,8,9,10,11,12],"do":[8,9,11],"export":8,"final":7,"float":[0,1,8,9],"function":[0,1,2,5,6,7,10,11,12],"import":[0,2,7,8,9,10,11,12],"int":1,"long":8,"new":[8,9,12],"null":1,"public":[3,9],"return":[0,1,2,7,8,9,10,11,12],"static":1,"true":[2,7,8,11],"try":12,"var":1,"void":1,"while":[7,8],A:[0,1,2,3,7,8,9,10,11,12],As:[0,1,2,7,8,9,10,11,12],At:7,By:[2,10,11],FOR:3,For:[0,1,2,4,7,8,9,10,11,12],If:[0,1,2,7,8,9,10,11,12],In:[1,2,5,7,9,10,11,12],It:[1,2,6,7,8,9,11,12],Its:[6,9,12],On:[2,7,11,12],One:[2,8,9,11],The:[1,2,4,5,6,8,9,10,11,12],Their:11,Then:[2,11],There:[7,11],These:[2,4,6,8,11,12],To:1,With:[2,9,12],_1:[0,2,9],_2:[0,2,7,11],_:[0,2,9,11,12],_f:7,_inf:2,_infti:2,_k:[9,11],a1:8,a_1:9,a_:11,a_i:[7,9],a_n:9,aa:0,ab:[0,2,8,9,11],abl:7,about:[2,11],abov:[4,8,11,12],absent:[2,8],absolut:[2,8,9,11],abstol:[2,11],abz:7,ac:7,accept:2,access:[2,8,10,11,12],accuraci:[2,11],acent:[7,11],achiev:0,acm:[0,12],ad:[2,8,9,11],add:[8,9],addconstraint:9,addit:[0,8,9,12],adjoint:[2,11],adjust:1,admit:9,advantag:[0,2,11],affect:2,affin:9,aflr:11,after:8,algebra:0,algorithm:[5,7,9,12],all:[0,2,4,7,8,9,10,11,12],alloc:[1,2],allow:[0,1,2,7,8,9,11],along:[4,7],alpha:[0,2,7,11],also:[0,2,4,7,8,9,11,12],alter:8,altern:[7,8,10],although:0,alwai:[0,1,8],amd:[6,12],amestoi:12,amin:11,amink:11,among:2,amount:1,an:[0,1,2,4,6,7,8,9,10,11,12],analysi:12,analyt:[5,11],andersen:[3,5],ani:[0,2,3,8,9,10,12],anoth:[0,8,12],ap:7,api:[2,5],appear:[7,8,12],append:8,appendix:10,appli:[4,8,11,12],applic:[2,6,7],approxim:[2,6,9,11,12],ar:[0,1,2,4,6,7,8,9,10,11,12],arg:1,argmax:0,argument:[0,2,4,7,8,9,10,11,12],aris:[9,12],arithmet:[0,5,6,9],arithmeticerror:[7,12],arrai:[0,1,2,7,8,9,11,12],asc:[2,7,11],ascend:7,aspect:11,assign:[8,9],associ:[2,9,11],assum:[2,7,8,11,12],assumpt:11,asum:0,attribut:[5,9],au:[2,11],automat:1,avail:[4,8,9,12],avoid:1,awal:11,ax:[0,2,7,9,11,12],ax_0:11,ax_2:7,axi:[2,11],axpi:0,az:7,b1:[7,8],b2:[7,8],b3:8,b:[0,1,2,7,8,9,11,12],b_1:7,b_2:7,b_i:[7,9],b_x:[2,11],b_y:[2,11],b_z:[2,11],ba:0,backtrack:[7,12],backward:2,band:[0,7],bar:[0,2],base:[6,7,8,9,11,12],basic:[0,11],baz:7,becaus:[2,8,11],been:2,befor:[1,11],begin:[0,1,2,7,8,9,11,12],behaviour:10,below:[0,2,7,8,9,10,11,12],best:12,beta:[0,2,7,11],beta_k:[2,11],between:[0,2,4,8,12],bf:[2,7,9,11,12],bidiagon:7,bin:8,binari:8,bla:[1,2,5,6,7,9,11,12],blas__doc__:1,blas_funct:1,blas_modul:1,block:[2,7,8,11],book:[2,11],bool:8,both:[7,8],bottom:11,bound:[7,9,11],box:11,briefli:7,buffer:1,build:6,built:[5,6,9,10],bx:[2,11],bz:[2,7,11],bzl:2,c1:[2,9],c2:[2,9],c3:[2,9],c4:[2,9],c:[0,2,5,7,8,9,11,12],c_0:[2,11],c_1:[2,11],c_:[2,11],c_m:[2,11],calcul:[2,11],call:[0,1,2,7,8,9,10,11,12],can:[0,1,2,3,6,7,8,9,10,11,12],cannot:8,capabl:9,cartesian:[2,11],caus:1,cc:[1,2,7,8,9,11,12],ccc:[2,11],cccc:[0,1,7,11,12],ccccc:[0,7],cccccc:11,ccccccc:0,cdot:[0,2,9,11,12],center:[5,11],certain:1,certif:[2,9],chang:[1,2,8,9,11],chapter:[2,6,7,8,11],charact:[0,8,12],check:7,chen:12,choleski:[2,6,7,12],cholmod:[6,12],choos:2,chosen:8,circ:12,classif:9,classifi:9,clock:8,close:[0,8],cngrnc:2,co:[4,8],code:[0,1,2,4,7,8,9,11,12],coeffici:[0,2,7,8,9,11,12],colptr:1,colum:8,column:[0,1,2,4,7,8,9,10,11,12],columnwis:1,combin:[0,8],command:[2,6,8,9,10,11],comment:[9,12],common:12,compar:12,comparison:[8,9],compat:[2,8],complet:[0,7],complex:[0,1,4,6,7,8,10,12],complic:0,compon:[2,9,11],componentwis:[2,9,11],compress:[1,8],comput:[2,4,6,7,8,9,12],concaten:8,concav:9,condit:[2,11],condition:12,cone:[5,6,11],conelp:2,coneqp:2,congruenc:[2,11],conjug:[7,8],conquer:7,consid:[2,8,11,12],consist:8,constant:[0,9],constrain:[2,11],constraint:[2,5,6,11,12],construct:[1,8,9],contai:7,contain:[1,2,4,6,7,8,11,12],content:[7,8],contigu:1,continu:8,control:[1,2,6,7,11,12],conveni:[2,8],convent:[0,7,8,9,12],convers:[1,8],convert:[1,8,9],convex:[2,5,6,9],coordin:11,copi:[0,1,3,8,9,11],copyright:[4,5],corner:11,correspond:[0,2,4,7,8,9,11],cosin:[5,8],cost:[2,6,9],covari:5,covsel:12,cp:11,cpl:11,crash:1,creal:1,creat:[0,1,8,9,11,12],creation:1,criteria:[2,11],criterion:12,croz:0,crucial:1,ctran:8,current:[2,8,11],curv:2,custom:[2,10,11],cvxopt:[0,1,2,3,4,6,7,8,9,10,11,12],cvxpy:9,d0d0d0:[2,11],d1:2,d2:2,d3:2,d:[0,1,2,7,8,9,10,11,12],d_:11,d_i:11,dagger:2,dahl:[3,5],data:[2,7,9],davi:12,dct:4,dctn:4,ddot:0,de:9,decomposit:5,decrement:[7,12],def:[2,7,11,12],defin:[1,2,4,6,7,8,9,10,11],definit:[2,5,6],degre:[6,12],delconstraint:9,delet:9,delta:11,denot:[2,4,9,11,12],dens:[0,2,4,5,6,7,9,10,11,12],depend:[2,9,11,12],deriv:11,descend:7,describ:[0,1,2,6,7,8,9,10,11,12],descript:[1,8],destroi:7,det:12,detail:[2,3,6,7,9,12],detect:2,determin:[2,7,8,9,10,12],develop:6,deviat:[2,8],df:11,dformat:10,dft:4,dftn:4,dg:9,di:[2,11,12],diag:[0,2,7,11,12],diagon:[0,2,7,8,11,12],dictionari:[2,10,11,12],differ:[0,2,6,7,8,9,12],differenti:11,difficulti:[2,11],dim:[2,4,11],dimens:[1,2,4,8,9,11,12],dimension:[4,8],direct:7,directli:[0,8],directori:1,discret:[5,6],discuss:[0,11],displai:[9,10],distinguish:0,distribut:[1,2,3,6,8,12],div:[2,7,8,11],divid:[2,7,8],divis:[8,9],divison:8,dl:[7,9,12],dn:9,dnl:11,dnli:11,docstr:[0,7],document:[0,2,4,7],doe:[2,7,8,9,12],dollar:9,domain:[11,12],dongarra:0,dot:[0,2,7,9,12],dotu:0,doubl:[0,1,6,8,10],downdat:12,ds:[2,11],dsdp5:[2,6],dsdp:2,dsdp_gaptoler:2,dsdp_maxit:2,dsdp_monitor:2,dst:4,dstn:4,du2:7,du:[0,7],dual:[2,9,11],dualiti:11,dualstart:2,due:[2,11],duff:[0,12],dump:8,duplic:8,dure:[2,4,8,11,12],dw:11,dx:12,e:[0,2,4,7,8,9,11],e_1:12,e_2:12,e_:12,each:[1,2,4,7,8,9,11],earli:2,easili:0,edit:[2,7],effici:[0,2,8,12],eigenproblem:5,eigenvalu:[5,6],eigenvector:7,either:[1,3,7,8,9],elem:12,element:[0,1,2,7,8,9,12],elementari:7,elementwis:[8,9],elimin:[2,7],els:[1,2,11,12],empti:[2,8,9,11],end:[0,1,2,7,8,9,11,12],endif:1,entir:10,entri:[0,1,2,7,8,9,10,11,12],epigraph:11,epsilon_:[2,11],equal:[1,2,7,8,9,11,12],equat:[0,2,5,6,11],equival:[1,2,7,8,9,12],especi:8,essenti:1,estim:12,euclidean:0,evalu:[2,9,11],even:[3,8],everi:8,exactli:0,examin:9,exampl:[0,1,2,4,5,6,8,10,11],except:[2,7,8,11,12],execut:[2,6,10],exist:[8,9,12],exit:[2,7,11,12],exp:[8,11],expand:9,expect:[2,7],expens:[2,11],explain:[2,8,11],explicit:9,explicitli:7,exploit:[0,5],exponenti:8,express:[8,9,12],extend:[0,1,6],extens:[1,6],extent:2,extern:[1,2],f0f0f0:2,f1:9,f2:9,f:[0,2,7,8,9,11,12],f_0:11,f_0x:11,f_1:11,f_:11,f_i:11,f_ix:11,f_k:11,f_m:11,fa:12,facecolor:[2,11],facil:6,fact:2,factor:[2,5,12],fail:7,fals:[2,7,8,11],faster:[2,7,8,11],fb:12,fea:[2,11],feasibl:[2,7,11],feastol:[2,11],featur:[2,9],few:[6,12],fftw3:4,fftw:[4,6],field:[1,2,11],fig:2,figur:[2,9,11],file:[1,8,9],filenam:9,fill:[1,2,11,12],filter:8,first:[0,1,2,7,8,9,11,12],fit:3,five:[7,11],fix:9,fkkt:[2,11],floor:11,floorplan:11,flr:11,fn:12,follow:[0,1,2,4,6,7,8,9,10,11,12],form:[2,7,8,9,11,12],format:[1,5,6,7,9],formul:[2,9],fortran:0,found:[2,11],foundat:3,four:[1,2,7,8,9,12],fourier:5,fourth:8,frac:[2,4,11],free:[3,6,7],from:[0,1,2,6,7,8,9,10,11,12],fromfil:[8,9],front:7,fs:12,full:7,further:[7,10],futur:7,g:[2,7,8,9,11],g_0:[2,11],g_1:[2,11],g_i:11,g_k:2,g_m:[2,11],gamma:11,gap:[2,11],gbmv:0,gbsv:7,gbtr:7,gbtrf:7,gee:7,gel:7,gelqf:7,gemm:[0,2],gemv:[0,2,7,11],gener:[0,1,2,3,5,6,9,11],geometr:5,geq:[2,9,11],geqp3:7,geqrf:7,ger:0,geru:0,gesdd:7,gesv:7,gesvd:7,get:8,getr:7,getrf:7,getri:7,getse:8,getstat:8,gge:7,give:[0,2,11],given:[1,4,7,8,9,12],gl:2,glp_msg_off:2,glpk:[2,6,9],gnu:[2,3,8],gp:11,gq:2,grad:12,gradf:11,gradient:[7,11,12],greater:[2,7,9],grow:1,gs:2,gsl:8,gtsv:7,gttr:7,gttrf:7,gu:11,guid:[7,12],gx:[2,11],gx_0:11,h1:11,h2:11,h3:11,h4:11,h5:11,h:[0,1,2,7,8,9,11,12],h_0:2,h_1:[2,11],h_2:11,h_3:11,h_4:11,h_5:11,h_k:[2,11],h_kz_k:2,h_m:2,h_n:2,ha:[0,1,2,4,7,8,9,11,12],hadamard:12,hager:12,half:7,hammarl:0,hand:[0,2,7,8,11,12],handl:[2,11],hanson:0,hat:2,have:[0,1,2,7,8,9,11,12],hb:0,hbmv:0,hd:11,header:1,heev:7,heevd:7,heevr:7,heevx:7,hegv:7,height:[10,11],help:[0,6],hemm:0,hemv:0,henc:[2,11],her2:0,her2k:0,her:0,here:[2,9,11],herk:0,hermitian:[0,5,12],hess:12,hessian:[7,11,12],hesv:7,hetr:7,hetrf:7,hetri:7,hf:11,high:6,hist:9,histogram:9,hk:11,hl:2,hope:3,horizont:0,household:[2,11],how:[2,6,7,10,11],howev:[1,8],hq:2,hs:2,hv:7,hw:11,hx:[7,12],hy:0,hyperbol:[2,11],i:[0,1,2,4,7,8,9,10,11,12],i_1:12,i_2:12,i_k:12,i_l:7,i_q:12,i_u:7,iamax:0,id:1,idct:4,idctn:4,idd:1,ident:[7,8,9,12],idft:4,idftn:4,idst:4,idstn:4,ie:2,iformat:10,ignor:[1,2,8,12],ii:[4,12],iii:4,ij:12,il:7,illustr:[0,1,2,7,8,10,12],im:0,imag:8,imaginari:8,implement:[0,2,8,11,12],impli:[3,8],import_cvxopt:1,imposs:8,includ:[0,1,2,4,6,7,8,9,10,12],incompat:8,indefinit:12,independ:12,index:[0,1,5,9,12],indic:[0,1,2,8,11,12],ineq:9,inequ:[2,9,11],inf:7,infeas:[2,9,11],infin:9,info:6,inform:[2,11],infti:9,initbla:1,initi:[1,2,8,9],initv:2,inner:9,input:[2,4],instal:[2,4,6,8,9,12],instanc:[2,11],instead:[2,8,12],int_t:1,integ:[0,1,2,4,7,8,9,10,11,12],integr:6,interact:6,interchang:0,interfac:[1,2,4,5,6,11,12],interior:2,intermedi:0,intern:0,interpret:[2,4,6,8,9],interv:[2,7],introduc:6,introduct:5,invers:[2,4,7,11,12],involv:9,iparam:2,ipiv:7,iter:[2,7,8,11,12],its:[2,4,7,8,9,11,12],itself:1,ityp:7,iu:7,iv:4,j0:[7,8],j1:[7,8],j2:[7,8],j3:7,j4:7,j5:7,j7:7,j8:7,j9:7,j:[0,1,2,3,4,8,11,12],j_1:12,j_2:12,j_k:12,j_q:12,ji:12,jj:12,joachim:5,jobu:7,jobvt:7,jobz:7,jpvt:7,juxtapos:8,jv_k:[2,11],k0:[2,11],k1:2,k:[0,1,2,4,7,8,9,11,12],k_:12,k_l:[0,7],k_u:[0,7],karush:11,kei:[2,11],keyword:2,kincaid:0,kinv:12,kit:2,kkt:[2,7,11],kktsolver:[2,11],kl:[0,7],kn:12,know:8,krogh:0,ku:7,kuhn:11,kwlist:1,kwrd:1,ky:12,l1:[2,7],l1regl:2,l2ac:11,l:[0,2,3,7,11,12],label:9,lagrang:9,lam:7,lambda:[7,8],languag:6,lapack:[2,5,6,11,12],larg:[0,7,8],larger:1,last:[2,8,11,12],later:[3,9],lawson:0,ldl:[7,12],ldlh:[7,12],ldlt:[7,12],ldot:[0,2,4,9,11],ldx:12,lead:7,least:[2,4,5,8,11],left:[0,1,2,7,8,9,11,12],leftrightarrow:0,lemma:11,len:[1,8,9,12],length:[0,1,2,7,8,9,11,12],leq:[2,7,9,11],less:[0,1,7,11],let:2,level:[5,6,7],librari:[1,2,4,6,8,12],licens:[4,5,6],lieven:5,like:1,likelihood:12,limit:2,limits_:[7,11],line:[6,7,8,12],linear:[0,5,6,9],linsolv:12,list:[1,2,8,9,11,12],ll:[0,2,7,9,11,12],load:8,log:[2,7,8,11,12],logarithm:[8,12],low:11,lower:[0,2,7,11,12],lp1:9,lp2:9,lp:[2,9],lq:7,lse:11,lsiter:12,lu:[6,7,12],lx:12,m:[0,1,2,3,7,9,11,12],m_k:9,macro:1,made:[4,8],mai:[2,8],main:[0,2,6],major:[0,1,2,4,8,11],make:[0,1,2,6,7,8,9,10,12],manag:8,mani:[0,2,7,8],manipul:1,manual:[2,6,7],map:8,martin:5,mat:8,mat_bufd:1,match:0,math:[2,7,12],mathbf:[2,7,11,12],mathemat:[0,12],mathop:[0,2,7,11,12],mathrm:[0,2,7,11,12],matplotlib:[2,9],matric:[0,2,5,6,7,9,10,11,12],matrix:[1,2,4,5,6,7,9,11],matrix_new:1,matrix_newfrommatrix:1,matrix_newfromsequ:1,matrix_repr:10,matrix_repr_default:10,matrix_str:10,matrix_str_default:10,matter:7,max:[2,7,8,9,11],maxim:2,maximum:[0,2,8,9,10,11,12],maxit:[2,7,11],mbox:[0,2,4,7,9,11,12],mcsdp:2,mean:[0,1,2,8,11,12],mechan:[2,11],memcpi:1,memori:[1,7],merchant:3,method:[1,2,5,7,9,11,12],mimimum:12,min:[2,7,8,9,11],minim:[2,7,9,11,12],minimum:[6,8,9,12],minu:[8,9],miss:2,model:[5,6],modifi:[1,2,3,7,8,9,12],modul:[0,1,2,4,6,7,8,9,10,11,12],more:[0,1,2,3,7,8,9,12],mosek:[2,6,8,9],most:[2,6,7,8,11,12],mp:9,msg_lev:2,mu:2,mul:[2,7,8,11,12],multifront:12,multipl:[0,2,8,9,11],multipli:[0,7,8,9],must:[0,1,2,7,8,9,11,12],n:[0,2,4,7,9,11,12],nabla:[11,12],name:[0,2,9],natur:8,ncol:[1,8],necessari:8,necessarili:[2,8],need:[2,7,8],neg:[1,8,10],nest:9,never:[0,1],newcommand:[0,2,7,9,11,12],newnam:9,newname_mul:9,newton:[7,11,12],next:[2,7,8,11],nl:11,nmethod:12,nnz:[1,10],noindex:9,non:[0,1,12],none:[2,7,9,11,12],nonempti:8,nonlinear:[5,6],nonneg:[2,7,8,11],nonposit:8,nonsingular:[0,2,7,11,12],nonsymmetr:2,nonzero:[0,1,7,8,12],norm:[0,2,5,9],normal:[7,8,9,12],notat:[2,12],note:[7,8,12],notimplementederror:8,nrm2:[0,7,11],nrow:[1,8],number:[0,1,2,6,7,8,10,11,12],numer:[2,8,9,11,12],numpi:8,nzmax:1,o:7,obj:1,object:[0,1,2,5,6,8,9,10,12],obtain:[2,8,11],odd:8,off:[2,11],offer:[0,8],often:[0,2,11],omit:[0,2,7],onc:7,one:[0,2,4,7,8,9,11,12],ones:[2,7,9,11,12],onli:[0,2,4,7,8,9,12],op:[0,7,9],opaqu:12,open:8,oper:[0,2,5,6,7,9,11],operand:8,opt:2,optim:[2,5,6,7,12],option:[0,3,4,5,6,7,8,9,10,11,12],order:[0,1,4,5,6,7,8,10,11],org:5,organ:6,orglq:7,orgqr:7,ormlq:7,ormqr:7,orthant:[2,11],orthogon:7,other:[0,2,5,6,7,9,10,11,12],otherwis:[1,2,7,8,9,11],our:0,outcom:9,output:[2,7,10,11,12],over:8,overload:9,overrid:2,overwritten:[7,12],p:[2,7,11,12],packag:[2,6,8,9,12],page:[2,7],pair:[2,7,12],pap:[7,12],paper:11,parallel:2,paramet:[5,6,10,12],parameter:[2,10],part:[0,1,2,7,8,11,12],particular:[3,8,9],partit:2,pass:[2,12],pattern:[1,8,12],pbar:2,pbsv:7,pbtr:7,pbtrf:7,penalti:9,perform:[0,8,12],permit:8,permut:[7,12],phi:[9,11],pi:4,pick:7,pickl:8,piecewis:[6,9],pivot:7,place:[0,8,9],plan:11,plane:7,plot:[2,9],plu:[0,1,7,8,9,11],point:[1,2,8,11,12],pointer:8,portfolio:2,portion:2,posit:[2,5,6,9,11],possibl:[0,1,2,7,8,11,12],postmultipli:8,posv:[7,12],posynomi:11,potr:[2,7,11],potrf:[2,7,11],potri:7,pre:12,prealloc:1,preceq:[2,9,11],precis:[0,1,6,12],prefer:10,premultipli:8,previou:[7,8],primal:[2,9,11],primalstart:2,print:[0,2,6,7,8,9,10,11,12],printabl:10,problem:[2,5,6,12],produc:2,product:[0,2,7,8,9,11,12],program:[0,1,5,6,9],proof:2,proper:[2,11],properti:[2,11],provid:[0,2,7,8,9,10,11,12],pseudo:8,ptsv:7,pttr:7,pttrf:7,pu:2,publish:3,pure:2,purpos:[3,6],px:[2,12],py_initmodule3:1,py_major_vers:1,pyarg_parsetupleandkeyword:1,pydoc:[0,6],pyerr_nomemori:1,pyerr_setstr:1,pyexc_typeerror:1,pyinit_bla:1,pylab:[2,9,11],pylistobject:1,pymodinit_func:1,pymodule_cr:1,pymoduledef:1,pymoduledef_head_init:1,pyobject:1,python:[0,1,2,6,7,8,9,10,11],q1:7,q2:7,q:[2,7,11],q_1:7,q_2:7,qcl1:2,qp:2,qquad:[0,2,4,7,8,9,11,12],qr:7,quad:[0,2,7,9,11,12],quadrat:5,quasi:7,r1:7,r2:7,r:[0,2,7,11,12],r_0:[2,11],r_1:7,r_2:7,r_:[2,11],r_k:[2,11],rais:[7,8,12],rajamanickam:12,random:[7,8],randomli:[1,5,7,9],rang:[2,7,8,9,10,11,12],rank:[0,2,7,11],ratio:[7,11],rb:8,re:0,reach:[2,11],read:[8,9],real:[0,1,2,4,6,7,8,11,12],realloc:1,recent:[7,8],rectangular:[0,7,12],redefin:10,redistribut:3,reduc:[2,12],refer:[0,7,8,9],referenc:[2,7,8],refin:[2,11],reflector:7,regular:[2,8],rel:[2,11],releas:[5,7],reli:8,reltol:[2,11],remain:8,remaind:8,remov:8,reorder:12,repeat:[1,8],replac:[4,7,8,12],report:9,repr:[9,10],repres:[0,2,8,9,11,12],represent:[1,8,9,10],requir:[0,1,2,4,7,11],residu:[2,9,11],resiz:8,resp:[8,9],respect:[2,8,10,11,12],restrict:2,result:[0,2,8,9,11],ret:1,retriev:12,reus:7,revers:9,rh:2,rho:11,right:[0,1,2,7,8,9,11,12],righthand:9,risk:2,rm:0,robl:11,robust:[9,11],role:[2,11],root:[2,8],routin:[0,1,2,4,6,7,11,12],row:[0,1,2,4,7,8,9,10,11],rowind:1,rrr:[2,7,11],rrrr:[0,7,12],rrrrr:[7,8,12],rti:[2,11],rule:[8,9],run:8,s:[0,2,6,7,11,12],s_0:2,s_1:2,s_:[2,11],s_k:2,s_m:2,s_n:2,safe:1,same:[0,1,2,7,8,9,10,11,12],satisfi:[2,11],sbmv:0,scal:0,scalar:[0,8,9,11],scale:[0,2,11,12],scheme:7,schur:5,scientif:8,screen:[2,11],script:6,sdp:2,search:[7,12],second:[0,4,5,8,9,11,12],section:[0,1,2,7,8,9,11,12],see:[2,3,7,9,12],seed:8,seen:[1,10],select:[0,2,5,7,8,9],self:[1,9],semidefinit:[5,11],separ:[2,7,12],septemb:5,sequenc:[0,1,2,7,8,11,12],sequenti:1,set:[0,2,7,8,9,10,11,12],setse:8,setstat:8,sever:[0,2,6,8,12],share:12,shift:0,should:[2,8,11,12],show:[1,2,8,9,11],show_progress:[2,11],shown:[9,10],siam:7,side:[0,2,7,8,9,11,12],sigma:7,sign:9,signific:0,similar:[0,2,7,8,9,10,11,12],similarli:[2,11],simpl:[2,8],simpler:[2,7,11],simplex:2,simpli:10,simplici:12,sin:[4,8],sinc:1,sine:[5,8],singl:[2,8,9,11],singular:[5,12],size:[0,1,2,4,7,8,9,11,12],sizeof:1,skip:8,sl:[2,11],slack:[2,11],slice:[0,5,9],small:[2,11],smaller:1,snl:11,so:[0,2,8],soc:2,socp:2,softwar:[0,3,6,12],sol:[2,11],solut:[0,2,7,9,11,12],solv:[2,6,7,9,11,12],solvabl:[2,11],solver:[5,6,9,11],some:[0,2,8,9],sort:1,sourc:[0,1,2,7],sp_col:1,sp_id:1,sp_ncol:1,sp_nnz:1,sp_nrow:1,sp_row:1,sp_vald:1,sp_valz:1,space:11,spars:[2,5,6,9,10,11],sparser:12,sparsiti:[1,2,8,12],spdiag:[2,8,11],specif:[0,11],specifi:[0,1,2,6,7,8,9,10,11,12],splinsolv:12,split:[0,2,7,11,12],spmatrix:[1,2,6,8,10,11,12],spmatrix_new:1,spmatrix_newfromijv:1,spmatrix_newfrommatrix:1,spmatrix_r:1,spmatrix_repr:10,spmatrix_repr_default:10,spmatrix_repr_str:10,spmatrix_str:10,spmatrix_str_default:10,spmatrix_str_triplet:10,spsolv:12,sq:2,sqntdecr:12,sqrt:[2,4,7,8,11],squar:[0,2,5,8,11,12],src:1,ss:2,stand:8,standard:[2,6,7,8,11],start:[0,2,8,12],state:8,statement:9,statu:[2,9,11],std:8,stdin:8,step:[2,7,11],stop:[2,11,12],storag:[1,2,7,8],store:[0,1,2,4,7,8,11,12],str:[9,10],straightforward:[0,6],strategi:12,strength:6,strictli:[2,11],string:[2,6,9,10],structur:[0,1,5,8,10],style:10,subdiagon:[0,7],subject:[2,7,9,11,12],submatric:[0,7],submatrix:7,subplot:[9,11],subprogram:0,subsequ:2,subtract:[8,9],succeq:[2,9,11],success:12,successfulli:9,suffici:7,suitabl:7,sum:[1,2,7,8,9,11,12],sum_:[2,4,9,11],sum_k:[9,11],summar:[2,12],sup_:9,superdiagon:[0,7],supernod:12,supersed:7,suppli:[2,11],support:9,suppos:[9,11,12],svec:[2,11],swap:0,sy:12,syev:7,syevd:7,syevr:7,syevx:7,sygv:7,symbol:12,symm:[0,2,11],symmetr:[0,2,5,11,12],symmetri:0,symv:0,syr2:0,syr2k:[0,2],syr:0,syrk:[0,2,7,11],system:[0,2,7,8,11,12],sysv:7,sytr:7,sytrf:7,sytri:7,t:[0,2,7,8,9,11,12],t_0:[2,11],t_:[2,11],t_k:[2,11],ta:[0,11],tabl:[8,12],take:[2,8,11],taken:[8,11],tau:7,tb:0,tbmv:0,tbst:2,tbsv:0,tbtr:7,tc:[7,8,10],temporari:0,term:[2,3,9,11],termin:[2,7,11],test:8,text:[2,11],textrm:2,th:[0,8],than:[0,1,2,7,8,9,11,12],thei:[0,1,2,7,8,9,10,11,12],them:6,therefor:[0,8],thi:[1,2,4,6,7,8,9,10,11,12],third:[7,9],though:8,thought:8,three:[1,2,7,8,9,11,12],through:7,thu:[0,1,8],tild:11,time:[0,2,11],titl:2,tofil:[8,9],togeth:6,tol:7,toler:[2,11],tool:[6,9],top:0,total:8,tpx:2,tr:[2,12],traceback:8,trade:2,tran:[0,2,7,8,9,11,12],transa:0,transact:[0,12],transb:[0,2],transform:[2,5,6,11],transpos:[2,7,8,11],trapezoid:7,treat:8,triangular:[0,2,5,11,12],trick:2,tridiagon:[0,7],tril:2,triplet:[1,8,10],trmm:[0,2],trmv:0,trsm:[0,7],trsv:0,trtr:7,trtri:7,tsq:2,tu:9,tucker:11,tupl:[4,8,11],turn:[2,11],tutori:11,tv:7,tw:2,twice:[8,11],two:[0,1,2,4,6,7,8,9,10,11,12],tx:[2,7,9,11,12],ty:[0,2,9],type:[0,1,2,4,6,7,8,9,11,12],typecod:[7,8,12],typic:9,tz:2,tz_0:2,tz_:11,tz_k:2,u:[0,2,7,9,11,12],u_0:[2,11],u_1:[2,11],u_:[2,11],u_i:[2,11],u_k:[2,11],u_x:[2,11],u_z:[2,11],umfpack:[6,12],unari:[8,9],unchang:8,unconstrain:[9,11,12],undefin:1,under:[3,9],underli:7,unglq:7,ungqr:7,uniform:[1,7,8,9],uniformli:8,uniniti:1,uniqu:8,unit:[0,7,12],unitari:7,unknown:[2,9,11],unmlq:7,unmqr:7,unsymmetr:12,updat:[0,12],uplo:[0,7,12],upper:[0,2,7,11,12],us:[0,1,2,3,6,7,8,9,10,11,12],user:[2,7,11,12],v:[1,2,7,8,9,11,12],v_:[2,11],v_k:[2,11],v_l:7,v_r:7,v_u:7,va:12,val:11,valid:9,valu:[0,1,2,5,8,9,10,11,12],vandenbergh:[3,5],variabl:[2,5,8,11,12],vb:12,vdot:0,vec:[2,11],vector:[0,2,7,9,11],version:[2,3,6],via:[2,6,8,9,11,12],view:0,vl:7,vr:7,vt:7,vu:7,w1:[2,11],w2:[2,11],w3:[2,11],w4:11,w5:11,w:[2,7,11,12],w_1:11,w_2:11,w_3:11,w_4:11,w_5:11,w_:[2,11],w_k:11,wa:[2,9,11,12],wai:[0,8,10,11],wall:11,warranti:3,wb:8,wd:11,we:[0,1,2,7,8,9,10,11,12],well:1,were:7,wh:11,when:[0,2,4,8,9,10,11],whenev:9,where:[0,2,7,8,9,11,12],wherea:[7,10],whether:[0,2,7],which:[1,2,7,8,9,11,12],whose:11,width:[10,11],without:[2,3,8],wk:11,word:[2,9],work:[7,8],write:[8,9],written:[6,9],wu:[2,11],x0:[8,11],x1:[2,7,8,9,11],x2:[2,7,8,9,11],x3:[2,9,11],x4:[2,11],x5:11,x:[0,1,2,4,7,8,9,11,12],x_0:11,x_1:[2,7,9,11],x_2:[2,7,11],x_3:[2,11],x_4:11,x_5:11,x_i:11,x_k:0,x_n:9,xi:11,xlabel:2,xrang:[7,8],xtick:11,xx:0,xy:0,y1:[9,11],y2:[9,11],y3:11,y4:11,y5:11,y:[0,2,7,8,9,11,12],y_1:[9,11],y_2:[9,11],y_3:11,y_4:11,y_5:11,y_:[9,12],yield:9,ylabel:2,you:3,your:3,ytick:[2,11],yx:0,z1:2,z2:2,z:[0,1,2,7,8,10,11,12],z_0:[2,11],z_1:[2,11],z_:[2,11],z_k:[2,11],z_m:[2,11],z_n:2,zero:[1,2,7,8,10,11,12],zip:8,zl:[2,11],znl:11,zq:2,zs:2},titles:["The BLAS Interface","C API","Cone Programming","Copyright and License","Discrete Transforms","Table of Contents","Introduction","The LAPACK Interface","Dense and Sparse Matrices","Modeling","Matrix Formatting","Nonlinear Convex Optimization","Sparse Linear Equations"],titleterms:{"1":0,"2":0,"3":0,"class":0,"function":[8,9],In:8,The:[0,7],algorithm:[2,11],analyt:7,api:1,arithmet:8,attribut:8,bla:0,built:8,c:1,center:7,cone:2,constraint:9,convex:11,copyright:3,cosin:4,covari:12,cvxopt:5,decomposit:7,definit:[7,12],dens:[1,8],discret:4,eigenproblem:7,eigenvalu:7,equat:[7,12],exampl:[7,9,12],exploit:[2,11],factor:7,format:10,fourier:4,gener:[7,8,12],geometr:11,guid:5,hermitian:7,index:8,interfac:[0,7],introduct:6,lapack:7,least:7,level:0,licens:3,linear:[2,7,11,12],matric:[1,8],matrix:[0,8,10,12],method:8,model:9,nonlinear:11,norm:7,object:11,oper:8,optim:[9,11],option:2,order:[2,12],other:8,paramet:[2,11],posit:[7,12],problem:[7,9,11],program:[2,11],quadrat:2,randomli:8,s:5,schur:7,second:2,select:12,semidefinit:2,sine:4,singular:7,slice:8,solver:2,spars:[1,8,12],squar:7,structur:[2,11],symmetr:7,transform:4,triangular:7,user:5,valu:7,variabl:9}})
    \ No newline at end of file
    
  • doc/html/solvers.html+53 159 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Nonlinear Convex Optimization &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="Modeling" href="modeling.html" />
         <link rel="prev" title="Cone Programming" href="coneprog.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -111,71 +63,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Nonlinear Convex Optimization</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="nonlinear-convex-optimization">
    -<span id="c-solvers"></span><h1>Nonlinear Convex Optimization<a class="headerlink" href="#nonlinear-convex-optimization" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="nonlinear-convex-optimization">
    +<span id="c-solvers"></span><h1>Nonlinear Convex Optimization<a class="headerlink" href="#nonlinear-convex-optimization" title="Permalink to this headline"></a></h1>
     <p>In this chapter we consider nonlinear convex optimization problems of the
     form</p>
     <div class="math">
    @@ -197,14 +109,14 @@
     implemented that exploit structure in specific classes of problems.
     The last section
     describes the algorithm parameters that control the solvers.</p>
    -<div class="section" id="problems-with-nonlinear-objectives">
    -<span id="s-cp"></span><h2>Problems with Nonlinear Objectives<a class="headerlink" href="#problems-with-nonlinear-objectives" title="Permalink to this headline">¶</a></h2>
    +<section id="problems-with-nonlinear-objectives">
    +<span id="s-cp"></span><h2>Problems with Nonlinear Objectives<a class="headerlink" href="#problems-with-nonlinear-objectives" title="Permalink to this headline"></a></h2>
     <dl class="py function">
    -<dt id="cvxopt.solvers.cp">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></code><code class="sig-name descname"><span class="pre">cp</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">F</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">kktsolver</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.cp" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.solvers.cp">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></span><span class="sig-name descname"><span class="pre">cp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">F</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">kktsolver</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.cp" title="Permalink to this definition"></a></dt>
     <dd><p>Solves a convex optimization problem</p>
     <div class="math" id="equation-e-nlcp">
    -<p><span class="eqno">(1)<a class="headerlink" href="#equation-e-nlcp" title="Permalink to this equation">¶</a></span><img src="_images/math/8d26408b917ad631b6ae90f7650b19b691fe2bb6.png" alt="\begin{array}{ll}
    +<p><span class="eqno">(1)<a class="headerlink" href="#equation-e-nlcp" title="Permalink to this equation"></a></span><img src="_images/math/8d26408b917ad631b6ae90f7650b19b691fe2bb6.png" alt="\begin{array}{ll}
         \mbox{minimize}   &amp; f_0(x) \\
         \mbox{subject to} &amp; f_k(x) \leq 0, \quad k=1,\ldots,m \\
                           &amp; G x \preceq h  \\
    @@ -457,12 +369,12 @@
     </pre></div>
     </div>
     </div></blockquote>
    -</div>
    -<div class="section" id="problems-with-linear-objectives">
    -<span id="s-cpl"></span><h2>Problems with Linear Objectives<a class="headerlink" href="#problems-with-linear-objectives" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="problems-with-linear-objectives">
    +<span id="s-cpl"></span><h2>Problems with Linear Objectives<a class="headerlink" href="#problems-with-linear-objectives" title="Permalink to this headline"></a></h2>
     <dl class="py function">
    -<dt id="cvxopt.solvers.cpl">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></code><code class="sig-name descname"><span class="pre">cpl</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em>, <em class="sig-param"><span class="pre">F</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">kktsolver</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.cpl" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.solvers.cpl">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></span><span class="sig-name descname"><span class="pre">cpl</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">c</span></em>, <em class="sig-param"><span class="pre">F</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">dims</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">kktsolver</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.cpl" title="Permalink to this definition"></a></dt>
     <dd><p>Solves a convex optimization problem with a linear objective</p>
     <div class="math">
     <p><img src="_images/math/86cec286c2bbedaa7760445bc5a1a242cb84d2c2.png" alt="\begin{array}{ll}
    @@ -746,7 +658,7 @@
     <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
         <span class="n">pylab</span><span class="o">.</span><span class="n">fill</span><span class="p">([</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">]],</span>
                    <span class="p">[</span><span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]],</span> <span class="n">facecolor</span> <span class="o">=</span> <span class="s1">&#39;#D0D0D0&#39;</span><span class="p">)</span>
    -    <span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+.</span><span class="mi">5</span><span class="o">*</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+.</span><span class="mi">5</span><span class="o">*</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
    +    <span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="mf">.5</span><span class="o">*</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="mf">.5</span><span class="o">*</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">26</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">26</span><span class="p">])</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">xticks</span><span class="p">([])</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">yticks</span><span class="p">([])</span>
    @@ -757,7 +669,7 @@
     <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
         <span class="n">pylab</span><span class="o">.</span><span class="n">fill</span><span class="p">([</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">]],</span>
                    <span class="p">[</span><span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]],</span> <span class="s1">&#39;facecolor = #D0D0D0&#39;</span><span class="p">)</span>
    -    <span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+.</span><span class="mi">5</span><span class="o">*</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+.</span><span class="mi">5</span><span class="o">*</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
    +    <span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="mf">.5</span><span class="o">*</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="mf">.5</span><span class="o">*</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">26</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">26</span><span class="p">])</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">xticks</span><span class="p">([])</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">yticks</span><span class="p">([])</span>
    @@ -768,7 +680,7 @@
     <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
         <span class="n">pylab</span><span class="o">.</span><span class="n">fill</span><span class="p">([</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">]],</span>
                    <span class="p">[</span><span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]],</span> <span class="s1">&#39;facecolor = #D0D0D0&#39;</span><span class="p">)</span>
    -    <span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+.</span><span class="mi">5</span><span class="o">*</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+.</span><span class="mi">5</span><span class="o">*</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
    +    <span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="mf">.5</span><span class="o">*</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="mf">.5</span><span class="o">*</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">26</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">26</span><span class="p">])</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">xticks</span><span class="p">([])</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">yticks</span><span class="p">([])</span>
    @@ -779,7 +691,7 @@
     <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
         <span class="n">pylab</span><span class="o">.</span><span class="n">fill</span><span class="p">([</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">]],</span>
                    <span class="p">[</span><span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]],</span> <span class="s1">&#39;facecolor = #D0D0D0&#39;</span><span class="p">)</span>
    -    <span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+.</span><span class="mi">5</span><span class="o">*</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+.</span><span class="mi">5</span><span class="o">*</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
    +    <span class="n">pylab</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="mf">.5</span><span class="o">*</span><span class="n">w</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">y</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">+</span><span class="mf">.5</span><span class="o">*</span><span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span><span class="p">(</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">26</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mi">26</span><span class="p">])</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">xticks</span><span class="p">([])</span>
     <span class="n">pylab</span><span class="o">.</span><span class="n">yticks</span><span class="p">([])</span>
    @@ -790,12 +702,12 @@
     <a class="reference internal image-reference" href="_images/floorplan.png"><img alt="_images/floorplan.png" src="_images/floorplan.png" style="width: 600px;" /></a>
     </dd>
     </dl>
    -</div>
    -<div class="section" id="geometric-programming">
    -<span id="s-gp"></span><h2>Geometric Programming<a class="headerlink" href="#geometric-programming" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="geometric-programming">
    +<span id="s-gp"></span><h2>Geometric Programming<a class="headerlink" href="#geometric-programming" title="Permalink to this headline"></a></h2>
     <dl class="py function">
    -<dt id="cvxopt.solvers.gp">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></code><code class="sig-name descname"><span class="pre">gp</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">K</span></em>, <em class="sig-param"><span class="pre">F</span></em>, <em class="sig-param"><span class="pre">g</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.gp" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.solvers.gp">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.solvers.</span></span><span class="sig-name descname"><span class="pre">gp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">K</span></em>, <em class="sig-param"><span class="pre">F</span></em>, <em class="sig-param"><span class="pre">g</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">G</span></em>, <em class="sig-param"><span class="pre">h</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">b</span></em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.solvers.gp" title="Permalink to this definition"></a></dt>
     <dd><p>Solves a geometric program in convex form</p>
     <div class="math">
     <p><img src="_images/math/6dd83f47897e8af1a287a2cb577906b4c142c166.png" alt="\newcommand{\lse}{\mathop{\mathbf{lse}}}
    @@ -905,9 +817,9 @@
     <span class="n">h</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">d</span> <span class="o">=</span> <span class="n">exp</span><span class="p">(</span> <span class="n">solvers</span><span class="o">.</span><span class="n">gp</span><span class="p">(</span><span class="n">K</span><span class="p">,</span> <span class="n">F</span><span class="p">,</span> <span class="n">g</span><span class="p">)[</span><span class="s1">&#39;x&#39;</span><span class="p">]</span> <span class="p">)</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="exploiting-structure">
    -<span id="s-nlcp"></span><h2>Exploiting Structure<a class="headerlink" href="#exploiting-structure" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="exploiting-structure">
    +<span id="s-nlcp"></span><h2>Exploiting Structure<a class="headerlink" href="#exploiting-structure" title="Permalink to this headline"></a></h2>
     <p>By default, the functions <a class="reference internal" href="#cvxopt.solvers.cp" title="cvxopt.solvers.cp"><code class="xref py py-func docutils literal notranslate"><span class="pre">cp</span></code></a> and
     <a class="reference internal" href="#cvxopt.solvers.cpl" title="cvxopt.solvers.cpl"><code class="xref py py-func docutils literal notranslate"><span class="pre">cpl</span></code></a> do not exploit problem
     structure.  Two mechanisms are provided for implementing customized solvers
    @@ -917,7 +829,7 @@
     <a class="reference internal" href="#cvxopt.solvers.cp" title="cvxopt.solvers.cp"><code class="xref py py-func docutils literal notranslate"><span class="pre">cp</span></code></a> is the
     solution of a set of linear equations (<em>KKT equations</em>) of the form</p>
     <div class="math" id="equation-e-cp-kkt">
    -<p><span class="eqno">(2)<a class="headerlink" href="#equation-e-cp-kkt" title="Permalink to this equation">¶</a></span><img src="_images/math/7eac6332e16c5424a4b290d2b9f9445c5214a1d1.png" alt="\left[\begin{array}{ccc}
    +<p><span class="eqno">(2)<a class="headerlink" href="#equation-e-cp-kkt" title="Permalink to this equation"></a></span><img src="_images/math/7eac6332e16c5424a4b290d2b9f9445c5214a1d1.png" alt="\left[\begin{array}{ccc}
         H        &amp; A^T &amp; \tilde G^T \\
         A        &amp; 0   &amp; 0  \\
         \tilde G &amp; 0   &amp; -W^T W
    @@ -1194,9 +1106,9 @@
         <span class="k">return</span> <span class="n">solvers</span><span class="o">.</span><span class="n">cp</span><span class="p">(</span><span class="n">F</span><span class="p">,</span> <span class="n">kktsolver</span> <span class="o">=</span> <span class="n">Fkkt</span><span class="p">)[</span><span class="s1">&#39;x&#39;</span><span class="p">]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="algorithm-parameters">
    -<span id="s-parameters2"></span><h2>Algorithm Parameters<a class="headerlink" href="#algorithm-parameters" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="algorithm-parameters">
    +<span id="s-parameters2"></span><h2>Algorithm Parameters<a class="headerlink" href="#algorithm-parameters" title="Permalink to this headline"></a></h2>
     <p>The following algorithm control parameters are accessible via the
     dictionary <code class="xref py py-attr docutils literal notranslate"><span class="pre">solvers.options</span></code>.  By default the dictionary
     is empty and the default values of the parameters are used.</p>
    @@ -1257,60 +1169,42 @@
     </div><p>The functions <a class="reference internal" href="#cvxopt.solvers.cp" title="cvxopt.solvers.cp"><code class="xref py py-func docutils literal notranslate"><span class="pre">cp</span></code></a> and
     <a class="reference internal" href="#cvxopt.solvers.gp" title="cvxopt.solvers.gp"><code class="xref py py-func docutils literal notranslate"><span class="pre">gp</span></code></a> call <code class="xref py py-func docutils literal notranslate"><span class="pre">cpl</span></code> and hence use the
     same stopping criteria (with <img class="math" src="_images/math/459f00b80184047c37413367f1bc32570987f2c1.png" alt="x_0 = 0"/> for <code class="xref py py-func docutils literal notranslate"><span class="pre">gp</span></code>).</p>
    -</div>
    -</div>
    +</section>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    -        <a href="modeling.html" class="btn btn-neutral float-right" title="Modeling" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="coneprog.html" class="btn btn-neutral float-left" title="Cone Programming" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    +        <a href="modeling.html" class="btn btn-neutral float-right" title="Modeling" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/spsolvers.html+69 175 modified
    @@ -1,93 +1,45 @@
    -
    -
     <!DOCTYPE html>
     <html class="writer-html5" lang="en" >
     <head>
    -  <meta charset="utf-8" />
    -  
    +  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
    +
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    -  
       <title>Sparse Linear Equations &mdash; CVXOPT User&#39;s Guide</title>
    -  
    -
    -  
    -  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
    -  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    -
    -  
    -  
    -
    -  
    -  
    -
    -  
    -
    -  
    +      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    +      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
       <!--[if lt IE 9]>
         <script src="_static/js/html5shiv.min.js"></script>
       <![endif]-->
       
    -    
    -      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    +        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
             <script src="_static/jquery.js"></script>
             <script src="_static/underscore.js"></script>
             <script src="_static/doctools.js"></script>
    -    
    -    <script type="text/javascript" src="_static/js/theme.js"></script>
    -
    -    
    +    <script src="_static/js/theme.js"></script>
         <link rel="search" title="Search" href="search.html" />
         <link rel="copyright" title="Copyright" href="copyright.html" />
         <link rel="next" title="Cone Programming" href="coneprog.html" />
         <link rel="prev" title="Discrete Transforms" href="fftw.html" /> 
     </head>
     
    -<body class="wy-body-for-nav">
    -
    -   
    +<body class="wy-body-for-nav"> 
       <div class="wy-grid-for-nav">
    -    
         <nav data-toggle="wy-nav-shift" class="wy-nav-side">
           <div class="wy-side-scroll">
             <div class="wy-side-nav-search" >
    -          
    -
    -          
                 <a href="index.html" class="icon icon-home"> CVXOPT User's Guide
    -          
    -
    -          
               </a>
    -
    -          
    -            
    -            
                   <div class="version">
    -                1.2.6
    +                1.2.7
                   </div>
    -            
    -          
    -
    -          
     <div role="search">
       <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
         <input type="text" name="q" placeholder="Search docs" />
         <input type="hidden" name="check_keywords" value="yes" />
         <input type="hidden" name="area" value="default" />
       </form>
     </div>
    -
    -          
    -        </div>
    -
    -        
    -        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
    -          
    -            
    -            
    -              
    -            
    -            
    +        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
                   <ul class="current">
     <li class="toctree-l1"><a class="reference internal" href="copyright.html">Copyright and License</a></li>
     <li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
    @@ -110,71 +62,31 @@
     <li class="toctree-l1"><a class="reference external" href="http://cvxopt.org">cvxopt.org</a></li>
     </ul>
     
    -            
    -          
             </div>
    -        
           </div>
         </nav>
     
    -    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    -
    -      
    -      <nav class="wy-nav-top" aria-label="top navigation">
    -        
    +    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
               <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
               <a href="index.html">CVXOPT User's Guide</a>
    -        
           </nav>
     
    -
           <div class="wy-nav-content">
    -        
             <div class="rst-content">
    -        
    -          
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -<div role="navigation" aria-label="breadcrumbs navigation">
    -
    +          <div role="navigation" aria-label="Page navigation">
       <ul class="wy-breadcrumbs">
    -    
           <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
    -        
           <li>Sparse Linear Equations</li>
    -    
    -    
           <li class="wy-breadcrumbs-aside">
    -        
    -          
    -        
           </li>
    -    
       </ul>
    -
    -  
       <hr/>
     </div>
               <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div itemprop="articleBody">
    -            
    -  <div class="section" id="sparse-linear-equations">
    -<span id="c-spsolvers"></span><h1>Sparse Linear Equations<a class="headerlink" href="#sparse-linear-equations" title="Permalink to this headline">¶</a></h1>
    +             
    +  <section id="sparse-linear-equations">
    +<span id="c-spsolvers"></span><h1>Sparse Linear Equations<a class="headerlink" href="#sparse-linear-equations" title="Permalink to this headline"></a></h1>
     <p>In this section we describe routines for solving sparse sets of linear
     equations.</p>
     <p>A real symmetric or complex Hermitian sparse matrix is stored as an
    @@ -191,8 +103,8 @@
     <code class="xref py py-class docutils literal notranslate"><span class="pre">spmatrix</span></code> object of size (<img class="math" src="_images/math/5a939c5280da7202ca4531f175a7780ad5e1f80a.png" alt="n"/>, <img class="math" src="_images/math/5a939c5280da7202ca4531f175a7780ad5e1f80a.png" alt="n"/>).</p>
     <p>Dense matrices, which appear as right-hand sides of equations, are
     stored using the same conventions as in the BLAS and LAPACK modules.</p>
    -<div class="section" id="matrix-orderings">
    -<span id="s-orderings"></span><h2>Matrix Orderings<a class="headerlink" href="#matrix-orderings" title="Permalink to this headline">¶</a></h2>
    +<section id="matrix-orderings">
    +<span id="s-orderings"></span><h2>Matrix Orderings<a class="headerlink" href="#matrix-orderings" title="Permalink to this headline"></a></h2>
     <p>CVXOPT includes an interface to the AMD library for computing approximate
     minimum degree orderings of sparse matrices.</p>
     <div class="admonition seealso">
    @@ -204,8 +116,8 @@
     </ul>
     </div>
     <dl class="py function">
    -<dt id="cvxopt.amd.order">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.amd.</span></code><code class="sig-name descname"><span class="pre">order</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.amd.order" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.amd.order">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.amd.</span></span><span class="sig-name descname"><span class="pre">order</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.amd.order" title="Permalink to this definition"></a></dt>
     <dd><p>Computes the approximate mimimum degree ordering of a symmetric  sparse
     matrix <img class="math" src="_images/math/211284f68205c3e66773eaf026f32a0acdd3dfb3.png" alt="A"/>.  The ordering is returned as an integer dense matrix
     with length equal to the order of <img class="math" src="_images/math/211284f68205c3e66773eaf026f32a0acdd3dfb3.png" alt="A"/>.  Its entries specify a
    @@ -232,9 +144,9 @@
     <span class="go">[ 3]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="general-linear-equations">
    -<span id="s-umfpack"></span><h2>General Linear Equations<a class="headerlink" href="#general-linear-equations" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="general-linear-equations">
    +<span id="s-umfpack"></span><h2>General Linear Equations<a class="headerlink" href="#general-linear-equations" title="Permalink to this headline"></a></h2>
     <p>The module <code class="xref py py-mod docutils literal notranslate"><span class="pre">cvxopt.umfpack</span></code> includes four functions for solving
     sparse non-symmetric sets of linear equations.  They call routines from
     the UMFPACK library, with all control options set to the default values
    @@ -248,8 +160,8 @@
     </ul>
     </div>
     <dl class="py function">
    -<dt id="cvxopt.umfpack.linsolve">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.umfpack.</span></code><code class="sig-name descname"><span class="pre">linsolve</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.umfpack.linsolve" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.umfpack.linsolve">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.umfpack.</span></span><span class="sig-name descname"><span class="pre">linsolve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.umfpack.linsolve" title="Permalink to this definition"></a></dt>
     <dd><p>Solves a sparse set of linear equations</p>
     <div class="math">
     <p><img src="_images/math/908a083a0806ab219190adac99ec60da04c65f48.png" alt="AX &amp; = B \quad (\mathrm{trans} = \mathrm{'N'}), \\
    @@ -264,7 +176,7 @@
     
     <p>In the following example we solve an equation with coefficient matrix</p>
     <div class="math" id="equation-e-sp-adef">
    -<p><span class="eqno">(1)<a class="headerlink" href="#equation-e-sp-adef" title="Permalink to this equation">¶</a></span><img src="_images/math/5046b770f82749051a01f8f102c8e5ff69c4a3e4.png" alt="A = \left[\begin{array}{rrrrr}
    +<p><span class="eqno">(1)<a class="headerlink" href="#equation-e-sp-adef" title="Permalink to this equation"></a></span><img src="_images/math/5046b770f82749051a01f8f102c8e5ff69c4a3e4.png" alt="A = \left[\begin{array}{rrrrr}
         2 &amp; 3 &amp; 0 &amp; 0 &amp; 0 \\
         3 &amp; 0 &amp; 4 &amp; 0 &amp; 6 \\
         0 &amp;-1 &amp;-3 &amp; 2 &amp; 0 \\
    @@ -289,17 +201,17 @@
     <p>The function <a class="reference internal" href="#cvxopt.umfpack.linsolve" title="cvxopt.umfpack.linsolve"><code class="xref py py-func docutils literal notranslate"><span class="pre">linsolve</span></code></a>  is
     equivalent to the following three functions called in sequence.</p>
     <dl class="py function">
    -<dt id="cvxopt.umfpack.symbolic">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.umfpack.</span></code><code class="sig-name descname"><span class="pre">symbolic</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">A</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.umfpack.symbolic" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.umfpack.symbolic">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.umfpack.</span></span><span class="sig-name descname"><span class="pre">symbolic</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">A</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.umfpack.symbolic" title="Permalink to this definition"></a></dt>
     <dd><p>Reorders the columns of <code class="docutils literal notranslate"><span class="pre">A</span></code> to reduce fill-in and performs a symbolic
     LU factorization.  <code class="docutils literal notranslate"><span class="pre">A</span></code> is a sparse, possibly rectangular, matrix.
     Returns the symbolic factorization as an opaque C object that can be
     passed on to <a class="reference internal" href="#cvxopt.umfpack.numeric" title="cvxopt.umfpack.numeric"><code class="xref py py-func docutils literal notranslate"><span class="pre">numeric</span></code></a>.</p>
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.umfpack.numeric">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.umfpack.</span></code><code class="sig-name descname"><span class="pre">numeric</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">A</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">F</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.umfpack.numeric" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.umfpack.numeric">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.umfpack.</span></span><span class="sig-name descname"><span class="pre">numeric</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">A</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">F</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.umfpack.numeric" title="Permalink to this definition"></a></dt>
     <dd><p>Performs a numeric LU factorization of a sparse, possibly rectangular,
     matrix <code class="docutils literal notranslate"><span class="pre">A</span></code>.   The argument <code class="docutils literal notranslate"><span class="pre">F</span></code> is the symbolic factorization
     computed by <a class="reference internal" href="#cvxopt.umfpack.symbolic" title="cvxopt.umfpack.symbolic"><code class="xref py py-func docutils literal notranslate"><span class="pre">symbolic</span></code></a>
    @@ -312,8 +224,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.umfpack.solve">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.umfpack.</span></code><code class="sig-name descname"><span class="pre">solve</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">F</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.umfpack.solve" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.umfpack.solve">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.umfpack.</span></span><span class="sig-name descname"><span class="pre">solve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">F</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">trans</span> <span class="pre">=</span> <span class="pre">'N'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.umfpack.solve" title="Permalink to this definition"></a></dt>
     <dd><p>Solves a set of linear equations</p>
     <div class="math">
     <p><img src="_images/math/908a083a0806ab219190adac99ec60da04c65f48.png" alt="AX &amp; = B \quad (\mathrm{trans} = \mathrm{'N'}), \\
    @@ -370,9 +282,9 @@
     <span class="go">[-1.31e-01]</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="positive-definite-linear-equations">
    -<span id="s-cholmod"></span><h2>Positive Definite Linear Equations<a class="headerlink" href="#positive-definite-linear-equations" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="positive-definite-linear-equations">
    +<span id="s-cholmod"></span><h2>Positive Definite Linear Equations<a class="headerlink" href="#positive-definite-linear-equations" title="Permalink to this headline"></a></h2>
     <p><code class="xref py py-mod docutils literal notranslate"><span class="pre">cvxopt.cholmod</span></code> is an interface to the Cholesky factorization routines
     of the CHOLMOD package.  It includes functions for Cholesky factorization
     of sparse positive definite matrices, and for solving sparse sets of linear
    @@ -394,8 +306,8 @@
     </ul>
     </div>
     <dl class="py function">
    -<dt id="cvxopt.cholmod.linsolve">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></code><code class="sig-name descname"><span class="pre">linsolve</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">p</span> <span class="pre">=</span> <span class="pre">None</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.linsolve" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.cholmod.linsolve">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></span><span class="sig-name descname"><span class="pre">linsolve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">p</span> <span class="pre">=</span> <span class="pre">None</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.linsolve" title="Permalink to this definition"></a></dt>
     <dd><p>Solves</p>
     <div class="math">
     <p><img src="_images/math/e44d29f0cbcc5fa7a0f3f83d3bddc988f9b022ea.png" alt="AX = B"/></p>
    @@ -412,7 +324,7 @@
     
     <p>As an  example, we solve</p>
     <div class="math" id="equation-e-a-pd">
    -<p><span class="eqno">(2)<a class="headerlink" href="#equation-e-a-pd" title="Permalink to this equation">¶</a></span><img src="_images/math/aaf2039a0ca644d308dc578303aa096fd3775907.png" alt="\left[ \begin{array}{rrrr}
    +<p><span class="eqno">(2)<a class="headerlink" href="#equation-e-a-pd" title="Permalink to this equation"></a></span><img src="_images/math/aaf2039a0ca644d308dc578303aa096fd3775907.png" alt="\left[ \begin{array}{rrrr}
             10 &amp;  0 &amp; 3 &amp;  0 \\
              0 &amp;  5 &amp; 0 &amp; -2 \\
              3 &amp;  0 &amp; 5 &amp;  0 \\
    @@ -433,8 +345,8 @@
     </pre></div>
     </div>
     <dl class="py function">
    -<dt id="cvxopt.cholmod.splinsolve">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></code><code class="sig-name descname"><span class="pre">splinsolve</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">p</span> <span class="pre">=</span> <span class="pre">None</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.splinsolve" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.cholmod.splinsolve">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></span><span class="sig-name descname"><span class="pre">splinsolve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">p</span> <span class="pre">=</span> <span class="pre">None</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.splinsolve" title="Permalink to this definition"></a></dt>
     <dd><p>Similar to <a class="reference internal" href="#cvxopt.cholmod.linsolve" title="cvxopt.cholmod.linsolve"><code class="xref py py-func docutils literal notranslate"><span class="pre">linsolve</span></code></a> except that
     <code class="docutils literal notranslate"><span class="pre">B</span></code> is an <a class="reference internal" href="matrices.html#cvxopt.spmatrix" title="cvxopt.spmatrix"><code class="xref py py-class docutils literal notranslate"><span class="pre">spmatrix</span></code></a> and
     that the solution is returned as an output argument (as a new
    @@ -461,15 +373,15 @@
     <a class="reference internal" href="#cvxopt.cholmod.solve" title="cvxopt.cholmod.solve"><code class="xref py py-func docutils literal notranslate"><span class="pre">solve</span></code></a>, respectively,
     <a class="reference internal" href="#cvxopt.cholmod.spsolve" title="cvxopt.cholmod.spsolve"><code class="xref py py-func docutils literal notranslate"><span class="pre">spsolve</span></code></a>.</p>
     <dl class="py function">
    -<dt id="cvxopt.cholmod.symbolic">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></code><code class="sig-name descname"><span class="pre">symbolic</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">p</span> <span class="pre">=</span> <span class="pre">None</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.symbolic" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.cholmod.symbolic">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></span><span class="sig-name descname"><span class="pre">symbolic</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">A</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">p</span> <span class="pre">=</span> <span class="pre">None</span></em>, <em class="sig-param"><span class="pre">uplo</span> <span class="pre">=</span> <span class="pre">'L'</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.symbolic" title="Permalink to this definition"></a></dt>
     <dd><p>Performs a symbolic analysis of a sparse real symmetric or
     complex Hermitian matrix <img class="math" src="_images/math/211284f68205c3e66773eaf026f32a0acdd3dfb3.png" alt="A"/> for one of the two factorizations:</p>
     <div class="math" id="equation-e-chol-ll">
    -<p><span class="eqno">(3)<a class="headerlink" href="#equation-e-chol-ll" title="Permalink to this equation">¶</a></span><img src="_images/math/c9a3af023076f58fe1ee0b35f88cad484ba194fa.png" alt="PAP^T = LL^T, \qquad PAP^T = LL^H,"/></p>
    +<p><span class="eqno">(3)<a class="headerlink" href="#equation-e-chol-ll" title="Permalink to this equation"></a></span><img src="_images/math/c9a3af023076f58fe1ee0b35f88cad484ba194fa.png" alt="PAP^T = LL^T, \qquad PAP^T = LL^H,"/></p>
     </div><p>and</p>
     <div class="math" id="equation-e-chol-ldl">
    -<p><span class="eqno">(4)<a class="headerlink" href="#equation-e-chol-ldl" title="Permalink to this equation">¶</a></span><img src="_images/math/340c54d7b4f301eb582e5ce306364e1cc4fe20b1.png" alt="PAP^T = LDL^T, \qquad PAP^T = LDL^H,"/></p>
    +<p><span class="eqno">(4)<a class="headerlink" href="#equation-e-chol-ldl" title="Permalink to this equation"></a></span><img src="_images/math/340c54d7b4f301eb582e5ce306364e1cc4fe20b1.png" alt="PAP^T = LDL^T, \qquad PAP^T = LDL^H,"/></p>
     </div><p>where <img class="math" src="_images/math/c2aa3dff9bffb099e9dff196fd36aed56ec16baf.png" alt="P"/> is a permutation matrix, <img class="math" src="_images/math/19eef1966f7c545af3ac8c0fa486974d873e3c65.png" alt="L"/> is lower triangular
     (unit lower triangular in the second factorization), and <img class="math" src="_images/math/0fcab9067b50b87e868c4fd70f213a086addb964.png" alt="D"/> is
     nonsingular diagonal.  The type of factorization depends on the value
    @@ -486,8 +398,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.cholmod.numeric">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></code><code class="sig-name descname"><span class="pre">numeric</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">A</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">F</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.numeric" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.cholmod.numeric">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></span><span class="sig-name descname"><span class="pre">numeric</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">A</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">F</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.numeric" title="Permalink to this definition"></a></dt>
     <dd><p>Performs a numeric factorization of a sparse symmetric matrix
     as <a class="reference internal" href="#equation-e-chol-ll">(3)</a> or <a class="reference internal" href="#equation-e-chol-ldl">(4)</a>.  The argument <code class="docutils literal notranslate"><span class="pre">F</span></code> is the
     symbolic factorization computed by
    @@ -508,8 +420,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.cholmod.solve">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></code><code class="sig-name descname"><span class="pre">solve</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">F</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">sys</span> <span class="pre">=</span> <span class="pre">0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.solve" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.cholmod.solve">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></span><span class="sig-name descname"><span class="pre">solve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">F</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">sys</span> <span class="pre">=</span> <span class="pre">0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.solve" title="Permalink to this definition"></a></dt>
     <dd><p>Solves one of the following linear equations where <code class="docutils literal notranslate"><span class="pre">B</span></code> is a dense
     matrix and <code class="docutils literal notranslate"><span class="pre">F</span></code> is the numeric factorization <a class="reference internal" href="#equation-e-chol-ll">(3)</a>
     or <a class="reference internal" href="#equation-e-chol-ldl">(4)</a> computed by
    @@ -561,8 +473,8 @@
     </dd></dl>
     
     <dl class="py function">
    -<dt id="cvxopt.cholmod.spsolve">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></code><code class="sig-name descname"><span class="pre">spsolve</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">F</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">sys</span> <span class="pre">=</span> <span class="pre">0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.spsolve" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.cholmod.spsolve">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></span><span class="sig-name descname"><span class="pre">spsolve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">F</span></em>, <em class="sig-param"><span class="pre">B</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">sys</span> <span class="pre">=</span> <span class="pre">0</span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.spsolve" title="Permalink to this definition"></a></dt>
     <dd><p>Similar to <a class="reference internal" href="#cvxopt.cholmod.solve" title="cvxopt.cholmod.solve"><code class="xref py py-func docutils literal notranslate"><span class="pre">solve</span></code></a>, except that <code class="docutils literal notranslate"><span class="pre">B</span></code> is
     a class:<cite>spmatrix</cite>, and the solution is returned as an output argument
     (as an <code class="xref py py-class docutils literal notranslate"><span class="pre">spmatrix</span></code>).  <code class="docutils literal notranslate"><span class="pre">B</span></code> must have the same typecode as <code class="docutils literal notranslate"><span class="pre">A</span></code>.</p>
    @@ -581,8 +493,8 @@
     </pre></div>
     </div>
     <dl class="py function">
    -<dt id="cvxopt.cholmod.diag">
    -<code class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></code><code class="sig-name descname"><span class="pre">diag</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">F</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.diag" title="Permalink to this definition">¶</a></dt>
    +<dt class="sig sig-object py" id="cvxopt.cholmod.diag">
    +<span class="sig-prename descclassname"><span class="pre">cvxopt.cholmod.</span></span><span class="sig-name descname"><span class="pre">diag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">F</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#cvxopt.cholmod.diag" title="Permalink to this definition"></a></dt>
     <dd><p>Returns the diagonal elements of the Cholesky factor <img class="math" src="_images/math/19eef1966f7c545af3ac8c0fa486974d873e3c65.png" alt="L"/>
     in <a class="reference internal" href="#equation-e-chol-ll">(3)</a>, as a dense matrix of the same type as <code class="docutils literal notranslate"><span class="pre">A</span></code>.
     Note that this only applies to Cholesky factorizations.  The matrix
    @@ -593,8 +505,8 @@
     
     <p>In the functions listed above, the default values of the control
     parameters described in the CHOLMOD user guide are used, except for
    -<code class="xref c c-data docutils literal notranslate"><span class="pre">Common-&gt;print</span></code> which is set to 0 instead of 3 and
    -<code class="xref c c-data docutils literal notranslate"><span class="pre">Common-&gt;supernodal</span></code> which is set to 2 instead of 1.
    +<code class="xref c c-data docutils literal notranslate"><span class="pre">Common.print</span></code> which is set to 0 instead of 3 and
    +<code class="xref c c-data docutils literal notranslate"><span class="pre">Common.supernodal</span></code> which is set to 2 instead of 1.
     These parameters (and a few others) can be modified by making an
     entry in the dictionary <code class="xref py py-attr docutils literal notranslate"><span class="pre">cholmod.options</span></code>.
     The meaning of the options <code class="xref py py-attr docutils literal notranslate"><span class="pre">options['supernodal']</span></code>  and
    @@ -642,13 +554,13 @@
     <span class="go">5.50533153593</span>
     </pre></div>
     </div>
    -</div>
    -<div class="section" id="example-covariance-selection">
    -<h2>Example: Covariance Selection<a class="headerlink" href="#example-covariance-selection" title="Permalink to this headline">¶</a></h2>
    +</section>
    +<section id="example-covariance-selection">
    +<h2>Example: Covariance Selection<a class="headerlink" href="#example-covariance-selection" title="Permalink to this headline"></a></h2>
     <p>This example illustrates the use of the routines for sparse Cholesky
     factorization.  We consider the problem</p>
     <div class="math" id="equation-e-covsel">
    -<p><span class="eqno">(5)<a class="headerlink" href="#equation-e-covsel" title="Permalink to this equation">¶</a></span><img src="_images/math/4e317307fb34d4308336c7711497db123b7d9def.png" alt="\newcommand{\Tr}{\mathop{\bf tr}}
    +<p><span class="eqno">(5)<a class="headerlink" href="#equation-e-covsel" title="Permalink to this equation"></a></span><img src="_images/math/4e317307fb34d4308336c7711497db123b7d9def.png" alt="\newcommand{\Tr}{\mathop{\bf tr}}
     \begin{array}{ll}
         \mbox{minimize} &amp; -\log\det K + \Tr(KY) \\
         \mbox{subject to} &amp; K_{ij}=0,\quad (i,j) \not \in S.
    @@ -773,60 +685,42 @@ <h2>Example: Covariance Selection<a class="headerlink" href="#example-covariance
         <span class="k">return</span> <span class="n">K</span>
     </pre></div>
     </div>
    -</div>
    -</div>
    +</section>
    +</section>
     
     
                </div>
    -           
               </div>
    -          <footer>
    -    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
    -        <a href="coneprog.html" class="btn btn-neutral float-right" title="Cone Programming" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    +          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
             <a href="fftw.html" class="btn btn-neutral float-left" title="Discrete Transforms" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
    +        <a href="coneprog.html" class="btn btn-neutral float-right" title="Cone Programming" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         </div>
     
       <hr/>
     
       <div role="contentinfo">
    -    <p>
    -        &#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    -      <span class="lastupdated">
    -        Last updated on Feb 18, 2021.
    -      </span>
    -
    -    </p>
    +    <p>&#169; <a href="copyright.html">Copyright</a> 2004-2021, M.S. Andersen, J. Dahl, L. Vandenberghe.
    +      <span class="lastupdated">Last updated on Sep 20, 2021.
    +      </span></p>
       </div>
    -    
    -    
    -    
    -    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    -    
    +
    +  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
         <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    -    
    -    provided by <a href="https://readthedocs.org">Read the Docs</a>. 
    +    provided by <a href="https://readthedocs.org">Read the Docs</a>.
    +   
     
     </footer>
             </div>
           </div>
    -
         </section>
    -
       </div>
    -  
    -
    -  <script type="text/javascript">
    +  <script>
           jQuery(function () {
               SphinxRtdTheme.Navigation.enable(true);
           });
       </script>
    -
    -  
    -  
    -    
    -  
         <div class="footer">
    -      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 3.5.1.
    +      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.1.2.
         </div>
     
     </body>
    
  • doc/html/_static/basic.css+78 30 modified
    @@ -130,7 +130,7 @@ ul.search li a {
         font-weight: bold;
     }
     
    -ul.search li div.context {
    +ul.search li p.context {
         color: #888;
         margin: 2px 0 0 30px;
         text-align: left;
    @@ -277,25 +277,25 @@ p.rubric {
         font-weight: bold;
     }
     
    -img.align-left, .figure.align-left, object.align-left {
    +img.align-left, figure.align-left, .figure.align-left, object.align-left {
         clear: left;
         float: left;
         margin-right: 1em;
     }
     
    -img.align-right, .figure.align-right, object.align-right {
    +img.align-right, figure.align-right, .figure.align-right, object.align-right {
         clear: right;
         float: right;
         margin-left: 1em;
     }
     
    -img.align-center, .figure.align-center, object.align-center {
    +img.align-center, figure.align-center, .figure.align-center, object.align-center {
       display: block;
       margin-left: auto;
       margin-right: auto;
     }
     
    -img.align-default, .figure.align-default {
    +img.align-default, figure.align-default, .figure.align-default {
       display: block;
       margin-left: auto;
       margin-right: auto;
    @@ -319,7 +319,8 @@ img.align-default, .figure.align-default {
     
     /* -- sidebars -------------------------------------------------------------- */
     
    -div.sidebar {
    +div.sidebar,
    +aside.sidebar {
         margin: 0 0 0.5em 1em;
         border: 1px solid #ddb;
         padding: 7px;
    @@ -377,12 +378,14 @@ div.body p.centered {
     /* -- content of sidebars/topics/admonitions -------------------------------- */
     
     div.sidebar > :last-child,
    +aside.sidebar > :last-child,
     div.topic > :last-child,
     div.admonition > :last-child {
         margin-bottom: 0;
     }
     
     div.sidebar::after,
    +aside.sidebar::after,
     div.topic::after,
     div.admonition::after,
     blockquote::after {
    @@ -455,20 +458,22 @@ td > :last-child {
     
     /* -- figures --------------------------------------------------------------- */
     
    -div.figure {
    +div.figure, figure {
         margin: 0.5em;
         padding: 0.5em;
     }
     
    -div.figure p.caption {
    +div.figure p.caption, figcaption {
         padding: 0.3em;
     }
     
    -div.figure p.caption span.caption-number {
    +div.figure p.caption span.caption-number,
    +figcaption span.caption-number {
         font-style: italic;
     }
     
    -div.figure p.caption span.caption-text {
    +div.figure p.caption span.caption-text,
    +figcaption span.caption-text {
     }
     
     /* -- field list styles ----------------------------------------------------- */
    @@ -503,6 +508,63 @@ table.hlist td {
         vertical-align: top;
     }
     
    +/* -- object description styles --------------------------------------------- */
    +
    +.sig {
    +	font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
    +}
    +
    +.sig-name, code.descname {
    +    background-color: transparent;
    +    font-weight: bold;
    +}
    +
    +.sig-name {
    +	font-size: 1.1em;
    +}
    +
    +code.descname {
    +    font-size: 1.2em;
    +}
    +
    +.sig-prename, code.descclassname {
    +    background-color: transparent;
    +}
    +
    +.optional {
    +    font-size: 1.3em;
    +}
    +
    +.sig-paren {
    +    font-size: larger;
    +}
    +
    +.sig-param.n {
    +	font-style: italic;
    +}
    +
    +/* C++ specific styling */
    +
    +.sig-inline.c-texpr,
    +.sig-inline.cpp-texpr {
    +	font-family: unset;
    +}
    +
    +.sig.c   .k, .sig.c   .kt,
    +.sig.cpp .k, .sig.cpp .kt {
    +	color: #0033B3;
    +}
    +
    +.sig.c   .m,
    +.sig.cpp .m {
    +	color: #1750EB;
    +}
    +
    +.sig.c   .s, .sig.c   .sc,
    +.sig.cpp .s, .sig.cpp .sc {
    +	color: #067D17;
    +}
    +
     
     /* -- other body styles ----------------------------------------------------- */
     
    @@ -629,14 +691,6 @@ dl.glossary dt {
         font-size: 1.1em;
     }
     
    -.optional {
    -    font-size: 1.3em;
    -}
    -
    -.sig-paren {
    -    font-size: larger;
    -}
    -
     .versionmodified {
         font-style: italic;
     }
    @@ -765,8 +819,12 @@ div.code-block-caption code {
     
     table.highlighttable td.linenos,
     span.linenos,
    -div.doctest > div.highlight span.gp {  /* gp: Generic.Prompt */
    -    user-select: none;
    +div.highlight span.gp {  /* gp: Generic.Prompt */
    +  user-select: none;
    +  -webkit-user-select: text; /* Safari fallback only */
    +  -webkit-user-select: none; /* Chrome/Safari */
    +  -moz-user-select: none; /* Firefox */
    +  -ms-user-select: none; /* IE10+ */
     }
     
     div.code-block-caption span.caption-number {
    @@ -781,16 +839,6 @@ div.literal-block-wrapper {
         margin: 1em 0;
     }
     
    -code.descname {
    -    background-color: transparent;
    -    font-weight: bold;
    -    font-size: 1.2em;
    -}
    -
    -code.descclassname {
    -    background-color: transparent;
    -}
    -
     code.xref, a code {
         background-color: transparent;
         font-weight: bold;
    
  • doc/html/_static/css/theme.css+2 2 modified
  • doc/html/_static/doctools.js+2 0 modified
    @@ -301,12 +301,14 @@ var Documentation = {
                   window.location.href = prevHref;
                   return false;
                 }
    +            break;
               case 39: // right
                 var nextHref = $('link[rel="next"]').prop('href');
                 if (nextHref) {
                   window.location.href = nextHref;
                   return false;
                 }
    +            break;
             }
           }
         });
    
  • doc/html/_static/documentation_options.js+1 1 modified
    @@ -1,6 +1,6 @@
     var DOCUMENTATION_OPTIONS = {
         URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
    -    VERSION: '1.2.6',
    +    VERSION: '1.2.7',
         LANGUAGE: 'None',
         COLLAPSE_INDEX: false,
         BUILDER: 'html',
    
  • doc/html/_static/js/theme.js+1 1 modified
    @@ -1 +1 @@
    -!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),n("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),n("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n('<span class="toctree-expand"></span>'),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}t.length>0&&($(".wy-menu-vertical .current").removeClass("current"),t.addClass("current"),t.closest("li.toctree-l1").addClass("current"),t.closest("li.toctree-l1").parent().addClass("current"),t.closest("li.toctree-l1").addClass("current"),t.closest("li.toctree-l2").addClass("current"),t.closest("li.toctree-l3").addClass("current"),t.closest("li.toctree-l4").addClass("current"),t.closest("li.toctree-l5").addClass("current"),t[0].scrollIntoView())}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var i=(new Date).getTime(),o=Math.max(0,16-(i-n)),r=window.setTimeout((function(){e(i+o)}),o);return n=i+o,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()}).call(window)},function(n,e){n.exports=jQuery},function(n,e,t){}]);
    \ No newline at end of file
    +!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),n("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),n("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n('<button class="toctree-expand" title="Open/close menu"></button>'),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var i=(new Date).getTime(),o=Math.max(0,16-(i-n)),r=window.setTimeout((function(){e(i+o)}),o);return n=i+o,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()}).call(window)},function(n,e){n.exports=jQuery},function(n,e,t){}]);
    \ No newline at end of file
    
  • doc/html/_static/pygments.css+6 1 modified
    @@ -1,5 +1,10 @@
    +pre { line-height: 125%; }
    +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
    +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
    +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
    +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
     .highlight .hll { background-color: #ffffcc }
    -.highlight  { background: #eeffcc; }
    +.highlight { background: #eeffcc; }
     .highlight .c { color: #408090; font-style: italic } /* Comment */
     .highlight .err { border: 1px solid #FF0000 } /* Error */
     .highlight .k { color: #007020; font-weight: bold } /* Keyword */
    
  • doc/html/_static/searchtools.js+1 1 modified
    @@ -509,7 +509,7 @@ var Search = {
         var excerpt = ((start > 0) ? '...' : '') +
           $.trim(text.substr(start, 240)) +
           ((start + 240 - text.length) ? '...' : '');
    -    var rv = $('<div class="context"></div>').text(excerpt);
    +    var rv = $('<p class="context"></p>').text(excerpt);
         $.each(hlwords, function() {
           rv = rv.highlightText(this, 'highlighted');
         });
    
  • doc/html/_static/underscore-1.13.1.js+83 68 renamed
    @@ -1,19 +1,19 @@
     (function (global, factory) {
       typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
       typeof define === 'function' && define.amd ? define('underscore', factory) :
    -  (global = global || self, (function () {
    +  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {
         var current = global._;
         var exports = global._ = factory();
         exports.noConflict = function () { global._ = current; return exports; };
       }()));
     }(this, (function () {
    -  //     Underscore.js 1.12.0
    +  //     Underscore.js 1.13.1
       //     https://underscorejs.org
    -  //     (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
    +  //     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
       //     Underscore may be freely distributed under the MIT license.
     
       // Current version.
    -  var VERSION = '1.12.0';
    +  var VERSION = '1.13.1';
     
       // Establish the root object, `window` (`self`) in the browser, `global`
       // on the server, or `this` in some virtual machines. We use `self`
    @@ -170,7 +170,7 @@
       var isArray = nativeIsArray || tagTester('Array');
     
       // Internal function to check whether `key` is an own property name of `obj`.
    -  function has(obj, key) {
    +  function has$1(obj, key) {
         return obj != null && hasOwnProperty.call(obj, key);
       }
     
    @@ -181,7 +181,7 @@
       (function() {
         if (!isArguments(arguments)) {
           isArguments = function(obj) {
    -        return has(obj, 'callee');
    +        return has$1(obj, 'callee');
           };
         }
       }());
    @@ -268,7 +268,7 @@
     
         // Constructor is a special case.
         var prop = 'constructor';
    -    if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);
    +    if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);
     
         while (nonEnumIdx--) {
           prop = nonEnumerableProps[nonEnumIdx];
    @@ -284,7 +284,7 @@
         if (!isObject(obj)) return [];
         if (nativeKeys) return nativeKeys(obj);
         var keys = [];
    -    for (var key in obj) if (has(obj, key)) keys.push(key);
    +    for (var key in obj) if (has$1(obj, key)) keys.push(key);
         // Ahem, IE < 9.
         if (hasEnumBug) collectNonEnumProps(obj, keys);
         return keys;
    @@ -318,24 +318,24 @@
       // If Underscore is called as a function, it returns a wrapped object that can
       // be used OO-style. This wrapper holds altered versions of all functions added
       // through `_.mixin`. Wrapped objects may be chained.
    -  function _(obj) {
    -    if (obj instanceof _) return obj;
    -    if (!(this instanceof _)) return new _(obj);
    +  function _$1(obj) {
    +    if (obj instanceof _$1) return obj;
    +    if (!(this instanceof _$1)) return new _$1(obj);
         this._wrapped = obj;
       }
     
    -  _.VERSION = VERSION;
    +  _$1.VERSION = VERSION;
     
       // Extracts the result from a wrapped and chained object.
    -  _.prototype.value = function() {
    +  _$1.prototype.value = function() {
         return this._wrapped;
       };
     
       // Provide unwrapping proxies for some methods used in engine operations
       // such as arithmetic and JSON stringification.
    -  _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
    +  _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;
     
    -  _.prototype.toString = function() {
    +  _$1.prototype.toString = function() {
         return String(this._wrapped);
       };
     
    @@ -370,8 +370,8 @@
       // Internal recursive comparison function for `_.isEqual`.
       function deepEq(a, b, aStack, bStack) {
         // Unwrap any wrapped objects.
    -    if (a instanceof _) a = a._wrapped;
    -    if (b instanceof _) b = b._wrapped;
    +    if (a instanceof _$1) a = a._wrapped;
    +    if (b instanceof _$1) b = b._wrapped;
         // Compare `[[Class]]` names.
         var className = toString.call(a);
         if (className !== toString.call(b)) return false;
    @@ -463,7 +463,7 @@
           while (length--) {
             // Deep compare each member
             key = _keys[length];
    -        if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
    +        if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
           }
         }
         // Remove the first object from the stack of traversed objects.
    @@ -642,15 +642,15 @@
     
       // Normalize a (deep) property `path` to array.
       // Like `_.iteratee`, this function can be customized.
    -  function toPath(path) {
    +  function toPath$1(path) {
         return isArray(path) ? path : [path];
       }
    -  _.toPath = toPath;
    +  _$1.toPath = toPath$1;
     
       // Internal wrapper for `_.toPath` to enable minification.
       // Similar to `cb` for `_.iteratee`.
    -  function toPath$1(path) {
    -    return _.toPath(path);
    +  function toPath(path) {
    +    return _$1.toPath(path);
       }
     
       // Internal function to obtain a nested property in `obj` along `path`.
    @@ -668,19 +668,19 @@
       // `undefined`, return `defaultValue` instead.
       // The `path` is normalized through `_.toPath`.
       function get(object, path, defaultValue) {
    -    var value = deepGet(object, toPath$1(path));
    +    var value = deepGet(object, toPath(path));
         return isUndefined(value) ? defaultValue : value;
       }
     
       // Shortcut function for checking if an object has a given property directly on
       // itself (in other words, not on a prototype). Unlike the internal `has`
       // function, this public version can also traverse nested properties.
    -  function has$1(obj, path) {
    -    path = toPath$1(path);
    +  function has(obj, path) {
    +    path = toPath(path);
         var length = path.length;
         for (var i = 0; i < length; i++) {
           var key = path[i];
    -      if (!has(obj, key)) return false;
    +      if (!has$1(obj, key)) return false;
           obj = obj[key];
         }
         return !!length;
    @@ -703,7 +703,7 @@
       // Creates a function that, when passed an object, will traverse that object’s
       // properties down the given `path`, specified as an array of keys or indices.
       function property(path) {
    -    path = toPath$1(path);
    +    path = toPath(path);
         return function(obj) {
           return deepGet(obj, path);
         };
    @@ -747,12 +747,12 @@
       function iteratee(value, context) {
         return baseIteratee(value, context, Infinity);
       }
    -  _.iteratee = iteratee;
    +  _$1.iteratee = iteratee;
     
       // The function we call internally to generate a callback. It invokes
       // `_.iteratee` if overridden, otherwise `baseIteratee`.
       function cb(value, context, argCount) {
    -    if (_.iteratee !== iteratee) return _.iteratee(value, context);
    +    if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);
         return baseIteratee(value, context, argCount);
       }
     
    @@ -840,7 +840,7 @@
     
       // By default, Underscore uses ERB-style template delimiters. Change the
       // following template settings to use alternative delimiters.
    -  var templateSettings = _.templateSettings = {
    +  var templateSettings = _$1.templateSettings = {
         evaluate: /<%([\s\S]+?)%>/g,
         interpolate: /<%=([\s\S]+?)%>/g,
         escape: /<%-([\s\S]+?)%>/g
    @@ -868,13 +868,20 @@
         return '\\' + escapes[match];
       }
     
    +  // In order to prevent third-party code injection through
    +  // `_.templateSettings.variable`, we test it against the following regular
    +  // expression. It is intentionally a bit more liberal than just matching valid
    +  // identifiers, but still prevents possible loopholes through defaults or
    +  // destructuring assignment.
    +  var bareIdentifier = /^\s*(\w|\$)+\s*$/;
    +
       // JavaScript micro-templating, similar to John Resig's implementation.
       // Underscore templating handles arbitrary delimiters, preserves whitespace,
       // and correctly escapes quotes within interpolated code.
       // NB: `oldSettings` only exists for backwards compatibility.
       function template(text, settings, oldSettings) {
         if (!settings && oldSettings) settings = oldSettings;
    -    settings = defaults({}, settings, _.templateSettings);
    +    settings = defaults({}, settings, _$1.templateSettings);
     
         // Combine delimiters into one regular expression via alternation.
         var matcher = RegExp([
    @@ -903,27 +910,35 @@
         });
         source += "';\n";
     
    -    // If a variable is not specified, place data values in local scope.
    -    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
    +    var argument = settings.variable;
    +    if (argument) {
    +      // Insure against third-party code injection. (CVE-2021-23358)
    +      if (!bareIdentifier.test(argument)) throw new Error(
    +        'variable is not a bare identifier: ' + argument
    +      );
    +    } else {
    +      // If a variable is not specified, place data values in local scope.
    +      source = 'with(obj||{}){\n' + source + '}\n';
    +      argument = 'obj';
    +    }
     
         source = "var __t,__p='',__j=Array.prototype.join," +
           "print=function(){__p+=__j.call(arguments,'');};\n" +
           source + 'return __p;\n';
     
         var render;
         try {
    -      render = new Function(settings.variable || 'obj', '_', source);
    +      render = new Function(argument, '_', source);
         } catch (e) {
           e.source = source;
           throw e;
         }
     
         var template = function(data) {
    -      return render.call(this, data, _);
    +      return render.call(this, data, _$1);
         };
     
         // Provide the compiled source as a convenience for precompilation.
    -    var argument = settings.variable || 'obj';
         template.source = 'function(' + argument + '){\n' + source + '}';
     
         return template;
    @@ -933,7 +948,7 @@
       // is invoked with its parent as context. Returns the value of the final
       // child, or `fallback` if any child is undefined.
       function result(obj, path, fallback) {
    -    path = toPath$1(path);
    +    path = toPath(path);
         var length = path.length;
         if (!length) {
           return isFunction$1(fallback) ? fallback.call(obj) : fallback;
    @@ -959,7 +974,7 @@
     
       // Start chaining a wrapped Underscore object.
       function chain(obj) {
    -    var instance = _(obj);
    +    var instance = _$1(obj);
         instance._chain = true;
         return instance;
       }
    @@ -993,7 +1008,7 @@
         return bound;
       });
     
    -  partial.placeholder = _;
    +  partial.placeholder = _$1;
     
       // Create a function bound to a given object (assigning `this`, and arguments,
       // optionally).
    @@ -1012,7 +1027,7 @@
       var isArrayLike = createSizePropertyCheck(getLength);
     
       // Internal implementation of a recursive `flatten` function.
    -  function flatten(input, depth, strict, output) {
    +  function flatten$1(input, depth, strict, output) {
         output = output || [];
         if (!depth && depth !== 0) {
           depth = Infinity;
    @@ -1025,7 +1040,7 @@
           if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {
             // Flatten current level of array or arguments object.
             if (depth > 1) {
    -          flatten(value, depth - 1, strict, output);
    +          flatten$1(value, depth - 1, strict, output);
               idx = output.length;
             } else {
               var j = 0, len = value.length;
    @@ -1042,7 +1057,7 @@
       // are the method names to be bound. Useful for ensuring that all callbacks
       // defined on an object belong to it.
       var bindAll = restArguments(function(obj, keys) {
    -    keys = flatten(keys, false, false);
    +    keys = flatten$1(keys, false, false);
         var index = keys.length;
         if (index < 1) throw new Error('bindAll must be passed function names');
         while (index--) {
    @@ -1057,7 +1072,7 @@
         var memoize = function(key) {
           var cache = memoize.cache;
           var address = '' + (hasher ? hasher.apply(this, arguments) : key);
    -      if (!has(cache, address)) cache[address] = func.apply(this, arguments);
    +      if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);
           return cache[address];
         };
         memoize.cache = {};
    @@ -1074,7 +1089,7 @@
     
       // Defers a function, scheduling it to run after the current call stack has
       // cleared.
    -  var defer = partial(delay, _, 1);
    +  var defer = partial(delay, _$1, 1);
     
       // Returns a function, that, when invoked, will only be triggered at most once
       // during a given window of time. Normally, the throttled function will run
    @@ -1420,7 +1435,7 @@
         if (isFunction$1(path)) {
           func = path;
         } else {
    -      path = toPath$1(path);
    +      path = toPath(path);
           contextPath = path.slice(0, -1);
           path = path[path.length - 1];
         }
    @@ -1562,7 +1577,7 @@
       // Groups the object's values by a criterion. Pass either a string attribute
       // to group by, or a function that returns the criterion.
       var groupBy = group(function(result, value, key) {
    -    if (has(result, key)) result[key].push(value); else result[key] = [value];
    +    if (has$1(result, key)) result[key].push(value); else result[key] = [value];
       });
     
       // Indexes the object's values by a criterion, similar to `_.groupBy`, but for
    @@ -1575,7 +1590,7 @@
       // either a string attribute to count by, or a function that returns the
       // criterion.
       var countBy = group(function(result, value, key) {
    -    if (has(result, key)) result[key]++; else result[key] = 1;
    +    if (has$1(result, key)) result[key]++; else result[key] = 1;
       });
     
       // Split a collection into two arrays: one whose elements all pass the given
    @@ -1618,7 +1633,7 @@
           keys = allKeys(obj);
         } else {
           iteratee = keyInObj;
    -      keys = flatten(keys, false, false);
    +      keys = flatten$1(keys, false, false);
           obj = Object(obj);
         }
         for (var i = 0, length = keys.length; i < length; i++) {
    @@ -1636,7 +1651,7 @@
           iteratee = negate(iteratee);
           if (keys.length > 1) context = keys[1];
         } else {
    -      keys = map(flatten(keys, false, false), String);
    +      keys = map(flatten$1(keys, false, false), String);
           iteratee = function(value, key) {
             return !contains(keys, key);
           };
    @@ -1681,14 +1696,14 @@
     
       // Flatten out an array, either recursively (by default), or up to `depth`.
       // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.
    -  function flatten$1(array, depth) {
    -    return flatten(array, depth, false);
    +  function flatten(array, depth) {
    +    return flatten$1(array, depth, false);
       }
     
       // Take the difference between one array and a number of other arrays.
       // Only the elements present in just the first array will remain.
       var difference = restArguments(function(array, rest) {
    -    rest = flatten(rest, true, true);
    +    rest = flatten$1(rest, true, true);
         return filter(array, function(value){
           return !contains(rest, value);
         });
    @@ -1734,7 +1749,7 @@
       // Produce an array that contains the union: each distinct element from all of
       // the passed-in arrays.
       var union = restArguments(function(arrays) {
    -    return uniq(flatten(arrays, true, true));
    +    return uniq(flatten$1(arrays, true, true));
       });
     
       // Produce an array that contains every item shared between all the
    @@ -1821,26 +1836,26 @@
     
       // Helper function to continue chaining intermediate results.
       function chainResult(instance, obj) {
    -    return instance._chain ? _(obj).chain() : obj;
    +    return instance._chain ? _$1(obj).chain() : obj;
       }
     
       // Add your own custom functions to the Underscore object.
       function mixin(obj) {
         each(functions(obj), function(name) {
    -      var func = _[name] = obj[name];
    -      _.prototype[name] = function() {
    +      var func = _$1[name] = obj[name];
    +      _$1.prototype[name] = function() {
             var args = [this._wrapped];
             push.apply(args, arguments);
    -        return chainResult(this, func.apply(_, args));
    +        return chainResult(this, func.apply(_$1, args));
           };
         });
    -    return _;
    +    return _$1;
       }
     
       // Add all mutator `Array` functions to the wrapper.
       each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
         var method = ArrayProto[name];
    -    _.prototype[name] = function() {
    +    _$1.prototype[name] = function() {
           var obj = this._wrapped;
           if (obj != null) {
             method.apply(obj, arguments);
    @@ -1855,7 +1870,7 @@
       // Add all accessor `Array` functions to the wrapper.
       each(['concat', 'join', 'slice'], function(name) {
         var method = ArrayProto[name];
    -    _.prototype[name] = function() {
    +    _$1.prototype[name] = function() {
           var obj = this._wrapped;
           if (obj != null) obj = method.apply(obj, arguments);
           return chainResult(this, obj);
    @@ -1909,12 +1924,12 @@
         clone: clone,
         tap: tap,
         get: get,
    -    has: has$1,
    +    has: has,
         mapObject: mapObject,
         identity: identity,
         constant: constant,
         noop: noop,
    -    toPath: toPath,
    +    toPath: toPath$1,
         property: property,
         propertyOf: propertyOf,
         matcher: matcher,
    @@ -1997,7 +2012,7 @@
         tail: rest,
         drop: rest,
         compact: compact,
    -    flatten: flatten$1,
    +    flatten: flatten,
         without: without,
         uniq: uniq,
         unique: uniq,
    @@ -2011,17 +2026,17 @@
         range: range,
         chunk: chunk,
         mixin: mixin,
    -    'default': _
    +    'default': _$1
       };
     
       // Default Export
     
       // Add all of the Underscore functions to the wrapper object.
    -  var _$1 = mixin(allExports);
    +  var _ = mixin(allExports);
       // Legacy Node.js API.
    -  _$1._ = _$1;
    +  _._ = _;
     
    -  return _$1;
    +  return _;
     
     })));
    -//# sourceMappingURL=underscore.js.map
    +//# sourceMappingURL=underscore-umd.js.map
    
  • doc/html/_static/underscore.js+4 4 modified
    @@ -1,6 +1,6 @@
    -!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n=n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){
    -//     Underscore.js 1.12.0
    +!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n="undefined"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){
    +//     Underscore.js 1.13.1
     //     https://underscorejs.org
    -//     (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
    +//     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
     //     Underscore may be freely distributed under the MIT license.
    -var n="1.12.0",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,g=isFinite,d=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u<t;u++)e[u]=arguments[u+r];switch(r){case 0:return n.call(this,e);case 1:return n.call(this,arguments[0],e);case 2:return n.call(this,arguments[0],arguments[1],e)}var o=Array(r+1);for(u=0;u<r;u++)o[u]=arguments[u];return o[r]=e,n.apply(this,o)}}function _(n){var r=typeof n;return"function"===r||"object"===r&&!!n}function w(n){return void 0===n}function A(n){return!0===n||!1===n||"[object Boolean]"===a.call(n)}function x(n){var r="[object "+n+"]";return function(n){return a.call(n)===r}}var S=x("String"),O=x("Number"),M=x("Date"),E=x("RegExp"),B=x("Error"),N=x("Symbol"),I=x("ArrayBuffer"),k=x("Function"),T=r.document&&r.document.childNodes;"function"!=typeof/./&&"object"!=typeof Int8Array&&"function"!=typeof T&&(k=function(n){return"function"==typeof n||!1});var D=k,R=x("Object"),F=l&&R(new DataView(new ArrayBuffer(8))),V="undefined"!=typeof Map&&R(new Map),P=x("DataView");var q=F?function(n){return null!=n&&D(n.getInt8)&&I(n.buffer)}:P,U=s||x("Array");function W(n,r){return null!=n&&f.call(n,r)}var z=x("Arguments");!function(){z(arguments)||(z=function(n){return W(n,"callee")})}();var L=z;function C(n){return O(n)&&y(n)}function K(n){return function(){return n}}function J(n){return function(r){var t=n(r);return"number"==typeof t&&t>=0&&t<=m}}function $(n){return function(r){return null==r?void 0:r[n]}}var G=$("byteLength"),H=J(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:K(!1),Y=$("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e<t;++e)r[n[e]]=!0;return{contains:function(n){return r[n]},push:function(t){return r[t]=!0,n.push(t)}}}(r);var t=b.length,u=n.constructor,o=D(u)&&u.prototype||e,i="constructor";for(W(n,i)&&!r.contains(i)&&r.push(i);t--;)(i=b[t])in n&&n[i]!==o[i]&&!r.contains(i)&&r.push(i)}function nn(n){if(!_(n))return[];if(p)return p(n);var r=[];for(var t in n)W(n,t)&&r.push(t);return d&&Z(n,r),r}function rn(n,r){var t=nn(r),e=t.length;if(null==n)return!e;for(var u=Object(n),o=0;o<e;o++){var i=t[o];if(r[i]!==u[i]||!(i in u))return!1}return!0}function tn(n){return n instanceof tn?n:this instanceof tn?void(this._wrapped=n):new tn(n)}function en(n){return new Uint8Array(n.buffer||n,n.byteOffset||0,G(n))}tn.VERSION=n,tn.prototype.value=function(){return this._wrapped},tn.prototype.valueOf=tn.prototype.toJSON=tn.prototype.value,tn.prototype.toString=function(){return String(this._wrapped)};var un="[object DataView]";function on(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(null==n||null==r)return!1;if(n!=n)return r!=r;var o=typeof n;return("function"===o||"object"===o||"object"==typeof r)&&function n(r,t,e,o){r instanceof tn&&(r=r._wrapped);t instanceof tn&&(t=t._wrapped);var i=a.call(r);if(i!==a.call(t))return!1;if(F&&"[object Object]"==i&&q(r)){if(!q(t))return!1;i=un}switch(i){case"[object RegExp]":case"[object String]":return""+r==""+t;case"[object Number]":return+r!=+r?+t!=+t:0==+r?1/+r==1/t:+r==+t;case"[object Date]":case"[object Boolean]":return+r==+t;case"[object Symbol]":return u.valueOf.call(r)===u.valueOf.call(t);case"[object ArrayBuffer]":case un:return n(en(r),en(t),e,o)}var f="[object Array]"===i;if(!f&&X(r)){if(G(r)!==G(t))return!1;if(r.buffer===t.buffer&&r.byteOffset===t.byteOffset)return!0;f=!0}if(!f){if("object"!=typeof r||"object"!=typeof t)return!1;var c=r.constructor,l=t.constructor;if(c!==l&&!(D(c)&&c instanceof c&&D(l)&&l instanceof l)&&"constructor"in r&&"constructor"in t)return!1}o=o||[];var s=(e=e||[]).length;for(;s--;)if(e[s]===r)return o[s]===t;if(e.push(r),o.push(t),f){if((s=r.length)!==t.length)return!1;for(;s--;)if(!on(r[s],t[s],e,o))return!1}else{var p,v=nn(r);if(s=v.length,nn(t).length!==s)return!1;for(;s--;)if(p=v[s],!W(t,p)||!on(r[p],t[p],e,o))return!1}return e.pop(),o.pop(),!0}(n,r,t,e)}function an(n){if(!_(n))return[];var r=[];for(var t in n)r.push(t);return d&&Z(n,r),r}function fn(n){var r=Y(n);return function(t){if(null==t)return!1;var e=an(t);if(Y(e))return!1;for(var u=0;u<r;u++)if(!D(t[n[u]]))return!1;return n!==hn||!D(t[cn])}}var cn="forEach",ln="has",sn=["clear","delete"],pn=["get",ln,"set"],vn=sn.concat(cn,pn),hn=sn.concat(pn),yn=["add"].concat(sn,cn,ln),gn=V?fn(vn):x("Map"),dn=V?fn(hn):x("WeakMap"),bn=V?fn(yn):x("Set"),mn=x("WeakSet");function jn(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=n[r[u]];return e}function _n(n){for(var r={},t=nn(n),e=0,u=t.length;e<u;e++)r[n[t[e]]]=t[e];return r}function wn(n){var r=[];for(var t in n)D(n[t])&&r.push(t);return r.sort()}function An(n,r){return function(t){var e=arguments.length;if(r&&(t=Object(t)),e<2||null==t)return t;for(var u=1;u<e;u++)for(var o=arguments[u],i=n(o),a=i.length,f=0;f<a;f++){var c=i[f];r&&void 0!==t[c]||(t[c]=o[c])}return t}}var xn=An(an),Sn=An(nn),On=An(an,!0);function Mn(n){if(!_(n))return{};if(v)return v(n);var r=function(){};r.prototype=n;var t=new r;return r.prototype=null,t}function En(n){return _(n)?U(n)?n.slice():xn({},n):n}function Bn(n){return U(n)?n:[n]}function Nn(n){return tn.toPath(n)}function In(n,r){for(var t=r.length,e=0;e<t;e++){if(null==n)return;n=n[r[e]]}return t?n:void 0}function kn(n,r,t){var e=In(n,Nn(r));return w(e)?t:e}function Tn(n){return n}function Dn(n){return n=Sn({},n),function(r){return rn(r,n)}}function Rn(n){return n=Nn(n),function(r){return In(r,n)}}function Fn(n,r,t){if(void 0===r)return n;switch(null==t?3:t){case 1:return function(t){return n.call(r,t)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return function(){return n.apply(r,arguments)}}function Vn(n,r,t){return null==n?Tn:D(n)?Fn(n,r,t):_(n)&&!U(n)?Dn(n):Rn(n)}function Pn(n,r){return Vn(n,r,1/0)}function qn(n,r,t){return tn.iteratee!==Pn?tn.iteratee(n,r):Vn(n,r,t)}function Un(){}function Wn(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))}tn.toPath=Bn,tn.iteratee=Pn;var zn=Date.now||function(){return(new Date).getTime()};function Ln(n){var r=function(r){return n[r]},t="(?:"+nn(n).join("|")+")",e=RegExp(t),u=RegExp(t,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,r):n}}var Cn={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Kn=Ln(Cn),Jn=Ln(_n(Cn)),$n=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=0;function Zn(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var nr=j((function(n,r){var t=nr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a<o;a++)i[a]=r[a]===t?arguments[u++]:r[a];for(;u<arguments.length;)i.push(arguments[u++]);return Zn(n,e,this,this,i)};return e}));nr.placeholder=tn;var rr=j((function(n,r,t){if(!D(n))throw new TypeError("Bind must be called on a function");var e=j((function(u){return Zn(n,e,r,this,t.concat(u))}));return e})),tr=J(Y);function er(n,r,t,e){if(e=e||[],r||0===r){if(r<=0)return e.concat(n)}else r=1/0;for(var u=e.length,o=0,i=Y(n);o<i;o++){var a=n[o];if(tr(a)&&(U(a)||L(a)))if(r>1)er(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f<c;)e[u++]=a[f++];else t||(e[u++]=a)}return e}var ur=j((function(n,r){var t=(r=er(r,!1,!1)).length;if(t<1)throw new Error("bindAll must be passed function names");for(;t--;){var e=r[t];n[e]=rr(n[e],n)}return n}));var or=j((function(n,r,t){return setTimeout((function(){return n.apply(null,t)}),r)})),ir=nr(or,tn,1);function ar(n){return function(){return!n.apply(this,arguments)}}function fr(n,r){var t;return function(){return--n>0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var cr=nr(fr,2);function lr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o<i;o++)if(r(n[e=u[o]],e,n))return e}function sr(n){return function(r,t,e){t=qn(t,e);for(var u=Y(r),o=n>0?0:u-1;o>=0&&o<u;o+=n)if(t(r[o],o,r))return o;return-1}}var pr=sr(1),vr=sr(-1);function hr(n,r,t,e){for(var u=(t=qn(t,e,1))(r),o=0,i=Y(n);o<i;){var a=Math.floor((o+i)/2);t(n[a])<u?o=a+1:i=a}return o}function yr(n,r,t){return function(e,u,o){var a=0,f=Y(e);if("number"==typeof o)n>0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),C))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o<f;o+=n)if(e[o]===u)return o;return-1}}var gr=yr(1,pr,hr),dr=yr(-1,vr);function br(n,r,t){var e=(tr(n)?pr:lr)(n,r,t);if(void 0!==e&&-1!==e)return n[e]}function mr(n,r,t){var e,u;if(r=Fn(r,t),tr(n))for(e=0,u=n.length;e<u;e++)r(n[e],e,n);else{var o=nn(n);for(e=0,u=o.length;e<u;e++)r(n[o[e]],o[e],n)}return n}function jr(n,r,t){r=qn(r,t);for(var e=!tr(n)&&nn(n),u=(e||n).length,o=Array(u),i=0;i<u;i++){var a=e?e[i]:i;o[i]=r(n[a],a,n)}return o}function _r(n){var r=function(r,t,e,u){var o=!tr(r)&&nn(r),i=(o||r).length,a=n>0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a<i;a+=n){var f=o?o[a]:a;e=t(e,r[f],f,r)}return e};return function(n,t,e,u){var o=arguments.length>=3;return r(n,Fn(t,u,4),e,o)}}var wr=_r(1),Ar=_r(-1);function xr(n,r,t){var e=[];return r=qn(r,t),mr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Sr(n,r,t){r=qn(r,t);for(var e=!tr(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(!r(n[i],i,n))return!1}return!0}function Or(n,r,t){r=qn(r,t);for(var e=!tr(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(r(n[i],i,n))return!0}return!1}function Mr(n,r,t,e){return tr(n)||(n=jn(n)),("number"!=typeof t||e)&&(t=0),gr(n,r,t)>=0}var Er=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),jr(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Br(n,r){return jr(n,Rn(r))}function Nr(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=tr(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e>o&&(o=e);else r=qn(r,t),mr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Ir(n,r,t){if(null==r||t)return tr(n)||(n=jn(n)),n[Wn(n.length-1)];var e=tr(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i<r;i++){var a=Wn(i,o),f=e[i];e[i]=e[a],e[a]=f}return e.slice(0,r)}function kr(n,r){return function(t,e,u){var o=r?[[],[]]:{};return e=qn(e,u),mr(t,(function(r,u){var i=e(r,u,t);n(o,r,i)})),o}}var Tr=kr((function(n,r,t){W(n,t)?n[t].push(r):n[t]=[r]})),Dr=kr((function(n,r,t){n[t]=r})),Rr=kr((function(n,r,t){W(n,t)?n[t]++:n[t]=1})),Fr=kr((function(n,r,t){n[t?0:1].push(r)}),!0),Vr=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function Pr(n,r,t){return r in t}var qr=j((function(n,r){var t={},e=r[0];if(null==n)return t;D(e)?(r.length>1&&(e=Fn(e,r[1])),r=an(n)):(e=Pr,r=er(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u<o;u++){var i=r[u],a=n[i];e(a,i,n)&&(t[i]=a)}return t})),Ur=j((function(n,r){var t,e=r[0];return D(e)?(e=ar(e),r.length>1&&(t=r[1])):(r=jr(er(r,!1,!1),String),e=function(n,t){return!Mr(r,t)}),qr(n,e,t)}));function Wr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function zr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:Wr(n,n.length-r)}function Lr(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=er(r,!0,!0),xr(n,(function(n){return!Mr(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);i<a;i++){var f=n[i],c=t?t(f,i,n):f;r&&!t?(i&&o===c||u.push(f),o=c):t?Mr(o,c)||(o.push(c),u.push(f)):Mr(u,f)||u.push(f)}return u}var $r=j((function(n){return Jr(er(n,!0,!0))}));function Gr(n){for(var r=n&&Nr(n,Y).length||0,t=Array(r),e=0;e<r;e++)t[e]=Br(n,e);return t}var Hr=j(Gr);function Qr(n,r){return n._chain?tn(r).chain():r}function Xr(n){return mr(wn(n),(function(r){var t=tn[r]=n[r];tn.prototype[r]=function(){var n=[this._wrapped];return o.apply(n,arguments),Qr(this,t.apply(tn,n))}})),tn}mr(["pop","push","reverse","shift","sort","splice","unshift"],(function(n){var r=t[n];tn.prototype[n]=function(){var t=this._wrapped;return null!=t&&(r.apply(t,arguments),"shift"!==n&&"splice"!==n||0!==t.length||delete t[0]),Qr(this,t)}})),mr(["concat","join","slice"],(function(n){var r=t[n];tn.prototype[n]=function(){var n=this._wrapped;return null!=n&&(n=r.apply(n,arguments)),Qr(this,n)}}));var Yr=Xr({__proto__:null,VERSION:n,restArguments:j,isObject:_,isNull:function(n){return null===n},isUndefined:w,isBoolean:A,isElement:function(n){return!(!n||1!==n.nodeType)},isString:S,isNumber:O,isDate:M,isRegExp:E,isError:B,isSymbol:N,isArrayBuffer:I,isDataView:q,isArray:U,isFunction:D,isArguments:L,isFinite:function(n){return!N(n)&&g(n)&&!isNaN(parseFloat(n))},isNaN:C,isTypedArray:X,isEmpty:function(n){if(null==n)return!0;var r=Y(n);return"number"==typeof r&&(U(n)||S(n)||L(n))?0===r:0===Y(nn(n))},isMatch:rn,isEqual:function(n,r){return on(n,r)},isMap:gn,isWeakMap:dn,isSet:bn,isWeakSet:mn,keys:nn,allKeys:an,values:jn,pairs:function(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=[r[u],n[r[u]]];return e},invert:_n,functions:wn,methods:wn,extend:xn,extendOwn:Sn,assign:Sn,defaults:On,create:function(n,r){var t=Mn(n);return r&&Sn(t,r),t},clone:En,tap:function(n,r){return r(n),n},get:kn,has:function(n,r){for(var t=(r=Nn(r)).length,e=0;e<t;e++){var u=r[e];if(!W(n,u))return!1;n=n[u]}return!!t},mapObject:function(n,r,t){r=qn(r,t);for(var e=nn(n),u=e.length,o={},i=0;i<u;i++){var a=e[i];o[a]=r(n[a],a,n)}return o},identity:Tn,constant:K,noop:Un,toPath:Bn,property:Rn,propertyOf:function(n){return null==n?Un:function(r){return kn(n,r)}},matcher:Dn,matches:Dn,times:function(n,r,t){var e=Array(Math.max(0,n));r=Fn(r,t,1);for(var u=0;u<n;u++)e[u]=r(u);return e},random:Wn,now:zn,escape:Kn,unescape:Jn,templateSettings:$n,template:function(n,r,t){!r&&t&&(r=t),r=On({},r,tn.templateSettings);var e,u=RegExp([(r.escape||Gn).source,(r.interpolate||Gn).source,(r.evaluate||Gn).source].join("|")+"|$","g"),o=0,i="__p+='";n.replace(u,(function(r,t,e,u,a){return i+=n.slice(o,a).replace(Qn,Xn),o=a+r.length,t?i+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":u&&(i+="';\n"+u+"\n__p+='"),r})),i+="';\n",r.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{e=new Function(r.variable||"obj","_",i)}catch(n){throw n.source=i,n}var a=function(n){return e.call(this,n,tn)},f=r.variable||"obj";return a.source="function("+f+"){\n"+i+"}",a},result:function(n,r,t){var e=(r=Nn(r)).length;if(!e)return D(t)?t.call(n):t;for(var u=0;u<e;u++){var o=null==n?void 0:n[r[u]];void 0===o&&(o=t,u=e),n=D(o)?o.call(n):o}return n},uniqueId:function(n){var r=++Yn+"";return n?n+r:r},chain:function(n){var r=tn(n);return r._chain=!0,r},iteratee:Pn,partial:nr,bind:rr,bindAll:ur,memoize:function(n,r){var t=function(e){var u=t.cache,o=""+(r?r.apply(this,arguments):e);return W(u,o)||(u[o]=n.apply(this,arguments)),u[o]};return t.cache={},t},delay:or,defer:ir,throttle:function(n,r,t){var e,u,o,i,a=0;t||(t={});var f=function(){a=!1===t.leading?0:zn(),e=null,i=n.apply(u,o),e||(u=o=null)},c=function(){var c=zn();a||!1!==t.leading||(a=c);var l=r-(c-a);return u=this,o=arguments,l<=0||l>r?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o=function(r,t){e=null,t&&(u=n.apply(r,t))},i=j((function(i){if(e&&clearTimeout(e),t){var a=!e;e=setTimeout(o,r),a&&(u=n.apply(this,i))}else e=or(o,r,this,i);return u}));return i.cancel=function(){clearTimeout(e),e=null},i},wrap:function(n,r){return nr(r,n)},negate:ar,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:fr,once:cr,findKey:lr,findIndex:pr,findLastIndex:vr,sortedIndex:hr,indexOf:gr,lastIndexOf:dr,find:br,detect:br,findWhere:function(n,r){return br(n,Dn(r))},each:mr,forEach:mr,map:jr,collect:jr,reduce:wr,foldl:wr,inject:wr,reduceRight:Ar,foldr:Ar,filter:xr,select:xr,reject:function(n,r,t){return xr(n,ar(qn(r)),t)},every:Sr,all:Sr,some:Or,any:Or,contains:Mr,includes:Mr,include:Mr,invoke:Er,pluck:Br,where:function(n,r){return xr(n,Dn(r))},max:Nr,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=tr(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e<o&&(o=e);else r=qn(r,t),mr(n,(function(n,t,e){((u=r(n,t,e))<i||u===1/0&&o===1/0)&&(o=n,i=u)}));return o},shuffle:function(n){return Ir(n,1/0)},sample:Ir,sortBy:function(n,r,t){var e=0;return r=qn(r,t),Br(jr(n,(function(n,t,u){return{value:n,index:e++,criteria:r(n,t,u)}})).sort((function(n,r){var t=n.criteria,e=r.criteria;if(t!==e){if(t>e||void 0===t)return 1;if(t<e||void 0===e)return-1}return n.index-r.index})),"value")},groupBy:Tr,indexBy:Dr,countBy:Rr,partition:Fr,toArray:function(n){return n?U(n)?i.call(n):S(n)?n.match(Vr):tr(n)?jr(n,Tn):jn(n):[]},size:function(n){return null==n?0:tr(n)?n.length:nn(n).length},pick:qr,omit:Ur,first:zr,head:zr,take:zr,initial:Wr,last:function(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[n.length-1]:Lr(n,Math.max(0,n.length-r))},rest:Lr,tail:Lr,drop:Lr,compact:function(n){return xr(n,Boolean)},flatten:function(n,r){return er(n,r,!1)},without:Kr,uniq:Jr,unique:Jr,union:$r,intersection:function(n){for(var r=[],t=arguments.length,e=0,u=Y(n);e<u;e++){var o=n[e];if(!Mr(r,o)){var i;for(i=1;i<t&&Mr(arguments[i],o);i++);i===t&&r.push(o)}}return r},difference:Cr,unzip:Gr,transpose:Gr,zip:Hr,object:function(n,r){for(var t={},e=0,u=Y(n);e<u;e++)r?t[n[e]]=r[e]:t[n[e][0]]=n[e][1];return t},range:function(n,r,t){null==r&&(r=n||0,n=0),t||(t=r<n?-1:1);for(var e=Math.max(Math.ceil((r-n)/t),0),u=Array(e),o=0;o<e;o++,n+=t)u[o]=n;return u},chunk:function(n,r){if(null==r||r<1)return[];for(var t=[],e=0,u=n.length;e<u;)t.push(i.call(n,e,e+=r));return t},mixin:Xr,default:tn});return Yr._=Yr,Yr}));
    \ No newline at end of file
    +var n="1.13.1",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u<t;u++)e[u]=arguments[u+r];switch(r){case 0:return n.call(this,e);case 1:return n.call(this,arguments[0],e);case 2:return n.call(this,arguments[0],arguments[1],e)}var o=Array(r+1);for(u=0;u<r;u++)o[u]=arguments[u];return o[r]=e,n.apply(this,o)}}function _(n){var r=typeof n;return"function"===r||"object"===r&&!!n}function w(n){return void 0===n}function A(n){return!0===n||!1===n||"[object Boolean]"===a.call(n)}function x(n){var r="[object "+n+"]";return function(n){return a.call(n)===r}}var S=x("String"),O=x("Number"),M=x("Date"),E=x("RegExp"),B=x("Error"),N=x("Symbol"),I=x("ArrayBuffer"),T=x("Function"),k=r.document&&r.document.childNodes;"function"!=typeof/./&&"object"!=typeof Int8Array&&"function"!=typeof k&&(T=function(n){return"function"==typeof n||!1});var D=T,R=x("Object"),F=l&&R(new DataView(new ArrayBuffer(8))),V="undefined"!=typeof Map&&R(new Map),P=x("DataView");var q=F?function(n){return null!=n&&D(n.getInt8)&&I(n.buffer)}:P,U=s||x("Array");function W(n,r){return null!=n&&f.call(n,r)}var z=x("Arguments");!function(){z(arguments)||(z=function(n){return W(n,"callee")})}();var L=z;function $(n){return O(n)&&y(n)}function C(n){return function(){return n}}function K(n){return function(r){var t=n(r);return"number"==typeof t&&t>=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J("byteLength"),H=K(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e<t;++e)r[n[e]]=!0;return{contains:function(n){return r[n]},push:function(t){return r[t]=!0,n.push(t)}}}(r);var t=b.length,u=n.constructor,o=D(u)&&u.prototype||e,i="constructor";for(W(n,i)&&!r.contains(i)&&r.push(i);t--;)(i=b[t])in n&&n[i]!==o[i]&&!r.contains(i)&&r.push(i)}function nn(n){if(!_(n))return[];if(p)return p(n);var r=[];for(var t in n)W(n,t)&&r.push(t);return g&&Z(n,r),r}function rn(n,r){var t=nn(r),e=t.length;if(null==n)return!e;for(var u=Object(n),o=0;o<e;o++){var i=t[o];if(r[i]!==u[i]||!(i in u))return!1}return!0}function tn(n){return n instanceof tn?n:this instanceof tn?void(this._wrapped=n):new tn(n)}function en(n){return new Uint8Array(n.buffer||n,n.byteOffset||0,G(n))}tn.VERSION=n,tn.prototype.value=function(){return this._wrapped},tn.prototype.valueOf=tn.prototype.toJSON=tn.prototype.value,tn.prototype.toString=function(){return String(this._wrapped)};var un="[object DataView]";function on(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(null==n||null==r)return!1;if(n!=n)return r!=r;var o=typeof n;return("function"===o||"object"===o||"object"==typeof r)&&function n(r,t,e,o){r instanceof tn&&(r=r._wrapped);t instanceof tn&&(t=t._wrapped);var i=a.call(r);if(i!==a.call(t))return!1;if(F&&"[object Object]"==i&&q(r)){if(!q(t))return!1;i=un}switch(i){case"[object RegExp]":case"[object String]":return""+r==""+t;case"[object Number]":return+r!=+r?+t!=+t:0==+r?1/+r==1/t:+r==+t;case"[object Date]":case"[object Boolean]":return+r==+t;case"[object Symbol]":return u.valueOf.call(r)===u.valueOf.call(t);case"[object ArrayBuffer]":case un:return n(en(r),en(t),e,o)}var f="[object Array]"===i;if(!f&&X(r)){if(G(r)!==G(t))return!1;if(r.buffer===t.buffer&&r.byteOffset===t.byteOffset)return!0;f=!0}if(!f){if("object"!=typeof r||"object"!=typeof t)return!1;var c=r.constructor,l=t.constructor;if(c!==l&&!(D(c)&&c instanceof c&&D(l)&&l instanceof l)&&"constructor"in r&&"constructor"in t)return!1}o=o||[];var s=(e=e||[]).length;for(;s--;)if(e[s]===r)return o[s]===t;if(e.push(r),o.push(t),f){if((s=r.length)!==t.length)return!1;for(;s--;)if(!on(r[s],t[s],e,o))return!1}else{var p,v=nn(r);if(s=v.length,nn(t).length!==s)return!1;for(;s--;)if(p=v[s],!W(t,p)||!on(r[p],t[p],e,o))return!1}return e.pop(),o.pop(),!0}(n,r,t,e)}function an(n){if(!_(n))return[];var r=[];for(var t in n)r.push(t);return g&&Z(n,r),r}function fn(n){var r=Y(n);return function(t){if(null==t)return!1;var e=an(t);if(Y(e))return!1;for(var u=0;u<r;u++)if(!D(t[n[u]]))return!1;return n!==hn||!D(t[cn])}}var cn="forEach",ln="has",sn=["clear","delete"],pn=["get",ln,"set"],vn=sn.concat(cn,pn),hn=sn.concat(pn),yn=["add"].concat(sn,cn,ln),dn=V?fn(vn):x("Map"),gn=V?fn(hn):x("WeakMap"),bn=V?fn(yn):x("Set"),mn=x("WeakSet");function jn(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=n[r[u]];return e}function _n(n){for(var r={},t=nn(n),e=0,u=t.length;e<u;e++)r[n[t[e]]]=t[e];return r}function wn(n){var r=[];for(var t in n)D(n[t])&&r.push(t);return r.sort()}function An(n,r){return function(t){var e=arguments.length;if(r&&(t=Object(t)),e<2||null==t)return t;for(var u=1;u<e;u++)for(var o=arguments[u],i=n(o),a=i.length,f=0;f<a;f++){var c=i[f];r&&void 0!==t[c]||(t[c]=o[c])}return t}}var xn=An(an),Sn=An(nn),On=An(an,!0);function Mn(n){if(!_(n))return{};if(v)return v(n);var r=function(){};r.prototype=n;var t=new r;return r.prototype=null,t}function En(n){return _(n)?U(n)?n.slice():xn({},n):n}function Bn(n){return U(n)?n:[n]}function Nn(n){return tn.toPath(n)}function In(n,r){for(var t=r.length,e=0;e<t;e++){if(null==n)return;n=n[r[e]]}return t?n:void 0}function Tn(n,r,t){var e=In(n,Nn(r));return w(e)?t:e}function kn(n){return n}function Dn(n){return n=Sn({},n),function(r){return rn(r,n)}}function Rn(n){return n=Nn(n),function(r){return In(r,n)}}function Fn(n,r,t){if(void 0===r)return n;switch(null==t?3:t){case 1:return function(t){return n.call(r,t)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return function(){return n.apply(r,arguments)}}function Vn(n,r,t){return null==n?kn:D(n)?Fn(n,r,t):_(n)&&!U(n)?Dn(n):Rn(n)}function Pn(n,r){return Vn(n,r,1/0)}function qn(n,r,t){return tn.iteratee!==Pn?tn.iteratee(n,r):Vn(n,r,t)}function Un(){}function Wn(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))}tn.toPath=Bn,tn.iteratee=Pn;var zn=Date.now||function(){return(new Date).getTime()};function Ln(n){var r=function(r){return n[r]},t="(?:"+nn(n).join("|")+")",e=RegExp(t),u=RegExp(t,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,r):n}}var $n={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=/^\s*(\w|\$)+\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a<o;a++)i[a]=r[a]===t?arguments[u++]:r[a];for(;u<arguments.length;)i.push(arguments[u++]);return nr(n,e,this,this,i)};return e}));rr.placeholder=tn;var tr=j((function(n,r,t){if(!D(n))throw new TypeError("Bind must be called on a function");var e=j((function(u){return nr(n,e,r,this,t.concat(u))}));return e})),er=K(Y);function ur(n,r,t,e){if(e=e||[],r||0===r){if(r<=0)return e.concat(n)}else r=1/0;for(var u=e.length,o=0,i=Y(n);o<i;o++){var a=n[o];if(er(a)&&(U(a)||L(a)))if(r>1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f<c;)e[u++]=a[f++];else t||(e[u++]=a)}return e}var or=j((function(n,r){var t=(r=ur(r,!1,!1)).length;if(t<1)throw new Error("bindAll must be passed function names");for(;t--;){var e=r[t];n[e]=tr(n[e],n)}return n}));var ir=j((function(n,r,t){return setTimeout((function(){return n.apply(null,t)}),r)})),ar=rr(ir,tn,1);function fr(n){return function(){return!n.apply(this,arguments)}}function cr(n,r){var t;return function(){return--n>0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o<i;o++)if(r(n[e=u[o]],e,n))return e}function pr(n){return function(r,t,e){t=qn(t,e);for(var u=Y(r),o=n>0?0:u-1;o>=0&&o<u;o+=n)if(t(r[o],o,r))return o;return-1}}var vr=pr(1),hr=pr(-1);function yr(n,r,t,e){for(var u=(t=qn(t,e,1))(r),o=0,i=Y(n);o<i;){var a=Math.floor((o+i)/2);t(n[a])<u?o=a+1:i=a}return o}function dr(n,r,t){return function(e,u,o){var a=0,f=Y(e);if("number"==typeof o)n>0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o<f;o+=n)if(e[o]===u)return o;return-1}}var gr=dr(1,vr,yr),br=dr(-1,hr);function mr(n,r,t){var e=(er(n)?vr:sr)(n,r,t);if(void 0!==e&&-1!==e)return n[e]}function jr(n,r,t){var e,u;if(r=Fn(r,t),er(n))for(e=0,u=n.length;e<u;e++)r(n[e],e,n);else{var o=nn(n);for(e=0,u=o.length;e<u;e++)r(n[o[e]],o[e],n)}return n}function _r(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=Array(u),i=0;i<u;i++){var a=e?e[i]:i;o[i]=r(n[a],a,n)}return o}function wr(n){var r=function(r,t,e,u){var o=!er(r)&&nn(r),i=(o||r).length,a=n>0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a<i;a+=n){var f=o?o[a]:a;e=t(e,r[f],f,r)}return e};return function(n,t,e,u){var o=arguments.length>=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(!r(n[i],i,n))return!1}return!0}function Mr(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(r(n[i],i,n))return!0}return!1}function Er(n,r,t,e){return er(n)||(n=jn(n)),("number"!=typeof t||e)&&(t=0),gr(n,r,t)>=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e>o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i<r;i++){var a=Wn(i,o),f=e[i];e[i]=e[a],e[a]=f}return e.slice(0,r)}function kr(n,r){return function(t,e,u){var o=r?[[],[]]:{};return e=qn(e,u),jr(t,(function(r,u){var i=e(r,u,t);n(o,r,i)})),o}}var Dr=kr((function(n,r,t){W(n,t)?n[t].push(r):n[t]=[r]})),Rr=kr((function(n,r,t){n[t]=r})),Fr=kr((function(n,r,t){W(n,t)?n[t]++:n[t]=1})),Vr=kr((function(n,r,t){n[t?0:1].push(r)}),!0),Pr=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function qr(n,r,t){return r in t}var Ur=j((function(n,r){var t={},e=r[0];if(null==n)return t;D(e)?(r.length>1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u<o;u++){var i=r[u],a=n[i];e(a,i,n)&&(t[i]=a)}return t})),Wr=j((function(n,r){var t,e=r[0];return D(e)?(e=fr(e),r.length>1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);i<a;i++){var f=n[i],c=t?t(f,i,n):f;r&&!t?(i&&o===c||u.push(f),o=c):t?Er(o,c)||(o.push(c),u.push(f)):Er(u,f)||u.push(f)}return u}var Gr=j((function(n){return Jr(ur(n,!0,!0))}));function Hr(n){for(var r=n&&Ir(n,Y).length||0,t=Array(r),e=0;e<r;e++)t[e]=Nr(n,e);return t}var Qr=j(Hr);function Xr(n,r){return n._chain?tn(r).chain():r}function Yr(n){return jr(wn(n),(function(r){var t=tn[r]=n[r];tn.prototype[r]=function(){var n=[this._wrapped];return o.apply(n,arguments),Xr(this,t.apply(tn,n))}})),tn}jr(["pop","push","reverse","shift","sort","splice","unshift"],(function(n){var r=t[n];tn.prototype[n]=function(){var t=this._wrapped;return null!=t&&(r.apply(t,arguments),"shift"!==n&&"splice"!==n||0!==t.length||delete t[0]),Xr(this,t)}})),jr(["concat","join","slice"],(function(n){var r=t[n];tn.prototype[n]=function(){var n=this._wrapped;return null!=n&&(n=r.apply(n,arguments)),Xr(this,n)}}));var Zr=Yr({__proto__:null,VERSION:n,restArguments:j,isObject:_,isNull:function(n){return null===n},isUndefined:w,isBoolean:A,isElement:function(n){return!(!n||1!==n.nodeType)},isString:S,isNumber:O,isDate:M,isRegExp:E,isError:B,isSymbol:N,isArrayBuffer:I,isDataView:q,isArray:U,isFunction:D,isArguments:L,isFinite:function(n){return!N(n)&&d(n)&&!isNaN(parseFloat(n))},isNaN:$,isTypedArray:X,isEmpty:function(n){if(null==n)return!0;var r=Y(n);return"number"==typeof r&&(U(n)||S(n)||L(n))?0===r:0===Y(nn(n))},isMatch:rn,isEqual:function(n,r){return on(n,r)},isMap:dn,isWeakMap:gn,isSet:bn,isWeakSet:mn,keys:nn,allKeys:an,values:jn,pairs:function(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=[r[u],n[r[u]]];return e},invert:_n,functions:wn,methods:wn,extend:xn,extendOwn:Sn,assign:Sn,defaults:On,create:function(n,r){var t=Mn(n);return r&&Sn(t,r),t},clone:En,tap:function(n,r){return r(n),n},get:Tn,has:function(n,r){for(var t=(r=Nn(r)).length,e=0;e<t;e++){var u=r[e];if(!W(n,u))return!1;n=n[u]}return!!t},mapObject:function(n,r,t){r=qn(r,t);for(var e=nn(n),u=e.length,o={},i=0;i<u;i++){var a=e[i];o[a]=r(n[a],a,n)}return o},identity:kn,constant:C,noop:Un,toPath:Bn,property:Rn,propertyOf:function(n){return null==n?Un:function(r){return Tn(n,r)}},matcher:Dn,matches:Dn,times:function(n,r,t){var e=Array(Math.max(0,n));r=Fn(r,t,1);for(var u=0;u<n;u++)e[u]=r(u);return e},random:Wn,now:zn,escape:Cn,unescape:Kn,templateSettings:Jn,template:function(n,r,t){!r&&t&&(r=t),r=On({},r,tn.templateSettings);var e=RegExp([(r.escape||Gn).source,(r.interpolate||Gn).source,(r.evaluate||Gn).source].join("|")+"|$","g"),u=0,o="__p+='";n.replace(e,(function(r,t,e,i,a){return o+=n.slice(u,a).replace(Qn,Xn),u=a+r.length,t?o+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?o+="'+\n((__t=("+e+"))==null?'':__t)+\n'":i&&(o+="';\n"+i+"\n__p+='"),r})),o+="';\n";var i,a=r.variable;if(a){if(!Yn.test(a))throw new Error("variable is not a bare identifier: "+a)}else o="with(obj||{}){\n"+o+"}\n",a="obj";o="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{i=new Function(a,"_",o)}catch(n){throw n.source=o,n}var f=function(n){return i.call(this,n,tn)};return f.source="function("+a+"){\n"+o+"}",f},result:function(n,r,t){var e=(r=Nn(r)).length;if(!e)return D(t)?t.call(n):t;for(var u=0;u<e;u++){var o=null==n?void 0:n[r[u]];void 0===o&&(o=t,u=e),n=D(o)?o.call(n):o}return n},uniqueId:function(n){var r=++Zn+"";return n?n+r:r},chain:function(n){var r=tn(n);return r._chain=!0,r},iteratee:Pn,partial:rr,bind:tr,bindAll:or,memoize:function(n,r){var t=function(e){var u=t.cache,o=""+(r?r.apply(this,arguments):e);return W(u,o)||(u[o]=n.apply(this,arguments)),u[o]};return t.cache={},t},delay:ir,defer:ar,throttle:function(n,r,t){var e,u,o,i,a=0;t||(t={});var f=function(){a=!1===t.leading?0:zn(),e=null,i=n.apply(u,o),e||(u=o=null)},c=function(){var c=zn();a||!1!==t.leading||(a=c);var l=r-(c-a);return u=this,o=arguments,l<=0||l>r?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e<o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))<i||u===1/0&&o===1/0)&&(o=n,i=u)}));return o},shuffle:function(n){return Tr(n,1/0)},sample:Tr,sortBy:function(n,r,t){var e=0;return r=qn(r,t),Nr(_r(n,(function(n,t,u){return{value:n,index:e++,criteria:r(n,t,u)}})).sort((function(n,r){var t=n.criteria,e=r.criteria;if(t!==e){if(t>e||void 0===t)return 1;if(t<e||void 0===e)return-1}return n.index-r.index})),"value")},groupBy:Dr,indexBy:Rr,countBy:Fr,partition:Vr,toArray:function(n){return n?U(n)?i.call(n):S(n)?n.match(Pr):er(n)?_r(n,kn):jn(n):[]},size:function(n){return null==n?0:er(n)?n.length:nn(n).length},pick:Ur,omit:Wr,first:Lr,head:Lr,take:Lr,initial:zr,last:function(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[n.length-1]:$r(n,Math.max(0,n.length-r))},rest:$r,tail:$r,drop:$r,compact:function(n){return Sr(n,Boolean)},flatten:function(n,r){return ur(n,r,!1)},without:Kr,uniq:Jr,unique:Jr,union:Gr,intersection:function(n){for(var r=[],t=arguments.length,e=0,u=Y(n);e<u;e++){var o=n[e];if(!Er(r,o)){var i;for(i=1;i<t&&Er(arguments[i],o);i++);i===t&&r.push(o)}}return r},difference:Cr,unzip:Hr,transpose:Hr,zip:Qr,object:function(n,r){for(var t={},e=0,u=Y(n);e<u;e++)r?t[n[e]]=r[e]:t[n[e][0]]=n[e][1];return t},range:function(n,r,t){null==r&&(r=n||0,n=0),t||(t=r<n?-1:1);for(var e=Math.max(Math.ceil((r-n)/t),0),u=Array(e),o=0;o<e;o++,n+=t)u[o]=n;return u},chunk:function(n,r){if(null==r||r<1)return[];for(var t=[],e=0,u=n.length;e<u;)t.push(i.call(n,e,e+=r));return t},mixin:Yr,default:tn});return Zr._=Zr,Zr}));
    \ No newline at end of file
    
  • doc/source/conf.py+2 2 modified
    @@ -46,9 +46,9 @@
     # other places throughout the built documents.
     #
     # The short X.Y version.
    -version = '1.2.6'
    +version = '1.2.7'
     # The full version, including alpha/beta/rc tags.
    -release = '1.2.6'
    +release = '1.2.7'
     
     
     # There are two options for replacing |today|: either, you set today to some
    
  • doc/source/index.rst+1 1 modified
    @@ -4,7 +4,7 @@
     CVXOPT User's Guide
     ####################
     
    -**Release 1.2.6 -- February 18, 2021**
    +**Release 1.2.7 -- September 20, 2021**
     
     **Martin Andersen, Joachim Dahl, and Lieven Vandenberghe**
     
    
  • src/C/cholmod.c+21 16 modified
    @@ -26,6 +26,11 @@
     #include "cholmod.h"
     #include "complex.h"
     
    +const char strCFDL[] = "CHOLMOD FACTOR D L";
    +const char strCFDU[] = "CHOLMOD FACTOR D U";
    +const char strCFZL[] = "CHOLMOD FACTOR Z L";
    +const char strCFZU[] = "CHOLMOD FACTOR Z U";
    +
     #ifndef _MSC_VER
     typedef double complex complex_t;
     #else
    @@ -315,14 +320,14 @@ static PyObject* symbolic(PyObject *self, PyObject *args,
         }
     #if PY_MAJOR_VERSION >= 3
         return (PyObject *) PyCapsule_New((void *) L, SP_ID(A)==DOUBLE ?
    -        (uplo == 'L' ?  "CHOLMOD FACTOR D L" : "CHOLMOD FACTOR D U") :
    -        (uplo == 'L' ?  "CHOLMOD FACTOR Z L" : "CHOLMOD FACTOR Z U"),
    +        (uplo == 'L' ?  strCFDL : strCFDU) :
    +        (uplo == 'L' ?  strCFZL : strCFZU),
             (PyCapsule_Destructor) &cvxopt_free_cholmod_factor);
     #else
         return (PyObject *) PyCObject_FromVoidPtrAndDesc((void *) L,
             SP_ID(A)==DOUBLE ?
    -        (uplo == 'L' ?  "CHOLMOD FACTOR D L" : "CHOLMOD FACTOR D U") :
    -        (uplo == 'L' ?  "CHOLMOD FACTOR Z L" : "CHOLMOD FACTOR Z U"),
    +        (uplo == 'L' ?  strCFDL : strCFDU) :
    +        (uplo == 'L' ?  strCFZL : strCFZU),
     	cvxopt_free_cholmod_factor);
     #endif
     }
    @@ -385,16 +390,16 @@ static PyObject* numeric(PyObject *self, PyObject *args)
         if (!descr) PY_ERR_TYPE("F is not a CHOLMOD factor");
     #endif
         if (SP_ID(A) == DOUBLE){
    -        if (!strcmp(descr, "CHOLMOD FACTOR D L"))
    +        if (!strcmp(descr, strCFDL))
     	    uplo = 'L';
    -	else if (!strcmp(descr, "CHOLMOD FACTOR D U"))
    +	else if (!strcmp(descr, strCFDU))
     	    uplo = 'U';
             else
     	    PY_ERR_TYPE("F is not the CHOLMOD factor of a 'd' matrix");
         } else {
    -        if (!strcmp(descr, "CHOLMOD FACTOR Z L"))
    +        if (!strcmp(descr, strCFZL))
     	    uplo = 'L';
    -	else if (!strcmp(descr, "CHOLMOD FACTOR Z U"))
    +	else if (!strcmp(descr, strCFZU))
     	    uplo = 'U';
             else
     	    PY_ERR_TYPE("F is not the CHOLMOD factor of a 'z' matrix");
    @@ -494,13 +499,13 @@ static PyObject* solve(PyObject *self, PyObject *args, PyObject *kwrds)
     #if PY_MAJOR_VERSION >= 3
         if (!PyCapsule_CheckExact(F) || !(descr = PyCapsule_GetName(F)))
             err_CO("F");
    -    if (strncmp(descr, "CHOLMOD FACTOR", 14))
    +    if (!(strcmp(descr, strCFDL) == 0 || strcmp(descr, strCFDU) == 0 || strcmp(descr, strCFZL) == 0 || strcmp(descr, strCFZU) == 0))
             PY_ERR_TYPE("F is not a CHOLMOD factor");
         cholmod_factor *L = (cholmod_factor *) PyCapsule_GetPointer(F, descr);
     #else
         if (!PyCObject_Check(F)) err_CO("F");
         descr = PyCObject_GetDesc(F);
    -    if (!descr || strncmp(descr, "CHOLMOD FACTOR", 14))
    +    if (!descr || !(strcmp(descr, strCFDL) == 0 || strcmp(descr, strCFDU) == 0 || strcmp(descr, strCFZL) == 0 || strcmp(descr, strCFZU) == 0))
             PY_ERR_TYPE("F is not a CHOLMOD factor");
         cholmod_factor *L = (cholmod_factor *) PyCObject_AsVoidPtr(F);
     #endif
    @@ -600,13 +605,13 @@ static PyObject* spsolve(PyObject *self, PyObject *args,
     #if PY_MAJOR_VERSION >= 3
         if (!PyCapsule_CheckExact(F) || !(descr = PyCapsule_GetName(F)))
             err_CO("F");
    -    if (strncmp(descr, "CHOLMOD FACTOR", 14))
    +    if (!(strcmp(descr, strCFDL) == 0 || strcmp(descr, strCFDU) == 0 || strcmp(descr, strCFZL) == 0 || strcmp(descr, strCFZU) == 0))
             PY_ERR_TYPE("F is not a CHOLMOD factor");
         L = (cholmod_factor *) PyCapsule_GetPointer(F, descr);
     #else
         if (!PyCObject_Check(F)) err_CO("F");
         descr = PyCObject_GetDesc(F);
    -    if (!descr || strncmp(descr, "CHOLMOD FACTOR", 14))
    +    if (!descr || !(strcmp(descr, strCFDL) == 0 || strcmp(descr, strCFDU) == 0 || strcmp(descr, strCFZL) == 0 || strcmp(descr, strCFZU) == 0))
             PY_ERR_TYPE("F is not a CHOLMOD factor");
         L = (cholmod_factor *) PyCObject_AsVoidPtr(F);
     #endif
    @@ -978,13 +983,13 @@ static PyObject* diag(PyObject *self, PyObject *args)
     #if PY_MAJOR_VERSION >= 3
         if (!PyCapsule_CheckExact(F) || !(descr = PyCapsule_GetName(F)))
             err_CO("F");
    -    if (strncmp(descr, "CHOLMOD FACTOR", 14))
    +    if (!(strcmp(descr, strCFDL) == 0 || strcmp(descr, strCFDU) == 0 || strcmp(descr, strCFZL) == 0 || strcmp(descr, strCFZU) == 0))
             PY_ERR_TYPE("F is not a CHOLMOD factor");
         L = (cholmod_factor *) PyCapsule_GetPointer(F, descr);
     #else
         if (!PyCObject_Check(F)) err_CO("F");
         descr = PyCObject_GetDesc(F);
    -    if (!descr || strncmp(descr, "CHOLMOD FACTOR", 14))
    +    if (!descr || !(strcmp(descr, strCFDL) == 0 || strcmp(descr, strCFDU) == 0 || strcmp(descr, strCFZL) == 0 || strcmp(descr, strCFZU) == 0))
             PY_ERR_TYPE("F is not a CHOLMOD factor");
         L = (cholmod_factor *) PyCObject_AsVoidPtr(F);
     #endif
    @@ -1036,13 +1041,13 @@ static PyObject* getfactor(PyObject *self, PyObject *args)
     #if PY_MAJOR_VERSION >= 3
         if (!PyCapsule_CheckExact(F) || !(descr = PyCapsule_GetName(F)))
             err_CO("F");
    -    if (strncmp(descr, "CHOLMOD FACTOR", 14))
    +    if (!(strcmp(descr, strCFDL) == 0 || strcmp(descr, strCFDU) == 0 || strcmp(descr, strCFZL) == 0 || strcmp(descr, strCFZU) == 0))
             PY_ERR_TYPE("F is not a CHOLMOD factor");
         Lf = (cholmod_factor *) PyCapsule_GetPointer(F, descr);
     #else
         if (!PyCObject_Check(F)) err_CO("F");
         descr = PyCObject_GetDesc(F);
    -    if (!descr || strncmp(descr, "CHOLMOD FACTOR", 14))
    +    if (!descr || !(strcmp(descr, strCFDL) == 0 || strcmp(descr, strCFDU) == 0 || strcmp(descr, strCFZL) == 0 || strcmp(descr, strCFZU) == 0))
             PY_ERR_TYPE("F is not a CHOLMOD factor");
         Lf = (cholmod_factor *) PyCObject_AsVoidPtr(F);
     #endif
    

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

7

News mentions

0

No linked articles in our index yet.