My Project  0.0.16
QUCS Mapping
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Macros | Functions
evaluate.cpp File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include "logging.h"
#include "complex.h"
#include "object.h"
#include "vector.h"
#include "matrix.h"
#include "poly.h"
#include "spline.h"
#include "fourier.h"
#include "receiver.h"
#include "constants.h"
#include "fspecial.h"
#include "circuit.h"
#include "range.h"
#include "equation.h"
#include "evaluate.h"
#include "exception.h"
#include "exceptionstack.h"
#include "strlist.h"
#include "applications.h"
Include dependency graph for evaluate.cpp:

Go to the source code of this file.

Macros

#define D(con)   ((constant *) (con))->d
 
#define C(con)   ((constant *) (con))->c
 
#define V(con)   ((constant *) (con))->v
 
#define M(con)   ((constant *) (con))->m
 
#define MV(con)   ((constant *) (con))->mv
 
#define STR(con)   ((constant *) (con))->s
 
#define CHR(con)   ((constant *) (con))->chr
 
#define INT(con)   ((int) D (con))
 
#define RNG(con)   ((constant *) (con))->r
 
#define B(con)   ((constant *) (con))->b
 
#define A(a)   ((assignment *) (a))
 
#define R(r)   ((reference *) (r))
 
#define _ARES(idx)   args->getResult(idx)
 
#define _ARG(idx)   args->get(idx)
 
#define _D(var, idx)   nr_double_t (var) = D (_ARES (idx));
 
#define _BO(var, idx)   bool (var) = B (_ARES (idx));
 
#define _CX(var, idx)   nr_complex_t * (var) = C (_ARES (idx));
 
#define _V(var, idx)   vector * (var) = V (_ARES (idx));
 
#define _M(var, idx)   matrix * (var) = M (_ARES (idx));
 
#define _MV(var, idx)   matvec * (var) = MV (_ARES (idx));
 
#define _I(var, idx)   int (var) = INT (_ARES (idx));
 
#define _R(var, idx)   range * (var) = RNG (_ARES (idx));
 
#define _ARR0(var)   _R (var,0)
 
#define _ARR1(var)   _R (var,1)
 
#define _ARR2(var)   _R (var,2)
 
#define _ARI0(var)   _I (var,0)
 
#define _ARI1(var)   _I (var,1)
 
#define _ARI2(var)   _I (var,2)
 
#define _ARD0(var)   _D (var,0)
 
#define _ARD1(var)   _D (var,1)
 
#define _ARD2(var)   _D (var,2)
 
#define _ARB0(var)   _BO (var,0)
 
#define _ARB1(var)   _BO (var,1)
 
#define _ARB2(var)   _BO (var,2)
 
#define _ARC0(var)   _CX (var,0)
 
#define _ARC1(var)   _CX (var,1)
 
#define _ARC2(var)   _CX (var,2)
 
#define _ARM0(var)   _M (var,0)
 
#define _ARM1(var)   _M (var,1)
 
#define _ARM2(var)   _M (var,2)
 
#define _ARV0(var)   _V (var,0)
 
#define _ARV1(var)   _V (var,1)
 
#define _ARV2(var)   _V (var,2)
 
#define _ARMV0(var)   _MV (var,0)
 
#define _ARMV1(var)   _MV (var,1)
 
#define _ARMV2(var)   _MV (var,2)
 
#define _DEFD()   constant * res = new constant (TAG_DOUBLE);
 
#define _DEFB()   constant * res = new constant (TAG_BOOLEAN);
 
#define _DEFC()   constant * res = new constant (TAG_COMPLEX);
 
#define _DEFV()   constant * res = new constant (TAG_VECTOR);
 
#define _DEFM()   constant * res = new constant (TAG_MATRIX);
 
#define _DEFMV()   constant * res = new constant (TAG_MATVEC);
 
#define _DEFR()   constant * res = new constant (TAG_RANGE);
 
#define _RETD(var)   res->d = (var); return res;
 
#define _RETB(var)   res->b = (var); return res;
 
#define _RETC(var)   res->c = new nr_complex_t (var); return res;
 
#define _RETV(var)   res->v = new vector (var); return res;
 
#define _RETM(var)   res->m = new matrix (var); return res;
 
#define _RETMV(var)   res->mv = new matvec (var); return res;
 
#define _RETR(var)   res->r = (var); return res;
 
#define __RETC()   res->c = new nr_complex_t (); return res;
 
#define __RETV()   res->v = new vector (); return res;
 
#define __RETM()   res->m = new matrix (); return res;
 
#define __RETMV()   res->mv = new matvec (); return res;
 
#define SOLVEE(idx)   args->get(idx)->solvee
 
#define THROW_MATH_EXCEPTION(txt)
 
#define QUCS_CONCAT2(a, b)   a/* */b
 
#define QUCS_CONCAT3(a, b, c)   a/* */b/* */c
 
#define MAKE_FUNC_DEFINITION_0(cfunc)
 
#define MAKE_FUNC_DEFINITION_1(cfunc)
 
#define MAKE_FUNC_DEFINITION_2(cfunc)
 
#define EQUATION_HAS_DEPS(v, n)
 
#define EQUATION_DEPS(v)   ((v)->getDataDependencies() ? (v)->getDataDependencies()->length() : 1)
 
#define INTERPOL_HELPER()
 
#define FOURIER_HELPER_1(efunc, cfunc, isign, dep)
 
#define FOURIER_HELPER_2(cfunc)
 
#define MAKE_FUNC_DEFINITION_3(cfunc)
 
#define _CHKM(m)
 
#define _CHKMV(mv)
 
#define _CHKMA(m, cond)
 
#define _CHKMVA(mv, cond)
 
#define CIRCLE_HELPER_D(argi)
 
#define CIRCLE_HELPER_A()
 

Functions

 MAKE_FUNC_DEFINITION_0 (exp)
 
 MAKE_FUNC_DEFINITION_0 (limexp)
 
 MAKE_FUNC_DEFINITION_0 (sin)
 
 MAKE_FUNC_DEFINITION_0 (cos)
 
 MAKE_FUNC_DEFINITION_0 (tan)
 
 MAKE_FUNC_DEFINITION_0 (sinh)
 
 MAKE_FUNC_DEFINITION_0 (cosh)
 
 MAKE_FUNC_DEFINITION_0 (tanh)
 
 MAKE_FUNC_DEFINITION_0 (coth)
 
 MAKE_FUNC_DEFINITION_0 (sech)
 
 MAKE_FUNC_DEFINITION_0 (cosech)
 
 MAKE_FUNC_DEFINITION_0 (signum)
 
 MAKE_FUNC_DEFINITION_0 (sign)
 
 MAKE_FUNC_DEFINITION_0 (sinc)
 
 MAKE_FUNC_DEFINITION_0 (sqr)
 
 MAKE_FUNC_DEFINITION_1 (real)
 
 MAKE_FUNC_DEFINITION_1 (imag)
 
 MAKE_FUNC_DEFINITION_1 (abs)
 
 MAKE_FUNC_DEFINITION_2 (ztor)
 
 MAKE_FUNC_DEFINITION_2 (rtoz)
 
 MAKE_FUNC_DEFINITION_2 (ytor)
 
 MAKE_FUNC_DEFINITION_2 (rtoy)
 
 FOURIER_HELPER_1 (time2freq, dft, 1,"Frequency")
 
 FOURIER_HELPER_1 (freq2time, idft,-1,"Time")
 
 FOURIER_HELPER_2 (fft)
 
 FOURIER_HELPER_2 (ifft)
 
 FOURIER_HELPER_2 (dft)
 
 FOURIER_HELPER_2 (idft)
 
 MAKE_FUNC_DEFINITION_3 (stoy)
 
 MAKE_FUNC_DEFINITION_3 (ytos)
 
 MAKE_FUNC_DEFINITION_3 (stoz)
 
 MAKE_FUNC_DEFINITION_3 (ztos)
 
 MAKE_FUNC_DEFINITION_0 (ceil)
 
 MAKE_FUNC_DEFINITION_0 (floor)
 
 MAKE_FUNC_DEFINITION_0 (fix)
 
 MAKE_FUNC_DEFINITION_0 (step)
 
 MAKE_FUNC_DEFINITION_0 (round)
 
 MAKE_FUNC_DEFINITION_0 (erf)
 
 MAKE_FUNC_DEFINITION_0 (erfc)
 
 MAKE_FUNC_DEFINITION_0 (erfinv)
 
 MAKE_FUNC_DEFINITION_0 (erfcinv)
 
 MAKE_FUNC_DEFINITION_0 (i0)
 

