Sha256: d4a490b793fcfd2ec446de238ab567731b17d4825c89523b3ba44295b5a67599

Contents?: true

Size: 1.16 KB

Versions: 105

Compression:

Stored size: 1.16 KB

Contents

#  The Computer Language Benchmarks Game
#  http://shootout.alioth.debian.org/
#
#  contributed by Karl von Laudermann
#  modified by Jeremy Echols
#  modified by Detlef Reichl
#  modified by Joseph LaFata
#  modified by Peter Zotov

size = ARGV.shift.to_i

puts "P4\n#{size} #{size}"

byte_acc = 0
bit_num = 0

y = 0
while y < size
  ci = (2.0*y/size)-1.0

  x = 0
  while x < size
    zrzr = zr = 0.0
    zizi = zi = 0.0
    cr = (2.0*x/size)-1.5
    escape = 0b1

    z = 0
    while z < 50
      tr = zrzr - zizi + cr
      ti = 2.0*zr*zi + ci
      zr = tr
      zi = ti
      # preserve recalculation
      zrzr = zr*zr
      zizi = zi*zi
      if zrzr+zizi > 4.0
        escape = 0b0
        break
      end
      z += 1
    end

    byte_acc = (byte_acc << 1) | escape
    bit_num += 1

    # Code is very similar for these cases, but using separate blocks
    # ensures we skip the shifting when it's unnecessary, which is most cases.
    if (bit_num == 8)
      print byte_acc.chr
      byte_acc = 0
      bit_num = 0
    elsif (x == size - 1)
      byte_acc <<= (8 - bit_num)
      print byte_acc.chr
      byte_acc = 0
      bit_num = 0
    end
    x += 1
  end
  y += 1
end

Version data entries

105 entries across 105 versions & 1 rubygems

Version Path
knjrbfw-0.0.94 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.93 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.92 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.91 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.90 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.89 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.88 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.87 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.86 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.85 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.84 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.83 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.82 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.81 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.80 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.79 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.78 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.77 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.75 lib/knj/tests/compiler/compiler_test_file.rb
knjrbfw-0.0.74 lib/knj/tests/compiler/compiler_test_file.rb