26#if defined (HAVE_CONFIG_H)
37#if ! defined (SCALARV)
38# define SCALARV SCALAR
41#if ! defined (DIAG_MATRIXV)
42# define DIAG_MATRIXV DIAG_MATRIX
45#if ! defined (MATRIXV)
46# define MATRIXV MATRIX
51#define OCTAVE_DIAG_MATRIX CONCAT2(octave_, DIAG_MATRIX)
52#define OCTAVE_MATRIX CONCAT2(octave_, MATRIX)
53#define OCTAVE_SCALAR CONCAT2(octave_, SCALAR)
54#define DIAG_MATRIX_VALUE CONCAT2(DIAG_MATRIXV, _value)
55#define MATRIX_VALUE CONCAT2(MATRIXV, _value)
56#define SCALAR_VALUE CONCAT2(SCALARV, _value)
58template <
typename DM,
typename S>
64 if (math::isfinite (std::norm (
d)))
71 if (math::isfinite (
d))
83 return dm_s_mul<> (v1,
v2.SCALAR_VALUE ());
86template <
typename DM,
typename S>
92 auto nd = std::norm (
d);
93 if (nd == 0.0 || math::isnan (nd))
100 if (
d == 0.0 || math::isnan (
d))
112 return dm_s_div<> (v1,
v2.SCALAR_VALUE ());
115template <
typename S,
typename DM>
121 if (math::isfinite (std::norm (
d)))
128 if (math::isfinite (
d))
140 return s_dm_mul<> (v1.SCALAR_VALUE (),
v2);
143template <
typename S,
typename DM>
149 auto nd = std::norm (
d);
150 if (nd == 0.0 || math::isnan (nd))
157 if (
d == 0.0 || math::isnan (
d))
169 return s_dm_ldiv<> (v1.SCALAR_VALUE (),
v2);
177 return xpow (v1.DIAG_MATRIX_VALUE (),
v2.SCALAR_VALUE ());
180#define SHORT_NAME CONCAT3(MSHORT, _, SSHORT)
181#define INST_NAME CONCAT3(install_, SHORT_NAME, _ops)
193OCTAVE_END_NAMESPACE(octave)
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
octave_value s_dm_ldiv(const S &d, const DM &dm)
octave_value dm_s_div(const DM &dm, const S &d)
octave_value dm_s_mul(const DM &dm, const S &d)
#define OCTAVE_DIAG_MATRIX
octave_value s_dm_mul(const S &d, const DM &dm)
const octave_base_value & a2
const octave_char_matrix & v2
#define DEFBINOP(name, t1, t2)
#define OCTAVE_CAST_BASE_VALUE(T, T_VAL, BASE_VAL)
#define INSTALL_BINOP_TI(ti, op, t1, t2, f)
octave_value op_mul(const octave_value &a1, const octave_value &a2)
octave_value op_ldiv(const octave_value &a1, const octave_value &a2)
octave_value op_pow(const octave_value &a1, const octave_value &a2)
octave_value op_div(const octave_value &a1, const octave_value &a2)
F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE * d
octave_value xpow(const SparseMatrix &a, double b)