aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-09-25 04:39:49 +0000
committerChris Lattner <sabre@nondot.org>2005-09-25 04:39:49 +0000
commitcd1b56653d7b5149ff99fdd278d2a6e1b4bab669 (patch)
tree9fe64940f50c815e37c867963a24700380d1fae0
parent9c6bc7fed168fbc3844f02ae6804241e27d01191 (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.cpp61
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');
+ }
+}