| // RUN: %clang_cc1 -emit-llvm %s -o %t | |
| /* Sparc is not C99-compliant */ | |
| #if defined(sparc) || defined(__sparc__) || defined(__sparcv9) | |
| int main(void) { return 0; } | |
| #else /* sparc */ | |
| #define ESCAPE 2 | |
| #define IMAGE_WIDTH 150 | |
| #define IMAGE_HEIGHT 50 | |
| #if 1 | |
| #define IMAGE_SIZE 60 | |
| #else | |
| #define IMAGE_SIZE 5000 | |
| #endif | |
| #define START_X -2.1 | |
| #define END_X 1.0 | |
| #define START_Y -1.25 | |
| #define MAX_ITER 100 | |
| #define step_X ((END_X - START_X)/IMAGE_WIDTH) | |
| #define step_Y ((-START_Y - START_Y)/IMAGE_HEIGHT) | |
| #define I 1.0iF | |
| int putchar(char c); | |
| double hypot(double, double); | |
| volatile double __complex__ accum; | |
| void mandel(void) { | |
| int x, y, n; | |
| for (y = 0; y < IMAGE_HEIGHT; ++y) { | |
| for (x = 0; x < IMAGE_WIDTH; ++x) { | |
| double __complex__ c = (START_X+x*step_X) + (START_Y+y*step_Y) * I; | |
| double __complex__ z = 0.0; | |
| for (n = 0; n < MAX_ITER; ++n) { | |
| z = z * z + c; | |
| if (hypot(__real__ z, __imag__ z) >= ESCAPE) | |
| break; | |
| } | |
| if (n == MAX_ITER) | |
| putchar(' '); | |
| else if (n > 6) | |
| putchar('.'); | |
| else if (n > 3) | |
| putchar('+'); | |
| else if (n > 2) | |
| putchar('x'); | |
| else | |
| putchar('*'); | |
| } | |
| putchar('\n'); | |
| } | |
| } | |
| int main(void) { | |
| mandel(); | |
| return 0; | |
| } | |
| #endif /* sparc */ |