SOFUS ..
Todo List
Member Aperture< T >::normalize
: Not needed
Member AperturePulses< T >::bInPlaceScale
(JEM): Avoid statics
Member AperturePulses< T >::InPlaceScale (bool enable=false)
(JEM): Avoid statics
Member AperturePulses< T >::ToneBurstSet (const T &fs, const T &f0, const size_t &nCycles)
: Consider introducing object, which can be parametric or non-parametric
Class bla< T >
(JMH): Consider using sps::Default for handling system parameters
Member CalcFastFourAny2 (const float &u, const float &v, const float &hw, const float &hh, const float &z, const float &__restrict k, const float *__restrict s, const float *__restrict weights, const size_t nS)
: Compare with CalcFastFourAny()
Member CalcFourFast (const sps::element_rect_t< float > &__restrict element, const sps::point_t< float > &__restrict projection, const float &__restrict k, const float *__restrict uvs, const float *__restrict uvweights, const size_t nUVs)
: Call CalcFastFourAny2 twice
Member 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)
: Make HzFast twice as fast by reducing integrals to four
Member disable_if
(JMH): Consider requiring descendant to be non-copyconstructible
Class focus_line_t< T >
: Check how list are created in rcu and redefine this properly
Member g_bExit
(JEM): SWIG on Windows does not like when this is an std::atomic<bool>
Member point_t< T >::point_t (std::initializer_list< T > args)
: Not good if called using a list of length 3
Class RwParamTypeNS
(JMH): Consider adding an enum outside the struct also
Namespace sofus

: Use T* and restrict in prototypes and __builtin_assume_aligned inside function bodies

: Replace _mm256_dp_pd with _mm256_hsum_pd

(JEM): Figure out how to expose msignal across DLL interface

Member sofus::ApertureData
: Consider using a forward declaration
Member sofus::calcProjectionAndIntegrationLimitsSIMD (const sysparm_t< double > &sysparm, const sps::element_rect_t< double > &element, const sps::point_t< double > &point, const double delay, __m128 *v_vuvu, __m128 *v_dist2plane, __m128 *v_hwhw, __m128 *v_vdists, double *fSampleStart, double *fSampleStop)
: Consider using aligned T* arguments and use __m256 to hold 4 vertex distances
Member sofus::calcProjectionAndIntegrationLimitsSIMD (const sysparm_t< float > &sysparm, const sps::element_rect_t< float > &element, const sps::point_t< float > &point, const float delay, __m128 *v_vuvu, __m128 *v_dist2plane, __m128 *v_hwhw, __m128 *v_vdists, float *fSampleStart, float *fSampleStop)

: Consider alias to __m128*

: Consider introducing w = distuv[0]

Member sofus::calcProjectionAndIntegrationLimitsSIMD2 (const sysparm_t< double > &sysparm, const sps::element_rect_t< double > &element, const sps::point_t< double > &point, const double delay, __m256d *v_vuvu, __m256d *v_dist2plane, __m256d *v_hwhw, __m256d *v_vdists, double *fSampleStart, double *fSampleStop)
: Consider introducing w = distuv[0]
Namespace sps
(JMH): Consider creating a template class to allow constructions like,
Member sps::intcp_line_rect (const sps::element_rect_t< T > &rect, const T &y, const T &x, sps::point_t< T > *point)
(JMH): Make more general line
Member SPS_LIKELY (x)

: Add other OS'es

: Use alignas if present

Namespace std
: Enable this
Member STR_HELPER (x)
: Make file with helper macros
Member ToneBurst< T >::UpdateSpatial (T factor, T tau, T W, T f0)
(JEM): Use SFINAE to get right SIMD specialization
Class unique_aligned_multi_array< T, 1, void >
(JMH): typename = std::enable_if<std::is_pod<T>::value>
Class unique_aligned_multi_array< T, D, typename >
: If C++14