GNU Octave  3.8.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Macros | Typedefs | Enumerations | Functions | Variables
bsxfun.cc File Reference
#include <string>
#include <vector>
#include <list>
#include "lo-mappers.h"
#include "oct-map.h"
#include "defun.h"
#include "parse.h"
#include "variables.h"
#include "ov-colon.h"
#include "unwind-prot.h"
#include "ov-fcn-handle.h"
Include dependency graph for bsxfun.cc:

Go to the source code of this file.

Macros

#define BSXDEF(T)
#define BSXEND(T)
#define BSXINIT(T, CLS, EXTRACTOR)
#define BSXLOOP(T, CLS, EXTRACTOR)
#define REGISTER_OP_HANDLER(OP, BTYP, NDA, FUNOP)   bsxfun_handler_table[OP][BTYP] = bsxfun_forward_op<NDA, FUNOP>
#define REGISTER_REL_HANDLER(REL, BTYP, NDA, FUNREL)   bsxfun_handler_table[REL][BTYP] = bsxfun_forward_rel<NDA, FUNREL>
#define REGISTER_STD_HANDLERS(BTYP, NDA)

Typedefs

typedef octave_value(* bsxfun_handler )(const octave_value &, const octave_value &)

Enumerations

enum  bsxfun_builtin_op {
  bsxfun_builtin_plus = 0, bsxfun_builtin_minus, bsxfun_builtin_times, bsxfun_builtin_divide,
  bsxfun_builtin_max, bsxfun_builtin_min, bsxfun_builtin_eq, bsxfun_builtin_ne,
  bsxfun_builtin_lt, bsxfun_builtin_le, bsxfun_builtin_gt, bsxfun_builtin_ge,
  bsxfun_builtin_and, bsxfun_builtin_or, bsxfun_builtin_power, bsxfun_builtin_unknown,
  bsxfun_num_builtin_ops = bsxfun_builtin_unknown
}

Functions

static bsxfun_builtin_op bsxfun_builtin_lookup (const std::string &name)
template<class NDA , NDA(bsxfun_op)(const NDA &, const NDA &) >
static octave_value bsxfun_forward_op (const octave_value &x, const octave_value &y)
template<class NDA , boolNDArray(bsxfun_rel)(const NDA &, const NDA &) >
static octave_value bsxfun_forward_rel (const octave_value &x, const octave_value &y)
template<class NDA , class CNDA >
static octave_value do_bsxfun_real_pow (const octave_value &x, const octave_value &y)
OCTAVE_EXPORT octave_value_list Fbsxfun (const octave_value_list &args, int)
static void maybe_fill_table (void)
static octave_value maybe_optimized_builtin (const std::string &name, const octave_value &a, const octave_value &b)
static bool maybe_update_column (octave_value &Ac, const octave_value &A, const dim_vector &dva, const dim_vector &dvc, octave_idx_type i, octave_value_list &idx)
static void update_index (Array< int > &idx, const dim_vector &dv, octave_idx_type i)

Variables

const charbsxfun_builtin_names []
bsxfun_handler bsxfun_handler_table [bsxfun_num_builtin_ops][btyp_num_types]

Macro Definition Documentation

#define BSXDEF (   T)
Value:
T result_ ## T; \
bool have_ ## T = false;

Referenced by Fbsxfun().

#define BSXEND (   T)
Value:
(have_ ## T) \
retval(0) = result_ ## T;

Referenced by Fbsxfun().

#define BSXINIT (   T,
  CLS,
  EXTRACTOR 
)
Value:
(result_type == CLS) \
{ \
have_ ## T = true; \
result_ ## T = \
tmp (0). EXTRACTOR ## _array_value (); \
result_ ## T .resize (dvc); \
}

Referenced by Fbsxfun().

#define BSXLOOP (   T,
  CLS,
  EXTRACTOR 
)
Value:
(have_ ## T) \
{ \
if (tmp (0).class_name () != CLS) \
{ \
have_ ## T = false; \
C = result_ ## T; \
C = do_cat_op (C, tmp (0), ra_idx); \
} \
else \
result_ ## T .insert \
(tmp(0). EXTRACTOR ## _array_value (), \
ra_idx); \
}

Referenced by Fbsxfun().

#define REGISTER_OP_HANDLER (   OP,
  BTYP,
  NDA,
  FUNOP 
)    bsxfun_handler_table[OP][BTYP] = bsxfun_forward_op<NDA, FUNOP>

Referenced by maybe_fill_table().

#define REGISTER_REL_HANDLER (   REL,
  BTYP,
  NDA,
  FUNREL 
)    bsxfun_handler_table[REL][BTYP] = bsxfun_forward_rel<NDA, FUNREL>

Referenced by maybe_fill_table().

