File indexing completed on 2024-05-19 15:23:15
0001 <!DOCTYPE html> 0002 <html><head> 0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 0004 <title>highlight.tig</title> 0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Tiger) - Theme (Breeze Light)"/> 0006 </head><body style="background-color:#ffffff;color:#1f1c1b"><pre> 0007 <span style="color:#898887;">/* Mandelbrot integer demo</span> 0008 <span style="color:#898887;"> * Released under the MIT License</span> 0009 <span style="color:#898887;"> */</span> 0010 0011 <span style="font-weight:bold;">let</span> 0012 <span style="color:#898887;">/* Basic types. */</span> 0013 <span style="font-weight:bold;">type</span> bool <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">int</span> 0014 <span style="font-weight:bold;">type</span> coord <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">int</span> 0015 <span style="font-weight:bold;">type</span> value <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">int</span> 0016 <span style="font-weight:bold;">type</span> array2d <span style="color:#ca60ca;">=</span> <span style="font-weight:bold;">array</span> <span style="font-weight:bold;">of</span> value 0017 <span style="font-weight:bold;">type</span> image2d <span style="color:#ca60ca;">=</span> { nrows <span style="color:#ca60ca;">:</span> coord<span style="color:#ca60ca;">,</span> ncols <span style="color:#ca60ca;">:</span> coord<span style="color:#ca60ca;">,</span> data <span style="color:#ca60ca;">:</span> array2d } 0018 0019 <span style="color:#898887;">/* Image creation. */</span> 0020 <span style="font-weight:bold;">function</span> image_new (ncols <span style="color:#ca60ca;">:</span> coord<span style="color:#ca60ca;">,</span> nrows <span style="color:#ca60ca;">:</span> coord) <span style="color:#ca60ca;">:</span> image2d <span style="color:#ca60ca;">=</span> 0021 image2d { nrows <span style="color:#ca60ca;">=</span> nrows<span style="color:#ca60ca;">,</span> ncols <span style="color:#ca60ca;">=</span> ncols<span style="color:#ca60ca;">,</span> 0022 data <span style="color:#ca60ca;">=</span> array2d[nrows <span style="color:#ca60ca;">*</span> ncols] <span style="font-weight:bold;">of</span> <span style="color:#b08000;">0</span> } 0023 0024 <span style="font-weight:bold;">function</span> image_set (input <span style="color:#ca60ca;">:</span> image2d<span style="color:#ca60ca;">,</span> col <span style="color:#ca60ca;">:</span> coord<span style="color:#ca60ca;">,</span> row <span style="color:#ca60ca;">:</span> coord<span style="color:#ca60ca;">,</span> 0025 value <span style="color:#ca60ca;">:</span> value) <span style="color:#ca60ca;">=</span> 0026 ( 0027 input<span style="color:#ca60ca;">.</span>data[row <span style="color:#ca60ca;">*</span> input<span style="color:#ca60ca;">.</span>ncols <span style="color:#ca60ca;">+</span> col] <span style="color:#ca60ca;">:=</span> value 0028 ) 0029 0030 <span style="font-weight:bold;">function</span> mandelbrot () <span style="color:#ca60ca;">=</span> 0031 <span style="font-weight:bold;">let</span> 0032 <span style="font-weight:bold;">type</span> fp <span style="color:#ca60ca;">=</span> <span style="color:#0057ae;">int</span> 0033 <span style="font-weight:bold;">var</span> X <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">int</span> <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">300</span> 0034 <span style="font-weight:bold;">var</span> Y <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">int</span> <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">300</span> 0035 <span style="font-weight:bold;">var</span> ima <span style="color:#ca60ca;">:</span> image2d <span style="color:#ca60ca;">:=</span> image_new (X<span style="color:#ca60ca;">,</span> Y) 0036 <span style="font-weight:bold;">var</span> fixsize<span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">int</span> <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">16834</span> 0037 0038 <span style="font-weight:bold;">function</span> mul(a <span style="color:#ca60ca;">:</span> fp<span style="color:#ca60ca;">,</span> b <span style="color:#ca60ca;">:</span> fp) <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">=</span> (a<span style="color:#ca60ca;">*</span>b)<span style="color:#ca60ca;">/</span>fixsize 0039 <span style="font-weight:bold;">function</span> frac(n <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">int</span><span style="color:#ca60ca;">,</span> d <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">int</span>) <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">=</span> (n<span style="color:#ca60ca;">*</span>fixsize)<span style="color:#ca60ca;">/</span>d 0040 0041 <span style="font-weight:bold;">var</span> xcenter <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> frac(<span style="color:#b08000;">0016</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">10000</span>) 0042 <span style="font-weight:bold;">var</span> ycenter <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> frac(<span style="color:#b08000;">8224</span><span style="color:#ca60ca;">,</span> <span style="color:#b08000;">10000</span>) 0043 <span style="font-weight:bold;">var</span> xmin <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> xcenter <span style="color:#ca60ca;">-</span> frac(<span style="color:#b08000;">5</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">100</span>) 0044 <span style="font-weight:bold;">var</span> ymin <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> ycenter <span style="color:#ca60ca;">-</span> frac(<span style="color:#b08000;">5</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">100</span>) 0045 <span style="font-weight:bold;">var</span> xmax <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> xcenter <span style="color:#ca60ca;">+</span> frac(<span style="color:#b08000;">5</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">100</span>) 0046 <span style="font-weight:bold;">var</span> ymax <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> ycenter <span style="color:#ca60ca;">+</span> frac(<span style="color:#b08000;">5</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">100</span>) 0047 <span style="font-weight:bold;">var</span> xs <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> (xmax <span style="color:#ca60ca;">-</span> xmin)<span style="color:#ca60ca;">/</span>X 0048 <span style="font-weight:bold;">var</span> ys <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> (ymax <span style="color:#ca60ca;">-</span> ymin)<span style="color:#ca60ca;">/</span>Y 0049 0050 <span style="font-weight:bold;">function</span> iterations(x<span style="color:#ca60ca;">:</span><span style="color:#0057ae;">int</span><span style="color:#ca60ca;">,</span> y<span style="color:#ca60ca;">:</span><span style="color:#0057ae;">int</span>) <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">int</span> <span style="color:#ca60ca;">=</span> 0051 <span style="font-weight:bold;">let</span> 0052 <span style="font-weight:bold;">var</span> i <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">int</span> <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">0</span> 0053 <span style="font-weight:bold;">var</span> p <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> xmin<span style="color:#ca60ca;">+</span>x<span style="color:#ca60ca;">*</span>xs 0054 <span style="font-weight:bold;">var</span> q <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> ymin<span style="color:#ca60ca;">+</span>y<span style="color:#ca60ca;">*</span>ys 0055 <span style="font-weight:bold;">var</span> x0 <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">0</span> 0056 <span style="font-weight:bold;">var</span> y0 <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">0</span> 0057 <span style="font-weight:bold;">var</span> xn <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">0</span> 0058 <span style="font-weight:bold;">var</span> four <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> frac(<span style="color:#b08000;">4</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">1</span>) 0059 <span style="font-weight:bold;">var</span> two <span style="color:#ca60ca;">:</span> fp <span style="color:#ca60ca;">:=</span> frac(<span style="color:#b08000;">2</span><span style="color:#ca60ca;">,</span><span style="color:#b08000;">1</span>) 0060 <span style="font-weight:bold;">in</span> 0061 <span style="font-weight:bold;">while</span> (mul(xn<span style="color:#ca60ca;">,</span>xn)<span style="color:#ca60ca;">+</span>mul(y0<span style="color:#ca60ca;">,</span>y0) <span style="color:#ca60ca;"><</span> four) <span style="color:#ca60ca;">&</span> (i <span style="color:#ca60ca;"><</span> <span style="color:#b08000;">256</span>) <span style="font-weight:bold;">do</span> 0062 ( 0063 i <span style="color:#ca60ca;">:=</span> i <span style="color:#ca60ca;">+</span> <span style="color:#b08000;">1</span><span style="color:#ca60ca;">;</span> 0064 xn <span style="color:#ca60ca;">:=</span> mul((x0<span style="color:#ca60ca;">+</span>y0)<span style="color:#ca60ca;">,</span>(x0<span style="color:#ca60ca;">-</span>y0)) <span style="color:#ca60ca;">+</span> p<span style="color:#ca60ca;">;</span> 0065 y0 <span style="color:#ca60ca;">:=</span> mul(two<span style="color:#ca60ca;">,</span>mul(x0<span style="color:#ca60ca;">,</span>y0)) <span style="color:#ca60ca;">+</span> q<span style="color:#ca60ca;">;</span> 0066 x0 <span style="color:#ca60ca;">:=</span> xn 0067 )<span style="color:#ca60ca;">;</span> 0068 i 0069 <span style="font-weight:bold;">end</span> 0070 0071 <span style="font-weight:bold;">in</span> 0072 0073 (<span style="font-weight:bold;">for</span> y <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">0</span> <span style="font-weight:bold;">to</span> (Y<span style="color:#ca60ca;">-</span><span style="color:#b08000;">1</span>) <span style="font-weight:bold;">do</span> 0074 <span style="font-weight:bold;">for</span> x <span style="color:#ca60ca;">:=</span> <span style="color:#b08000;">0</span> <span style="font-weight:bold;">to</span> (X<span style="color:#ca60ca;">-</span><span style="color:#b08000;">1</span>) <span style="font-weight:bold;">do</span> 0075 <span style="font-weight:bold;">let</span> 0076 <span style="font-weight:bold;">var</span> i <span style="color:#ca60ca;">:</span> <span style="color:#0057ae;">int</span> <span style="color:#ca60ca;">:=</span> iterations(x<span style="color:#ca60ca;">,</span>y) 0077 <span style="font-weight:bold;">in</span> 0078 image_set (ima<span style="color:#ca60ca;">,</span> x<span style="color:#ca60ca;">,</span> y<span style="color:#ca60ca;">,</span> i) 0079 <span style="font-weight:bold;">end</span>)<span style="color:#ca60ca;">;</span> 0080 <span style="font-weight:bold;">end</span> 0081 <span style="font-weight:bold;">in</span> 0082 <span style="color:#644a9b;">print</span>(<span style="color:#bf0303;">"Mandelbrot demo</span><span style="color:#3daee9;">\n</span><span style="color:#bf0303;">"</span>)<span style="color:#ca60ca;">;</span> 0083 mandelbrot() 0084 <span style="font-weight:bold;">end</span> 0085 </pre></body></html>