1 (* From the SML
/NJ benchmark suite
. *)
6 val testit
: TextIO.outstream
-> unit
10 structure Main
: BMARK
=
19 val delta
= side
/ (real sz
)
21 val sum_iterations
= ref
0
23 fun loop1 i
= if (i
>= sz
)
26 val c_im
: real = y_base
- (delta
* real i
)
27 fun loop2 j
= if (j
>= sz
)
30 val c_re
= x_base
* (delta
+ real j
)
31 fun loop3 (count
, z_re
: real, z_im
: real) = if (count
< maxCount
)
33 val z_re_sq
= z_re
* z_re
34 val z_im_sq
= z_im
* z_im
36 if ((z_re_sq
+ z_im_sq
) > 4.0)
39 val z_re_im
= (z_re
* z_im
)
42 (z_re_sq
- z_im_sq
) + c_re
,
43 z_re_im
+ z_re_im
+ c_im
)
47 val count
= loop3 (0, c_re
, c_im
)
49 sum_iterations
:= !sum_iterations
+ count
;
57 fun doit () = (sum_iterations
:= 0; loop1
0)
69 fun testit outstrm
= (
72 TextIO.output (outstrm
, Int.toString(!sum_iterations
) ^
" iterations\n"))