code: public static FloatMatrix gemv(float alpha, FloatMatrix a,
  			FloatMatrix x, float beta, FloatMatrix y) {
  		if (false) {
  			NativeBlas.sgemv('N', a.rows, a.columns, alpha, a.data, 0, a.rows, x.data, 0,
  					1, beta, y.data, 0, 1);
  		} else {
  			if (beta != 0.0f) {
  				for (int i = 0; i < y.length; i++)
  					y.data[i] = beta * y.data[i];
  			} else {
  				for (int i = 0; i < y.length; i++)
  					y.data[i] = 0.0f;
  			}
  
  	
  			for (int j = 0; j < a.columns; j++) {
  				float xj = x.get(j);
  				if (xj != 0.0f) {
  					for (int i = 0; i < a.rows; i++)
  							y.data[i] += alpha * a.get(i, j) * xj;
  				}
  			}
  		}
  		return y;
  	}
docs: Compute y <- alpha*op(a)*x + beta * y (general matrix vector
  multiplication)