[t/spec] Fudge test which fails because of hyper issues.
[pugs.git] / examples / mandel.p5
blob6ca50c4d3ee2610b7967a32945800b27b21c612a
1 #!perl\r
2 \r
3 # vim:ft=perl:sw=4:\r
4 # Print the Mandlebrot set\r
5 #\r
6 # Translated from C code by Glenn Rhoads\r
7 # to perl6 by Leopold Toetsch <lt@toetsch.at>\r
8 #\r
9 # The C code is:\r
10 #\r
11 # main(){\r
12 #\r
13 #  int x, y, k;\r
14 #  char *b = " .:,;!/>)|&IH%*#";\r
15 #  float r, i, z, Z, t, c, C;\r
16 #  for (y=30; puts(""), C = y*0.1 - 1.5, y--;){\r
17 #     for (x=0; c = x*0.04 - 2, z=0, Z=0, x++ < 75;){\r
18 #        for (r=c, i=C, k=0; t = z*z - Z*Z + r, Z = 2*z*Z + i, z=t, k<112; k++)\r
19 #           if (z*z + Z*Z > 10) break;\r
20 #        printf (b[k%16]);\r
21 #        }\r
22 #     }\r
23 # }\r
24 #\r
26 my ($x, $y, $k);\r
27 my $b = ' .:,;!/>)|&IH%*#';\r
29 my ($P, $Q, $X, $L);\r
30 my ($r, $i, $z, $Z, $t, $c, $C);\r
31 for ($L = 0;; $L++) {\r
32     last() if $L > 0;\r
33 for ($y=30;\r
34     $P = $y * 0.1, $C = $P - 1.5, 1;\r
35     ) {\r
36     last() if $y < 0;\r
37     $y--;\r
38     for ($x=0;\r
39         $P = $x * 0.04, $c = $P - 2,\r
40         $z=0.0, $Z=0.0, 1;) {\r
41         last() if $x > 75;\r
42         $x++;\r
43         for ($r=$c, $i=$C, $k=0;\r
44             $P = $z*$z, $Q = $Z*$Z, $P = $P-$Q, $t = $P+$r,\r
45             $P = $z*2.0,$P = $P*$Z, $Z = $P + $i,\r
46             $z=$t, 1; $k++) {\r
47             last() if $k > 12;\r
48             $P = $z * $z;\r
49             $Q = $Z * $Z;\r
50             $P = $P + $Q;\r
51             last() if $P > 10.0;\r
52         }\r
53         $P = $k % 12;\r
54         $X = substr($b, $P, 1);\r
55         print $X;\r
56     }\r
57     print "\n";\r
58 }\r
60 }\r