Changeset 1394 in Sophya for trunk/SophyaLib/NTools/fftservintf.cc
- Timestamp:
- Feb 12, 2001, 6:09:27 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/NTools/fftservintf.cc
r1390 r1394 77 77 /* --Methode-- */ 78 78 template <class T> 79 FFTArrayChecker<T>::FFTArrayChecker(bool checkpack, bool onedonly) 80 { 79 FFTArrayChecker<T>::FFTArrayChecker(string msg, bool checkpack, bool onedonly) 80 { 81 _msg = msg + " FFTArrayChecker::"; 81 82 _checkpack = checkpack; 82 83 _onedonly = onedonly; … … 89 90 } 90 91 92 template <class T> 93 T FFTArrayChecker<T>::ZeroThreshold() 94 { 95 return(0); 96 } 97 98 r_8 FFTArrayChecker< r_8 >::ZeroThreshold() 99 { 100 return(1.e-18); 101 } 102 103 r_4 FFTArrayChecker< r_4 >::ZeroThreshold() 104 { 105 return(1.e-9); 106 } 107 108 109 91 110 /* --Methode-- */ 92 111 template <class T> … … 94 113 { 95 114 int k; 96 if (in.Size() < 1) 97 throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, complex out) - Unallocated input array !")); 115 string msg; 116 if (in.Size() < 1) { 117 msg = _msg + "CheckResize(complex in, complex out) - Unallocated input array !"; 118 throw(SzMismatchError(msg)); 119 } 98 120 if (_checkpack) 99 if ( !in.IsPacked() ) 100 throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, complex out) - Not packed input array !")); 121 if ( !in.IsPacked() ) { 122 msg = _msg + "CheckResize(complex in, complex out) - Not packed input array !"; 123 throw(SzMismatchError(msg)); 124 } 101 125 int ndg1 = 0; 102 126 for(k=0; k<in.NbDimensions(); k++) 103 127 if (in.Size(k) > 1) ndg1++; 104 128 if (_onedonly) 105 if (ndg1++ > 1) 106 throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, complex out) - Only 1-D array accepted !")); 107 108 sa_size_t sz[BASEARRAY_MAXNDIMS]; 109 for(k=0; k<in.NbDimensions(); k++) 110 sz[k] = in.Size(k); 111 out.ReSize(in.NbDimensions(), sz); 129 if (ndg1 > 1) { 130 msg = _msg + "CheckResize(complex in, complex out) - Only 1-D array accepted !"; 131 throw(SzMismatchError(msg)); 132 } 133 out.ReSize(in); 134 // sa_size_t sz[BASEARRAY_MAXNDIMS]; 135 // for(k=0; k<in.NbDimensions(); k++) 136 // sz[k] = in.Size(k); 137 // out.ReSize(in.NbDimensions(), sz); 112 138 113 139 return(ndg1); … … 119 145 { 120 146 int k; 121 if (in.Size() < 1) 122 throw(SzMismatchError("FFTArrayChecker::CheckResize(real in, complex out) - Unallocated input array !")); 147 string msg; 148 if (in.Size() < 1) { 149 msg = _msg + "CheckResize(real in, complex out) - Unallocated input array !"; 150 throw(SzMismatchError(msg)); 151 } 123 152 if (_checkpack) 124 if ( !in.IsPacked() ) 125 throw(SzMismatchError("FFTArrayChecker::CheckResize(real in, complex out) - Not packed input array !")); 153 if ( !in.IsPacked() ) { 154 msg = _msg + "CheckResize(real in, complex out) - Not packed input array !"; 155 throw(SzMismatchError(msg)); 156 } 126 157 int ndg1 = 0; 127 158 for(k=0; k<in.NbDimensions(); k++) 128 159 if (in.Size(k) > 1) ndg1++; 129 160 if (_onedonly) 130 if (ndg1++ > 1) 131 throw(SzMismatchError("FFTArrayChecker::CheckResize(real in, complex out) - Only 1-D array accepted !")); 132 161 if (ndg1 > 1) { 162 msg = _msg + "CheckResize(real in, complex out) - Only 1-D array accepted !"; 163 throw(SzMismatchError(msg)); 164 } 133 165 sa_size_t sz[BASEARRAY_MAXNDIMS]; 134 166 for(k=0; k<in.NbDimensions(); k++) 135 sz[k] = in.Size(k)/2+1; 167 sz[k] = in.Size(k)/2+1; 168 // sz[k] = (in.Size(k)%2 != 0) ? in.Size(k)/2+1 : in.Size(k)/2; 169 136 170 out.ReSize(in.NbDimensions(), sz); 137 171 … … 144 178 { 145 179 int k; 146 if (in.Size() < 1) 147 throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, real out) - Unallocated input array !")); 180 string msg; 181 if (in.Size() < 1) { 182 msg = _msg + "CheckResize(complex in, real out) - Unallocated input array !"; 183 throw(SzMismatchError(msg)); 184 } 148 185 if (_checkpack) 149 if ( !in.IsPacked() ) 150 throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, real out) - Not packed input array !")); 186 if ( !in.IsPacked() ) { 187 msg = _msg + "CheckResize(complex in, real out) - Not packed input array !"; 188 throw(SzMismatchError(msg)); 189 } 151 190 int ndg1 = 0; 152 191 for(k=0; k<in.NbDimensions(); k++) 153 192 if (in.Size(k) > 1) ndg1++; 154 193 if (_onedonly) 155 if (ndg1++ > 1) 156 throw(SzMismatchError("FFTArrayChecker::CheckResize(complex in, real out) - Only 1-D array accepted !")); 157 194 if (ndg1 > 1) { 195 msg = _msg + "CheckResize(complex in, real out) - Only 1-D array accepted !"; 196 throw(SzMismatchError(msg)); 197 } 158 198 sa_size_t sz[BASEARRAY_MAXNDIMS]; 159 for(k=0; k<in.NbDimensions(); k++) 160 sz[k] = in.Size(k)*2-1; 199 if (ndg1 > 1) { 200 for(k=0; k<in.NbDimensions(); k++) 201 sz[k] = in.Size(k)*2-1; 202 } 203 else { 204 for(k=0; k<BASEARRAY_MAXNDIMS; k++) sz[k] = 1; 205 T thr = ZeroThreshold(); 206 sa_size_t n = in.Size(in.MaxSizeKA()); 207 sa_size_t ncs = ( (in[n-1].imag() < -thr) || (in[n-1].imag() > thr) ) ? 208 ncs = 2*n-1 : ncs = 2*n-2; 209 sz[in.MaxSizeKA()] = ncs; 210 } 211 161 212 out.ReSize(in.NbDimensions(), sz); 162 213 … … 165 216 } 166 217 167 /* --Methode-- */218 /* --Methode-- 168 219 template <class T> 169 220 void FFTArrayChecker<T>::ReShapetoReal( TArray< complex<T> > const & in, TArray< T > & out) … … 182 233 out[ncs-2] = in[n-1].real(); out[ncs-1] = in[n-1].imag(); 183 234 } 184 185 /* --Methode-- */ 235 */ 236 237 /* --Methode-- 186 238 template <class T> 187 239 void FFTArrayChecker<T>::ReShapetoCompl(TArray< T > const & in, TArray< complex<T> > & out) … … 195 247 if (n%2 == 0) out[ncs-1] = complex<r_8>(in[n-1], 0.); 196 248 } 197 249 */ 198 250 199 251 #ifdef __CXX_PRAGMA_TEMPLATES__
Note:
See TracChangeset
for help on using the changeset viewer.