author | Francesco Abbate <francesco.bbt@gmail.com> | 2012年11月12日 23:51:18 +0100 |
---|---|---|
committer | Francesco Abbate <francesco.bbt@gmail.com> | 2012年11月12日 23:51:18 +0100 |
commit | 70ee4afa111c6f7456f102b75b314f0f83fd010e (patch) | |
tree | 8dea547262fd7e264052ca858a00ac6fadf334c4 /matrix.lua | |
parent | ca4b11a05451867f6ec2df647c61044df3b69b50 (diff) | |
download | gsl-shell-70ee4afa111c6f7456f102b75b314f0f83fd010e.tar.gz |
-rw-r--r-- | matrix.lua | 24 |
diff --git a/matrix.lua b/matrix.lua index cbf24590..4e60391b 100644 --- a/matrix.lua +++ b/matrix.lua @@ -580,12 +580,9 @@ local complex_mt = { ffi.metatype(gsl_complex, complex_mt) local function matrix_new_unit(n) - local m = matrix_alloc(n, n) - for i=0, n-1 do - for j=0, n-1 do - m.data[i*n+j] = (i == j and 1 or 0) - end - end + local m = matrix.alloc(n, n) + for k = 0, n*n - 1 do m.data[k] = 0 end + for k = 0, n-1 do m.data[k*(n+1)] = 1 end return m end @@ -940,16 +937,11 @@ function matrix.svd(a) return u, s, v end -matrix.diag = function(d) - local n = #d - local m = d.alloc(n, n) - local mset, dget = m.set, d.get - for i=1, n do - for j= 1, n do - local x = (i ~= j and 0 or dget(d, i, 1)) - mset(m, i, j, x) - end - end +matrix.diag = function(t) + local n = #t + local m = matrix.alloc(n, n) + for k = 0, n*n - 1 do m.data[k] = 0 end + for k = 0, n-1 do m.data[k*(n+1)] = t[k+1] end return m end |