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 ) ; }
DFP Hessian update equation . See class description for equations