30#include "safe_array.h"
41typedef Eigen::Matrix<nec_float,3,1> nec_3vector;
42typedef Eigen::Matrix<nec_complex,3,1> nec_c3vector;
44inline void vector_fill(
complex_array& x, int64_t start, int64_t N,
const nec_complex& y) {
49inline nec_complex cplx_00() {
50 static nec_complex _cplx00(0.0,0.0);
return _cplx00;
53inline nec_complex cplx_01() {
54 static nec_complex _cplx01(0.0,1.0);
return _cplx01;
57inline nec_complex cplx_10() {
58 static nec_complex _cplx10(1.0,0.0);
return _cplx10;
61inline nec_complex cplx_11() {
62 static nec_complex _cplx11(1.0,1.0);
return _cplx11;
66inline nec_complex cplx_exp(
const nec_float& x) {
67 return nec_complex(cos(x),sin(x));
71inline nec_float pi() {
72 static nec_float _pi = 3.1415926536;
return _pi;
75inline nec_float two_pi() {
76 static nec_float _tmp = 2.0 * pi();
return _tmp;
79inline nec_float four_pi() {
80 static nec_float _tmp = 4.0 * pi();
return _tmp;
83inline nec_float pi_two() {
84 static nec_float _tmp = pi() / 2.0;
return _tmp;
87inline nec_float sqrt_pi() {
88 static nec_float _tmp = sqrt(pi());
return _tmp;
92inline nec_complex two_pi_j() {
93 static nec_complex _tmp(0.0,two_pi());
return _tmp;
98inline nec_float rad_to_degrees(nec_float in_radians) {
99 static nec_float _rad_to_deg = 360.0 / (2 * pi());
100 return in_radians * _rad_to_deg;
103inline nec_float degrees_to_rad(nec_float in_degrees) {
104 static nec_float _deg_to_rad = (2 * pi()) / 360.0;
105 return in_degrees * _deg_to_rad;
110inline nec_complex deg_polar(nec_float r, nec_float theta) {
111 return std::polar(r, degrees_to_rad(theta));
117inline nec_float arg_degrees(nec_complex z) {
118 return rad_to_degrees(std::arg(z));
124inline nec_float atgn2( nec_float x, nec_float y) {
125 if ((0.0 == y) && (0.0 == x))
128 return( std::atan2(y, x) );
133inline nec_float db10( nec_float x ) {
137 return( 10.0 * log10(x) );
141inline nec_float from_db10( nec_float x ) {
145 return( std::pow(10,x / 10.0));
150inline nec_float db20( nec_float x ) {
154 return( 20.0 * log10(x) );
158inline nec_float norm(
const nec_float x,
const nec_float y) {
159 return std::sqrt(x*x + y*y);
162inline nec_float norm2(
const nec_float x,
const nec_float y,
const nec_float z) {
163 return (x*x + y*y + z*z);
166inline nec_float norm(
const nec_float x,
const nec_float y,
const nec_float z) {
167 return std::sqrt(norm2(x,y,z));
171inline nec_float normL1(
const nec_float x,
const nec_float y,
const nec_float z) {
172 return std::fabs(x) + std::fabs(y) + std::fabs(z);
179inline nec_float norm(
const nec_3vector& v) {
184inline nec_float normL1(
const nec_3vector& v) {
185 return normL1(v(0), v(1), v(2));
A Safe Array class backed by Eigen for SIMD-accelerated operations.
Definition safe_array.h:47
Definition safe_array.h:258