Changeset 804 in Sophya for trunk/SophyaLib/TArray/matharr.cc
- Timestamp:
- Apr 3, 2000, 7:36:01 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/TArray/matharr.cc
r787 r804 13 13 TArray<T>& MathArray<T>::ApplyFunctionInPlace(TArray<T> & a, Arr_DoubleFunctionOfX f) 14 14 { 15 if (a.NbDimensions() < 1) 16 throw RangeCheckError("MathArray<T>::ApplyFunctionInPlace(TArray<T> & a..) Not Allocated Array a !"); 15 17 T * pe; 16 18 uint_8 j,k; … … 36 38 TArray<T>& MathArray<T>::ApplyFunctionInPlace(TArray<T> & a, Arr_FloatFunctionOfX f) 37 39 { 40 if (a.NbDimensions() < 1) 41 throw RangeCheckError("MathArray<T>::ApplyFunctionInPlace(TArray<T> & a..) Not Allocated Array a !"); 38 42 T * pe; 39 43 uint_8 j,k; … … 75 79 } 76 80 81 template <class T> 82 double MathArray<T>::MeanSigma(TArray<T> const & a, double & mean, double & sig) 83 { 84 if (a.NbDimensions() < 1) 85 throw RangeCheckError("MathArray<T>::MeanSigma(TArray<T> const & a..) Not Allocated Array a !"); 86 const T * pe; 87 uint_8 j,k; 88 mean=0.; 89 sig = 0.; 90 double valok; 91 if (a.AvgStep() > 0) { // regularly spaced elements 92 uint_8 step = a.AvgStep(); 93 uint_8 maxx = a.Size()*step; 94 pe = a.Data(); 95 for(k=0; k<maxx; k+=step ) { 96 valok = (double) pe[k]; 97 mean += valok; sig += valok*valok; 98 } 99 } 100 else { // Non regular data spacing ... 101 uint_4 ka = a.MaxSizeKA(); 102 uint_8 step = a.Step(ka); 103 uint_8 gpas = a.Size(ka)*step; 104 for(j=0; j<a.Size(); j += a.Size(ka)) { 105 pe = a.DataBlock().Begin()+a.Offset(j); 106 for(k=0; k<gpas; k+=step) { 107 valok = (double) pe[k]; 108 mean += valok; sig += valok*valok; 109 } 110 } 111 } 112 double dsz = (double)(a.Size()); 113 mean /= dsz; 114 sig = sig/dsz - mean*mean; 115 if (sig >= 0.) sig = sqrt(sig); 116 return(mean); 117 } 118 77 119 /////////////////////////////////////////////////////////////// 78 120 #ifdef __CXX_PRAGMA_TEMPLATES__
Note:
See TracChangeset
for help on using the changeset viewer.