diff options
author | Chris Lattner <sabre@nondot.org> | 2005-09-25 04:39:49 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-09-25 04:39:49 +0000 |
commit | cd1b56653d7b5149ff99fdd278d2a6e1b4bab669 (patch) | |
tree | 9fe64940f50c815e37c867963a24700380d1fae0 | |
parent | 9c6bc7fed168fbc3844f02ae6804241e27d01191 (diff) |
new testcase to generate an ascii-art mandlebrot
git-svn-id: https://llvm.org/svn/llvm-project/test-suite/trunk@23429 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | SingleSource/Benchmarks/Misc-C++/mandel-text.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/SingleSource/Benchmarks/Misc-C++/mandel-text.cpp b/SingleSource/Benchmarks/Misc-C++/mandel-text.cpp new file mode 100644 index 00000000..5de52578 --- /dev/null +++ b/SingleSource/Benchmarks/Misc-C++/mandel-text.cpp @@ -0,0 +1,61 @@ +#include <stdio.h> +int main() +{ + // output size + int rows = 40, cols = 78; + + // number of iterations before we quit + int maxiter = 255; + + int slowdown = 2000; + + // size and position of the rect on the imaginary plane + double fViewRectReal = -2.3, fViewRectImg = -1.0; + double fMagLevel = 0.05; + + for (int y=0; y < rows; y++) + { + // imaginary component of "c" + double fCImg = fViewRectImg + y * fMagLevel; + + for (int x=0; x < cols; x++) + { + // real component of "c" + bool bInside; + int n; + + for (int SLOW = 0; SLOW < slowdown; ++SLOW) { + double fCReal = fViewRectReal + x * fMagLevel; + double fZReal = fCReal; + double fZImg = fCImg; + bInside = true; + + // apply the formula... + for (n=0; n < maxiter; n++) { + double fZRealSquared = fZReal * fZReal; + double fZImgSquared = fZImg * fZImg; + + // have we escaped? + if (fZRealSquared + fZImgSquared > 4) { + bInside = false; + break; + } + + // z = z^2 + c + fZImg = 2 * fZReal * fZImg + fCImg; + fZReal = fZRealSquared - fZImgSquared + fCReal; + } + } + + if (bInside) + putchar(' '); + else if (n > 4) + putchar('.'); + else if (n > 2) + putchar('+'); + else + putchar('*'); + } + putchar('\n'); + } +} |