30#include "safe_array.h"
42typedef Eigen::Matrix<nec_float,3,1> nec_3vector;
43typedef Eigen::Matrix<nec_complex,3,1> nec_c3vector;
45inline void vector_fill(
complex_array& x, int64_t start, int64_t N,
const nec_complex& y) {
50inline nec_complex cplx_00() {
51 static nec_complex _cplx00(0.0,0.0);
return _cplx00;
54inline nec_complex cplx_01() {
55 static nec_complex _cplx01(0.0,1.0);
return _cplx01;
58inline nec_complex cplx_10() {
59 static nec_complex _cplx10(1.0,0.0);
return _cplx10;
62inline nec_complex cplx_11() {
63 static nec_complex _cplx11(1.0,1.0);
return _cplx11;
67inline nec_complex cplx_exp(
const nec_float& x) {
68 return nec_complex(cos(x),sin(x));
72inline nec_float pi() {
73 static nec_float _pi = 3.1415926536;
return _pi;
76inline nec_float two_pi() {
77 static nec_float _tmp = 2.0 * pi();
return _tmp;
80inline nec_float four_pi() {
81 static nec_float _tmp = 4.0 * pi();
return _tmp;
84inline nec_float pi_two() {
85 static nec_float _tmp = pi() / 2.0;
return _tmp;
88inline nec_float sqrt_pi() {
89 static nec_float _tmp = sqrt(pi());
return _tmp;
93inline nec_complex two_pi_j() {
94 static nec_complex _tmp(0.0,two_pi());
return _tmp;
99inline nec_float rad_to_degrees(nec_float in_radians) {
100 static nec_float _rad_to_deg = 360.0 / (2 * pi());
101 return in_radians * _rad_to_deg;
104inline nec_float degrees_to_rad(nec_float in_degrees) {
105 static nec_float _deg_to_rad = (2 * pi()) / 360.0;
106 return in_degrees * _deg_to_rad;
111inline nec_complex deg_polar(nec_float r, nec_float theta) {
112 return std::polar(r, degrees_to_rad(theta));
118inline nec_float arg_degrees(nec_complex z) {
119 return rad_to_degrees(std::arg(z));
125inline nec_float atgn2( nec_float x, nec_float y) {
126 if ((0.0 == y) && (0.0 == x))
129 return( std::atan2(y, x) );
134inline nec_float db10( nec_float x ) {
138 return( 10.0 * log10(x) );
142inline nec_float from_db10( nec_float x ) {
146 return( std::pow(10,x / 10.0));
151inline nec_float db20( nec_float x ) {
155 return( 20.0 * log10(x) );
159inline nec_float norm(
const nec_float x,
const nec_float y) {
160 return std::sqrt(x*x + y*y);
163inline nec_float norm2(
const nec_float x,
const nec_float y,
const nec_float z) {
164 return (x*x + y*y + z*z);
167inline nec_float norm(
const nec_float x,
const nec_float y,
const nec_float z) {
168 return std::sqrt(norm2(x,y,z));
172inline nec_float normL1(
const nec_float x,
const nec_float y,
const nec_float z) {
173 return std::fabs(x) + std::fabs(y) + std::fabs(z);
180inline nec_float norm(
const nec_3vector& v) {
185inline nec_float normL1(
const nec_3vector& v) {
186 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