Macro Definition Documentation

#define __RETC ( )    res->c = new nr_complex_t (); return res;

Definition at line 132 of file evaluate.cpp.

#define __RETM ( )    res->m = new matrix (); return res;

Definition at line 134 of file evaluate.cpp.

#define __RETMV ( )    res->mv = new matvec (); return res;

Definition at line 135 of file evaluate.cpp.

#define __RETV ( )    res->v = new vector (); return res;

Definition at line 133 of file evaluate.cpp.

#define _ARB0 (   var)    _BO (var,0)

Definition at line 97 of file evaluate.cpp.

#define _ARB1 (   var)    _BO (var,1)

Definition at line 98 of file evaluate.cpp.

#define _ARB2 (   var)    _BO (var,2)

Definition at line 99 of file evaluate.cpp.

#define _ARC0 (   var)    _CX (var,0)

Definition at line 100 of file evaluate.cpp.

#define _ARC1 (   var)    _CX (var,1)

Definition at line 101 of file evaluate.cpp.

#define _ARC2 (   var)    _CX (var,2)

Definition at line 102 of file evaluate.cpp.

#define _ARD0 (   var)    _D (var,0)

Definition at line 94 of file evaluate.cpp.

#define _ARD1 (   var)    _D (var,1)

Definition at line 95 of file evaluate.cpp.

#define _ARD2 (   var)    _D (var,2)

Definition at line 96 of file evaluate.cpp.

#define _ARES (   idx)    args->getResult(idx)

Definition at line 76 of file evaluate.cpp.

#define _ARG (   idx)    args->get(idx)

Definition at line 77 of file evaluate.cpp.

#define _ARI0 (   var)    _I (var,0)

Definition at line 91 of file evaluate.cpp.

#define _ARI1 (   var)    _I (var,1)

Definition at line 92 of file evaluate.cpp.

#define _ARI2 (   var)    _I (var,2)

Definition at line 93 of file evaluate.cpp.

#define _ARM0 (   var)    _M (var,0)

Definition at line 103 of file evaluate.cpp.

#define _ARM1 (   var)    _M (var,1)

Definition at line 104 of file evaluate.cpp.

#define _ARM2 (   var)    _M (var,2)

Definition at line 105 of file evaluate.cpp.

#define _ARMV0 (   var)    _MV (var,0)

Definition at line 109 of file evaluate.cpp.

#define _ARMV1 (   var)    _MV (var,1)

Definition at line 110 of file evaluate.cpp.

#define _ARMV2 (   var)    _MV (var,2)

Definition at line 111 of file evaluate.cpp.

#define _ARR0 (   var)    _R (var,0)

Definition at line 88 of file evaluate.cpp.

#define _ARR1 (   var)    _R (var,1)

Definition at line 89 of file evaluate.cpp.

#define _ARR2 (   var)    _R (var,2)

Definition at line 90 of file evaluate.cpp.

#define _ARV0 (   var)    _V (var,0)

Definition at line 106 of file evaluate.cpp.

#define _ARV1 (   var)    _V (var,1)

Definition at line 107 of file evaluate.cpp.

#define _ARV2 (   var)    _V (var,2)

Definition at line 108 of file evaluate.cpp.

#define _BO (   var,
  idx 
)    bool (var) = B (_ARES (idx));

Definition at line 80 of file evaluate.cpp.

#define _CHKM (   m)
Value:
/* check square matrix */ \
if (m->getCols () != m->getRows ()) { \
THROW_MATH_EXCEPTION ("stos: not a square matrix"); \
res->m = new matrix (m->getRows (), m->getCols ()); \
return res; }

Definition at line 2363 of file evaluate.cpp.

#define _CHKMA (   m,
  cond 
)
Value:
if (!(cond)) { \
THROW_MATH_EXCEPTION ("stos: nonconformant arguments"); \
res->m = new matrix (m->getRows (), m->getCols ()); \
return res; }

Definition at line 2373 of file evaluate.cpp.

#define _CHKMV (   mv)
Value:
/* check square matrix vector */ \
if (mv->getCols () != mv->getRows ()) { \
THROW_MATH_EXCEPTION ("stos: not a square matrix"); \
res->mv = new matvec (mv->getSize (), mv->getRows (), mv->getCols ()); \
return res; }

Definition at line 2368 of file evaluate.cpp.

