blob: 388e922e010287ceea1df9cd8c7e2afeece26f4a [file] [log] [blame]
Daniel Dunbar2d6ca8d2008-08-21 02:51:29 +00001// RUN: clang -emit-llvm %s -o %t
Chris Lattner02b3c262007-08-27 05:23:45 +00002
3/* Sparc is not C99-compliant */
4#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
5
6int main() { return 0; }
7
8#else /* sparc */
9
10#define ESCAPE 2
11#define IMAGE_WIDTH 150
12#define IMAGE_HEIGHT 50
13#if 1
14#define IMAGE_SIZE 60
15#else
16#define IMAGE_SIZE 5000
17#endif
18#define START_X -2.1
19#define END_X 1.0
20#define START_Y -1.25
21#define MAX_ITER 100
22
23#define step_X ((END_X - START_X)/IMAGE_WIDTH)
24#define step_Y ((-START_Y - START_Y)/IMAGE_HEIGHT)
25
26#define I 1.0iF
27
Chris Lattner02b3c262007-08-27 05:23:45 +000028#include <math.h>
Chris Lattner02b3c262007-08-27 05:23:45 +000029
30#include <stdio.h>
31
32volatile double __complex__ accum;
33
34void mandel() {
35 int x, y, n;
36 for (y = 0; y < IMAGE_HEIGHT; ++y) {
37 for (x = 0; x < IMAGE_WIDTH; ++x) {
38 double __complex__ c = (START_X+x*step_X) + (START_Y+y*step_Y) * I;
39 double __complex__ z = 0.0;
40
41 for (n = 0; n < MAX_ITER; ++n) {
42 z = z * z + c;
43 if (hypot(__real__ z, __imag__ z) >= ESCAPE)
44 break;
45 }
46
47 if (n == MAX_ITER)
48 putchar(' ');
49 else if (n > 6)
50 putchar('.');
51 else if (n > 3)
52 putchar('+');
53 else if (n > 2)
54 putchar('x');
55 else
56 putchar('*');
57 }
58 putchar('\n');
59 }
60}
61
62int main() {
63 mandel();
64 return 0;
65}
66
67#endif /* sparc */