view 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
line wrap: on
line source
module fvector;

import java.util: Arrays;

zeros n =
    new double[n];

consts m n =
   (a = zeros n;
    for [0..n-1] do i:
        a[i] := m;
    done;
    a);

ones = consts 1.0;

vector l is list?<number> -> ~double[] =
   (arr = array(l);
    len = length arr;
    v = zeros len;
    for [0..len-1] do i:
        v[i] := arr[i];
    done;
    v);

list' a is ~double[] -> list<number> =
    list a;

length' =
    length . list';

floats a is ~double[] -> ~float[] =
   (len = length' a;
    f = new float[len];
    for [0..len-1] do i:
        f[i] := a[i];
    done;
    f);

equal v1 v2 =
    list' v1 == list' v2;

copyOf v is ~double[] -> ~double[] =
    Arrays#copyOf(v, list' v |> length);

rangeOf v start len is ~double[] -> number -> number -> ~double[] =
    Arrays#copyOfRange(v, start, start + len);

resizedTo n v is number -> ~double[] -> ~double[] =
    Arrays#copyOf(v, n);

concat vv is list?<~double[]> -> ~double[] =
   (len = sum (map length' vv);
    vout = zeros len;
    var base = 0;
    for vv do v: 
        vlen = length' v;
        for [0..vlen-1] do i: vout[base + i] := v[i] done;
        base := base + vlen;
    done;
    vout);

{
zeros, consts, ones,
vector,
length = length',
list = list',
floats,
equal,
copyOf, rangeOf, resizedTo,
concat,
}