aboutsummaryrefslogtreecommitdiff
path: root/examples/complex.lua
diff options
context:
space:
mode:
Diffstat (limited to 'examples/complex.lua')
-rw-r--r--examples/complex.lua30
1 files changed, 30 insertions, 0 deletions
diff --git a/examples/complex.lua b/examples/complex.lua
new file mode 100644
index 0000000..62d6d0e
--- /dev/null
+++ b/examples/complex.lua
@@ -0,0 +1,30 @@
+local P = {}
+if _REQUIREDNAME == nil then
+ complex = P
+else
+ _G[_REQUIREDNAME] = P
+end
+
+-- imports
+-- local sqrt = math.sqrt
+
+-- no more external access after this point
+setfenv(1, P)
+
+function new (r, i) return {r=r, i=i} end
+
+i = new(0, 1)
+
+function add(c1, c2)
+ return new(c1.r + c2.r, c1.i + c2.i)
+end
+
+function sub(c1, c2)
+ return new(c1.r - c2.r, c1.i - c2.i)
+end
+
+function mul(c1, c2)
+ return new(c1.r * c2.r - c1.i * c2.i, c1.r * c2.i + c1.i * c2.r)
+end
+
+return P