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
|