#define REGISTER_STD_HANDLERS (   BTYP,
  NDA 
)
Value:
REGISTER_OP_HANDLER (bsxfun_builtin_plus, BTYP, NDA, bsxfun_add); \
REGISTER_OP_HANDLER (bsxfun_builtin_minus, BTYP, NDA, bsxfun_sub); \
REGISTER_OP_HANDLER (bsxfun_builtin_times, BTYP, NDA, bsxfun_mul); \
REGISTER_OP_HANDLER (bsxfun_builtin_divide, BTYP, NDA, bsxfun_div); \
REGISTER_OP_HANDLER (bsxfun_builtin_max, BTYP, NDA, bsxfun_max); \
REGISTER_OP_HANDLER (bsxfun_builtin_min, BTYP, NDA, bsxfun_min); \
REGISTER_REL_HANDLER (bsxfun_builtin_eq, BTYP, NDA, bsxfun_eq); \
REGISTER_REL_HANDLER (bsxfun_builtin_ne, BTYP, NDA, bsxfun_ne); \
REGISTER_REL_HANDLER (bsxfun_builtin_lt, BTYP, NDA, bsxfun_lt); \
REGISTER_REL_HANDLER (bsxfun_builtin_le, BTYP, NDA, bsxfun_le); \
REGISTER_REL_HANDLER (bsxfun_builtin_gt, BTYP, NDA, bsxfun_gt); \
REGISTER_REL_HANDLER (bsxfun_builtin_ge, BTYP, NDA, bsxfun_ge)

Referenced by maybe_fill_table().

Typedef Documentation

typedef octave_value(* bsxfun_handler)(const octave_value &, const octave_value &)

Definition at line 92 of file bsxfun.cc.

Enumeration Type Documentation

Enumerator:
bsxfun_builtin_plus 
bsxfun_builtin_minus 
bsxfun_builtin_times 
bsxfun_builtin_divide 
bsxfun_builtin_max 
bsxfun_builtin_min 
bsxfun_builtin_eq 
bsxfun_builtin_ne 
bsxfun_builtin_lt 
bsxfun_builtin_le 
bsxfun_builtin_gt 
bsxfun_builtin_ge 
bsxfun_builtin_and 
bsxfun_builtin_or 
bsxfun_builtin_power 
bsxfun_builtin_unknown 
bsxfun_num_builtin_ops 

Definition at line 43 of file bsxfun.cc.

Function Documentation

static bsxfun_builtin_op bsxfun_builtin_lookup ( const std::string &  name)
static

Definition at line 84 of file bsxfun.cc.

References bsxfun_builtin_unknown, and bsxfun_num_builtin_ops.

Referenced by maybe_optimized_builtin().

template<class NDA , NDA(bsxfun_op)(const NDA &, const NDA &) >
static octave_value bsxfun_forward_op ( const octave_value x,
const octave_value y 
)
static

Definition at line 100 of file bsxfun.cc.

References octave_value(), and x.

template<class NDA , boolNDArray(bsxfun_rel)(const NDA &, const NDA &) >
static octave_value bsxfun_forward_rel ( const octave_value x,
const octave_value y 
)
static

Definition at line 109 of file bsxfun.cc.

References octave_value(), and x.

template<class NDA , class CNDA >
static octave_value do_bsxfun_real_pow ( const octave_value x,
const octave_value y 
)
static

Definition at line 120 of file bsxfun.cc.

References octave_value(), and x.

OCTAVE_EXPORT octave_value_list Fbsxfun ( const octave_value_list args,
int   
)
static void maybe_fill_table ( void  )
static
static octave_value maybe_optimized_builtin ( const std::string &  name,
const octave_value a,
const octave_value b 
)
static
static bool maybe_update_column ( octave_value Ac,
const octave_value A,
const dim_vector dva,
const dim_vector dvc,
octave_idx_type  i,
octave_value_list idx 
)
static

Definition at line 228 of file bsxfun.cc.

References A, dim_vector::length(), octave_value(), and octave_value::single_subsref().

Referenced by Fbsxfun().

static void update_index ( Array< int > &  idx,
const dim_vector dv,
octave_idx_type  i 
)
static

Definition at line 304 of file bsxfun.cc.

References dim_vector::length().

Referenced by Fbsxfun().

Variable Documentation

const char* bsxfun_builtin_names[]
Initial value:
{
"plus",
"minus",
"times",
"rdivide",
"max",
"min",
"eq",
"ne",
"lt",
"le",
"gt",
"ge",
"and",
"or",
"power"
}

Definition at line 64 of file bsxfun.cc.

Definition at line 96 of file bsxfun.cc.

Referenced by maybe_fill_table(), and maybe_optimized_builtin().