Report coefficient names in linear regression function - gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/lm-expr.lua
diff options
context:
space:
mode:
authorFrancesco Abbate <francesco.bbt@gmail.com>2013年01月06日 17:46:31 +0100
committerFrancesco Abbate <francesco.bbt@gmail.com>2013年01月06日 17:46:31 +0100
commitc53e011ec46d1582ee2c1ccd074fba0744d7cedc (patch)
tree8f692201b6c7abfbfe8cb3fe75ebf5d06286acbe /lm-expr.lua
parent7b8241248863f64114e7c18e748c2653920f6621 (diff)
downloadgsl-shell-c53e011ec46d1582ee2c1ccd074fba0744d7cedc.tar.gz
Report coefficient names in linear regression function
Diffstat (limited to 'lm-expr.lua')
-rw-r--r--lm-expr.lua 26
1 files changed, 26 insertions, 0 deletions
diff --git a/lm-expr.lua b/lm-expr.lua
new file mode 100644
index 00000000..3c59d7c3
--- /dev/null
+++ b/lm-expr.lua
@@ -0,0 +1,26 @@
+local format = string.format
+
+local function as_char(v, prio)
+ if type(v) == 'table' and v.name then
+ return (v.prio < prio and format("(%s)", v.name) or v.name)
+ end
+ return tostring(v)
+end
+
+local var_name
+
+local var_name_mt = {
+ __add = function(a, b) return var_name(format("%s + %s", as_char(a, 0), as_char(b, 0)), 0) end,
+ __mul = function(a, b) return var_name(format("%s * %s", as_char(a, 2), as_char(b, 2)), 2) end,
+ __sub = function(a, b) return var_name(format("%s - %s", as_char(a, 0), as_char(b, 0)), 0) end,
+ __div = function(a, b) return var_name(format("%s / %s", as_char(a, 2), as_char(b, 2)), 2) end,
+ __pow = function(a, b) return var_name(format("%s^%s", as_char(a, 10), as_char(b, 10)), 10) end,
+ __unm = function(a) return var_name(format("-%s", as_char(a, 1)), 1) end,
+}
+
+var_name = function (name, prio)
+ local t = {prio= prio or 10, name= name}
+ return setmetatable(t, var_name_mt)
+end
+
+return var_name
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月12日 10:41:24 +0000

AltStyle によって変換されたページ (->オリジナル) /