Changeset 1723
- Timestamp:
- Sep 7, 2004, 8:23:16 PM (22 years ago)
- Location:
- trunk/psLib/src
- Files:
-
- 3 edited
-
dataManip/psFunctions.c (modified) (28 diffs)
-
math/psPolynomial.c (modified) (28 diffs)
-
math/psSpline.c (modified) (28 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/dataManip/psFunctions.c
r1719 r1723 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.2 5$ $Name: not supported by cvs2svn $10 * @date $Date: 2004-09-08 06: 01:21$9 * @version $Revision: 1.26 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2004-09-08 06:23:16 $ 11 11 * 12 12 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 36 36 /* DEFINE STATEMENTS */ 37 37 /*****************************************************************************/ 38 38 /* 39 * The following macros take the vector IN as input. If IN is not of 40 * the correct type, then a new vector OUT is created of the correct 41 * type, and the elements of IN and converted to OUT. 42 * 43 * If vector IN is the correct type, then OUT is simply set to IN. 44 */ 39 45 #define PS_CONVERT_VECTOR_F32(IN, OUT) \ 40 46 if (IN->type.type != PS_TYPE_F32) { \ … … 76 82 77 83 78 79 84 /*****************************************************************************/ 80 85 /* TYPE DEFINITIONS */ … … 141 146 Gaussian distribution as well. 142 147 143 NOTE: There is no way to seed the random generator.148 NOTE: XXX: There is no way to seed the random generator. 144 149 *****************************************************************************/ 145 150 psVector* psGaussianDev(float mean, float sigma, int Npts) … … 394 399 Polynomial coefficients will be accessed in [w][x][y][z] fashion. 395 400 396 XXX: Determine, from IfA, whether o tnot the "mask[]" terms should be used401 XXX: Determine, from IfA, whether or not the "mask[]" terms should be used 397 402 in polynomial evaluation. If so, then all of the following polynomial 398 403 evaluation functions must be modified to do so. … … 400 405 XXX: Should the "coeffErr[]" should be used as well? 401 406 *****************************************************************************/ 402 float p_psOr gPolynomial1DEval(float x, const psPolynomial1D* myPoly)407 float p_psOrdPolynomial1DEval(float x, const psPolynomial1D* myPoly) 403 408 { 404 409 int loop_x = 0; … … 456 461 { 457 462 if (myPoly->type == PS_POLYNOMIAL_ORD) { 458 return(p_psOr gPolynomial1DEval(x, myPoly));463 return(p_psOrdPolynomial1DEval(x, myPoly)); 459 464 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 460 465 return(p_psChebPolynomial1DEval(x, myPoly)); … … 486 491 487 492 488 float p_psOr gPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly)493 float p_psOrdPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly) 489 494 { 490 495 int loop_x = 0; … … 508 513 float p_psChebPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly) 509 514 { 515 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 516 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 510 517 return(0.0); 511 518 } … … 514 521 { 515 522 if (myPoly->type == PS_POLYNOMIAL_ORD) { 516 return(p_psOr gPolynomial2DEval(x, y, myPoly));523 return(p_psOrdPolynomial2DEval(x, y, myPoly)); 517 524 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 518 525 return(p_psChebPolynomial2DEval(x, y, myPoly)); … … 559 566 560 567 561 float p_psOr gPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly)568 float p_psOrdPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly) 562 569 { 563 570 int loop_x = 0; … … 587 594 float p_psChebPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly) 588 595 { 596 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 597 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 589 598 return(0.0); 590 599 } … … 593 602 { 594 603 if (myPoly->type == PS_POLYNOMIAL_ORD) { 595 return(p_psOr gPolynomial3DEval(x, y, z, myPoly));604 return(p_psOrdPolynomial3DEval(x, y, z, myPoly)); 596 605 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 597 606 return(p_psChebPolynomial3DEval(x, y, z, myPoly)); … … 650 659 651 660 652 float p_psOr gPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly)661 float p_psOrdPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly) 653 662 { 654 663 int loop_w = 0; … … 684 693 float p_psChebPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly) 685 694 { 695 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 696 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 686 697 return(0.0); 687 698 } … … 690 701 { 691 702 if (myPoly->type == PS_POLYNOMIAL_ORD) { 692 return(p_psOr gPolynomial4DEval(w,x,y,z, myPoly));703 return(p_psOrdPolynomial4DEval(w,x,y,z, myPoly)); 693 704 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 694 705 return(p_psChebPolynomial4DEval(w,x,y,z, myPoly)); … … 977 988 Polynomial coefficients will be accessed in [w][x][y][z] fashion. 978 989 *****************************************************************************/ 979 double p_psDOr gPolynomial1DEval(double x, const psDPolynomial1D* myPoly)990 double p_psDOrdPolynomial1DEval(double x, const psDPolynomial1D* myPoly) 980 991 { 981 992 int loop_x = 0; … … 996 1007 } 997 1008 1009 // XXX: You can do this without having to psAlloc() vector d. 998 1010 double p_psDChebPolynomial1DEval(double x, const psDPolynomial1D* myPoly) 999 1011 { 1000 return(0.0); 1012 psVector *d; 1013 int n; 1014 int i; 1015 double tmp; 1016 1017 n = myPoly->n; 1018 d = psVectorAlloc(n, PS_TYPE_F64); 1019 d->data.F64[n-1] = myPoly->coeff[n-1]; 1020 d->data.F64[n-2] = (2.0 * x * d->data.F64[n-1]) + myPoly->coeff[n-2]; 1021 for (i=n-3;i>=1;i--) { 1022 d->data.F64[i] = (2.0 * x * d->data.F64[i+1]) - 1023 (d->data.F64[i+2]) + 1024 (myPoly->coeff[i]); 1025 } 1026 1027 tmp = (x * d->data.F64[1]) - 1028 (d->data.F64[2]) + 1029 (0.5 * myPoly->coeff[0]); 1030 1031 psFree(d); 1032 return(tmp); 1001 1033 } 1002 1034 … … 1004 1036 { 1005 1037 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1006 return(p_psDOr gPolynomial1DEval(x, myPoly));1038 return(p_psDOrdPolynomial1DEval(x, myPoly)); 1007 1039 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1008 1040 return(p_psDChebPolynomial1DEval(x, myPoly)); … … 1035 1067 1036 1068 1037 double p_psDOr gPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly)1069 double p_psDOrdPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly) 1038 1070 { 1039 1071 int loop_x = 0; … … 1057 1089 double p_psDChebPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly) 1058 1090 { 1091 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 1092 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 1059 1093 return(0.0); 1060 1094 } … … 1063 1097 { 1064 1098 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1065 return(p_psDOr gPolynomial2DEval(x, y, myPoly));1099 return(p_psDOrdPolynomial2DEval(x, y, myPoly)); 1066 1100 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1067 1101 return(p_psDChebPolynomial2DEval(x, y, myPoly)); … … 1107 1141 1108 1142 1109 double p_psDOr gPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly)1143 double p_psDOrdPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly) 1110 1144 { 1111 1145 int loop_x = 0; … … 1135 1169 double p_psDChebPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly) 1136 1170 { 1171 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 1172 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 1137 1173 return(0.0); 1138 1174 } … … 1141 1177 { 1142 1178 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1143 return(p_psDOr gPolynomial3DEval(x, y, z, myPoly));1179 return(p_psDOrdPolynomial3DEval(x, y, z, myPoly)); 1144 1180 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1145 1181 return(p_psDChebPolynomial3DEval(x, y, z, myPoly)); … … 1200 1236 1201 1237 1202 double p_psDOr gPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly)1238 double p_psDOrdPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly) 1203 1239 { 1204 1240 int loop_w = 0; … … 1234 1270 double p_psDChebPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly) 1235 1271 { 1272 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 1273 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 1236 1274 return(0.0); 1237 1275 } … … 1240 1278 { 1241 1279 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1242 return(p_psDOr gPolynomial4DEval(w,x,y,z, myPoly));1280 return(p_psDOrdPolynomial4DEval(w,x,y,z, myPoly)); 1243 1281 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1244 1282 return(p_psDChebPolynomial4DEval(w,x,y,z, myPoly)); -
trunk/psLib/src/math/psPolynomial.c
r1719 r1723 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.2 5$ $Name: not supported by cvs2svn $10 * @date $Date: 2004-09-08 06: 01:21$9 * @version $Revision: 1.26 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2004-09-08 06:23:16 $ 11 11 * 12 12 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 36 36 /* DEFINE STATEMENTS */ 37 37 /*****************************************************************************/ 38 38 /* 39 * The following macros take the vector IN as input. If IN is not of 40 * the correct type, then a new vector OUT is created of the correct 41 * type, and the elements of IN and converted to OUT. 42 * 43 * If vector IN is the correct type, then OUT is simply set to IN. 44 */ 39 45 #define PS_CONVERT_VECTOR_F32(IN, OUT) \ 40 46 if (IN->type.type != PS_TYPE_F32) { \ … … 76 82 77 83 78 79 84 /*****************************************************************************/ 80 85 /* TYPE DEFINITIONS */ … … 141 146 Gaussian distribution as well. 142 147 143 NOTE: There is no way to seed the random generator.148 NOTE: XXX: There is no way to seed the random generator. 144 149 *****************************************************************************/ 145 150 psVector* psGaussianDev(float mean, float sigma, int Npts) … … 394 399 Polynomial coefficients will be accessed in [w][x][y][z] fashion. 395 400 396 XXX: Determine, from IfA, whether o tnot the "mask[]" terms should be used401 XXX: Determine, from IfA, whether or not the "mask[]" terms should be used 397 402 in polynomial evaluation. If so, then all of the following polynomial 398 403 evaluation functions must be modified to do so. … … 400 405 XXX: Should the "coeffErr[]" should be used as well? 401 406 *****************************************************************************/ 402 float p_psOr gPolynomial1DEval(float x, const psPolynomial1D* myPoly)407 float p_psOrdPolynomial1DEval(float x, const psPolynomial1D* myPoly) 403 408 { 404 409 int loop_x = 0; … … 456 461 { 457 462 if (myPoly->type == PS_POLYNOMIAL_ORD) { 458 return(p_psOr gPolynomial1DEval(x, myPoly));463 return(p_psOrdPolynomial1DEval(x, myPoly)); 459 464 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 460 465 return(p_psChebPolynomial1DEval(x, myPoly)); … … 486 491 487 492 488 float p_psOr gPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly)493 float p_psOrdPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly) 489 494 { 490 495 int loop_x = 0; … … 508 513 float p_psChebPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly) 509 514 { 515 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 516 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 510 517 return(0.0); 511 518 } … … 514 521 { 515 522 if (myPoly->type == PS_POLYNOMIAL_ORD) { 516 return(p_psOr gPolynomial2DEval(x, y, myPoly));523 return(p_psOrdPolynomial2DEval(x, y, myPoly)); 517 524 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 518 525 return(p_psChebPolynomial2DEval(x, y, myPoly)); … … 559 566 560 567 561 float p_psOr gPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly)568 float p_psOrdPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly) 562 569 { 563 570 int loop_x = 0; … … 587 594 float p_psChebPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly) 588 595 { 596 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 597 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 589 598 return(0.0); 590 599 } … … 593 602 { 594 603 if (myPoly->type == PS_POLYNOMIAL_ORD) { 595 return(p_psOr gPolynomial3DEval(x, y, z, myPoly));604 return(p_psOrdPolynomial3DEval(x, y, z, myPoly)); 596 605 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 597 606 return(p_psChebPolynomial3DEval(x, y, z, myPoly)); … … 650 659 651 660 652 float p_psOr gPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly)661 float p_psOrdPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly) 653 662 { 654 663 int loop_w = 0; … … 684 693 float p_psChebPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly) 685 694 { 695 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 696 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 686 697 return(0.0); 687 698 } … … 690 701 { 691 702 if (myPoly->type == PS_POLYNOMIAL_ORD) { 692 return(p_psOr gPolynomial4DEval(w,x,y,z, myPoly));703 return(p_psOrdPolynomial4DEval(w,x,y,z, myPoly)); 693 704 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 694 705 return(p_psChebPolynomial4DEval(w,x,y,z, myPoly)); … … 977 988 Polynomial coefficients will be accessed in [w][x][y][z] fashion. 978 989 *****************************************************************************/ 979 double p_psDOr gPolynomial1DEval(double x, const psDPolynomial1D* myPoly)990 double p_psDOrdPolynomial1DEval(double x, const psDPolynomial1D* myPoly) 980 991 { 981 992 int loop_x = 0; … … 996 1007 } 997 1008 1009 // XXX: You can do this without having to psAlloc() vector d. 998 1010 double p_psDChebPolynomial1DEval(double x, const psDPolynomial1D* myPoly) 999 1011 { 1000 return(0.0); 1012 psVector *d; 1013 int n; 1014 int i; 1015 double tmp; 1016 1017 n = myPoly->n; 1018 d = psVectorAlloc(n, PS_TYPE_F64); 1019 d->data.F64[n-1] = myPoly->coeff[n-1]; 1020 d->data.F64[n-2] = (2.0 * x * d->data.F64[n-1]) + myPoly->coeff[n-2]; 1021 for (i=n-3;i>=1;i--) { 1022 d->data.F64[i] = (2.0 * x * d->data.F64[i+1]) - 1023 (d->data.F64[i+2]) + 1024 (myPoly->coeff[i]); 1025 } 1026 1027 tmp = (x * d->data.F64[1]) - 1028 (d->data.F64[2]) + 1029 (0.5 * myPoly->coeff[0]); 1030 1031 psFree(d); 1032 return(tmp); 1001 1033 } 1002 1034 … … 1004 1036 { 1005 1037 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1006 return(p_psDOr gPolynomial1DEval(x, myPoly));1038 return(p_psDOrdPolynomial1DEval(x, myPoly)); 1007 1039 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1008 1040 return(p_psDChebPolynomial1DEval(x, myPoly)); … … 1035 1067 1036 1068 1037 double p_psDOr gPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly)1069 double p_psDOrdPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly) 1038 1070 { 1039 1071 int loop_x = 0; … … 1057 1089 double p_psDChebPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly) 1058 1090 { 1091 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 1092 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 1059 1093 return(0.0); 1060 1094 } … … 1063 1097 { 1064 1098 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1065 return(p_psDOr gPolynomial2DEval(x, y, myPoly));1099 return(p_psDOrdPolynomial2DEval(x, y, myPoly)); 1066 1100 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1067 1101 return(p_psDChebPolynomial2DEval(x, y, myPoly)); … … 1107 1141 1108 1142 1109 double p_psDOr gPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly)1143 double p_psDOrdPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly) 1110 1144 { 1111 1145 int loop_x = 0; … … 1135 1169 double p_psDChebPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly) 1136 1170 { 1171 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 1172 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 1137 1173 return(0.0); 1138 1174 } … … 1141 1177 { 1142 1178 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1143 return(p_psDOr gPolynomial3DEval(x, y, z, myPoly));1179 return(p_psDOrdPolynomial3DEval(x, y, z, myPoly)); 1144 1180 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1145 1181 return(p_psDChebPolynomial3DEval(x, y, z, myPoly)); … … 1200 1236 1201 1237 1202 double p_psDOr gPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly)1238 double p_psDOrdPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly) 1203 1239 { 1204 1240 int loop_w = 0; … … 1234 1270 double p_psDChebPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly) 1235 1271 { 1272 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 1273 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 1236 1274 return(0.0); 1237 1275 } … … 1240 1278 { 1241 1279 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1242 return(p_psDOr gPolynomial4DEval(w,x,y,z, myPoly));1280 return(p_psDOrdPolynomial4DEval(w,x,y,z, myPoly)); 1243 1281 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1244 1282 return(p_psDChebPolynomial4DEval(w,x,y,z, myPoly)); -
trunk/psLib/src/math/psSpline.c
r1719 r1723 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.2 5$ $Name: not supported by cvs2svn $10 * @date $Date: 2004-09-08 06: 01:21$9 * @version $Revision: 1.26 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2004-09-08 06:23:16 $ 11 11 * 12 12 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 36 36 /* DEFINE STATEMENTS */ 37 37 /*****************************************************************************/ 38 38 /* 39 * The following macros take the vector IN as input. If IN is not of 40 * the correct type, then a new vector OUT is created of the correct 41 * type, and the elements of IN and converted to OUT. 42 * 43 * If vector IN is the correct type, then OUT is simply set to IN. 44 */ 39 45 #define PS_CONVERT_VECTOR_F32(IN, OUT) \ 40 46 if (IN->type.type != PS_TYPE_F32) { \ … … 76 82 77 83 78 79 84 /*****************************************************************************/ 80 85 /* TYPE DEFINITIONS */ … … 141 146 Gaussian distribution as well. 142 147 143 NOTE: There is no way to seed the random generator.148 NOTE: XXX: There is no way to seed the random generator. 144 149 *****************************************************************************/ 145 150 psVector* psGaussianDev(float mean, float sigma, int Npts) … … 394 399 Polynomial coefficients will be accessed in [w][x][y][z] fashion. 395 400 396 XXX: Determine, from IfA, whether o tnot the "mask[]" terms should be used401 XXX: Determine, from IfA, whether or not the "mask[]" terms should be used 397 402 in polynomial evaluation. If so, then all of the following polynomial 398 403 evaluation functions must be modified to do so. … … 400 405 XXX: Should the "coeffErr[]" should be used as well? 401 406 *****************************************************************************/ 402 float p_psOr gPolynomial1DEval(float x, const psPolynomial1D* myPoly)407 float p_psOrdPolynomial1DEval(float x, const psPolynomial1D* myPoly) 403 408 { 404 409 int loop_x = 0; … … 456 461 { 457 462 if (myPoly->type == PS_POLYNOMIAL_ORD) { 458 return(p_psOr gPolynomial1DEval(x, myPoly));463 return(p_psOrdPolynomial1DEval(x, myPoly)); 459 464 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 460 465 return(p_psChebPolynomial1DEval(x, myPoly)); … … 486 491 487 492 488 float p_psOr gPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly)493 float p_psOrdPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly) 489 494 { 490 495 int loop_x = 0; … … 508 513 float p_psChebPolynomial2DEval(float x, float y, const psPolynomial2D* myPoly) 509 514 { 515 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 516 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 510 517 return(0.0); 511 518 } … … 514 521 { 515 522 if (myPoly->type == PS_POLYNOMIAL_ORD) { 516 return(p_psOr gPolynomial2DEval(x, y, myPoly));523 return(p_psOrdPolynomial2DEval(x, y, myPoly)); 517 524 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 518 525 return(p_psChebPolynomial2DEval(x, y, myPoly)); … … 559 566 560 567 561 float p_psOr gPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly)568 float p_psOrdPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly) 562 569 { 563 570 int loop_x = 0; … … 587 594 float p_psChebPolynomial3DEval(float x, float y, float z, const psPolynomial3D* myPoly) 588 595 { 596 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 597 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 589 598 return(0.0); 590 599 } … … 593 602 { 594 603 if (myPoly->type == PS_POLYNOMIAL_ORD) { 595 return(p_psOr gPolynomial3DEval(x, y, z, myPoly));604 return(p_psOrdPolynomial3DEval(x, y, z, myPoly)); 596 605 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 597 606 return(p_psChebPolynomial3DEval(x, y, z, myPoly)); … … 650 659 651 660 652 float p_psOr gPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly)661 float p_psOrdPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly) 653 662 { 654 663 int loop_w = 0; … … 684 693 float p_psChebPolynomial4DEval(float w, float x, float y, float z, const psPolynomial4D* myPoly) 685 694 { 695 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 696 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 686 697 return(0.0); 687 698 } … … 690 701 { 691 702 if (myPoly->type == PS_POLYNOMIAL_ORD) { 692 return(p_psOr gPolynomial4DEval(w,x,y,z, myPoly));703 return(p_psOrdPolynomial4DEval(w,x,y,z, myPoly)); 693 704 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 694 705 return(p_psChebPolynomial4DEval(w,x,y,z, myPoly)); … … 977 988 Polynomial coefficients will be accessed in [w][x][y][z] fashion. 978 989 *****************************************************************************/ 979 double p_psDOr gPolynomial1DEval(double x, const psDPolynomial1D* myPoly)990 double p_psDOrdPolynomial1DEval(double x, const psDPolynomial1D* myPoly) 980 991 { 981 992 int loop_x = 0; … … 996 1007 } 997 1008 1009 // XXX: You can do this without having to psAlloc() vector d. 998 1010 double p_psDChebPolynomial1DEval(double x, const psDPolynomial1D* myPoly) 999 1011 { 1000 return(0.0); 1012 psVector *d; 1013 int n; 1014 int i; 1015 double tmp; 1016 1017 n = myPoly->n; 1018 d = psVectorAlloc(n, PS_TYPE_F64); 1019 d->data.F64[n-1] = myPoly->coeff[n-1]; 1020 d->data.F64[n-2] = (2.0 * x * d->data.F64[n-1]) + myPoly->coeff[n-2]; 1021 for (i=n-3;i>=1;i--) { 1022 d->data.F64[i] = (2.0 * x * d->data.F64[i+1]) - 1023 (d->data.F64[i+2]) + 1024 (myPoly->coeff[i]); 1025 } 1026 1027 tmp = (x * d->data.F64[1]) - 1028 (d->data.F64[2]) + 1029 (0.5 * myPoly->coeff[0]); 1030 1031 psFree(d); 1032 return(tmp); 1001 1033 } 1002 1034 … … 1004 1036 { 1005 1037 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1006 return(p_psDOr gPolynomial1DEval(x, myPoly));1038 return(p_psDOrdPolynomial1DEval(x, myPoly)); 1007 1039 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1008 1040 return(p_psDChebPolynomial1DEval(x, myPoly)); … … 1035 1067 1036 1068 1037 double p_psDOr gPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly)1069 double p_psDOrdPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly) 1038 1070 { 1039 1071 int loop_x = 0; … … 1057 1089 double p_psDChebPolynomial2DEval(double x, double y, const psDPolynomial2D* myPoly) 1058 1090 { 1091 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 1092 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 1059 1093 return(0.0); 1060 1094 } … … 1063 1097 { 1064 1098 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1065 return(p_psDOr gPolynomial2DEval(x, y, myPoly));1099 return(p_psDOrdPolynomial2DEval(x, y, myPoly)); 1066 1100 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1067 1101 return(p_psDChebPolynomial2DEval(x, y, myPoly)); … … 1107 1141 1108 1142 1109 double p_psDOr gPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly)1143 double p_psDOrdPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly) 1110 1144 { 1111 1145 int loop_x = 0; … … 1135 1169 double p_psDChebPolynomial3DEval(double x, double y, double z, const psDPolynomial3D* myPoly) 1136 1170 { 1171 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 1172 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 1137 1173 return(0.0); 1138 1174 } … … 1141 1177 { 1142 1178 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1143 return(p_psDOr gPolynomial3DEval(x, y, z, myPoly));1179 return(p_psDOrdPolynomial3DEval(x, y, z, myPoly)); 1144 1180 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1145 1181 return(p_psDChebPolynomial3DEval(x, y, z, myPoly)); … … 1200 1236 1201 1237 1202 double p_psDOr gPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly)1238 double p_psDOrdPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly) 1203 1239 { 1204 1240 int loop_w = 0; … … 1234 1270 double p_psDChebPolynomial4DEval(double w, double x, double y, double z, const psDPolynomial4D* myPoly) 1235 1271 { 1272 // XXX: Waiting for Crenshaw extension to multi-dimensional Chebyshevs. 1273 psLogMsg(__func__, PS_LOG_WARN, "This function has not been coded."); 1236 1274 return(0.0); 1237 1275 } … … 1240 1278 { 1241 1279 if (myPoly->type == PS_POLYNOMIAL_ORD) { 1242 return(p_psDOr gPolynomial4DEval(w,x,y,z, myPoly));1280 return(p_psDOrdPolynomial4DEval(w,x,y,z, myPoly)); 1243 1281 } else if (myPoly->type == PS_POLYNOMIAL_CHEB) { 1244 1282 return(p_psDChebPolynomial4DEval(w,x,y,z, myPoly));
Note:
See TracChangeset
for help on using the changeset viewer.
