Mercurial > hg > may
changeset 102:190ba28b64ab
Quicker sum and multiply for blocks
author | Chris Cannam |
---|---|
date | Fri, 22 Mar 2013 23:06:12 +0000 |
parents | 2bc6534248fe |
children | 1ff7bc742ec5 |
files | yetilab/block/blockfuncs.yeti |
diffstat | 1 files changed, 16 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/yetilab/block/blockfuncs.yeti Thu Mar 21 21:53:13 2013 +0000 +++ b/yetilab/block/blockfuncs.yeti Fri Mar 22 23:06:12 2013 +0000 @@ -2,9 +2,15 @@ module yetilab.block.blockfuncs; b = load yetilab.block.block; +vec = load yetilab.block.fvector; -sum' = - sum . b.list; +sum' bl = + (v = b.data bl; + tot = new double[1]; + for [0..length v - 1] do i: + tot[0] := tot[0] + v[i] + done; + tot[0]); mean bl = case b.length bl of @@ -13,7 +19,14 @@ esac; multiply b1 b2 = - b.fromList (map2 (*) (b.list b1) (b.list b2)); + (v1 = b.data b1; + v2 = b.data b2; + len = if length v1 < length v2 then length v1 else length v2 fi; + bb = vec.zeros len; + for [0..len-1] do i: + bb[i] := v1[i] * v2[i] + done; + b.block bb); divideBy n bl = b.fromList (map (/ n) (b.list bl));