code: function computeBandRotation(matrix, l) {
    // The lth band rotation matrix has rows and columns equal to the number of
    // coefficients within that band (-l <= m <= l implies 2l + 1 coefficients).
    for (let m = -l; m <= l; m++) {
      for (let n = -l; n <= l; n++) {
        const uvwCoefficients = computeUVWCoeff(m, n, l);
  
        // The functions U, V, W are only safe to call if the coefficients
        // u, v, w are not zero.
        if (Math.abs(uvwCoefficients[0]) > 0) {
          uvwCoefficients[0] *= getU(matrix, m, n, l);
        }
        if (Math.abs(uvwCoefficients[1]) > 0) {
          uvwCoefficients[1] *= getV(matrix, m, n, l);
        }
        if (Math.abs(uvwCoefficients[2]) > 0) {
          uvwCoefficients[2] *= getW(matrix, m, n, l);
        }
  
        setCenteredElement(
            matrix, l, m, n,
            uvwCoefficients[0] + uvwCoefficients[1] + uvwCoefficients[2]);
      }
    }
  }
docs: Calculates the (2l+1) x (2l+1) rotation matrix for the band l.
  This uses the matrices computed for band 1 and band l-1 to compute the
  matrix for band l. |rotations| must contain the previously computed l-1
  rotation matrices.
  This implementation comes from p. 5 (6346), Table 1 and 2 in [2] taking
  into account the corrections from [2b].
  @param {Number[]} matrix - N matrices of gainNodes, each with where
  n=1,2,...,N.
  @param {Number} l