Fixed error in matrix.lua plus optimisations with method function caching. - gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
diff options
context:
space:
mode:
authorfrancesco <francesco.bbt@gmail.com>2011年02月10日 22:38:05 +0100
committerfrancesco <francesco.bbt@gmail.com>2011年02月10日 22:38:05 +0100
commit1bcb3786d4563ff571211e5c153cdca919c0b19c (patch)
treeeba4761adf8003b88748983b1336e24e85ad5cb0
parent14cbdb85f58a1bb6d93eb114aaae9561c21fef12 (diff)
downloadgsl-shell-1bcb3786d4563ff571211e5c153cdca919c0b19c.tar.gz
Fixed error in matrix.lua plus optimisations with method function caching.
Diffstat
-rw-r--r--matrix.lua 14
1 files changed, 9 insertions, 5 deletions
diff --git a/matrix.lua b/matrix.lua
index cd250adb..73dfd421 100644
--- a/matrix.lua
+++ b/matrix.lua
@@ -27,10 +27,11 @@ local sqrt, abs = math.sqrt, math.abs
local function matrix_f_set(m, f)
local r, c = gsl.dim(m)
+ local mset = m.set
for i = 1, r do
for j = 1, c do
local z = f(i, j)
- m:set(i, j, z)
+ mset(m, i, j, z)
end
end
return m
@@ -38,9 +39,10 @@ end
function gsl.matrix_reduce(m, f, accu)
local r, c = gsl.dim(m)
+ local mget = m.get
for i = 1, r do
for j = 1, c do
- accu = f(accu, m:get(i, j))
+ accu = f(accu, mget(m, i, j))
end
end
return accu
@@ -147,11 +149,13 @@ local function matrix_rows(m)
end
function gsl.set(d, s)
- local r, c = gsl.dim(m)
+ local r, c = gsl.dim(d)
+ local rs, cs = gsl.dim(s)
+ if rs ~= r or cs ~= c then error 'matrix dimensions does not match' end
local dset, sget = d.set, s.get
for i=1, r do
for j=1, c do
- dset(i, j, sget(i, j))
+ dset(d, i, j, sget(s, i, j))
end
end
end
@@ -161,7 +165,7 @@ function gsl.null(m)
local mset = m.set
for i=1, r do
for j=1, c do
- mset(i, j, 0)
+ mset(m, i, j, 0)
end
end
end
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月15日 10:08:21 +0000

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