simple-squiggle

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

csIpvec.js (663B)


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