Mercurial > octave-libgccjit
diff src/OPERATORS/op-fpm-fpm.cc @ 8958:6ccc12cc65ef
implement raising a permutation matrix to integer power
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 11 Mar 2009 14:07:24 +0100 |
parents | eb63fbe60fab |
children |
line wrap: on
line diff
--- a/src/OPERATORS/op-fpm-fpm.cc Wed Mar 11 10:42:04 2009 +0100 +++ b/src/OPERATORS/op-fpm-fpm.cc Wed Mar 11 14:07:24 2009 +0100 @@ -30,8 +30,10 @@ #include "ov-perm.h" #include "ov-flt-perm.h" #include "ov-flt-re-mat.h" +#include "ov-float.h" #include "ov-typeinfo.h" #include "ops.h" +#include "xpow.h" DEFUNOP (transpose, float_perm_matrix) { @@ -60,6 +62,13 @@ return octave_value (v1.perm_matrix_value ().inverse () * v2.perm_matrix_value (), false); } +DEFBINOP (pow, float_perm_matrix, float_scalar) +{ + CAST_BINOP_ARGS (const octave_float_perm_matrix&, const octave_float_scalar&); + + return xpow (v1.perm_matrix_value (), v2.float_scalar_value ()); +} + CONVDECL (float_perm_matrix_to_float_matrix) { CAST_CONV_ARG (const octave_float_perm_matrix&); @@ -83,6 +92,7 @@ INSTALL_BINOP (op_mul, octave_float_perm_matrix, octave_float_perm_matrix, mul); INSTALL_BINOP (op_div, octave_float_perm_matrix, octave_float_perm_matrix, div); INSTALL_BINOP (op_ldiv, octave_float_perm_matrix, octave_float_perm_matrix, ldiv); + INSTALL_BINOP (op_pow, octave_float_perm_matrix, octave_float_scalar, pow); INSTALL_CONVOP (octave_float_perm_matrix, octave_float_matrix, float_perm_matrix_to_float_matrix); INSTALL_CONVOP (octave_float_perm_matrix, octave_perm_matrix, float_perm_matrix_to_perm_matrix);