simple-squiggle

A restricted subset of Squiggle
Log | Files | Refs | README

row.js (1506B)


      1 import { factory } from '../../utils/factory.js';
      2 import { clone } from '../../utils/object.js';
      3 import { validateIndex } from '../../utils/array.js';
      4 var name = 'row';
      5 var dependencies = ['typed', 'Index', 'matrix', 'range'];
      6 export var createRow = /* #__PURE__ */factory(name, dependencies, _ref => {
      7   var {
      8     typed,
      9     Index,
     10     matrix,
     11     range
     12   } = _ref;
     13 
     14   /**
     15    * Return a row from a Matrix.
     16    *
     17    * Syntax:
     18    *
     19    *     math.row(value, index)
     20    *
     21    * Example:
     22    *
     23    *     // get a row
     24    *     const d = [[1, 2], [3, 4]]
     25    *     math.row(d, 1) // returns [[3, 4]]
     26    *
     27    * See also:
     28    *
     29    *     column
     30    *
     31    * @param {Array | Matrix } value   An array or matrix
     32    * @param {number} row              The index of the row
     33    * @return {Array | Matrix}         The retrieved row
     34    */
     35   return typed(name, {
     36     'Matrix, number': _row,
     37     'Array, number': function ArrayNumber(value, row) {
     38       return _row(matrix(clone(value)), row).valueOf();
     39     }
     40   });
     41   /**
     42    * Retrieve a row of a matrix
     43    * @param {Matrix } value  A matrix
     44    * @param {number} row     The index of the row
     45    * @return {Matrix}        The retrieved row
     46    */
     47 
     48   function _row(value, row) {
     49     // check dimensions
     50     if (value.size().length !== 2) {
     51       throw new Error('Only two dimensional matrix is supported');
     52     }
     53 
     54     validateIndex(row, value.size()[0]);
     55     var columnRange = range(0, value.size()[1]);
     56     var index = new Index(row, columnRange);
     57     return value.subset(index);
     58   }
     59 });