Changeset 4405 for trunk/psLib/src/math/psSpline.c
- Timestamp:
- Jun 27, 2005, 2:53:54 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psSpline.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psSpline.c
r4392 r4405 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.11 1$ $Name: not supported by cvs2svn $10 * @date $Date: 2005-06-2 5 02:02:05$9 * @version $Revision: 1.112 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2005-06-28 00:53:53 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 1232 1232 } 1233 1233 1234 psF 32 psPolynomial1DEval(const psPolynomial1D* myPoly, psF32x)1235 { 1236 PS_ASSERT_POLY_NON_NULL( myPoly, NAN);1237 1238 if ( myPoly->type == PS_POLYNOMIAL_ORD) {1239 return(ordPolynomial1DEval(x, myPoly));1240 } else if ( myPoly->type == PS_POLYNOMIAL_CHEB) {1241 return(chebPolynomial1DEval(x, myPoly));1234 psF64 psPolynomial1DEval(const psPolynomial1D* poly, psF64 x) 1235 { 1236 PS_ASSERT_POLY_NON_NULL(poly, NAN); 1237 1238 if (poly->type == PS_POLYNOMIAL_ORD) { 1239 return(ordPolynomial1DEval(x, poly)); 1240 } else if (poly->type == PS_POLYNOMIAL_CHEB) { 1241 return(chebPolynomial1DEval(x, poly)); 1242 1242 } else { 1243 1243 psError(PS_ERR_BAD_PARAMETER_TYPE, true, 1244 1244 PS_ERRORTEXT_psFunctions_INVALID_POLYNOMIAL_TYPE, 1245 myPoly->type);1245 poly->type); 1246 1246 } 1247 1247 return(NAN); 1248 1248 } 1249 1249 1250 psVector *psPolynomial1DEvalVector(const psPolynomial1D * myPoly,1250 psVector *psPolynomial1DEvalVector(const psPolynomial1D *poly, 1251 1251 const psVector *x) 1252 1252 { 1253 PS_ASSERT_POLY_NON_NULL( myPoly, NULL);1253 PS_ASSERT_POLY_NON_NULL(poly, NULL); 1254 1254 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 1255 1255 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F32, NULL); … … 1259 1259 tmp = psVectorAlloc(x->n, PS_TYPE_F32); 1260 1260 for (psS32 i=0;i<x->n;i++) { 1261 tmp->data.F32[i] = psPolynomial1DEval( myPoly, x->data.F32[i]);1261 tmp->data.F32[i] = psPolynomial1DEval(poly, x->data.F32[i]); 1262 1262 } 1263 1263 … … 1265 1265 } 1266 1266 1267 psF 32 psPolynomial2DEval(const psPolynomial2D* myPoly, psF32 x, psF32y)1268 { 1269 PS_ASSERT_POLY_NON_NULL( myPoly, NAN);1270 1271 if ( myPoly->type == PS_POLYNOMIAL_ORD) {1272 return(ordPolynomial2DEval(x, y, myPoly));1273 } else if ( myPoly->type == PS_POLYNOMIAL_CHEB) {1274 return(chebPolynomial2DEval(x, y, myPoly));1267 psF64 psPolynomial2DEval(const psPolynomial2D* poly, psF64 x, psF64 y) 1268 { 1269 PS_ASSERT_POLY_NON_NULL(poly, NAN); 1270 1271 if (poly->type == PS_POLYNOMIAL_ORD) { 1272 return(ordPolynomial2DEval(x, y, poly)); 1273 } else if (poly->type == PS_POLYNOMIAL_CHEB) { 1274 return(chebPolynomial2DEval(x, y, poly)); 1275 1275 } else { 1276 1276 psError(PS_ERR_BAD_PARAMETER_TYPE, true, 1277 1277 PS_ERRORTEXT_psFunctions_INVALID_POLYNOMIAL_TYPE, 1278 myPoly->type);1278 poly->type); 1279 1279 } 1280 1280 return(NAN); 1281 1281 } 1282 1282 1283 psVector *psPolynomial2DEvalVector(const psPolynomial2D * myPoly,1283 psVector *psPolynomial2DEvalVector(const psPolynomial2D *poly, 1284 1284 const psVector *x, 1285 1285 const psVector *y) 1286 1286 1287 1287 { 1288 PS_ASSERT_POLY_NON_NULL( myPoly, NULL);1288 PS_ASSERT_POLY_NON_NULL(poly, NULL); 1289 1289 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 1290 1290 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F32, NULL); … … 1305 1305 // Evaluate the polynomial at the specified points 1306 1306 for (psS32 i=0; i<vecLen; i++) { 1307 tmp->data.F32[i] = psPolynomial2DEval( myPoly,x->data.F32[i],y->data.F32[i]);1307 tmp->data.F32[i] = psPolynomial2DEval(poly,x->data.F32[i],y->data.F32[i]); 1308 1308 } 1309 1309 … … 1312 1312 } 1313 1313 1314 psF 32 psPolynomial3DEval(const psPolynomial3D* myPoly, psF32 x, psF32 y, psF32z)1315 { 1316 PS_ASSERT_POLY_NON_NULL( myPoly, NAN);1317 1318 if ( myPoly->type == PS_POLYNOMIAL_ORD) {1319 return(ordPolynomial3DEval(x, y, z, myPoly));1320 } else if ( myPoly->type == PS_POLYNOMIAL_CHEB) {1321 return(chebPolynomial3DEval(x, y, z, myPoly));1314 psF64 psPolynomial3DEval(const psPolynomial3D* poly, psF64 x, psF64 y, psF64 z) 1315 { 1316 PS_ASSERT_POLY_NON_NULL(poly, NAN); 1317 1318 if (poly->type == PS_POLYNOMIAL_ORD) { 1319 return(ordPolynomial3DEval(x, y, z, poly)); 1320 } else if (poly->type == PS_POLYNOMIAL_CHEB) { 1321 return(chebPolynomial3DEval(x, y, z, poly)); 1322 1322 } else { 1323 1323 psError(PS_ERR_BAD_PARAMETER_TYPE, true, 1324 1324 PS_ERRORTEXT_psFunctions_INVALID_POLYNOMIAL_TYPE, 1325 myPoly->type);1325 poly->type); 1326 1326 } 1327 1327 return(NAN); 1328 1328 } 1329 1329 1330 psVector *psPolynomial3DEvalVector(const psPolynomial3D * myPoly,1330 psVector *psPolynomial3DEvalVector(const psPolynomial3D *poly, 1331 1331 const psVector *x, 1332 1332 const psVector *y, … … 1334 1334 1335 1335 { 1336 PS_ASSERT_POLY_NON_NULL( myPoly, NULL);1336 PS_ASSERT_POLY_NON_NULL(poly, NULL); 1337 1337 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 1338 1338 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F32, NULL); … … 1358 1358 // Evaluate polynomial 1359 1359 for (psS32 i = 0; i < vecLen; i++) { 1360 tmp->data.F32[i] = psPolynomial3DEval( myPoly,1360 tmp->data.F32[i] = psPolynomial3DEval(poly, 1361 1361 x->data.F32[i], 1362 1362 y->data.F32[i], … … 1368 1368 } 1369 1369 1370 psF 32 psPolynomial4DEval(const psPolynomial4D* myPoly, psF32 w, psF32 x, psF32 y, psF32 z)1371 { 1372 PS_ASSERT_POLY_NON_NULL( myPoly, NAN);1373 1374 if ( myPoly->type == PS_POLYNOMIAL_ORD) {1375 return(ordPolynomial4DEval( w,x,y,z, myPoly));1376 } else if ( myPoly->type == PS_POLYNOMIAL_CHEB) {1377 return(chebPolynomial4DEval( w,x,y,z, myPoly));1370 psF64 psPolynomial4DEval(const psPolynomial4D* poly, psF64 x, psF64 y, psF64 z, psF64 t) 1371 { 1372 PS_ASSERT_POLY_NON_NULL(poly, NAN); 1373 1374 if (poly->type == PS_POLYNOMIAL_ORD) { 1375 return(ordPolynomial4DEval(x,y,z,t, poly)); 1376 } else if (poly->type == PS_POLYNOMIAL_CHEB) { 1377 return(chebPolynomial4DEval(x,y,z,t, poly)); 1378 1378 } else { 1379 1379 psError(PS_ERR_BAD_PARAMETER_TYPE, true, 1380 1380 PS_ERRORTEXT_psFunctions_INVALID_POLYNOMIAL_TYPE, 1381 myPoly->type);1381 poly->type); 1382 1382 } 1383 1383 return(NAN); 1384 1384 } 1385 1385 1386 psVector *psPolynomial4DEvalVector(const psPolynomial4D *myPoly, 1387 const psVector *w, 1386 psVector *psPolynomial4DEvalVector(const psPolynomial4D *poly, 1388 1387 const psVector *x, 1389 1388 const psVector *y, 1390 const psVector *z) 1391 { 1392 PS_ASSERT_POLY_NON_NULL(myPoly, NULL); 1393 PS_ASSERT_VECTOR_NON_NULL(w, NULL); 1394 PS_ASSERT_VECTOR_TYPE(w, PS_TYPE_F32, NULL); 1389 const psVector *z, 1390 const psVector *t) 1391 { 1392 PS_ASSERT_POLY_NON_NULL(poly, NULL); 1395 1393 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 1396 1394 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F32, NULL); … … 1399 1397 PS_ASSERT_VECTOR_NON_NULL(z, NULL); 1400 1398 PS_ASSERT_VECTOR_TYPE(z, PS_TYPE_F32, NULL); 1399 PS_ASSERT_VECTOR_NON_NULL(t, NULL); 1400 PS_ASSERT_VECTOR_TYPE(t, PS_TYPE_F32, NULL); 1401 1401 1402 1402 psVector *tmp; 1403 psS32 vecLen= w->n;1403 psS32 vecLen=x->n; 1404 1404 1405 1405 // Determine output vector size from min of input vectors 1406 if (z->n < vecLen) { 1407 vecLen = z->n; 1408 } 1406 1409 if (y->n < vecLen) { 1407 1410 vecLen = y->n; 1408 1411 } 1409 if (x->n < vecLen) { 1410 vecLen = x->n; 1411 } 1412 if (z->n < vecLen) { 1413 vecLen = z->n; 1412 if (t->n < vecLen) { 1413 vecLen = t->n; 1414 1414 } 1415 1415 … … 1419 1419 // Evaluate polynomial 1420 1420 for (psS32 i = 0; i < vecLen; i++) { 1421 tmp->data.F32[i] = psPolynomial4DEval(myPoly, 1422 w->data.F32[i], 1421 tmp->data.F32[i] = psPolynomial4DEval(poly, 1423 1422 x->data.F32[i], 1424 1423 y->data.F32[i], 1425 z->data.F32[i]); 1424 z->data.F32[i], 1425 t->data.F32[i]); 1426 1426 } 1427 1427
Note:
See TracChangeset
for help on using the changeset viewer.
