UNPKG

qminer

Version:

A C++ based data analytics platform for processing large-scale real-time streams containing structured and unstructured data

1,767 lines 71.8 kB
<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3">
  <meta charset="utf-8">
  <title>Module: la</title>
  <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
  <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
  <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
    <div id="jsdoc-navbar-container">
      <div id="jsdoc-navbar-content">
        <a href="index.html" class="jsdoc-navbar-package-name">QMiner JavaScript API v9.4.0</a>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <div id="jsdoc-content-container">
        <div id="jsdoc-main" role="main">
          <header class="page-header">
            <div class="symbol-detail-labels"><span class="label label-kind">module</span></div>
            <h1><small></small><span class="symbol-name">la</span></h1>
            <p class="source-link">Source: <a href="ladoc.js.html#source-line-8">ladoc.<wbr>js:8</a></p>
            <div class="symbol-description">
              <p>Linear algebra module.</p>
            </div>
            <section>
              <h2>
                Example
              </h2>
              <div>
                <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a random matrix
var mat &#x3D; new la.Matrix({ rows: 10, cols: 5, random: true });
// create a vector
var vec &#x3D; new la.Vector([1, 2, 3, 0, -1]);
// multiply the matrix and vector
var vec2 &#x3D; mat.multiply(vec);
// calculate the svd decomposition of the matrix
var svd &#x3D; la.svd(mat, 3);</code></pre>
              </div>
            </section>
            <dl class="dl-compact">
            </dl>
          </header>
          <section id="summary">
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Child classes</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="module-la.BoolVector.html">BoolVector([arg])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.IntVector.html">IntVector([arg])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.Matrix.html">Matrix([arg])</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="module-la.SparseMatrix.html">SparseMatrix([arg][, rows])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.SparseVector.html">SparseVector([arg][, dim])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.StrVector.html">StrVector([arg])</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="module-la.Vector.html">Vector([arg])</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Methods</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="module-la.html#.cat">cat(nestedArrMat)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.conjgrad">conjgrad(A, b[, x][, verbose])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.copyVecToArray">copyVecToArray(vec)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.eye">eye(dim)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.findMaxIdx">findMaxIdx(X)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.inverseSVD">inverseSVD(mat)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.ones">ones(dim)</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="module-la.html#.pdist2">pdist2(X1, X2)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.randi">randi(num[, len])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.randn">randn([arg1][, arg2])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.randPerm">randPerm(k)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.randVariation">randVariation(n, k)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.rangeVec">rangeVec(min, max)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.sparse">sparse(rows[, cols])</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="module-la.html#.speye">speye(dim)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.square">square(x)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#.zeros">zeros(rows[, cols])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#qr">qr(mat[, tol])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#svd">svd(mat, k[, json][, callback])</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Abstract types</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="module-la.html#~boolVectorCompareCb">boolVectorCompareCb(arg1, arg2)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#~intVectorCompareCb">intVectorCompareCb(arg1, arg2)</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="module-la.html#~matrixArg">matrixArg</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="module-la.html#~strVectorCompareCb">strVectorCompareCb(arg1, arg2)</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="module-la.html#~vectorCompareCb">vectorCompareCb(arg1, arg2)</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
          </section>
          <section>
            <h2>Classes</h2>
            <section id='members-links'>
              <h3><a href="module-la.BoolVector.html">BoolVector</a></h3>
              <h3><a href="module-la.IntVector.html">IntVector</a></h3>
              <h3><a href="module-la.Matrix.html">Matrix</a></h3>
              <h3><a href="module-la.SparseMatrix.html">SparseMatrix</a></h3>
              <h3><a href="module-la.SparseVector.html">SparseVector</a></h3>
              <h3><a href="module-la.StrVector.html">StrVector</a></h3>
              <h3><a href="module-la.Vector.html">Vector</a></h3>
            </section>
            <h2>Methods</h2>
            <section>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".cat"><span class="symbol-name">cat</span><span class="signature"><span class="signature-params">(nestedArrMat)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3>
              <p>Constructs a matrix by concatenating a double-nested array of matrices.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create four matrices and concatenate (2 block columns, 2 block rows)
