| // RUN: clang-cc -emit-llvm %s -o %t |
| |
| /* Sparc is not C99-compliant */ |
| #if defined(sparc) || defined(__sparc__) || defined(__sparcv9) |
| |
| int main() { 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 |
| |
| #include <stdio.h> |
| |
| volatile double __complex__ accum; |
| |
| void mandel() { |
| 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() { |
| mandel(); |
| return 0; |
| } |
| |
| #endif /* sparc */ |