Changeset 5624 for trunk/psLib/src/math/psPolynomial.c
- Timestamp:
- Nov 29, 2005, 4:00:11 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psPolynomial.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psPolynomial.c
r5576 r5624 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.13 2$ $Name: not supported by cvs2svn $10 * @date $Date: 2005-11- 22 21:40:40$9 * @version $Revision: 1.133 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2005-11-30 02:00:09 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 725 725 } 726 726 727 psPolynomial4D* psPolynomial4DAlloc( 728 unsigned int nX, 729 unsigned int nY, 730 unsigned int nZ, 731 unsigned int nT, 732 psPolynomialType type) 727 psPolynomial4D* psPolynomial4DAlloc( unsigned int nX, 728 unsigned int nY, 729 unsigned int nZ, 730 unsigned int nT, 731 psPolynomialType type) 733 732 { 734 733 PS_ASSERT_INT_NONNEGATIVE(nX, NULL); … … 785 784 } 786 785 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 786 psF64 psPolynomial1DEval(const psPolynomial1D* poly, 810 787 psF64 x) … … 824 801 } 825 802 803 // this function must accept F32 and F64 input x vectors 826 804 psVector *psPolynomial1DEvalVector(const psPolynomial1D *poly, 827 805 const psVector *x) … … 829 807 PS_ASSERT_POLY_NON_NULL(poly, NULL); 830 808 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 831 PS_ASSERT_VECTOR_TYPE (x, PS_TYPE_F64, NULL);809 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(x, NULL); 832 810 833 811 psVector *tmp; 834 812 835 tmp = psVectorAlloc(x->n, PS_TYPE_F64); 836 for (unsigned int i=0;i<x->n;i++) { 837 tmp->data.F64[i] = psPolynomial1DEval(poly, x->data.F64[i]); 838 } 839 813 switch (x->type.type) { 814 case PS_TYPE_F64: 815 tmp = psVectorAlloc(x->n, PS_TYPE_F64); 816 for (unsigned int i=0;i<x->n;i++) { 817 tmp->data.F64[i] = psPolynomial1DEval(poly, x->data.F64[i]); 818 } 819 break; 820 case PS_TYPE_F32: 821 tmp = psVectorAlloc(x->n, PS_TYPE_F32); 822 for (unsigned int i=0;i<x->n;i++) { 823 tmp->data.F32[i] = psPolynomial1DEval(poly, x->data.F32[i]); 824 } 825 break; 826 default: 827 psError(PS_ERR_UNKNOWN, false, "invalid input data type.\n"); 828 return (NULL); 829 } 840 830 return(tmp); 841 831 } … … 859 849 } 860 850 851 // this function must support input data types of F32 and F64 852 // all input vectors data types must match (all F32 or all F64) 861 853 psVector *psPolynomial2DEvalVector(const psPolynomial2D *poly, 862 854 const psVector *x, … … 866 858 PS_ASSERT_POLY_NON_NULL(poly, NULL); 867 859 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 868 PS_ASSERT_VECTOR_TYPE (x, PS_TYPE_F64, NULL);860 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(x, NULL); 869 861 PS_ASSERT_VECTOR_NON_NULL(y, NULL); 870 PS_ASSERT_VECTOR_TYPE (y, PS_TYPE_F64, NULL);862 PS_ASSERT_VECTOR_TYPE_F32_OR_F64(y, NULL); 871 863 872 864 psVector *tmp; … … 878 870 } 879 871 880 // Create output vector to return 881 tmp = psVectorAlloc(vecLen, PS_TYPE_F64); 882 883 // Evaluate the polynomial at the specified points 884 for (unsigned int i=0; i<vecLen; i++) { 885 tmp->data.F64[i] = psPolynomial2DEval(poly,x->data.F64[i],y->data.F64[i]); 886 } 887 872 switch (x->type.type) { 873 case PS_TYPE_F32: 874 if (y->type.type != x->type.type) { 875 psError(PS_ERR_UNKNOWN, true, "type mismatch in data vectors"); 876 return (NULL); 877 } 878 879 // Create output vector to return 880 tmp = psVectorAlloc(vecLen, PS_TYPE_F32); 881 882 // Evaluate the polynomial at the specified points 883 for (unsigned int i=0; i<vecLen; i++) { 884 tmp->data.F32[i] = psPolynomial2DEval(poly,x->data.F32[i],y->data.F32[i]); 885 } 886 break; 887 case PS_TYPE_F64: 888 if (y->type.type != x->type.type) { 889 psError(PS_ERR_UNKNOWN, true, "type mismatch in data vectors"); 890 return (NULL); 891 } 892 893 // Create output vector to return 894 tmp = psVectorAlloc(vecLen, PS_TYPE_F64); 895 896 // Evaluate the polynomial at the specified points 897 for (unsigned int i=0; i<vecLen; i++) { 898 tmp->data.F64[i] = psPolynomial2DEval(poly,x->data.F64[i],y->data.F64[i]); 899 } 900 break; 901 default: 902 psError(PS_ERR_UNKNOWN, false, "invalid input data type.\n"); 903 return (NULL); 904 } 888 905 // Return output vector 889 906 return(tmp);
Note:
See TracChangeset
for help on using the changeset viewer.
