Changeset 5566
- Timestamp:
- Nov 22, 2005, 8:04:28 AM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_rel8_b1/psLib/src/math/psPolynomial.c
r5558 r5566 7 7 * polynomials. It also contains a Gaussian functions. 8 8 * 9 * @version $Revision: 1.130.4.1 $ $Name: not supported by cvs2svn $10 * @date $Date: 2005-11- 18 03:05:52$9 * @version $Revision: 1.130.4.1.2.1 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2005-11-22 18:04:28 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 823 823 } 824 824 825 // this function must accept F32 and F64 input x vectors 825 826 psVector *psPolynomial1DEvalVector(const psPolynomial1D *poly, 826 827 const psVector *x) … … 828 829 PS_ASSERT_POLY_NON_NULL(poly, NULL); 829 830 PS_ASSERT_VECTOR_NON_NULL(x, NULL); 830 PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F64, NULL);831 // PS_ASSERT_VECTOR_TYPE(x, PS_TYPE_F64, NULL); 831 832 832 833 psVector *tmp; 833 834 834 tmp = psVectorAlloc(x->n, PS_TYPE_F64); 835 for (unsigned int i=0;i<x->n;i++) { 836 tmp->data.F64[i] = psPolynomial1DEval(poly, x->data.F64[i]); 837 } 838 835 switch (x->type) { 836 case PS_TYPE_F64: 837 tmp = psVectorAlloc(x->n, PS_TYPE_F64); 838 for (unsigned int i=0;i<x->n;i++) { 839 tmp->data.F64[i] = psPolynomial1DEval(poly, x->data.F64[i]); 840 } 841 break; 842 case PS_TYPE_F32: 843 tmp = psVectorAlloc(x->n, PS_TYPE_F32); 844 for (unsigned int i=0;i<x->n;i++) { 845 tmp->data.F32[i] = psPolynomial1DEval(poly, x->data.F32[i]); 846 } 847 break; 848 default: 849 psError(PS_ERR_UNKNOWN, false, "invalid input data type.\n"); 850 return (NULL); 851 } 839 852 return(tmp); 840 853 } … … 858 871 } 859 872 873 // this function must support input data types of F32 and F64 874 // all input vectors data types must match (all F32 or all F64) 860 875 psVector *psPolynomial2DEvalVector(const psPolynomial2D *poly, 861 876 const psVector *x, … … 877 892 } 878 893 879 // Create output vector to return 880 tmp = psVectorAlloc(vecLen, PS_TYPE_F64); 881 882 // Evaluate the polynomial at the specified points 883 for (unsigned int i=0; i<vecLen; i++) { 884 tmp->data.F64[i] = psPolynomial2DEval(poly,x->data.F64[i],y->data.F64[i]); 885 } 886 894 switch (x->type) { 895 case PS_TYPE_F32: 896 if (y->type != x->type) { 897 psError(PS_ERR_UNKNOWN, true, "type mismatch in data vectors"); 898 return (NULL); 899 } 900 901 // Create output vector to return 902 tmp = psVectorAlloc(vecLen, PS_TYPE_F32); 903 904 // Evaluate the polynomial at the specified points 905 for (unsigned int i=0; i<vecLen; i++) { 906 tmp->data.F32[i] = psPolynomial2DEval(poly,x->data.F32[i],y->data.F32[i]); 907 } 908 break; 909 case PS_TYPE_F64: 910 if (y->type != x->type) { 911 psError(PS_ERR_UNKNOWN, true, "type mismatch in data vectors"); 912 return (NULL); 913 } 914 915 // Create output vector to return 916 tmp = psVectorAlloc(vecLen, PS_TYPE_F64); 917 918 // Evaluate the polynomial at the specified points 919 for (unsigned int i=0; i<vecLen; i++) { 920 tmp->data.F64[i] = psPolynomial2DEval(poly,x->data.F64[i],y->data.F64[i]); 921 } 922 break; 923 default: 924 psError(PS_ERR_UNKNOWN, false, "invalid input data type.\n"); 925 return (NULL); 926 } 887 927 // Return output vector 888 928 return(tmp);
Note:
See TracChangeset
for help on using the changeset viewer.
