Changeset 5809
- Timestamp:
- Dec 18, 2005, 2:51:36 PM (21 years ago)
- File:
-
- 1 edited
-
branches/eam_rel9_b1/psLib/src/math/psMinimize.c (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_rel9_b1/psLib/src/math/psMinimize.c
r5808 r5809 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1.147.4.1.2. 2$ $Name: not supported by cvs2svn $13 * @date $Date: 2005-12-1 8 18:52:55$12 * @version $Revision: 1.147.4.1.2.3 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2005-12-19 00:51:36 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 1764 1764 B = psVectorAlloc(nTerm, PS_TYPE_F64); 1765 1765 1766 //1767 1766 // Initialize data structures. 1768 // XXX: Use psLib function. 1769 // 1770 PS_VECTOR_SET_F64(B, 0.0); 1771 PS_IMAGE_SET_F64(A, 0.0); 1767 psVectorInit (B, 0.0); 1768 psImageInit (A, 0.0); 1772 1769 1773 1770 // xSums look like: 1, x, x^2, ... x^(2n+1) … … 1823 1820 1824 1821 // GaussJordan version 1825 if ( 0) {1822 if (1) { 1826 1823 // does the solution in place 1827 1824 psGaussJordan (A, B); … … 2130 2127 B = psVectorAlloc(nTerm, PS_TYPE_F64); 2131 2128 2132 //2133 2129 // Initialize data structures. 2134 // XXX: Use psLib function. 2135 // 2136 PS_VECTOR_SET_F64(B, 0.0); 2137 PS_IMAGE_SET_F64(A, 0.0); 2130 psVectorInit (B, 0.0); 2131 psImageInit (A, 0.0); 2138 2132 2139 2133 // Sums look like: 1, x, x^2, ... x^(2n+1), y, xy, x^2y, ... x^(2n+1) … … 2168 2162 if (myPoly->mask[i][j]) 2169 2163 continue; 2164 int nx = i+j*nXterm; 2170 2165 for (int n = 0; n < nXterm; n++) { 2171 2166 for (int m = 0; m < nYterm; m++) { 2172 2167 if (myPoly->mask[n][m]) 2173 2168 continue; 2174 A->data.F64[i+j*nXterm][n+m*nXterm] += Sums->data.F64[i+n][j+m] * wt; 2169 int ny = n+m*nXterm; 2170 A->data.F64[nx][ny] += Sums->data.F64[i+n][j+m] * wt; 2175 2171 } 2176 2172 } … … 2183 2179 if (!myPoly->mask[i][j]) 2184 2180 continue; 2185 i x = i+j*nXterm;2186 B->data.F64[ ix] = 0;2181 int nx = i+j*nXterm; 2182 B->data.F64[nx] = 0; 2187 2183 for (int n = 0; n < nXterm; n++) { 2188 2184 for (int m = 0; m < nYterm; m++) { 2189 i y = n+m*nXterm;2190 A->data.F64[ ix][iy] = (ix == iy) ? 1 : 0;2185 int ny = n+m*nXterm; 2186 A->data.F64[nx][ny] = (nx == ny) ? 1 : 0; 2191 2187 } 2192 2188 } … … 2664 2660 if (myPoly->mask[ix][iy][iz]) 2665 2661 continue; 2666 B->data.F64[ix+iy*nXterm+iz*nXterm*nYterm] += f->data.F64[k] * Sums[ix][iy][iz] * wt; 2662 int nx = ix+iy*nXterm+iz*nXterm*nYterm; 2663 B->data.F64[nx] += f->data.F64[k] * Sums[ix][iy][iz] * wt; 2667 2664 } 2668 2665 } … … 2674 2671 if (myPoly->mask[ix][iy][iz]) 2675 2672 continue; 2673 int nx = ix+iy*nXterm+iz*nXterm*nYterm; 2676 2674 for (int jx = 0; jx < nXterm; jx++) { 2677 2675 for (int jy = 0; jy < nYterm; jy++) { … … 2679 2677 if (myPoly->mask[jx][jy][jz]) 2680 2678 continue; 2681 A->data.F64[ix+iy*nXterm+iz*nXterm*nYterm][ix+iy*nXterm+iz*nXterm*nYterm] += Sums[ix+jx][iy+jy][iz+jz] * wt; 2679 int ny = jx+jy*nXterm+jz*nXterm*nYterm; 2680 A->data.F64[nx][ny] += Sums[ix+jx][iy+jy][iz+jz] * wt; 2682 2681 } 2683 2682 } … … 2693 2692 if (!myPoly->mask[ix][iy][iz]) 2694 2693 continue; 2695 nx = ix+iy*nXterm+iz*nXterm*nYterm;2694 int nx = ix+iy*nXterm+iz*nXterm*nYterm; 2696 2695 B->data.F64[nx] = 0; 2697 2696 for (int jx = 0; jx < nXterm; jx++) { 2698 2697 for (int jy = 0; jy < nYterm; jy++) { 2699 2698 for (int jz = 0; jz < nZterm; jz++) { 2700 ny = jx+jy*nXterm+jz*nXterm*nYterm;2699 int ny = jx+jy*nXterm+jz*nXterm*nYterm; 2701 2700 A->data.F64[nx][ny] = (nx == ny) ? 1 : 0; 2702 2701 } … … 2714 2713 for (int iy = 0; iy < nYterm; iy++) { 2715 2714 for (int iz = 0; iz < nZterm; iz++) { 2716 myPoly->coeff[ix][iy][iz] = B->data.F64[ix+iy*nXterm+iz*nXterm*nYterm]; 2717 myPoly->coeffErr[ix][iy][iz] = sqrt(B->data.F64[ix+iy*nXterm+iz*nXterm*nYterm][ix+iy*nXterm+iz*nXterm*nYterm]); 2715 int nx = ix+iy*nXterm+iz*nXterm*nYterm; 2716 int ny = jx+jy*nXterm+jz*nXterm*nYterm; 2717 myPoly->coeff[ix][iy][iz] = B->data.F64[nx]; 2718 myPoly->coeffErr[ix][iy][iz] = sqrt(A->data.F64[nx][ny]); 2718 2719 } 2719 2720 } … … 3111 3112 if (myPoly->mask[ix][iy][iz][it]) 3112 3113 continue; 3113 B->data.F64[ix+iy*nXterm+iz*nXterm*nYterm+it*nXterm*nYterm*nZterm] += f->data.F64[k] * Sums[ix][iy][iz][it] * wt; 3114 int nx = ix+iy*nXterm+iz*nXterm*nYterm+it*nXterm*nYterm*nZterm; 3115 B->data.F64[nx] += f->data.F64[k] * Sums[ix][iy][iz][it] * wt; 3114 3116 } 3115 3117 } … … 3123 3125 if (myPoly->mask[ix][iy][iz][it]) 3124 3126 continue; 3127 int nx = ix+iy*nXterm+iz*nXterm*nYterm+it*nXterm*nYterm*nZterm; 3125 3128 for (int jx = 0; jx < nXterm; jx++) { 3126 3129 for (int jy = 0; jy < nYterm; jy++) { … … 3129 3132 if (myPoly->mask[jx][jy][jz][jt]) 3130 3133 continue; 3131 A->data.F64[ix+iy*nXterm+iz*nXterm*nYterm+it*nXterm*nYterm*nZterm][jx+jy*nXterm+jz*nXterm*nYterm+jt*nXterm*nYterm*nZterm]3132 += Sums[ix+jx][iy+jy][iz+jz][it+jt] * wt;3134 int ny = jx+jy*nXterm+jz*nXterm*nYterm+jt*nXterm*nYterm*nZterm; 3135 A->data.F64[nx][ny]+= Sums[ix+jx][iy+jy][iz+jz][it+jt] * wt; 3133 3136 } 3134 3137 } … … 3147 3150 if (!myPoly->mask[ix][iy][iz][it]) 3148 3151 continue; 3149 nx = ix+iy*nXterm+iz*nXterm*nYterm+it*nXterm*nYterm*nZterm;3152 int nx = ix+iy*nXterm+iz*nXterm*nYterm+it*nXterm*nYterm*nZterm; 3150 3153 B->data.F64[nx] = 0; 3151 3154 for (int jx = 0; jx < nXterm; jx++) { … … 3153 3156 for (int jz = 0; jz < nZterm; jz++) { 3154 3157 for (int jt = 0; jt < nTterm; jt++) { 3155 ny = jx+jy*nXterm+jz*nXterm*nYterm+jt*nXterm*nYterm*nZterm;3158 int ny = jx+jy*nXterm+jz*nXterm*nYterm+jt*nXterm*nYterm*nZterm; 3156 3159 A->data.F64[nx][ny] = (nx == ny) ? 1 : 0; 3157 3160 } … … 3172 3175 for (int iz = 0; iz < nZterm; iz++) { 3173 3176 for (int it = 0; it < nTterm; it++) { 3174 myPoly->coeff[ix][iy][iz][it] = B->data.F64[ix+iy*nXterm+iz*nXterm*nYterm+iz*nXterm*nYterm*nZterm]; 3177 int nx = ix+iy*nXterm+iz*nXterm*nYterm+it*nXterm*nYterm*nZterm; 3178 int ny = jx+jy*nXterm+jz*nXterm*nYterm+jt*nXterm*nYterm*nZterm; 3179 myPoly->coeff[ix][iy][iz][it] = B->data.F64[nx]; 3180 myPoly->coeffErr[ix][iy][iz][it] = sqrt(A->data.F64[nx][ny]); 3175 3181 } 3176 3182 }
Note:
See TracChangeset
for help on using the changeset viewer.
