void linear_pcmfloat_1ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; float *dst = (float *)rawdata; int r = set_rounding(); while (size--) { dst[0] = float(*src[0]); src[0]++; dst += 1; } restore_rounding(r); }
void linear_pcm32_be_1ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; int32_t *dst = (int32_t *)rawdata; int r = set_rounding(); while (size--) { dst[0] = int2be32(s2i(*src[0])); src[0]++; dst += 1; } restore_rounding(r); }
void linear_pcmdouble_1ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; double *dst = (double *)rawdata; int r = set_rounding(); while (size--) { dst[0] = double(*src[0]); src[0]++; dst += 1; } restore_rounding(r); }
void linear_pcm24_be_2ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; int24_t *dst = (int24_t *)rawdata; int r = set_rounding(); while (size--) { dst[0] = int2be24(s2i(*src[0])); src[0]++; dst[1] = int2be24(s2i(*src[1])); src[1]++; dst += 2; } restore_rounding(r); }
void linear_pcm16_be_3ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; int16_t *dst = (int16_t *)rawdata; int r = set_rounding(); while (size--) { dst[0] = int2be16(s2i(*src[0])); src[0]++; dst[1] = int2be16(s2i(*src[1])); src[1]++; dst[2] = int2be16(s2i(*src[2])); src[2]++; dst += 3; } restore_rounding(r); }
void linear_pcm32_4ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; int32_t *dst = (int32_t *)rawdata; int r = set_rounding(); while (size--) { dst[0] = int2le32(s2i(*src[0])); src[0]++; dst[1] = int2le32(s2i(*src[1])); src[1]++; dst[2] = int2le32(s2i(*src[2])); src[2]++; dst[3] = int2le32(s2i(*src[3])); src[3]++; dst += 4; } restore_rounding(r); }
void linear_pcmdouble_6ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; double *dst = (double *)rawdata; int r = set_rounding(); while (size--) { dst[0] = double(*src[0]); src[0]++; dst[1] = double(*src[1]); src[1]++; dst[2] = double(*src[2]); src[2]++; dst[3] = double(*src[3]); src[3]++; dst[4] = double(*src[4]); src[4]++; dst[5] = double(*src[5]); src[5]++; dst += 6; } restore_rounding(r); }
void linear_pcm24_6ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; int24_t *dst = (int24_t *)rawdata; int r = set_rounding(); while (size--) { dst[0] = int2le24(s2i(*src[0])); src[0]++; dst[1] = int2le24(s2i(*src[1])); src[1]++; dst[2] = int2le24(s2i(*src[2])); src[2]++; dst[3] = int2le24(s2i(*src[3])); src[3]++; dst[4] = int2le24(s2i(*src[4])); src[4]++; dst[5] = int2le24(s2i(*src[5])); src[5]++; dst += 6; } restore_rounding(r); }
void linear_pcmfloat_7ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; float *dst = (float *)rawdata; int r = set_rounding(); while (size--) { dst[0] = float(*src[0]); src[0]++; dst[1] = float(*src[1]); src[1]++; dst[2] = float(*src[2]); src[2]++; dst[3] = float(*src[3]); src[3]++; dst[4] = float(*src[4]); src[4]++; dst[5] = float(*src[5]); src[5]++; dst[6] = float(*src[6]); src[6]++; dst += 7; } restore_rounding(r); }
void linear_pcm32_be_8ch(uint8_t *rawdata, samples_t samples, size_t size) { samples_t src = samples; int32_t *dst = (int32_t *)rawdata; int r = set_rounding(); while (size--) { dst[0] = int2be32(s2i(*src[0])); src[0]++; dst[1] = int2be32(s2i(*src[1])); src[1]++; dst[2] = int2be32(s2i(*src[2])); src[2]++; dst[3] = int2be32(s2i(*src[3])); src[3]++; dst[4] = int2be32(s2i(*src[4])); src[4]++; dst[5] = int2be32(s2i(*src[5])); src[5]++; dst[6] = int2be32(s2i(*src[6])); src[6]++; dst[7] = int2be32(s2i(*src[7])); src[7]++; dst += 8; } restore_rounding(r); }
void EnumerationDyn<FT>::enumerate(int first, int last, FT &fmaxdist, long fmaxdistexpo, const vector<FT> &target_coord, const vector<enumxt> &subtree, const vector<enumf> &pruning, bool _dual, bool subtree_reset) { bool solvingsvp = target_coord.empty(); dual = _dual; pruning_bounds = pruning; target = target_coord; if (last == -1) last = _gso.d; d = last - first; fx.resize(d); FPLLL_CHECK(d < maxdim, "enumerate: dimension is too high"); FPLLL_CHECK((solvingsvp || !dual), "CVP for dual not implemented! What does that even mean? "); FPLLL_CHECK((subtree.empty() || !dual), "Subtree enumeration for dual not implemented!"); resetflag = !_max_indices.empty(); if (resetflag) reset_depth = _max_indices[last - subtree.size() - 1]; if (solvingsvp) { for (int i = 0; i < d; ++i) center_partsum[i] = 0.0; } else { for (int i = 0; i < d; ++i) center_partsum[i] = target_coord[i + first].get_d(); } FT fr, fmu, fmaxdistnorm; long rexpo, normexp = -1; for (int i = 0; i < d; ++i) { fr = _gso.get_r_exp(i + first, i + first, rexpo); normexp = max(normexp, rexpo + fr.exponent()); } fmaxdistnorm.mul_2si(fmaxdist, dual ? normexp - fmaxdistexpo : fmaxdistexpo - normexp); maxdist = fmaxdistnorm.get_d(GMP_RNDU); _evaluator.set_normexp(normexp); if (dual) { for (int i = 0; i < d; ++i) { fr = _gso.get_r_exp(i + first, i + first, rexpo); fr.mul_2si(fr, rexpo - normexp); rdiag[d - i - 1] = enumf(1.0) / fr.get_d(); } for (int i = 0; i < d; ++i) { for (int j = i + 1; j < d; ++j) { _gso.get_mu(fmu, j + first, i + first); mut[d - j - 1][d - i - 1] = -fmu.get_d(); } } } else { for (int i = 0; i < d; ++i) { fr = _gso.get_r_exp(i + first, i + first, rexpo); fr.mul_2si(fr, rexpo - normexp); rdiag[i] = fr.get_d(); } for (int i = 0; i < d; ++i) { for (int j = i + 1; j < d; ++j) { _gso.get_mu(fmu, j + first, i + first); mut[i][j] = fmu.get_d(); } } } subsoldists = rdiag; save_rounding(); prepare_enumeration(subtree, solvingsvp, subtree_reset); do_enumerate(); restore_rounding(); fmaxdistnorm = maxdist; // Exact fmaxdist.mul_2si(fmaxdistnorm, dual ? fmaxdistexpo - normexp : normexp - fmaxdistexpo); if (dual && !_evaluator.empty()) { for (auto it = _evaluator.begin(), itend = _evaluator.end(); it != itend; ++it) reverse_by_swap(it->second, 0, d - 1); } }