b9f9aa4499
[BENCHMARK] * NEW: Add java benchmarks. Note that 'string' and 'string2' benchmarks are too slow when run with the Java interpreter. So they are just run with Java and JIT compilation enabled.
167 lines
2.9 KiB
Plaintext
Executable File
167 lines
2.9 KiB
Plaintext
Executable File
#!/usr/bin/java --source 11
|
|
|
|
public final class mandelbrot
|
|
{
|
|
static private final int MAXITER = 50;
|
|
static private final double LIMIT = 4.0;
|
|
|
|
private static void mandelbrot(int w, int h)
|
|
{
|
|
double xmin = -1.5;
|
|
double ymin = -1;
|
|
double invn = 2.0 / w;
|
|
boolean checkNext = true;
|
|
int x, y, k;
|
|
double cr, ci, zr, zi, tr, ti, t;
|
|
|
|
for (y = 0; y < h; y++)
|
|
{
|
|
ci = y * invn + ymin;
|
|
|
|
for (x = 0; x < w; x++)
|
|
{
|
|
zr = 0;
|
|
zi = 0;
|
|
tr = 0;
|
|
ti = 0;
|
|
cr = x * invn + xmin;
|
|
t = 0;
|
|
|
|
if (checkNext)
|
|
{
|
|
for (k = 1; k <= MAXITER; k++)
|
|
{
|
|
zi = 2.0 * zr * zi + ci;
|
|
zr = tr - ti + cr;
|
|
ti = zi * zi;
|
|
tr = zr * zr;
|
|
t = tr + ti;
|
|
if (t != t || t > LIMIT)
|
|
break;
|
|
}
|
|
if (k > MAXITER)
|
|
{
|
|
System.out.print("1");
|
|
checkNext = false;
|
|
}
|
|
else
|
|
{
|
|
System.out.print("0");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (k = 1; k <= MAXITER; k++)
|
|
{
|
|
zi = 2.0 * zr * zi + ci;
|
|
zr = tr - ti + cr;
|
|
ti = zi * zi;
|
|
tr = zr * zr;
|
|
}
|
|
|
|
t = tr + ti;
|
|
if (t != t || t >= LIMIT)
|
|
{
|
|
System.out.print("0");
|
|
checkNext = true;
|
|
}
|
|
else
|
|
{
|
|
System.out.print("1");
|
|
}
|
|
}
|
|
}
|
|
|
|
System.out.println();
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args)
|
|
{
|
|
for (int i = 1; i <= 20; i++)
|
|
mandelbrot(200, 200);
|
|
}
|
|
}
|
|
|
|
/*#!/usr/bin/env gbs3
|
|
|
|
Private Const MAXITER As Integer = 50
|
|
Private Const LIMIT As Float = 4.0
|
|
|
|
Sub Mandelbrot(W As Integer, H As Integer)
|
|
|
|
Dim XMin As Float = -1.5
|
|
Dim YMin As Float = -1
|
|
Dim InvN As Float = 2.0 / W
|
|
Dim CheckNext As Boolean = True
|
|
Dim X, Y, K As Integer
|
|
Dim Cr, Ci, Zr, Zi, {Tr}, Ti, T As Float
|
|
|
|
For Y = 0 To H - 1
|
|
|
|
Ci = Y * InvN + YMin
|
|
|
|
For X = 0 To W - 1
|
|
|
|
Zr = 0
|
|
Zi = 0
|
|
{Tr} = 0
|
|
Ti = 0
|
|
Cr = X * InvN + XMin
|
|
|
|
If CheckNext Then
|
|
|
|
For K = 1 To MAXITER
|
|
Zi = 2.0 * Zr * Zi + Ci
|
|
Zr = {Tr} - Ti + Cr
|
|
Ti = Zi * Zi
|
|
{Tr} = Zr * Zr
|
|
T = {Tr} + Ti
|
|
If IsNan(T) Or If T > LIMIT Then Break
|
|
Next
|
|
If K > MAXITER Then
|
|
Print "1";
|
|
CheckNext = False
|
|
Else
|
|
Print "0";
|
|
Endif
|
|
|
|
Else
|
|
|
|
For K = 1 To MAXITER
|
|
|
|
Zi = 2.0 * Zr * Zi + Ci
|
|
Zr = {Tr} - Ti + Cr
|
|
Ti = Zi * Zi
|
|
{Tr} = Zr * Zr
|
|
|
|
Next
|
|
|
|
T = {Tr} + Ti
|
|
If IsNan(T) Or If T > LIMIT Then
|
|
Print "0";
|
|
CheckNext = True
|
|
Else
|
|
Print "1";
|
|
Endif
|
|
|
|
Endif
|
|
|
|
Next
|
|
|
|
Print
|
|
|
|
Next
|
|
|
|
End
|
|
|
|
Dim I As Integer
|
|
|
|
For I = 1 To 20
|
|
Mandelbrot(200, 200)
|
|
Next
|
|
|
|
Error CStr(Jit.Time)
|
|
|
|
*/
|