class Worker
actor
fun get_byte(x, y: Int): Int do
var res = 0
for i in [0..8[.step(2) do
var zr1 = crb[x + i]
var zi1 = cib[y]
var zr2 = crb [x + i + 1]
var zi2 = cib[y]
var b = 0
for j in [0..nb_rounds[ do
var nzr1 = zr1 * zr1 - zi1 * zi1 + crb[x+i]
var nzi1 = zr1 * zi1 + zr1 * zi1 + cib[y]
zr1 = nzr1
zi1 = nzi1
var nzr2 = zr2 * zr2 - zi2 * zi2 + crb[x + i + 1]
var nzi2 = zr2 * zi2 + zr2 * zi2 + cib[y]
zr2 = nzr2
zi2 = nzi2
if zr1 * zr1 + zi1 * zi1 > 4.0 then b = b | 2
if zr2 * zr2 + zi2 * zi2 > 4.0 then b = b | 1
if b == 3 then break
end
res = (res << 2) + b
end
return res ^-1
end
fun put_line(y: Int, line: Array[Int]) do
for i in [0..line.length[ do line[i] = get_byte(i * 8, y)
end
fun work do
var line = 0
loop
line = atomic.get_and_increment
if line < n then put_line(line, data[line]) else break
end
end
end
lib/actors/examples/mandelbrot/mandelbrot.nit:24,1--68,3