From cadee5563fda58d4826dcc827eb0884ddb85e290 Mon Sep 17 00:00:00 2001 From: Dibyendu Majumdar Date: Sun, 1 Nov 2020 21:56:51 +0000 Subject: [PATCH] issue #198 add another test for sieve - but using while loop (cherry picked from commit a3bf9dc10e75e134e77d197410c0dab76b219148) --- tests/comptests/17_iarray_sieve.lua | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tests/comptests/17_iarray_sieve.lua diff --git a/tests/comptests/17_iarray_sieve.lua b/tests/comptests/17_iarray_sieve.lua new file mode 100644 index 0000000..34f6d94 --- /dev/null +++ b/tests/comptests/17_iarray_sieve.lua @@ -0,0 +1,38 @@ +local sieve = compiler.load([[ + local i: integer, k: integer, prime: integer, count: integer + local flags: integer[] = table.intarray(8190) + + local iter: integer = 0 + while iter <= 100000 do + count = 0 + i = 0 + while i <= 8190 do + flags[i] = 1 + i = i + 1 + end + i = 0 + while i <= 8190 do + if flags[i] == 1 then + prime = i + i + 3; + k = i + prime + while k <= 8190 do + flags[k] = 0 + k = k + prime + end + count = count + 1 + end + i = i + 1 + end + iter = iter + 1 + end + return count +]] +) +assert(sieve and type(sieve) == 'function') + +local t1 = os.clock() +local count = sieve() +local t2 = os.clock() +print("time taken ", t2-t1) +print(count) +assert(count == 1899)