code: public static void update(DMatrixRMaj H ,
  							  DMatrixRMaj s ,
  							  DMatrixRMaj y ,
  							  DMatrixRMaj tempV0, DMatrixRMaj tempV1) {
  		double p = VectorVectorMult_DDRM.innerProd(y,s);
  		if( p == 0 )
  			return;
  
  		p = 1.0/p;
  
  		double sBs = VectorVectorMult_DDRM.innerProdA(s,H,s);
  		if( sBs == 0 )
  			return;
  
  		CommonOps_DDRM.mult(H,s,tempV0);
  		CommonOps_DDRM.multTransA(s,H,tempV1);
  
  		VectorVectorMult_DDRM.rank1Update(-p, H , tempV0, y);
  		VectorVectorMult_DDRM.rank1Update(-p, H , y, tempV1);
  		VectorVectorMult_DDRM.rank1Update(p*(p*sBs+1), H , y, y);
  	}
docs: DFP Hessian update equation. See class description for equations
  
  @param H symmetric inverse matrix being updated
  @param s change in state (new - old)
  @param y change in gradient (new - old)
  @param tempV0 Storage vector