mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
samples: add Terra samples
source: https://github.com/zdevito/terra/tree/master/tests
This commit is contained in:
138
samples/Terra/vecarith.t
Normal file
138
samples/Terra/vecarith.t
Normal file
@@ -0,0 +1,138 @@
|
||||
--[[
|
||||
|
||||
-
|
||||
+
|
||||
|
||||
*
|
||||
/
|
||||
%
|
||||
|
||||
^
|
||||
and
|
||||
or
|
||||
~= == < > >= <=
|
||||
<< >>
|
||||
|
||||
]]
|
||||
|
||||
|
||||
N = 2
|
||||
|
||||
types = {int,int64,uint64,float,double}
|
||||
names = {"i","l","u","f","d"}
|
||||
max = 16
|
||||
|
||||
for i = 1,#types do
|
||||
local fenv = getfenv()
|
||||
for j = 0,max do
|
||||
local x = global(vector(types[i],N));
|
||||
(terra() x = j end)()
|
||||
fenv[names[i]..j] = x
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
d375 = global(vector(double,N))
|
||||
d175 = global(vector(double,N))
|
||||
terra init()
|
||||
d375 = 3.75
|
||||
d175 = 1.75
|
||||
end
|
||||
init()
|
||||
|
||||
terra test0()
|
||||
var a = i1 + i3
|
||||
var b = l1 + l2
|
||||
var c = u1 + u2
|
||||
var d = f1 + f2
|
||||
var e = d1 + d2
|
||||
return (a + b + c + d + e)[1]
|
||||
end
|
||||
|
||||
terra test1()
|
||||
var a = i1 - i3
|
||||
var b = l1 - l2
|
||||
var c = u1 - u2
|
||||
var d = f1 - f2
|
||||
var e = d1 - d2
|
||||
return (a - b - c - d - e)[1]
|
||||
end
|
||||
|
||||
terra test2()
|
||||
var a = i2 * i3
|
||||
var b = l3 * l2
|
||||
var c = u3 * u2
|
||||
var d = f1 * f2
|
||||
var e = d3 * d2
|
||||
return (a * b * c * d * e)[1]
|
||||
end
|
||||
|
||||
terra test3()
|
||||
var a = i2 / i3 + i1
|
||||
var b = l3 / l2 + i1
|
||||
var c = u3 / u2
|
||||
var d = f1 / f2
|
||||
var e = d3 / d2
|
||||
return (a * b * c * d * e)[1]
|
||||
end
|
||||
|
||||
terra test4()
|
||||
var a = i2 % i3
|
||||
var b = l3 % l4
|
||||
var c = u3 % u2
|
||||
var d = f1 % f2
|
||||
var e = d375 % d2
|
||||
return ((a == i2) and (b == l3) and (d == f1) and (e == d175))[1]
|
||||
end
|
||||
|
||||
terra test5()
|
||||
var a = i2 ^ i3
|
||||
var b = l3 ^ l4
|
||||
var c = u3 ^ u2
|
||||
return ((a == 1) and (b == l7) and (c == u1))[1]
|
||||
end
|
||||
|
||||
terra test6()
|
||||
var a = i2 and i3
|
||||
var b = l3 and l4
|
||||
var c = u3 and u2
|
||||
return ((a == 2) and (b == l0) and (c == u2))[1]
|
||||
end
|
||||
|
||||
terra test7()
|
||||
var a = i2 or i3
|
||||
var b = l3 or l4
|
||||
var c = u3 or u2
|
||||
return ((a == 3) and (b == l7) and (c == u3))[1]
|
||||
end
|
||||
|
||||
|
||||
terra test8()
|
||||
var a0,a1 = i2 ~= i3, i2 == i3
|
||||
var b0,b1 = i2 < i3, i2 >= i3
|
||||
var c0,c1 = i2 > i3, i2 <= i3
|
||||
|
||||
return (a0 and not a1 and b0 and not b1 and not c0 and c1)[1]
|
||||
end
|
||||
|
||||
terra test9()
|
||||
var a0, a1 = i8 >> i1, i8 << i1
|
||||
var b0, b1 = -i8 >> i1, -i8 << i1
|
||||
return (a0 == i4 and a1 == i16 and b0 == -i4 and b1 == -i16)[1]
|
||||
end
|
||||
|
||||
|
||||
local test = require("test")
|
||||
|
||||
test.eq(test0(),16)
|
||||
test.eq(test1(),2)
|
||||
test.eq(test2(),2592)
|
||||
test.eq(test3(),1.5)
|
||||
|
||||
test.eq(test4(),true)
|
||||
|
||||
test.eq(test5(),true)
|
||||
test.eq(test6(),true)
|
||||
test.eq(test7(),true)
|
||||
test.eq(test8(),true)
|
||||
test.eq(test9(),true)
|
||||
Reference in New Issue
Block a user