import java.io.*;
import javax.swing.*;
import javax.tools.*;
import java.util.*;

class multifunctiongenerator extends Thread
 {
  String fonksiyon[];
  String dosyaismi;
  String sinif;
  public multifunctiongenerator(String dosyaismi,String fonk)
  { fonksiyon=Text.readStringLines(fonk);
    this.dosyaismi=dosyaismi;
  }
  public multifunctiongenerator(String fonk)
  {  fonksiyon=Text.readStringLines(fonk);
     dosyaismi="f2DM";
  }
  public multifunctiongenerator(String fonk[])
  {  int n=fonk.length;
     fonksiyon=new String[n];
     for(int i=0;i<n;i++)
     {fonksiyon[i]=fonk[i];}
     dosyaismi="f2DM";
  }
  
  public multifunctiongenerator()
  { fonksiyon=new String[1];
	fonksiyon[0]="x[0]*x[0]+x[1]*x[1]-4.0";
    dosyaismi="fd";
  }
  public void addfunction(String fonk)
  {String s1[]=Text.readStringLines(fonk);
   int n=s1.length;
   fonksiyon=new String[n];
   for(int i=0;i<n;i++)
   {fonksiyon[i]=s1[i];}
  }
  
  public void addfunctions(String fonk[])
  {int n=fonk.length;
   fonksiyon=new String[n];
   for(int i=0;i<n;i++)
   {fonksiyon[i]=fonk[i];}
  }

    
 public  String createfunction()
 {String isim=dosyaismi+".java";
 String s="";
 int n=fonksiyon.length;
 try {PrintWriter fout=new PrintWriter(new BufferedWriter(new FileWriter(isim))); 
 s+="class "+dosyaismi+" extends fi_xi\n";
 s+="{\n";
 s+="public double[] func(double x[])\n";
 s+="{//çözümü istenen fonksiyon\n";	
 s+="double ff[]=new double["+n+"];\n";
 for(int i=0;i<n;i++)
 {
 s+="ff["+i+"] = "+fonksiyon[i]+";\n";
 }
 s+="return ff;\n";
 s+="}\n";
 s+="}\n";
 sinif=s;
 fout.println(s);
 //System.out.println(s);
 fout.close();
 }
 catch(IOException e1) {System.err.println("girdi hatası.");} 
 catch(NumberFormatException e2){};
 JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
 int rc = javac.run(null, null, null,isim);
  return s;
}

 protected void finalize() throws Throwable
 {super.finalize();}

 }
