[pure-lang-svn] SF.net SVN: pure-lang:[861] pure/trunk/lib/matrices.pure
Status: Beta
Brought to you by:
agraef
From: <ag...@us...> - 2008-09-25 10:15:48
|
Revision: 861 http://pure-lang.svn.sourceforge.net/pure-lang/?rev=861&view=rev Author: agraef Date: 2008-09-25 10:15:40 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Make redim take the dimension as its first argument. This is much more convenient. Modified Paths: -------------- pure/trunk/lib/matrices.pure Modified: pure/trunk/lib/matrices.pure =================================================================== --- pure/trunk/lib/matrices.pure 2008-09-25 09:46:09 UTC (rev 860) +++ pure/trunk/lib/matrices.pure 2008-09-25 10:15:40 UTC (rev 861) @@ -262,19 +262,19 @@ private matrix_redim; extern expr* matrix_redim(expr* x, int n, int m); -redim x::matrix (n::int,m::int) +redim (n::int,m::int) x::matrix = matrix_redim x n m if n>=0 && m>=0 && n*m==#x; /* You can also redim a matrix to a given row size. In this case the row size must divide the total size of the matrix, */ -redim x::matrix m::int = redim x (#x div m,m) if m>0 && #x mod m==0; +redim m::int x::matrix = redim (#x div m,m) x if m>0 && #x mod m==0; = x if m==0 && #x==0; /* Convert a matrix to a row or column vector. */ -rowvector x::matrix = redim x (1,#x); -colvector x::matrix = redim x (#x,1); +rowvector x::matrix = redim (1,#x) x; +colvector x::matrix = redim (#x,1) x; /* Transpose a matrix. */ @@ -323,7 +323,7 @@ head x::matrix = x!0 if not null x; init x::matrix = x!!(0..#x-2) if not null x; last x::matrix = x!(#x-1) if not null x; -map f x::matrix = flip redim (dim x) $ colcat (map f (list x)); +map f x::matrix = redim (dim x) $ colcat (map f (list x)); scanl f a x::matrix = colcat (scanl f a (list x)); scanl1 f x::matrix = colcat (scanl1 f (list x)); scanr f a x::matrix = colcat (scanr f a (list x)); @@ -338,19 +338,19 @@ zip3dim x::matrix y::matrix z::matrix = min (dim x!0) (min (dim y!0) (dim z!0)),dim x!1; -zip x::matrix y::matrix = flip redim (zipdim x y) $ +zip x::matrix y::matrix = redim (zipdim x y) $ colcat (zip (list x) (list y)) if dim x!1==dim y!1; zip3 x::matrix y::matrix z::matrix - = flip redim (zip3dim x y z) $ + = redim (zip3dim x y z) $ colcat (zip3 (list x) (list y) (list z)) if dim x!1==dim y!1 && dim x!1==dim z!1; zipwith f x::matrix y::matrix - = flip redim (zipdim x y) $ + = redim (zipdim x y) $ colcat (zipwith f (list x) (list y)) if dim x!1==dim y!1; zipwith3 f x::matrix y::matrix z::matrix - = flip redim (zip3dim x y z) $ + = redim (zip3dim x y z) $ colcat (zipwith3 f (list x) (list y) (list z)) if dim x!1==dim y!1 && dim x!1==dim z!1; dowith f x::matrix y::matrix @@ -360,12 +360,12 @@ = dowith3 f (list x) (list y) (list z) if dim x!1==dim y!1 && dim x!1==dim z!1; -unzip x::matrix = flip redim (dim x) (colcat u), - flip redim (dim x) (colcat v) +unzip x::matrix = redim (dim x) (colcat u), + redim (dim x) (colcat v) when u,v = unzip (list x) end; -unzip3 x::matrix = flip redim (dim x) (colcat u), - flip redim (dim x) (colcat v), - flip redim (dim x) (colcat w) +unzip3 x::matrix = redim (dim x) (colcat u), + redim (dim x) (colcat v), + redim (dim x) (colcat w) when u,v,w = unzip3 (list x) end; /* Low-level operations for converting between matrices and raw pointers. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |