For QP problems, you must supply a version of qphx to compute the matrix product Hx for a given vector x. If H has rows and columns of zeros, it is most efficient to order x so that the nonlinear variables appear first. For example, if x=y,zT and only y enters the objective quadratically then
Hx=H1000yz=H1y0. (2)
In this case, ncolh should be the dimension of y, and qphx should compute H1y. For FP and LP problems, qphx will never be called by e04nq and hence qphx may be the dummy method E04NSH.

Syntax

C#
public delegate void E04NQ_QPHX(
	int ncolh,
	double[] x,
	double[] hx,
	int nstate
)
Visual Basic
Public Delegate Sub E04NQ_QPHX ( _
	ncolh As Integer, _
	x As Double(), _
	hx As Double(), _
	nstate As Integer _
)
Visual C++
public delegate void E04NQ_QPHX(
	int ncolh, 
	array<double>^ x, 
	array<double>^ hx, 
	int nstate
)
F#
type E04NQ_QPHX = 
    delegate of 
        ncolh : int * 
        x : float[] * 
        hx : float[] * 
        nstate : int -> unit

Parameters

ncolh
Type: System..::..Int32
On entry: this is the same parameter ncolh as supplied to e04nq.
x
Type: array<System..::..Double>[]()[][]
On entry: the first ncolh elements of the vector x.
hx
Type: array<System..::..Double>[]()[][]
On exit: the product Hx. If ncolh is less than the input parameter n, Hx is really the product H1y in (2).
nstate
Type: System..::..Int32
On entry: allows you to save computation time if certain data must be read or calculated only once. To preserve this data for a subsequent calculation place it in one of cuser, ruser or iuser .
nstate=1
e04nq is calling qphx for the first time.
nstate=0
There is nothing special about the current call of qphx.
nstate2
e04nq is calling qphx for the last time. This parameter setting allows you to perform some additional computation on the final solution.
nstate=2
The current x is optimal.
nstate=3
The problem appears to be infeasible.
nstate=4
The problem appears to be unbounded.
nstate=5
The iterations limit was reached.

See Also