Mercurial > hg > may
changeset 17:e2c834980152
Experiment with making double[] vectors tagged types (to increase opacity)
author | Chris Cannam |
---|---|
date | Mon, 17 Dec 2012 12:47:08 +0000 |
parents | e8d404787c35 |
children | 12c6f103ba8e |
files | block.yeti |
diffstat | 1 files changed, 41 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/block.yeti Mon Dec 17 12:47:08 2012 +0000 @@ -0,0 +1,41 @@ +module block; + +import java.util: Arrays; + +zeros n = + Block new double[n]; + +deblock b is (Block ~double[]) -> ~double[] = + case b of Block a: a esac; + +ones n = + (v = deblock (zeros n); + for [0..n-1] do i: v[i] := 1.0 done; + Block v); + +block l is list?<number> -> (Block ~double[]) = + (arr = array(l); + len = length arr; + v = deblock (zeros len); + for [0..len-1] do i: v[i] := arr[i] done; + Block v); + +arrayWrap b is (Block ~double[]) -> array<number> = + array(deblock b); + +blockLength b = + length (arrayWrap b); + +copyOfBlock b is (Block ~double[]) -> (Block ~double[]) = + (v = deblock b; + Block Arrays#copyOf(v, length(arrayWrap b))); + +subBlock b start len is (Block ~double[]) -> number -> number -> (Block ~double[]) = + Block Arrays#copyOfRange(deblock b, start, start + len); + +{ +zeros, ones, block, +blockLength, +copyOfBlock, subBlock, +} +