(* * * * * * * * * * *
* Resource Aware ML *
* * * * * * * * * * *
*
* File:
* dyade.raml
*
* Author:
* Jan Hoffmann (2010)
*
* Resource Bound:
* O(n*m)
*
* Description:
* The function dyade computes the (nxm)-matrix that results from the
* multiplication of two vectors (integer lists) of length n and
* length m, respectively.
*
* The computed bounds are tight.
*)
dyade : (L(int),L(int)) -> L(L(int))
dyade (l1,l2) = let _=tick(1) in
match l1 with
| nil -> nil
| (x::xs) -> (mult(x,l2))::dyade(xs,l2);
(*
eq(dyade(N,M),1,[],[N =0]).
eq(dyade(N,M),1,[mult(X,M),dyade(Np,M)],[N >=1,Np = N-1]).
*)
mult : (int,L(int)) -> L(int)
mult (n,l) = let _=tick(1) in
match l with
| nil -> nil
| (x::xs) -> n*x::mult(n,xs);
(*
eq(mult(N,M),1,[],[M=0]).
eq(mult(N,M),1,[mult(N,Mp)],[M>=1,Mp = M-1]).
*)
main = ()