diff options
author | Hubert Plociniczak <hubert.plociniczak@epfl.ch> | 2011-11-02 14:34:35 +0000 |
---|---|---|
committer | Hubert Plociniczak <hubert.plociniczak@epfl.ch> | 2011-11-02 14:34:35 +0000 |
commit | b6778be91900b8161e705dc2598ef7af86842b0b (patch) | |
tree | d15e8ec18a37eec212f50f1ace27714d7e7d4d34 /test/pending/shootout/mandelbrot.scala-2.scala | |
parent | ac6c76f26d884a94d0c9ff54f055d3f9ab750bac (diff) | |
download | scala-b6778be91900b8161e705dc2598ef7af86842b0b.tar.gz scala-b6778be91900b8161e705dc2598ef7af86842b0b.tar.bz2 scala-b6778be91900b8161e705dc2598ef7af86842b0b.zip |
Begone t1737...
Diffstat (limited to 'test/pending/shootout/mandelbrot.scala-2.scala')
-rw-r--r-- | test/pending/shootout/mandelbrot.scala-2.scala | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/test/pending/shootout/mandelbrot.scala-2.scala b/test/pending/shootout/mandelbrot.scala-2.scala new file mode 100644 index 0000000000..dffdc354a0 --- /dev/null +++ b/test/pending/shootout/mandelbrot.scala-2.scala @@ -0,0 +1,79 @@ +/* The Computer Language Shootout + http://shootout.alioth.debian.org/ + contributed by Isaac Gouy +*/ + +// This test is in pending because it fails on windows only, +// but partest's output and the fact that this test outputs in +// binary makes it a challenge to debug remotely. However, +// it's easy to guess that it has to do with the BufferedOutputStream +// and some kind of windows-specific damage that requires an extra +// flush, or different line-ending characters, or any of the various +// write-once-know-quirks-everywhere aspects of java i/o. +// +// [partest] testing: [...]\files\shootout\mandelbrot.scala-2.scala [FAILED] +// [partest] P4 +// [partest] 200 200 +// [partest] +// ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ +// ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ +// [etc] + +import java.io.BufferedOutputStream + +object mandelbrot { + def main(args: Array[String]) = { + val side = Integer.parseInt(args(0)) + val limitSquared = 4.0 + val max = 50 + var bits = 0 + var bitnum = 0 + val w = new BufferedOutputStream(System.out) + + Console.println("P4\n" + side + " " + side) + + var y = 0 + while (y < side){ + + var x = 0 + while (x < side){ + + val cr = 2.0 * x / side - 1.5 + val ci = 2.0 * y / side - 1.0 + + var zr = 0.0; var zi = 0.0 + var tr = 0.0; var ti = 0.0 + + var j = max + do { + zi = 2.0 * zr * zi + ci + zr = tr - ti + cr + ti = zi*zi + tr = zr*zr + + j = j - 1 + } while (!(tr + ti > limitSquared) && j > 0) + + + bits = bits << 1 + if (!(tr + ti > limitSquared)) bits = bits + 1 + bitnum = bitnum + 1 + + if (x == side - 1){ + bits = bits << (8 - bitnum) + bitnum = 8 + } + + if (bitnum == 8){ + w.write(bits.toByte) + bits = 0 + bitnum = 0 + } + + x = x + 1 + } + y = y + 1 + } + w.close + } +} |