Changeset 1402 in Sophya for trunk/SophyaLib/NTools/fftservintf.cc
- Timestamp:
- Feb 13, 2001, 7:12:07 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/NTools/fftservintf.cc
r1400 r1402 41 41 42 42 /* --Methode-- */ 43 void FFTServerInterface::FFTBackward(TArray< complex<r_8> > const &, TArray< r_8 > & )43 void FFTServerInterface::FFTBackward(TArray< complex<r_8> > const &, TArray< r_8 > &, bool) 44 44 { 45 45 throw NotAvailableOperation("FFTServer::FFTBackward(TArray...) Unsupported operation !"); … … 68 68 69 69 /* --Methode-- */ 70 void FFTServerInterface::FFTBackward(TArray< complex<r_4> > const &, TArray< r_4 > & )70 void FFTServerInterface::FFTBackward(TArray< complex<r_4> > const &, TArray< r_4 > &, bool) 71 71 { 72 72 throw NotAvailableOperation("FFTServer::FFTBackward(TArray r_4 ... ) Unsupported operation !"); … … 183 183 /* --Methode-- */ 184 184 template <class T> 185 int FFTArrayChecker<T>::CheckResize(TArray< complex<T> > const & in, TArray< T > & out) 185 int FFTArrayChecker<T>::CheckResize(TArray< complex<T> > const & in, TArray< T > & out, 186 bool usoutsz) 186 187 { 187 188 int k; … … 204 205 throw(SzMismatchError(msg)); 205 206 } 206 sa_size_t sz[BASEARRAY_MAXNDIMS]; 207 if (ndg1 > 1) { 208 sz[0] = 2*in.Size(0)-1; 209 for(k=1; k<in.NbDimensions(); k++) 210 sz[k] = in.Size(k); 207 if (usoutsz) { // We have to use output array size 208 bool fgerr = false; 209 if (ndg1 > 1) { 210 if (in.Size(0) != out.Size(0)/2+1) fgerr = true; 211 } 212 else { 213 if (in.Size(in.MaxSizeKA()) != out.Size(in.MaxSizeKA())/2+1) fgerr = true; 214 } 215 if (fgerr) { 216 msg = _msg + "CheckResize(complex in, real out) - Incompatible in-out sizes !"; 217 throw(SzMismatchError(msg)); 218 } 219 } 220 else { // We have to resize the output array 221 sa_size_t sz[BASEARRAY_MAXNDIMS]; 222 if (ndg1 > 1) { 223 sz[0] = 2*in.Size(0)-1; 224 for(k=1; k<in.NbDimensions(); k++) 225 sz[k] = in.Size(k); 211 226 // sz[k] = in.Size(k)*2-1; 212 } 213 else { 214 for(k=0; k<BASEARRAY_MAXNDIMS; k++) sz[k] = 1; 215 T thr = ZeroThreshold(); 216 sa_size_t n = in.Size(in.MaxSizeKA()); 217 sa_size_t ncs = ( (in[n-1].imag() < -thr) || (in[n-1].imag() > thr) ) ? 218 ncs = 2*n-1 : ncs = 2*n-2; 219 sz[in.MaxSizeKA()] = ncs; 220 } 221 227 } 228 else { 229 for(k=0; k<BASEARRAY_MAXNDIMS; k++) sz[k] = 1; 230 T thr = ZeroThreshold(); 231 sa_size_t n = in.Size(in.MaxSizeKA()); 232 sa_size_t ncs = ( (in[n-1].imag() < -thr) || (in[n-1].imag() > thr) ) ? 233 ncs = 2*n-1 : ncs = 2*n-2; 234 sz[in.MaxSizeKA()] = ncs; 235 } 222 236 out.ReSize(in.NbDimensions(), sz); 237 } 223 238 224 239 return(ndg1); … … 226 241 } 227 242 228 /* --Methode--229 template <class T>230 void FFTArrayChecker<T>::ReShapetoReal( TArray< complex<T> > const & in, TArray< T > & out)231 {232 sa_size_t n = in.Size();233 // int ncs = (fabs(in(n-1).imag()) > 1.e-12) ? ncs = 2*n-1 : ncs = n*2-2;234 sa_size_t ncs = 2*n-1;235 sa_size_t k;236 out[0] = in[0].real();237 for(k=1;k<n-1;k++) {238 out[2*k-1] = in[k].real();239 out[2*k] = in[k].imag();240 }241 // if (ncs == n*2-2) out[ncs-1] = in[n-1].real();242 // else { out[ncs-2] = in[n-1].real(); out[ncs-1] = in[n-1].imag(); }243 out[ncs-2] = in[n-1].real(); out[ncs-1] = in[n-1].imag();244 }245 */246 247 /* --Methode--248 template <class T>249 void FFTArrayChecker<T>::ReShapetoCompl(TArray< T > const & in, TArray< complex<T> > & out)250 {251 sa_size_t n = in.Size();252 sa_size_t ncs = n/2+1;253 sa_size_t nc = (n%2 != 0) ? n/2+1 : n/2;254 out[0] = complex<T> (in[0],0.);255 for(int k=1;k<nc;k++)256 out[k] = complex<T> (in[2*k-1], in[2*k]);257 if (n%2 == 0) out[ncs-1] = complex<r_8>(in[n-1], 0.);258 }259 */260 243 261 244 #ifdef __CXX_PRAGMA_TEMPLATES__
Note:
See TracChangeset
for help on using the changeset viewer.