ref: a805b85c6836bb909bd98e63ad2c05a58c814450
dir: /bench/mandelbrot.myr/
use std use bio use testr const Bailout : flt64 = 16.0 const Maxiter = 1000 const main = { testr.bench([ [.name="mandelbrot", .fn=writemandel] ][:]) } const writemandel = {ctx var x : flt64, y : flt64, i var f f = bio.mkfile(1, bio.Wr) for i = 0; i < 10; i++ for y = -39.0; y < 39.0; y = y + 1.0 for x = -39.0; x < 39.0; x = x + 1.0 if mandelbrot(x/40.0, y/40.0) == 0 bio.write(f, "*") else bio.write(f, " ") ;; ;; bio.write(f, "\n") ;; ;; bio.write(f, "\n") /* we still use this fd to log our test output... */ bio.flush(f) } const mandelbrot = {x, y var cr, ci, zr, zi var tmp, zr2, zi2 var i : int cr = y - 0.5 ci = x zr = 0.0 zi = 0.0 i = 0 while true i++ tmp = zr * zi zr2 = zr * zr zi2 = zi * zi zr = zr2 - zi2 + cr zi = tmp + tmp + ci if zi2 + zr2 > Bailout -> i ;; if i > Maxiter -> 0 ;; ;; -> 0 }