simple-squiggle

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

csIpvec.js (764B)


      1 "use strict";
      2 
      3 Object.defineProperty(exports, "__esModule", {
      4   value: true
      5 });
      6 exports.csIpvec = csIpvec;
      7 
      8 /**
      9  * Permutes a vector; x = P'b. In MATLAB notation, x(p)=b.
     10  *
     11  * @param {Array} p           The permutation vector of length n. null value denotes identity
     12  * @param {Array} b           The input vector
     13  *
     14  * @return {Array}            The output vector x = P'b
     15  */
     16 function csIpvec(p, b) {
     17   // vars
     18   var k;
     19   var n = b.length;
     20   var x = []; // check permutation vector was provided, p = null denotes identity
     21 
     22   if (p) {
     23     // loop vector
     24     for (k = 0; k < n; k++) {
     25       // apply permutation
     26       x[p[k]] = b[k];
     27     }
     28   } else {
     29     // loop vector
     30     for (k = 0; k < n; k++) {
     31       // x[i] = b[i]
     32       x[k] = b[k];
     33     }
     34   }
     35 
     36   return x;
     37 }