lib/sbm.js
function(sbmA, sbmB) {
    // check if size compatible
    if (sbmA.y !== sbmB.x) {
      return
    }
    // create a new matrix
    return this.make((function (i, j) {
      return _.reduce(_.map(_.range(sbmA.y), (function(id) {
        return this.check(sbmA, i, id) && this.check(sbmB, id, j)
      }).bind(this)), function (sum, a) {
        return sum ^ a
      }) == 1
    }).bind(this), { x: sbmA.x, y: sbmB.y })
  }
function(sbmA, sbmB) {
    // check if size compatible
    if (sbmA.y !== sbmB.x) {
      return
    }
    // create a new matrix
    return this.make((function (i, j) {
      return _.reduce(_.map(_.range(sbmA.y), (function(id) {
        return this.check(sbmA, i, id) && this.check(sbmB, id, j)
      }).bind(this)), function (sum, a) {
        return sum ^ a
      }) == 1
    }).bind(this), { x: sbmA.x, y: sbmB.y })
  }
function ( sbmA , sbmB ) { // check if size compatible if ( sbmA . y !== sbmB . x ) { return } // create a new matrix return this . make ( ( function ( i , j ) { return _ . reduce ( _ . map ( _ . range ( sbmA . y ) , ( function ( id ) { return this . check ( sbmA , i , id ) && this . check ( sbmB , id , j ) } ) . bind ( this ) ) , function ( sum , a ) { return sum ^ a } ) == 1 } ) . bind ( this ) , { x : sbmA . x , y : sbmB . y } ) }
multiply two matrices
multiply two matrices