# HG changeset patch # User John D # Date 1470691437 14400 # Node ID b7c4178dadc4101fd73820d9db72fa86909fea17 # Parent fc1bee8ff2d4170faa44e1025faefd8cfddfdcce sparsersb: update patch to latest from sparser repo, enable openmp * src/of-sparsersb-1-fixes.patch: update patch * src/librsb.mk: remove --disable-openmp diff -r fc1bee8ff2d4 -r b7c4178dadc4 src/librsb.mk --- a/src/librsb.mk Sun Aug 07 19:38:56 2016 -0400 +++ b/src/librsb.mk Mon Aug 08 17:23:57 2016 -0400 @@ -24,7 +24,7 @@ $(CONFIGURE_CPPFLAGS) $(CONFIGURE_LDFLAGS) \ --disable-c-examples --disable-fortran-examples \ --disable-sparse-blas-interface \ - --disable-octave-testing --without-openmp + --disable-octave-testing $(MAKE) -C '$(1)' -j '$(JOBS)' $(MAKE) -C '$(1)' -j 1 install DESTDIR='$(3)' diff -r fc1bee8ff2d4 -r b7c4178dadc4 src/of-sparsersb-1-fixes.patch --- a/src/of-sparsersb-1-fixes.patch Sun Aug 07 19:38:56 2016 -0400 +++ b/src/of-sparsersb-1-fixes.patch Mon Aug 08 17:23:57 2016 -0400 @@ -1,52 +1,102 @@ diff -ur sparsersb-1.0.1.orig/src/sparsersb.cc sparsersb-1.0.1/src/sparsersb.cc --- sparsersb-1.0.1.orig/src/sparsersb.cc 2016-08-07 18:22:30.539481175 -0400 -+++ sparsersb-1.0.1/src/sparsersb.cc 2016-08-07 19:29:31.945709584 -0400 -@@ -1239,7 +1239,7 @@ ++++ sparsersb-1.0.1/src/sparsersb.cc 2016-08-08 12:07:33.136989176 -0400 +@@ -87,6 +87,8 @@ + #endif + #endif + ++#define RSBOI_USE_PATCH_38143 ( defined(OCTAVE_MAJOR_VERSION) && (OCTAVE_MAJOR_VERSION>=4) ) /* See http://savannah.gnu.org/bugs/?48335#comment5 */ ++ + #if 0 + #define RSBOI_WARN( MSG ) \ + octave_stdout << "Warning in "<<__func__<<"(), in file "<<__FILE__<<" at line "<<__LINE__<<":\n" << MSG; +@@ -1239,7 +1241,9 @@ private: public: -- DECLARE_OCTAVE_ALLOCATOR -+// DECLARE_OCTAVE_ALLOCATOR ++#if !RSBOI_USE_PATCH_38143 + DECLARE_OCTAVE_ALLOCATOR ++#endif /* RSBOI_USE_PATCH_38143 */ DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA };/* end of class octave_sparsersb_mtx definition */ -@@ -1256,7 +1256,8 @@ +@@ -1253,10 +1257,24 @@ + } + #endif + ++#if RSBOI_USE_PATCH_38143 ++#define RSBOI_CAST_CONV_ARG(ARGT) /* Seems like in 4.1.0+ CAST_CONV_ARG is not there. */ \ ++ ARGT v = dynamic_cast< ARGT > (a) ++#define RSBOI_CAST_UNOP_ARG(ARGT) /* Seems like in 4.1.0+ CAST_UNOP_ARG is not there. */ \ ++ RSBOI_CAST_CONV_ARG(ARGT) ++#define RSB_CAST_BINOP_ARGS(ARGT_V1, ARGT_V2); /* Seems like in 4.1.0+ CAST_BINOP_ARGS is not there. */ \ ++ ARGT_V1 v1 = dynamic_cast< ARGT_V1 > (a1); \ ++ ARGT_V2 v2 = dynamic_cast< ARGT_V2 > (a2); ++#else /* RSBOI_USE_PATCH_38143 */ ++#define RSBOI_CAST_CONV_ARG CAST_CONV_ARG ++#define RSBOI_CAST_UNOP_ARG CAST_UNOP_ARG ++#define RSB_CAST_BINOP_ARGS CAST_BINOP_ARGS ++#endif /* RSBOI_USE_PATCH_38143 */ ++ static octave_base_value * default_numeric_conversion_function (const octave_base_value& a) { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_CONV_ARG (const octave_sparsersb_mtx&); -+ //CAST_CONV_ARG (const octave_sparsersb_mtx&); -+ const octave_sparsersb_mtx &v = dynamic_cast (a) ++ RSBOI_CAST_CONV_ARG (const octave_sparsersb_mtx&); RSBOI_WARN(RSBOI_O_MISSIMPERRMSG); RSBOI_WARN(RSBOI_0_UNFFEMSG); if(v.is_real_type()) -@@ -1274,7 +1275,8 @@ +@@ -1274,7 +1292,7 @@ { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); RSBOI_WARN(RSBOI_O_MISSIMPERRMSG); - CAST_CONV_ARG (const octave_sparsersb_mtx &); -+ //CAST_CONV_ARG (const octave_sparsersb_mtx &); -+ const octave_sparsersb_mtx &v = dynamic_cast (a); ++ RSBOI_CAST_CONV_ARG (const octave_sparsersb_mtx&); return new octave_sparse_matrix (v.matrix_value ()); } -@@ -1292,7 +1294,8 @@ +@@ -1283,7 +1301,7 @@ + { + RSBOI_WARN(RSBOI_O_MISSIMPERRMSG); + RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); +- CAST_CONV_ARG (const octave_sparsersb_mtx &); ++ RSBOI_CAST_CONV_ARG (const octave_sparsersb_mtx&); + return new octave_sparse_matrix (v.matrix_value ()); + } + #endif +@@ -1292,7 +1310,7 @@ { RSBOI_WARN(RSBOI_O_MISSIMPERRMSG); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_UNOP_ARG (const octave_sparsersb_mtx&); -+ // CAST_UNOP_ARG (const octave_sparsersb_mtx&); -+ const octave_sparsersb_mtx& v = dynamic_cast (a); ++ RSBOI_CAST_UNOP_ARG (const octave_sparsersb_mtx&); return new octave_sparsersb_mtx (v); } -@@ -1330,21 +1333,24 @@ +@@ -1301,7 +1319,7 @@ { RSBOI_WARN(RSBOI_O_MISSIMPERRMSG); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_UNOP_ARG (const octave_sparsersb_mtx&); -+ //CAST_UNOP_ARG (const octave_sparsersb_mtx&); -+ const octave_sparsersb_mtx& v = dynamic_cast (a); ++ RSBOI_CAST_UNOP_ARG (const octave_sparsersb_mtx&); + const octave_idx_type rn=v.mtxAp->nrA,cn=v.mtxAp->ncA; + Matrix v2(rn,cn); + octave_value retval = v2; +@@ -1315,7 +1333,7 @@ + { + RSBOI_WARN(RSBOI_O_MISSIMPERRMSG); + RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); +- CAST_UNOP_ARG (const octave_sparsersb_mtx&); ++ RSBOI_CAST_UNOP_ARG (const octave_sparsersb_mtx&); + const octave_idx_type rn=v.mtxAp->nrA,cn=v.mtxAp->ncA; + Matrix v2(rn,cn); + octave_value retval = v2; +@@ -1330,21 +1348,21 @@ + { + RSBOI_WARN(RSBOI_O_MISSIMPERRMSG); + RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); +- CAST_UNOP_ARG (const octave_sparsersb_mtx&); ++ RSBOI_CAST_UNOP_ARG (const octave_sparsersb_mtx&); return v.cp_ubop(RSB_ELOPF_NEG); } @@ -54,8 +104,7 @@ { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_UNOP_ARG (const octave_sparsersb_mtx&); -+ //CAST_UNOP_ARG (const octave_sparsersb_mtx&); -+ const octave_sparsersb_mtx& v = dynamic_cast (a); ++ RSBOI_CAST_UNOP_ARG (const octave_sparsersb_mtx&); return v.rsboi_get_scaled_copy(rsboi_pone[0],RSB_TRANSPOSITION_T); } @@ -63,74 +112,61 @@ { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_UNOP_ARG (const octave_sparsersb_mtx&); -+ //CAST_UNOP_ARG (const octave_sparsersb_mtx&); -+ const octave_sparsersb_mtx& v = dynamic_cast (a); ++ RSBOI_CAST_UNOP_ARG (const octave_sparsersb_mtx&); return v.rsboi_get_scaled_copy(rsboi_pone[0],RSB_TRANSPOSITION_C); } -@@ -1454,7 +1460,9 @@ +@@ -1454,7 +1472,7 @@ DEFBINOP(ldiv, sparse_rsb_mtx, matrix) { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); if(v1.is__triangular()) return rsboi_spsm(v1,v2,RSB_TRANSPOSITION_N); -@@ -1469,7 +1477,9 @@ +@@ -1469,7 +1487,7 @@ DEFBINOP(trans_ldiv, sparse_rsb_mtx, matrix) { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); if(v1.is__triangular()) return rsboi_spsm(v1,v2,RSB_TRANSPOSITION_T); -@@ -1485,7 +1495,9 @@ +@@ -1485,7 +1503,7 @@ DEFBINOP(c_ldiv, sparse_rsb_mtx, matrix) { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_complex_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); if(v1.is__triangular()) return rsboi_spsm(v1,v2,RSB_TRANSPOSITION_N); -@@ -1500,7 +1512,9 @@ +@@ -1500,7 +1518,7 @@ DEFBINOP(trans_c_ldiv, sparse_rsb_mtx, matrix) { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_complex_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); if(v1.is__triangular()) return rsboi_spsm(v1,v2,RSB_TRANSPOSITION_T); -@@ -1539,7 +1553,9 @@ +@@ -1539,7 +1557,7 @@ #if RSBOI_WANT_DOUBLE_COMPLEX DEFBINOP(rsb_c_div, sparse_rsb_mtx, complex) { - CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_complex& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return v1.rsboi_get_scaled_copy_inv(v2.complex_value()); } -@@ -1547,14 +1563,18 @@ +@@ -1547,14 +1565,14 @@ DEFBINOP(rsb_s_div, sparse_rsb_mtx, scalar) { - CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_scalar& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return v1.rsboi_get_scaled_copy_inv(v2.scalar_value()); } @@ -138,97 +174,115 @@ DEFBINOP(rsb_s_mul, sparse_rsb_mtx, scalar) { - CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_scalar& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return v1.rsboi_get_scaled_copy(v2.scalar_value()); } -@@ -1562,7 +1582,9 @@ +@@ -1562,7 +1580,7 @@ #if RSBOI_WANT_DOUBLE_COMPLEX DEFBINOP(rsb_c_mul, sparse_rsb_mtx, complex) { - CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_complex& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return v1.rsboi_get_scaled_copy(v2.complex_value()); } -@@ -1581,7 +1603,9 @@ +@@ -1571,7 +1589,7 @@ + #if 0 + DEFBINOP(rsb_s_pow, sparse_rsb_mtx, scalar) + { +- CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); + RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); + return v1.rsboi_get_power_copy(v2.scalar_value()); + } +@@ -1581,7 +1599,7 @@ { rsb_err_t errval = RSB_ERR_NO_ERROR; RSBOI_FIXME("I dunno how to trigger this!"); - CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_sparsersb_mtx&); -+ //CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_sparsersb_mtx&); -+ octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_sparsersb_mtx& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_sparsersb_mtx&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); //rsb_assign(v1.mtxAp, v2.mtxAp); errval = rsb_mtx_clone(&v1.mtxAp,RSB_NUMERICAL_TYPE_SAME_TYPE,RSB_TRANSPOSITION_N,NULL,v2.mtxAp,RSBOI_EXPF); -@@ -1590,7 +1614,9 @@ +@@ -1590,7 +1608,7 @@ DEFASSIGNOP (assignm, sparse_rsb_mtx, matrix) { - CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_matrix&); -+ //CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_matrix&); -+ octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_matrix&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); RSBOI_DESTROY(v1.mtxAp); octave_value retval; -@@ -1666,7 +1692,9 @@ +@@ -1605,7 +1623,7 @@ + #if 0 + DEFASSIGNOP(rsb_op_mul_eq_s, sparse_rsb_mtx, scalar) + { +- CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_scalar&); ++ RSB_CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_scalar&); + octave_value retval; + RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); + RSBOI_PERROR(v1.rsboi_scale(v2.scalar_value())); +@@ -1635,7 +1653,7 @@ + + DEFASSIGNOP(rsb_op_div_eq_s, sparse_rsb_mtx, scalar) + { +- CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_scalar&); ++ RSB_CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_scalar&); + octave_value retval; + RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); + RSBOI_PERROR(v1.rsboi_scale_inv(v2.scalar_value())); +@@ -1666,7 +1684,7 @@ DEFBINOP(rsb_el_mul_s, sparse_rsb_mtx, scalar) { - CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_scalar& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return v1.rsboi_get_scaled_copy(v2.scalar_value()); } -@@ -1674,7 +1702,9 @@ +@@ -1674,7 +1692,7 @@ #if RSBOI_WANT_DOUBLE_COMPLEX DEFBINOP(rsb_el_mul_c, sparse_rsb_mtx, complex) { - CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_complex& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return v1.rsboi_get_scaled_copy(v2.complex_value()); } -@@ -1682,7 +1712,9 @@ +@@ -1682,7 +1700,7 @@ DEFBINOP(rsb_el_div_s, sparse_rsb_mtx, scalar) { - CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_scalar& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return v1.rsboi_get_scaled_copy_inv(v2.scalar_value()); } -@@ -1690,7 +1722,9 @@ +@@ -1690,7 +1708,7 @@ #if RSBOI_WANT_DOUBLE_COMPLEX DEFBINOP(rsb_el_div_c, sparse_rsb_mtx, complex) { - CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_complex& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_complex&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); return v1.rsboi_get_scaled_copy_inv(v2.complex_value()); } -@@ -1710,21 +1744,27 @@ +@@ -1700,7 +1718,7 @@ + #if 0 + DEFASSIGNOP(rsb_op_el_div_eq, sparse_rsb_mtx, scalar) + { +- CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); + std::cout << "rsb_op_el_div_eq!\n"; + RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); + return v1.rsboi_get_scaled_copy_inv(v2.complex_value()); +@@ -1710,21 +1728,21 @@ DEFASSIGNOP(rsb_op_el_mul_eq_sc, sparse_rsb_mtx, matrix) { rsb_err_t errval = RSB_ERR_NO_ERROR; - CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_matrix&); -+ //CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_matrix&); -+ octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_matrix&); return v1.scale_rows(v2,false); } @@ -236,9 +290,7 @@ { rsb_err_t errval = RSB_ERR_NO_ERROR; - CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_matrix&); -+ //CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_matrix&); -+ octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_matrix&); return v1.scale_rows(v2,true); } #endif /* RSBOI_WANT_DOUBLE_COMPLEX */ @@ -246,31 +298,25 @@ DEFBINOP(el_pow, sparse_rsb_mtx, scalar) { - CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_scalar& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx &, const octave_scalar&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); RSBOI_T alpha=v2.scalar_value(); return v1.cp_ubop(RSB_ELOPF_POW,&alpha); -@@ -1733,7 +1773,9 @@ +@@ -1733,7 +1751,7 @@ #ifdef RSB_FULLY_IMPLEMENTED DEFASSIGNOP (assigns, sparse_rsb_mtx, scalar) { - CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_scalar&); -+ //CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_scalar&); -+ octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_scalar& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (octave_sparsersb_mtx &, const octave_scalar&); RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); v1.assign(idx, v2.matrix_value()); RSBOI_WARN(RSBOI_O_MISSIMPERRMSG); -@@ -1744,28 +1786,36 @@ +@@ -1744,28 +1762,28 @@ DEFBINOP(op_sub, sparse_rsb_mtx, sparse_rsb_mtx) { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_sparsersb_mtx&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_sparsersb_mtx&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_sparsersb_mtx& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_sparsersb_mtx&); return v1.rsboi_sppsp(&rsboi_mone[0],v2); } @@ -278,9 +324,7 @@ { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_sparsersb_mtx&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_sparsersb_mtx&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_sparsersb_mtx& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_sparsersb_mtx&); return v1.rsboi_sppsp(&rsboi_pone[0],v2); } @@ -288,9 +332,7 @@ { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_sparsersb_mtx&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_sparsersb_mtx&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_sparsersb_mtx& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_sparsersb_mtx&); return v1.rsboi_spmsp(v2); } @@ -298,31 +340,25 @@ { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); return v1.rsboi_spmm(v2, false); } -@@ -1773,7 +1823,9 @@ +@@ -1773,7 +1791,7 @@ { // ".'*" operator RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_matrix&); return v1.rsboi_spmm(v2, true); } -@@ -1781,14 +1833,18 @@ +@@ -1781,14 +1799,14 @@ DEFBINOP(op_c_mul, sparse_rsb_mtx, matrix) { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_complex_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); return v1.rsboi_spmm(v2, false); } @@ -330,10 +366,7 @@ { RSBOI_DEBUG_NOTICE(RSBOI_D_EMPTY_MSG); - CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); -+ //CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); -+ const octave_sparsersb_mtx& v1 = dynamic_cast (a1); -+ const octave_complex_matrix& v2 = dynamic_cast (a2); ++ RSB_CAST_BINOP_ARGS (const octave_sparsersb_mtx&, const octave_complex_matrix&); return v1.rsboi_spmm(v2, true); } #endif /* RSBOI_WANT_DOUBLE_COMPLEX */ -Only in sparsersb-1.0.1/src: .sparsersb.cc.swp