Changeset 4581
- Timestamp:
- Jul 19, 2005, 3:21:13 PM (21 years ago)
- Location:
- trunk/psLib
- Files:
-
- 19 edited
-
src/astro/psCoord.c (modified) (14 diffs)
-
src/astro/psCoord.h (modified) (3 diffs)
-
src/math/psConstants.h (modified) (2 diffs)
-
src/math/psFunctions.c (modified) (30 diffs)
-
src/math/psFunctions.h (modified) (6 diffs)
-
test/astro/tst_psCoord.c (modified) (3 diffs)
-
test/astronomy/tst_psAstrometry01.c (modified) (3 diffs)
-
test/db/verified/tst_psDB.stderr (modified) (1 diff)
-
test/imageops/verified/tst_psImageStats.stderr (modified) (1 diff)
-
test/math/tst_psFunc00.c (modified) (7 diffs)
-
test/math/tst_psFunc08.c (modified) (10 diffs)
-
test/math/tst_psFunc09.c (modified) (25 diffs)
-
test/math/tst_psFunc10.c (modified) (27 diffs)
-
test/math/tst_psFunc11.c (modified) (29 diffs)
-
test/math/verified/tst_psFunc00.stderr (modified) (1 diff)
-
test/math/verified/tst_psFunc08.stderr (modified) (2 diffs)
-
test/math/verified/tst_psFunc09.stderr (modified) (2 diffs)
-
test/math/verified/tst_psFunc10.stderr (modified) (2 diffs)
-
test/math/verified/tst_psFunc11.stderr (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/astro/psCoord.c
r4540 r4581 10 10 * @author GLG, MHPCC 11 11 * 12 * @version $Revision: 1. 79$ $Name: not supported by cvs2svn $13 * @date $Date: 2005-07- 12 19:12:00$12 * @version $Revision: 1.80 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2005-07-20 01:21:13 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 226 226 227 227 psPlaneTransform *pt = psAlloc(sizeof(psPlaneTransform)); 228 pt->x = ps DPolynomial2DAlloc(n1, n2, PS_POLYNOMIAL_ORD);229 pt->y = ps DPolynomial2DAlloc(n1, n2, PS_POLYNOMIAL_ORD);228 pt->x = psPolynomial2DAlloc(n1, n2, PS_POLYNOMIAL_ORD); 229 pt->y = psPolynomial2DAlloc(n1, n2, PS_POLYNOMIAL_ORD); 230 230 231 231 psMemSetDeallocator(pt, (psFreeFunc) planeTransformFree); … … 246 246 } 247 247 248 out->x = ps DPolynomial2DEval(248 out->x = psPolynomial2DEval( 249 249 transform->x, 250 250 coords->x, … … 252 252 ); 253 253 254 out->y = ps DPolynomial2DEval(254 out->y = psPolynomial2DEval( 255 255 transform->y, 256 256 coords->x, … … 275 275 276 276 psPlaneDistort *pt = psAlloc(sizeof(psPlaneDistort)); 277 pt->x = ps DPolynomial4DAlloc(n1, n2, n3, n4, PS_POLYNOMIAL_ORD);278 pt->y = ps DPolynomial4DAlloc(n1, n2, n3, n4, PS_POLYNOMIAL_ORD);277 pt->x = psPolynomial4DAlloc(n1, n2, n3, n4, PS_POLYNOMIAL_ORD); 278 pt->y = psPolynomial4DAlloc(n1, n2, n3, n4, PS_POLYNOMIAL_ORD); 279 279 280 280 psMemSetDeallocator(pt, (psFreeFunc) planeDistortFree); … … 300 300 out = (psPlane* ) psAlloc(sizeof(psPlane)); 301 301 } 302 out->x = ps DPolynomial4DEval(302 out->x = psPolynomial4DEval( 303 303 distort->x, 304 304 coords->x, … … 307 307 color 308 308 ); 309 out->y = ps DPolynomial4DEval(309 out->y = psPolynomial4DEval( 310 310 distort->y, 311 311 coords->x, … … 854 854 *****************************************************************************/ 855 855 856 static ps DPolynomial2D *multiplyDPoly2D(psDPolynomial2D *trans1,857 psDPolynomial2D *trans2)856 static psPolynomial2D *multiplyDPoly2D(psPolynomial2D *trans1, 857 psPolynomial2D *trans2) 858 858 { 859 859 //TRACE: printf("multiplyDPoly2D(%d %d: %d %d)\n", trans1->nX, trans1->nY, trans2->nX, trans2->nY); … … 861 861 psS32 orderY = (trans1->nY + trans2->nY) - 1; 862 862 863 ps DPolynomial2D *out = psDPolynomial2DAlloc(orderX, orderY, PS_POLYNOMIAL_ORD);863 psPolynomial2D *out = psPolynomial2DAlloc(orderX, orderY, PS_POLYNOMIAL_ORD); 864 864 //TRACE: printf("Creating poly (%d, %d)\n", orderX, orderY); 865 865 for (psS32 i = 0 ; i < out->nX; i++) { … … 966 966 for (psS32 t2x = 0 ; t2x < trans2->x->nX ; t2x++) { 967 967 for (psS32 t2y = 0 ; t2y < trans2->x->nY ; t2y++) { 968 ps DPolynomial2D *currPoly = psDPolynomial2DAlloc(1, 1, PS_POLYNOMIAL_ORD);968 psPolynomial2D *currPoly = psPolynomial2DAlloc(1, 1, PS_POLYNOMIAL_ORD); 969 969 970 970 currPoly->coeff[0][0] = 1.0; 971 971 currPoly->mask[0][0] = 0; 972 ps DPolynomial2D *newPoly = NULL;972 psPolynomial2D *newPoly = NULL; 973 973 974 974 if (trans2->x->mask[t2x][t2y] == 0) { … … 1001 1001 for (psS32 t2x = 0 ; t2x < trans2->y->nX ; t2x++) { 1002 1002 for (psS32 t2y = 0 ; t2y < trans2->y->nY ; t2y++) { 1003 ps DPolynomial2D *currPoly = psDPolynomial2DAlloc(1, 1, PS_POLYNOMIAL_ORD);1003 psPolynomial2D *currPoly = psPolynomial2DAlloc(1, 1, PS_POLYNOMIAL_ORD); 1004 1004 currPoly->coeff[0][0] = 1.0; 1005 1005 currPoly->mask[0][0] = 0; 1006 ps DPolynomial2D *newPoly = NULL;1006 psPolynomial2D *newPoly = NULL; 1007 1007 1008 1008 if (trans2->y->mask[t2x][t2y] == 0) { … … 1062 1062 // Create fake polynomial to use in evaluation 1063 1063 // 1064 ps DPolynomial2D *fakePoly = psDPolynomial2DAlloc(order, order, PS_POLYNOMIAL_ORD);1064 psPolynomial2D *fakePoly = psPolynomial2DAlloc(order, order, PS_POLYNOMIAL_ORD); 1065 1065 for (int i = 0; i < order; i++) { 1066 1066 for (int j = 0; j < order; j++) { … … 1098 1098 psF64 xOut = ((psPlane *) dest->data[g])->x; 1099 1099 psF64 yOut = ((psPlane *) dest->data[g])->y; 1100 psF64 ijPoly = ps DPolynomial2DEval(fakePoly, xIn, yIn);1100 psF64 ijPoly = psPolynomial2DEval(fakePoly, xIn, yIn); 1101 1101 fakePoly->mask[i][j] = 1; 1102 1102 … … 1104 1104 for (psS32 n = 0; n < order - m; n++, mnIndex++) { 1105 1105 fakePoly->mask[m][n] = 0; 1106 psF64 mnPoly = ps DPolynomial2DEval(fakePoly, xIn, yIn);1106 psF64 mnPoly = psPolynomial2DEval(fakePoly, xIn, yIn); 1107 1107 fakePoly->mask[m][n] = 1; 1108 1108 -
trunk/psLib/src/astro/psCoord.h
r4401 r4581 10 10 * @author GLG, MHPCC 11 11 * 12 * @version $Revision: 1.3 7$ $Name: not supported by cvs2svn $13 * @date $Date: 2005-0 6-27 20:38:11$12 * @version $Revision: 1.38 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2005-07-20 01:21:13 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 71 71 typedef struct 72 72 { 73 ps DPolynomial2D* x; ///< 2D polynomial transform of X coordinates74 ps DPolynomial2D* y; ///< 2D polynomial transform of Y coordinates73 psPolynomial2D* x; ///< 2D polynomial transform of X coordinates 74 psPolynomial2D* y; ///< 2D polynomial transform of Y coordinates 75 75 } 76 76 psPlaneTransform; … … 90 90 typedef struct 91 91 { 92 ps DPolynomial4D* x; ///< 4D polynomial transform of X coordinates93 ps DPolynomial4D* y; ///< 4D polynomial transform of Y coordinates92 psPolynomial4D* x; ///< 4D polynomial transform of X coordinates 93 psPolynomial4D* y; ///< 4D polynomial transform of Y coordinates 94 94 } 95 95 psPlaneDistort; -
trunk/psLib/src/math/psConstants.h
r4419 r4581 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.7 4$ $Name: not supported by cvs2svn $9 * @date $Date: 2005-0 6-28 23:28:31$8 * @version $Revision: 1.75 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2005-07-20 01:21:13 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 201 201 } 202 202 203 #define PS_ASSERT_DOUBLE_WITHIN_RANGE(NAME, LOWER, UPPER, RVAL) \ 204 if ((NAME) < (LOWER) || (NAME) > (UPPER)) { \ 205 psError(PS_ERR_BAD_PARAMETER_VALUE, true, \ 206 "Error: %s, %lf, is out of range. Must be between %lf and %lf.", \ 207 #NAME, NAME, LOWER, UPPER); \ 208 return RVAL; \ 209 } 210 203 211 // Return an error if the arg lies outside the supplied range 204 212 #define PS_ASSERT_LONG_WITHIN_RANGE(NAME, LOWER, UPPER, RVAL) \ -
trunk/psLib/src/math/psFunctions.c
r4580 r4581 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1. 5$ $Name: not supported by cvs2svn $10 * @date $Date: 2005-07- 19 02:55:54$9 * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2005-07-20 01:21:13 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 50 50 static void polynomial3DFree(psPolynomial3D* poly); 51 51 static void polynomial4DFree(psPolynomial4D* poly); 52 static void dPolynomial1DFree(psDPolynomial1D* poly);53 static void dPolynomial2DFree(psDPolynomial2D* poly);54 static void dPolynomial3DFree(psDPolynomial3D* poly);55 static void dPolynomial4DFree(psDPolynomial4D* poly);56 52 static void spline1DFree(psSpline1D *tmpSpline); 57 53 static psS32 vectorBinDisectF32(psF32 *bins,psS32 numBins,psF32 x); … … 166 162 } 167 163 168 static void dPolynomial1DFree(psDPolynomial1D* poly)169 {170 psFree(poly->coeff);171 psFree(poly->coeffErr);172 psFree(poly->mask);173 }174 175 static void dPolynomial2DFree(psDPolynomial2D* poly)176 {177 for (unsigned int x = 0; x < poly->nX; x++) {178 psFree(poly->coeff[x]);179 psFree(poly->coeffErr[x]);180 psFree(poly->mask[x]);181 }182 psFree(poly->coeff);183 psFree(poly->coeffErr);184 psFree(poly->mask);185 }186 187 static void dPolynomial3DFree(psDPolynomial3D* poly)188 {189 unsigned int x = 0;190 unsigned int y = 0;191 192 for (x = 0; x < poly->nX; x++) {193 for (y = 0; y < poly->nY; y++) {194 psFree(poly->coeff[x][y]);195 psFree(poly->coeffErr[x][y]);196 psFree(poly->mask[x][y]);197 }198 psFree(poly->coeff[x]);199 psFree(poly->coeffErr[x]);200 psFree(poly->mask[x]);201 }202 203 psFree(poly->coeff);204 psFree(poly->coeffErr);205 psFree(poly->mask);206 }207 208 static void dPolynomial4DFree(psDPolynomial4D* poly)209 {210 unsigned int x = 0;211 unsigned int y = 0;212 unsigned int z = 0;213 214 for (x = 0; x < poly->nX; x++) {215 for (y = 0; y < poly->nY; y++) {216 for (z = 0; z < poly->nZ; z++) {217 psFree(poly->coeff[x][y][z]);218 psFree(poly->coeffErr[x][y][z]);219 psFree(poly->mask[x][y][z]);220 }221 psFree(poly->coeff[x][y]);222 psFree(poly->coeffErr[x][y]);223 psFree(poly->mask[x][y]);224 }225 psFree(poly->coeff[x]);226 psFree(poly->coeffErr[x]);227 psFree(poly->mask[x]);228 }229 230 psFree(poly->coeff);231 psFree(poly->coeffErr);232 psFree(poly->mask);233 }234 235 164 /***************************************************************************** 236 165 createChebyshevPolys(n): this routine takes as input the required order n, … … 283 212 { 284 213 psS32 loop_x = 0; 285 psF 32polySum = 0.0;286 psF 32xSum = 1.0;214 psF64 polySum = 0.0; 215 psF64 xSum = 1.0; 287 216 288 217 psTrace(".psLib.dataManip.psFunctions.ordPolynomial1DEval", 4, 289 "---- Calling ordPolynomial1DEval(% f)\n", x);218 "---- Calling ordPolynomial1DEval(%lf)\n", x); 290 219 psTrace(".psLib.dataManip.psFunctions.ordPolynomial1DEval", 4, 291 220 "Polynomial order is %d\n", poly->n); 292 221 for (loop_x = 0; loop_x < poly->n; loop_x++) { 293 222 psTrace(".psLib.dataManip.psFunctions.ordPolynomial1DEval", 4, 294 "Polynomial coeff[%d] is % f\n", loop_x, poly->coeff[loop_x]);223 "Polynomial coeff[%d] is %lf\n", loop_x, poly->coeff[loop_x]); 295 224 } 296 225 … … 298 227 if (poly->mask[loop_x] == 0) { 299 228 psTrace(".psLib.dataManip.psFunctions.ordPolynomial1DEval", 10, 300 "polysum+= sum*coeff [% f+= (%f * %f)\n", polySum, xSum, poly->coeff[loop_x]);229 "polysum+= sum*coeff [%lf+= (%lf * %lf)\n", polySum, xSum, poly->coeff[loop_x]); 301 230 polySum += xSum * poly->coeff[loop_x]; 302 231 } … … 312 241 static psF64 chebPolynomial1DEval(psF64 x, const psPolynomial1D* poly) 313 242 { 314 PS_ASSERT_ FLOAT_WITHIN_RANGE(x, -1.0, 1.0, 0.0);243 PS_ASSERT_DOUBLE_WITHIN_RANGE(x, -1.0, 1.0, 0.0); 315 244 // XXX: Create a macro for this in psConstants.h 316 245 if (poly->n < 1) { … … 321 250 psS32 n = poly->n; 322 251 psS32 i; 323 psF 32tmp = 0.0;252 psF64 tmp = 0.0; 324 253 325 254 // Special case where the Chebyshev poly is constant. … … 343 272 344 273 // General case where the Chebyshev poly has 2 or more terms. 345 d = psVectorAlloc(n, PS_TYPE_F 32);274 d = psVectorAlloc(n, PS_TYPE_F64); 346 275 if(poly->mask[n-1] == 0) { 347 d->data.F 32[n-1] = poly->coeff[n-1];276 d->data.F64[n-1] = poly->coeff[n-1]; 348 277 } else { 349 d->data.F 32[n-1] = 0.0;350 } 351 352 d->data.F 32[n-2] = (2.0 * x * d->data.F32[n-1]);278 d->data.F64[n-1] = 0.0; 279 } 280 281 d->data.F64[n-2] = (2.0 * x * d->data.F64[n-1]); 353 282 if(poly->mask[n-2] == 0) { 354 d->data.F 32[n-2] += poly->coeff[n-2];283 d->data.F64[n-2] += poly->coeff[n-2]; 355 284 } 356 285 357 286 for (i=n-3;i>=1;i--) { 358 d->data.F 32[i] = (2.0 * x * d->data.F32[i+1]) -359 (d->data.F 32[i+2]);287 d->data.F64[i] = (2.0 * x * d->data.F64[i+1]) - 288 (d->data.F64[i+2]); 360 289 if(poly->mask[i] == 0) { 361 d->data.F 32[i] += poly->coeff[i];362 } 363 } 364 365 tmp = (x * d->data.F 32[1]) -366 (d->data.F 32[2]);290 d->data.F64[i] += poly->coeff[i]; 291 } 292 } 293 294 tmp = (x * d->data.F64[1]) - 295 (d->data.F64[2]); 367 296 if(poly->mask[0] == 0) { 368 297 tmp += (0.5 * poly->coeff[0]); … … 400 329 psS32 loop_x = 0; 401 330 psS32 loop_y = 0; 402 psF 32polySum = 0.0;403 psF 32xSum = 1.0;404 psF 32ySum = 1.0;331 psF64 polySum = 0.0; 332 psF64 xSum = 1.0; 333 psF64 ySum = 1.0; 405 334 406 335 for (loop_x = 0; loop_x < poly->nX; loop_x++) { … … 420 349 static psF64 chebPolynomial2DEval(psF64 x, psF64 y, const psPolynomial2D* poly) 421 350 { 422 PS_ASSERT_ FLOAT_WITHIN_RANGE(x, -1.0, 1.0, 0.0);423 PS_ASSERT_ FLOAT_WITHIN_RANGE(y, -1.0, 1.0, 0.0);351 PS_ASSERT_DOUBLE_WITHIN_RANGE(x, -1.0, 1.0, 0.0); 352 PS_ASSERT_DOUBLE_WITHIN_RANGE(y, -1.0, 1.0, 0.0); 424 353 PS_ASSERT_POLY_NON_NULL(poly, NAN); 425 354 … … 427 356 psS32 loop_y = 0; 428 357 psS32 i = 0; 429 psF 32polySum = 0.0;358 psF64 polySum = 0.0; 430 359 psPolynomial1D* *chebPolys = NULL; 431 360 psS32 maxChebyPoly = 0; … … 460 389 psS32 loop_y = 0; 461 390 psS32 loop_z = 0; 462 psF 32polySum = 0.0;463 psF 32xSum = 1.0;464 psF 32ySum = 1.0;465 psF 32zSum = 1.0;391 psF64 polySum = 0.0; 392 psF64 xSum = 1.0; 393 psF64 ySum = 1.0; 394 psF64 zSum = 1.0; 466 395 467 396 for (loop_x = 0; loop_x < poly->nX; loop_x++) { … … 485 414 static psF64 chebPolynomial3DEval(psF64 x, psF64 y, psF64 z, const psPolynomial3D* poly) 486 415 { 487 PS_ASSERT_ FLOAT_WITHIN_RANGE(x, -1.0, 1.0, 0.0);488 PS_ASSERT_ FLOAT_WITHIN_RANGE(y, -1.0, 1.0, 0.0);489 PS_ASSERT_ FLOAT_WITHIN_RANGE(z, -1.0, 1.0, 0.0);416 PS_ASSERT_DOUBLE_WITHIN_RANGE(x, -1.0, 1.0, 0.0); 417 PS_ASSERT_DOUBLE_WITHIN_RANGE(y, -1.0, 1.0, 0.0); 418 PS_ASSERT_DOUBLE_WITHIN_RANGE(z, -1.0, 1.0, 0.0); 490 419 psS32 loop_x = 0; 491 420 psS32 loop_y = 0; 492 421 psS32 loop_z = 0; 493 422 psS32 i = 0; 494 psF 32polySum = 0.0;423 psF64 polySum = 0.0; 495 424 psPolynomial1D* *chebPolys = NULL; 496 425 psS32 maxChebyPoly = 0; … … 533 462 psS32 loop_z = 0; 534 463 psS32 loop_t = 0; 535 psF 32polySum = 0.0;536 psF 32xSum = 1.0;537 psF 32ySum = 1.0;538 psF 32zSum = 1.0;539 psF 32tSum = 1.0;464 psF64 polySum = 0.0; 465 psF64 xSum = 1.0; 466 psF64 ySum = 1.0; 467 psF64 zSum = 1.0; 468 psF64 tSum = 1.0; 540 469 541 470 for (loop_x = 0; loop_x < poly->nX; loop_x++) { … … 563 492 static psF64 chebPolynomial4DEval(psF64 x, psF64 y, psF64 z, psF64 t, const psPolynomial4D* poly) 564 493 { 565 PS_ASSERT_ FLOAT_WITHIN_RANGE(x, -1.0, 1.0, 0.0);566 PS_ASSERT_ FLOAT_WITHIN_RANGE(y, -1.0, 1.0, 0.0);567 PS_ASSERT_ FLOAT_WITHIN_RANGE(z, -1.0, 1.0, 0.0);568 PS_ASSERT_ FLOAT_WITHIN_RANGE(t, -1.0, 1.0, 0.0);494 PS_ASSERT_DOUBLE_WITHIN_RANGE(x, -1.0, 1.0, 0.0); 495 PS_ASSERT_DOUBLE_WITHIN_RANGE(y, -1.0, 1.0, 0.0); 496 PS_ASSERT_DOUBLE_WITHIN_RANGE(z, -1.0, 1.0, 0.0); 497 PS_ASSERT_DOUBLE_WITHIN_RANGE(t, -1.0, 1.0, 0.0); 569 498 psS32 loop_x = 0; 570 499 psS32 loop_y = 0; … … 572 501 psS32 loop_t = 0; 573 502 psS32 i = 0; 574 psF 32polySum = 0.0;503 psF64 polySum = 0.0; 575 504 psPolynomial1D* *chebPolys = NULL; 576 505 psS32 maxChebyPoly = 0; … … 612 541 return(polySum); 613 542 } 614 615 /*****************************************************************************616 Polynomial coefficients will be accessed in [w][x][y][z] fashion.617 *****************************************************************************/618 static psF64 dOrdPolynomial1DEval(psF64 x, const psDPolynomial1D* poly)619 {620 psS32 loop_x = 0;621 psF64 polySum = 0.0;622 psF64 xSum = 1.0;623 624 for (loop_x = 0; loop_x < poly->n; loop_x++) {625 if (poly->mask[loop_x] == 0) {626 polySum += xSum * poly->coeff[loop_x];627 }628 xSum *= x;629 }630 631 return(polySum);632 }633 634 // XXX: You can do this without having to psAlloc() vector d.635 // XXX: How does the mask vector effect Crenshaw's formula?636 static psF64 dChebPolynomial1DEval(psF64 x, const psDPolynomial1D* poly)637 {638 PS_ASSERT_FLOAT_WITHIN_RANGE(x, -1.0, 1.0, 0.0);639 psVector *d;640 psS32 n;641 psS32 i;642 psF64 tmp;643 644 n = poly->n;645 d = psVectorAlloc(n, PS_TYPE_F64);646 if(poly->mask[n-1] == 0) {647 d->data.F64[n-1] = poly->coeff[n-1];648 } else {649 d->data.F64[n-1] = 0.0;650 }651 d->data.F64[n-2] = (2.0 * x * d->data.F64[n-1]);652 if(poly->mask[n-2] == 0) {653 d->data.F64[n-2] += poly->coeff[n-2];654 }655 for (i=n-3;i>=1;i--) {656 d->data.F64[i] = (2.0 * x * d->data.F64[i+1]) -657 (d->data.F64[i+2]);658 if(poly->mask[i] == 0) {659 d->data.F64[i] += poly->coeff[i];660 }661 }662 663 tmp = (x * d->data.F64[1]) -664 (d->data.F64[2]);665 if(poly->mask[0] == 0) {666 tmp += (0.5 * poly->coeff[0]);667 }668 669 psFree(d);670 return(tmp);671 }672 673 static psF64 dOrdPolynomial2DEval(psF64 x,674 psF64 y,675 const psDPolynomial2D* poly)676 {677 psS32 loop_x = 0;678 psS32 loop_y = 0;679 psF64 polySum = 0.0;680 psF64 xSum = 1.0;681 psF64 ySum = 1.0;682 683 for (loop_x = 0; loop_x < poly->nX; loop_x++) {684 ySum = xSum;685 for (loop_y = 0; loop_y < poly->nY; loop_y++) {686 if (poly->mask[loop_x][loop_y] == 0) {687 polySum += ySum * poly->coeff[loop_x][loop_y];688 }689 ySum *= y;690 }691 xSum *= x;692 }693 694 return(polySum);695 }696 697 static psF64 dChebPolynomial2DEval(psF64 x, psF64 y, const psDPolynomial2D* poly)698 {699 PS_ASSERT_FLOAT_WITHIN_RANGE(x, -1.0, 1.0, 0.0);700 PS_ASSERT_FLOAT_WITHIN_RANGE(y, -1.0, 1.0, 0.0);701 psS32 loop_x = 0;702 psS32 loop_y = 0;703 psS32 i = 0;704 psF64 polySum = 0.0;705 psPolynomial1D* *chebPolys = NULL;706 psS32 maxChebyPoly = 0;707 708 // Determine how many Chebyshev polynomials709 // are needed, then create them.710 maxChebyPoly = poly->nX;711 if (poly->nY > maxChebyPoly) {712 maxChebyPoly = poly->nY;713 }714 chebPolys = createChebyshevPolys(maxChebyPoly);715 716 for (loop_x = 0; loop_x < poly->nX; loop_x++) {717 for (loop_y = 0; loop_y < poly->nY; loop_y++) {718 if (poly->mask[loop_x][loop_y] == 0) {719 polySum += poly->coeff[loop_x][loop_y] *720 psPolynomial1DEval(chebPolys[loop_x], x) *721 psPolynomial1DEval(chebPolys[loop_y], y);722 }723 }724 }725 726 for (i=0;i<maxChebyPoly;i++) {727 psFree(chebPolys[i]);728 }729 psFree(chebPolys);730 return(polySum);731 }732 733 static psF64 dOrdPolynomial3DEval(psF64 x, psF64 y, psF64 z, const psDPolynomial3D* poly)734 {735 psS32 loop_x = 0;736 psS32 loop_y = 0;737 psS32 loop_z = 0;738 psF64 polySum = 0.0;739 psF64 xSum = 1.0;740 psF64 ySum = 1.0;741 psF64 zSum = 1.0;742 743 for (loop_x = 0; loop_x < poly->nX; loop_x++) {744 ySum = xSum;745 for (loop_y = 0; loop_y < poly->nY; loop_y++) {746 zSum = ySum;747 for (loop_z = 0; loop_z < poly->nZ; loop_z++) {748 if (poly->mask[loop_x][loop_y][loop_z] == 0) {749 polySum += zSum * poly->coeff[loop_x][loop_y][loop_z];750 }751 zSum *= z;752 }753 ySum *= y;754 }755 xSum *= x;756 }757 758 return(polySum);759 }760 761 static psF64 dChebPolynomial3DEval(psF64 x, psF64 y, psF64 z, const psDPolynomial3D* poly)762 {763 PS_ASSERT_FLOAT_WITHIN_RANGE(x, -1.0, 1.0, 0.0);764 PS_ASSERT_FLOAT_WITHIN_RANGE(y, -1.0, 1.0, 0.0);765 PS_ASSERT_FLOAT_WITHIN_RANGE(z, -1.0, 1.0, 0.0);766 psS32 loop_x = 0;767 psS32 loop_y = 0;768 psS32 loop_z = 0;769 psS32 i = 0;770 psF64 polySum = 0.0;771 psPolynomial1D* *chebPolys = NULL;772 psS32 maxChebyPoly = 0;773 774 // Determine how many Chebyshev polynomials775 // are needed, then create them.776 maxChebyPoly = poly->nX;777 if (poly->nY > maxChebyPoly) {778 maxChebyPoly = poly->nY;779 }780 if (poly->nZ > maxChebyPoly) {781 maxChebyPoly = poly->nZ;782 }783 chebPolys = createChebyshevPolys(maxChebyPoly);784 785 for (loop_x = 0; loop_x < poly->nX; loop_x++) {786 for (loop_y = 0; loop_y < poly->nY; loop_y++) {787 for (loop_z = 0; loop_z < poly->nZ; loop_z++) {788 if (poly->mask[loop_x][loop_y][loop_z] == 0) {789 polySum += poly->coeff[loop_x][loop_y][loop_z] *790 psPolynomial1DEval(chebPolys[loop_x], x) *791 psPolynomial1DEval(chebPolys[loop_y], y) *792 psPolynomial1DEval(chebPolys[loop_z], z);793 }794 }795 }796 }797 798 for (i=0;i<maxChebyPoly;i++) {799 psFree(chebPolys[i]);800 }801 psFree(chebPolys);802 return(polySum);803 }804 805 static psF64 dOrdPolynomial4DEval(psF64 x, psF64 y, psF64 z, psF64 t, const psDPolynomial4D* poly)806 {807 psS32 loop_x = 0;808 psS32 loop_y = 0;809 psS32 loop_z = 0;810 psS32 loop_t = 0;811 psF64 polySum = 0.0;812 psF64 xSum = 1.0;813 psF64 ySum = 1.0;814 psF64 zSum = 1.0;815 psF64 tSum = 1.0;816 817 for (loop_x = 0; loop_x < poly->nX; loop_x++) {818 ySum = xSum;819 for (loop_y = 0; loop_y < poly->nY; loop_y++) {820 zSum = ySum;821 for (loop_z = 0; loop_z < poly->nZ; loop_z++) {822 tSum = zSum;823 for (loop_t = 0; loop_t < poly->nT; loop_t++) {824 if (poly->mask[loop_x][loop_y][loop_z][loop_t] == 0) {825 polySum += tSum * poly->coeff[loop_x][loop_y][loop_z][loop_t];826 }827 tSum *= t;828 }829 zSum *= z;830 }831 ySum *= y;832 }833 xSum *= x;834 }835 836 return(polySum);837 }838 839 static psF64 dChebPolynomial4DEval(psF64 x, psF64 y, psF64 z, psF64 t, const psDPolynomial4D* poly)840 {841 PS_ASSERT_FLOAT_WITHIN_RANGE(x, -1.0, 1.0, 0.0);842 PS_ASSERT_FLOAT_WITHIN_RANGE(y, -1.0, 1.0, 0.0);843 PS_ASSERT_FLOAT_WITHIN_RANGE(z, -1.0, 1.0, 0.0);844 PS_ASSERT_FLOAT_WITHIN_RANGE(t, -1.0, 1.0, 0.0);845 psS32 loop_x = 0;846 psS32 loop_y = 0;847 psS32 loop_z = 0;848 psS32 loop_t = 0;849 psS32 i = 0;850 psF64 polySum = 0.0;851 psPolynomial1D* *chebPolys = NULL;852 psS32 maxChebyPoly = 0;853 854 // Determine how many Chebyshev polynomials855 // are needed, then create them.856 maxChebyPoly = poly->nX;857 if (poly->nY > maxChebyPoly) {858 maxChebyPoly = poly->nY;859 }860 if (poly->nZ > maxChebyPoly) {861 maxChebyPoly = poly->nZ;862 }863 if (poly->nT > maxChebyPoly) {864 maxChebyPoly = poly->nT;865 }866 chebPolys = createChebyshevPolys(maxChebyPoly);867 868 for (loop_x = 0; loop_x < poly->nX; loop_x++) {869 for (loop_y = 0; loop_y < poly->nY; loop_y++) {870 for (loop_z = 0; loop_z < poly->nZ; loop_z++) {871 for (loop_t = 0; loop_t < poly->nT; loop_t++) {872 if (poly->mask[loop_x][loop_y][loop_z][loop_t] == 0) {873 polySum += poly->coeff[loop_x][loop_y][loop_z][loop_t] *874 psPolynomial1DEval(chebPolys[loop_x], x) *875 psPolynomial1DEval(chebPolys[loop_y], y) *876 psPolynomial1DEval(chebPolys[loop_z], z) *877 psPolynomial1DEval(chebPolys[loop_t], t);878 }879 }880 }881 }882 }883 884 for (i=0;i<maxChebyPoly;i++) {885 psFree(chebPolys[i]);886 }887 psFree(chebPolys);888 return(polySum);889 }890 891 543 892 544 /***************************************************************************** … … 1082 734 newPoly->type = type; 1083 735 newPoly->n = n; 1084 newPoly->coeff = (psF32 *)psAlloc(n * sizeof(psF32));1085 newPoly->coeffErr = (psF32 *)psAlloc(n * sizeof(psF32));736 newPoly->coeff = psAlloc(n * sizeof(psF64)); 737 newPoly->coeffErr = psAlloc(n * sizeof(psF64)); 1086 738 newPoly->mask = (char *)psAlloc(n * sizeof(char)); 1087 739 for (i = 0; i < n; i++) { … … 1111 763 newPoly->nY = nY; 1112 764 1113 newPoly->coeff = (psF32 **)psAlloc(nX * sizeof(psF32*));1114 newPoly->coeffErr = (psF32 **)psAlloc(nX * sizeof(psF32*));765 newPoly->coeff = psAlloc(nX * sizeof(psF64 *)); 766 newPoly->coeffErr = psAlloc(nX * sizeof(psF64 *)); 1115 767 newPoly->mask = (char **)psAlloc(nX * sizeof(char *)); 1116 768 for (x = 0; x < nX; x++) { 1117 newPoly->coeff[x] = (psF32 *)psAlloc(nY * sizeof(psF32));1118 newPoly->coeffErr[x] = (psF32 *)psAlloc(nY * sizeof(psF32));769 newPoly->coeff[x] = psAlloc(nY * sizeof(psF64)); 770 newPoly->coeffErr[x] = psAlloc(nY * sizeof(psF64)); 1119 771 newPoly->mask[x] = (char *)psAlloc(nY * sizeof(char)); 1120 772 } … … 1150 802 newPoly->nZ = nZ; 1151 803 1152 newPoly->coeff = (psF32 ***)psAlloc(nX * sizeof(psF32**));1153 newPoly->coeffErr = (psF32 ***)psAlloc(nX * sizeof(psF32**));804 newPoly->coeff = psAlloc(nX * sizeof(psF64 **)); 805 newPoly->coeffErr = psAlloc(nX * sizeof(psF64 **)); 1154 806 newPoly->mask = (char ***)psAlloc(nX * sizeof(char **)); 1155 807 for (x = 0; x < nX; x++) { 1156 newPoly->coeff[x] = (psF32 **)psAlloc(nY * sizeof(psF32*));1157 newPoly->coeffErr[x] = (psF32 **)psAlloc(nY * sizeof(psF32*));808 newPoly->coeff[x] = psAlloc(nY * sizeof(psF64 *)); 809 newPoly->coeffErr[x] = psAlloc(nY * sizeof(psF64 *)); 1158 810 newPoly->mask[x] = (char **)psAlloc(nY * sizeof(char *)); 1159 811 for (y = 0; y < nY; y++) { 1160 newPoly->coeff[x][y] = (psF32 *)psAlloc(nZ * sizeof(psF32));1161 newPoly->coeffErr[x][y] = (psF32 *)psAlloc(nZ * sizeof(psF32));812 newPoly->coeff[x][y] = psAlloc(nZ * sizeof(psF64)); 813 newPoly->coeffErr[x][y] = psAlloc(nZ * sizeof(psF64)); 1162 814 newPoly->mask[x][y] = (char *)psAlloc(nZ * sizeof(char)); 1163 815 } … … 1199 851 newPoly->nT = nT; 1200 852 1201 newPoly->coeff = (psF32 ****)psAlloc(nX * sizeof(psF32***));1202 newPoly->coeffErr = (psF32 ****)psAlloc(nX * sizeof(psF32***));853 newPoly->coeff = psAlloc(nX * sizeof(psF64 ***)); 854 newPoly->coeffErr = psAlloc(nX * sizeof(psF64 ***)); 1203 855 newPoly->mask = (char ****)psAlloc(nX * sizeof(char ***)); 1204 856 for (x = 0; x < nX; x++) { 1205 newPoly->coeff[x] = (psF32 ***)psAlloc(nY * sizeof(psF32**));1206 newPoly->coeffErr[x] = (psF32 ***)psAlloc(nY * sizeof(psF32**));857 newPoly->coeff[x] = psAlloc(nY * sizeof(psF64 **)); 858 newPoly->coeffErr[x] = psAlloc(nY * sizeof(psF64 **)); 1207 859 newPoly->mask[x] = (char ***)psAlloc(nY * sizeof(char **)); 1208 860 for (y = 0; y < nY; y++) { 1209 newPoly->coeff[x][y] = (psF32 **)psAlloc(nZ * sizeof(psF32*));1210 newPoly->coeffErr[x][y] = (psF32 **)psAlloc(nZ * sizeof(psF32*));861 newPoly->coeff[x][y] = psAlloc(nZ * sizeof(psF64 *)); 862 newPoly->coeffErr[x][y] = psAlloc(nZ * sizeof(psF64 *)); 1211 863 newPoly->mask[x][y] = (char **)psAlloc(nZ * sizeof(char *)); 1212 864 for (z = 0; z < nZ; z++) { 1213 newPoly->coeff[x][y][z] = (psF32 *)psAlloc(nT * sizeof(psF32));1214 newPoly->coeffErr[x][y][z] = (psF32 *)psAlloc(nT * sizeof(psF32));865 newPoly->coeff[x][y][z] = psAlloc(nT * sizeof(psF64)); 866 newPoly->coeffErr[x][y][z] = psAlloc(nT * sizeof(psF64)); 1215 867 newPoly->mask[x][y][z] = (char *)psAlloc(nT * sizeof(char)); 1216 868 } … … 1253 905 PS_ASSERT_POLY_NON_NULL(poly, NULL); 1254 906 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 1255 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F 32, NULL);907 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F64, NULL); 1256 908 1257 909 psVector *tmp; 1258 910 1259 tmp = psVectorAlloc(x->n, PS_TYPE_F 32);911 tmp = psVectorAlloc(x->n, PS_TYPE_F64); 1260 912 for (psS32 i=0;i<x->n;i++) { 1261 tmp->data.F 32[i] = psPolynomial1DEval(poly, x->data.F32[i]);913 tmp->data.F64[i] = psPolynomial1DEval(poly, x->data.F64[i]); 1262 914 } 1263 915 … … 1288 940 PS_ASSERT_POLY_NON_NULL(poly, NULL); 1289 941 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 1290 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F 32, NULL);942 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F64, NULL); 1291 943 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 1292 PS_ASSERT_VECTOR_TYPE(y, PS_TYPE_F 32, NULL);944 PS_ASSERT_VECTOR_TYPE(y, PS_TYPE_F64, NULL); 1293 945 1294 946 psVector *tmp; … … 1301 953 1302 954 // Create output vector to return 1303 tmp = psVectorAlloc(vecLen, PS_TYPE_F 32);955 tmp = psVectorAlloc(vecLen, PS_TYPE_F64); 1304 956 1305 957 // Evaluate the polynomial at the specified points 1306 958 for (psS32 i=0; i<vecLen; i++) { 1307 tmp->data.F 32[i] = psPolynomial2DEval(poly,x->data.F32[i],y->data.F32[i]);959 tmp->data.F64[i] = psPolynomial2DEval(poly,x->data.F64[i],y->data.F64[i]); 1308 960 } 1309 961 … … 1336 988 PS_ASSERT_POLY_NON_NULL(poly, NULL); 1337 989 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 1338 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F 32, NULL);990 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F64, NULL); 1339 991 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 1340 PS_ASSERT_VECTOR_TYPE(y, PS_TYPE_F 32, NULL);992 PS_ASSERT_VECTOR_TYPE(y, PS_TYPE_F64, NULL); 1341 993 PS_ASSERT_VECTOR_NON_NULL(z, NULL); 1342 PS_ASSERT_VECTOR_TYPE(z, PS_TYPE_F 32, NULL);994 PS_ASSERT_VECTOR_TYPE(z, PS_TYPE_F64, NULL); 1343 995 1344 996 psVector *tmp; … … 1354 1006 1355 1007 // Allocate output vector 1356 tmp = psVectorAlloc(vecLen, PS_TYPE_F 32);1008 tmp = psVectorAlloc(vecLen, PS_TYPE_F64); 1357 1009 1358 1010 // Evaluate polynomial 1359 1011 for (psS32 i = 0; i < vecLen; i++) { 1360 tmp->data.F 32[i] = psPolynomial3DEval(poly,1361 x->data.F 32[i],1362 y->data.F 32[i],1363 z->data.F 32[i]);1012 tmp->data.F64[i] = psPolynomial3DEval(poly, 1013 x->data.F64[i], 1014 y->data.F64[i], 1015 z->data.F64[i]); 1364 1016 } 1365 1017 … … 1389 1041 const psVector *z, 1390 1042 const psVector *t) 1391 {1392 PS_ASSERT_POLY_NON_NULL(poly, NULL);1393 PS_ASSERT_VECTOR_NON_NULL(x, NULL);1394 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F32, NULL);1395 PS_ASSERT_VECTOR_NON_NULL(y, NULL);1396 PS_ASSERT_VECTOR_TYPE(y, PS_TYPE_F32, NULL);1397 PS_ASSERT_VECTOR_NON_NULL(z, NULL);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 1402 psVector *tmp;1403 psS32 vecLen=x->n;1404 1405 // Determine output vector size from min of input vectors1406 if (z->n < vecLen) {1407 vecLen = z->n;1408 }1409 if (y->n < vecLen) {1410 vecLen = y->n;1411 }1412 if (t->n < vecLen) {1413 vecLen = t->n;1414 }1415 1416 // Allocate output vector1417 tmp = psVectorAlloc(vecLen, PS_TYPE_F32);1418 1419 // Evaluate polynomial1420 for (psS32 i = 0; i < vecLen; i++) {1421 tmp->data.F32[i] = psPolynomial4DEval(poly,1422 x->data.F32[i],1423 y->data.F32[i],1424 z->data.F32[i],1425 t->data.F32[i]);1426 }1427 1428 // Return output vector1429 return(tmp);1430 }1431 1432 1433 psDPolynomial1D* psDPolynomial1DAlloc( int n,1434 psPolynomialType type)1435 {1436 PS_ASSERT_INT_POSITIVE(n, NULL);1437 1438 unsigned int i = 0;1439 psDPolynomial1D* newPoly = NULL;1440 1441 newPoly = (psDPolynomial1D* ) psAlloc(sizeof(psDPolynomial1D));1442 psMemSetDeallocator(newPoly, (psFreeFunc) dPolynomial1DFree);1443 1444 newPoly->type = type;1445 newPoly->n = n;1446 newPoly->coeff = (psF64 *)psAlloc(n * sizeof(psF64));1447 newPoly->coeffErr = (psF64 *)psAlloc(n * sizeof(psF64));1448 newPoly->mask = (char *)psAlloc(n * sizeof(char));1449 for (i = 0; i < n; i++) {1450 newPoly->coeff[i] = 0.0;1451 newPoly->coeffErr[i] = 0.0;1452 newPoly->mask[i] = 0;1453 }1454 1455 return(newPoly);1456 }1457 1458 psDPolynomial2D* psDPolynomial2DAlloc( int nX, int nY,1459 psPolynomialType type)1460 {1461 PS_ASSERT_INT_POSITIVE(nX, NULL);1462 PS_ASSERT_INT_POSITIVE(nY, NULL);1463 1464 unsigned int x = 0;1465 unsigned int y = 0;1466 psDPolynomial2D* newPoly = NULL;1467 1468 newPoly = (psDPolynomial2D* ) psAlloc(sizeof(psDPolynomial2D));1469 psMemSetDeallocator(newPoly, (psFreeFunc) dPolynomial2DFree);1470 1471 newPoly->type = type;1472 newPoly->nX = nX;1473 newPoly->nY = nY;1474 1475 newPoly->coeff = (psF64 **)psAlloc(nX * sizeof(psF64 *));1476 newPoly->coeffErr = (psF64 **)psAlloc(nX * sizeof(psF64 *));1477 newPoly->mask = (char **)psAlloc(nX * sizeof(char *));1478 for (x = 0; x < nX; x++) {1479 newPoly->coeff[x] = (psF64 *)psAlloc(nY * sizeof(psF64));1480 newPoly->coeffErr[x] = (psF64 *)psAlloc(nY * sizeof(psF64));1481 newPoly->mask[x] = (char *)psAlloc(nY * sizeof(char));1482 }1483 for (x = 0; x < nX; x++) {1484 for (y = 0; y < nY; y++) {1485 newPoly->coeff[x][y] = 0.0;1486 newPoly->coeffErr[x][y] = 0.0;1487 newPoly->mask[x][y] = 0;1488 }1489 }1490 1491 return(newPoly);1492 }1493 1494 psDPolynomial3D* psDPolynomial3DAlloc( int nX, int nY, int nZ,1495 psPolynomialType type)1496 {1497 PS_ASSERT_INT_POSITIVE(nX, NULL);1498 PS_ASSERT_INT_POSITIVE(nY, NULL);1499 PS_ASSERT_INT_POSITIVE(nZ, NULL);1500 1501 unsigned int x = 0;1502 unsigned int y = 0;1503 unsigned int z = 0;1504 psDPolynomial3D* newPoly = NULL;1505 1506 newPoly = (psDPolynomial3D* ) psAlloc(sizeof(psDPolynomial3D));1507 psMemSetDeallocator(newPoly, (psFreeFunc) dPolynomial3DFree);1508 1509 newPoly->type = type;1510 newPoly->nX = nX;1511 newPoly->nY = nY;1512 newPoly->nZ = nZ;1513 1514 newPoly->coeff = (psF64 ***)psAlloc(nX * sizeof(psF64 **));1515 newPoly->coeffErr = (psF64 ***)psAlloc(nX * sizeof(psF64 **));1516 newPoly->mask = (char ***)psAlloc(nX * sizeof(char **));1517 for (x = 0; x < nX; x++) {1518 newPoly->coeff[x] = (psF64 **)psAlloc(nY * sizeof(psF64 *));1519 newPoly->coeffErr[x] = (psF64 **)psAlloc(nY * sizeof(psF64 *));1520 newPoly->mask[x] = (char **)psAlloc(nY * sizeof(char *));1521 for (y = 0; y < nY; y++) {1522 newPoly->coeff[x][y] = (psF64 *)psAlloc(nZ * sizeof(psF64));1523 newPoly->coeffErr[x][y] = (psF64 *)psAlloc(nZ * sizeof(psF64));1524 newPoly->mask[x][y] = (char *)psAlloc(nZ * sizeof(char));1525 }1526 }1527 for (x = 0; x < nX; x++) {1528 for (y = 0; y < nY; y++) {1529 for (z = 0; z < nZ; z++) {1530 newPoly->coeff[x][y][z] = 0.0;1531 newPoly->coeffErr[x][y][z] = 0.0;1532 newPoly->mask[x][y][z] = 0;1533 }1534 }1535 }1536 1537 return(newPoly);1538 }1539 1540 psDPolynomial4D* psDPolynomial4DAlloc( int nX, int nY, int nZ, int nT,1541 psPolynomialType type)1542 {1543 PS_ASSERT_INT_POSITIVE(nX, NULL);1544 PS_ASSERT_INT_POSITIVE(nY, NULL);1545 PS_ASSERT_INT_POSITIVE(nZ, NULL);1546 PS_ASSERT_INT_POSITIVE(nT, NULL);1547 1548 unsigned int x = 0;1549 unsigned int y = 0;1550 unsigned int z = 0;1551 unsigned int t = 0;1552 psDPolynomial4D* newPoly = NULL;1553 1554 newPoly = (psDPolynomial4D* ) psAlloc(sizeof(psDPolynomial4D));1555 psMemSetDeallocator(newPoly, (psFreeFunc) dPolynomial4DFree);1556 1557 newPoly->type = type;1558 newPoly->nX = nX;1559 newPoly->nY = nY;1560 newPoly->nZ = nZ;1561 newPoly->nT = nT;1562 1563 newPoly->coeff = (psF64 ****)psAlloc(nX * sizeof(psF64 ***));1564 newPoly->coeffErr = (psF64 ****)psAlloc(nX * sizeof(psF64 ***));1565 newPoly->mask = (char ****)psAlloc(nX * sizeof(char ***));1566 for (x = 0; x < nX; x++) {1567 newPoly->coeff[x] = (psF64 ***)psAlloc(nY * sizeof(psF64 **));1568 newPoly->coeffErr[x] = (psF64 ***)psAlloc(nY * sizeof(psF64 **));1569 newPoly->mask[x] = (char ***)psAlloc(nY * sizeof(char **));1570 for (y = 0; y < nY; y++) {1571 newPoly->coeff[x][y] = (psF64 **)psAlloc(nZ * sizeof(psF64 *));1572 newPoly->coeffErr[x][y] = (psF64 **)psAlloc(nZ * sizeof(psF64 *));1573 newPoly->mask[x][y] = (char **)psAlloc(nZ * sizeof(char *));1574 for (z = 0; z < nZ; z++) {1575 newPoly->coeff[x][y][z] = (psF64 *)psAlloc(nT * sizeof(psF64));1576 newPoly->coeffErr[x][y][z] = (psF64 *)psAlloc(nT * sizeof(psF64));1577 newPoly->mask[x][y][z] = (char *)psAlloc(nT * sizeof(char));1578 }1579 }1580 }1581 for (x = 0; x < nX; x++) {1582 for (y = 0; y < nY; y++) {1583 for (z = 0; z < nZ; z++) {1584 for (t = 0; t < nT; t++) {1585 newPoly->coeff[x][y][z][t] = 0.0;1586 newPoly->coeffErr[x][y][z][t] = 0.0;1587 newPoly->mask[x][y][z][t] = 0;1588 }1589 }1590 }1591 }1592 1593 return(newPoly);1594 }1595 1596 1597 psF64 psDPolynomial1DEval(const psDPolynomial1D* poly, psF64 x)1598 {1599 PS_ASSERT_POLY_NON_NULL(poly, NAN);1600 1601 if (poly->type == PS_POLYNOMIAL_ORD) {1602 return(dOrdPolynomial1DEval(x, poly));1603 } else if (poly->type == PS_POLYNOMIAL_CHEB) {1604 return(dChebPolynomial1DEval(x, poly));1605 } else {1606 psError(PS_ERR_BAD_PARAMETER_TYPE, true,1607 PS_ERRORTEXT_psFunctions_INVALID_POLYNOMIAL_TYPE,1608 poly->type);1609 }1610 return(NAN);1611 }1612 1613 psVector *psDPolynomial1DEvalVector(const psDPolynomial1D *poly,1614 const psVector *x)1615 1616 {1617 PS_ASSERT_POLY_NON_NULL(poly, NULL);1618 PS_ASSERT_VECTOR_NON_NULL(x, NULL);1619 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F64, NULL);1620 1621 psVector *tmp;1622 1623 tmp = psVectorAlloc(x->n, PS_TYPE_F64);1624 for (psS32 i=0;i<x->n;i++) {1625 tmp->data.F64[i] = psDPolynomial1DEval(poly,1626 x->data.F64[i]);1627 }1628 1629 return(tmp);1630 }1631 1632 1633 psF64 psDPolynomial2DEval(const psDPolynomial2D* poly,1634 psF64 x,1635 psF64 y)1636 {1637 PS_ASSERT_POLY_NON_NULL(poly, NAN);1638 if (poly->type == PS_POLYNOMIAL_ORD) {1639 return(dOrdPolynomial2DEval(x, y, poly));1640 } else if (poly->type == PS_POLYNOMIAL_CHEB) {1641 return(dChebPolynomial2DEval(x, y, poly));1642 } else {1643 psError(PS_ERR_BAD_PARAMETER_TYPE, true,1644 PS_ERRORTEXT_psFunctions_INVALID_POLYNOMIAL_TYPE,1645 poly->type);1646 }1647 return(NAN);1648 }1649 1650 psVector *psDPolynomial2DEvalVector(const psDPolynomial2D *poly,1651 const psVector *x,1652 const psVector *y)1653 {1654 PS_ASSERT_POLY_NON_NULL(poly, NULL);1655 PS_ASSERT_VECTOR_NON_NULL(x, NULL);1656 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F64, NULL);1657 PS_ASSERT_VECTOR_NON_NULL(y, NULL);1658 PS_ASSERT_VECTOR_TYPE(y, PS_TYPE_F64, NULL);1659 1660 psVector *tmp;1661 psS32 vecLen=x->n;1662 1663 // Determine the output vector length from minimum length of input vectors1664 if (y->n < vecLen) {1665 vecLen = y->n;1666 }1667 1668 // Allocate output vector1669 tmp = psVectorAlloc(vecLen, PS_TYPE_F64);1670 1671 // Evaluate the polynomial1672 for (psS32 i = 0; i < vecLen; i++) {1673 tmp->data.F64[i] = psDPolynomial2DEval(poly,x->data.F64[i],y->data.F64[i]);1674 }1675 1676 // Return output vector1677 return(tmp);1678 }1679 1680 1681 psF64 psDPolynomial3DEval(const psDPolynomial3D* poly,1682 psF64 x,1683 psF64 y,1684 psF64 z)1685 {1686 PS_ASSERT_POLY_NON_NULL(poly, NAN);1687 1688 if (poly->type == PS_POLYNOMIAL_ORD) {1689 return(dOrdPolynomial3DEval(x, y, z, poly));1690 } else if (poly->type == PS_POLYNOMIAL_CHEB) {1691 return(dChebPolynomial3DEval(x, y, z, poly));1692 } else {1693 psError(PS_ERR_BAD_PARAMETER_TYPE, true,1694 PS_ERRORTEXT_psFunctions_INVALID_POLYNOMIAL_TYPE,1695 poly->type);1696 }1697 return(NAN);1698 }1699 1700 psVector *psDPolynomial3DEvalVector(const psDPolynomial3D *poly,1701 const psVector *x,1702 const psVector *y,1703 const psVector *z)1704 1705 {1706 PS_ASSERT_POLY_NON_NULL(poly, NULL);1707 PS_ASSERT_VECTOR_NON_NULL(x, NULL);1708 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F64, NULL);1709 PS_ASSERT_VECTOR_NON_NULL(y, NULL);1710 PS_ASSERT_VECTOR_TYPE(y, PS_TYPE_F64, NULL);1711 PS_ASSERT_VECTOR_NON_NULL(z, NULL);1712 PS_ASSERT_VECTOR_TYPE(z, PS_TYPE_F64, NULL);1713 1714 psVector *tmp;1715 psS32 vecLen=x->n;1716 1717 // Determine the size of output vector from min of input vectors1718 if (y->n < vecLen) {1719 vecLen = y->n;1720 }1721 if (z->n < vecLen) {1722 vecLen = z->n;1723 }1724 1725 // Allocate output vector1726 tmp = psVectorAlloc(vecLen, PS_TYPE_F64);1727 1728 // Evaluate polynomial1729 for (psS32 i = 0; i < vecLen; i++) {1730 tmp->data.F64[i] = psDPolynomial3DEval(poly,1731 x->data.F64[i],1732 y->data.F64[i],1733 z->data.F64[i]);1734 }1735 1736 // Return output vector1737 return(tmp);1738 }1739 1740 psF64 psDPolynomial4DEval(const psDPolynomial4D* poly,1741 psF64 x,1742 psF64 y,1743 psF64 z,1744 psF64 t)1745 {1746 PS_ASSERT_POLY_NON_NULL(poly, NAN);1747 1748 if (poly->type == PS_POLYNOMIAL_ORD) {1749 return(dOrdPolynomial4DEval(x,y,z,t, poly));1750 } else if (poly->type == PS_POLYNOMIAL_CHEB) {1751 return(dChebPolynomial4DEval(x,y,z,t, poly));1752 } else {1753 psError(PS_ERR_BAD_PARAMETER_TYPE, true,1754 PS_ERRORTEXT_psFunctions_INVALID_POLYNOMIAL_TYPE,1755 poly->type);1756 }1757 return(NAN);1758 }1759 1760 psVector *psDPolynomial4DEvalVector(const psDPolynomial4D *poly,1761 const psVector *x,1762 const psVector *y,1763 const psVector *z,1764 const psVector *t)1765 1043 { 1766 1044 PS_ASSERT_POLY_NON_NULL(poly, NULL); … … 1777 1055 psS32 vecLen=x->n; 1778 1056 1779 // Determine theoutput vector size from min of input vectors1057 // Determine output vector size from min of input vectors 1780 1058 if (z->n < vecLen) { 1781 1059 vecLen = z->n; … … 1791 1069 tmp = psVectorAlloc(vecLen, PS_TYPE_F64); 1792 1070 1793 // Evaluate thepolynomial1071 // Evaluate polynomial 1794 1072 for (psS32 i = 0; i < vecLen; i++) { 1795 tmp->data.F64[i] = ps DPolynomial4DEval(poly,1796 x->data.F64[i],1797 y->data.F64[i],1798 z->data.F64[i],1799 t->data.F64[i]);1073 tmp->data.F64[i] = psPolynomial4DEval(poly, 1074 x->data.F64[i], 1075 y->data.F64[i], 1076 z->data.F64[i], 1077 t->data.F64[i]); 1800 1078 } 1801 1079 … … 1803 1081 return(tmp); 1804 1082 } 1805 1806 1807 1808 1083 1809 1084 //typedef struct { -
trunk/psLib/src/math/psFunctions.h
r4568 r4581 12 12 * @author GLG, MHPCC 13 13 * 14 * @version $Revision: 1. 2$ $Name: not supported by cvs2svn $15 * @date $Date: 2005-07- 16 00:06:32$14 * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $ 15 * @date $Date: 2005-07-20 01:21:13 $ 16 16 * 17 17 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 74 74 { 75 75 psPolynomialType type; ///< Polynomial type 76 psElemType ctype; ///< Polynomial precision77 76 int n; ///< Number of terms 78 psF 32*coeff; ///< Coefficients79 psF 32*coeffErr; ///< Error in coefficients77 psF64 *coeff; ///< Coefficients 78 psF64 *coeffErr; ///< Error in coefficients 80 79 char *mask; ///< Coefficient mask 81 80 } … … 86 85 { 87 86 psPolynomialType type; ///< Polynomial type 88 psElemType ctype; ///< Polynomial precision89 87 int nX; ///< Number of terms in x 90 88 int nY; ///< Number of terms in y 91 psF 32**coeff; ///< Coefficients92 psF 32**coeffErr; ///< Error in coefficients89 psF64 **coeff; ///< Coefficients 90 psF64 **coeffErr; ///< Error in coefficients 93 91 char **mask; ///< Coefficients mask 94 92 } … … 99 97 { 100 98 psPolynomialType type; ///< Polynomial type 101 psElemType ctype; ///< Polynomial precision102 99 int nX; ///< Number of terms in x 103 100 int nY; ///< Number of terms in y 104 101 int nZ; ///< Number of terms in z 105 psF 32***coeff; ///< Coefficients106 psF 32***coeffErr; ///< Error in coefficients102 psF64 ***coeff; ///< Coefficients 103 psF64 ***coeffErr; ///< Error in coefficients 107 104 char ***mask; ///< Coefficients mask 108 105 } … … 113 110 { 114 111 psPolynomialType type; ///< Polynomial type 115 psElemType ctype; ///< Polynomial precision116 112 int nX; ///< Number of terms in x 117 113 int nY; ///< Number of terms in y 118 114 int nZ; ///< Number of terms in z 119 115 int nT; ///< Number of terms in t 120 psF 32****coeff; ///< Coefficients121 psF 32****coeffErr; ///< Error in coefficients116 psF64 ****coeff; ///< Coefficients 117 psF64 ****coeffErr; ///< Error in coefficients 122 118 char ****mask; ///< Coefficients mask 123 119 } … … 251 247 ); 252 248 253 /*****************************************************************************/254 255 /* Double-precision polynomials, mainly for use in astrometry */256 257 /** Double-precision one-dimensional polynomial */258 typedef struct259 {260 psPolynomialType type; ///< Polynomial type261 int n; ///< Number of terms262 psF64 *coeff; ///< Coefficients263 psF64 *coeffErr; ///< Error in coefficients264 char *mask; ///< Coefficient mask265 }266 psDPolynomial1D;267 268 /** Double-precision two-dimensional polynomial */269 typedef struct270 {271 psPolynomialType type; ///< Polynomial type272 int nX; ///< Number of terms in x273 int nY; ///< Number of terms in y274 psF64 **coeff; ///< Coefficients275 psF64 **coeffErr; ///< Error in coefficients276 char **mask; ///< Coefficients mask277 }278 psDPolynomial2D;279 280 /** Double-precision three-dimensional polynomial */281 typedef struct282 {283 psPolynomialType type; ///< Polynomial type284 int nX; ///< Number of terms in x285 int nY; ///< Number of terms in y286 int nZ; ///< Number of terms in z287 psF64 ***coeff; ///< Coefficients288 psF64 ***coeffErr; ///< Error in coefficients289 char ***mask; ///< Coefficient mask290 }291 psDPolynomial3D;292 293 /** Double-precision four-dimensional polynomial */294 typedef struct295 {296 psPolynomialType type; ///< Polynomial type297 int nX; ///< Number of terms in w298 int nY; ///< Number of terms in x299 int nZ; ///< Number of terms in y300 int nT; ///< Number of terms in z301 psF64 ****coeff; ///< Coefficients302 psF64 ****coeffErr; ///< Error in coefficients303 char ****mask; ///< Coefficients mask304 }305 psDPolynomial4D;306 307 /** Allocates a double-precision 1-D polynomial structure with n terms308 *309 * @return psPolynomial1D* new double-precision 1-D polynomial struct310 */311 psDPolynomial1D* psDPolynomial1DAlloc(312 int n, ///< Number of terms313 psPolynomialType type ///< Polynomial Type314 );315 316 /** Allocates a double-precision 2-D polynomial structure317 *318 * @return psPolynomial2D* new double-precision 2-D polynomial struct319 */320 psDPolynomial2D* psDPolynomial2DAlloc(321 int nX, ///< Number of terms in x322 int nY, ///< Number of terms in y323 psPolynomialType type ///< Polynomial Type324 );325 326 /** Allocates a double-precision 3-D polynomial structure327 *328 * @return psPolynomial3D* new double-precision 3-D polynomial struct329 */330 psDPolynomial3D* psDPolynomial3DAlloc(331 int nX, ///< Number of terms in x332 int nY, ///< Number of terms in y333 int nZ, ///< Number of terms in z334 psPolynomialType type ///< Polynomial Type335 );336 337 /** Allocates a double-precision 4-D polynomial structure338 *339 * @return psPolynomial4D* new double-precision 4-D polynomial struct340 */341 psDPolynomial4D* psDPolynomial4DAlloc(342 int nX, ///< Number of terms in w343 int nY, ///< Number of terms in x344 int nZ, ///< Number of terms in y345 int nT, ///< Number of terms in z346 psPolynomialType type ///< Polynomial Type347 );348 349 /** Evaluates a double-precision 1-D polynomial at specific coordinates.350 *351 * @return psF32 result of polynomial at given location352 */353 psF64 psDPolynomial1DEval(354 const psDPolynomial1D* poly, ///< Coefficients for the polynomial355 psF64 x ///< Value at which to evaluate356 );357 358 /** Evaluates a double-precision 2-D polynomial at specific coordinates.359 *360 * @return psF32 result of polynomial at given location361 */362 psF64 psDPolynomial2DEval(363 const psDPolynomial2D* poly, ///< Coefficients for the polynomial364 psF64 x, ///< Value x at which to evaluate365 psF64 y ///< Value y at which to evaluate366 );367 368 /** Evaluates a double-precision 3-D polynomial at specific coordinates.369 *370 * @return psF64 result of polynomial at given location371 */372 psF64 psDPolynomial3DEval(373 const psDPolynomial3D* poly, ///< Coefficients for the polynomial374 psF64 x, ///< Value x at which to evaluate375 psF64 y, ///< Value y at which to evaluate376 psF64 z ///< Value z at which to evaluate377 );378 379 /** Evaluates a double-precision 4-D polynomial at specific coordinates.380 *381 * @return psF64 result of polynomial at given location382 */383 psF64 psDPolynomial4DEval(384 const psDPolynomial4D* poly, ///< Coefficients for the polynomial385 psF64 x, ///< Value w at which to evaluate386 psF64 y, ///< Value x at which to evaluate387 psF64 z, ///< Value y at which to evaluate388 psF64 t ///< Value z at which to evaluate389 );390 391 /** Evaluates a double-precision 1-D polynomial at specific sets of coordinates.392 *393 * @return psVector* results of polynomial at given locations394 */395 psVector *psDPolynomial1DEvalVector(396 const psDPolynomial1D *poly, ///< Coefficients for the polynomial397 const psVector *x ///< x locations at which to evaluate398 );399 400 /** Evaluates a double-precision 2-D polynomial at specific sets of coordinates.401 *402 * @return psVector* results of polynomial at given locations403 */404 psVector *psDPolynomial2DEvalVector(405 const psDPolynomial2D *poly, ///< Coefficients for the polynomial406 const psVector *x, ///< x locations at which to evaluate407 const psVector *y ///< y locations at which to evaluate408 );409 410 /** Evaluates a double-precision 3-D polynomial at specific sets of coordinates.411 *412 * @return psVector* results of polynomial at given locations413 */414 psVector *psDPolynomial3DEvalVector(415 const psDPolynomial3D *poly, ///< Coefficients for the polynomial416 const psVector *x, ///< x locations at which to evaluate417 const psVector *y, ///< y locations at which to evaluate418 const psVector *z ///< z locations at which to evaluate419 );420 421 /** Evaluates a double-precision 4-D polynomial at specific sets of coordinates.422 *423 * @return psVector* results of polynomial at given locations424 */425 psVector *psDPolynomial4DEvalVector(426 const psDPolynomial4D *poly, ///< Coefficients for the polynomial427 const psVector *x, ///< w locations at which to evaluate428 const psVector *y, ///< x locations at which to evaluate429 const psVector *z, ///< y locations at which to evaluate430 const psVector *t ///< z locations at which to evaluate431 );432 249 433 250 /** One-Dimensional Spline */ -
trunk/psLib/test/astro/tst_psCoord.c
r4547 r4581 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1. 1$ $Name: not supported by cvs2svn $9 * @date $Date: 2005-07- 13 02:46:58$8 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2005-07-20 01:21:13 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 265 265 { 266 266 psPlane* out = NULL; 267 ps DPolynomial2D* tmp2DPoly = NULL;267 psPolynomial2D* tmp2DPoly = NULL; 268 268 psPlane* rc; 269 269 … … 359 359 psPlane* out = NULL; 360 360 psPlane* rc = NULL; 361 ps DPolynomial4D* tmp4DPoly = NULL;361 psPolynomial4D* tmp4DPoly = NULL; 362 362 363 363 // Allocate input coordinate -
trunk/psLib/test/astronomy/tst_psAstrometry01.c
r4392 r4581 5 5 * @author GLG, MHPCC 6 6 * 7 * @version $Revision: 1.3 2$ $Name: not supported by cvs2svn $8 * @date $Date: 2005-0 6-25 02:02:05$7 * @version $Revision: 1.33 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2005-07-20 01:21:13 $ 9 9 * 10 10 * XXX: Must test … … 113 113 NAME = (psPlaneTransform *) psAlloc(sizeof(psPlaneTransform)); \ 114 114 psMemSetDeallocator(NAME, (psFreeFunc) psPlaneTransformFree); \ 115 NAME->x = ps DPolynomial2DAlloc(2, 2, PS_POLYNOMIAL_ORD); \116 NAME->y = ps DPolynomial2DAlloc(2, 2, PS_POLYNOMIAL_ORD); \115 NAME->x = psPolynomial2DAlloc(2, 2, PS_POLYNOMIAL_ORD); \ 116 NAME->y = psPolynomial2DAlloc(2, 2, PS_POLYNOMIAL_ORD); \ 117 117 NAME->x->coeff[1][0] = 1.0; \ 118 118 NAME->y->coeff[0][1] = 1.0; \ … … 123 123 NAME = (psPlaneDistort *) psAlloc(sizeof(psPlaneDistort)); \ 124 124 psMemSetDeallocator(NAME, (psFreeFunc) psPlaneDistortFree); \ 125 NAME->x = ps DPolynomial4DAlloc(2, 2, 2, 2, PS_POLYNOMIAL_ORD); \126 NAME->y = ps DPolynomial4DAlloc(2, 2, 2, 2, PS_POLYNOMIAL_ORD); \125 NAME->x = psPolynomial4DAlloc(2, 2, 2, 2, PS_POLYNOMIAL_ORD); \ 126 NAME->y = psPolynomial4DAlloc(2, 2, 2, 2, PS_POLYNOMIAL_ORD); \ 127 127 NAME->x->coeff[1][0][0][0] = 1.0; \ 128 128 NAME->y->coeff[0][1][0][0] = 1.0; \ -
trunk/psLib/test/db/verified/tst_psDB.stderr
r4547 r4581 168 168 Following should generate an error message for invalid table 169 169 <DATE><TIME>|<HOST>|E|p_psDBRunQuery (FILE:LINENO) 170 Failed to execute SQL query. Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'null) ' at line 1170 Failed to execute SQL query. Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'null) WHERE key_s32=1974' at line 1 171 171 <DATE><TIME>|<HOST>|E|psDBSelectRows (FILE:LINENO) 172 172 Query execution failed. -
trunk/psLib/test/imageops/verified/tst_psImageStats.stderr
r4547 r4581 610 610 pixel [0][3] is 320.00 should be 64.00 611 611 pixel [0][4] is 545.00 should be 109.00 612 The chi-squared per pixel is 54524.8 1612 The chi-squared per pixel is 54524.80 613 613 psImageFitPolynomial(), psImageEvalPolynom(): (5 by 5) 614 614 The chi-squared per pixel is 0.00 -
trunk/psLib/test/math/tst_psFunc00.c
r4547 r4581 4 4 * allocated and deallocated by the psPolynomialXXXlloc() procedures. 5 5 * It also calls the various psPolynomialXXXEval() procedures. 6 * 6 * 7 7 * The F32 and F64 polynomials are tested for all orders (1 - 4) and for 8 8 * both ordinary and chebyshev polynomials. 9 * 9 * 10 10 * NOTE: This test code requries the stdout file to verify that the results 11 11 * are good. 12 * 12 * 13 13 * XXX: Modify these tests so that polynomials with a variety of different 14 14 * orders are created. 15 * 16 * @version $Revision: 1. 1$ $Name: not supported by cvs2svn $17 * @date $Date: 2005-07- 13 02:47:00$15 * 16 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $ 17 * @date $Date: 2005-07-20 01:21:13 $ 18 18 * 19 19 * Copyright 2004-2005 Maui High Performance Computing Center, Univ. of Hawaii 20 * 20 * 21 21 *****************************************************************************/ 22 22 #include <stdio.h> … … 31 31 static psS32 testPolynomial3DAlloc(void); 32 32 static psS32 testPolynomial4DAlloc(void); 33 static psS32 testDPolynomial1DAlloc(void);34 static psS32 testDPolynomial2DAlloc(void);35 static psS32 testDPolynomial3DAlloc(void);36 static psS32 testDPolynomial4DAlloc(void);37 33 38 34 testDescription tests[] = { … … 41 37 {testPolynomial3DAlloc,578,"psPolynomial3DAlloc",0,false}, 42 38 {testPolynomial4DAlloc,578,"psPolynomial4DAlloc",0,false}, 43 {testDPolynomial1DAlloc,579,"psDPolynomial1DAlloc",0,false},44 {testDPolynomial2DAlloc,579,"psDPolynomial2DAlloc",0,false},45 {testDPolynomial3DAlloc,579,"psDPolynomial3DAlloc",0,false},46 {testDPolynomial4DAlloc,579,"psDPolynomial4DAlloc",0,false},47 39 {NULL} 48 40 }; … … 109 101 } 110 102 111 // This test will allocate a 1D polynomial and verify the structure allocated112 psS32 testDPolynomial1DAlloc(void)113 {114 psDPolynomial1D* my1DDPoly = NULL;115 116 // Allocate polynomial117 my1DDPoly = psDPolynomial1DAlloc(ORDER,PS_POLYNOMIAL_CHEB);118 // Verify structure allocated119 if(my1DDPoly == NULL) {120 psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");121 return 1;122 }123 // Verify polynomial structure members set properly124 if(my1DDPoly->n != ORDER) {125 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",126 my1DDPoly->n, ORDER);127 return 2;128 }129 if(my1DDPoly->type != PS_POLYNOMIAL_CHEB) {130 psError(PS_ERR_UNKNOWN,true,"Type %d not as expected %d",131 my1DDPoly->type, PS_POLYNOMIAL_CHEB);132 return 3;133 }134 for(psS32 i = 0; i < ORDER; i++) {135 if(my1DDPoly->coeff[i] != 0.0) {136 psError(PS_ERR_UNKNOWN,true,"Coeff[%d] %lg not as expected %lg",137 i, my1DDPoly->coeff[i], 0.0);138 return 4;139 }140 if(my1DDPoly->coeffErr[i] != 0.0) {141 psError(PS_ERR_UNKNOWN,true,"CoeffErr[%d] %lg not as expected %lg",142 i, my1DDPoly->coeffErr[i], 0.0);143 return 5;144 }145 if(my1DDPoly->mask[i] != 0) {146 psError(PS_ERR_UNKNOWN,true,"Mask[%d] %d not as expected %d",147 i, my1DDPoly->mask[i], 0);148 return 6;149 }150 }151 psFree(my1DDPoly);152 153 /* // Attempt to allocate with negative order154 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");155 if(psDPolynomial1DAlloc(-1,PS_POLYNOMIAL_ORD) != NULL) {156 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");157 return 7;158 }159 */160 return 0;161 }162 163 103 // This test will allocate a 2D polynomial and verify the structure allocated 164 104 psS32 testPolynomial2DAlloc(void) … … 220 160 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms"); 221 161 if(psPolynomial2DAlloc(1,-1,PS_POLYNOMIAL_ORD) != NULL) { 222 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");223 return 9;224 }225 */226 return 0;227 }228 229 // This test will allocate a 2D polynomial and verify the structure allocated230 psS32 testDPolynomial2DAlloc(void)231 {232 psDPolynomial2D* my2DDPoly = NULL;233 234 // Allocate polynomial235 my2DDPoly = psDPolynomial2DAlloc(ORDER,ORDER+1,PS_POLYNOMIAL_CHEB);236 // Verify structure allocated237 if(my2DDPoly == NULL) {238 psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");239 return 1;240 }241 // Verify polynomial structure members set properly242 if(my2DDPoly->nX != ORDER) {243 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",244 my2DDPoly->nX, ORDER);245 return 2;246 }247 // Verify polynomial structure members set properly248 if(my2DDPoly->nY != ORDER+1) {249 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",250 my2DDPoly->nY, ORDER+1);251 return 3;252 }253 if(my2DDPoly->type != PS_POLYNOMIAL_CHEB) {254 psError(PS_ERR_UNKNOWN,true,"Type %d not as expected %d",255 my2DDPoly->type, PS_POLYNOMIAL_ORD);256 return 4;257 }258 for(psS32 i = 0; i < ORDER; i++) {259 for(psS32 j = 0; j < ORDER+1; j++) {260 if(my2DDPoly->coeff[i][j] != 0.0) {261 psError(PS_ERR_UNKNOWN,true,"Coeff[%d][%d] %lg not as expected %lg",262 i, j, my2DDPoly->coeff[i][j], 0.0);263 return 5;264 }265 if(my2DDPoly->coeffErr[i][j] != 0.0) {266 psError(PS_ERR_UNKNOWN,true,"CoeffErr[%d][%d] %lg not as expected %lg",267 i, j, my2DDPoly->coeffErr[i][j], 0.0);268 return 6;269 }270 if(my2DDPoly->mask[i][j] != 0) {271 psError(PS_ERR_UNKNOWN,true,"Mask[%d][%d] %d not as expected %d",272 i, j, my2DDPoly->mask[i][j], 0);273 return 7;274 }275 }276 }277 psFree(my2DDPoly);278 /*279 // Attempt to allocate with negative order280 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");281 if(psDPolynomial2DAlloc(-1,1,PS_POLYNOMIAL_ORD) != NULL) {282 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");283 return 8;284 }285 // Attempt to allocate with negative order286 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");287 if(psDPolynomial2DAlloc(1,-1,PS_POLYNOMIAL_ORD) != NULL) {288 162 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL"); 289 163 return 9; … … 366 240 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms"); 367 241 if(psPolynomial3DAlloc(1,1,-1,PS_POLYNOMIAL_ORD) != NULL) { 368 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");369 return 11;370 }371 */372 return 0;373 }374 375 // This test will allocate a 3D polynomial and verify the structure allocated376 psS32 testDPolynomial3DAlloc(void)377 {378 psDPolynomial3D* my3DDPoly = NULL;379 380 // Allocate polynomial381 my3DDPoly = psDPolynomial3DAlloc(ORDER,ORDER+1,ORDER+2,PS_POLYNOMIAL_CHEB);382 // Verify structure allocated383 if(my3DDPoly == NULL) {384 psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");385 return 1;386 }387 // Verify polynomial structure members set properly388 if(my3DDPoly->nX != ORDER) {389 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",390 my3DDPoly->nX, ORDER);391 return 2;392 }393 // Verify polynomial structure members set properly394 if(my3DDPoly->nY != ORDER+1) {395 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",396 my3DDPoly->nY, ORDER+1);397 return 3;398 }399 // Verify polynomial structure members set properly400 if(my3DDPoly->nZ != ORDER+2) {401 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",402 my3DDPoly->nZ, ORDER+2);403 return 4;404 }405 if(my3DDPoly->type != PS_POLYNOMIAL_CHEB) {406 psError(PS_ERR_UNKNOWN,true,"Type %d not as expected %d",407 my3DDPoly->type, PS_POLYNOMIAL_ORD);408 return 5;409 }410 for(psS32 i = 0; i < ORDER; i++) {411 for(psS32 j = 0; j < ORDER+1; j++) {412 for(psS32 k = 0; k < ORDER+2; k++) {413 if(my3DDPoly->coeff[i][j][k] != 0.0) {414 psError(PS_ERR_UNKNOWN,true,"Coeff[%d][%d][%d] %lg not as expected %lg",415 i, j, k, my3DDPoly->coeff[i][j][k], 0.0);416 return 6;417 }418 if(my3DDPoly->coeffErr[i][j][k] != 0.0) {419 psError(PS_ERR_UNKNOWN,true,"CoeffErr[%d][%d][%d] %lg not as expected %lg",420 i, j, k, my3DDPoly->coeffErr[i][j][k], 0.0);421 return 7;422 }423 if(my3DDPoly->mask[i][j][k] != 0) {424 psError(PS_ERR_UNKNOWN,true,"Mask[%d][%d] %d not as expected %d",425 i, j, k, my3DDPoly->mask[i][j][k], 0);426 return 8;427 }428 }429 }430 }431 psFree(my3DDPoly);432 433 /* // Attempt to allocate with negative order434 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");435 if(psDPolynomial3DAlloc(-1,1,1,PS_POLYNOMIAL_ORD) != NULL) {436 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");437 return 9;438 }439 // Attempt to allocate with negative order440 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");441 if(psDPolynomial3DAlloc(1,-1,1,PS_POLYNOMIAL_ORD) != NULL) {442 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");443 return 10;444 }445 // Attempt to allocate with negative order446 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");447 if(psDPolynomial3DAlloc(1,1,-1,PS_POLYNOMIAL_ORD) != NULL) {448 242 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL"); 449 243 return 11; … … 547 341 } 548 342 549 // This test will allocate a 4D polynomial and verify the structure allocated550 psS32 testDPolynomial4DAlloc(void)551 {552 psDPolynomial4D* my4DDPoly = NULL;553 554 // Allocate polynomial555 my4DDPoly = psDPolynomial4DAlloc(ORDER+3,ORDER,ORDER+1,ORDER+2,PS_POLYNOMIAL_ORD);556 // Verify structure allocated557 if(my4DDPoly == NULL) {558 psError(PS_ERR_UNKNOWN,true,"Returned NULL not expected");559 return 1;560 }561 // Verify polynomial structure members set properly562 if(my4DDPoly->nY != ORDER) {563 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",564 my4DDPoly->nY, ORDER);565 return 2;566 }567 // Verify polynomial structure members set properly568 if(my4DDPoly->nZ != ORDER+1) {569 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",570 my4DDPoly->nZ, ORDER+1);571 return 3;572 }573 // Verify polynomial structure members set properly574 if(my4DDPoly->nT != ORDER+2) {575 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",576 my4DDPoly->nT, ORDER+2);577 return 4;578 }579 // Verify polynomial structure members set properly580 if(my4DDPoly->nX != ORDER+3) {581 psError(PS_ERR_UNKNOWN,true,"Number of terms %d not as expected %d",582 my4DDPoly->nX, ORDER+3);583 return 5;584 }585 if(my4DDPoly->type != PS_POLYNOMIAL_ORD) {586 psError(PS_ERR_UNKNOWN,true,"Type %d not as expected %d",587 my4DDPoly->type, PS_POLYNOMIAL_ORD);588 return 6;589 }590 for(psS32 i = 0; i < ORDER+3; i++) {591 for(psS32 j = 0; j < ORDER; j++) {592 for(psS32 k = 0; k < ORDER+1; k++) {593 for(psS32 l = 0; l < ORDER+2; l++) {594 if(my4DDPoly->coeff[i][j][k][l] != 0.0) {595 psError(PS_ERR_UNKNOWN,true,"Coeff[%d][%d][%d][%d] %lg not as expected %lg",596 i, j, k, l, my4DDPoly->coeff[i][j][k][l], 0.0);597 return 7;598 }599 if(my4DDPoly->coeffErr[i][j][k][l] != 0.0) {600 psError(PS_ERR_UNKNOWN,true,"CoeffErr[%d][%d][%d][l] %lg not as expected %lg",601 i, j, k, l, my4DDPoly->coeffErr[i][j][k][l], 0.0);602 return 8;603 }604 if(my4DDPoly->mask[i][j][k][l] != 0) {605 psError(PS_ERR_UNKNOWN,true,"Mask[%d][%d][%d][%d] %d not as expected %d",606 i, j, k, l, my4DDPoly->mask[i][j][k][l], 0);607 return 9;608 }609 }610 }611 }612 }613 psFree(my4DDPoly);614 615 /* // Attempt to allocate with negative order616 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");617 if(psDPolynomial4DAlloc(-1,1,1,1,PS_POLYNOMIAL_ORD) != NULL) {618 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");619 return 10;620 }621 // Attempt to allocate with negative order622 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");623 if(psDPolynomial4DAlloc(1,-1,1,1,PS_POLYNOMIAL_ORD) != NULL) {624 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");625 return 11;626 }627 // Attempt to allocate with negative order628 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");629 if(psDPolynomial4DAlloc(1,1,-1,1,PS_POLYNOMIAL_ORD) != NULL) {630 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");631 return 12;632 }633 // Attempt to allocate with negative order634 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error msg for negative terms");635 if(psDPolynomial4DAlloc(1,1,1,-1,PS_POLYNOMIAL_ORD) != NULL) {636 psError(PS_ERR_UNKNOWN,true,"Returned structure but expected NULL");637 return 13;638 }639 */640 return 0;641 }642 -
trunk/psLib/test/math/tst_psFunc08.c
r4547 r4581 4 4 * ORD and CHEB type polynomials. 5 5 * 6 * @version $Revision: 1. 1$ $Name: not supported by cvs2svn $7 * @date $Date: 2005-07- 13 02:47:00$6 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2005-07-20 01:21:13 $ 8 8 * 9 9 * XXX: Probably should test single- and multi-dimensional polynomials in … … 22 22 23 23 static psS32 testPoly1DEval(void); 24 static psS32 testDPoly1DEval(void);25 24 static psS32 testPoly1DEvalVector(void); 26 static psS32 testDPoly1DEvalVector(void);27 25 28 26 testDescription tests[] = { 29 27 {testPoly1DEval,000,"psPolynomial1DEval",0,false}, 30 {testDPoly1DEval,000,"psDPolynomial1DEval",0,false},31 28 {testPoly1DEvalVector,000,"psPolynomial1DEvalVector",0,false}, 32 {testDPoly1DEvalVector,000,"psDPolynomial1DEvalVector",0,false},33 29 {NULL} 34 30 }; … … 58 54 psS32 testPoly1DEval(void) 59 55 { 60 psF 32result;61 psF 32resultCheb;56 psF64 result; 57 psF64 resultCheb; 62 58 63 59 // Allocate polynomial structure … … 103 99 } 104 100 105 // This test will verify operation of 1D polynomial evaluation106 psS32 testDPoly1DEval(void)107 {108 psF64 result;109 psF64 resultCheb;110 111 // Allocate polynomial structure112 psDPolynomial1D* polyOrd = psDPolynomial1DAlloc(TERMS, PS_POLYNOMIAL_ORD);113 psDPolynomial1D* polyCheb = psDPolynomial1DAlloc(TERMS, PS_POLYNOMIAL_CHEB);114 // Set polynomial members115 for(psS32 i = 0; i < TERMS; i++) {116 polyOrd->coeff[i] = Dpoly1DCoeff[i];117 polyOrd->mask[i] = poly1DMask[i];118 polyCheb->coeff[i] = 1.0;119 polyCheb->mask[i] = poly1DMask[i];120 }121 // Evaluate test points and verify results122 for(psS32 i = 0; i < TESTPOINTS; i++) {123 result = psDPolynomial1DEval(polyOrd,Dpoly1DXValue[i]);124 if(fabs(Dpoly1DXResult[i]-result) > ERROR_TOL ) {125 psError(PS_ERR_UNKNOWN,true,"Evaluated value %lg not as expected %lg",126 result, Dpoly1DXResult[i]);127 return i;128 }129 resultCheb = psDPolynomial1DEval(polyCheb,Dpoly1DXChebValue[i]);130 if(fabs(Dpoly1DXChebResult[i]-resultCheb) > ERROR_TOL ) {131 psError(PS_ERR_UNKNOWN,true,"Evaluated Chebyshev value %lg not as expected %lg",132 resultCheb, Dpoly1DXChebResult[i]);133 return 5*i;134 }135 }136 psFree(polyOrd);137 psFree(polyCheb);138 139 // Allocate polynomial with invalid type140 polyOrd = psDPolynomial1DAlloc(TERMS, 99);141 // Attempt to evaluation invalid polynomial type142 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error message invalid type");143 result = psDPolynomial1DEval(polyOrd,0.0);144 if ( !isnan(result) ) {145 psError(PS_ERR_UNKNOWN,true,"Did not return NAN for invalid polynomial type");146 return 20;147 }148 psFree(polyOrd);149 150 return 0;151 }152 101 153 102 psS32 testPoly1DEvalVector(void) … … 156 105 psPolynomial1D* polyOrd = psPolynomial1DAlloc(TERMS,PS_POLYNOMIAL_ORD); 157 106 psPolynomial1D* polyCheb = psPolynomial1DAlloc(TERMS,PS_POLYNOMIAL_CHEB); 158 159 // Set polynomial members160 for(psS32 i = 0; i < TERMS; i++) {161 polyOrd->coeff[i] = poly1DCoeff[i];162 polyOrd->mask[i] = poly1DMask[i];163 polyCheb->coeff[i] = 1.0;164 polyCheb->mask[i] = poly1DMask[i];165 }166 167 // Create input vectors168 psVector* inputOrd = psVectorAlloc(TESTPOINTS, PS_TYPE_F32);169 psVector* inputCheb = psVectorAlloc(TESTPOINTS, PS_TYPE_F32);170 for(psS32 i = 0; i < TESTPOINTS; i++) {171 inputOrd->data.F32[i] = poly1DXValue[i];172 inputCheb->data.F32[i] = poly1DXChebValue[i];173 }174 175 // Evaluate the vectors176 psVector* outputOrd = psPolynomial1DEvalVector(polyOrd, inputOrd);177 if(outputOrd == NULL) {178 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL.");179 return 1;180 }181 if(outputOrd->type.type != PS_TYPE_F32) {182 psError(PS_ERR_UNKNOWN,true,"Output vector of type %d expected %d",183 outputOrd->type.type, PS_TYPE_F32);184 return 2;185 }186 psVector* outputCheb = psPolynomial1DEvalVector(polyCheb, inputCheb);187 if(outputCheb == NULL) {188 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL.");189 return 1;190 }191 if(outputCheb->type.type != PS_TYPE_F32) {192 psError(PS_ERR_UNKNOWN,true,"Output vector of type %d expected %d",193 outputCheb->type.type, PS_TYPE_F32);194 return 2;195 }196 197 // Verify the results198 for(psS32 i = 0; i < TESTPOINTS; i++) {199 if(fabs(poly1DXResult[i]-outputOrd->data.F32[i]) > ERROR_TOL) {200 psError(PS_ERR_UNKNOWN,true,"Result[%d] %g not equal to expected %g",201 i, outputOrd->data.F32[i], poly1DXResult[i]);202 return i*5;203 }204 if(fabs(poly1DXChebResult[i]-outputCheb->data.F32[i]) > ERROR_TOL) {205 psError(PS_ERR_UNKNOWN,true,"ResultCheb[%d] %g not equal to expected %g",206 i, outputCheb->data.F32[i], poly1DXChebResult[i]);207 return i*10;208 }209 }210 211 // Attempt to invoke function with null polynomial212 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL polynomial");213 if(psPolynomial1DEvalVector(NULL, inputOrd) != NULL) {214 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL polynomial");215 return 60;216 }217 218 // Attempt to invoke function with null input vector219 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector");220 if(psPolynomial1DEvalVector(polyOrd,NULL) != NULL) {221 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector");222 return 61;223 }224 225 // Attempt to invoke function with a non F32 type input vector226 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type");227 inputOrd->type.type = PS_TYPE_U8;228 if(psPolynomial1DEvalVector(polyOrd,inputOrd) != NULL) {229 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F32 input vector");230 return 62;231 }232 inputOrd->type.type = PS_TYPE_F32;233 234 psFree(inputOrd);235 psFree(inputCheb);236 psFree(outputOrd);237 psFree(outputCheb);238 psFree(polyOrd);239 psFree(polyCheb);240 241 return 0;242 }243 244 psS32 testDPoly1DEvalVector(void)245 {246 // Allocate polynomial247 psDPolynomial1D* polyOrd = psDPolynomial1DAlloc(TERMS,PS_POLYNOMIAL_ORD);248 psDPolynomial1D* polyCheb = psDPolynomial1DAlloc(TERMS,PS_POLYNOMIAL_CHEB);249 107 250 108 // Set polynomial members … … 265 123 266 124 // Evaluate the vectors 267 psVector* outputOrd = ps DPolynomial1DEvalVector(polyOrd, inputOrd);125 psVector* outputOrd = psPolynomial1DEvalVector(polyOrd, inputOrd); 268 126 if(outputOrd == NULL) { 269 127 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL."); … … 275 133 return 2; 276 134 } 277 psVector* outputCheb = ps DPolynomial1DEvalVector(polyCheb, inputCheb);135 psVector* outputCheb = psPolynomial1DEvalVector(polyCheb, inputCheb); 278 136 if(outputCheb == NULL) { 279 137 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL."); … … 302 160 // Attempt to invoke function with null polynomial 303 161 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL polynomial"); 304 if(ps DPolynomial1DEvalVector(NULL, inputOrd) != NULL) {162 if(psPolynomial1DEvalVector(NULL, inputOrd) != NULL) { 305 163 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL polynomial"); 306 164 return 60; … … 309 167 // Attempt to invoke function with null input vector 310 168 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 311 if(ps DPolynomial1DEvalVector(polyOrd,NULL) != NULL) {169 if(psPolynomial1DEvalVector(polyOrd,NULL) != NULL) { 312 170 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 313 171 return 61; … … 317 175 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 318 176 inputOrd->type.type = PS_TYPE_U8; 319 if(ps DPolynomial1DEvalVector(polyOrd,inputOrd) != NULL) {177 if(psPolynomial1DEvalVector(polyOrd,inputOrd) != NULL) { 320 178 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 321 179 return 62; -
trunk/psLib/test/math/tst_psFunc09.c
r4547 r4581 4 4 * ORD and CHEB type polynomials. 5 5 * 6 * @version $Revision: 1. 1$ $Name: not supported by cvs2svn $7 * @date $Date: 2005-07- 13 02:47:00$6 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2005-07-20 01:21:13 $ 8 8 * 9 9 * Copyright 2004-2005 Maui High Performance Computing Center, Univ. of Hawaii … … 19 19 20 20 static psS32 testPoly2DEval(void); 21 static psS32 testDPoly2DEval(void);22 21 static psS32 testPoly2DEvalVector(void); 23 static psS32 testDPoly2DEvalVector(void);24 22 25 23 testDescription tests[] = { 26 24 {testPoly2DEval,583,"psPolynomial2DEval",0,false}, 27 {testDPoly2DEval,582,"psDPolynomial2DEval",0,false},28 25 {testPoly2DEvalVector,000,"psPolynomial2DEvalVector",0,false}, 29 {testDPoly2DEvalVector,000,"psDPolynomial2DEvalVector",0,false},30 26 {NULL} 31 27 }; … … 85 81 86 82 // This test will verify operation of 1D polynomial evaluation 87 psS32 testPoly2DEval(void)83 /*psS32 testPoly2DEval(void) 88 84 { 89 85 psF32 result; 90 86 psF32 resultCheb; 91 87 92 88 // Allocate polynomial structure 93 89 psPolynomial2D* polyOrd = psPolynomial2DAlloc(TERMS, TERMS, PS_POLYNOMIAL_ORD); … … 119 115 psFree(polyOrd); 120 116 psFree(polyCheb); 121 117 122 118 // Allocate polynomial with invalid type 123 119 polyOrd = psPolynomial2DAlloc(TERMS, TERMS, 99); … … 130 126 } 131 127 psFree(polyOrd); 132 128 133 129 return 0; 134 130 } 135 131 */ 136 132 // This test will verify operation of 1D polynomial evaluation 137 psS32 test DPoly2DEval(void)133 psS32 testPoly2DEval(void) 138 134 { 139 135 psF64 result; … … 141 137 142 138 // Allocate polynomial structure 143 ps DPolynomial2D* polyOrd = psDPolynomial2DAlloc(TERMS, TERMS, PS_POLYNOMIAL_ORD);144 ps DPolynomial2D* polyCheb = psDPolynomial2DAlloc(TERMS, TERMS, PS_POLYNOMIAL_CHEB);139 psPolynomial2D* polyOrd = psPolynomial2DAlloc(TERMS, TERMS, PS_POLYNOMIAL_ORD); 140 psPolynomial2D* polyCheb = psPolynomial2DAlloc(TERMS, TERMS, PS_POLYNOMIAL_CHEB); 145 141 // Set polynomial members 146 142 for(psS32 i = 0; i < TERMS; i++) { … … 154 150 // Evaluate test points and verify results 155 151 for(psS32 i = 0; i < TESTPOINTS; i++) { 156 result = ps DPolynomial2DEval(polyOrd,Dpoly2DXYValue[i][0],Dpoly2DXYValue[i][1]);152 result = psPolynomial2DEval(polyOrd,Dpoly2DXYValue[i][0],Dpoly2DXYValue[i][1]); 157 153 if(fabs(Dpoly2DResult[i]-result) > ERROR_TOL ) { 158 154 psError(PS_ERR_UNKNOWN,true,"Evaluated value %lg not as expected %lg", … … 160 156 return i; 161 157 } 162 resultCheb = ps DPolynomial2DEval(polyCheb,Dpoly2DXYChebValue[i][0],Dpoly2DXYChebValue[i][1]);158 resultCheb = psPolynomial2DEval(polyCheb,Dpoly2DXYChebValue[i][0],Dpoly2DXYChebValue[i][1]); 163 159 if(fabs(Dpoly2DChebResult[i]-resultCheb) > ERROR_TOL ) { 164 160 psError(PS_ERR_UNKNOWN,true,"Evaluated Chebyshev value %lg not as expected %lg", … … 171 167 172 168 // Allocate polynomial with invalid type 173 polyOrd = ps DPolynomial2DAlloc(TERMS, TERMS, 99);169 polyOrd = psPolynomial2DAlloc(TERMS, TERMS, 99); 174 170 // Attempt to evaluation invalid polynomial type 175 171 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error message invalid type"); 176 result = ps DPolynomial2DEval(polyOrd,0.0, 0.0);172 result = psPolynomial2DEval(polyOrd,0.0, 0.0); 177 173 if ( !isnan(result) ) { 178 174 psError(PS_ERR_UNKNOWN,true,"Did not return NAN for invalid polynomial type"); … … 184 180 } 185 181 186 psS32 testPoly2DEvalVector(void)182 /*psS32 testPoly2DEvalVector(void) 187 183 { 188 184 // Allocate polynomial 189 185 psPolynomial2D* polyOrd = psPolynomial2DAlloc(TERMS,TERMS,PS_POLYNOMIAL_ORD); 190 186 psPolynomial2D* polyCheb = psPolynomial2DAlloc(TERMS,TERMS,PS_POLYNOMIAL_CHEB); 191 187 192 188 // Set polynomial members 193 189 for(psS32 i = 0; i < TERMS; i++) { … … 199 195 } 200 196 } 201 197 202 198 // Create input vectors 203 199 psVector* inputOrdX = psVectorAlloc(TESTPOINTS, PS_TYPE_F32); … … 211 207 inputChebY->data.F32[i] = poly2DXYChebValue[i][1]; 212 208 } 213 209 214 210 // Evaluate the vectors 215 211 psVector* outputOrd = psPolynomial2DEvalVector(polyOrd, inputOrdX, inputOrdY); … … 233 229 return 2; 234 230 } 235 231 236 232 // Verify the results 237 233 for(psS32 i = 0; i < TESTPOINTS; i++) { … … 247 243 } 248 244 } 249 245 250 246 // Attempt to invoke function with null polynomial 251 247 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL polynomial"); … … 254 250 return 60; 255 251 } 256 252 257 253 // Attempt to invoke function with null input vector 258 254 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); … … 267 263 return 62; 268 264 } 269 265 270 266 // Attempt to invoke function with a non F32 type input vector 271 267 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); … … 284 280 } 285 281 inputOrdY->type.type = PS_TYPE_F32; 286 282 287 283 psFree(inputOrdX); 288 284 psFree(inputOrdY); … … 293 289 psFree(polyOrd); 294 290 psFree(polyCheb); 295 291 296 292 return 0; 297 293 } 298 299 psS32 test DPoly2DEvalVector(void)294 */ 295 psS32 testPoly2DEvalVector(void) 300 296 { 301 297 // Allocate polynomial 302 ps DPolynomial2D* polyOrd = psDPolynomial2DAlloc(TERMS,TERMS,PS_POLYNOMIAL_ORD);303 ps DPolynomial2D* polyCheb = psDPolynomial2DAlloc(TERMS,TERMS,PS_POLYNOMIAL_CHEB);298 psPolynomial2D* polyOrd = psPolynomial2DAlloc(TERMS,TERMS,PS_POLYNOMIAL_ORD); 299 psPolynomial2D* polyCheb = psPolynomial2DAlloc(TERMS,TERMS,PS_POLYNOMIAL_CHEB); 304 300 305 301 // Set polynomial members … … 326 322 327 323 // Evaluate the vectors 328 psVector* outputOrd = ps DPolynomial2DEvalVector(polyOrd, inputOrdX, inputOrdY);324 psVector* outputOrd = psPolynomial2DEvalVector(polyOrd, inputOrdX, inputOrdY); 329 325 if(outputOrd == NULL) { 330 326 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL."); … … 336 332 return 2; 337 333 } 338 psVector* outputCheb = ps DPolynomial2DEvalVector(polyCheb, inputChebX, inputChebY);334 psVector* outputCheb = psPolynomial2DEvalVector(polyCheb, inputChebX, inputChebY); 339 335 if(outputCheb == NULL) { 340 336 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL."); … … 363 359 // Attempt to invoke function with null polynomial 364 360 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL polynomial"); 365 if(ps DPolynomial2DEvalVector(NULL, inputOrdX, inputOrdY) != NULL) {361 if(psPolynomial2DEvalVector(NULL, inputOrdX, inputOrdY) != NULL) { 366 362 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL polynomial"); 367 363 return 60; … … 370 366 // Attempt to invoke function with null input vector 371 367 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 372 if(ps DPolynomial2DEvalVector(polyOrd,NULL,inputOrdY) != NULL) {368 if(psPolynomial2DEvalVector(polyOrd,NULL,inputOrdY) != NULL) { 373 369 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 374 370 return 61; … … 376 372 // Attempt to invoke function with null input vector 377 373 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 378 if(ps DPolynomial2DEvalVector(polyOrd,inputOrdX,NULL) != NULL) {374 if(psPolynomial2DEvalVector(polyOrd,inputOrdX,NULL) != NULL) { 379 375 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 380 376 return 62; … … 384 380 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 385 381 inputOrdX->type.type = PS_TYPE_U8; 386 if(ps DPolynomial2DEvalVector(polyOrd,inputOrdX, inputOrdY) != NULL) {382 if(psPolynomial2DEvalVector(polyOrd,inputOrdX, inputOrdY) != NULL) { 387 383 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 388 384 return 63; … … 392 388 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 393 389 inputOrdY->type.type = PS_TYPE_U8; 394 if(ps DPolynomial2DEvalVector(polyOrd,inputOrdX, inputOrdY) != NULL) {390 if(psPolynomial2DEvalVector(polyOrd,inputOrdX, inputOrdY) != NULL) { 395 391 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 396 392 return 64; -
trunk/psLib/test/math/tst_psFunc10.c
r4547 r4581 4 4 * ORD and CHEB type polynomials. 5 5 * 6 * @version $Revision: 1. 1$ $Name: not supported by cvs2svn $7 * @date $Date: 2005-07- 13 02:47:00$6 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2005-07-20 01:21:13 $ 8 8 * 9 9 * Copyright 2004-2005 Maui High Performance Computing Center, Univ. of Hawaii … … 19 19 20 20 static psS32 testPoly3DEval(void); 21 static psS32 testDPoly3DEval(void);22 21 static psS32 testPoly3DEvalVector(void); 23 static psS32 testDPoly3DEvalVector(void);24 22 25 23 testDescription tests[] = { 26 24 {testPoly3DEval,583,"psPolynomial3DEval",0,false}, 27 {testDPoly3DEval,582,"psDPolynomial3DEval",0,false},28 25 {testPoly3DEvalVector,000,"psPolynomial3DEvalVector",0,false}, 29 {testDPoly3DEvalVector,000,"psDPolynomial3DEvalVector",0,false},30 26 {NULL} 31 27 }; … … 136 132 137 133 // This test will verify operation of 1D polynomial evaluation 138 psS32 testPoly3DEval(void)134 /*psS32 testPoly3DEval(void) 139 135 { 140 136 psF32 result; 141 137 psF32 resultCheb; 142 138 143 139 // Allocate polynomial structure 144 140 psPolynomial3D* polyOrd = psPolynomial3DAlloc(TERMS, TERMS, TERMS, PS_POLYNOMIAL_ORD); … … 174 170 psFree(polyOrd); 175 171 psFree(polyCheb); 176 172 177 173 // Allocate polynomial with invalid type 178 174 polyOrd = psPolynomial3DAlloc(TERMS, TERMS, TERMS, 99); … … 185 181 } 186 182 psFree(polyOrd); 187 183 188 184 return 0; 189 185 } 190 186 */ 191 187 // This test will verify operation of 1D polynomial evaluation 192 psS32 test DPoly3DEval(void)188 psS32 testPoly3DEval(void) 193 189 { 194 190 psF64 result; … … 196 192 197 193 // Allocate polynomial structure 198 ps DPolynomial3D* polyOrd = psDPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD);199 ps DPolynomial3D* polyCheb = psDPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB);194 psPolynomial3D* polyOrd = psPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD); 195 psPolynomial3D* polyCheb = psPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB); 200 196 // Set polynomial members 201 197 for(psS32 i = 0; i < TERMS; i++) { … … 211 207 // Evaluate test points and verify results 212 208 for(psS32 i = 0; i < TESTPOINTS; i++) { 213 result = ps DPolynomial3DEval(polyOrd,Dpoly3DXYZValue[i][0],Dpoly3DXYZValue[i][1],214 Dpoly3DXYZValue[i][2]);209 result = psPolynomial3DEval(polyOrd,Dpoly3DXYZValue[i][0],Dpoly3DXYZValue[i][1], 210 Dpoly3DXYZValue[i][2]); 215 211 if(fabs(Dpoly3DResult[i]-result) > ERROR_TOL ) { 216 212 psError(PS_ERR_UNKNOWN,true,"Evaluated value %lg not as expected %lg", … … 218 214 return i; 219 215 } 220 resultCheb = ps DPolynomial3DEval(polyCheb,Dpoly3DXYZChebValue[i][0],Dpoly3DXYZChebValue[i][1],221 Dpoly3DXYZChebValue[i][2]);216 resultCheb = psPolynomial3DEval(polyCheb,Dpoly3DXYZChebValue[i][0],Dpoly3DXYZChebValue[i][1], 217 Dpoly3DXYZChebValue[i][2]); 222 218 if(fabs(Dpoly3DChebResult[i]-resultCheb) > ERROR_TOL ) { 223 219 psError(PS_ERR_UNKNOWN,true,"Evaluated Chebyshev value %lg not as expected %lg", … … 230 226 231 227 // Allocate polynomial with invalid type 232 polyOrd = ps DPolynomial3DAlloc(TERMS, TERMS, TERMS, 99);228 polyOrd = psPolynomial3DAlloc(TERMS, TERMS, TERMS, 99); 233 229 // Attempt to evaluation invalid polynomial type 234 230 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error message invalid type"); 235 result = ps DPolynomial3DEval(polyOrd,0.0, 0.0, 0.0);231 result = psPolynomial3DEval(polyOrd,0.0, 0.0, 0.0); 236 232 if ( !isnan(result) ) { 237 233 psError(PS_ERR_UNKNOWN,true,"Did not return NAN for invalid polynomial type"); … … 243 239 } 244 240 245 psS32 testPoly3DEvalVector(void)241 /*psS32 testPoly3DEvalVector(void) 246 242 { 247 243 // Allocate polynomial 248 244 psPolynomial3D* polyOrd = psPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD); 249 245 psPolynomial3D* polyCheb = psPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB); 250 246 251 247 // Set polynomial members 252 248 for(psS32 i = 0; i < TERMS; i++) { … … 260 256 } 261 257 } 262 258 263 259 // Create input vectors 264 260 psVector* inputOrdX = psVectorAlloc(TESTPOINTS, PS_TYPE_F32); … … 276 272 inputChebZ->data.F32[i] = poly3DXYZChebValue[i][2]; 277 273 } 278 274 279 275 // Evaluate the vectors 280 276 psVector* outputOrd = psPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,inputOrdZ); … … 298 294 return 2; 299 295 } 300 296 301 297 // Verify the results 302 298 for(psS32 i = 0; i < TESTPOINTS; i++) { … … 312 308 } 313 309 } 314 310 315 311 // Attempt to invoke function with null polynomial 316 312 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL polynomial"); … … 319 315 return 60; 320 316 } 321 317 322 318 // Attempt to invoke function with null input vector 323 319 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); … … 338 334 return 63; 339 335 } 340 336 341 337 // Attempt to invoke function with a non F32 type input vector 342 338 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); … … 363 359 } 364 360 inputOrdZ->type.type = PS_TYPE_F32; 365 361 366 362 psFree(inputOrdX); 367 363 psFree(inputOrdY); … … 374 370 psFree(polyOrd); 375 371 psFree(polyCheb); 376 372 377 373 return 0; 378 374 } 379 380 psS32 test DPoly3DEvalVector(void)375 */ 376 psS32 testPoly3DEvalVector(void) 381 377 { 382 378 // Allocate polynomial 383 ps DPolynomial3D* polyOrd = psDPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD);384 ps DPolynomial3D* polyCheb = psDPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB);379 psPolynomial3D* polyOrd = psPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD); 380 psPolynomial3D* polyCheb = psPolynomial3DAlloc(TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB); 385 381 386 382 // Set polynomial members … … 413 409 414 410 // Evaluate the vectors 415 psVector* outputOrd = ps DPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,inputOrdZ);411 psVector* outputOrd = psPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,inputOrdZ); 416 412 if(outputOrd == NULL) { 417 413 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL."); … … 423 419 return 2; 424 420 } 425 psVector* outputCheb = ps DPolynomial3DEvalVector(polyCheb,inputChebX,inputChebY,inputChebZ);421 psVector* outputCheb = psPolynomial3DEvalVector(polyCheb,inputChebX,inputChebY,inputChebZ); 426 422 if(outputCheb == NULL) { 427 423 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL."); … … 450 446 // Attempt to invoke function with null polynomial 451 447 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL polynomial"); 452 if(ps DPolynomial3DEvalVector(NULL,inputOrdX,inputOrdY,inputOrdZ) != NULL) {448 if(psPolynomial3DEvalVector(NULL,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 453 449 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL polynomial"); 454 450 return 60; … … 457 453 // Attempt to invoke function with null input vector 458 454 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 459 if(ps DPolynomial3DEvalVector(polyOrd,NULL,inputOrdY,inputOrdZ) != NULL) {455 if(psPolynomial3DEvalVector(polyOrd,NULL,inputOrdY,inputOrdZ) != NULL) { 460 456 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 461 457 return 61; … … 463 459 // Attempt to invoke function with null input vector 464 460 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 465 if(ps DPolynomial3DEvalVector(polyOrd,inputOrdX,NULL,inputOrdZ) != NULL) {461 if(psPolynomial3DEvalVector(polyOrd,inputOrdX,NULL,inputOrdZ) != NULL) { 466 462 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 467 463 return 62; … … 469 465 // Attempt to invoke function with null input vector 470 466 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 471 if(ps DPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,NULL) != NULL) {467 if(psPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,NULL) != NULL) { 472 468 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 473 469 return 63; … … 477 473 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 478 474 inputOrdX->type.type = PS_TYPE_U8; 479 if(ps DPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,inputOrdZ) != NULL) {475 if(psPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 480 476 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 481 477 return 64; … … 485 481 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 486 482 inputOrdY->type.type = PS_TYPE_U8; 487 if(ps DPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,inputOrdZ) != NULL) {483 if(psPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 488 484 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 489 485 return 65; … … 493 489 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 494 490 inputOrdZ->type.type = PS_TYPE_U8; 495 if(ps DPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,inputOrdZ) != NULL) {491 if(psPolynomial3DEvalVector(polyOrd,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 496 492 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 497 493 return 66; -
trunk/psLib/test/math/tst_psFunc11.c
r4547 r4581 4 4 * ORD and CHEB type polynomials. 5 5 * 6 * @version $Revision: 1. 1$ $Name: not supported by cvs2svn $7 * @date $Date: 2005-07- 13 02:47:00$6 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2005-07-20 01:21:13 $ 8 8 * 9 9 * Copyright 2004-2005 Maui High Performance Computing Center, Univ. of Hawaii … … 19 19 20 20 static psS32 testPoly4DEval(void); 21 static psS32 testDPoly4DEval(void);22 21 static psS32 testPoly4DEvalVector(void); 23 static psS32 testDPoly4DEvalVector(void);24 22 25 23 testDescription tests[] = { 26 24 {testPoly4DEval,583,"psPolynomial4DEval",0,false}, 27 {testDPoly4DEval,582,"psDPolynomial4DEval",0,false},28 25 {testPoly4DEvalVector,000,"psPolynomial4DEvalVector",0,false}, 29 {testDPoly4DEvalVector,000,"psDPolynomial4DEvalVector",0,false},30 26 {NULL} 31 27 }; … … 378 374 379 375 // This test will verify operation of 1D polynomial evaluation 380 psS32 testPoly4DEval(void)376 /*psS32 testPoly4DEval(void) 381 377 { 382 378 psF32 result; 383 379 psF32 resultCheb; 384 380 385 381 // Allocate polynomial structure 386 382 psPolynomial4D* polyOrd = psPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD); … … 418 414 psFree(polyOrd); 419 415 psFree(polyCheb); 420 416 421 417 // Allocate polynomial with invalid type 422 418 polyOrd = psPolynomial4DAlloc(TERMS, TERMS, TERMS, TERMS, 99); … … 429 425 } 430 426 psFree(polyOrd); 431 427 432 428 return 0; 433 429 } 434 430 */ 435 431 // This test will verify operation of 1D polynomial evaluation 436 psS32 test DPoly4DEval(void)432 psS32 testPoly4DEval(void) 437 433 { 438 434 psF64 result; … … 440 436 441 437 // Allocate polynomial structure 442 ps DPolynomial4D* polyOrd = psDPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD);443 ps DPolynomial4D* polyCheb = psDPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB);438 psPolynomial4D* polyOrd = psPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD); 439 psPolynomial4D* polyCheb = psPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB); 444 440 // Set polynomial members 445 441 for(psS32 i = 0; i < TERMS; i++) { … … 457 453 // Evaluate test points and verify results 458 454 for(psS32 i = 0; i < TESTPOINTS; i++) { 459 result = ps DPolynomial4DEval(polyOrd,Dpoly4DWXYZValue[i][0],Dpoly4DWXYZValue[i][1],460 Dpoly4DWXYZValue[i][2],Dpoly4DWXYZValue[i][3]);455 result = psPolynomial4DEval(polyOrd,Dpoly4DWXYZValue[i][0],Dpoly4DWXYZValue[i][1], 456 Dpoly4DWXYZValue[i][2],Dpoly4DWXYZValue[i][3]); 461 457 if(fabs(Dpoly4DResult[i]-result) > ERROR_TOL ) { 462 458 psError(PS_ERR_UNKNOWN,true,"Evaluated value %lg not as expected %lg", … … 464 460 return i; 465 461 } 466 resultCheb = ps DPolynomial4DEval(polyCheb,Dpoly4DWXYZChebValue[i][0],Dpoly4DWXYZChebValue[i][1],467 Dpoly4DWXYZChebValue[i][2],Dpoly4DWXYZChebValue[i][3]);462 resultCheb = psPolynomial4DEval(polyCheb,Dpoly4DWXYZChebValue[i][0],Dpoly4DWXYZChebValue[i][1], 463 Dpoly4DWXYZChebValue[i][2],Dpoly4DWXYZChebValue[i][3]); 468 464 if(fabs(Dpoly4DChebResult[i]-resultCheb) > ERROR_TOL ) { 469 465 psError(PS_ERR_UNKNOWN,true,"Evaluated Chebyshev value %lg not as expected %lg", … … 476 472 477 473 // Allocate polynomial with invalid type 478 polyOrd = ps DPolynomial4DAlloc(TERMS, TERMS, TERMS, TERMS, 99);474 polyOrd = psPolynomial4DAlloc(TERMS, TERMS, TERMS, TERMS, 99); 479 475 // Attempt to evaluation invalid polynomial type 480 476 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error message invalid type"); 481 result = ps DPolynomial4DEval(polyOrd,0.0, 0.0, 0.0, 0.0);477 result = psPolynomial4DEval(polyOrd,0.0, 0.0, 0.0, 0.0); 482 478 if ( !isnan(result) ) { 483 479 psError(PS_ERR_UNKNOWN,true,"Did not return NAN for invalid polynomial type"); … … 489 485 } 490 486 491 psS32 testPoly4DEvalVector(void)487 /*psS32 testPoly4DEvalVector(void) 492 488 { 493 489 // Allocate polynomial 494 490 psPolynomial4D* polyOrd = psPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD); 495 491 psPolynomial4D* polyCheb = psPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB); 496 492 497 493 // Set polynomial members 498 494 for(psS32 i = 0; i < TERMS; i++) { … … 508 504 } 509 505 } 510 506 511 507 // Create input vectors 512 508 psVector* inputOrdW = psVectorAlloc(TESTPOINTS, PS_TYPE_F32); … … 528 524 inputChebZ->data.F32[i] = poly4DWXYZChebValue[i][3]; 529 525 } 530 526 531 527 // Evaluate the vectors 532 528 psVector* outputOrd = psPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ); … … 550 546 return 2; 551 547 } 552 548 553 549 // Verify the results 554 550 for(psS32 i = 0; i < TESTPOINTS; i++) { … … 564 560 } 565 561 } 566 562 567 563 // Attempt to invoke function with null polynomial 568 564 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL polynomial"); … … 571 567 return 60; 572 568 } 573 569 574 570 // Attempt to invoke function with null input vector 575 571 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); … … 596 592 return 64; 597 593 } 598 594 599 595 // Attempt to invoke function with a non F32 type input vector 600 596 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); … … 629 625 } 630 626 inputOrdW->type.type = PS_TYPE_F32; 631 627 632 628 psFree(inputOrdW); 633 629 psFree(inputOrdX); … … 642 638 psFree(polyOrd); 643 639 psFree(polyCheb); 644 640 645 641 return 0; 646 642 } 647 648 psS32 test DPoly4DEvalVector(void)643 */ 644 psS32 testPoly4DEvalVector(void) 649 645 { 650 646 // Allocate polynomial 651 ps DPolynomial4D* polyOrd = psDPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD);652 ps DPolynomial4D* polyCheb = psDPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB);647 psPolynomial4D* polyOrd = psPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_ORD); 648 psPolynomial4D* polyCheb = psPolynomial4DAlloc(TERMS,TERMS,TERMS,TERMS,PS_POLYNOMIAL_CHEB); 653 649 654 650 // Set polynomial members … … 687 683 688 684 // Evaluate the vectors 689 psVector* outputOrd = ps DPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ);685 psVector* outputOrd = psPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ); 690 686 if(outputOrd == NULL) { 691 687 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL."); … … 697 693 return 2; 698 694 } 699 psVector* outputCheb = ps DPolynomial4DEvalVector(polyCheb,inputChebW,inputChebX,inputChebY,inputChebZ);695 psVector* outputCheb = psPolynomial4DEvalVector(polyCheb,inputChebW,inputChebX,inputChebY,inputChebZ); 700 696 if(outputCheb == NULL) { 701 697 psError(PS_ERR_UNKNOWN,true,"Unexpected return of NULL."); … … 724 720 // Attempt to invoke function with null polynomial 725 721 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL polynomial"); 726 if(ps DPolynomial4DEvalVector(NULL,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) {722 if(psPolynomial4DEvalVector(NULL,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 727 723 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL polynomial"); 728 724 return 60; … … 731 727 // Attempt to invoke function with null input vector 732 728 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 733 if(ps DPolynomial4DEvalVector(polyOrd,NULL,inputOrdX,inputOrdY,inputOrdZ) != NULL) {729 if(psPolynomial4DEvalVector(polyOrd,NULL,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 734 730 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 735 731 return 61; … … 737 733 // Attempt to invoke function with null input vector 738 734 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 739 if(ps DPolynomial4DEvalVector(polyOrd,inputOrdW,NULL,inputOrdY,inputOrdZ) != NULL) {735 if(psPolynomial4DEvalVector(polyOrd,inputOrdW,NULL,inputOrdY,inputOrdZ) != NULL) { 740 736 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 741 737 return 62; … … 743 739 // Attempt to invoke function with null input vector 744 740 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 745 if(ps DPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,NULL,inputOrdZ) != NULL) {741 if(psPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,NULL,inputOrdZ) != NULL) { 746 742 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 747 743 return 63; … … 749 745 // Attempt to invoke function with null input vector 750 746 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL input vector"); 751 if(ps DPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,NULL) != NULL) {747 if(psPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,NULL) != NULL) { 752 748 psError(PS_ERR_UNKNOWN,true,"Return of NULL expected for NULL input vector"); 753 749 return 64; … … 757 753 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 758 754 inputOrdX->type.type = PS_TYPE_U8; 759 if(ps DPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) {755 if(psPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 760 756 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 761 757 return 65; … … 765 761 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 766 762 inputOrdY->type.type = PS_TYPE_U8; 767 if(ps DPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) {763 if(psPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 768 764 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 769 765 return 66; … … 773 769 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 774 770 inputOrdZ->type.type = PS_TYPE_U8; 775 if(ps DPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) {771 if(psPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 776 772 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 777 773 return 67; … … 781 777 psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid input type"); 782 778 inputOrdW->type.type = PS_TYPE_U8; 783 if(ps DPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) {779 if(psPolynomial4DEvalVector(polyOrd,inputOrdW,inputOrdX,inputOrdY,inputOrdZ) != NULL) { 784 780 psError(PS_ERR_UNKNOWN,true,"Return NULL expected for non-F64 input vector"); 785 781 return 68; -
trunk/psLib/test/math/verified/tst_psFunc00.stderr
r4547 r4581 35 35 ---> TESTPOINT PASSED (psPolynomialXD{psPolynomial4DAlloc} | tst_psFunc00.c) 36 36 37 /***************************** TESTPOINT ******************************************\38 * TestFile: tst_psFunc00.c *39 * TestPoint: psPolynomialXD{psDPolynomial1DAlloc} *40 * TestType: Positive *41 \**********************************************************************************/42 43 44 ---> TESTPOINT PASSED (psPolynomialXD{psDPolynomial1DAlloc} | tst_psFunc00.c)45 46 /***************************** TESTPOINT ******************************************\47 * TestFile: tst_psFunc00.c *48 * TestPoint: psPolynomialXD{psDPolynomial2DAlloc} *49 * TestType: Positive *50 \**********************************************************************************/51 52 53 ---> TESTPOINT PASSED (psPolynomialXD{psDPolynomial2DAlloc} | tst_psFunc00.c)54 55 /***************************** TESTPOINT ******************************************\56 * TestFile: tst_psFunc00.c *57 * TestPoint: psPolynomialXD{psDPolynomial3DAlloc} *58 * TestType: Positive *59 \**********************************************************************************/60 61 62 ---> TESTPOINT PASSED (psPolynomialXD{psDPolynomial3DAlloc} | tst_psFunc00.c)63 64 /***************************** TESTPOINT ******************************************\65 * TestFile: tst_psFunc00.c *66 * TestPoint: psPolynomialXD{psDPolynomial4DAlloc} *67 * TestType: Positive *68 \**********************************************************************************/69 70 71 ---> TESTPOINT PASSED (psPolynomialXD{psDPolynomial4DAlloc} | tst_psFunc00.c)72 -
trunk/psLib/test/math/verified/tst_psFunc08.stderr
r4547 r4581 11 11 12 12 ---> TESTPOINT PASSED (psPolynomialXDEval{psPolynomial1DEval} | tst_psFunc08.c) 13 14 /***************************** TESTPOINT ******************************************\15 * TestFile: tst_psFunc08.c *16 * TestPoint: psPolynomialXDEval{psDPolynomial1DEval} *17 * TestType: Positive *18 \**********************************************************************************/19 20 <DATE><TIME>|<HOST>|I|testDPoly1DEval21 Following should generate error message invalid type22 <DATE><TIME>|<HOST>|E|psDPolynomial1DEval (FILE:LINENO)23 Unknown polynomial type 0x63 found. Evaluation failed.24 25 ---> TESTPOINT PASSED (psPolynomialXDEval{psDPolynomial1DEval} | tst_psFunc08.c)26 13 27 14 /***************************** TESTPOINT ******************************************\ … … 46 33 ---> TESTPOINT PASSED (psPolynomialXDEval{psPolynomial1DEvalVector} | tst_psFunc08.c) 47 34 48 /***************************** TESTPOINT ******************************************\49 * TestFile: tst_psFunc08.c *50 * TestPoint: psPolynomialXDEval{psDPolynomial1DEvalVector} *51 * TestType: Positive *52 \**********************************************************************************/53 54 <DATE><TIME>|<HOST>|I|testDPoly1DEvalVector55 Following should generate an error message for NULL polynomial56 <DATE><TIME>|<HOST>|E|psDPolynomial1DEvalVector (FILE:LINENO)57 Unallowable operation: polynomial poly or its coeffs is NULL.58 <DATE><TIME>|<HOST>|I|testDPoly1DEvalVector59 Following should generate an error message for NULL input vector60 <DATE><TIME>|<HOST>|E|psDPolynomial1DEvalVector (FILE:LINENO)61 Unallowable operation: psVector x or its data is NULL.62 <DATE><TIME>|<HOST>|I|testDPoly1DEvalVector63 Following should generate an error message for invalid input type64 <DATE><TIME>|<HOST>|E|psDPolynomial1DEvalVector (FILE:LINENO)65 Unallowable operation: psVector x has incorrect type.66 67 ---> TESTPOINT PASSED (psPolynomialXDEval{psDPolynomial1DEvalVector} | tst_psFunc08.c)68 -
trunk/psLib/test/math/verified/tst_psFunc09.stderr
r4547 r4581 11 11 12 12 ---> TESTPOINT PASSED (psPolynomialXDEval{psPolynomial2DEval} | tst_psFunc09.c) 13 14 /***************************** TESTPOINT ******************************************\15 * TestFile: tst_psFunc09.c *16 * TestPoint: psPolynomialXDEval{psDPolynomial2DEval} *17 * TestType: Positive *18 \**********************************************************************************/19 20 <DATE><TIME>|<HOST>|I|testDPoly2DEval21 Following should generate error message invalid type22 <DATE><TIME>|<HOST>|E|psDPolynomial2DEval (FILE:LINENO)23 Unknown polynomial type 0x63 found. Evaluation failed.24 25 ---> TESTPOINT PASSED (psPolynomialXDEval{psDPolynomial2DEval} | tst_psFunc09.c)26 13 27 14 /***************************** TESTPOINT ******************************************\ … … 54 41 ---> TESTPOINT PASSED (psPolynomialXDEval{psPolynomial2DEvalVector} | tst_psFunc09.c) 55 42 56 /***************************** TESTPOINT ******************************************\57 * TestFile: tst_psFunc09.c *58 * TestPoint: psPolynomialXDEval{psDPolynomial2DEvalVector} *59 * TestType: Positive *60 \**********************************************************************************/61 62 <DATE><TIME>|<HOST>|I|testDPoly2DEvalVector63 Following should generate an error message for NULL polynomial64 <DATE><TIME>|<HOST>|E|psDPolynomial2DEvalVector (FILE:LINENO)65 Unallowable operation: polynomial poly or its coeffs is NULL.66 <DATE><TIME>|<HOST>|I|testDPoly2DEvalVector67 Following should generate an error message for NULL input vector68 <DATE><TIME>|<HOST>|E|psDPolynomial2DEvalVector (FILE:LINENO)69 Unallowable operation: psVector x or its data is NULL.70 <DATE><TIME>|<HOST>|I|testDPoly2DEvalVector71 Following should generate an error message for NULL input vector72 <DATE><TIME>|<HOST>|E|psDPolynomial2DEvalVector (FILE:LINENO)73 Unallowable operation: psVector y or its data is NULL.74 <DATE><TIME>|<HOST>|I|testDPoly2DEvalVector75 Following should generate an error message for invalid input type76 <DATE><TIME>|<HOST>|E|psDPolynomial2DEvalVector (FILE:LINENO)77 Unallowable operation: psVector x has incorrect type.78 <DATE><TIME>|<HOST>|I|testDPoly2DEvalVector79 Following should generate an error message for invalid input type80 <DATE><TIME>|<HOST>|E|psDPolynomial2DEvalVector (FILE:LINENO)81 Unallowable operation: psVector y has incorrect type.82 83 ---> TESTPOINT PASSED (psPolynomialXDEval{psDPolynomial2DEvalVector} | tst_psFunc09.c)84 -
trunk/psLib/test/math/verified/tst_psFunc10.stderr
r4547 r4581 11 11 12 12 ---> TESTPOINT PASSED (psPolynomialXDEval{psPolynomial3DEval} | tst_psFunc10.c) 13 14 /***************************** TESTPOINT ******************************************\15 * TestFile: tst_psFunc10.c *16 * TestPoint: psPolynomialXDEval{psDPolynomial3DEval} *17 * TestType: Positive *18 \**********************************************************************************/19 20 <DATE><TIME>|<HOST>|I|testDPoly3DEval21 Following should generate error message invalid type22 <DATE><TIME>|<HOST>|E|psDPolynomial3DEval (FILE:LINENO)23 Unknown polynomial type 0x63 found. Evaluation failed.24 25 ---> TESTPOINT PASSED (psPolynomialXDEval{psDPolynomial3DEval} | tst_psFunc10.c)26 13 27 14 /***************************** TESTPOINT ******************************************\ … … 62 49 ---> TESTPOINT PASSED (psPolynomialXDEval{psPolynomial3DEvalVector} | tst_psFunc10.c) 63 50 64 /***************************** TESTPOINT ******************************************\65 * TestFile: tst_psFunc10.c *66 * TestPoint: psPolynomialXDEval{psDPolynomial3DEvalVector} *67 * TestType: Positive *68 \**********************************************************************************/69 70 <DATE><TIME>|<HOST>|I|testDPoly3DEvalVector71 Following should generate an error message for NULL polynomial72 <DATE><TIME>|<HOST>|E|psDPolynomial3DEvalVector (FILE:LINENO)73 Unallowable operation: polynomial poly or its coeffs is NULL.74 <DATE><TIME>|<HOST>|I|testDPoly3DEvalVector75 Following should generate an error message for NULL input vector76 <DATE><TIME>|<HOST>|E|psDPolynomial3DEvalVector (FILE:LINENO)77 Unallowable operation: psVector x or its data is NULL.78 <DATE><TIME>|<HOST>|I|testDPoly3DEvalVector79 Following should generate an error message for NULL input vector80 <DATE><TIME>|<HOST>|E|psDPolynomial3DEvalVector (FILE:LINENO)81 Unallowable operation: psVector y or its data is NULL.82 <DATE><TIME>|<HOST>|I|testDPoly3DEvalVector83 Following should generate an error message for NULL input vector84 <DATE><TIME>|<HOST>|E|psDPolynomial3DEvalVector (FILE:LINENO)85 Unallowable operation: psVector z or its data is NULL.86 <DATE><TIME>|<HOST>|I|testDPoly3DEvalVector87 Following should generate an error message for invalid input type88 <DATE><TIME>|<HOST>|E|psDPolynomial3DEvalVector (FILE:LINENO)89 Unallowable operation: psVector x has incorrect type.90 <DATE><TIME>|<HOST>|I|testDPoly3DEvalVector91 Following should generate an error message for invalid input type92 <DATE><TIME>|<HOST>|E|psDPolynomial3DEvalVector (FILE:LINENO)93 Unallowable operation: psVector y has incorrect type.94 <DATE><TIME>|<HOST>|I|testDPoly3DEvalVector95 Following should generate an error message for invalid input type96 <DATE><TIME>|<HOST>|E|psDPolynomial3DEvalVector (FILE:LINENO)97 Unallowable operation: psVector z has incorrect type.98 99 ---> TESTPOINT PASSED (psPolynomialXDEval{psDPolynomial3DEvalVector} | tst_psFunc10.c)100 -
trunk/psLib/test/math/verified/tst_psFunc11.stderr
r4547 r4581 11 11 12 12 ---> TESTPOINT PASSED (psPolynomialXDEval{psPolynomial4DEval} | tst_psFunc11.c) 13 14 /***************************** TESTPOINT ******************************************\15 * TestFile: tst_psFunc11.c *16 * TestPoint: psPolynomialXDEval{psDPolynomial4DEval} *17 * TestType: Positive *18 \**********************************************************************************/19 20 <DATE><TIME>|<HOST>|I|testDPoly4DEval21 Following should generate error message invalid type22 <DATE><TIME>|<HOST>|E|psDPolynomial4DEval (FILE:LINENO)23 Unknown polynomial type 0x63 found. Evaluation failed.24 25 ---> TESTPOINT PASSED (psPolynomialXDEval{psDPolynomial4DEval} | tst_psFunc11.c)26 13 27 14 /***************************** TESTPOINT ******************************************\ … … 70 57 ---> TESTPOINT PASSED (psPolynomialXDEval{psPolynomial4DEvalVector} | tst_psFunc11.c) 71 58 72 /***************************** TESTPOINT ******************************************\73 * TestFile: tst_psFunc11.c *74 * TestPoint: psPolynomialXDEval{psDPolynomial4DEvalVector} *75 * TestType: Positive *76 \**********************************************************************************/77 78 <DATE><TIME>|<HOST>|I|testDPoly4DEvalVector79 Following should generate an error message for NULL polynomial80 <DATE><TIME>|<HOST>|E|psDPolynomial4DEvalVector (FILE:LINENO)81 Unallowable operation: polynomial poly or its coeffs is NULL.82 <DATE><TIME>|<HOST>|I|testDPoly4DEvalVector83 Following should generate an error message for NULL input vector84 <DATE><TIME>|<HOST>|E|psDPolynomial4DEvalVector (FILE:LINENO)85 Unallowable operation: psVector x or its data is NULL.86 <DATE><TIME>|<HOST>|I|testDPoly4DEvalVector87 Following should generate an error message for NULL input vector88 <DATE><TIME>|<HOST>|E|psDPolynomial4DEvalVector (FILE:LINENO)89 Unallowable operation: psVector y or its data is NULL.90 <DATE><TIME>|<HOST>|I|testDPoly4DEvalVector91 Following should generate an error message for NULL input vector92 <DATE><TIME>|<HOST>|E|psDPolynomial4DEvalVector (FILE:LINENO)93 Unallowable operation: psVector z or its data is NULL.94 <DATE><TIME>|<HOST>|I|testDPoly4DEvalVector95 Following should generate an error message for NULL input vector96 <DATE><TIME>|<HOST>|E|psDPolynomial4DEvalVector (FILE:LINENO)97 Unallowable operation: psVector t or its data is NULL.98 <DATE><TIME>|<HOST>|I|testDPoly4DEvalVector99 Following should generate an error message for invalid input type100 <DATE><TIME>|<HOST>|E|psDPolynomial4DEvalVector (FILE:LINENO)101 Unallowable operation: psVector y has incorrect type.102 <DATE><TIME>|<HOST>|I|testDPoly4DEvalVector103 Following should generate an error message for invalid input type104 <DATE><TIME>|<HOST>|E|psDPolynomial4DEvalVector (FILE:LINENO)105 Unallowable operation: psVector z has incorrect type.106 <DATE><TIME>|<HOST>|I|testDPoly4DEvalVector107 Following should generate an error message for invalid input type108 <DATE><TIME>|<HOST>|E|psDPolynomial4DEvalVector (FILE:LINENO)109 Unallowable operation: psVector t has incorrect type.110 <DATE><TIME>|<HOST>|I|testDPoly4DEvalVector111 Following should generate an error message for invalid input type112 <DATE><TIME>|<HOST>|E|psDPolynomial4DEvalVector (FILE:LINENO)113 Unallowable operation: psVector x has incorrect type.114 115 ---> TESTPOINT PASSED (psPolynomialXDEval{psDPolynomial4DEvalVector} | tst_psFunc11.c)116
Note:
See TracChangeset
for help on using the changeset viewer.