#define _CHKMVA (   mv,
  cond 
)
Value:
if (!(cond)) { \
THROW_MATH_EXCEPTION ("stos: nonconformant arguments"); \
res->mv = new matvec (mv->getSize (), mv->getRows (), mv->getCols ()); \
return res; }

Definition at line 2378 of file evaluate.cpp.

#define _CX (   var,
  idx 
)    nr_complex_t * (var) = C (_ARES (idx));

Definition at line 81 of file evaluate.cpp.

#define _D (   var,
  idx 
)    nr_double_t (var) = D (_ARES (idx));

Definition at line 79 of file evaluate.cpp.

#define _DEFB ( )    constant * res = new constant (TAG_BOOLEAN);

Definition at line 115 of file evaluate.cpp.

#define _DEFC ( )    constant * res = new constant (TAG_COMPLEX);

Definition at line 116 of file evaluate.cpp.

#define _DEFD ( )    constant * res = new constant (TAG_DOUBLE);

Definition at line 114 of file evaluate.cpp.

#define _DEFM ( )    constant * res = new constant (TAG_MATRIX);

Definition at line 118 of file evaluate.cpp.

#define _DEFMV ( )    constant * res = new constant (TAG_MATVEC);

Definition at line 119 of file evaluate.cpp.

#define _DEFR ( )    constant * res = new constant (TAG_RANGE);

Definition at line 120 of file evaluate.cpp.

#define _DEFV ( )    constant * res = new constant (TAG_VECTOR);

Definition at line 117 of file evaluate.cpp.

#define _I (   var,
  idx 
)    int (var) = INT (_ARES (idx));

Definition at line 85 of file evaluate.cpp.

#define _M (   var,
  idx 
)    matrix * (var) = M (_ARES (idx));

Definition at line 83 of file evaluate.cpp.

#define _MV (   var,
  idx 
)    matvec * (var) = MV (_ARES (idx));

Definition at line 84 of file evaluate.cpp.

#define _R (   var,
  idx 
)    range * (var) = RNG (_ARES (idx));

Definition at line 86 of file evaluate.cpp.

#define _RETB (   var)    res->b = (var); return res;

Definition at line 124 of file evaluate.cpp.

#define _RETC (   var)    res->c = new nr_complex_t (var); return res;

Definition at line 125 of file evaluate.cpp.

#define _RETD (   var)    res->d = (var); return res;

Definition at line 123 of file evaluate.cpp.

#define _RETM (   var)    res->m = new matrix (var); return res;

Definition at line 127 of file evaluate.cpp.

#define _RETMV (   var)    res->mv = new matvec (var); return res;

Definition at line 128 of file evaluate.cpp.

#define _RETR (   var)    res->r = (var); return res;

Definition at line 129 of file evaluate.cpp.

#define _RETV (   var)    res->v = new vector (var); return res;

Definition at line 126 of file evaluate.cpp.

#define _V (   var,
  idx 
)    vector * (var) = V (_ARES (idx));

Definition at line 82 of file evaluate.cpp.

#define A (   a)    ((assignment *) (a))

Definition at line 72 of file evaluate.cpp.

#define B (   con)    ((constant *) (con))->b

Definition at line 70 of file evaluate.cpp.

#define C (   con)    ((constant *) (con))->c

Definition at line 62 of file evaluate.cpp.

#define CHR (   con)    ((constant *) (con))->chr

Definition at line 67 of file evaluate.cpp.

#define CIRCLE_HELPER_A ( )
Value:
constant * arg = new constant (TAG_VECTOR); \
arg->v = new vector (::linspace (0, 360, 64)); \
arg->solvee = args->getResult(0)->solvee; \
arg->evaluate (); \
args->append (arg);

Definition at line 2749 of file evaluate.cpp.

#define CIRCLE_HELPER_D (   argi)
Value:
int n = INT (args->getResult (argi)); \
if (n < 2) { \
THROW_MATH_EXCEPTION ("Circle: number of points must be greater than 1"); \
_DEFV (); \
res->v = new vector (); \
return res; \
} \
constant * arg = new constant (TAG_VECTOR); \
arg->v = new vector (::linspace (0, 360, n)); \
arg->solvee = args->getResult(0)->solvee; \
arg->evaluate (); \
delete args->get(argi); \
args->get((argi)-1)->setNext (NULL); \
args->append (arg);

Definition at line 2732 of file evaluate.cpp.

