diff --git a/include/graphblas/banshee/coordinates.hpp b/include/graphblas/banshee/coordinates.hpp index 8118bb747..30c3533ab 100644 --- a/include/graphblas/banshee/coordinates.hpp +++ b/include/graphblas/banshee/coordinates.hpp @@ -24,6 +24,7 @@ #define _H_GRB_BANSHEE_COORDINATES #include //size_t +#include //size_t #include diff --git a/include/graphblas/base/io.hpp b/include/graphblas/base/io.hpp index 78d9f4df4..99d024a97 100644 --- a/include/graphblas/base/io.hpp +++ b/include/graphblas/base/io.hpp @@ -26,6 +26,7 @@ #include #include +#include #ifndef _H_GRB_IO_BASE #define _H_GRB_IO_BASE diff --git a/include/graphblas/bsp1d/io.hpp b/include/graphblas/bsp1d/io.hpp index 57df126e9..16abf3fce 100644 --- a/include/graphblas/bsp1d/io.hpp +++ b/include/graphblas/bsp1d/io.hpp @@ -25,6 +25,7 @@ #include #include +#include #include #include diff --git a/include/graphblas/bsp1d/matrix.hpp b/include/graphblas/bsp1d/matrix.hpp index e188804d2..792ea5c77 100644 --- a/include/graphblas/bsp1d/matrix.hpp +++ b/include/graphblas/bsp1d/matrix.hpp @@ -23,6 +23,8 @@ #ifndef _H_GRB_BSP1D_MATRIX #define _H_GRB_BSP1D_MATRIX +#include + #include #include #include diff --git a/include/graphblas/bsp1d/vector.hpp b/include/graphblas/bsp1d/vector.hpp index 4283e10e2..53a3ee431 100644 --- a/include/graphblas/bsp1d/vector.hpp +++ b/include/graphblas/bsp1d/vector.hpp @@ -26,6 +26,7 @@ #include #include #include +#include #include diff --git a/include/graphblas/hyperdags/blas1.hpp b/include/graphblas/hyperdags/blas1.hpp index 8a3ade67f..b80dd3672 100644 --- a/include/graphblas/hyperdags/blas1.hpp +++ b/include/graphblas/hyperdags/blas1.hpp @@ -32,6 +32,7 @@ #include #include +#include namespace grb { diff --git a/include/graphblas/hyperdags/blas2.hpp b/include/graphblas/hyperdags/blas2.hpp index dad35450a..18c8d4d16 100644 --- a/include/graphblas/hyperdags/blas2.hpp +++ b/include/graphblas/hyperdags/blas2.hpp @@ -32,6 +32,7 @@ #include #include +#include namespace grb { diff --git a/include/graphblas/hyperdags/blas3.hpp b/include/graphblas/hyperdags/blas3.hpp index 44f9daa86..35e1b20b9 100644 --- a/include/graphblas/hyperdags/blas3.hpp +++ b/include/graphblas/hyperdags/blas3.hpp @@ -33,6 +33,7 @@ #include #include +#include namespace grb { diff --git a/include/graphblas/hyperdags/hyperdags.hpp b/include/graphblas/hyperdags/hyperdags.hpp index 2ae951565..bcad1cdb3 100644 --- a/include/graphblas/hyperdags/hyperdags.hpp +++ b/include/graphblas/hyperdags/hyperdags.hpp @@ -34,6 +34,7 @@ #include #include #include +#include #include diff --git a/include/graphblas/hyperdags/io.hpp b/include/graphblas/hyperdags/io.hpp index 4ec81917b..6b53da644 100644 --- a/include/graphblas/hyperdags/io.hpp +++ b/include/graphblas/hyperdags/io.hpp @@ -27,6 +27,7 @@ #include #include +#include namespace grb { diff --git a/include/graphblas/nonblocking/coordinates.hpp b/include/graphblas/nonblocking/coordinates.hpp index ff6789287..208519779 100644 --- a/include/graphblas/nonblocking/coordinates.hpp +++ b/include/graphblas/nonblocking/coordinates.hpp @@ -37,6 +37,7 @@ #include //size_t #include +#include // uintptr_t #include #include diff --git a/include/graphblas/nonblocking/io.hpp b/include/graphblas/nonblocking/io.hpp index 0831fc564..1f3c18d48 100644 --- a/include/graphblas/nonblocking/io.hpp +++ b/include/graphblas/nonblocking/io.hpp @@ -27,6 +27,8 @@ #ifndef _H_GRB_NONBLOCKING_IO #define _H_GRB_NONBLOCKING_IO +#include + #include #include #include "vector.hpp" diff --git a/include/graphblas/nonblocking/matrix.hpp b/include/graphblas/nonblocking/matrix.hpp index 6fdd70343..dac1418ce 100644 --- a/include/graphblas/nonblocking/matrix.hpp +++ b/include/graphblas/nonblocking/matrix.hpp @@ -34,6 +34,7 @@ #include #include #include +#include #include diff --git a/include/graphblas/reference/coordinates.hpp b/include/graphblas/reference/coordinates.hpp index 2a1f90137..5ab3cab0e 100644 --- a/include/graphblas/reference/coordinates.hpp +++ b/include/graphblas/reference/coordinates.hpp @@ -31,7 +31,8 @@ #include // std::runtime_error #include -#include // memcpy +#include //memcpy +#include // uintptr_t #include #include diff --git a/include/graphblas/reference/init.hpp b/include/graphblas/reference/init.hpp index a7bdf0b02..92728dc79 100644 --- a/include/graphblas/reference/init.hpp +++ b/include/graphblas/reference/init.hpp @@ -26,6 +26,7 @@ #include #include // for uintptr_t #include +#include #include #include diff --git a/include/graphblas/reference/io.hpp b/include/graphblas/reference/io.hpp index f4f1b0709..2cb761702 100644 --- a/include/graphblas/reference/io.hpp +++ b/include/graphblas/reference/io.hpp @@ -24,6 +24,7 @@ #define _H_GRB_REFERENCE_IO #include +#include #include diff --git a/include/graphblas/reference/matrix.hpp b/include/graphblas/reference/matrix.hpp index c1b3a365d..b2f989e95 100644 --- a/include/graphblas/reference/matrix.hpp +++ b/include/graphblas/reference/matrix.hpp @@ -28,6 +28,8 @@ #include //std::stringstream #include #include +#include +#include #include #include #include diff --git a/include/graphblas/reference/vector.hpp b/include/graphblas/reference/vector.hpp index 4be006ed5..9415d2237 100644 --- a/include/graphblas/reference/vector.hpp +++ b/include/graphblas/reference/vector.hpp @@ -24,6 +24,7 @@ #define _H_GRB_REFERENCE_VECTOR #include +#include #include #include #include diff --git a/include/graphblas/utils.hpp b/include/graphblas/utils.hpp index 3ab508eec..3a4717e86 100644 --- a/include/graphblas/utils.hpp +++ b/include/graphblas/utils.hpp @@ -327,7 +327,10 @@ namespace grb { ret = assigned; } else { // if based on value, if there is a value, cast it to bool - if( assigned ) { + if( !assigned ) { + return false; + } + else { ret = static_cast< bool >( val[ offset ] ); } // otherwise there is no value and false is assumed @@ -354,7 +357,10 @@ namespace grb { ret = assigned; } else { // if based on value, if there is a value, cast it to bool - if( assigned ) { + if( !assigned ) { + return false; + } + else { ret = static_cast< bool >( real( val [ offset ] ) ) || static_cast< bool >( imag( val [ offset ] ) ); } @@ -375,10 +381,8 @@ namespace grb { const void * const, const size_t ) { - // set default mask to false bool ret = assigned; - // check whether we should return the inverted value - if( descriptor & descriptors::invert_mask ) { + if( ( descriptor & descriptors::invert_mask ) == descriptors::invert_mask ) { return !ret; } else { return ret; diff --git a/tests/unit/eWiseMul.cpp b/tests/unit/eWiseMul.cpp index c9900c508..19e6235a5 100644 --- a/tests/unit/eWiseMul.cpp +++ b/tests/unit/eWiseMul.cpp @@ -50,7 +50,7 @@ void grb_program( const size_t &n, RC &rc ) { }, temp ); rc = rc ? rc : set( even_mask, temp, true ); rc = rc ? rc : set< descriptors::invert_mask >( - odd_mask, even_mask, true ); + odd_mask, temp, true ); rc = rc ? rc : wait(); if( rc != SUCCESS ) { std::cerr << "\t initialisation of masks FAILED\n"; diff --git a/tests/unit/launcher/reduce.cpp b/tests/unit/launcher/reduce.cpp index cf0ae43da..43c3bc055 100644 --- a/tests/unit/launcher/reduce.cpp +++ b/tests/unit/launcher/reduce.cpp @@ -468,8 +468,12 @@ void grbProgram( const size_t &P, int &exit_status ) { grb::Vector< bool > even_mask( n ); check = 0.0; for( size_t i = 0; i < n; i += 2 ) { - check += xr[ i ]; - const grb::RC setrc = grb::setElement( even_mask, true, i ); + bool set_to = false; + if( i%4 == 0 ) { + check += xr[ i ]; + set_to = true; + } + const grb::RC setrc = grb::setElement( even_mask, set_to, i ); #ifndef NDEBUG assert( setrc == grb::SUCCESS ); #else @@ -484,7 +488,7 @@ void grbProgram( const size_t &P, int &exit_status ) { } check = 0.0; - for( size_t i = 1; i < n; i += 2 ) { + for( size_t i = 2; i < n; i += 4 ) { check += xr[ i ]; } @@ -555,7 +559,7 @@ void grbProgram( const size_t &P, int &exit_status ) { } exit_status = expect_sparse_success< grb::descriptors::invert_mask >( - sparse, realm, grb::nnz(sparse), empty_mask ); + sparse, realm, 0.0, empty_mask, grb::nnz(sparse) ); if( exit_status != 0 ) { exit_status += 500; return; @@ -606,7 +610,7 @@ void grbProgram( const size_t &P, int &exit_status ) { } exit_status = expect_sparse_success< grb::descriptors::invert_mask >( - sparse, realm, grb::nnz(sparse), odd_mask ); + sparse, realm, 0.0, odd_mask, grb::nnz(sparse) ); if( exit_status != 0 ) { exit_status += 1100; return; diff --git a/tests/unit/pinnedVector.cpp b/tests/unit/pinnedVector.cpp index ce32122cd..6385761dd 100644 --- a/tests/unit/pinnedVector.cpp +++ b/tests/unit/pinnedVector.cpp @@ -214,7 +214,8 @@ void grbProgram( const struct input< T > &in, struct output< T > &out ) { case LEAST_SPARSE_CLEARED: { Vector< bool > mask( n ); - rc = grb::setElement( mask, true, n/2 ); + rc = grb::set( mask, false ); + rc = rc ? rc : grb::setElement( mask, true, n/2 ); rc = rc ? rc : grb::set< grb::descriptors::invert_mask >( nonempty, mask, in.element ); diff --git a/tests/unit/set.cpp b/tests/unit/set.cpp index f4c610a38..7422f3f14 100644 --- a/tests/unit/set.cpp +++ b/tests/unit/set.cpp @@ -730,7 +730,8 @@ void grb_program( const size_t &n, grb::RC &rc ) { // test sparse inverted mask set grb::Vector< bool > mask( n ); - rc = grb::setElement( mask, true, n / 2 ); + rc = grb::set( mask, false ); + rc = rc ? rc : grb::setElement( mask, true, n / 2 ); if( rc == SUCCESS ) { rc = grb::set( src, 1.5 ); rc = rc ? rc : grb::wait( src ); diff --git a/tests/unit/setToIndex.cpp b/tests/unit/setToIndex.cpp index 2a5590af2..e771e3059 100644 --- a/tests/unit/setToIndex.cpp +++ b/tests/unit/setToIndex.cpp @@ -1205,7 +1205,7 @@ void grb_program( const size_t &n, grb::RC &rc ) { rc = grb::set< invert >( dst, one_mask, 3.14 ); rc = rc ? rc : grb::wait( dst ); if( !expect_success( rc ) ) { return; } - rc = expect_all_but_one( dst, half_size ); + rc = expect_none( dst ); if( rc != grb::SUCCESS ) { return; } std::cerr << "\b 20:"; @@ -1256,7 +1256,7 @@ void grb_program( const size_t &n, grb::RC &rc ) { rc = grb::set< invert >( dst, one_mask, src ); rc = rc ? rc : grb::wait( dst ); if( !expect_success( rc ) ) { return; } - rc = expect_one( dst, 0, 0 ); + rc = expect_none( dst ); if( rc != grb::SUCCESS ) { return; } std::cerr << "\b 22:"; @@ -1277,7 +1277,7 @@ void grb_program( const size_t &n, grb::RC &rc ) { rc = grb::set< invert >( dst, one_mask, src ); rc = rc ? rc : grb::wait( dst ); if( !expect_success( rc ) ) { return; } - rc = expect_all_but_one( dst, half_size ); + rc = expect_none( dst ); if( rc != grb::SUCCESS ) { return; } std::cerr << "\b 24:"; @@ -1298,7 +1298,7 @@ void grb_program( const size_t &n, grb::RC &rc ) { rc = grb::set< invert >( dst, one_mask, 7.17 ); rc = rc ? rc : grb::wait( dst ); if( !expect_success( rc ) ) { return; } - rc = expect_all_but_one( dst, half_size ); + rc = expect_none( dst ); if( rc != grb::SUCCESS ) { return; } std::cerr << "\b 26:"; @@ -1365,7 +1365,7 @@ void grb_program( const size_t &n, grb::RC &rc ) { rc = grb::set< invert >( dst, one_mask, src ); rc = rc ? rc : grb::wait( dst ); if( !expect_success( rc ) ) { return; } - rc = expect_one( dst, 0, 0 ); + rc = expect_none( dst ); if( rc != grb::SUCCESS ) { return; } std::cerr << "\b 28:"; @@ -1408,7 +1408,7 @@ void grb_program( const size_t &n, grb::RC &rc ) { rc = grb::set< invert >( dst, one_mask, src ); rc = rc ? rc : grb::wait( dst ); if( !expect_success( rc ) ) { return; } - rc = expect_all_but_one( dst, half_size ); + rc = expect_none( dst ); if( rc != grb::SUCCESS ) { return; } std::cerr << "\b 30:";