var la &#x3D; require(&#x27;qminer&#x27;).la;
var A &#x3D; new la.Matrix([[1,2], [3,4]]);
var B &#x3D; new la.Matrix([[5,6], [7,8]]);
var C &#x3D; new la.Matrix([[9,10], [11,12]]);
var D &#x3D; new la.Matrix([[13,14], [15,16]]);
// create a nested matrix
// returns the matrix:
// 1  2  5  6
// 3  4  7  8
// 9  10 13 14
// 11 12 15 16
var mat &#x3D; la.cat([[A,B], [C,D]]);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>nestedArrMat</p>
                      </td>
                      <td>
                        <p>Array of Array of <a href="module-la.Matrix.html">module:la.Matrix</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>An array of block rows, where each block row is an array of matrices.
                          For example: <code>[[m_11, m_12], [m_21, m_22]]</code> is used to construct a matrix where the (i,j)-th block submatrix is <code>m_ij</code>.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.Matrix.html">module:la.Matrix</a></code>B Concatenated matrix.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".conjgrad"><span class="symbol-name">conjgrad</span><span class="signature"><span class="signature-params">(A, b[, x][, verbose])</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Vector.html">module:la.Vector</a></span></span></h3>
              <p>Solves the PSD symmetric system: A x = b, where A is a positive-definite symmetric matrix.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a positive-definite symmetric matrix
var vecTemp &#x3D; new la.Vector([1, 2, 3]);
var mat &#x3D; vecTemp.diag();
// create the right-hand side vector 
var vec &#x3D; new la.Vector([0.5, 3, -2]);
// solve the PSD symmetric system
var x &#x3D; la.conjgrad(mat, vec);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>A</p>
                      </td>
                      <td>
                        <p>(<a href="module-la.Matrix.html">module:la.Matrix</a> or <a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a>)</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The matrix on the left-hand side of the system.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>b</p>
                      </td>
                      <td>
                        <p><a href="module-la.Vector.html">module:la.Vector</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The vector on the right-hand side of the system.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>x</p>
                      </td>
                      <td>
                        <p><a href="module-la.Vector.html">module:la.Vector</a></p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>Current solution. Default is a vector of zeros.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>verbose</p>
                      </td>
                      <td>
                        <p>boolean</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>If true, console logs the residuum value.</p>
                        <p>Defaults to <code>false</code>.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.Vector.html">module:la.Vector</a></code>B Solution to the system.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".copyVecToArray"><span class="symbol-name">copyVecToArray</span><span class="signature"><span class="signature-params">(vec)</span>&nbsp;&rarr; <span class="signature-returns"> Array of number</span></span></h3>
              <p>Copies the vector into a JavaScript array of numbers.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a new vector
var vec &#x3D; new la.Vector([1, 2, 3]);
// create a JavaScript array out of vec
var arr &#x3D; la.copyVecToArray(vec); // returns an array [1, 2, 3]</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>vec</p>
                      </td>
                      <td>
                        <p><a href="module-la.Vector.html">module:la.Vector</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Copied vector.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Array of number</code>B A JavaScript array of numbers.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".eye"><span class="symbol-name">eye</span><span class="signature"><span class="signature-params">(dim)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3>
              <p>Returns an dense identity matrix.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// generate a dense identity matrix of dimension 5
var id &#x3D; la.eye(5);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>dim</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The dimension of the identity matrix. Must be a positive integer.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.Matrix.html">module:la.Matrix</a></code>B A <code>dim</code>-by-<code>dim</code> identity matrix.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".findMaxIdx"><span class="symbol-name">findMaxIdx</span><span class="signature"><span class="signature-params">(X)</span>&nbsp;&rarr; <span class="signature-returns"> Array of number</span></span></h3>
              <p>Returns a JS array of indices <code>idxArray</code> that correspond to the max elements in each column of dense matrix. The resulting array has one element for vector input.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a dense matrix
var mat &#x3D; new la.Matrix([[1, 2], [2, 0]]);
// get the indices of the maximum elements in each column of mat
// returns the array:
// [1, 0]
la.findMaxIdx(mat);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>X</p>
                      </td>
                      <td>
                        <p>(<a href="module-la.Matrix.html">module:la.Matrix</a> or <a href="module-la.Vector.html">module:la.Vector</a>)</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The matrix or vector.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Array of number</code>B Array of indexes where maximum is found, one for each column.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".inverseSVD"><span class="symbol-name">inverseSVD</span><span class="signature"><span class="signature-params">(mat)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3>
              <p>Calculates the inverse matrix with SVD.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a random matrix
