To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Heritage persistent IDentifiers (SWHIDs) must be used instead of copying and pasting the url from the address bar of the browser (as there is no guarantee the current URI scheme will remain the same over time).
Select below a type of object currently browsed in order to display its associated SWHID and permalink.
Ignore all generated files.
open Graphics;; let size = 300;; (* The size of the square screen windows in pixels *) let resolution = 100;; (* The resolution: maximum number of iterations allowed *) let threshold = 4.0;; (* The thresold: the maximum size allowed. *) let distance = 2.0 /. (float size -. 1.0);; (* The distance between two rows. *) (* Convert an integer in the range [0..resolution] into a screen color *) let color_of c resolution = Pervasives.truncate ((float c /. float resolution) *. float white);; (* Compute the color of a pixel by iterating z_m+1 = z_m^2 + c *) (* j is the k-th row, initialised so that j.(i), k are the coordinates *) (* of the pixel (i, k) *) let pixel_row (j, k, resolution, size) = let zr = ref 0.0 and zi = ref 0.0 and cr = ref 0.0 and ci = ref 0.0 and zrs = ref 0.0 and zis = ref 0.0 let coloured_row = Array.create size black in for s = 0 to size - 1 do let j1 = ref (float j.(s)) in let k1 = ref (float k) in zr := !j1 *. distance -. 1.0; zi := !k1 *. distance -. 1.0; cr := !zr; ci := !zi; zrs := 0.0; zis := 0.0; for i = 0 to resolution - 1 do if not (!zrs +. !zis > threshold) then begin zrs := !zr *. !zr; zis := !zi *. !zi; zi := 2.0 *. !zr *. !zi +. !ci; zr := !zrs -. !zis +. !cr; Array.set coloured_row s (color_of i resolution); end done done; (coloured_row, k);; (* draw a line on the screen using fast image functions *) let show_a_result (col,j) = draw_image (make_image [| col |]) 0 j;; (* generate the tasks *) let gen_rows = let seed = ref 0 in let iniv = Array.init size (fun i -> i) in (function () -> if !seed >= size then raise End_of_file else let r = (iniv, !seed, resolution, size) in incr seed; r;; (* initialize the stop node: open the graphics window *) let stopinitf () = print_string "opening..."; print_newline (); open_graph (Printf.sprintf " %ix%i" size size);; (* finalize: close the window *) let stopfinalize () = Unix.sleep 120; close_graph ();; (* the skeleton expression to compute the image *) let prog () = startstop (gen_rows, ignore) (show_a_result, stopinitf, stopfinalize) (farm (seq (pixel_row), 10)) in pardo prog;;