Chris@10: module fvector; Chris@5: Chris@9: import java.util: Arrays; Chris@9: Chris@20: zeros n = Chris@20: new double[n]; Chris@20: Chris@20: ones n = Chris@20: (a = zeros n; Chris@20: for [0..n-1] do i: Chris@20: a[i] := 1.0; Chris@20: done; Chris@20: a); Chris@5: Chris@8: vector l is list? -> ~double[] = Chris@8: (arr = array(l); Chris@8: len = length arr; Chris@10: v = zeros len; Chris@20: for [0..len-1] do i: Chris@20: v[i] := arr[i]; Chris@20: done; Chris@8: v); Chris@8: Chris@20: list' a is ~double[] -> list = Chris@20: list a; Chris@5: Chris@20: length' = Chris@20: length . list'; Chris@5: Chris@23: equal v1 v2 = Chris@23: list' v1 == list' v2; Chris@23: Chris@20: copyOf v is ~double[] -> ~double[] = Chris@20: Arrays#copyOf(v, list' v |> length); Chris@9: Chris@26: rangeOf v start len is ~double[] -> number -> number -> ~double[] = Chris@20: Arrays#copyOfRange(v, start, start + len); Chris@12: Chris@24: resizedTo n v is number -> ~double[] -> ~double[] = Chris@24: Arrays#copyOf(v, n); Chris@24: Chris@26: concat v1 v2 is ~double[] -> ~double[] -> ~double[] = Chris@26: (v1len = length' v1; Chris@26: v2len = length' v2; Chris@26: v = resizedTo (v1len + v2len) v1; Chris@26: for [0..v2len-1] do i: v[v1len + i] := v2[i] done; Chris@26: v); Chris@26: Chris@5: { Chris@20: zeros, ones, Chris@20: vector, Chris@20: length = length', Chris@20: list = list', Chris@23: equal, Chris@26: copyOf, rangeOf, resizedTo, Chris@26: concat Chris@5: } Chris@5: