Download Jar. Libraryless. Click here for Pure Java version (997L/7K).
!7 /* The Computer Language Benchmarks Game * http://benchmarksgame.alioth.debian.org/ * * contributed by Stefan Krause * slightly modified by Chad Whipkey * parallelized by Colin D Bennett 2008-10-04 * reduce synchronization cost by The Anh Tran * optimizations and refactoring by Enotus 2010-11-11 * optimization by John Stalcup 2012-2-19 */ static byte[][] out; static AtomicInteger yCt; static double[] Crb; static double[] Cib; static int getByte(int x, int y){ int res=0; for(int i=0;i<8;i+=2){ double Zr1=Crb[x+i]; double Zi1=Cib[y]; double Zr2=Crb[x+i+1]; double Zi2=Cib[y]; int b=0; int j=49;do{ double nZr1=Zr1*Zr1-Zi1*Zi1+Crb[x+i]; double nZi1=Zr1*Zi1+Zr1*Zi1+Cib[y]; Zr1=nZr1;Zi1=nZi1; double nZr2=Zr2*Zr2-Zi2*Zi2+Crb[x+i+1]; double nZi2=Zr2*Zi2+Zr2*Zi2+Cib[y]; Zr2=nZr2;Zi2=nZi2; if(Zr1*Zr1+Zi1*Zi1>4){b|=2;if(b==3)break;} if(Zr2*Zr2+Zi2*Zi2>4){b|=1;if(b==3)break;} }while(--j>0); res=(res<<2)+b; } return res^-1; } static void putLine(int y, byte[] line){ for (int xb=0; xb<line.length; xb++) line[xb]=(byte)getByte(xb*8,y); } p { int N=6000; if (args.length>=1) N=Integer.parseInt(args[0]); Crb=new double[N+7]; Cib=new double[N+7]; double invN=2.0/N; for(int i=0;i<N;i++){ Cib[i]=i*invN-1.0; Crb[i]=i*invN-1.5; } yCt=new AtomicInteger(); out=new byte[N][(N+7)/8]; Thread[] pool=new Thread[2*Runtime.getRuntime().availableProcessors()]; for (int i=0;i<pool.length;i++) pool[i]=new Thread(){ public void run() { int y; while((y=yCt.getAndIncrement())<out.length) putLine(y,out[y]); } }; for (Thread t:pool) t.start(); for (Thread t:pool) t.join(); OutputStream stream = new BufferedOutputStream(System.out); stream.write(("P4\n"+N+" "+N+"\n").getBytes()); for(int i=0;i<N;i++) stream.write(out[i]); stream.close(); }
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1013705 |
Snippet name: | Multi-threaded Mandelbrot (outputs a PBM file on console) |
Eternal ID of this version: | #1013705/2 |
Text MD5: | 9d637df567d95b98f828f836b693a961 |
Transpilation MD5: | 482b3f06ca0646d9eea736a03c5c6797 |
Author: | stefan |
Category: | javax / imaging |
Type: | JavaX source code (desktop) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2018-01-25 19:55:49 |
Source code size: | 2011 bytes / 74 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 515 / 1188 |
Version history: | 1 change(s) |
Referenced in: | -