function _multiplyVectorVector(a, b, n) {
    // check empty vector
    if (n === 0) {
      throw new Error('Cannot multiply two empty vectors');
    } // a dense


    var adata = a._data;
    var adt = a._datatype; // b dense

    var bdata = b._data;
    var bdt = b._datatype; // datatype

    var dt; // addScalar signature to use

    var af = addScalar; // multiplyScalar signature to use

    var mf = multiplyScalar; // process data types

    if (adt && bdt && adt === bdt && typeof adt === 'string') {
      // datatype
      dt = adt; // find signatures that matches (dt, dt)

      af = typed.find(addScalar, [dt, dt]);
      mf = typed.find(multiplyScalar, [dt, dt]);
    } // result (do not initialize it with zero)


    var c = mf(adata[0], bdata[0]); // loop data

    for (var i = 1; i < n; i++) {
      // multiply and accumulate
      c = af(c, mf(adata[i], bdata[i]));
    }

    return c;
  }
C = A * B

@param {Matrix} a            Dense Vector   (N)
@param {Matrix} b            Dense Vector   (N)

@return {number}             Scalar value