#define D (   con)    ((constant *) (con))->d

Definition at line 61 of file evaluate.cpp.

#define EQUATION_DEPS (   v)    ((v)->getDataDependencies() ? (v)->getDataDependencies()->length() : 1)

Definition at line 2061 of file evaluate.cpp.

#define EQUATION_HAS_DEPS (   v,
  n 
)
Value:
((v)->getDataDependencies() != NULL && \
(v)->getDataDependencies()->length() >= n)

Definition at line 2058 of file evaluate.cpp.

#define FOURIER_HELPER_1 (   efunc,
  cfunc,
  isign,
  dep 
)
Value:
constant * evaluate:: QUCS_CONCAT2 (efunc,_v_v) (constant * args) { \
_ARV0 (v); \
_ARV1 (t); \
_DEFV (); \
vector * val = new vector (QUCS_CONCAT2 (cfunc,_1d) (*v)); \
int k = val->getSize (); \
*val = isign > 0 ? *val / k : *val * k; \
res->v = val; \
int n = t->getSize (); \
if (k != n) { \
THROW_MATH_EXCEPTION ("nonconformant vector lengths"); \
return res; } \
nr_double_t last = real (t->get (n - 1)); \
nr_double_t first = real (t->get (0)); \
nr_double_t delta = (last - first) / (n - 1); \
constant * arg = new constant (TAG_VECTOR); \
arg->v = new vector (::linspace (0, 1.0 / delta, n)); \
arg->solvee = args->getResult(0)->solvee; \
arg->evaluate (); \
node * gen = SOLVEE(0)->addGeneratedEquation (arg->v, dep); \
res->addPrepDependencies (A(gen)->result); \
res->dropdeps = 1; \
args->append (arg); \
return res; \
}

Definition at line 2231 of file evaluate.cpp.

#define FOURIER_HELPER_2 (   cfunc)
Value:
constant * evaluate:: QUCS_CONCAT2 (cfunc,_v) (constant * args) { \
_ARV0 (v); \
_DEFV (); \
vector * val = new vector (QUCS_CONCAT2 (cfunc,_1d) (*v)); \
res->v = val; \
res->dropdeps = 1; \
return res; \
}

Definition at line 2258 of file evaluate.cpp.

#define INT (   con)    ((int) D (con))

Definition at line 68 of file evaluate.cpp.

#define INTERPOL_HELPER ( )
Value:
constant * arg = new constant (TAG_DOUBLE); \
arg->d = 64; \
arg->solvee = args->getResult(0)->solvee; \
arg->evaluate (); \
args->append (arg);

Definition at line 2185 of file evaluate.cpp.

#define M (   con)    ((constant *) (con))->m

Definition at line 64 of file evaluate.cpp.

#define MAKE_FUNC_DEFINITION_0 (   cfunc)
Value:
constant * evaluate:: QUCS_CONCAT2 (cfunc,_d) (constant * args) { \
_ARD0 (d); \
_DEFD (); \
_RETD (cfunc (d)); \
} \
constant * evaluate:: QUCS_CONCAT2 (cfunc,_c) (constant * args) { \
_ARC0 (c); \
_DEFC (); \
_RETC (cfunc (*c)); \
} \
constant * evaluate:: QUCS_CONCAT2 (cfunc,_v) (constant * args) { \
_ARV0 (v); \
_DEFV (); \
_RETV (cfunc (*v)); \
}

Definition at line 157 of file evaluate.cpp.

#define MAKE_FUNC_DEFINITION_1 (   cfunc)
Value:
constant * evaluate:: QUCS_CONCAT2 (cfunc,_d) (constant * args) { \
_ARD0 (d); \
_DEFD (); \
_RETD (cfunc (d)); \
} \
constant * evaluate:: QUCS_CONCAT2 (cfunc,_c) (constant * args) { \
_ARC0 (c); \
_DEFD (); \
res->d = cfunc (*c); return res; \
} \
constant * evaluate:: QUCS_CONCAT2 (cfunc,_v) (constant * args) { \
_ARV0 (v); \
_DEFV (); \
_RETV (cfunc (*v)); \
} \
constant * evaluate:: QUCS_CONCAT2 (cfunc,_m) (constant * args) { \
_ARM0 (m); \
_DEFM (); \
_RETM (cfunc (*m)); \
} \
constant * evaluate:: QUCS_CONCAT2 (cfunc,_mv) (constant * args) {\
_ARMV0 (mv); \
_DEFMV (); \
_RETMV (cfunc (*mv)); \
}