var mat &#x3D; new la.Matrix({ rows: 5, cols: 5, random: true });
// get the inverse of mat
var inv &#x3D; la.inverseSVD(mat);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>mat</p>
                      </td>
                      <td>
                        <p><a href="module-la.Matrix.html">module:la.Matrix</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The matrix we want to inverse.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.Matrix.html">module:la.Matrix</a></code>B The inverse matrix of <code>mat</code>.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".ones"><span class="symbol-name">ones</span><span class="signature"><span class="signature-params">(dim)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Vector.html">module:la.Vector</a></span></span></h3>
              <p>Returns a vector with all entries set to 1.0.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a 3-dimensional vector with all entries set to 1.0
var vec &#x3D; la.ones(3);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>dim</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Dimension of the vector.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.Vector.html">module:la.Vector</a></code>B A <code>dim</code>-dimensional vector whose entries are set to 1.0.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".pdist2"><span class="symbol-name">pdist2</span><span class="signature"><span class="signature-params">(X1, X2)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3>
              <p>Computes and returns the pairwise squared euclidean distances between columns of <code>X1</code> and <code>X2</code> (<code>mat3[i,j] = ||mat(:,i) - mat2(:,j)||^2</code>).</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// construct two input matrices
var X1 &#x3D; new la.Matrix([[1,2], [2,0]]);
var X2 &#x3D; new la.Matrix([[1,0.5,0],[0,-0.5,-1]]);
// get the pairwise squared distance between the matrices
// returns the matrix:
// 4 6.5 10
// 1 2.5 5
la.pdist2(X1, X2);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>X1</p>
                      </td>
                      <td>
                        <p><a href="module-la.Matrix.html">module:la.Matrix</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>First matrix.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>X2</p>
                      </td>
                      <td>
                        <p><a href="module-la.Matrix.html">module:la.Matrix</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Second matrix.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.Matrix.html">module:la.Matrix</a></code>B Matrix with <code>X1.cols</code> rows and <code>X2.cols</code> columns containing squared euclidean distances.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".randi"><span class="symbol-name">randi</span><span class="signature"><span class="signature-params">(num[, len])</span>&nbsp;&rarr; <span class="signature-returns"> (number or la.IntVector)</span></span></h3>
              <p>Returns a randomly selected integer(s) from an array.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// generate a random integer between 0 and 10
var number &#x3D; la.randi(10);
// generate an integer vector containing 5 random integers between 0 and 10
var vec &#x3D; la.randi(10, 5);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>num</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The upper bound of the array. Must be an integer.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>len</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>The number of selected integers. Must be an integer.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>(number or la.IntVector)</code>B <br>1. Randomly selected integer from the array <code>[0,...,num-1]</code>, if no parameters are given.
                    <br>2. <a href="module-la.IntVector.html">module:la.IntVector</a>, if parameter <code>len</code> is given. The vector contains random integers from the array <code>[0,...,num-1]</code> (with repetition).
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".randn"><span class="symbol-name">randn</span><span class="signature"><span class="signature-params">([arg1][, arg2])</span>&nbsp;&rarr; <span class="signature-returns"> (number, <a href="module-la.Vector.html">module:la.Vector</a>, or <a href="module-la.Matrix.html">module:la.Matrix</a>)</span></span></h3>
              <p>Returns an object with random numbers.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// generate a random number
var number &#x3D; la.randn();
// generate a random vector of length 7
var vector &#x3D; la.randn(7);
// generate a random matrix with 7 rows and 10 columns
var mat &#x3D; la.randn(7, 10);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>arg1</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>Represents dimension of vector or number of rows in matrix. Must be an integer.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>arg2</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>Represents number of columns in matrix. Must be an integer.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>(number, <a href="module-la.Vector.html">module:la.Vector</a>, or <a href="module-la.Matrix.html">module:la.Matrix</a>)</code>B <br>1. Number, if no parameters are given.
                    <br>2. <a href="module-la.Vector.html">module:la.Vector</a>, if parameter <code>arg1</code> is given.
                    <br>3. <a href="module-la.Matrix.html">module:la.Matrix</a>, if parameters <code>arg1</code> and <code>arg2</code> are given.
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".randPerm"><span class="symbol-name">randPerm</span><span class="signature"><span class="signature-params">(k)</span>&nbsp;&rarr; <span class="signature-returns"> Array of number</span></span></h3>
              <p>Returns a permutation of elements.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create an array/permutation of 5 elements
