Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
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);
}
Example #4
0
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);
}
Example #5
0
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);
}
Example #6
0
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);
}
Example #7
0
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);
}
Example #8
0
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);
}
Example #9
0
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);
}
Example #10
0
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);
}
Example #11
0
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);
  }
}