annotate fvector.yeti @ 45:1e7430a95926
Can use doubles here, following fix in Yeti
author |
Chris Cannam |
date |
Mon, 24 Dec 2012 23:01:23 +0000 |
parents |
fa49869bda51 |
children |
771ae8178180 |
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@23
|
32 equal v1 v2 =
|
Chris@23
|
33 list' v1 == list' v2;
|
Chris@23
|
34
|
Chris@20
|
35 copyOf v is ~double[] -> ~double[] =
|
Chris@20
|
36 Arrays#copyOf(v, list' v |> length);
|
Chris@9
|
37
|
Chris@26
|
38 rangeOf v start len is ~double[] -> number -> number -> ~double[] =
|
Chris@20
|
39 Arrays#copyOfRange(v, start, start + len);
|
Chris@12
|
40
|
Chris@24
|
41 resizedTo n v is number -> ~double[] -> ~double[] =
|
Chris@24
|
42 Arrays#copyOf(v, n);
|
Chris@24
|
43
|
Chris@35
|
44 concat vv is list?<~double[]> -> ~double[] =
|
Chris@35
|
45 (len = sum (map length' vv);
|
Chris@35
|
46 vout = zeros len;
|
Chris@35
|
47 var base = 0;
|
Chris@35
|
48 for vv do v:
|
Chris@35
|
49 vlen = length' v;
|
Chris@35
|
50 for [0..vlen-1] do i: vout[base + i] := v[i] done;
|
Chris@35
|
51 base := base + vlen;
|
Chris@35
|
52 done;
|
Chris@35
|
53 vout);
|
Chris@26
|
54
|
Chris@5
|
55 {
|
Chris@36
|
56 zeros, consts, ones,
|
Chris@20
|
57 vector,
|
Chris@20
|
58 length = length',
|
Chris@20
|
59 list = list',
|
Chris@23
|
60 equal,
|
Chris@26
|
61 copyOf, rangeOf, resizedTo,
|
Chris@27
|
62 concat,
|
Chris@5
|
63 }
|
Chris@5
|
64
|