samer@1: package eg.maths; samer@1: import samer.core.*; samer@1: import samer.maths.*; samer@1: samer@1: public class GaussianForm extends QuadraticForm samer@1: { samer@1: public GaussianForm() { super(); } samer@1: public GaussianForm(int n) { super(n); } samer@1: samer@1: public double apply(double [] x) { samer@1: return -Math.exp(super.apply(x)); samer@1: } samer@1: samer@1: public VectorFunctionOfVector derivative() samer@1: { samer@1: return new VectorFunctionOfVector() { samer@1: public void apply(double [] x) { samer@1: double z=GaussianForm.this.apply(x); samer@1: Mathx.copy(y,x); samer@1: Mathx.mul(x,-z); samer@1: } samer@1: public void apply(double [] x, double [] v) { samer@1: double z=GaussianForm.this.apply(x); samer@1: Mathx.copy(y,v); samer@1: Mathx.mul(v,-z); samer@1: } samer@1: }; samer@1: } samer@1: }