Definition at line 174 of file evaluate.cpp.

#define MAKE_FUNC_DEFINITION_2 (   cfunc)

Definition at line 1723 of file evaluate.cpp.

#define MAKE_FUNC_DEFINITION_3 (   cfunc)

Definition at line 2284 of file evaluate.cpp.

#define MV (   con)    ((constant *) (con))->mv

Definition at line 65 of file evaluate.cpp.

#define QUCS_CONCAT2 (   a,
  b 
)    a/* */b

Definition at line 152 of file evaluate.cpp.

#define QUCS_CONCAT3 (   a,
  b,
  c 
)    a/* */b/* */c

Definition at line 153 of file evaluate.cpp.

#define R (   r)    ((reference *) (r))

Definition at line 73 of file evaluate.cpp.

#define RNG (   con)    ((constant *) (con))->r

Definition at line 69 of file evaluate.cpp.

#define SOLVEE (   idx)    args->get(idx)->solvee

Definition at line 137 of file evaluate.cpp.

#define STR (   con)    ((constant *) (con))->s

Definition at line 66 of file evaluate.cpp.

#define THROW_MATH_EXCEPTION (   txt)
Value:
do { \
e->setText (txt); throw_exception (e); } while (0)

Definition at line 140 of file evaluate.cpp.

#define V (   con)    ((constant *) (con))->v

Definition at line 63 of file evaluate.cpp.

Function Documentation

FOURIER_HELPER_1 ( time2freq  ,
dft  ,
,
"Frequency"   
)
FOURIER_HELPER_1 ( freq2time  ,
idft  ,
1,
"Time"   
)
FOURIER_HELPER_2 ( fft  )
FOURIER_HELPER_2 ( ifft  )
FOURIER_HELPER_2 ( dft  )
FOURIER_HELPER_2 ( idft  )
MAKE_FUNC_DEFINITION_0 ( exp  )
MAKE_FUNC_DEFINITION_0 ( limexp  )
MAKE_FUNC_DEFINITION_0 ( sin  )
MAKE_FUNC_DEFINITION_0 ( cos  )
MAKE_FUNC_DEFINITION_0 ( tan  )
MAKE_FUNC_DEFINITION_0 ( sinh  )
MAKE_FUNC_DEFINITION_0 ( cosh  )
MAKE_FUNC_DEFINITION_0 ( tanh  )
MAKE_FUNC_DEFINITION_0 ( coth  )
MAKE_FUNC_DEFINITION_0 ( sech  )
MAKE_FUNC_DEFINITION_0 ( cosech  )
MAKE_FUNC_DEFINITION_0 ( signum  )
MAKE_FUNC_DEFINITION_0 ( sign  )
MAKE_FUNC_DEFINITION_0 ( sinc  )
MAKE_FUNC_DEFINITION_0 ( sqr  )
MAKE_FUNC_DEFINITION_0 ( ceil  )
MAKE_FUNC_DEFINITION_0 ( floor  )
MAKE_FUNC_DEFINITION_0 ( fix  )
MAKE_FUNC_DEFINITION_0 ( step  )
MAKE_FUNC_DEFINITION_0 ( round  )
MAKE_FUNC_DEFINITION_0 ( erf  )
MAKE_FUNC_DEFINITION_0 ( erfc  )
MAKE_FUNC_DEFINITION_0 ( erfinv  )
MAKE_FUNC_DEFINITION_0 ( erfcinv  )
MAKE_FUNC_DEFINITION_0 ( i0  )
MAKE_FUNC_DEFINITION_1 ( real  )
MAKE_FUNC_DEFINITION_1 ( imag  )
MAKE_FUNC_DEFINITION_1 ( abs  )
MAKE_FUNC_DEFINITION_2 ( ztor  )
MAKE_FUNC_DEFINITION_2 ( rtoz  )
MAKE_FUNC_DEFINITION_2 ( ytor  )
MAKE_FUNC_DEFINITION_2 ( rtoy  )
MAKE_FUNC_DEFINITION_3 ( stoy  )
MAKE_FUNC_DEFINITION_3 ( ytos  )
MAKE_FUNC_DEFINITION_3 ( stoz  )
MAKE_FUNC_DEFINITION_3 ( ztos  )