Warning, /frameworks/syntax-highlighting/autotests/folding/highlight.tig.fold is written in an unsupported language. File is not indexed.
0001 <beginfold id='1'>/*</beginfold id='1'> Mandelbrot integer demo 0002 * Released under the MIT License 0003 <endfold id='1'>*/</endfold id='1'> 0004 0005 let 0006 <beginfold id='1'>/*</beginfold id='1'> Basic types. <endfold id='1'>*/</endfold id='1'> 0007 type bool = int 0008 type coord = int 0009 type value = int 0010 type array2d = array of value 0011 type image2d = { nrows : coord, ncols : coord, data : array2d } 0012 0013 <beginfold id='1'>/*</beginfold id='1'> Image creation. <endfold id='1'>*/</endfold id='1'> 0014 function image_new (ncols : coord, nrows : coord) : image2d = 0015 image2d { nrows = nrows, ncols = ncols, 0016 data = array2d[nrows * ncols] of 0 } 0017 0018 function image_set (input : image2d, col : coord, row : coord, 0019 value : value) = 0020 ( 0021 input.data[row * input.ncols + col] := value 0022 ) 0023 0024 function mandelbrot () = 0025 let 0026 type fp = int 0027 var X : int := 300 0028 var Y : int := 300 0029 var ima : image2d := image_new (X, Y) 0030 var fixsize: int := 16834 0031 0032 function mul(a : fp, b : fp) : fp = (a*b)/fixsize 0033 function frac(n : int, d : int) : fp = (n*fixsize)/d 0034 0035 var xcenter : fp := frac(0016, 10000) 0036 var ycenter : fp := frac(8224, 10000) 0037 var xmin : fp := xcenter - frac(5,100) 0038 var ymin : fp := ycenter - frac(5,100) 0039 var xmax : fp := xcenter + frac(5,100) 0040 var ymax : fp := ycenter + frac(5,100) 0041 var xs : fp := (xmax - xmin)/X 0042 var ys : fp := (ymax - ymin)/Y 0043 0044 function iterations(x:int, y:int) : int = 0045 let 0046 var i : int := 0 0047 var p : fp := xmin+x*xs 0048 var q : fp := ymin+y*ys 0049 var x0 : fp := 0 0050 var y0 : fp := 0 0051 var xn : fp := 0 0052 var four : fp := frac(4,1) 0053 var two : fp := frac(2,1) 0054 in 0055 while (mul(xn,xn)+mul(y0,y0) < four) & (i < 256) do 0056 ( 0057 i := i + 1; 0058 xn := mul((x0+y0),(x0-y0)) + p; 0059 y0 := mul(two,mul(x0,y0)) + q; 0060 x0 := xn 0061 ); 0062 i 0063 end 0064 0065 in 0066 0067 (for y := 0 to (Y-1) do 0068 for x := 0 to (X-1) do 0069 let 0070 var i : int := iterations(x,y) 0071 in 0072 image_set (ima, x, y, i) 0073 end); 0074 end 0075 in 0076 print("Mandelbrot demo\n"); 0077 mandelbrot() 0078 end