Changeset 2230 for trunk/psLib/src/dataManip/psMinimize.c
- Timestamp:
- Oct 28, 2004, 1:03:11 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/dataManip/psMinimize.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/dataManip/psMinimize.c
r2228 r2230 9 9 * @author GLG, MHPCC 10 10 * 11 * @version $Revision: 1.7 3$ $Name: not supported by cvs2svn $12 * @date $Date: 2004-10-28 2 2:46:57$11 * @version $Revision: 1.74 $ $Name: not supported by cvs2svn $ 12 * @date $Date: 2004-10-28 23:03:11 $ 13 13 * 14 14 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 1007 1007 } else { \ 1008 1008 OUT->data.F32[i] = BASE->data.F32[i]; \ 1009 } \ 1010 } \ 1011 1012 #define PS_VECTOR_F32_CHECK_ZERO_VECTOR(IN, BOOL_VAR) \ 1013 BOOL_VAR = true; \ 1014 for (int i=0;i<IN->n;i++) { \ 1015 if (fabs(IN->data.F32[i]) >= FLT_EPSILON) { \ 1016 BOOL_VAR = false; \ 1017 break; \ 1018 } \ 1019 } \ 1020 1021 #define PS_VECTOR_WITH_MASK_F32_CHECK_ZERO_VECTOR(IN, INMASK, BOOL_VAR) \ 1022 BOOL_VAR = true; \ 1023 for (int i=0;i<IN->n;i++) { \ 1024 if ((INMASK->data.U8[i] == 0) && (fabs(IN->data.F32[i]) >= FLT_EPSILON)) { \ 1025 BOOL_VAR = false; \ 1026 break; \ 1009 1027 } \ 1010 1028 } \ … … 1058 1076 float stepSize = PS_DETERMINE_BRACKET_STEP_SIZE; 1059 1077 psVector *tmp = NULL; 1060 psS32 i = 0; 1061 psS32 null = 0; 1078 psBool boolLineIsNull = true; 1062 1079 1063 1080 psTrace(".psLib.dataManip.p_psDetermineBracket", 4, 1064 1081 "---- p_psDetermineBracket() begin ----\n"); 1065 1082 1066 for (i=0;i<params->n;i++) { 1067 if (paramMask->data.U8[i] == 0) { 1068 if (line->data.F32[i] >= FLT_EPSILON) { 1069 null = 1; 1070 } 1071 } 1072 } 1073 1074 if (null == 0) { 1083 // If the line vector is zero, then return NULL. 1084 PS_VECTOR_WITH_MASK_F32_CHECK_ZERO_VECTOR(params, paramMask, boolLineIsNull); 1085 if (boolLineIsNull == true) { 1075 1086 psTrace(".psLib.dataManip.p_psDetermineBracket", 2, 1076 1087 "p_psDetermineBracket() called with zero line vector.\n"); … … 1127 1138 c =+ stepSize; 1128 1139 1129 for (i=0;i<params->n;i++) { 1130 if (paramMask->data.U8[i] == 0) { 1131 tmp->data.F32[i] = params->data.F32[i] + (a * line->data.F32[i]); 1132 } else { 1133 tmp->data.F32[i] = params->data.F32[i]; 1134 } 1135 } 1140 PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, a); 1136 1141 fa = func(tmp, coords); 1137 1142 1138 for (i=0;i<params->n;i++) { 1139 if (paramMask->data.U8[i] == 0) { 1140 tmp->data.F32[i] = params->data.F32[i] + (c * line->data.F32[i]); 1141 } else { 1142 tmp->data.F32[i] = params->data.F32[i]; 1143 } 1144 } 1143 PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, c); 1145 1144 fc = func(tmp, coords); 1146 1145 … … 1209 1208 float stepSize = PS_DETERMINE_BRACKET_STEP_SIZE; 1210 1209 psVector *tmp = NULL; 1211 psS32 i = 0; 1212 psS32 null = 0; 1210 psBool boolLineIsNull = true; 1213 1211 1214 1212 psTrace(".psLib.dataManip.p_psDetermineBracket", 4, 1215 1213 "---- p_psDetermineBracket() begin ----\n"); 1216 1214 1217 for (i=0;i<params->n;i++) { 1218 if (paramMask->data.U8[i] == 0) { 1219 if (line->data.F32[i] >= FLT_EPSILON) { 1220 null = 1; 1221 } 1222 } 1223 } 1224 1225 if (null == 0) { 1215 // If the line vector is zero, then return NULL. 1216 PS_VECTOR_WITH_MASK_F32_CHECK_ZERO_VECTOR(params, paramMask, boolLineIsNull); 1217 if (boolLineIsNull == true) { 1226 1218 psTrace(".psLib.dataManip.p_psDetermineBracket", 2, 1227 1219 "p_psDetermineBracket() called with zero line vector.\n"); … … 1234 1226 tmp = psVectorAlloc(params->n, PS_TYPE_F32); 1235 1227 1236 b = 0; 1237 a = -stepSize; 1238 c = stepSize; 1239 1240 for (i=0;i<params->n;i++) { 1241 if (paramMask->data.U8[i] == 0) { 1242 tmp->data.F32[i] = params->data.F32[i] + (a * line->data.F32[i]); 1243 } else { 1244 tmp->data.F32[i] = params->data.F32[i]; 1245 } 1246 } 1228 a = 0.0; 1229 b = stepSize; 1230 1231 PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, a); 1247 1232 fa = func(tmp, coords); 1248 1233 1249 for (i=0;i<params->n;i++) { 1250 if (paramMask->data.U8[i] == 0) { 1251 tmp->data.F32[i] = params->data.F32[i] + (b * line->data.F32[i]); 1252 } else { 1253 tmp->data.F32[i] = params->data.F32[i]; 1254 } 1255 } 1234 PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, b); 1256 1235 fb = func(tmp, coords); 1257 1258 for (i=0;i<params->n;i++) {1259 if (paramMask->data.U8[i] == 0) {1260 tmp->data.F32[i] = params->data.F32[i] + (c * line->data.F32[i]);1261 } else {1262 tmp->data.F32[i] = params->data.F32[i];1263 }1264 }1265 fc = func(tmp, coords);1266 1236 1267 1237 if (fa < fb) { … … 1296 1266 c =+ stepSize; 1297 1267 1298 for (i=0;i<params->n;i++) { 1299 if (paramMask->data.U8[i] == 0) { 1300 tmp->data.F32[i] = params->data.F32[i] + (a * line->data.F32[i]); 1301 } else { 1302 tmp->data.F32[i] = params->data.F32[i]; 1303 } 1304 } 1268 PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, a); 1305 1269 fa = func(tmp, coords); 1306 1270 1307 for (i=0;i<params->n;i++) { 1308 if (paramMask->data.U8[i] == 0) { 1309 tmp->data.F32[i] = params->data.F32[i] + (c * line->data.F32[i]); 1310 } else { 1311 tmp->data.F32[i] = params->data.F32[i]; 1312 } 1313 } 1271 PS_VECTOR_ADD_MULTIPLE(params, paramMask, line, tmp, c); 1314 1272 fc = func(tmp, coords); 1315 1273 … … 1391 1349 psVector *tmpn = NULL; 1392 1350 psS32 i = 0; 1393 psS32 null = 0;1351 psS32 boolLineIsNull = true; 1394 1352 1395 1353 psTrace(".psLib.dataManip.p_psLineMin", 4, … … 1404 1362 if (paramMask->data.U8[i] == 0) { 1405 1363 if (line->data.F32[i] >= FLT_EPSILON) { 1406 null = 1;1364 boolLineIsNull = false; 1407 1365 psTrace(".psLib.dataManip.p_psLineMin", 4, 1408 1366 "line->data.F32[%d] is %f\n", i, line->data.F32[i]); … … 1413 1371 for (i=0;i<params->n;i++) { 1414 1372 if (line->data.F32[i] >= FLT_EPSILON) { 1415 null = 1;1373 boolLineIsNull = false; 1416 1374 psTrace(".psLib.dataManip.p_psLineMin", 4, 1417 1375 "line->data.F32[%d] is %f\n", i, line->data.F32[i]); … … 1420 1378 } 1421 1379 1422 if ( null == 0) {1380 if (boolLineIsNull == true) { 1423 1381 psTrace(".psLib.dataManip.p_psLineMin", 2, 1424 1382 "p_psLineMin() called with zero line vector.\n");
Note:
See TracChangeset
for help on using the changeset viewer.
