36#include <itpp/itexports.h>
257 for(
int i = 0;
i <
N1; ++
i) {
277 it_assert_debug((1 << m) == N,
"dht(): The vector size must be a power of two");
282 for(
int ib = 0;
ib < N;
ib += 2) {
289 for(
int i = 1;
i < m; ++
i) {
292 for(
int k = 0; k < N; ++k) {
293 for(
int j = 0;
j < l; ++
j) {
303 vout /=
static_cast<T
>(std::sqrt(
static_cast<double>(
vin.
size())));
311 it_assert_debug((1 << m) == N,
"self_dht(): The vector size must be a power "
315 for(
int i = 0;
i < m; ++
i) {
318 for(
int k = 0; k < N; ++k) {
319 for(
int j = 0;
j < l; ++
j) {
329 v /=
static_cast<T
>(std::sqrt(
static_cast<double>(
v.
size())));
361 for(
int i = 0;
i < m.rows(); ++
i) {
366 for(
int i = 0;
i < m.cols(); ++
i) {
381 for(
int i = 0;
i < m.rows(); ++
i) {
386 for(
int i = 0;
i < m.cols(); ++
i) {
401ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT vec
dht(
const vec &v);
402ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT cvec
dht(
const cvec &v);
403ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT
void dht(
const vec &vin, vec &vout);
404ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT
void dht(
const cvec &vin, cvec &vout);
406ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT
void self_dht(vec &v);
407ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT
void self_dht(cvec &v);
409ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT vec
dwht(
const vec &v);
410ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT cvec
dwht(
const cvec &v);
411ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT
void dwht(
const vec &vin, vec &vout);
412ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT
void dwht(
const cvec &vin, cvec &vout);
414ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT
void self_dwht(vec &v);
415ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT
void self_dwht(cvec &v);
417ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT mat
dht2(
const mat &m);
418ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT cmat
dht2(
const cmat &m);
420ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT mat
dwht2(
const mat &m);
421ITPP_EXPORT_TEMPLATE
template ITPP_EXPORT cmat
dwht2(
const cmat &m);
int size() const
Returns the number of data elements in the array object.
void set_size(int n, bool copy=false)
Resizing an Array<T>.
ITPP_EXPORT void idct(const vec &in, vec &out)
Inverse Discrete Cosine Transform (IDCT)
ITPP_EXPORT void dct(const vec &in, vec &out)
Discrete Cosine Transform (DCT)
ITPP_EXPORT bool have_cosine_transforms()
Run-time test if library is built with cosine transforms enabled.
#define it_assert_debug(t, s)
Abort if t is not true and NDEBUG is not defined.
ITPP_EXPORT void ifft(const cvec &in, cvec &out)
Inverse Fast Fourier Transform.
ITPP_EXPORT void fft_real(const vec &in, cvec &out)
Real Fast Fourier Transform.
ITPP_EXPORT void ifft_real(const cvec &in, vec &out)
Inverse Real Fast Fourier Transform.
ITPP_EXPORT bool have_fourier_transforms()
Run-time test if library is built with Fast Fourier Transforms enabled.
ITPP_EXPORT void fft(const cvec &in, cvec &out)
Fast Fourier Transform.
Mat< T > dwht2(const Mat< T > &m)
Fast 2D Walsh Hadamard Transform.
Vec< T > dwht(const Vec< T > &v)
Fast Walsh Hadamard Transform.
Vec< T > dht(const Vec< T > &v)
Fast Hadamard Transform.
void self_dht(Vec< T > &v)
Fast Hadamard Transform - memory efficient. Stores the result in v.
Mat< T > dht2(const Mat< T > &m)
Fast 2D Hadamard Transform.
void self_dwht(Vec< T > &v)
Fast Walsh Hadamard Transform - memory efficient (result in v)
int levels2bits(int n)
Calculate the number of bits needed to represent n different values (levels).
void transpose(const Mat< T > &m, Mat< T > &out)
Transposition of the matrix m returning the transposed matrix in out.
Matrix Class Definitions.
Various functions on vectors and matrices - header file.
void bitrv(Vec< T > &out)
Bit reverse.
Templated Vector Class Definitions.