var perm &#x3D; la.randPerm(5);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>k</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Number of elements to permutate.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Array of number</code>B A JavaScript array of integers. Represents a permutation of <code>k</code> elements.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".randVariation"><span class="symbol-name">randVariation</span><span class="signature"><span class="signature-params">(n, k)</span>&nbsp;&rarr; <span class="signature-returns"> Array of number</span></span></h3>
              <p>Returns a JavaScript array, which is a sample of integers from an array.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create an array containing 5 integers between 0 and 15
var arr &#x3D; la.randVariation(15, 5);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>n</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The upper bound of the generated array <code>[0,...,n-1]</code>. Must be an integer.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>k</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Length of the sample. Must be smaller or equal to <code>n</code>.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Array of number</code>B The sample of <code>k</code> numbers from <code>[0,...,n-1]</code>, sampled without replacement.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".rangeVec"><span class="symbol-name">rangeVec</span><span class="signature"><span class="signature-params">(min, max)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.IntVector.html">module:la.IntVector</a></span></span></h3>
              <p>Generates an integer vector given range.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a range vector containing 1, 2, 3
var vec &#x3D; la.rangeVec(1, 3);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>min</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Start value. Should be an integer.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>max</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>End value. Should be an integer.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.IntVector.html">module:la.IntVector</a></code>B Integer range vector.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".sparse"><span class="symbol-name">sparse</span><span class="signature"><span class="signature-params">(rows[, cols])</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a></span></span></h3>
              <p>Returns a sparse zero matrix.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a sparse zero matrix with 5 rows and columns
var spMat &#x3D; la.sparse(5);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>rows</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Number of rows of the sparse matrix.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>cols</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>Number of columns of the sparse matrix.</p>
                        <p>Defaults to <code>rows</code>.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a></code>B A <code>rows</code>-by-<code>cols</code> sparse zero matrix.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".speye"><span class="symbol-name">speye</span><span class="signature"><span class="signature-params">(dim)</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a></span></span></h3>
              <p>Returns a sparse identity matrix</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// generate a sparse identity matrix of dimension 5
var spId &#x3D; la.speye(5);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>dim</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The dimension of the identity matrix. Must be a positive integer.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a></code>B A dim-by-dim identity matrix.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".square"><span class="symbol-name">square</span><span class="signature"><span class="signature-params">(x)</span>&nbsp;&rarr; <span class="signature-returns"> (number or <a href="module-la.Vector.html">module:la.Vector</a>)</span></span></h3>
              <p>Squares the values in vector.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a vector
var vec &#x3D; new la.Vector([1, 2, 3]);
// square the values of the vector
// returns the vector containing  the values 1, 4, 9
var sqr &#x3D; la.square(vec);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>x</p>
                      </td>
                      <td>
                        <p>(number or <a href="module-la.Vector.html">module:la.Vector</a>)</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The value/vector.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>(number or <a href="module-la.Vector.html">module:la.Vector</a>)</code>B <br> 1. If <code>x</code> is a number, returns square of <code>x</code>.
                    <br> 2. If <code>x</code> is a <a href="module-la.Vector.html">module:la.Vector</a>, returns a <a href="module-la.Vector.html">module:la.Vector</a>, where the i-th value of the vector is the square of <code>x[i]</code>.
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-static">static</span></div>
              <h3 id=".zeros"><span class="symbol-name">zeros</span><span class="signature"><span class="signature-params">(rows[, cols])</span>&nbsp;&rarr; <span class="signature-returns"> <a href="module-la.Matrix.html">module:la.Matrix</a></span></span></h3>
              <p>Returns a dense zero matrix.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a sparse zero matrix with 5 rows and 3 columns
