while := (); fn while([test body]) ( if test! [ body!; while test body; ] []; ); fn for([start stop body]) ( i := start; while [i < stop] [ body i; i := i + 1; ]; ); fn map([min0 max0 min1 max1 x]) ( min1 + (((x - min0) * (max1 - min1)) / (max0 - min0)) ); xmin := -1.5; xmax := 0.47; ymin := -1.12; ymax := 1.12; char_width := 110; char_height := 50; scale_x := map {^min0 := 0; ^max0 := char_width; ^min1 := xmin; ^max1 := xmax}; scale_y := map {^min0 := 0; ^max0 := char_height; ^min1 := ymin; ^max1 := ymax}; iter_max := 26; # why is Y changing for 0 char_height fn([y]) ( for 0 char_width fn ([x]) ( x0 := scale_x x; y0 := scale_y y; x := 0; y_ := 0; iter := 0; while [(x**2 + y_**2 <= 2**2) * (iter < iter_max)] [ xtemp := x**2 - y_**2 + x0; y_ := 2*x*y_ + y0; x := xtemp; iter := iter + 1; ]; put (if (iter = iter_max) 32 (64 + iter)); ); put 10; );