function _scatter (m, j, w, x, mark) {
    // a arrays
    const values = m._values
    const index = m._index
    const ptr = m._ptr
    // loop values in column j
    for (let k = ptr[j], k1 = ptr[j + 1]; k < k1; k++) {
      // row
      const i = index[k]
      // update workspace
      w[i] = mark
      x[i] = values[k]
    }
  }
Iterates over SparseMatrix A and SparseMatrix B items (zero and nonzero) and invokes the callback function f(Aij, Bij).
Callback function invoked MxN times.

C(i,j) = f(Aij, Bij)

@param {Matrix}   a                 The SparseMatrix instance (A)
@param {Matrix}   b                 The SparseMatrix instance (B)
@param {Function} callback          The f(Aij,Bij) operation to invoke

@return {Matrix}                    SparseMatrix (C)

see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294