var mat &#x3D; la.zeros(5, 3);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>rows</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Number of rows of the matrix.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>cols</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>Number of columns of the matrix.</p>
                        <p>Defaults to <code>rows</code>.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code><a href="module-la.Matrix.html">module:la.Matrix</a></code>B A <code>rows</code>-by-<code>cols</code> dense zero matrix.</p>
                </dd>
              </dl>
              <h3 id="qr"><span class="symbol-name">qr</span><span class="signature"><span class="signature-params">(mat[, tol])</span>&nbsp;&rarr; <span class="signature-returns"> Object</span></span></h3>
              <p>Computes the QR decomposition.</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>// import la module
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a random matrix
var mat &#x3D; new la.Matrix({ rows: 10, cols: 5, random: true });
// calculate the QR decomposition of mat
var qrRes &#x3D; la.qr(mat);</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>mat</p>
                      </td>
                      <td>
                        <p><a href="module-la.Matrix.html">module:la.Matrix</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The matrix.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>tol</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>The tolerance number.</p>
                        <p>Defaults to <code>1e-6</code>.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Object</code>B A JSON object <code>qrRes</code> which contains the decomposition matrices:
                    <br><code>qrRes.Q</code> - The orthogonal matrix Q of the QR decomposition. Type <a href="module-la.Matrix.html">module:la.Matrix</a>.
                    <br><code>qrRes.R</code> - The upper triangular matrix R of the QR decomposition. Type <a href="module-la.Matrix.html">module:la.Matrix</a>.
                  </p>
                </dd>
              </dl>
              <h3 id="svd"><span class="symbol-name">svd</span><span class="signature"><span class="signature-params">(mat, k[, json][, callback])</span>&nbsp;&rarr; <span class="signature-returns"> Object</span></span></h3>
              <p>Computes the truncated SVD decomposition.</p>
              <section>
                <h4>
                  Examples
                </h4>
                <div>
                  <p>Asynchronous function</p>
                  <pre class="prettyprint"><code>// import the modules
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a random matrix
var A &#x3D; new la.Matrix({ rows: 10, cols: 5, random: true });
// set the parameters for the calculation
var k &#x3D; 2; // number of singular vectors
var param &#x3D; { iter: 1000, tol: 1e-4 };
// calculate the svd
la.svd(A, k, param, function (err, result) {
   if (err) { console.log(err); }
   // successful calculation
   var U &#x3D; result.U;
   var V &#x3D; result.V;
   var s &#x3D; result.s;
});</code></pre>
                </div>
                <div>
                  <p>Synchronous function</p>
                  <pre class="prettyprint"><code>// import the modules
