annotate fvector.yeti @ 89:ef650ce77237

Start trying to adapt grids
author Chris Cannam
date Mon, 18 Mar 2013 21:24:04 +0000
parents 771ae8178180
children cf88733911fd
rev   line source
Chris@10 1 module fvector;
Chris@5 2
Chris@9 3 import java.util: Arrays;
Chris@9 4
Chris@20 5 zeros n =
Chris@20 6 new double[n];
Chris@20 7
Chris@36 8 consts m n =
Chris@20 9 (a = zeros n;
Chris@20 10 for [0..n-1] do i:
Chris@36 11 a[i] := m;
Chris@20 12 done;
Chris@20 13 a);
Chris@5 14
Chris@36 15 ones = consts 1.0;
Chris@36 16
Chris@8 17 vector l is list?<number> -> ~double[] =
Chris@8 18 (arr = array(l);
Chris@8 19 len = length arr;
Chris@10 20 v = zeros len;
Chris@20 21 for [0..len-1] do i:
Chris@20 22 v[i] := arr[i];
Chris@20 23 done;
Chris@8 24 v);
Chris@8 25
Chris@20 26 list' a is ~double[] -> list<number> =
Chris@20 27 list a;
Chris@5 28
Chris@20 29 length' =
Chris@20 30 length . list';
Chris@5 31
Chris@51 32 floats a is ~double[] -> ~float[] =
Chris@51 33 (len = length' a;
Chris@51 34 f = new float[len];
Chris@51 35 for [0..len-1] do i:
Chris@51 36 f[i] := a[i];
Chris@51 37 done;
Chris@51 38 f);
Chris@51 39
Chris@23 40 equal v1 v2 =
Chris@23 41 list' v1 == list' v2;
Chris@23 42
Chris@20 43 copyOf v is ~double[] -> ~double[] =
Chris@20 44 Arrays#copyOf(v, list' v |> length);
Chris@9 45
Chris@26 46 rangeOf v start len is ~double[] -> number -> number -> ~double[] =
Chris@20 47 Arrays#copyOfRange(v, start, start + len);
Chris@12 48
Chris@24 49 resizedTo n v is number -> ~double[] -> ~double[] =
Chris@24 50 Arrays#copyOf(v, n);
Chris@24 51
Chris@35 52 concat vv is list?<~double[]> -> ~double[] =
Chris@35 53 (len = sum (map length' vv);
Chris@35 54 vout = zeros len;
Chris@35 55 var base = 0;
Chris@35 56 for vv do v:
Chris@35 57 vlen = length' v;
Chris@35 58 for [0..vlen-1] do i: vout[base + i] := v[i] done;
Chris@35 59 base := base + vlen;
Chris@35 60 done;
Chris@35 61 vout);
Chris@26 62
Chris@5 63 {
Chris@36 64 zeros, consts, ones,
Chris@20 65 vector,
Chris@20 66 length = length',
Chris@20 67 list = list',
Chris@51 68 floats,
Chris@23 69 equal,
Chris@26 70 copyOf, rangeOf, resizedTo,
Chris@27 71 concat,
Chris@5 72 }
Chris@5 73