67 lines · c
1// RUN: %clang_cc1 -emit-llvm %s -o %t2 3/* Sparc is not C99-compliant */4#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)5 6int main(void) { return 0; }7 8#else /* sparc */9 10#define ESCAPE 211#define IMAGE_WIDTH 15012#define IMAGE_HEIGHT 5013#if 114#define IMAGE_SIZE 6015#else16#define IMAGE_SIZE 500017#endif18#define START_X -2.119#define END_X 1.020#define START_Y -1.2521#define MAX_ITER 10022 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.0iF27 28int putchar(char c);29double hypot(double, double);30 31volatile double __complex__ accum;32 33void mandel(void) {34 int x, y, n;35 for (y = 0; y < IMAGE_HEIGHT; ++y) {36 for (x = 0; x < IMAGE_WIDTH; ++x) {37 double __complex__ c = (START_X+x*step_X) + (START_Y+y*step_Y) * I;38 double __complex__ z = 0.0;39 40 for (n = 0; n < MAX_ITER; ++n) {41 z = z * z + c;42 if (hypot(__real__ z, __imag__ z) >= ESCAPE)43 break;44 }45 46 if (n == MAX_ITER)47 putchar(' ');48 else if (n > 6)49 putchar('.');50 else if (n > 3)51 putchar('+');52 else if (n > 2)53 putchar('x');54 else55 putchar('*');56 }57 putchar('\n');58 }59}60 61int main(void) {62 mandel();63 return 0;64}65 66#endif /* sparc */67