implement sophisticated operations with matrices.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2022 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2007-11-16 14:58:41 +00:00
parent 3fb3776842
commit d908c8633f
14 changed files with 764 additions and 165 deletions

View File

@@ -61,13 +61,18 @@ typedef enum {
matrix_min/2,
matrix_minarg/2,
matrix_sum/2,
matrix_sum_out/3,
matrix_add_to_all/2,
matrix_agg_lines/3,
matrix_agg_cols/3,
matrix_op/4,
matrix_op_to_all/4,
matrix_op_to_lines/4,
matrix_op_to_cols/4
matrix_op_to_cols/4,
matrix_shuffle/3,
matrix_transpose/2,
matrix_expand/3,
matrix_select/4
]).
:- load_foreign_files([matrix], [], init_matrix).
@@ -77,7 +82,7 @@ matrix_new(ints,Dims,Matrix) :-
new_ints_matrix_set(NDims, Dims, 0, Matrix).
matrix_new(floats,Dims,Matrix) :-
length(Dims,NDims),
new_float_matrix_set(NDims, Dims, 0.0, Matrix).
new_floats_matrix_set(NDims, Dims, 0.0, Matrix).
matrix_new(ints,Dims,Data,Matrix) :-
@@ -85,7 +90,7 @@ matrix_new(ints,Dims,Data,Matrix) :-
new_ints_matrix(NDims, Dims, Data, Matrix).
matrix_new(floats,Dims,Data,Matrix) :-
length(Dims,NDims),
new_float_matrix(NDims, Dims, Data, Matrix).
new_floats_matrix(NDims, Dims, Data, Matrix).
matrix_new_set(ints,Dims,Elem,Matrix) :-
@@ -112,6 +117,10 @@ matrix_agg_cols(M1,+,NM) :-
matrix_op(M1,M2,+,NM) :-
do_matrix_op(M1,M2,0,NM).
matrix_op(M1,M2,-,NM) :-
do_matrix_op(M1,M2,1,NM).
matrix_op(M1,M2,*,NM) :-
do_matrix_op(M1,M2,2,NM).
matrix_op_to_all(M1,+,Num,NM) :-
do_matrix_op_to_all(M1,0,Num,NM).
@@ -132,4 +141,7 @@ matrix_op_to_cols(M1,M2,+,NM) :-
/* other operations: *, logprod */
matrix_transpose(M1,M2) :-
matrix_shuffle(M1,[1,0],M2).