package Math::GSL::CBLAS::Test; use base q{Test::Class}; use Test::More tests => 3; use Math::GSL::Test qw/:all/; use Math::GSL::CBLAS qw/:all/; use Math::GSL qw/:all/; use Math::GSL::Errno qw/:all/; use Data::Dumper; use strict; BEGIN{ gsl_set_error_handler_off() } sub make_fixture : Test(setup) { } sub teardown : Test(teardown) { } sub TEST_CBLAS : Tests { return; #disabled, need a better test my $A = [ 0.11, 0.12, 0.13, 0.21, 0.22, 0.23 ]; my $lda = 3; my $B = [ 1011, 1012, 1021, 1022, 1031, 1032 ]; my $ldb = 2; my $C = [0.00, 0.00, 0.00, 0.00 ]; my $ldc = 2.0; # Compute C = A * B # C = [ 367.76 368.12 ] # [ 674.06 674.72 ] my @stuff = cblas_sgemm ($CblasRowMajor, $CblasNoTrans, $CblasNoTrans, 2, 2, 3, 1.0, $A, $lda, $B, $ldb, 0.0, $C, $ldc); #warn Dumper [ @stuff ]; ok(is_similar_relative( \@stuff, [ 367.76, 368.12 , 674.06, 674.72 ], '.01' ),'cblas_sgemm'); } sub CBLAS_IDAMAX : Tests { my $N = 1; my $X = [ 0.247 ]; my $incX = 1; my $expected = 0; my $k = cblas_idamax($N, $X, $incX); is_similar($k, $expected, 1e-6, "$k ?= $expected"); } sub CBLAS_ISAMAX : Tests { my $N = 1; my $X = [ -0.388 ]; my $incX = 1; my $expected = 0; my $k = cblas_isamax($N, $X, $incX); is_similar($k, $expected, 1e-6, "$k ?= $expected"); } sub CBLAS_SASUM : Tests { my $N = 1; my $X = [ 0.239 ]; my $incX = 1; my $expected = 0.239; my $f = cblas_sasum($N, $X, $incX); ok(is_similar_relative($f, $expected, 0.01), "cblas_sasum: $f ?= $expected"); } sub CBLAS_DASUM : Tests(2) { my $N = 2; my $X = [ -0.413, 12 ]; my $incX = -1; my $expected = 0; my $f = cblas_dasum($N, $X, $incX); is_similar($f, $expected, 1e-6, "dasum: $f ?= $expected"); $incX = 1; $expected = 12.413; $f = cblas_dasum($N, $X, $incX); is_similar($f, $expected, 1e-6, "dasum: $f ?= $expected"); } Test::Class->runtests;