Changeset 6484 for trunk/psLib/src/math
- Timestamp:
- Feb 24, 2006, 1:43:16 PM (20 years ago)
- Location:
- trunk/psLib/src/math
- Files:
-
- 7 edited
-
psConstants.h (modified) (2 diffs)
-
psMinimizeLMM.c (modified) (5 diffs)
-
psMinimizePolyFit.c (modified) (14 diffs)
-
psMinimizePowell.c (modified) (6 diffs)
-
psPolynomial.c (modified) (8 diffs)
-
psSpline.c (modified) (4 diffs)
-
psStats.c (modified) (24 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psConstants.h
r6437 r6484 6 6 * @author GLG, MHPCC 7 7 * 8 * @version $Revision: 1.8 5$ $Name: not supported by cvs2svn $9 * @date $Date: 2006-02- 17 00:56:48$8 * @version $Revision: 1.86 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2006-02-24 23:43:15 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 312 312 if (VEC->n != SIZE) { \ 313 313 psError(PS_ERR_BAD_PARAMETER_SIZE, true, \ 314 "psVector %s has size %d, should be %d." \314 "psVector %s has size %d, should be %d.", \ 315 315 #VEC, VEC->n, SIZE); \ 316 316 return(RVAL); \ -
trunk/psLib/src/math/psMinimizeLMM.c
r6346 r6484 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1. 5$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-02- 07 23:14:21$12 * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-02-24 23:43:15 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 239 239 psF64 ymodel; 240 240 psVector *deriv = psVectorAlloc(params->n, PS_TYPE_F32); 241 deriv->n = deriv->nalloc; 241 242 242 243 // zero alpha and beta for summing below … … 370 371 psVector *Beta = psVectorAlloc(params->n, PS_TYPE_F64); 371 372 psVector *Params = psVectorAlloc(params->n, PS_TYPE_F32); 373 beta->n = beta->nalloc; 374 Beta->n = Beta->nalloc; 375 Params->n = Params->nalloc; 372 376 psVector *dy = NULL; 373 377 psF64 Chisq = 0.0; … … 385 389 param_min = psVectorAlloc(params->n, PS_TYPE_F32); 386 390 param_max = psVectorAlloc(params->n, PS_TYPE_F32); 391 beta_lim->n = beta_lim->nalloc; 392 param_min->n = param_min->nalloc; 393 param_max->n = param_max->nalloc; 387 394 for (int i = 0; i < params->n; i++) { 388 395 beta_lim->data.F32[i] = covar->data.F64[0][i]; … … 402 409 } else { 403 410 dy = psVectorAlloc(y->n, PS_TYPE_F32); 411 dy->n = dy->nalloc; 404 412 psVectorInit(dy, 1.0); 405 413 } -
trunk/psLib/src/math/psMinimizePolyFit.c
r6305 r6484 10 10 * @author EAM, IfA 11 11 * 12 * @version $Revision: 1. 7$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-02- 02 21:09:07$12 * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-02-24 23:43:15 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 44 44 for (psS32 i = 0 ; i < SIZE ; i++) { \ 45 45 VEC->data.F64[i] = ((2.0 / ((psF64) (SIZE - 1))) * ((psF64) i)) - 1.0; \ 46 VEC->n++; \ 46 47 }\ 47 48 } else if (TYPE == PS_TYPE_F32){ \ 48 49 for (psS32 i = 0 ; i < SIZE ; i++) { \ 49 50 VEC->data.F32[i] = ((2.0 / ((psF32) (SIZE - 1))) * ((psF32) i)) - 1.0; \ 51 VEC->n++; \ 50 52 }\ 51 53 }\ … … 87 89 if (sums == NULL) { 88 90 sums = psVectorAlloc(nSum, PS_TYPE_F64); 91 sums->n = sums->nalloc; 89 92 } else if (nSum > sums->n) { 90 93 sums = psVectorRealloc(sums, nSum); 94 sums->n = sums->nalloc; 91 95 } 92 96 … … 305 309 linear equations which can be easily solved. The resulting vector is the 306 310 coefficients of the Chebyshev polys. 307 311 308 312 This method is significantly slower than the standard NR algorithm. It 309 313 was explicitly requested that we not use the NR algorithm. … … 371 375 } 372 376 B->data.F64[i] = ordPoly->coeff[i]; 377 B->n++; 373 378 } 374 379 … … 534 539 // Compute the B vector 535 540 psVector *B = psVectorAlloc(NUM_POLY, PS_TYPE_F64); 541 B->n = B->nalloc; 536 542 for (psS32 i = 0 ; i < NUM_POLY ; i++) { 537 543 B->data.F64[i] = 0.0; … … 780 786 A = psImageAlloc(nTerm, nTerm, PS_TYPE_F64); 781 787 B = psVectorAlloc(nTerm, PS_TYPE_F64); 788 B->n = B->nalloc; 782 789 // Initialize data structures. 783 790 if (!psImageInit(A, 0.0) || !psVectorInit(B, 0.0)) { … … 1045 1052 psVector *fit = NULL; 1046 1053 psVector *resid = psVectorAlloc(f->n, PS_TYPE_F64); 1054 resid->n = resid->nalloc; 1047 1055 1048 1056 // eventual expansion: user supplies one of various stats option pairs, … … 1205 1213 A = psImageAlloc(nTerm, nTerm, PS_TYPE_F64); 1206 1214 B = psVectorAlloc(nTerm, PS_TYPE_F64); 1215 B->n = B->nalloc; 1207 1216 // Initialize data structures. 1208 1217 if (!psImageInit(A, 0.0) || !psVectorInit(B, 0.0)) { … … 1462 1471 } 1463 1472 psVector *resid = psVectorAlloc(f->n, PS_TYPE_F64); 1473 resid->n = resid->nalloc; 1464 1474 1465 1475 // eventual expansion: user supplies one of various stats option pairs, … … 1630 1640 A = psImageAlloc(nTerm, nTerm, PS_TYPE_F64); 1631 1641 B = psVectorAlloc(nTerm, PS_TYPE_F64); 1642 B->n = B->nalloc; 1632 1643 // Initialize data structures. 1633 1644 if (!psImageInit(A, 0.0) || !psVectorInit(B, 0.0)) { … … 2002 2013 psVector *fit = NULL; 2003 2014 psVector *resid = psVectorAlloc(f->n, PS_TYPE_F64); 2015 resid->n = resid->nalloc; 2004 2016 2005 2017 // eventual expansion: user supplies one of various stats option pairs, … … 2174 2186 A = psImageAlloc(nTerm, nTerm, PS_TYPE_F64); 2175 2187 B = psVectorAlloc(nTerm, PS_TYPE_F64); 2188 B->n = B->nalloc; 2176 2189 // Initialize data structures. 2177 2190 if (!psImageInit(A, 0.0) || !psVectorInit(B, 0.0)) { … … 2596 2609 psVector *fit = NULL; 2597 2610 psVector *resid = psVectorAlloc(f->n, PS_TYPE_F64); 2611 resid->n = resid->nalloc; 2598 2612 2599 2613 // eventual expansion: user supplies one of various stats option pairs, -
trunk/psLib/src/math/psMinimizePowell.c
r6449 r6484 11 11 * NOTE: XXX: The SDR is silent about data types. F32 is implemented here. 12 12 * 13 * @version $Revision: 1. 6$ $Name: not supported by cvs2svn $14 * @date $Date: 2006-02- 18 00:56:44$13 * @version $Revision: 1.7 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2006-02-24 23:43:15 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 525 525 p_psMemSetPersistent(myParamMask, true); 526 526 p_psMemSetPersistent(myParamMask->data.U8, true); 527 for (i=0;i<myParamMask->n ;i++) {527 for (i=0;i<myParamMask->nalloc;i++) { 528 528 myParamMask->data.U8[i] = 0; 529 myParamMask->n++; 529 530 } 530 531 } else { … … 543 544 ((psVector *) (v->data[i]))->data.F32[j] = 0.0; 544 545 } 546 ((psVector *)(v->data[i]))->n++; 545 547 } 546 548 v->n++; … … 550 552 for (i=0;i<numDims;i++) { 551 553 Q->data.F32[i] = params->data.F32[i]; 554 Q->n++; 552 555 } 553 556 … … 595 598 if (myParamMask->data.U8[i] == 0) { 596 599 u->data.F32[i] = Q->data.F32[i] - params->data.F32[i]; 600 u->n++; 597 601 598 602 psTrace(__func__, 6, "u[i]=Q[i]-P[i] (%f = %f - %f)\n", u->data.F32[i], … … 602 606 } else { 603 607 u->data.F32[i] = 0.0; 608 u->n++; 604 609 } 605 610 } -
trunk/psLib/src/math/psPolynomial.c
r6437 r6484 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.14 3$ $Name: not supported by cvs2svn $10 * @date $Date: 2006-02- 17 00:56:48$9 * @version $Revision: 1.144 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-02-24 23:43:15 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 589 589 for (unsigned int i = 0; i < Npts; i++) { 590 590 gauss->data.F32[i] = mean + p_psRandomGaussian(r, sigma); 591 gauss->n++; 591 592 } 592 593 psFree(r); … … 802 803 for (unsigned int i=0;i<x->n;i++) { 803 804 tmp->data.F64[i] = psPolynomial1DEval(poly, x->data.F64[i]); 805 tmp->n++; 804 806 } 805 807 break; … … 808 810 for (unsigned int i=0;i<x->n;i++) { 809 811 tmp->data.F32[i] = psPolynomial1DEval(poly, x->data.F32[i]); 812 tmp->n++; 810 813 } 811 814 break; … … 869 872 for (unsigned int i=0; i<vecLen; i++) { 870 873 tmp->data.F32[i] = psPolynomial2DEval(poly,x->data.F32[i],y->data.F32[i]); 874 tmp->n++; 871 875 } 872 876 break; … … 883 887 for (unsigned int i=0; i<vecLen; i++) { 884 888 tmp->data.F64[i] = psPolynomial2DEval(poly,x->data.F64[i],y->data.F64[i]); 889 tmp->n++; 885 890 } 886 891 break; … … 944 949 // Evaluate polynomial 945 950 // XXX: Consult with IfA: is this how they want to handle multiple data types? 946 if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F32)) { 947 for (unsigned int i = 0; i < vecLen; i++) { 948 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F32[i]); 949 } 950 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F64)) { 951 for (unsigned int i = 0; i < vecLen; i++) { 952 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F64[i]); 953 } 954 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F32)) { 955 for (unsigned int i = 0; i < vecLen; i++) { 956 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F32[i]); 957 } 958 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F64)) { 959 for (unsigned int i = 0; i < vecLen; i++) { 960 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F64[i]); 961 } 962 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F32)) { 963 for (unsigned int i = 0; i < vecLen; i++) { 964 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F32[i]); 965 } 966 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F64)) { 967 for (unsigned int i = 0; i < vecLen; i++) { 968 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F64[i]); 969 } 970 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F32)) { 971 for (unsigned int i = 0; i < vecLen; i++) { 972 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F32[i]); 973 } 974 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F64)) { 975 for (unsigned int i = 0; i < vecLen; i++) { 976 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F64[i]); 951 if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) 952 && (z->type.type == PS_TYPE_F32)) { 953 for (unsigned int i = 0; i < vecLen; i++) { 954 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], 955 y->data.F32[i], z->data.F32[i]); 956 tmp->n++; 957 } 958 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) 959 && (z->type.type == PS_TYPE_F64)) { 960 for (unsigned int i = 0; i < vecLen; i++) { 961 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], 962 y->data.F32[i], z->data.F64[i]); 963 tmp->n++; 964 } 965 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) 966 && (z->type.type == PS_TYPE_F32)) { 967 for (unsigned int i = 0; i < vecLen; i++) { 968 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], 969 y->data.F64[i], z->data.F32[i]); 970 tmp->n++; 971 } 972 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) 973 && (z->type.type == PS_TYPE_F64)) { 974 for (unsigned int i = 0; i < vecLen; i++) { 975 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F32[i], 976 y->data.F64[i], z->data.F64[i]); 977 tmp->n++; 978 } 979 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) 980 && (z->type.type == PS_TYPE_F32)) { 981 for (unsigned int i = 0; i < vecLen; i++) { 982 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], 983 y->data.F32[i], z->data.F32[i]); 984 tmp->n++; 985 } 986 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) 987 && (z->type.type == PS_TYPE_F64)) { 988 for (unsigned int i = 0; i < vecLen; i++) { 989 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], 990 y->data.F32[i], z->data.F64[i]); 991 tmp->n++; 992 } 993 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) 994 && (z->type.type == PS_TYPE_F32)) { 995 for (unsigned int i = 0; i < vecLen; i++) { 996 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], 997 y->data.F64[i], z->data.F32[i]); 998 tmp->n++; 999 } 1000 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) 1001 && (z->type.type == PS_TYPE_F64)) { 1002 for (unsigned int i = 0; i < vecLen; i++) { 1003 tmp->data.F64[i] = psPolynomial3DEval(poly, x->data.F64[i], 1004 y->data.F64[i], z->data.F64[i]); 1005 tmp->n++; 977 1006 } 978 1007 } … … 1040 1069 // Evaluate polynomial 1041 1070 // XXX: Consult with IfA: is this how they want to handle multiple data types? 1042 if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F32)) { 1043 for (unsigned int i = 0; i < vecLen; i++) { 1044 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F32[i], t->data.F32[i]); 1045 } 1046 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F64)) { 1047 for (unsigned int i = 0; i < vecLen; i++) { 1048 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F32[i], t->data.F64[i]); 1049 } 1050 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F32)) { 1051 for (unsigned int i = 0; i < vecLen; i++) { 1052 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F64[i], t->data.F32[i]); 1053 } 1054 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F64)) { 1055 for (unsigned int i = 0; i < vecLen; i++) { 1056 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F32[i], z->data.F64[i], t->data.F64[i]); 1057 } 1058 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F32)) { 1059 for (unsigned int i = 0; i < vecLen; i++) { 1060 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F32[i], t->data.F32[i]); 1061 } 1062 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F64)) { 1063 for (unsigned int i = 0; i < vecLen; i++) { 1064 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F32[i], t->data.F64[i]); 1065 } 1066 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F32)) { 1067 for (unsigned int i = 0; i < vecLen; i++) { 1068 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F64[i], t->data.F32[i]); 1069 } 1070 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F64)) { 1071 for (unsigned int i = 0; i < vecLen; i++) { 1072 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], y->data.F64[i], z->data.F64[i], t->data.F64[i]); 1073 } 1074 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F32)) { 1075 for (unsigned int i = 0; i < vecLen; i++) { 1076 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F32[i], t->data.F32[i]); 1077 } 1078 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F64)) { 1079 for (unsigned int i = 0; i < vecLen; i++) { 1080 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F32[i], t->data.F64[i]); 1081 } 1082 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F32)) { 1083 for (unsigned int i = 0; i < vecLen; i++) { 1084 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F64[i], t->data.F32[i]); 1085 } 1086 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F64)) { 1087 for (unsigned int i = 0; i < vecLen; i++) { 1088 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F32[i], z->data.F64[i], t->data.F64[i]); 1089 } 1090 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F32)) { 1091 for (unsigned int i = 0; i < vecLen; i++) { 1092 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F32[i], t->data.F32[i]); 1093 } 1094 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F64)) { 1095 for (unsigned int i = 0; i < vecLen; i++) { 1096 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F32[i], t->data.F64[i]); 1097 } 1098 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F32)) { 1099 for (unsigned int i = 0; i < vecLen; i++) { 1100 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F64[i], t->data.F32[i]); 1101 } 1102 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F64)) { 1103 for (unsigned int i = 0; i < vecLen; i++) { 1104 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], y->data.F64[i], z->data.F64[i], 1071 if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) 1072 && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F32)) { 1073 for (unsigned int i = 0; i < vecLen; i++) { 1074 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1075 y->data.F32[i], z->data.F32[i], t->data.F32[i]); 1076 tmp->n++; 1077 } 1078 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) 1079 && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F64)) { 1080 for (unsigned int i = 0; i < vecLen; i++) { 1081 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1082 y->data.F32[i], z->data.F32[i], t->data.F64[i]); 1083 tmp->n++; 1084 } 1085 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) 1086 && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F32)) { 1087 for (unsigned int i = 0; i < vecLen; i++) { 1088 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1089 y->data.F32[i], z->data.F64[i], t->data.F32[i]); 1090 tmp->n++; 1091 } 1092 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F32) 1093 && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F64)) { 1094 for (unsigned int i = 0; i < vecLen; i++) { 1095 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1096 y->data.F32[i], z->data.F64[i], t->data.F64[i]); 1097 tmp->n++; 1098 } 1099 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) 1100 && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F32)) { 1101 for (unsigned int i = 0; i < vecLen; i++) { 1102 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1103 y->data.F64[i], z->data.F32[i], t->data.F32[i]); 1104 tmp->n++; 1105 } 1106 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) 1107 && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F64)) { 1108 for (unsigned int i = 0; i < vecLen; i++) { 1109 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1110 y->data.F64[i], z->data.F32[i], t->data.F64[i]); 1111 tmp->n++; 1112 } 1113 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) 1114 && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F32)) { 1115 for (unsigned int i = 0; i < vecLen; i++) { 1116 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1117 y->data.F64[i], z->data.F64[i], t->data.F32[i]); 1118 tmp->n++; 1119 } 1120 } else if ((x->type.type == PS_TYPE_F32) && (y->type.type == PS_TYPE_F64) 1121 && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F64)) { 1122 for (unsigned int i = 0; i < vecLen; i++) { 1123 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F32[i], 1124 y->data.F64[i], z->data.F64[i], t->data.F64[i]); 1125 tmp->n++; 1126 } 1127 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) 1128 && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F32)) { 1129 for (unsigned int i = 0; i < vecLen; i++) { 1130 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1131 y->data.F32[i], z->data.F32[i], t->data.F32[i]); 1132 tmp->n++; 1133 } 1134 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) 1135 && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F64)) { 1136 for (unsigned int i = 0; i < vecLen; i++) { 1137 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1138 y->data.F32[i], z->data.F32[i], t->data.F64[i]); 1139 tmp->n++; 1140 } 1141 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) 1142 && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F32)) { 1143 for (unsigned int i = 0; i < vecLen; i++) { 1144 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1145 y->data.F32[i], z->data.F64[i], t->data.F32[i]); 1146 tmp->n++; 1147 } 1148 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F32) 1149 && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F64)) { 1150 for (unsigned int i = 0; i < vecLen; i++) { 1151 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1152 y->data.F32[i], z->data.F64[i], t->data.F64[i]); 1153 tmp->n++; 1154 } 1155 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) 1156 && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F32)) { 1157 for (unsigned int i = 0; i < vecLen; i++) { 1158 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1159 y->data.F64[i], z->data.F32[i], t->data.F32[i]); 1160 tmp->n++; 1161 } 1162 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) 1163 && (z->type.type == PS_TYPE_F32) && (t->type.type == PS_TYPE_F64)) { 1164 for (unsigned int i = 0; i < vecLen; i++) { 1165 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1166 y->data.F64[i], z->data.F32[i], t->data.F64[i]); 1167 tmp->n++; 1168 } 1169 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) 1170 && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F32)) { 1171 for (unsigned int i = 0; i < vecLen; i++) { 1172 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1173 y->data.F64[i], z->data.F64[i], t->data.F32[i]); 1174 tmp->n++; 1175 } 1176 } else if ((x->type.type == PS_TYPE_F64) && (y->type.type == PS_TYPE_F64) 1177 && (z->type.type == PS_TYPE_F64) && (t->type.type == PS_TYPE_F64)) { 1178 for (unsigned int i = 0; i < vecLen; i++) { 1179 tmp->data.F64[i] = psPolynomial4DEval(poly, x->data.F64[i], 1180 y->data.F64[i], z->data.F64[i], 1105 1181 t->data.F64[i]); 1182 tmp->n++; 1106 1183 } 1107 1184 } -
trunk/psLib/src/math/psSpline.c
r6437 r6484 1 1 /** @file psSpline.c 2 2 * 3 * @brief Contains basic spline allocation, deallocation, fitting, 3 * @brief Contains basic spline allocation, deallocation, fitting, 4 4 * and evaluation routines. 5 5 * 6 6 * This file contains the routines that allocate, free, and evaluate splines. 7 7 * 8 * @version $Revision: 1.13 6$ $Name: not supported by cvs2svn $9 * @date $Date: 2006-02- 17 00:56:48$8 * @version $Revision: 1.137 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2006-02-24 23:43:15 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 239 239 for (psS32 i = 0 ; i < x->n ; i++) { 240 240 spline->knots->data.F32[i] = x->data.F32[i]; 241 spline->knots->n++; 241 242 } 242 243 } else if (x->type.type == PS_TYPE_F64) { 243 244 for (psS32 i = 0 ; i < x->n ; i++) { 244 245 spline->knots->data.F32[i] = (psF32) x->data.F64[i]; 246 spline->knots->n++; 245 247 } 246 248 } … … 248 250 for (psS32 i = 0 ; i < y->n ; i++) { 249 251 spline->knots->data.F32[i] = (psF32) i; 252 spline->knots->n++; 250 253 } 251 254 } … … 412 415 for (psS32 i=0;i<x->n;i++) { 413 416 tmpVector->data.F32[i] = psSpline1DEval(spline, x->data.F32[i]); 417 tmpVector->n++; 414 418 } 415 419 } else if (x->type.type == PS_TYPE_F64) { 416 420 for (psS32 i=0;i<x->n;i++) { 417 421 tmpVector->data.F32[i] = psSpline1DEval(spline, (psF32) x->data.F64[i]); 422 tmpVector->n++; 418 423 } 419 424 } -
trunk/psLib/src/math/psStats.c
r6449 r6484 16 16 * use ->min and ->max (PS_STAT_USE_RANGE) 17 17 * 18 * @version $Revision: 1.1 69$ $Name: not supported by cvs2svn $19 * @date $Date: 2006-02- 18 00:56:44$18 * @version $Revision: 1.170 $ $Name: not supported by cvs2svn $ 19 * @date $Date: 2006-02-24 23:43:15 $ 20 20 * 21 21 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 569 569 // Allocate temporary vectors for the data. 570 570 unsortedVector = psVectorAlloc(nValues, PS_TYPE_F32); 571 unsortedVector->n = nValues; 571 572 572 573 // Determine if we must only use data points within a min/max range. … … 657 658 psS32 numBins = histogram->nums->n; 658 659 psVector *smooth = psVectorAlloc(numBins, PS_TYPE_F32); 660 smooth->n = smooth->nalloc; 659 661 psS32 jMin = 0; 660 662 psS32 jMax = 0; … … 783 785 // Allocate temporary vectors for the data. 784 786 unsortedVector = psVectorAlloc(nValues, PS_TYPE_F32); 787 unsortedVector->n = unsortedVector->nalloc; 785 788 786 789 if (stats->options & PS_STAT_USE_RANGE) { … … 1037 1040 // However, we do no want to modify the original mask vector. 1038 1041 tmpMask = psVectorAlloc(myVector->n, PS_TYPE_U8); 1042 tmpMask->n = tmpMask->nalloc; 1039 1043 1040 1044 // If we were called with a mask vector, then initialize the temporary … … 1198 1202 psVector *x = psVectorAlloc(3, PS_TYPE_F64); 1199 1203 psVector *y = psVectorAlloc(3, PS_TYPE_F64); 1204 x->n = 3; 1205 y->n = 3; 1200 1206 psF32 tmpFloat = 0.0f; 1201 1207 … … 1313 1319 if (deriv == NULL) { 1314 1320 deriv = psVectorAlloc(2, PS_TYPE_F32); 1321 deriv->n = 2; 1315 1322 } else { 1316 1323 PS_ASSERT_VECTOR_SIZE(deriv, 2, NAN); … … 1365 1372 psS32 rcBool = false; 1366 1373 psVector *tmpMaskVec = psVectorAlloc(myVector->n, PS_TYPE_U8); 1374 tmpMaskVec->n = tmpMaskVec->nalloc; 1367 1375 if (maskVector != NULL) { 1368 1376 for (psS32 i = 0 ; i < myVector->n ; i++) { … … 1850 1858 psArray *x = psArrayAlloc((1 + (binMax - binMin))); 1851 1859 psS32 j = 0; 1860 y->n = y->nalloc; 1852 1861 1853 1862 for (psS32 i = binMin ; i <= binMax ; i++) { … … 1856 1865 x->n++; 1857 1866 ((psVector *) x->data[j])->data.F32[0] = PS_BIN_MIDPOINT(newHistogram, i); 1867 ((psVector *) x->data[j])->n++; 1858 1868 j++; 1859 1869 } … … 1886 1896 psMinimization *min = psMinimizationAlloc(100, 0.01); 1887 1897 psVector *params = psVectorAlloc(2, PS_TYPE_F32); 1898 params->n = params->nalloc; 1888 1899 // Initial guess for the mean ([0]) and standard dev. 1889 1900 params->data.F32[0] = stats->robustMedian; … … 2049 2060 // Allocate the bins, and initialize them to zero. 2050 2061 newHist->nums = psVectorAlloc(n, PS_TYPE_F32); 2051 for (i = 0; i < newHist->nums->n ; i++) {2062 for (i = 0; i < newHist->nums->nalloc; i++) { 2052 2063 newHist->nums->data.F32[i] = 0.0; 2064 newHist->nums->n++; 2053 2065 } 2054 2066 … … 2094 2106 // then there are N-1 bins. 2095 2107 newHist->nums = psVectorAlloc((bounds->n) - 1, PS_TYPE_F32); 2096 for (i = 0; i < newHist->nums->n ; i++) {2108 for (i = 0; i < newHist->nums->nalloc; i++) { 2097 2109 newHist->nums->data.F32[i] = 0.0; 2110 newHist->nums->n++; 2098 2111 } 2099 2112 … … 2366 2379 for (i = 0; i < in->n; i++) { 2367 2380 tmp->data.F32[i] = (psF32)in->data.S8[i]; 2381 tmp->n++; 2368 2382 } 2369 2383 } else if (in->type.type == PS_TYPE_S16) { … … 2371 2385 for (i = 0; i < in->n; i++) { 2372 2386 tmp->data.F32[i] = (psF32) in->data.S16[i]; 2387 tmp->n++; 2373 2388 } 2374 2389 } else if (in->type.type == PS_TYPE_S32) { … … 2376 2391 for (i = 0; i < in->n; i++) { 2377 2392 tmp->data.F32[i] = (psF32)in->data.S32[i]; 2393 tmp->n++; 2378 2394 } 2379 2395 } else if (in->type.type == PS_TYPE_S64) { … … 2381 2397 for (i = 0; i < in->n; i++) { 2382 2398 tmp->data.F32[i] = (psF32)in->data.S64[i]; 2399 tmp->n++; 2383 2400 } 2384 2401 } else if (in->type.type == PS_TYPE_U8) { … … 2386 2403 for (i = 0; i < in->n; i++) { 2387 2404 tmp->data.F32[i] = (psF32)in->data.U8[i]; 2405 tmp->n++; 2388 2406 } 2389 2407 } else if (in->type.type == PS_TYPE_U16) { … … 2391 2409 for (i = 0; i < in->n; i++) { 2392 2410 tmp->data.F32[i] = (psF32)in->data.U16[i]; 2411 tmp->n++; 2393 2412 } 2394 2413 } else if (in->type.type == PS_TYPE_U32) { … … 2396 2415 for (i = 0; i < in->n; i++) { 2397 2416 tmp->data.F32[i] = (psF32)in->data.U32[i]; 2417 tmp->n++; 2398 2418 } 2399 2419 } else if (in->type.type == PS_TYPE_U64) { … … 2401 2421 for (i = 0; i < in->n; i++) { 2402 2422 tmp->data.F32[i] = (psF32)in->data.U64[i]; 2423 tmp->n++; 2403 2424 } 2404 2425 } else if (in->type.type == PS_TYPE_F64) { … … 2406 2427 for (i = 0; i < in->n; i++) { 2407 2428 tmp->data.F32[i] = (psF32)in->data.F64[i]; 2429 tmp->n++; 2408 2430 } 2409 2431 } else if (in->type.type == PS_TYPE_F32) { … … 2463 2485 inF32 = p_psConvertToF32((psVector *) in); 2464 2486 if (inF32 == NULL) { 2465 inF32 = (psVector *) in; 2466 mustFreeVectorIn = 0; 2467 } 2487 // printf("\n\ninF32 is NULL\n\n"); 2488 // inF32 = (psVector *) in; 2489 // mustFreeVectorIn = 0; 2490 inF32 = psVectorCopy(inF32, in, PS_TYPE_F32); 2491 inF32->n = inF32->nalloc; 2492 mustFreeVectorIn = 1; 2493 } 2494 // else printf("\ninF32 has n=%ld, nalloc=%ld\n", inF32->n, inF32->nalloc); 2468 2495 errorsF32 = p_psConvertToF32((psVector *) errors); 2469 2496 if (errorsF32 == NULL) { … … 2471 2498 mustFreeVectorErrors = 0; 2472 2499 } 2473 2500 // inF32->n = inF32->nalloc; 2501 // errorsF32->n = errorsF32->nalloc; 2474 2502 if ((stats->options & PS_STAT_USE_RANGE) && (stats->min >= stats->max)) { 2475 2503 PS_ASSERT_FLOAT_LARGER_THAN_OR_EQUAL(stats->max, stats->min, stats);
Note:
See TracChangeset
for help on using the changeset viewer.
