Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/benchmarks/programs/manbrot/mandelbrot.sml
ViewVC logotype

Annotation of /sml/trunk/benchmarks/programs/manbrot/mandelbrot.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1598 - (view) (download)

1 : monnier 193 (* mandelbrot.sml *)
2 :    
3 :     structure Main : BMARK =
4 :     struct
5 :     val x_base = ~2.0
6 :     val y_base = 1.25
7 :     val side = 2.5
8 :    
9 :     val sz = 2048
10 :     val maxCount = 1024
11 :    
12 :     val delta = side / (real sz)
13 :    
14 :     val sum_iterations = ref 0
15 :    
16 :     fun loop1 i = if (i >= sz)
17 :     then ()
18 :     else let
19 :     val c_im : real = y_base - (delta * real i)
20 :     fun loop2 j = if (j >= sz)
21 :     then ()
22 :     else let
23 : jhr 1598 (* NOTE: older versions of the benchmark had the following
24 :     * incorrect code:
25 :     val c_re = x_base * (delta + real_j)
26 :     *)
27 :     val c_re = x_base + (delta * real j)
28 : monnier 193 fun loop3 (count, z_re : real, z_im : real) = if (count < maxCount)
29 :     then let
30 :     val z_re_sq = z_re * z_re
31 :     val z_im_sq = z_im * z_im
32 :     in
33 :     if ((z_re_sq + z_im_sq) > 4.0)
34 :     then count
35 :     else let
36 :     val z_re_im = (z_re * z_im)
37 :     in
38 :     loop3 (count+1,
39 :     (z_re_sq - z_im_sq) + c_re,
40 :     z_re_im + z_re_im + c_im)
41 :     end
42 :     end (* loop3 *)
43 :     else count
44 :     val count = loop3 (0, c_re, c_im)
45 :     in
46 :     sum_iterations := !sum_iterations + count;
47 :     loop2 (j+1)
48 :     end
49 :     in
50 :     loop2 0;
51 :     loop1 (i+1)
52 :     end
53 :    
54 :     fun doit () = (sum_iterations := 0; loop1 0)
55 :    
56 :     fun testit outstrm = (
57 :     sum_iterations := 0;
58 :     loop1 0;
59 :     TextIO.output (outstrm, Int.toString(!sum_iterations) ^ " iterations\n"))
60 :    
61 :     end (* Mandelbrot *)
62 :    
63 :    
64 :    

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0