00001
00002 #include <gcj/cni.h>
00003 #include <java/lang/System.h>
00004 #include <java/io/PrintStream.h>
00005 #include <java/lang/Throwable.h>
00006 #include <gcj/array.h>
00007 #include <java/lang/Double.h>
00008
00009 #include "FastFractal.h"
00010 #include <iostream>
00011
00012 double fastfractal_doubledip( int dim , double* x )
00013 {
00014 using namespace java::lang;
00015
00016 static Double *jd;
00017 static String *message;
00018 static JArray<jdouble> *arrayX;
00019 static FastFractal *ff;
00020 static int init=0;
00021 double f=0;
00022 if (init==0) {
00023 try
00024 {
00025 JvCreateJavaVM(NULL);
00026 JvAttachCurrentThread(NULL, NULL);
00027
00028 message = JvNewStringLatin1("DoubleDip");
00029 JvInitClass(&System::class$);
00030 jd = new Double((jdouble)0);
00031
00032 arrayX = (JArray<jdouble> *)
00033 JvNewObjectArray
00034 (dim, jd->getClass(), NULL);
00035
00036 ff = new FastFractal::FastFractal(message, 3, 1, 1, dim);
00037
00038
00039 }
00040 catch (Throwable *t)
00041 {
00042 System::err->println(JvNewStringLatin1("Unhandled Java exception:"));
00043 t->printStackTrace();
00044 }
00045
00046 init=1;
00047 }
00048 for (int i = 0; i < dim; i++)
00049 elements(arrayX)[i]=(jdouble)x[i];
00050 jdouble jf = ff->evaluate(arrayX);
00051
00052 f=jf;
00053
00054 return f;
00055 }