| 44 | } |
| 45 | |
| 46 | private static final class QuadFun implements VectorFn { |
| 47 | public final double sign; |
| 48 | public final double[] x0; |
| 49 | |
| 50 | public QuadFun(final double[] x0, final double sign) { |
| 51 | this.x0 = x0; |
| 52 | this.sign = sign; |
| 53 | } |
| 54 | |
| 55 | @Override |
| 56 | public int dim() { |
| 57 | return x0.length; |
| 58 | } |
| 59 | |
| 60 | @Override |
| 61 | public VEval eval(final double[] x, final boolean wantGrad, final boolean wantHessian) { |
| 62 | final int n = x0.length; |
| 63 | final VEval r = new VEval(x,wantGrad,wantHessian); |
| 64 | for(int i=0;i<n;++i) { |
| 65 | final double diff = x[i]-x0[i]; |
| 66 | r.fx += sign*diff*diff; |
| 67 | if(wantGrad) { |
| 68 | r.gx[i] = sign*2.0*diff; |
| 69 | } |
| 70 | if(wantHessian) { |
| 71 | r.hx[i][i] = sign*2.0; |
| 72 | } |
| 73 | } |
| 74 | return r; |
| 75 | } |
| 76 | } |
| 77 | |
| 78 | public void testMax() { |
| 79 | final QuadFun f = new QuadFun(new double[] {0.2, -.62, 110.1, 11.1},-1.0); |
nothing calls this directly
no outgoing calls
no test coverage detected