From c632dc531e7a88a26ec351a9214e8dec8641026f Mon Sep 17 00:00:00 2001 From: Jonathan Leto Date: Sun, 11 May 2008 00:21:06 -0400 Subject: [PATCH] Initial support for the Matrix subsystem. --- Build.PL | 2 +- MANIFEST | 2 ++ Matrix.i | 52 +++++++++++++++++++++++++++++++++++++++------ lib/Math/GSL.pm | 7 +++--- lib/Math/GSL/Matrix/Test.pm | 19 +++++++++++++++++ t/Matrix.t | 2 ++ 6 files changed, 73 insertions(+), 11 deletions(-) rewrite Matrix.i (70%) create mode 100644 lib/Math/GSL/Matrix/Test.pm create mode 100644 t/Matrix.t diff --git a/Build.PL b/Build.PL index 8956d13..0060407 100644 --- a/Build.PL +++ b/Build.PL @@ -366,7 +366,7 @@ my $builder = $class->new( map { [ "$_.i" ] } qw/ Block CDF Complex Const Deriv - Errno Fit Machine ODEIV Poly PowInt + Errno Fit Machine Matrix ODEIV Poly PowInt Randist RNG Roots SF Types Vector / ], diff --git a/MANIFEST b/MANIFEST index ac22898..f8f6532 100644 --- a/MANIFEST +++ b/MANIFEST @@ -29,6 +29,7 @@ lib/Math/GSL.pm lib/Math/GSL/Block/Test.pm lib/Math/GSL/Complex/Test.pm lib/Math/GSL/Const/Test.pm +lib/Math/GSL/Matrix/Test.pm lib/Math/GSL/ODEIV/Test.pm lib/Math/GSL/Poly/Test.pm lib/Math/GSL/RNG/Test.pm @@ -78,6 +79,7 @@ t/Errno.t t/Fit.t t/GSL.t t/Machine.t +t/Matrix.t t/ODEIV.t t/Poly.t t/PowInt.t diff --git a/Matrix.i b/Matrix.i dissimilarity index 70% index 0714d47..27a1c8e 100644 --- a/Matrix.i +++ b/Matrix.i @@ -1,7 +1,45 @@ -%module Matrix -%{ -#include "gsl/gsl_matrix.h" -%} - -%include "gsl/gsl_matrix.h" - +%module Matrix +%{ +#include "/usr/local/include/gsl/gsl_matrix.h" +#include "/usr/local/include/gsl/gsl_matrix_double.h" +#include "/usr/local/include/gsl/gsl_matrix_int.h" +#include "/usr/local/include/gsl/gsl_matrix_complex_double.h" +%} + +%include "/usr/local/include/gsl/gsl_matrix.h" +%include "/usr/local/include/gsl/gsl_matrix_double.h" +%include "/usr/local/include/gsl/gsl_matrix_int.h" +%include "/usr/local/include/gsl/gsl_matrix_complex_double.h" + +%perlcode %{ + +@EXPORT_OK = qw/ + gsl_matrix_alloc gsl_matrix_calloc gsl_matrix_alloc_from_block + gsl_matrix_alloc_from_matrix gsl_vector_alloc_row_from_matrix + gsl_vector_alloc_col_from_matrix gsl_matrix_free gsl_matrix_submatrix + gsl_matrix_row gsl_matrix_column gsl_matrix_diagonal + gsl_matrix_subdiagonal gsl_matrix_superdiagonal gsl_matrix_subrow + gsl_matrix_subcolumn gsl_matrix_view_array + gsl_matrix_view_array_with_tda gsl_matrix_view_vector + gsl_matrix_view_vector_with_tda gsl_matrix_const_submatrix + gsl_matrix_const_row gsl_matrix_const_column gsl_matrix_const_diagonal + gsl_matrix_const_subdiagonal gsl_matrix_const_superdiagonal + gsl_matrix_const_subrow gsl_matrix_const_subcolumn + gsl_matrix_const_view_array gsl_matrix_const_view_array_with_tda + gsl_matrix_const_view_vector gsl_matrix_const_view_vector_with_tda + gsl_matrix_get gsl_matrix_set gsl_matrix_ptr gsl_matrix_const_ptr + gsl_matrix_set_zero gsl_matrix_set_identity gsl_matrix_set_all + gsl_matrix_fread gsl_matrix_fwrite gsl_matrix_fscanf gsl_matrix_fprintf + gsl_matrix_memcpy gsl_matrix_swap gsl_matrix_swap_rows + gsl_matrix_swap_columns gsl_matrix_swap_rowcol gsl_matrix_transpose + gsl_matrix_transpose_memcpy gsl_matrix_max gsl_matrix_min + gsl_matrix_minmax gsl_matrix_max_index gsl_matrix_min_index + gsl_matrix_minmax_index gsl_matrix_isnull gsl_matrix_ispos + gsl_matrix_isneg gsl_matrix_isnonneg gsl_matrix_add gsl_matrix_sub + gsl_matrix_mul_elements gsl_matrix_div_elements gsl_matrix_scale + gsl_matrix_add_constant gsl_matrix_add_diagonal gsl_matrix_get_row + gsl_matrix_get_col gsl_matrix_set_row gsl_matrix_set_col + /; +%EXPORT_TAGS = ( all => [ @EXPORT_OK ] ); + +%} diff --git a/lib/Math/GSL.pm b/lib/Math/GSL.pm index d4f0c2c..52f1aea 100644 --- a/lib/Math/GSL.pm +++ b/lib/Math/GSL.pm @@ -88,9 +88,10 @@ sub new # sync this with Build.PL's list of subsystems sub subsystems { - return qw/ Block - Const Complex CDF - Errno Fit Machine + return qw/ + Block Const Complex + CDF Errno Fit + Machine Matrix ODEIV Poly PowInt Randist Roots RNG SF Types Vector diff --git a/lib/Math/GSL/Matrix/Test.pm b/lib/Math/GSL/Matrix/Test.pm new file mode 100644 index 0000000..9e84eb6 --- /dev/null +++ b/lib/Math/GSL/Matrix/Test.pm @@ -0,0 +1,19 @@ +package Math::GSL::Matrix::Test; +use base q{Test::Class}; +use Test::More; +use Math::GSL::Matrix qw/:all/; +use Math::GSL qw/is_similar/; +use strict; + +sub make_fixture : Test(setup) { +} + +sub teardown : Test(teardown) { +} + +sub GSL_MATRIX_ALLOC : Test { + my $matrix = gsl_matrix_alloc(5,5); + isa_ok($matrix, 'Math::GSL::Matrix'); +} + +1; diff --git a/t/Matrix.t b/t/Matrix.t new file mode 100644 index 0000000..4b0e1c0 --- /dev/null +++ b/t/Matrix.t @@ -0,0 +1,2 @@ +use Math::GSL::Matrix::Test; +Test::Class->runtests; -- 2.11.4.GIT