Skip to content

Instantly share code, notes, and snippets.

@cjfuller
Created November 4, 2013 22:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cjfuller/7310032 to your computer and use it in GitHub Desktop.
Save cjfuller/7310032 to your computer and use it in GitHub Desktop.
Valgrind output for nmatrix b530a730ec0ed0ab12b32f089c585b0b13321a17
install -c tmp/x86_64-linux/nmatrix/2.0.0/nmatrix.so lib//nmatrix.so
valgrind --tool=memcheck --num-callers=15 --partial-loads-ok=yes --undef-value-errors=no ruby -S rspec -Ilib:ext spec
==12531== Memcheck, a memory error detector
==12531== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==12531== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==12531== Command: ruby -S rspec -Ilib:ext spec
==12531==
NMatrix {
creates a matrix with the new constructor OK (0.01s)
adequately requires information to access a single entry of a dense matrix OK (0.02s)
calculates exact determinants on small square matrices OK (0.00s)
calculates determinants OK (0.02s)
allows casting to Ruby objects OK (0.01s)
allows casting from Ruby objects OK (0.00s)
allows stype casting of a dim 2 matrix between dense, sparse, and list (different dtypes) OK (0.03s)
fills dense Ruby object matrix with nil OK (0.00s)
fills dense with individual assignments OK (0.01s)
fills dense with a single mass assignment OK (0.00s)
fills dense with a single mass assignment, with dtype specified ==12531== Invalid read of size 8
==12531== at 0x4EBC158: mark_locations_array (gc.c:2321)
==12531== by 0xB69B83F: __nm_mark_value_container (ruby_nmatrix.c:482)
==12531== by 0x4EBC8C9: gc_mark_children (gc.c:2827)
==12531== by 0x4EBD770: gc_marks (gc.c:2905)
==12531== by 0x4EBF7F2: garbage_collect.part.40 (gc.c:3040)
==12531== by 0x4EC0B25: vm_xmalloc (gc.c:1953)
==12531== by 0xB69DB84: interpret_initial_value (ruby_nmatrix.c:2660)
==12531== by 0xB6A1A28: nm_init_new_version (ruby_nmatrix.c:1068)
==12531== by 0xB6A2362: nm_init (ruby_nmatrix.c:1209)
==12531== by 0x4FD8960: vm_call0_body (vm_eval.c:117)
==12531== by 0x4FDA170: rb_funcall2 (vm_eval.c:49)
==12531== by 0x4EFCDAF: rb_class_new_instance (object.c:1761)
==12531== by 0x4FCE5EE: vm_call_cfunc_with_frame (vm_insnhelper.c:1469)
==12531== by 0x4FDC50C: vm_call_method (vm_insnhelper.c:1559)
==12531== by 0x4FD3099: vm_exec_core (insns.def:1017)
==12531== Address 0x7feffdb40 is just below the stack ptr. To suppress, use: --workaround-gcc296-bugs=yes
==12531==
OK (0.15s)
dense handles missing initialization value OK (0.00s)
handles dense construction OK (0.00s)
calculates the complex conjugate in-place OK (0.00s)
converts from list to yale properly OK (0.01s)
should return an enumerator when each is called without a block ==12531== Warning: client switching stacks? SP change: 0x7feffdee8 --> 0x40d1fe8
==12531== to suppress, use: --max-stackframe=34274983680 or greater
==12531== Warning: client switching stacks? SP change: 0x40d1448 --> 0x7feffdef0
==12531== to suppress, use: --max-stackframe=34274986664 or greater
==12531== Warning: client switching stacks? SP change: 0x7feffdee8 --> 0x4151fe8
==12531== to suppress, use: --max-stackframe=34274459392 or greater
==12531== further instances of this message will not be shown.
OK (0.02s)
should iterate through element 256 without a segfault OK (0.01s)
dense {
can be duplicated OK (0.01s)
enforces shape boundaries OK (0.00s)
sets and gets OK (0.00s)
sets and gets references OK (0.00s)
Ruby object {
allows iteration of matrices OK (0.00s)
allows storage-based iteration of matrices :dense
:object
OK (0.01s)
} (0.01s)
non-Ruby object {
allows iteration of matrices OK (0.00s)
allows storage-based iteration of matrices :dense
:int64
OK (0.00s)
} (0.01s)
} (0.04s)
(storage: dense) {
gets default value OK (0.00s)
returns shape and dim OK (0.00s)
returns number of rows and columns OK (0.00s)
} (0.01s)
list {
can be duplicated OK (0.01s)
enforces shape boundaries OK (0.00s)
sets and gets OK (0.00s)
sets and gets references OK (0.00s)
Ruby object {
allows iteration of matrices OK (0.01s)
allows storage-based iteration of matrices :list
:object
OK (0.00s)
} (0.02s)
non-Ruby object {
allows iteration of matrices OK (0.00s)
allows storage-based iteration of matrices :list
:int64
OK (0.00s)
} (0.01s)
} (0.05s)
(storage: list) {
gets default value OK (0.00s)
returns shape and dim OK (0.00s)
returns number of rows and columns OK (0.00s)
} (0.01s)
yale {
can be duplicated OK (0.01s)
enforces shape boundaries OK (0.00s)
sets and gets OK (0.01s)
sets and gets references OK (0.00s)
Ruby object {
allows iteration of matrices OK (0.01s)
allows storage-based iteration of matrices :yale
:object
OK (0.01s)
} (0.02s)
non-Ruby object {
allows iteration of matrices OK (0.01s)
allows storage-based iteration of matrices :yale
:int64
OK (0.01s)
} (0.02s)
} (0.06s)
dense {
should return the matrix being iterated over when each is called with a block OK (0.01s)
should return the matrix being iterated over when each_stored_with_indices is called with a block OK (0.00s)
} (0.01s)
list {
should return the matrix being iterated over when each_stored_with_indices is called with a block OK (0.00s)
should return an enumerator when each_stored_with_indices is called without a block OK (0.00s)
} (0.01s)
yale {
should return the matrix being iterated over when each_stored_with_indices is called with a block OK (0.01s)
should return an enumerator when each_stored_with_indices is called without a block OK (0.00s)
} (0.01s)
} (0.55s)
NMatrix enumeration for {
dense {
should visit each cell in the matrix as if dense, making indices available OK (0.01s)
should visit each cell in the slice as if dense, making indices available OK (0.00s)
should correctly map to a matrix with a single element OK (0.01s)
should correctly map to a matrix with multiple elements OK (0.00s)
} (0.03s)
yale {
should iterate properly along each row of a slice OK (0.02s)
should iterate along diagonal portion of A array OK (0.01s)
should iterate along non-diagonal portion of A array OK (0.01s)
should iterate along a sliced diagonal portion of an A array OK (0.00s)
should iterate along a sliced non-diagonal portion of a sliced A array OK (0.00s)
should visit each stored element of the matrix in order by indices OK (0.01s)
should visit each stored element of the slice in order by indices OK (0.00s)
should visit each cell in the matrix as if dense, making indices available OK (0.00s)
should visit each cell in the slice as if dense, making indices available OK (0.00s)
} (0.07s)
list {
should visit each cell in the matrix as if dense, making indices available OK (0.01s)
should visit each cell in the slice as if dense, making indices available OK (0.00s)
should correctly map to a matrix with a single element OK (0.01s)
should correctly map to a matrix with multiple elements OK (0.01s)
} (0.03s)
} (0.12s)
Slice operation {
for dense {
should correctly return a row of a reference-slice OK (0.01s)
should return correct supershape OK (0.00s)
should have #is_ref? method OK (0.02s)
reference should compare with non-reference OK (0.00s)
with copying {
should return an NMatrix OK (0.00s)
should return a copy of 2x2 matrix to self elements OK (0.01s)
should return a 1x2 matrix without refs to self elements OK (0.00s)
should return a 2x1 matrix without refs to self elements OK (0.00s)
should be correct slice for range 0..2 and 0...3 OK (0.00s)
should cast copied slice from DENSE to DENSE OK (0.01s)
should cast copied slice from DENSE to LIST OK (0.01s)
should cast copied slice from DENSE to YALE OK (0.01s)
} (0.04s)
by reference {
should return an NMatrix OK (0.00s)
should return a 2x2 matrix with refs to self elements OK (0.00s)
should return a 1x2 vector with refs to self elements OK (0.00s)
should return a 2x1 vector with refs to self elements OK (0.00s)
should slice again NVector is deprecated and not guaranteed to work any longer
OK (0.00s)
should be correct slice for range 0..2 and 0...3 OK (0.00s)
should correctly handle :* slice notation OK (0.00s)
handles byte dot int16 matrix multiplication OK (0.01s)
handles byte dot int32 matrix multiplication OK (0.01s)
handles byte dot int64 matrix multiplication OK (0.01s)
handles byte dot float32 matrix multiplication OK (0.01s)
handles byte dot float64 matrix multiplication OK (0.01s)
handles byte dot rational64 matrix multiplication OK (0.01s)
handles byte dot rational128 matrix multiplication OK (0.01s)
handles int8 dot int16 matrix multiplication OK (0.01s)
handles int8 dot int32 matrix multiplication OK (0.01s)
handles int8 dot int64 matrix multiplication OK (0.00s)
handles int8 dot float32 matrix multiplication OK (0.01s)
handles int8 dot float64 matrix multiplication OK (0.01s)
handles int8 dot rational64 matrix multiplication OK (0.00s)
handles int8 dot rational128 matrix multiplication OK (0.01s)
handles int16 dot byte matrix multiplication OK (0.00s)
handles int16 dot int8 matrix multiplication OK (0.00s)
handles int16 dot int16 matrix multiplication OK (0.00s)
handles int16 dot int32 matrix multiplication OK (0.01s)
handles int16 dot int64 matrix multiplication OK (0.00s)
handles int16 dot float32 matrix multiplication OK (0.00s)
handles int16 dot float64 matrix multiplication OK (0.00s)
handles int16 dot rational64 matrix multiplication OK (0.01s)
handles int16 dot rational128 matrix multiplication OK (0.01s)
handles int32 dot byte matrix multiplication OK (0.00s)
handles int32 dot int8 matrix multiplication OK (0.00s)
handles int32 dot int16 matrix multiplication OK (0.00s)
handles int32 dot int32 matrix multiplication OK (0.00s)
handles int32 dot int64 matrix multiplication OK (0.01s)
handles int32 dot float32 matrix multiplication OK (0.00s)
handles int32 dot float64 matrix multiplication OK (0.00s)
handles int32 dot rational64 matrix multiplication OK (0.00s)
handles int32 dot rational128 matrix multiplication OK (0.00s)
handles int64 dot byte matrix multiplication OK (0.00s)
handles int64 dot int8 matrix multiplication OK (0.00s)
handles int64 dot int16 matrix multiplication OK (0.00s)
handles int64 dot int32 matrix multiplication OK (0.00s)
handles int64 dot int64 matrix multiplication OK (0.00s)
handles int64 dot float32 matrix multiplication OK (0.00s)
handles int64 dot float64 matrix multiplication OK (0.01s)
handles int64 dot rational64 matrix multiplication OK (0.01s)
handles int64 dot rational128 matrix multiplication OK (0.00s)
handles float32 dot byte matrix multiplication OK (0.00s)
handles float32 dot int8 matrix multiplication OK (0.00s)
handles float32 dot int16 matrix multiplication OK (0.00s)
handles float32 dot int32 matrix multiplication OK (0.00s)
handles float32 dot int64 matrix multiplication OK (0.00s)
handles float32 dot float32 matrix multiplication OK (0.00s)
handles float32 dot float64 matrix multiplication OK (0.01s)
handles float32 dot rational64 matrix multiplication OK (0.01s)
handles float32 dot rational128 matrix multiplication OK (0.01s)
handles float64 dot byte matrix multiplication OK (0.00s)
handles float64 dot int8 matrix multiplication OK (0.00s)
handles float64 dot int16 matrix multiplication OK (0.00s)
handles float64 dot int32 matrix multiplication OK (0.00s)
handles float64 dot int64 matrix multiplication OK (0.00s)
handles float64 dot float32 matrix multiplication OK (0.00s)
handles float64 dot float64 matrix multiplication OK (0.00s)
handles float64 dot rational64 matrix multiplication OK (0.00s)
handles float64 dot rational128 matrix multiplication OK (0.00s)
handles rational64 dot byte matrix multiplication OK (0.00s)
handles rational64 dot int8 matrix multiplication OK (0.00s)
handles rational64 dot int16 matrix multiplication OK (0.00s)
handles rational64 dot int32 matrix multiplication OK (0.00s)
handles rational64 dot int64 matrix multiplication OK (0.00s)
handles rational64 dot float32 matrix multiplication OK (0.00s)
handles rational64 dot float64 matrix multiplication OK (0.00s)
handles rational64 dot rational64 matrix multiplication OK (0.00s)
handles rational64 dot rational128 matrix multiplication OK (0.01s)
handles rational128 dot byte matrix multiplication OK (0.00s)
handles rational128 dot int8 matrix multiplication OK (0.00s)
handles rational128 dot int16 matrix multiplication OK (0.00s)
handles rational128 dot int32 matrix multiplication OK (0.00s)
handles rational128 dot int64 matrix multiplication OK (0.00s)
handles rational128 dot float32 matrix multiplication OK (0.00s)
handles rational128 dot float64 matrix multiplication OK (0.00s)
handles rational128 dot rational64 matrix multiplication OK (0.00s)
handles rational128 dot rational128 matrix multiplication OK (0.00s)
should be cleaned up by garbage collector without errors OK (0.28s)
should cast a square reference-slice from DENSE to DENSE OK (0.00s)
should cast a rectangular reference-slice from DENSE to DENSE OK (0.00s)
should cast a square full-matrix reference-slice from DENSE to DENSE OK (0.00s)
should cast a square reference-slice from DENSE to LIST OK (0.00s)
should cast a rectangular reference-slice from DENSE to LIST OK (0.00s)
should cast a square full-matrix reference-slice from DENSE to LIST OK (0.00s)
should cast a square reference-slice from DENSE to YALE OK (0.00s)
should cast a rectangular reference-slice from DENSE to YALE OK (0.00s)
should cast a square full-matrix reference-slice from DENSE to YALE OK (0.00s)
operations {
correctly transposes slices OK (0.00s)
adds slices OK (0.01s)
scalar adds to slices OK (0.00s)
compares slices to scalars OK (0.00s)
iterates only over elements in the slice OK (0.00s)
iterates with index only over elements in the slice OK (0.00s)
} (0.03s)
} (0.79s)
} (0.87s)
for list {
should correctly return a row of a reference-slice OK (0.01s)
should iterate across a partial row of stored indices OK (0.00s)
should iterate across a row of stored indices OK (0.00s)
should iterate across a submatrix of stored indices OK (0.00s)
should return correct supershape OK (0.00s)
should have #is_ref? method OK (0.00s)
reference should compare with non-reference OK (0.00s)
with copying {
should return an NMatrix OK (0.00s)
should return a copy of 2x2 matrix to self elements OK (0.00s)
should return a 1x2 matrix without refs to self elements OK (0.00s)
should return a 2x1 matrix without refs to self elements OK (0.00s)
should be correct slice for range 0..2 and 0...3 OK (0.00s)
should cast copied slice from LIST to DENSE OK (0.01s)
should cast copied slice from LIST to LIST OK (0.01s)
should cast copied slice from LIST to YALE OK (0.01s)
} (0.05s)
by reference {
should return an NMatrix OK (0.00s)
should return a 2x2 matrix with refs to self elements OK (0.00s)
should return a 1x2 vector with refs to self elements OK (0.00s)
should return a 2x1 vector with refs to self elements OK (0.00s)
should slice again NVector is deprecated and not guaranteed to work any longer
OK (0.00s)
should be correct slice for range 0..2 and 0...3 OK (0.00s)
should correctly handle :* slice notation OK (0.00s)
should be cleaned up by garbage collector without errors OK (0.27s)
should cast a square reference-slice from LIST to DENSE OK (0.01s)
should cast a rectangular reference-slice from LIST to DENSE OK (0.00s)
should cast a square full-matrix reference-slice from LIST to DENSE OK (0.00s)
should cast a square reference-slice from LIST to LIST OK (0.00s)
should cast a rectangular reference-slice from LIST to LIST OK (0.00s)
should cast a square full-matrix reference-slice from LIST to LIST OK (0.00s)
should cast a square reference-slice from LIST to YALE OK (0.00s)
should cast a rectangular reference-slice from LIST to YALE OK (0.00s)
should cast a square full-matrix reference-slice from LIST to YALE OK (0.00s)
} (0.33s)
} (0.42s)
for yale {
should correctly return a row of a reference-slice OK (0.01s)
should binary search for the left boundary of a partial row of stored indices correctly OK (0.01s)
should iterate across a row of stored indices OK (0.00s)
should iterate across a submatrix of stored indices OK (0.00s)
should return correct supershape OK (0.00s)
should have #is_ref? method OK (0.00s)
reference should compare with non-reference OK (0.00s)
with copying {
should return an NMatrix OK (0.00s)
should return a copy of 2x2 matrix to self elements OK (0.00s)
should return a 1x2 matrix without refs to self elements OK (0.00s)
should return a 2x1 matrix without refs to self elements OK (0.00s)
should be correct slice for range 0..2 and 0...3 OK (0.00s)
should cast copied slice from YALE to DENSE OK (0.01s)
should cast copied slice from YALE to LIST OK (0.01s)
should cast copied slice from YALE to YALE OK (0.01s)
} (0.05s)
by reference {
should return an NMatrix OK (0.00s)
should return a 2x2 matrix with refs to self elements OK (0.00s)
should return a 1x2 vector with refs to self elements OK (0.00s)
should return a 2x1 vector with refs to self elements OK (0.00s)
should slice again NVector is deprecated and not guaranteed to work any longer
OK (0.00s)
should be correct slice for range 0..2 and 0...3 OK (0.00s)
should correctly handle :* slice notation OK (0.00s)
should be cleaned up by garbage collector without errors OK (0.27s)
should cast a square reference-slice from YALE to DENSE OK (0.00s)
should cast a rectangular reference-slice from YALE to DENSE OK (0.00s)
should cast a square full-matrix reference-slice from YALE to DENSE OK (0.00s)
should cast a square reference-slice from YALE to LIST OK (0.00s)
should cast a rectangular reference-slice from YALE to LIST OK (0.00s)
should cast a square full-matrix reference-slice from YALE to LIST OK (0.00s)
should cast a square reference-slice from YALE to YALE OK (0.01s)
should cast a rectangular reference-slice from YALE to YALE OK (0.00s)
should cast a square full-matrix reference-slice from YALE to YALE OK (0.00s)
} (0.33s)
} (0.41s)
} (1.70s)
NMatrix::BLAS {
rational32 {
exposes unfriendly cblas_trsm OK (0.01s)
} (0.01s)
rational64 {
exposes unfriendly cblas_trsm OK (0.01s)
} (0.01s)
rational128 {
exposes unfriendly cblas_trsm OK (0.01s)
} (0.01s)
float32 {
exposes unfriendly cblas_trsm OK (0.01s)
} (0.01s)
float64 {
exposes unfriendly cblas_trsm OK (0.01s)
} (0.01s)
complex64 {
exposes unfriendly cblas_trsm OK (0.01s)
} (0.01s)
complex128 {
exposes unfriendly cblas_trsm OK (0.01s)
} (0.01s)
rational32 {
exposes cblas rot PENDING: Not yet implemented (0.00s)
} (0.00s)
rational32 {
exposes cblas rotg PENDING: Not yet implemented (0.00s)
} (0.00s)
rational64 {
exposes cblas rot PENDING: Not yet implemented (0.00s)
} (0.00s)
rational64 {
exposes cblas rotg PENDING: Not yet implemented (0.00s)
} (0.00s)
rational128 {
exposes cblas rot PENDING: Not yet implemented (0.00s)
} (0.00s)
rational128 {
exposes cblas rotg PENDING: Not yet implemented (0.00s)
} (0.00s)
float32 {
exposes cblas rot OK (0.01s)
} (0.02s)
float64 {
exposes cblas rot OK (0.01s)
} (0.01s)
complex64 {
exposes cblas rot OK (0.01s)
} (0.01s)
complex128 {
exposes cblas rot OK (0.01s)
} (0.01s)
object {
exposes cblas rot OK (0.01s)
} (0.01s)
float32 {
exposes cblas rotg OK (0.01s)
exposes gemm OK (0.01s)
exposes gemv OK (0.01s)
exposes asum OK (0.00s)
exposes nrm2 OK (0.00s)
} (0.03s)
float64 {
exposes cblas rotg OK (0.00s)
exposes gemm OK (0.00s)
exposes gemv OK (0.00s)
exposes asum OK (0.00s)
exposes nrm2 OK (0.00s)
} (0.02s)
complex64 {
exposes cblas rotg PENDING: need correct test cases (0.00s)
exposes gemm OK (0.01s)
exposes gemv OK (0.00s)
exposes asum OK (0.00s)
exposes nrm2 OK (0.00s)
} (0.03s)
complex128 {
exposes cblas rotg PENDING: need correct test cases (0.00s)
exposes gemm OK (0.01s)
exposes gemv OK (0.00s)
exposes asum OK (0.00s)
exposes nrm2 OK (0.00s)
} (0.03s)
object {
exposes cblas rotg PENDING: broken for :object (0.00s)
exposes gemm OK (0.01s)
exposes gemv OK (0.00s)
exposes asum OK (0.00s)
exposes nrm2 OK (0.00s)
} (0.02s)
} (0.28s)
NMatrix {
yale {
should perform scalar math OK (0.01s)
should refuse to perform a dot operation on a yale with non-zero default OK (0.00s)
should perform element-wise addition OK (0.01s)
should perform element-wise subtraction OK (0.00s)
should perform element-wise multiplication OK (0.00s)
should perform element-wise division OK (0.00s)
should perform element-wise modulo OK (0.00s)
should handle element-wise equality (=~) OK (0.01s)
should handle element-wise inequality (!~) OK (0.00s)
should handle element-wise less-than (<) OK (0.00s)
should handle element-wise greater-than (>) OK (0.00s)
should handle element-wise greater-than-or-equals (>=) OK (0.00s)
should handle element-wise less-than-or-equals (<=) OK (0.00s)
} (0.08s)
list {
should perform scalar math OK (0.01s)
should perform element-wise addition OK (0.01s)
should perform element-wise subtraction OK (0.00s)
should perform element-wise multiplication OK (0.00s)
should perform element-wise division OK (0.00s)
should perform element-wise modulo OK (0.00s)
should handle element-wise equality (=~) OK (0.01s)
should handle element-wise inequality (!~) OK (0.00s)
should handle element-wise less-than (<) OK (0.00s)
should handle element-wise greater-than (>) OK (0.00s)
should handle element-wise greater-than-or-equals (>=) OK (0.00s)
should handle element-wise less-than-or-equals (<=) OK (0.00s)
} (0.06s)
dense {
scalar arithmetic {
works for integers OK (0.00s)
} (0.00s)
elementwise arithmetic {
adds OK (0.00s)
subtracts OK (0.00s)
multiplies OK (0.00s)
divides in the Ruby way OK (0.00s)
exponentiates OK (0.00s)
modulo OK (0.00s)
} (0.02s)
elementwise comparisons {
equals OK (0.00s)
is not equal OK (0.00s)
is less than OK (0.00s)
is greater than OK (0.00s)
is less than or equal to OK (0.00s)
is greater than or equal to OK (0.00s)
} (0.02s)
} (0.05s)
} (0.19s)
NMatrix::IO {
repacks a string OK (0.00s)
creates yale from internal byte-string function OK (0.01s)
reads MATLAB .mat file containing a single square sparse matrix No repack
OK (1.89s)
reads MATLAB .mat file containing a single dense integer matrix OK (0.02s)
reads MATLAB .mat file containing a single dense double matrix OK (0.02s)
loads and saves MatrixMarket .mtx file containing a single large sparse double matrix PENDING: spec disabled because it's so slow (0.00s)
raises an error when reading a non-existent file OK (0.01s)
reads and writes NMatrix dense OK (0.02s)
reads and writes NMatrix dense as symmetric OK (0.01s)
reads and writes NMatrix dense as skew OK (0.00s)
reads and writes NMatrix dense as hermitian OK (0.00s)
reads and writes NMatrix dense as upper OK (0.00s)
reads and writes NMatrix dense as lower OK (0.00s)
} (2.01s)
NMatrix::LAPACK {
byte {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
int8 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
int16 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
int32 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
int64 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
rational32 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
rational64 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
rational128 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
float32 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
float64 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
complex64 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
complex128 {
exposes clapack laswp OK (0.00s)
exposes NMatrix#permute_columns and #permute_columns! (user-friendly laswp) OK (0.00s)
} (0.01s)
rational32 {
exposes clapack_getrf OK (0.02s)
exposes clapack_potrf PENDING: potrf currently requires LAPACK (0.00s)
exposes clapack_getrs OK (0.00s)
exposes clapack_getri PENDING: getri currently requires LAPACK (0.00s)
exposes lapack_gesdd PENDING: Not implemented for non-LAPACK dtypes (0.00s)
exposes lapack_gesvd PENDING: this operation not yet implemented for non-BLAS dtypes (0.00s)
exposes the convenience gesvd method PENDING: this operation not yet implemented for non-BLAS dtypes (0.00s)
exposes the convenience gesdd method PENDING: this operation not yet implemented for non-BLAS dtypes (0.00s)
exposes geev PENDING: needs rational implementation (0.00s)
} (0.05s)
rational64 {
exposes clapack_getrf OK (0.01s)
exposes clapack_potrf PENDING: potrf currently requires LAPACK (0.00s)
exposes clapack_getrs OK (0.00s)
exposes clapack_getri PENDING: getri currently requires LAPACK (0.00s)
exposes lapack_gesdd PENDING: Not implemented for non-LAPACK dtypes (0.00s)
exposes lapack_gesvd PENDING: this operation not yet implemented for non-BLAS dtypes (0.00s)
exposes the convenience gesvd method PENDING: this operation not yet implemented for non-BLAS dtypes (0.00s)
exposes the convenience gesdd method PENDING: this operation not yet implemented for non-BLAS dtypes (0.00s)
exposes geev PENDING: needs rational implementation (0.00s)
} (0.04s)
rational128 {
exposes clapack_getrf OK (0.00s)
exposes clapack_potrf PENDING: potrf currently requires LAPACK (0.00s)
exposes clapack_getrs OK (0.00s)
exposes clapack_getri PENDING: getri currently requires LAPACK (0.00s)
exposes lapack_gesdd PENDING: Not implemented for non-LAPACK dtypes (0.00s)
exposes lapack_gesvd PENDING: this operation not yet implemented for non-BLAS dtypes (0.00s)
exposes the convenience gesvd method PENDING: this operation not yet implemented for non-BLAS dtypes (0.00s)
exposes the convenience gesdd method PENDING: this operation not yet implemented for non-BLAS dtypes (0.00s)
exposes geev PENDING: needs rational implementation (0.00s)
} (0.03s)
float32 {
exposes clapack_getrf OK (0.01s)
exposes clapack_potrf PENDING: potrf currently requires LAPACK (0.00s)
exposes clapack_getrs OK (0.00s)
exposes clapack_getri PENDING: getri currently requires LAPACK (0.00s)
exposes lapack_gesdd OK (0.09s)
exposes lapack_gesvd OK (0.03s)
exposes the convenience gesvd method OK (0.01s)
exposes the convenience gesdd method OK (0.01s)
exposes geev /home/cfuller/git/nmatrix/spec/lapack_spec.rb:414: warning: geev: calculated optimal lwork of 170; to eliminate this message, use a positive value for lwork (at least 2*shape[i])
OK (0.09s)
} (0.26s)
float64 {
exposes clapack_getrf OK (0.01s)
exposes clapack_potrf PENDING: potrf currently requires LAPACK (0.00s)
exposes clapack_getrs OK (0.00s)
exposes clapack_getri PENDING: getri currently requires LAPACK (0.00s)
exposes lapack_gesdd OK (0.08s)
exposes lapack_gesvd OK (0.03s)
exposes the convenience gesvd method OK (0.01s)
exposes the convenience gesdd method OK (0.01s)
exposes geev /home/cfuller/git/nmatrix/spec/lapack_spec.rb:414: warning: geev: calculated optimal lwork of 170; to eliminate this message, use a positive value for lwork (at least 2*shape[i])
OK (0.08s)
} (0.25s)
complex64 {
exposes clapack_getrf OK (0.01s)
exposes clapack_potrf PENDING: potrf currently requires LAPACK (0.00s)
exposes clapack_getrs OK (0.00s)
exposes clapack_getri PENDING: getri currently requires LAPACK (0.00s)
exposes lapack_gesdd PENDING: Example may be wrong (0.00s)
exposes lapack_gesvd PENDING: Example may be wrong (0.00s)
exposes the convenience gesvd method PENDING: Example may be wrong (0.00s)
exposes the convenience gesdd method PENDING: Example may be wrong (0.00s)
exposes geev /home/cfuller/git/nmatrix/spec/lapack_spec.rb:414: warning: geev: calculated optimal lwork of 165; to eliminate this message, use a positive value for lwork (at least 2*shape[i])
PENDING: Need complex example (0.11s)
} (0.14s)
complex128 {
exposes clapack_getrf OK (0.01s)
exposes clapack_potrf PENDING: potrf currently requires LAPACK (0.00s)
exposes clapack_getrs OK (0.00s)
exposes clapack_getri PENDING: getri currently requires LAPACK (0.00s)
exposes lapack_gesdd PENDING: Example may be wrong (0.00s)
exposes lapack_gesvd PENDING: Example may be wrong (0.00s)
exposes the convenience gesvd method PENDING: Example may be wrong (0.00s)
exposes the convenience gesdd method PENDING: Example may be wrong (0.00s)
exposes geev /home/cfuller/git/nmatrix/spec/lapack_spec.rb:414: warning: geev: calculated optimal lwork of 165; to eliminate this message, use a positive value for lwork (at least 2*shape[i])
PENDING: Need complex example (0.10s)
} (0.14s)
} (1.02s)
math {
dense handles byte dot int16 matrix multiplication OK (0.00s)
dense handles byte dot int32 matrix multiplication OK (0.00s)
dense handles byte dot int64 matrix multiplication OK (0.00s)
dense handles byte dot float32 matrix multiplication OK (0.00s)
dense handles byte dot float64 matrix multiplication OK (0.00s)
dense handles byte dot rational64 matrix multiplication OK (0.00s)
dense handles byte dot rational128 matrix multiplication OK (0.00s)
dense handles int8 dot int16 matrix multiplication OK (0.00s)
dense handles int8 dot int32 matrix multiplication OK (0.00s)
dense handles int8 dot int64 matrix multiplication OK (0.00s)
dense handles int8 dot float32 matrix multiplication OK (0.00s)
dense handles int8 dot float64 matrix multiplication OK (0.00s)
dense handles int8 dot rational64 matrix multiplication OK (0.00s)
dense handles int8 dot rational128 matrix multiplication OK (0.00s)
dense handles int16 dot byte matrix multiplication OK (0.00s)
dense handles int16 dot int8 matrix multiplication OK (0.00s)
dense handles int16 dot int16 matrix multiplication OK (0.00s)
dense handles int16 dot int32 matrix multiplication OK (0.00s)
dense handles int16 dot int64 matrix multiplication OK (0.00s)
dense handles int16 dot float32 matrix multiplication OK (0.00s)
dense handles int16 dot float64 matrix multiplication OK (0.00s)
dense handles int16 dot rational64 matrix multiplication OK (0.00s)
dense handles int16 dot rational128 matrix multiplication OK (0.00s)
dense handles int32 dot byte matrix multiplication OK (0.00s)
dense handles int32 dot int8 matrix multiplication OK (0.00s)
dense handles int32 dot int16 matrix multiplication OK (0.00s)
dense handles int32 dot int32 matrix multiplication OK (0.00s)
dense handles int32 dot int64 matrix multiplication OK (0.00s)
dense handles int32 dot float32 matrix multiplication OK (0.00s)
dense handles int32 dot float64 matrix multiplication OK (0.00s)
dense handles int32 dot rational64 matrix multiplication OK (0.00s)
dense handles int32 dot rational128 matrix multiplication OK (0.00s)
dense handles int64 dot byte matrix multiplication OK (0.00s)
dense handles int64 dot int8 matrix multiplication OK (0.00s)
dense handles int64 dot int16 matrix multiplication OK (0.00s)
dense handles int64 dot int32 matrix multiplication OK (0.00s)
dense handles int64 dot int64 matrix multiplication OK (0.00s)
dense handles int64 dot float32 matrix multiplication OK (0.00s)
dense handles int64 dot float64 matrix multiplication OK (0.00s)
dense handles int64 dot rational64 matrix multiplication OK (0.00s)
dense handles int64 dot rational128 matrix multiplication OK (0.00s)
dense handles float32 dot byte matrix multiplication OK (0.00s)
dense handles float32 dot int8 matrix multiplication OK (0.00s)
dense handles float32 dot int16 matrix multiplication OK (0.00s)
dense handles float32 dot int32 matrix multiplication OK (0.00s)
dense handles float32 dot int64 matrix multiplication OK (0.00s)
dense handles float32 dot float32 matrix multiplication OK (0.00s)
dense handles float32 dot float64 matrix multiplication OK (0.00s)
dense handles float32 dot rational64 matrix multiplication OK (0.00s)
dense handles float32 dot rational128 matrix multiplication OK (0.00s)
dense handles float64 dot byte matrix multiplication OK (0.00s)
dense handles float64 dot int8 matrix multiplication OK (0.00s)
dense handles float64 dot int16 matrix multiplication OK (0.00s)
dense handles float64 dot int32 matrix multiplication OK (0.00s)
dense handles float64 dot int64 matrix multiplication OK (0.00s)
dense handles float64 dot float32 matrix multiplication OK (0.00s)
dense handles float64 dot float64 matrix multiplication OK (0.00s)
dense handles float64 dot rational64 matrix multiplication OK (0.00s)
dense handles float64 dot rational128 matrix multiplication OK (0.00s)
dense handles rational64 dot byte matrix multiplication OK (0.00s)
dense handles rational64 dot int8 matrix multiplication OK (0.00s)
dense handles rational64 dot int16 matrix multiplication OK (0.00s)
dense handles rational64 dot int32 matrix multiplication OK (0.00s)
dense handles rational64 dot int64 matrix multiplication OK (0.00s)
dense handles rational64 dot float32 matrix multiplication OK (0.00s)
dense handles rational64 dot float64 matrix multiplication OK (0.00s)
dense handles rational64 dot rational64 matrix multiplication OK (0.00s)
dense handles rational64 dot rational128 matrix multiplication OK (0.00s)
dense handles rational128 dot byte matrix multiplication OK (0.00s)
dense handles rational128 dot int8 matrix multiplication OK (0.00s)
dense handles rational128 dot int16 matrix multiplication OK (0.00s)
dense handles rational128 dot int32 matrix multiplication OK (0.00s)
dense handles rational128 dot int64 matrix multiplication OK (0.00s)
dense handles rational128 dot float32 matrix multiplication OK (0.00s)
dense handles rational128 dot float64 matrix multiplication OK (0.00s)
dense handles rational128 dot rational64 matrix multiplication OK (0.00s)
dense handles rational128 dot rational128 matrix multiplication OK (0.00s)
dense handles byte dot int16 vector multiplication OK (0.00s)
dense handles byte dot int32 vector multiplication OK (0.00s)
dense handles byte dot int64 vector multiplication OK (0.00s)
dense handles byte dot float32 vector multiplication OK (0.00s)
dense handles byte dot float64 vector multiplication OK (0.00s)
dense handles byte dot rational64 vector multiplication OK (0.01s)
dense handles byte dot rational128 vector multiplication OK (0.00s)
dense handles int8 dot int16 vector multiplication OK (0.00s)
dense handles int8 dot int32 vector multiplication OK (0.00s)
dense handles int8 dot int64 vector multiplication OK (0.00s)
dense handles int8 dot float32 vector multiplication OK (0.00s)
dense handles int8 dot float64 vector multiplication OK (0.00s)
dense handles int8 dot rational64 vector multiplication OK (0.00s)
dense handles int8 dot rational128 vector multiplication OK (0.00s)
dense handles int16 dot byte vector multiplication OK (0.00s)
dense handles int16 dot int8 vector multiplication OK (0.00s)
dense handles int16 dot int16 vector multiplication OK (0.00s)
dense handles int16 dot int32 vector multiplication OK (0.00s)
dense handles int16 dot int64 vector multiplication OK (0.00s)
dense handles int16 dot float32 vector multiplication OK (0.00s)
dense handles int16 dot float64 vector multiplication OK (0.00s)
dense handles int16 dot rational64 vector multiplication OK (0.00s)
dense handles int16 dot rational128 vector multiplication OK (0.00s)
dense handles int32 dot byte vector multiplication OK (0.00s)
dense handles int32 dot int8 vector multiplication OK (0.00s)
dense handles int32 dot int16 vector multiplication OK (0.00s)
dense handles int32 dot int32 vector multiplication OK (0.00s)
dense handles int32 dot int64 vector multiplication OK (0.00s)
dense handles int32 dot float32 vector multiplication OK (0.00s)
dense handles int32 dot float64 vector multiplication OK (0.00s)
dense handles int32 dot rational64 vector multiplication OK (0.00s)
dense handles int32 dot rational128 vector multiplication OK (0.00s)
dense handles int64 dot byte vector multiplication OK (0.00s)
dense handles int64 dot int8 vector multiplication OK (0.00s)
dense handles int64 dot int16 vector multiplication OK (0.00s)
dense handles int64 dot int32 vector multiplication OK (0.00s)
dense handles int64 dot int64 vector multiplication OK (0.00s)
dense handles int64 dot float32 vector multiplication OK (0.00s)
dense handles int64 dot float64 vector multiplication OK (0.00s)
dense handles int64 dot rational64 vector multiplication OK (0.00s)
dense handles int64 dot rational128 vector multiplication OK (0.00s)
dense handles float32 dot byte vector multiplication OK (0.00s)
dense handles float32 dot int8 vector multiplication OK (0.00s)
dense handles float32 dot int16 vector multiplication OK (0.00s)
dense handles float32 dot int32 vector multiplication OK (0.00s)
dense handles float32 dot int64 vector multiplication OK (0.00s)
dense handles float32 dot float32 vector multiplication OK (0.00s)
dense handles float32 dot float64 vector multiplication OK (0.00s)
dense handles float32 dot rational64 vector multiplication OK (0.00s)
dense handles float32 dot rational128 vector multiplication OK (0.00s)
dense handles float64 dot byte vector multiplication OK (0.00s)
dense handles float64 dot int8 vector multiplication OK (0.00s)
dense handles float64 dot int16 vector multiplication OK (0.00s)
dense handles float64 dot int32 vector multiplication OK (0.00s)
dense handles float64 dot int64 vector multiplication OK (0.00s)
dense handles float64 dot float32 vector multiplication OK (0.00s)
dense handles float64 dot float64 vector multiplication OK (0.00s)
dense handles float64 dot rational64 vector multiplication OK (0.00s)
dense handles float64 dot rational128 vector multiplication OK (0.00s)
dense handles rational64 dot byte vector multiplication OK (0.00s)
dense handles rational64 dot int8 vector multiplication OK (0.00s)
dense handles rational64 dot int16 vector multiplication OK (0.00s)
dense handles rational64 dot int32 vector multiplication OK (0.00s)
dense handles rational64 dot int64 vector multiplication OK (0.00s)
dense handles rational64 dot float32 vector multiplication OK (0.00s)
dense handles rational64 dot float64 vector multiplication OK (0.00s)
dense handles rational64 dot rational64 vector multiplication OK (0.00s)
dense handles rational64 dot rational128 vector multiplication OK (0.00s)
dense handles rational128 dot byte vector multiplication OK (0.00s)
dense handles rational128 dot int8 vector multiplication OK (0.00s)
dense handles rational128 dot int16 vector multiplication OK (0.00s)
dense handles rational128 dot int32 vector multiplication OK (0.00s)
dense handles rational128 dot int64 vector multiplication OK (0.00s)
dense handles rational128 dot float32 vector multiplication OK (0.00s)
dense handles rational128 dot float64 vector multiplication OK (0.00s)
dense handles rational128 dot rational64 vector multiplication OK (0.00s)
dense handles rational128 dot rational128 vector multiplication OK (0.00s)
elementwise math functions {
dense {
int64 {
should correctly apply elementwise cos OK (0.01s)
should correctly apply elementwise sin OK (0.01s)
should correctly apply elementwise tan OK (0.01s)
should correctly apply elementwise cosh OK (0.01s)
should correctly apply elementwise sinh OK (0.01s)
should correctly apply elementwise tanh OK (0.00s)
should correctly apply elementwise acosh OK (0.01s)
should correctly apply elementwise asinh OK (0.00s)
should correctly apply elementwise exp OK (0.00s)
should correctly apply elementwise log2 OK (0.00s)
should correctly apply elementwise log10 OK (0.00s)
should correctly apply elementwise sqrt OK (0.00s)
should correctly apply elementwise cbrt OK (0.01s)
should correctly apply elementwise erf OK (0.01s)
should correctly apply elementwise erfc OK (0.01s)
should correctly apply elementwise gamma OK (0.00s)
should correctly apply elementwise ldexp OK (0.01s)
should correctly apply elementwise ldexp with a scalar first arg OK (0.00s)
should correctly apply elementwise ldexp with a scalar second arg OK (0.00s)
should correctly apply elementwise hypot OK (0.01s)
should correctly apply elementwise hypot with a scalar first arg OK (0.01s)
should correctly apply elementwise hypot with a scalar second arg OK (0.00s)
should correctly apply elementwise natural log OK (0.01s)
should correctly apply elementwise log with arbitrary base OK (0.00s)
inverse trig functions {
should correctly apply elementwise asin OK (0.01s)
should correctly apply elementwise acos OK (0.01s)
should correctly apply elementwise atan OK (0.00s)
should correctly apply elementwise atanh OK (0.01s)
should correctly apply elementtwise atan2 OK (0.01s)
should correctly apply elementwise atan2 with a scalar first arg OK (0.01s)
should correctly apply elementwise atan2 with a scalar second arg OK (0.00s)
} (0.05s)
} (0.20s)
float64 {
should correctly apply elementwise cos OK (0.00s)
should correctly apply elementwise sin OK (0.00s)
should correctly apply elementwise tan OK (0.00s)
should correctly apply elementwise cosh OK (0.00s)
should correctly apply elementwise sinh OK (0.00s)
should correctly apply elementwise tanh OK (0.00s)
should correctly apply elementwise acosh OK (0.00s)
should correctly apply elementwise asinh OK (0.00s)
should correctly apply elementwise exp OK (0.00s)
should correctly apply elementwise log2 OK (0.00s)
should correctly apply elementwise log10 OK (0.00s)
should correctly apply elementwise sqrt OK (0.00s)
should correctly apply elementwise cbrt OK (0.00s)
should correctly apply elementwise erf OK (0.00s)
should correctly apply elementwise erfc OK (0.00s)
should correctly apply elementwise gamma OK (0.00s)
should correctly apply elementwise ldexp OK (0.00s)
should correctly apply elementwise ldexp with a scalar first arg OK (0.00s)
should correctly apply elementwise ldexp with a scalar second arg OK (0.00s)
should correctly apply elementwise hypot OK (0.00s)
should correctly apply elementwise hypot with a scalar first arg OK (0.00s)
should correctly apply elementwise hypot with a scalar second arg OK (0.00s)
should correctly apply elementwise natural log OK (0.00s)
should correctly apply elementwise log with arbitrary base OK (0.00s)
inverse trig functions {
should correctly apply elementwise asin OK (0.01s)
should correctly apply elementwise acos OK (0.01s)
should correctly apply elementwise atan OK (0.01s)
should correctly apply elementwise atanh OK (0.01s)
should correctly apply elementtwise atan2 OK (0.21s)
should correctly apply elementwise atan2 with a scalar first arg OK (0.01s)
should correctly apply elementwise atan2 with a scalar second arg OK (0.00s)
} (0.25s)
} (0.36s)
rational128 {
should correctly apply elementwise cos OK (0.01s)
should correctly apply elementwise sin OK (0.00s)
should correctly apply elementwise tan OK (0.00s)
should correctly apply elementwise cosh OK (0.00s)
should correctly apply elementwise sinh OK (0.00s)
should correctly apply elementwise tanh OK (0.00s)
should correctly apply elementwise acosh OK (0.01s)
should correctly apply elementwise asinh OK (0.00s)
should correctly apply elementwise exp OK (0.00s)
should correctly apply elementwise log2 OK (0.00s)
should correctly apply elementwise log10 OK (0.00s)
should correctly apply elementwise sqrt OK (0.00s)
should correctly apply elementwise cbrt OK (0.00s)
should correctly apply elementwise erf OK (0.00s)
should correctly apply elementwise erfc OK (0.00s)
should correctly apply elementwise gamma OK (0.00s)
should correctly apply elementwise ldexp OK (0.00s)
should correctly apply elementwise ldexp with a scalar first arg OK (0.00s)
should correctly apply elementwise ldexp with a scalar second arg OK (0.00s)
should correctly apply elementwise hypot OK (0.00s)
should correctly apply elementwise hypot with a scalar first arg OK (0.00s)
should correctly apply elementwise hypot with a scalar second arg OK (0.00s)
should correctly apply elementwise natural log OK (0.00s)
should correctly apply elementwise log with arbitrary base OK (0.00s)
inverse trig functions {
should correctly apply elementwise asin OK (0.01s)
should correctly apply elementwise acos OK (0.00s)
should correctly apply elementwise atan OK (0.00s)
should correctly apply elementwise atanh OK (0.00s)
should correctly apply elementtwise atan2 OK (0.01s)
should correctly apply elementwise atan2 with a scalar first arg OK (0.01s)
should correctly apply elementwise atan2 with a scalar second arg OK (0.01s)
} (0.04s)
} (0.17s)
} (0.72s)
list {
int64 {
should correctly apply elementwise cos OK (0.02s)
should correctly apply elementwise sin OK (0.00s)
should correctly apply elementwise tan OK (0.00s)
should correctly apply elementwise cosh OK (0.00s)
should correctly apply elementwise sinh OK (0.00s)
should correctly apply elementwise tanh OK (0.00s)
should correctly apply elementwise acosh OK (0.00s)
should correctly apply elementwise asinh OK (0.00s)
should correctly apply elementwise exp OK (0.00s)
should correctly apply elementwise log2 OK (0.00s)
should correctly apply elementwise log10 OK (0.00s)
should correctly apply elementwise sqrt OK (0.00s)
should correctly apply elementwise cbrt OK (0.00s)
should correctly apply elementwise erf OK (0.00s)
should correctly apply elementwise erfc OK (0.00s)
should correctly apply elementwise gamma OK (0.00s)
should correctly apply elementwise ldexp OK (0.01s)
should correctly apply elementwise ldexp with a scalar first arg OK (0.00s)
should correctly apply elementwise ldexp with a scalar second arg OK (0.00s)
should correctly apply elementwise hypot OK (0.00s)
should correctly apply elementwise hypot with a scalar first arg OK (0.00s)
should correctly apply elementwise hypot with a scalar second arg OK (0.00s)
should correctly apply elementwise natural log OK (0.00s)
should correctly apply elementwise log with arbitrary base OK (0.00s)
inverse trig functions {
should correctly apply elementwise asin OK (0.01s)
should correctly apply elementwise acos OK (0.01s)
should correctly apply elementwise atan OK (0.01s)
should correctly apply elementwise atanh OK (0.01s)
should correctly apply elementtwise atan2 OK (0.01s)
should correctly apply elementwise atan2 with a scalar first arg OK (0.01s)
should correctly apply elementwise atan2 with a scalar second arg OK (0.01s)
} (0.05s)
} (0.19s)
float64 {
should correctly apply elementwise cos OK (0.00s)
should correctly apply elementwise sin OK (0.00s)
should correctly apply elementwise tan OK (0.00s)
should correctly apply elementwise cosh OK (0.00s)
should correctly apply elementwise sinh OK (0.00s)
should correctly apply elementwise tanh OK (0.00s)
should correctly apply elementwise acosh OK (0.00s)
should correctly apply elementwise asinh OK (0.00s)
should correctly apply elementwise exp OK (0.00s)
should correctly apply elementwise log2 OK (0.00s)
should correctly apply elementwise log10 OK (0.00s)
should correctly apply elementwise sqrt OK (0.00s)
should correctly apply elementwise cbrt OK (0.00s)
should correctly apply elementwise erf OK (0.00s)
should correctly apply elementwise erfc OK (0.00s)
should correctly apply elementwise gamma OK (0.00s)
should correctly apply elementwise ldexp OK (0.00s)
should correctly apply elementwise ldexp with a scalar first arg OK (0.00s)
should correctly apply elementwise ldexp with a scalar second arg OK (0.00s)
should correctly apply elementwise hypot OK (0.00s)
should correctly apply elementwise hypot with a scalar first arg OK (0.00s)
should correctly apply elementwise hypot with a scalar second arg OK (0.00s)
should correctly apply elementwise natural log OK (0.00s)
should correctly apply elementwise log with arbitrary base OK (0.00s)
inverse trig functions {
should correctly apply elementwise asin OK (0.01s)
should correctly apply elementwise acos OK (0.01s)
should correctly apply elementwise atan OK (0.01s)
should correctly apply elementwise atanh OK (0.01s)
should correctly apply elementtwise atan2 OK (0.01s)
should correctly apply elementwise atan2 with a scalar first arg OK (0.01s)
should correctly apply elementwise atan2 with a scalar second arg OK (0.01s)
} (0.05s)
} (0.17s)
rational128 {
should correctly apply elementwise cos OK (0.01s)
should correctly apply elementwise sin OK (0.00s)
should correctly apply elementwise tan OK (0.00s)
should correctly apply elementwise cosh OK (0.00s)
should correctly apply elementwise sinh OK (0.00s)
should correctly apply elementwise tanh OK (0.00s)
should correctly apply elementwise acosh OK (0.00s)
should correctly apply elementwise asinh OK (0.00s)
should correctly apply elementwise exp OK (0.00s)
should correctly apply elementwise log2 OK (0.00s)
should correctly apply elementwise log10 OK (0.00s)
should correctly apply elementwise sqrt OK (0.00s)
should correctly apply elementwise cbrt OK (0.00s)
should correctly apply elementwise erf OK (0.00s)
should correctly apply elementwise erfc OK (0.00s)
should correctly apply elementwise gamma OK (0.00s)
should correctly apply elementwise ldexp OK (0.01s)
should correctly apply elementwise ldexp with a scalar first arg OK (0.00s)
should correctly apply elementwise ldexp with a scalar second arg OK (0.00s)
should correctly apply elementwise hypot OK (0.00s)
should correctly apply elementwise hypot with a scalar first arg OK (0.00s)
should correctly apply elementwise hypot with a scalar second arg OK (0.00s)
should correctly apply elementwise natural log OK (0.00s)
should correctly apply elementwise log with arbitrary base OK (0.00s)
inverse trig functions {
should correctly apply elementwise asin OK (0.01s)
should correctly apply elementwise acos OK (0.01s)
should correctly apply elementwise atan OK (0.01s)
should correctly apply elementwise atanh OK (0.01s)
should correctly apply elementtwise atan2 OK (0.01s)
should correctly apply elementwise atan2 with a scalar first arg OK (0.01s)
should correctly apply elementwise atan2 with a scalar second arg OK (0.01s)
} (0.06s)
} (0.20s)
} (0.56s)
yale {
int64 {
should correctly apply elementwise cos OK (0.02s)
should correctly apply elementwise sin OK (0.00s)
should correctly apply elementwise tan OK (0.00s)
should correctly apply elementwise cosh OK (0.00s)
should correctly apply elementwise sinh OK (0.00s)
should correctly apply elementwise tanh OK (0.00s)
should correctly apply elementwise acosh OK (0.00s)
should correctly apply elementwise asinh OK (0.00s)
should correctly apply elementwise exp OK (0.00s)
should correctly apply elementwise log2 OK (0.00s)
should correctly apply elementwise log10 OK (0.00s)
should correctly apply elementwise sqrt OK (0.00s)
should correctly apply elementwise cbrt OK (0.00s)
should correctly apply elementwise erf OK (0.00s)
should correctly apply elementwise erfc OK (0.00s)
should correctly apply elementwise gamma OK (0.00s)
should correctly apply elementwise ldexp OK (0.00s)
should correctly apply elementwise ldexp with a scalar first arg OK (0.00s)
should correctly apply elementwise ldexp with a scalar second arg OK (0.00s)
should correctly apply elementwise hypot OK (0.00s)
should correctly apply elementwise hypot with a scalar first arg OK (0.00s)
should correctly apply elementwise hypot with a scalar second arg OK (0.00s)
should correctly apply elementwise natural log OK (0.00s)
should correctly apply elementwise log with arbitrary base OK (0.00s)
inverse trig functions {
should correctly apply elementwise asin OK (0.01s)
should correctly apply elementwise acos OK (0.00s)
should correctly apply elementwise atan OK (0.00s)
should correctly apply elementwise atanh OK (0.00s)
should correctly apply elementtwise atan2 OK (0.01s)
should correctly apply elementwise atan2 with a scalar first arg OK (0.01s)
should correctly apply elementwise atan2 with a scalar second arg OK (0.01s)
} (0.04s)
} (0.17s)
float64 {
should correctly apply elementwise cos OK (0.01s)
should correctly apply elementwise sin OK (0.00s)
should correctly apply elementwise tan OK (0.00s)
should correctly apply elementwise cosh OK (0.00s)
should correctly apply elementwise sinh OK (0.00s)
should correctly apply elementwise tanh OK (0.00s)
should correctly apply elementwise acosh OK (0.00s)
should correctly apply elementwise asinh OK (0.00s)
should correctly apply elementwise exp OK (0.00s)
should correctly apply elementwise log2 OK (0.00s)
should correctly apply elementwise log10 OK (0.00s)
should correctly apply elementwise sqrt OK (0.00s)
should correctly apply elementwise cbrt OK (0.00s)
should correctly apply elementwise erf OK (0.00s)
should correctly apply elementwise erfc OK (0.00s)
should correctly apply elementwise gamma OK (0.00s)
should correctly apply elementwise ldexp OK (0.01s)
should correctly apply elementwise ldexp with a scalar first arg OK (0.00s)
should correctly apply elementwise ldexp with a scalar second arg OK (0.00s)
should correctly apply elementwise hypot OK (0.00s)
should correctly apply elementwise hypot with a scalar first arg OK (0.00s)
should correctly apply elementwise hypot with a scalar second arg OK (0.00s)
should correctly apply elementwise natural log OK (0.00s)
should correctly apply elementwise log with arbitrary base OK (0.00s)
inverse trig functions {
should correctly apply elementwise asin OK (0.00s)
should correctly apply elementwise acos OK (0.01s)
should correctly apply elementwise atan OK (0.00s)
should correctly apply elementwise atanh OK (0.00s)
should correctly apply elementtwise atan2 OK (0.01s)
should correctly apply elementwise atan2 with a scalar first arg OK (0.01s)
should correctly apply elementwise atan2 with a scalar second arg OK (0.01s)
} (0.04s)
} (0.17s)
rational128 {
should correctly apply elementwise cos OK (0.02s)
should correctly apply elementwise sin OK (0.00s)
should correctly apply elementwise tan OK (0.00s)
should correctly apply elementwise cosh OK (0.00s)
should correctly apply elementwise sinh OK (0.00s)
should correctly apply elementwise tanh OK (0.00s)
should correctly apply elementwise acosh OK (0.00s)
should correctly apply elementwise asinh OK (0.00s)
should correctly apply elementwise exp OK (0.00s)
should correctly apply elementwise log2 OK (0.00s)
should correctly apply elementwise log10 OK (0.00s)
should correctly apply elementwise sqrt OK (0.00s)
should correctly apply elementwise cbrt OK (0.00s)
should correctly apply elementwise erf OK (0.00s)
should correctly apply elementwise erfc OK (0.00s)
should correctly apply elementwise gamma OK (0.00s)
should correctly apply elementwise ldexp OK (0.01s)
should correctly apply elementwise ldexp with a scalar first arg OK (0.00s)
should correctly apply elementwise ldexp with a scalar second arg OK (0.00s)
should correctly apply elementwise hypot OK (0.00s)
should correctly apply elementwise hypot with a scalar first arg OK (0.00s)
should correctly apply elementwise hypot with a scalar second arg OK (0.00s)
should correctly apply elementwise natural log OK (0.00s)
should correctly apply elementwise log with arbitrary base OK (0.00s)
inverse trig functions {
should correctly apply elementwise asin OK (0.01s)
should correctly apply elementwise acos OK (0.01s)
should correctly apply elementwise atan OK (0.01s)
should correctly apply elementwise atanh OK (0.01s)
should correctly apply elementtwise atan2 OK (0.01s)
should correctly apply elementwise atan2 with a scalar first arg OK (0.01s)
should correctly apply elementwise atan2 with a scalar second arg OK (0.01s)
} (0.05s)
} (0.19s)
} (0.53s)
} (1.81s)
float32 {
should correctly factorize a matrix OK (0.00s)
} (0.00s)
float32 {
should correctly invert a matrix PENDING: getri currently requires LAPACK (0.00s)
} (0.00s)
float64 {
should correctly factorize a matrix OK (0.00s)
} (0.00s)
float64 {
should correctly invert a matrix PENDING: getri currently requires LAPACK (0.00s)
} (0.00s)
complex64 {
should correctly factorize a matrix OK (0.00s)
} (0.00s)
complex64 {
should correctly invert a matrix PENDING: getri currently requires LAPACK (0.00s)
} (0.00s)
complex128 {
should correctly factorize a matrix OK (0.00s)
} (0.00s)
complex128 {
should correctly invert a matrix PENDING: getri currently requires LAPACK (0.00s)
} (0.00s)
rational32 {
should correctly factorize a matrix OK (0.00s)
} (0.00s)
rational32 {
should correctly invert a matrix PENDING: getri needs rational implementation (0.00s)
} (0.00s)
rational64 {
should correctly factorize a matrix OK (0.00s)
} (0.00s)
rational64 {
should correctly invert a matrix PENDING: getri needs rational implementation (0.00s)
} (0.00s)
rational128 {
should correctly factorize a matrix OK (0.00s)
} (0.00s)
rational128 {
should correctly invert a matrix PENDING: getri needs rational implementation (0.00s)
} (0.00s)
} (2.50s)
NMatrix {
yale {
compares two empty matrices OK (0.00s)
compares two matrices following basic assignments OK (0.00s)
compares two matrices following elementwise operations OK (0.00s)
sets diagonal values OK (0.00s)
gets non-diagonal rows as hashes OK (0.00s)
gets non-diagonal occupied column indices for a given row OK (0.00s)
does not resize until necessary OK (0.00s)
sets when not resizing OK (0.00s)
sets when resizing OK (0.01s)
resizes without erasing values OK (3.34s)
sets values within rows OK (0.00s)
gets values within rows OK (0.00s)
sets values within large rows OK (0.00s)
gets values within large rows OK (0.00s)
dots two identical matrices OK (0.01s)
dots two identical matrices where a positive and negative partial sum cancel on the diagonal OK (0.00s)
dots two vectors OK (0.01s)
transposes OK (0.01s)
calculates the row key intersections of two matrices [7]
[3, 5]
[1]
[2, 4]
[0, 8]
[4, 6]
[7]
[3, 5]
[1]
OK (0.01s)
} (3.45s)
} (3.45s)
RSpec {
should permit #be_within to be used on a dense NMatrix OK (0.01s)
} (0.01s)
NMatrix {
zeros() creates a matrix of zeros OK (0.00s)
ones() creates a matrix of ones OK (0.00s)
eye() creates an identity matrix OK (0.00s)
diag() creates a matrix with pre-supplied diagonal OK (0.00s)
diagonals() contains the seeded values on the diagonal OK (0.00s)
random() creates a matrix of random numbers OK (0.00s)
random() only accepts an integer or an array as dimension OK (0.01s)
seq() creates a matrix of integers, sequentially OK (0.00s)
indgen() creates a matrix of integers as well as seq() OK (0.00s)
findgen creates a matrix of floats, sequentially OK (0.00s)
bindgen() creates a matrix of bytes OK (0.00s)
cindgen() creates a matrix of complexes OK (0.00s)
column() returns a NMatrix OK (0.00s)
row() returns a NMatrix OK (0.00s)
diagonals() creates an NMatrix OK (0.00s)
diagonals() contains the seeded values on the diagonal OK (0.00s)
_like constructors {
should create an nmatrix of ones with dimensions and type the same as its argument OK (0.00s)
should create an nmatrix of zeros with dimensions and type the same as its argument OK (0.00s)
} (0.01s)
} (0.06s)
NVector {
zeros() creates a vector of zeros OK (0.00s)
ones() creates a vector of ones OK (0.00s)
random() creates a vector of random numbers OK (0.00s)
seq() creates a vector of integers, sequentially OK (0.00s)
seq() only accepts integers as dimension OK (0.00s)
indgen() creates a vector of integers as well as seq() OK (0.00s)
findgen creates a vector of floats, sequentially OK (0.00s)
bindgen() creates a vector of bytes, sequentially OK (0.00s)
cindgen() creates a vector of complexes, sequentially OK (0.00s)
linspace() creates a vector with n values equally spaced between a and b OK (0.00s)
logspace() creates a vector with n values logarithmically spaced between decades 10^a and 10^b OK (0.00s)
} (0.04s)
Inline constructor {
creates a NMatrix with the given values OK (0.00s)
} (0.00s)
Set slice operation {
for dense {
set and unset a range of entries with single values OK (0.01s)
set a range of values to a matrix's contents OK (0.01s)
} (0.02s)
for yale {
set and unset a range of entries with single values OK (0.02s)
set a range of values to a matrix's contents OK (0.00s)
} (0.03s)
for list {
set and unset a range of entries with single values OK (0.01s)
set a range of values to a matrix's contents OK (0.00s)
} (0.02s)
} (0.08s)
Statistical functions {
mapping and reduction related functions {
on dense matrices {
behaves like Enumerable#reduce with no argument to reduce OK (0.00s)
should calculate the mean along the specified dimension [2.2]
OK (0.01s)
should calculate the minimum along the specified dimension OK (0.01s)
should calculate the maximum along the specified dimension OK (0.01s)
should calculate the variance along the specified dimension OK (0.01s)
should calculate the sum along the specified dimension OK (0.00s)
should calculate the standard deviation along the specified dimension OK (0.01s)
should raise an ArgumentError when any invalid dimension is provided OK (0.00s)
should convert to float if it contains only a single element OK (0.00s)
should raise an index error if it contains more than a single element OK (0.00s)
should map a block to all elements OK (0.00s)
should map! a block to all elements in place OK (0.00s)
should return an enumerator for map without a block OK (0.00s)
should return an enumerator for reduce without a block OK (0.00s)
should return an enumerator for each_along_dim without a block OK (0.00s)
should iterate correctly for map without a block OK (0.00s)
should iterate correctly for reduce without a block OK (0.00s)
should iterate correctly for each_along_dim without a block OK (0.00s)
should yield matrices of matching dtype for each_along_dim OK (0.00s)
should reduce to a matrix of matching dtype for reduce_along_dim OK (0.00s)
should allow overriding the dtype for reduce_along_dim OK (0.01s)
should convert integer dtypes to float when calculating mean OK (0.00s)
should convert integer dtypes to float when calculating variance OK (0.01s)
should convert integer dtypes to float when calculating standard deviation OK (0.01s)
} (0.15s)
on yale matrices {
behaves like Enumerable#reduce with no argument to reduce OK (0.01s)
should calculate the mean along the specified dimension OK (0.01s)
should calculate the minimum along the specified dimension OK (0.01s)
should calculate the maximum along the specified dimension OK (0.00s)
should calculate the variance along the specified dimension OK (0.01s)
should calculate the sum along the specified dimension OK (0.00s)
should calculate the standard deviation along the specified dimension OK (0.01s)
should raise an ArgumentError when any invalid dimension is provided OK (0.00s)
should convert to float if it contains only a single element OK (0.00s)
should raise an index error if it contains more than a single element OK (0.00s)
should map a block to all elements OK (0.01s)
should map! a block to all elements in place OK (0.01s)
should return an enumerator for map without a block OK (0.00s)
should return an enumerator for reduce without a block OK (0.00s)
should return an enumerator for each_along_dim without a block OK (0.00s)
should iterate correctly for map without a block OK (0.00s)
should iterate correctly for reduce without a block OK (0.00s)
should iterate correctly for each_along_dim without a block OK (0.00s)
should yield matrices of matching dtype for each_along_dim OK (0.01s)
should reduce to a matrix of matching dtype for reduce_along_dim OK (0.00s)
should allow overriding the dtype for reduce_along_dim OK (0.01s)
should convert integer dtypes to float when calculating mean OK (0.01s)
should convert integer dtypes to float when calculating variance OK (0.01s)
should convert integer dtypes to float when calculating standard deviation OK (0.01s)
} (0.15s)
on list matrices {
behaves like Enumerable#reduce with no argument to reduce OK (0.00s)
should calculate the mean along the specified dimension [2.2]
OK (0.01s)
should calculate the minimum along the specified dimension OK (0.01s)
should calculate the maximum along the specified dimension OK (0.01s)
should calculate the variance along the specified dimension OK (0.02s)
should calculate the sum along the specified dimension OK (0.01s)
should calculate the standard deviation along the specified dimension OK (0.02s)
should raise an ArgumentError when any invalid dimension is provided OK (0.00s)
should convert to float if it contains only a single element OK (0.00s)
should raise an index error if it contains more than a single element OK (0.00s)
should map a block to all elements OK (0.01s)
should map! a block to all elements in place OK (0.01s)
should return an enumerator for map without a block OK (0.00s)
should return an enumerator for reduce without a block OK (0.00s)
should return an enumerator for each_along_dim without a block OK (0.00s)
should iterate correctly for map without a block OK (0.01s)
should iterate correctly for reduce without a block OK (0.01s)
should iterate correctly for each_along_dim without a block OK (0.01s)
should yield matrices of matching dtype for each_along_dim OK (0.01s)
should reduce to a matrix of matching dtype for reduce_along_dim OK (0.00s)
should allow overriding the dtype for reduce_along_dim ==12531== Invalid read of size 8
==12531== at 0x4C2E990: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12531== by 0xB6DE9A1: nm::list::insert_copy(LIST*, bool, unsigned long, void*, unsigned long) (string3.h:51)
==12531== by 0xB9F7454: slice_copy.constprop.136 (list.cpp:1085)
==12531== by 0xB9F9344: nm_list_storage_copy (list.cpp:1406)
==12531== by 0xB9FD9FD: LIST_STORAGE* nm::list_storage::cast_copy<double, nm::Complex<double> >(LIST_STORAGE const*, nm::dtype_t) (list.cpp:1465)
==12531== by 0xB6A001C: nm_cast_with_ctype_args (ruby_nmatrix.c:1334)
==12531== by 0xB6A0151: nm_cast (ruby_nmatrix.c:1364)
==12531== by 0x4FCE5EE: vm_call_cfunc_with_frame (vm_insnhelper.c:1469)
==12531== by 0x4FDC50C: vm_call_method (vm_insnhelper.c:1559)
==12531== by 0x4FD302A: vm_exec_core (insns.def:1002)
==12531== by 0x4FD74B9: vm_exec (vm.c:1201)
==12531== by 0x4FDE42F: rb_yield (vm.c:648)
==12531== by 0x4F2E92D: range_each (range.c:752)
==12531== by 0x4FCE5EE: vm_call_cfunc_with_frame (vm_insnhelper.c:1469)
==12531== by 0x4FD302A: vm_exec_core (insns.def:1002)
==12531== Address 0xfb33b58 is 0 bytes after a block of size 8 alloc'd
==12531== at 0x4C2A2DB: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12531== by 0x4EC0977: vm_xmalloc (gc.c:3519)
==12531== by 0xB6DE1CD: nm::list::create() (sl_list.cpp:61)
==12531== by 0xB9F383D: bool nm::list_storage::slice_set<nm::Complex<double> >(LIST_STORAGE*, LIST*, unsigned long*, unsigned long*, unsigned long, nm::Complex<double>*, unsigned long, unsigned long&) (list.cpp:418)
==12531== by 0xBA03C54: void nm::list_storage::set<nm::Complex<double> >(unsigned long, SLICE*, unsigned long) (list.cpp:564)
==12531== by 0xB9F8C31: nm_list_storage_set (list.cpp:1239)
==12531== by 0xB6A1E33: nm_init_new_version (ruby_nmatrix.c:1128)
==12531== by 0xB6A2362: nm_init (ruby_nmatrix.c:1209)
==12531== by 0x4FD8960: vm_call0_body (vm_eval.c:117)
==12531== by 0x4FDA170: rb_funcall2 (vm_eval.c:49)
==12531== by 0x4EFCDAF: rb_class_new_instance (object.c:1761)
==12531== by 0x4FCE5EE: vm_call_cfunc_with_frame (vm_insnhelper.c:1469)
==12531== by 0x4FD3099: vm_exec_core (insns.def:1017)
==12531== by 0x4FD74B9: vm_exec (vm.c:1201)
==12531== by 0x4FDE111: rb_obj_instance_eval (vm_eval.c:1499)
==12531==
OK (0.02s)
should convert integer dtypes to float when calculating mean OK (0.01s)
should convert integer dtypes to float when calculating variance OK (0.01s)
should convert integer dtypes to float when calculating standard deviation OK (0.01s)
} (0.21s)
} (0.51s)
} (0.51s)
Pending:
NMatrix::BLAS rational32 exposes cblas rot
# Not yet implemented
# ./spec/blas_spec.rb:64
NMatrix::BLAS rational32 exposes cblas rotg
# Not yet implemented
# ./spec/blas_spec.rb:68
NMatrix::BLAS rational64 exposes cblas rot
# Not yet implemented
# ./spec/blas_spec.rb:64
NMatrix::BLAS rational64 exposes cblas rotg
# Not yet implemented
# ./spec/blas_spec.rb:68
NMatrix::BLAS rational128 exposes cblas rot
# Not yet implemented
# ./spec/blas_spec.rb:64
NMatrix::BLAS rational128 exposes cblas rotg
# Not yet implemented
# ./spec/blas_spec.rb:68
NMatrix::BLAS complex64 exposes cblas rotg
# need correct test cases
# ./spec/blas_spec.rb:95
NMatrix::BLAS complex128 exposes cblas rotg
# need correct test cases
# ./spec/blas_spec.rb:95
NMatrix::BLAS object exposes cblas rotg
# broken for :object
# ./spec/blas_spec.rb:95
NMatrix::IO loads and saves MatrixMarket .mtx file containing a single large sparse double matrix
# spec disabled because it's so slow
# ./spec/io_spec.rb:73
NMatrix::LAPACK rational32 exposes clapack_potrf
# potrf currently requires LAPACK
# ./spec/lapack_spec.rb:87
NMatrix::LAPACK rational32 exposes clapack_getri
# getri currently requires LAPACK
# ./spec/lapack_spec.rb:118
NMatrix::LAPACK rational32 exposes lapack_gesdd
# Not implemented for non-LAPACK dtypes
# ./spec/lapack_spec.rb:132
NMatrix::LAPACK rational32 exposes lapack_gesvd
# this operation not yet implemented for non-BLAS dtypes
# ./spec/lapack_spec.rb:194
NMatrix::LAPACK rational32 exposes the convenience gesvd method
# this operation not yet implemented for non-BLAS dtypes
# ./spec/lapack_spec.rb:266
NMatrix::LAPACK rational32 exposes the convenience gesdd method
# this operation not yet implemented for non-BLAS dtypes
# ./spec/lapack_spec.rb:334
NMatrix::LAPACK rational32 exposes geev
# needs rational implementation
# ./spec/lapack_spec.rb:394
NMatrix::LAPACK rational64 exposes clapack_potrf
# potrf currently requires LAPACK
# ./spec/lapack_spec.rb:87
NMatrix::LAPACK rational64 exposes clapack_getri
# getri currently requires LAPACK
# ./spec/lapack_spec.rb:118
NMatrix::LAPACK rational64 exposes lapack_gesdd
# Not implemented for non-LAPACK dtypes
# ./spec/lapack_spec.rb:132
NMatrix::LAPACK rational64 exposes lapack_gesvd
# this operation not yet implemented for non-BLAS dtypes
# ./spec/lapack_spec.rb:194
NMatrix::LAPACK rational64 exposes the convenience gesvd method
# this operation not yet implemented for non-BLAS dtypes
# ./spec/lapack_spec.rb:266
NMatrix::LAPACK rational64 exposes the convenience gesdd method
# this operation not yet implemented for non-BLAS dtypes
# ./spec/lapack_spec.rb:334
NMatrix::LAPACK rational64 exposes geev
# needs rational implementation
# ./spec/lapack_spec.rb:394
NMatrix::LAPACK rational128 exposes clapack_potrf
# potrf currently requires LAPACK
# ./spec/lapack_spec.rb:87
NMatrix::LAPACK rational128 exposes clapack_getri
# getri currently requires LAPACK
# ./spec/lapack_spec.rb:118
NMatrix::LAPACK rational128 exposes lapack_gesdd
# Not implemented for non-LAPACK dtypes
# ./spec/lapack_spec.rb:132
NMatrix::LAPACK rational128 exposes lapack_gesvd
# this operation not yet implemented for non-BLAS dtypes
# ./spec/lapack_spec.rb:194
NMatrix::LAPACK rational128 exposes the convenience gesvd method
# this operation not yet implemented for non-BLAS dtypes
# ./spec/lapack_spec.rb:266
NMatrix::LAPACK rational128 exposes the convenience gesdd method
# this operation not yet implemented for non-BLAS dtypes
# ./spec/lapack_spec.rb:334
NMatrix::LAPACK rational128 exposes geev
# needs rational implementation
# ./spec/lapack_spec.rb:394
NMatrix::LAPACK float32 exposes clapack_potrf
# potrf currently requires LAPACK
# ./spec/lapack_spec.rb:87
NMatrix::LAPACK float32 exposes clapack_getri
# getri currently requires LAPACK
# ./spec/lapack_spec.rb:118
NMatrix::LAPACK float64 exposes clapack_potrf
# potrf currently requires LAPACK
# ./spec/lapack_spec.rb:87
NMatrix::LAPACK float64 exposes clapack_getri
# getri currently requires LAPACK
# ./spec/lapack_spec.rb:118
NMatrix::LAPACK complex64 exposes clapack_potrf
# potrf currently requires LAPACK
# ./spec/lapack_spec.rb:87
NMatrix::LAPACK complex64 exposes clapack_getri
# getri currently requires LAPACK
# ./spec/lapack_spec.rb:118
NMatrix::LAPACK complex64 exposes lapack_gesdd
# Example may be wrong
# ./spec/lapack_spec.rb:132
NMatrix::LAPACK complex64 exposes lapack_gesvd
# Example may be wrong
# ./spec/lapack_spec.rb:194
NMatrix::LAPACK complex64 exposes the convenience gesvd method
# Example may be wrong
# ./spec/lapack_spec.rb:266
NMatrix::LAPACK complex64 exposes the convenience gesdd method
# Example may be wrong
# ./spec/lapack_spec.rb:334
NMatrix::LAPACK complex64 exposes geev
# Need complex example
# ./spec/lapack_spec.rb:394
NMatrix::LAPACK complex128 exposes clapack_potrf
# potrf currently requires LAPACK
# ./spec/lapack_spec.rb:87
NMatrix::LAPACK complex128 exposes clapack_getri
# getri currently requires LAPACK
# ./spec/lapack_spec.rb:118
NMatrix::LAPACK complex128 exposes lapack_gesdd
# Example may be wrong
# ./spec/lapack_spec.rb:132
NMatrix::LAPACK complex128 exposes lapack_gesvd
# Example may be wrong
# ./spec/lapack_spec.rb:194
NMatrix::LAPACK complex128 exposes the convenience gesvd method
# Example may be wrong
# ./spec/lapack_spec.rb:266
NMatrix::LAPACK complex128 exposes the convenience gesdd method
# Example may be wrong
# ./spec/lapack_spec.rb:334
NMatrix::LAPACK complex128 exposes geev
# Need complex example
# ./spec/lapack_spec.rb:394
math float32 should correctly invert a matrix
# getri currently requires LAPACK
# ./spec/math_spec.rb:141
math float64 should correctly invert a matrix
# getri currently requires LAPACK
# ./spec/math_spec.rb:141
math complex64 should correctly invert a matrix
# getri currently requires LAPACK
# ./spec/math_spec.rb:141
math complex128 should correctly invert a matrix
# getri currently requires LAPACK
# ./spec/math_spec.rb:141
math rational32 should correctly invert a matrix
# getri needs rational implementation
# ./spec/math_spec.rb:141
math rational64 should correctly invert a matrix
# getri needs rational implementation
# ./spec/math_spec.rb:141
math rational128 should correctly invert a matrix
# getri needs rational implementation
# ./spec/math_spec.rb:141
Finished in 12.54 seconds
1002 examples, 0 failures, 56 pending
==12531==
==12531== HEAP SUMMARY:
==12531== in use at exit: 17,760,450 bytes in 202,766 blocks
==12531== total heap usage: 1,096,574 allocs, 893,808 frees, 162,521,024 bytes allocated
==12531==
==12531== LEAK SUMMARY:
==12531== definitely lost: 8,308,027 bytes in 67,104 blocks
==12531== indirectly lost: 4,453,429 bytes in 63,294 blocks
==12531== possibly lost: 1,977,319 bytes in 38,130 blocks
==12531== still reachable: 3,021,675 bytes in 34,238 blocks
==12531== suppressed: 0 bytes in 0 blocks
==12531== Rerun with --leak-check=full to see details of leaked memory
==12531==
==12531== For counts of detected and suppressed errors, rerun with: -v
==12531== ERROR SUMMARY: 1615 errors from 2 contexts (suppressed: 0 from 0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment