From d068f0b3c11348a50c18af1ee3b0d2e5f38c4faf Mon Sep 17 00:00:00 2001 From: Matthew Sotoudeh Date: Fri, 17 May 2024 15:57:30 -0700 Subject: lua benchmarks --- lua_benchmark/tests/Lua-Benchmarks/qt.lua | 304 ++++++++++++++++++++++++++++++ 1 file changed, 304 insertions(+) create mode 100644 lua_benchmark/tests/Lua-Benchmarks/qt.lua (limited to 'lua_benchmark/tests/Lua-Benchmarks/qt.lua') diff --git a/lua_benchmark/tests/Lua-Benchmarks/qt.lua b/lua_benchmark/tests/Lua-Benchmarks/qt.lua new file mode 100644 index 0000000..f1de543 --- /dev/null +++ b/lua_benchmark/tests/Lua-Benchmarks/qt.lua @@ -0,0 +1,304 @@ +-- qt.lua,15 (one edge vector) +-- Julia sets via interval cell-mapping (quadtree version) + +--require"julia" local f=f + +local io=io +local root,exterior +local cx,cy +local Rxmin,Rxmax,Rymin,Rymax=-2.0,2.0,-2.0,2.0 +local white=1.0 +local black=0.0 +local gray=0.5 +local N=0 +local nE=0 +local E={} +local write=io.write + +local function output(a1,a2,a3,a4,a5,a6) + write( + a1 or ""," ", + a2 or ""," ", + a3 or ""," ", + a4 or ""," ", + a5 or ""," ", + a6 or ""," \n") +end + +local function imul(xmin,xmax,ymin,ymax) + local mm=xmin*ymin + local mM=xmin*ymax + local Mm=xmax*ymin + local MM=xmax*ymax + local m,M=mm,mm + if m>mM then m=mM elseif MMm then m=Mm elseif MMM then m=MM elseif M4.0 +end + +local function inside(xmin,xmax,ymin,ymax) + return xmin^2+ymin^2<=4.0 and xmin^2+ymax^2<=4.0 and + xmax^2+ymin^2<=4.0 and xmax^2+ymax^2<=4.0 +end + +local function newcell() + return {nil,nil,nil,nil,color=gray} +end + +local function addedge(a,b) + nE=nE+1 + E[nE]=b +end + +local function refine(q) + if q.color==gray then + if q[1]==nil then + q[1]=newcell() + q[2]=newcell() + q[3]=newcell() + q[4]=newcell() + else + refine(q[1]) + refine(q[2]) + refine(q[3]) + refine(q[4]) + end + end +end + +local function clip(q,xmin,xmax,ymin,ymax,o,oxmin,oxmax,oymin,oymax) + local ixmin,ixmax,iymin,iymax + if xmin>oxmin then ixmin=xmin else ixmin=oxmin end + if xmax=ixmax then return end + if ymin>oymin then iymin=ymin else iymin=oymin end + if ymax