- Timestamp:
- May 3, 2010, 8:50:52 AM (16 years ago)
- Location:
- branches/simtest_nebulous_branches
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
psLib/src/math/psMinimizeLMM.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/simtest_nebulous_branches
- Property svn:mergeinfo changed
-
branches/simtest_nebulous_branches/psLib/src/math/psMinimizeLMM.c
r24089 r27840 99 99 100 100 // XXX check that the GJ solver works: 101 # if (TESTGJ) 101 # if (TESTGJ) 102 102 psImage *out = psImageAlloc (alpha->numRows, alpha->numCols, PS_TYPE_F32); 103 103 for (int oy = 0; oy < out->numRows; oy++) { 104 for (int ox = 0; ox < out->numCols; ox++) {105 float value = 0;106 for (int i = 0; i < alpha->numCols; i++) {107 value += alpha->data.F32[i][ox]*Alpha->data.F32[oy][i];108 }109 out->data.F32[oy][ox] = value;110 }104 for (int ox = 0; ox < out->numCols; ox++) { 105 float value = 0; 106 for (int i = 0; i < alpha->numCols; i++) { 107 value += alpha->data.F32[i][ox]*Alpha->data.F32[oy][i]; 108 } 109 out->data.F32[oy][ox] = value; 110 } 111 111 } 112 112 113 113 psVector *vect = psVectorAlloc (beta->n, PS_TYPE_F32); 114 114 for (int oy = 0; oy < vect->n; oy++) { 115 float value = 0;116 for (int i = 0; i < alpha->numCols; i++) {117 value += alpha->data.F32[oy][i]*Beta->data.F32[i];118 }119 vect->data.F32[oy] = value;120 } 121 115 float value = 0; 116 for (int i = 0; i < alpha->numCols; i++) { 117 value += alpha->data.F32[oy][i]*Beta->data.F32[i]; 118 } 119 vect->data.F32[oy] = value; 120 } 121 122 122 psFree (out); 123 123 psFree (vect); … … 223 223 if (isnan(chisq)) { 224 224 psTrace ("psLib.math", 5, "psMinLM_SetABX() returned a NAN chisq.\n"); 225 psVectorInit (delta, NAN);225 psVectorInit (delta, NAN); 226 226 retValue = false; 227 227 } … … 238 238 if (!status) { 239 239 psTrace ("psLib.math", 5, "psMinLM_GuessABP() returned FALSE.\n"); 240 psVectorInit (delta, NAN);240 psVectorInit (delta, NAN); 241 241 retValue = false; 242 242 } … … 301 301 PS_ASSERT_VECTOR_NON_NULL(dy, NAN); 302 302 303 PS_ASSERT_VECTOR_TYPE(params, PS_TYPE_F32, false);303 PS_ASSERT_VECTOR_TYPE(params, PS_TYPE_F32, NAN); 304 304 if (paramMask) { 305 PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_VECTOR_MASK, false);305 PS_ASSERT_VECTOR_TYPE(paramMask, PS_TYPE_VECTOR_MASK, NAN); 306 306 } 307 307 … … 325 325 chisq += PS_SQR(delta) * dy->data.F32[i]; 326 326 327 assert (!isnan(dy->data.F32[i]));328 assert (!isnan(delta));329 assert (!isnan(chisq));327 if (isnan(dy->data.F32[i])) return NAN; 328 if (isnan(delta)) return NAN; 329 if (isnan(chisq)) return NAN; 330 330 331 331 // we track alpha,beta and params,deriv separately
Note:
See TracChangeset
for help on using the changeset viewer.
