import java.io.*;


class fa extends f_xj
{
   double func (double x[])
 {
    return x[0]*x[0]+3.0*x[0]*x[0]*x[1]*x[1]-2.0*x[0]*x[1]*x[2]+5.0*x[2]*x[2]*x[2];
 }
}

class fb extends fi_xi
{
   double [] func(double x[])
 {
    double dy[]=new double[3];
    dy[0]=2.0*x[0]+6.0*x[0]*x[1]*x[1]-2.0*x[1]*x[2];
    dy[1]=6.0*x[0]*x[0]*x[1]-2.0*x[0]*x[2];
    dy[2]=-2.0*x[0]*x[1]+10.0*x[2];
    return dy;
 }
}

class grads
{
    public static void main(String args[]) throws IOException
    {
    fa Fn=new fa();
    fb Gn=new fb();
    double x[]=  { -2.0, 3.0,4.0};
    double p[]=Numeric.grads(Fn,Gn,x,200,1.0e-15,1.0e-15,1);
    System.out.println(Matrix.toString(p));
    }
}
