Changeset 2989 in Sophya for trunk/SophyaExt/IFFTW/fftwserver.cc


Ignore:
Timestamp:
Jun 23, 2006, 12:31:39 PM (19 years ago)
Author:
ansari
Message:

Ajout flag use_out_size d'utilisation de la taille du tableau reel de sortie pour FFTBack(complex->real) dans ReShapetoReal() pour FFTWServer - fichiers fftwserver.h .cc) - Reza 23 Juin 2006

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/IFFTW/fftwserver.cc

    r2842 r2989  
    334334    else _p1drb = new FFTWServerPlan(out.Size(), FFTW_COMPLEX_TO_REAL, true);
    335335
    336     ReShapetoReal(in, intemp);
     336    ReShapetoReal(in, intemp, usoutsz);
    337337    //    cerr << " DEBUG-FFTWServer::FFTBackward() in = \n" << in << endl;
    338338    //    cerr << " DEBUG-FFTWServer::FFTBackward() intemp = \n" << intemp << endl;
     
    361361
    362362/* --Methode-- */
    363 void FFTWServer::ReShapetoReal(TArray< complex<r_8> > const & ina, TArray< r_8 > & outa)
     363void FFTWServer::ReShapetoReal(TArray< complex<r_8> > const & ina, TArray< r_8 > & outa,
     364                               bool usz)
    364365{
    365366  TVector< complex<r_8> > in(ina);
     
    367368  int n = in.NElts();
    368369  r_8 thr = FFTArrayChecker<r_8>::ZeroThreshold();
    369   sa_size_t ncs = ( (in(n-1).imag() < -thr) || (in(n-1).imag() > thr) ) ?
     370  sa_size_t ncs;
     371  if (usz) {
     372    if ( (out.NElts() != 2*n-1) && (out.NElts() != 2*n-2) )
     373      throw SzMismatchError("FFTWServer::ReShapetoReal(..., true) - Wrong output array size ");
     374    ncs = out.NElts();
     375  }
     376  else {
     377    sa_size_t ncs = ( (in(n-1).imag() < -thr) || (in(n-1).imag() > thr) ) ?
    370378                    ncs = 2*n-1 : ncs = 2*n-2;
    371379
    372   if (out.NElts() != ncs) {
    373     cerr << " DEBUG-FFTWServer::ReShapetoReal() ncs= " << ncs
    374          << " out.NElts()= " << out.NElts() << endl;
    375     throw SzMismatchError("FFTWServer::ReShapetoReal() - Wrong output array size !");
     380    if (out.NElts() != ncs) {
     381      cerr << " DEBUG-FFTWServer::ReShapetoReal() ncs= " << ncs
     382           << " out.NElts()= " << out.NElts() << endl;
     383      throw SzMismatchError("FFTWServer::ReShapetoReal() - Wrong output array size !");
     384    }
    376385  }
    377386  //  if (ncs == 2*n-2)  {
Note: See TracChangeset for help on using the changeset viewer.