|
Groovy example source code file (mandelbrot.groovy)
The Groovy mandelbrot.groovy source code
/*
The Computer Language Shootout
http://shootout.alioth.debian.org/
contributed by Jochen Hinrichsen
*/
double Cr, Ci, Tr, Ti, Zr=0, Zi=0, limit_sq = 4.0
int res, i=0, x=0, y=0, pos=0, acc=1, iter = 50
res = (args.length >= 1) ? Integer.parseInt(args[0], 10) : 200
int max = (res * res) >>> 3
def pbm_data = new byte[ max ]
String pbm_header = new String("P4" + ((char) 012) + res + " " + res + ((char) 012))
System.out.write(pbm_header.getBytes(), 0, pbm_header.length())
// for ( ; pos < max; x%=res, Zr=Zi=i=0) {
while (pos < max) {
Cr = (2*((double)x++)/res - 1.5);
Ci=(2*((double)y)/res - 1)
// for(acc<<=1; (acc&1)==0 && i++ < iter; acc |= Zr*Zr+Zi*Zi > limit_sq ? 1 : 0) {
acc<<=1
while (((acc&1)==0) && (i++ < iter)) {
Tr = Zr*Zr - Zi*Zi + Cr
Ti = 2*Zr*Zi + Ci
Zr = Tr
Zi = Ti
// println "Zr^2 + Zi^2 = ${Zr*Zr+Zi*Zi}"
acc |= (Zr*Zr+Zi*Zi > limit_sq) ? 1 : 0
// println "acc = ${acc}"
}
if (x==res) {
y++
if (acc<256) acc <<= (8-res%8)
}
if (acc>255) {
pbm_data [ pos++ ] = (byte) (acc^=255)
acc = 1
}
x%=res
Zr=Zi=i=0
// println "acc = ${acc}"
// println "pos = ${pos}"
// println "--------------------------------------"
}
System.out.write( pbm_data, 0, pos);
// EOF
Other Groovy examples (source code examples)Here is a short list of links related to this Groovy mandelbrot.groovy source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.