//   
// root finding with complex Newton-Raphson method
//  
import java.util.*;
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
import javax.swing.*;

public class SCO4G2
{	

     public static double[] verigir(String s)
     {
     String s1=JOptionPane.showInputDialog(s);        
     StringTokenizer token=new StringTokenizer(s1);
     int n=token.countTokens()-1;
     int m=n+1;
     double a[]=new double[m];
     int j=0;           
     while(token.hasMoreTokens())
     {
     Double ax=new Double(token.nextToken());
     a[j++]=ax.doubleValue();
     }
     return a; 
     }
      
     public static void main (String args[])  
     {double x0[]=verigir(" complexs Fonksiyon 1 değeri için(iki değer giriniz) z1=(a+bi) : ");
      double x1[]=verigir(" complexs Fonksiyon 2 değeri için(iki değer giriniz) z1=(a+bi) : ");
      complex z0=new complex(x0[0],x0[1]);
      complex z1=new complex(x1[0],x1[1]);
      complex z[]=new complex[2];
      z[0]=new complex(z0);
      z[1]=new complex(z1);

      cf_xi f=(complex y[])->complex.add(complex.multiply(y[0],y[0]),complex.multiply(y[1],y[1]));  
            complex dz[]=f.dfunc(z);
      JOptionPane.showMessageDialog(null," fonksiyon değeri  : "+f.func(z).toString()+" 1. türev değeri  : "+dz[0].toString()+" "+dz[1].toString());
      System.exit(0);
     } 
}