var la &#x3D; require(&#x27;qminer&#x27;).la;
// create a random matrix
var A &#x3D; new la.Matrix({ rows: 10, cols: 5, random: true });
// set the parameters for the calculation
var k &#x3D; 2; // number of singular vectors
var param &#x3D; { iter: 1000, tol: 1e-4 };
// calculate the svd
var result &#x3D; la.svd(A, k, param);
// successful calculation
var U &#x3D; result.U;
var V &#x3D; result.V;
var s &#x3D; result.s;</code></pre>
                </div>
              </section>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>mat</p>
                      </td>
                      <td>
                        <p>(<a href="module-la.Matrix.html">module:la.Matrix</a> or <a href="module-la.SparseMatrix.html">module:la.SparseMatrix</a>)</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The matrix.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>k</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The number of singular vectors to be computed.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>json</p>
                      </td>
                      <td>
                        <p>Object</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>The JSON object.</p>
                        <p>Values in <code>json</code> have the following properties:</p>
                        <table class="jsdoc-details-table">
                          <thead>
                            <tr>
                              <th>Name</th>
                              <th>Type</th>
                              <th>Optional</th>
                              <th>Description</th>
                            </tr>
                          </thead>
                          <tbody>
                            <tr>
                              <td>
                                <p>iter</p>
                              </td>
                              <td>
                                <p>number</p>
                              </td>
                              <td>
                                <p>Yes</p>
                              </td>
                              <td>
                                <p>The number of iterations used for the algorithm.</p>
                                <p>Defaults to <code>100</code>.</p>
                              </td>
                            </tr>
                            <tr>
                              <td>
                                <p>tol</p>
                              </td>
                              <td>
                                <p>number</p>
                              </td>
                              <td>
                                <p>Yes</p>
                              </td>
                              <td>
                                <p>The tolerance number.</p>
                                <p>Defaults to <code>1e-6</code>.</p>
                              </td>
                            </tr>
                          </tbody>
                        </table>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>callback</p>
                      </td>
                      <td>
                        <p>function()</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>The callback function, that takes the error parameters (err) and the result parameter (res).
                          <i>Only for the asynchronous function.</i>
                        </p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Object</code>B The JSON object <code>svdRes</code> which contains the SVD decomposition U<em>S</em>V^T matrices:
                    <br><code>svdRes.U</code> - The dense matrix of the decomposition. Type <a href="module-la.Matrix.html">module:la.Matrix</a>.
                    <br><code>svdRes.V</code> - The dense matrix of the decomposition. Type <a href="module-la.Matrix.html">module:la.Matrix</a>.
                    <br><code>svdRes.s</code> - The vector containing the singular values of the decomposition. Type <a href="module-la.Vector.html">module:la.Vector</a>.
                  </p>
                </dd>
              </dl>
            </section>
            <h2>Abstract types</h2>
            <section>
              <div class="symbol-detail-labels"><span class="label label-inner">inner</span></div>
              <h3 id="~boolVectorCompareCb"><span class="symbol-name">boolVectorCompareCb</span><span class="signature"><span class="signature-params">(arg1, arg2)</span>&nbsp;&rarr; <span class="signature-returns"> (number or boolean)</span></span></h3>
              <p>Vector sort comparator callback.</p>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>arg1</p>
                      </td>
                      <td>
                        <p>boolean</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>First argument.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>arg2</p>
                      </td>
                      <td>
                        <p>boolean</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Second argument.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>(number or boolean)</code>B If <code>boolVectorCompareCb(arg1, arg2)</code> is less than 0 or false, sort <code>arg1</code> to a lower index than <code>arg2</code>, i.e. <code>arg1</code> comes first.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-inner">inner</span></div>
              <h3 id="~intVectorCompareCb"><span class="symbol-name">intVectorCompareCb</span><span class="signature"><span class="signature-params">(arg1, arg2)</span>&nbsp;&rarr; <span class="signature-returns"> (number or boolean)</span></span></h3>
              <p>Vector sort comparator callback.</p>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>arg1</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>First argument.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>arg2</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Second argument.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>(number or boolean)</code>B If <code>intVectorCompareCb(arg1, arg2)</code> is less than 0 or false, sort <code>arg1</code> to a lower index than <code>arg2</code>, i.e. <code>arg1</code> comes first.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-inner">inner</span></div>
              <h3 id="~matrixArg"><span class="symbol-name">matrixArg</span><small class="property-type">
                  &nbsp;Object</small></h3>
              <p>Matrix constructor parameter object.</p>
              <section>
                <h4>Properties</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>rows</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Number of rows.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>cols</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Number of columns.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>random</p>
                      </td>
                      <td>
                        <p>boolean</p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                        <p>Generate a random matrix with entries sampled from a uniform [0,1] distribution. If set to false, a zero matrix is created.</p>
                        <p>Defaults to <code>false</code>.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
              </dl>
              <div class="symbol-detail-labels"><span class="label label-inner">inner</span></div>
              <h3 id="~strVectorCompareCb"><span class="symbol-name">strVectorCompareCb</span><span class="signature"><span class="signature-params">(arg1, arg2)</span>&nbsp;&rarr; <span class="signature-returns"> (number or boolean)</span></span></h3>
              <p>Vector sort comparator callback.</p>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>arg1</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>First argument.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>arg2</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Second argument.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>(number or boolean)</code>B If <code>strVectorCompareCb(arg1, arg2)</code> is less than 0 or false, sort <code>arg1</code> to a lower index than <code>arg2</code>, i.e. <code>arg1</code> comes first.</p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-inner">inner</span></div>
              <h3 id="~vectorCompareCb"><span class="symbol-name">vectorCompareCb</span><span class="signature"><span class="signature-params">(arg1, arg2)</span>&nbsp;&rarr; <span class="signature-returns"> (number or boolean)</span></span></h3>
              <p>Vector sort comparator callback.</p>
              <section>
                <h4>Parameters</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>arg1</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>First argument.</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>arg2</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Second argument.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>(number or boolean)</code>B If <code>vectorCompareCb(arg1, arg2)</code> is less than 0 or false, sort <code>arg1</code> to a lower index than <code>arg2</code>, i.e. <code>arg1</code> comes first.</p>
                </dd>
              </dl>
            </section>
          </section>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <footer id="jsdoc-footer" class="jsdoc-footer">
    <div id="jsdoc-footer-container">
      <p>
        
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>