The Computer Language
Benchmarks Game

mandelbrot Lua program

source code

-- The Computer Language Benchmarks Game
-- http://benchmarksgame.alioth.debian.org/
-- contributed by Mike Pall

local write, char, unpack = io.write, string.char, unpack
local N = tonumber(arg and arg[1]) or 100
local M, ba, bb, buf = 2/N, 2^(N%8+1)-1, 2^(8-N%8), {}
write("P4\n", N, " ", N, "\n")
for y=0,N-1 do
  local Ci, b, p = y*M-1, 1, 0
  for x=0,N-1 do
    local Cr = x*M-1.5
    local Zr, Zi, Zrq, Ziq = Cr, Ci, Cr*Cr, Ci*Ci
    b = b + b
    for i=1,49 do
      Zi = Zr*Zi*2 + Ci
      Zr = Zrq-Ziq + Cr
      Ziq = Zi*Zi
      Zrq = Zr*Zr
      if Zrq+Ziq > 4.0 then b = b + 1; break; end
    end
    if b >= 256 then p = p + 1; buf[p] = 511 - b; b = 1; end
  end
  if b ~= 1 then p = p + 1; buf[p] = (ba-b)*bb; end
  write(char(unpack(buf, 1, p)))
end
    

notes, command-line, and program output

NOTES:
32-bit Ubuntu one core
Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio


Tue, 13 Jan 2015 00:43:13 GMT

COMMAND LINE:
/usr/local/src/lua-5.3.0/bin/lua  mandelbrot.lua 1000

PROGRAM FAILED 


(BINARY) PROGRAM OUTPUT NOT SHOWN

/usr/local/src/lua-5.3.0/bin/lua: mandelbrot.lua:25: attempt to call a nil value (local 'unpack')
stack traceback:
	mandelbrot.lua:25: in main chunk
	[C]: in ?