// RUN: %clang_cc1 -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 int putchar(char c); 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 */