Changeset 6101 for trunk/psLib/src/math/psPolynomial.c
- Timestamp:
- Jan 20, 2006, 4:43:32 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psPolynomial.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psPolynomial.c
r5813 r6101 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.13 4$ $Name: not supported by cvs2svn $10 * @date $Date: 200 5-12-19 23:58:47$9 * @version $Revision: 1.135 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-01-21 02:43:31 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 965 965 } 966 966 967 // XXX: The output of this routine is always psF64 while 1D and 2D are 968 // dependent on the input vectors. 967 969 psVector *psPolynomial3DEvalVector(const psPolynomial3D *poly, 968 970 const psVector *x, … … 973 975 PS_ASSERT_POLY_NON_NULL(poly, NULL); 974 976 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 975 PS_ASSERT_VECTOR_TYPE (x, PS_TYPE_F64, NULL);977 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(x, NULL); 976 978 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 977 PS_ASSERT_VECTOR_TYPE (y, PS_TYPE_F64, NULL);979 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(y, NULL); 978 980 PS_ASSERT_VECTOR_NON_NULL(z, NULL); 979 PS_ASSERT_VECTOR_TYPE (z, PS_TYPE_F64, NULL);981 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(z, NULL); 980 982 981 983 psVector *tmp; … … 994 996 995 997 // Evaluate polynomial 996 for (unsigned int i = 0; i < vecLen; i++) { 997 tmp->data.F64[i] = psPolynomial3DEval(poly, 998 x->data.F64[i], 999 y->data.F64[i], 1000 z->data.F64[i]); 1001 } 998 // XXX: Consult with IfA: is this how they want to handle multiple data types? 999 if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F32)) { 1000 for (unsigned int i = 0; i < vecLen; i++) { 1001 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F32[i]); 1002 } 1003 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F64)) { 1004 for (unsigned int i = 0; i < vecLen; i++) { 1005 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F64[i]); 1006 } 1007 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F32)) { 1008 for (unsigned int i = 0; i < vecLen; i++) { 1009 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F32[i]); 1010 } 1011 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F64)) { 1012 for (unsigned int i = 0; i < vecLen; i++) { 1013 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F64[i]); 1014 } 1015 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F32)) { 1016 for (unsigned int i = 0; i < vecLen; i++) { 1017 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F32[i]); 1018 } 1019 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F64)) { 1020 for (unsigned int i = 0; i < vecLen; i++) { 1021 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F32[i]); 1022 } 1023 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F32)) { 1024 for (unsigned int i = 0; i < vecLen; i++) { 1025 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F32[i]); 1026 } 1027 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F64)) { 1028 for (unsigned int i = 0; i < vecLen; i++) { 1029 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F32[i]); 1030 } 1031 } 1032 1002 1033 1003 1034 // Return output vector … … 1033 1064 PS_ASSERT_POLY_NON_NULL(poly, NULL); 1034 1065 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 1035 PS_ASSERT_VECTOR_TYPE (x, PS_TYPE_F64, NULL);1066 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(x, NULL); 1036 1067 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 1037 PS_ASSERT_VECTOR_TYPE (y, PS_TYPE_F64, NULL);1068 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(y, NULL); 1038 1069 PS_ASSERT_VECTOR_NON_NULL(z, NULL); 1039 PS_ASSERT_VECTOR_TYPE (z, PS_TYPE_F64, NULL);1070 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(z, NULL); 1040 1071 PS_ASSERT_VECTOR_NON_NULL(t, NULL); 1041 PS_ASSERT_VECTOR_TYPE (t, PS_TYPE_F64, NULL);1072 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(t, NULL); 1042 1073 1043 1074 psVector *tmp; … … 1057 1088 // Allocoutput vector 1058 1089 tmp = psVectorAlloc(vecLen, PS_TYPE_F64); 1090 1091 // Evaluate polynomial 1092 // XXX: Consult with IfA: is this how they want to handle multiple data types? 1093 if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F32) || (t->type.type == PS_TYPE_F32)) { 1094 for (unsigned int i = 0; i < vecLen; i++) { 1095 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F32[i], t->data.F32[i]); 1096 } 1097 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F32) || (t->type.type == PS_TYPE_F64)) { 1098 for (unsigned int i = 0; i < vecLen; i++) { 1099 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F32[i], t->data.F64[i]); 1100 } 1101 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F64) || (t->type.type == PS_TYPE_F32)) { 1102 for (unsigned int i = 0; i < vecLen; i++) { 1103 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F64[i], t->data.F32[i]); 1104 } 1105 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F64) || (t->type.type == PS_TYPE_F64)) { 1106 for (unsigned int i = 0; i < vecLen; i++) { 1107 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F64[i], t->data.F64[i]); 1108 } 1109 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F32) || (t->type.type == PS_TYPE_F32)) { 1110 for (unsigned int i = 0; i < vecLen; i++) { 1111 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F32[i], t->data.F32[i]); 1112 } 1113 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F32) || (t->type.type == PS_TYPE_F64)) { 1114 for (unsigned int i = 0; i < vecLen; i++) { 1115 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F32[i], t->data.F64[i]); 1116 } 1117 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F64) || (t->type.type == PS_TYPE_F32)) { 1118 for (unsigned int i = 0; i < vecLen; i++) { 1119 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F64[i], t->data.F32[i]); 1120 } 1121 } else if ((x->type.type == PS_TYPE_F32) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F64) || (t->type.type == PS_TYPE_F64)) { 1122 for (unsigned int i = 0; i < vecLen; i++) { 1123 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F64[i], t->data.F64[i]); 1124 } 1125 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F32) || (t->type.type == PS_TYPE_F32)) { 1126 for (unsigned int i = 0; i < vecLen; i++) { 1127 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F32[i], t->data.F32[i]); 1128 } 1129 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F32) || (t->type.type == PS_TYPE_F64)) { 1130 for (unsigned int i = 0; i < vecLen; i++) { 1131 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F32[i], t->data.F64[i]); 1132 } 1133 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F64) || (t->type.type == PS_TYPE_F32)) { 1134 for (unsigned int i = 0; i < vecLen; i++) { 1135 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F64[i], t->data.F32[i]); 1136 } 1137 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F32) || (z->type.type == PS_TYPE_F64) || (t->type.type == PS_TYPE_F64)) { 1138 for (unsigned int i = 0; i < vecLen; i++) { 1139 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F64[i], t->data.F64[i]); 1140 } 1141 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F32) || (t->type.type == PS_TYPE_F32)) { 1142 for (unsigned int i = 0; i < vecLen; i++) { 1143 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F32[i], t->data.F32[i]); 1144 } 1145 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F32) || (t->type.type == PS_TYPE_F64)) { 1146 for (unsigned int i = 0; i < vecLen; i++) { 1147 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F32[i], t->data.F64[i]); 1148 } 1149 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F64) || (t->type.type == PS_TYPE_F32)) { 1150 for (unsigned int i = 0; i < vecLen; i++) { 1151 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F64[i], t->data.F32[i]); 1152 } 1153 } else if ((x->type.type == PS_TYPE_F64) || (y->type.type == PS_TYPE_F64) || (z->type.type == PS_TYPE_F64) || (t->type.type == PS_TYPE_F64)) { 1154 for (unsigned int i = 0; i < vecLen; i++) { 1155 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F64[i], t->data.F64[i]); 1156 } 1157 } 1158 1059 1159 1060 1160 // Evaluate polynomial
Note:
See TracChangeset
for help on using the changeset viewer.
