SOFUS ..
Functions
FnmSIMD.hpp File Reference
#include <fnm/config.h>
#include <sps/cenv.h>
#include <sps/smath.hpp>
#include <fnm/fnm_types.hpp>
#include <sps/trigintrin.h>
#include <complex>
#include <fnm/fnm_ps.hpp>
#include <fnm/fnm_pd.hpp>
Include dependency graph for FnmSIMD.hpp:

Functions

template<class T >
std::complex< T > CalcHzVecGL (const T &s, const T &l, const T &z, const T &k, const T *us, const T *uweights, const size_t nUs, const T *vs, const T *vweights, const size_t nVs)
 
template<class T >
std::complex< T > CalcHzAll (const sps::element_rect_t< T > &element, const sps::point_t< T > &projection, const T &k, const T *us, const T *uweights, const size_t nUs, const T *vs, const T *vweights, const size_t nVs)
 
template<class T >
std::complex< T > CalcHzFast (const sps::element_rect_t< T > &__restrict element, const sps::point_t< T > &__restrict projection, const T &__restrict k, const T *__restrict us, const T *__restrict uweights, const size_t nUs, const T *__restrict vs, const T *__restrict vweights, const size_t nVs)
 
template<class T >
std::complex< T > CalcFastFourAny (const T &u, const T &v, const T &hh, const T &hw, const T &z, const T &__restrict k, const T *__restrict s, const T *__restrict weights, const size_t nS)
 
template<class T >
std::complex< T > CalcFastFourAny2 (const T &u, const T &v, const T &hh, const T &hw, const T &z, const T &__restrict k, const T *__restrict s, const T *__restrict weights, const size_t nS)
 
template<class T >
std::complex< T > CalcFourFast (const sps::element_rect_t< T > &__restrict element, const sps::point_t< T > &__restrict projection, const T &__restrict k, const T *__restrict uvs, const T *__restrict uvweights, const size_t nUVs)
 
template<class T >
std::complex< T > CalcHzFastSingle (const sps::element_rect_t< T > &element, const sps::point_t< T > &projection, const T &k, const T *us, const T *uweights, const size_t nUs, const T *vs, const T *vweights, const size_t nVs)
 
template<>
std::complex< float > CalcHzVecGL (const float &s, const float &l, const float &z, const float &k, const float *us, const float *uweights, const size_t nUs, const float *vs, const float *vweights, const size_t nVs)
 
template<>
std::complex< float > CalcHzAll (const sps::element_rect_t< float > &element, const sps::point_t< float > &projection, const float &k, const float *us, const float *uweights, const size_t nUs, const float *vs, const float *vweights, const size_t nVs)
 
template<>
std::complex< float > CalcHzFastSingle (const sps::element_rect_t< float > &element, const sps::point_t< float > &projection, const float &k, const float *us, const float *uweights, const size_t nUs, const float *vs, const float *vweights, const size_t nVs)
 
template<>
std::complex< double > CalcHzFastSingle (const sps::element_rect_t< double > &element, const sps::point_t< double > &projection, const double &k, const double *us, const double *uweights, const size_t nUs, const double *vs, const double *vweights, const size_t nVs)
 
template<>
std::complex< double > CalcHzVecGL (const double &s, const double &l, const double &z, const double &k, const double *us, const double *uweights, const size_t nUs, const double *vs, const double *vweights, const size_t nVs)
 
template<>
std::complex< double > CalcHzAll (const sps::element_rect_t< double > &element, const sps::point_t< double > &projection, const double &k, const double *us, const double *uweights, const size_t nUs, const double *vs, const double *vweights, const size_t nVs)
 

Detailed Description

Author
Jens Munk Hansen jens..nosp@m.munk.nosp@m..hans.nosp@m.en@g.nosp@m.mail..nosp@m.com
Date
Thu Jun 9 06:01:12 2016

Function Documentation

◆ CalcFastFourAny()

std::complex< T > CalcFastFourAny ( const T &  u,
const T &  v,
const T &  hh,
const T &  hw,
const T &  z,
const T &__restrict  k,
const T *__restrict  s,
const T *__restrict  weights,
const size_t  nS 
)

◆ CalcFastFourAny2()

