annotate fvector.yeti @ 35:1f80673af4c7
Make concat take a list of arbitrary length; test it, and improve test output
author |
Chris Cannam |
date |
Sat, 22 Dec 2012 10:08:06 +0000 |
parents |
22880f531e5a |
children |
fa49869bda51 |
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@20
|
8 ones n =
|
Chris@20
|
9 (a = zeros n;
|
Chris@20
|
10 for [0..n-1] do i:
|
Chris@20
|
11 a[i] := 1.0;
|
Chris@20
|
12 done;
|
Chris@20
|
13 a);
|
Chris@5
|
14
|
Chris@8
|
15 vector l is list?<number> -> ~double[] =
|
Chris@8
|
16 (arr = array(l);
|
Chris@8
|
17 len = length arr;
|
Chris@10
|
18 v = zeros len;
|
Chris@20
|
19 for [0..len-1] do i:
|
Chris@20
|
20 v[i] := arr[i];
|
Chris@20
|
21 done;
|
Chris@8
|
22 v);
|
Chris@8
|
23
|
Chris@20
|
24 list' a is ~double[] -> list<number> =
|
Chris@20
|
25 list a;
|
Chris@5
|
26
|
Chris@20
|
27 length' =
|
Chris@20
|
28 length . list';
|
Chris@5
|
29
|
Chris@23
|
30 equal v1 v2 =
|
Chris@23
|
31 list' v1 == list' v2;
|
Chris@23
|
32
|
Chris@20
|
33 copyOf v is ~double[] -> ~double[] =
|
Chris@20
|
34 Arrays#copyOf(v, list' v |> length);
|
Chris@9
|
35
|
Chris@26
|
36 rangeOf v start len is ~double[] -> number -> number -> ~double[] =
|
Chris@20
|
37 Arrays#copyOfRange(v, start, start + len);
|
Chris@12
|
38
|
Chris@24
|
39 resizedTo n v is number -> ~double[] -> ~double[] =
|
Chris@24
|
40 Arrays#copyOf(v, n);
|
Chris@24
|
41
|
Chris@35
|
42 concat vv is list?<~double[]> -> ~double[] =
|
Chris@35
|
43 (len = sum (map length' vv);
|
Chris@35
|
44 vout = zeros len;
|
Chris@35
|
45 var base = 0;
|
Chris@35
|
46 for vv do v:
|
Chris@35
|
47 vlen = length' v;
|
Chris@35
|
48 for [0..vlen-1] do i: vout[base + i] := v[i] done;
|
Chris@35
|
49 base := base + vlen;
|
Chris@35
|
50 done;
|
Chris@35
|
51 vout);
|
Chris@26
|
52
|
Chris@5
|
53 {
|
Chris@20
|
54 zeros, ones,
|
Chris@20
|
55 vector,
|
Chris@20
|
56 length = length',
|
Chris@20
|
57 list = list',
|
Chris@23
|
58 equal,
|
Chris@26
|
59 copyOf, rangeOf, resizedTo,
|
Chris@27
|
60 concat,
|
Chris@5
|
61 }
|
Chris@5
|
62
|