std::complex< T > CalcFastFourAny2 ( const T &  u,
const T &  v,
const T &  hh,
const T &  hw,
const T &  z,
const T &__restrict  k,
const T *__restrict  s,
const T *__restrict  weights,
const size_t  nS 
)

◆ CalcFourFast()

std::complex< T > CalcFourFast ( const sps::element_rect_t< T > &__restrict  element,
const sps::point_t< T > &__restrict  projection,
const T &__restrict  k,
const T *__restrict  uvs,
const T *__restrict  uvweights,
const size_t  nUVs 
)

◆ CalcHzAll() [1/3]

std::complex< double > CalcHzAll ( const sps::element_rect_t< double > &  element,
const sps::point_t< double > &  projection,
const double &  k,
const double *  us,
const double *  uweights,
const size_t  nUs,
const double *  vs,
const double *  vweights,
const size_t  nVs 
)
inline

◆ CalcHzAll() [2/3]

std::complex< float > CalcHzAll ( const sps::element_rect_t< float > &  element,
const sps::point_t< float > &  projection,
const float &  k,
const float *  us,
const float *  uweights,
const size_t  nUs,
const float *  vs,
const float *  vweights,
const size_t  nVs 
)
inline

◆ CalcHzAll() [3/3]

std::complex< T > CalcHzAll ( const sps::element_rect_t< T > &  element,
const sps::point_t< T > &  projection,
const T &  k,
const T *  us,
const T *  uweights,
const size_t  nUs,
const T *  vs,
const T *  vweights,
const size_t  nVs 
)
Parameters
element
projection
k
us
uweights
nUs
vs
vweights
nVs
Returns

◆ CalcHzFast()

std::complex< T > CalcHzFast ( const sps::element_rect_t< T > &__restrict  element,
const sps::point_t< T > &__restrict  projection,
const T &__restrict  k,
const T *__restrict  us,
const T *__restrict  uweights,
const size_t  nUs,
const T *__restrict  vs,
const T *__restrict  vweights,
const size_t  nVs 
)

Integral with (nUs x nVs) points with projection inside the region of integration

Parameters
element
projection
k
us
uweights
nUs
vs
vweights
nVs
Returns

◆ CalcHzFastSingle() [1/3]

std::complex< double > CalcHzFastSingle ( const sps::element_rect_t< double > &  element,
const sps::point_t< double > &  projection,
const double &  k,
const double *  us,
const double *  uweights,
const size_t  nUs,
const double *  vs,
const double *  vweights,
const size_t  nVs 
)
inline

◆ CalcHzFastSingle() [2/3]

std::complex< float > CalcHzFastSingle ( const sps::element_rect_t< float > &  element,
const sps::point_t< float > &  projection,
const float &  k,
const float *  us,
const float *  uweights,
const size_t  nUs,
const float *  vs,
const float *  vweights,
const size_t  nVs 
)
inline

◆ CalcHzFastSingle() [3/3]

std::complex< T > CalcHzFastSingle ( const sps::element_rect_t< T > &  element,
const sps::point_t< T > &  projection,
const T &  k,
const T *  us,
const T *  uweights,
const size_t  nUs,
const T *  vs,
const T *  vweights,
const size_t  nVs 
)

◆ CalcHzVecGL() [1/3]

std::complex< double > CalcHzVecGL ( const double &  s,
const double &  l,
const double &  z,
const double &  k,
const double *  us,
const double *  uweights,
const size_t  nUs,
const double *  vs,
const double *  vweights,
const size_t  nVs 
)
inline

◆ CalcHzVecGL() [2/3]

std::complex< float > CalcHzVecGL ( const float &  s,
const float &  l,
const float &  z,
const float &  k,
const float *  us,
const float *  uweights,
const size_t  nUs,
const float *  vs,
const float *  vweights,
const size_t  nVs 
)
inline

◆ CalcHzVecGL() [3/3]

std::complex< T > CalcHzVecGL ( const T &  s,
const T &  l,
const T &  z,
const T &  k,
const T *  us,
const T *  uweights,
const size_t  nUs,
const T *  vs,
const T *  vweights,
const size_t  nVs 
)
Todo:
: Make HzFast twice as fast by reducing integrals to four
Parameters
s
l
z
k
us
uweights
nUs
vs
vweights
nVs
Returns