NAG Library Function Document
nag_2d_cheb_eval (e02cbc)
 
1
 Purpose
nag_2d_cheb_eval (e02cbc) evaluates a bivariate polynomial from the rectangular array of coefficients in its double Chebyshev series representation.
 
2
 Specification
| 
| #include <nag.h> |  
| #include <nage02.h> |  
| void | nag_2d_cheb_eval (Integer mfirst,
Integer mlast,
Integer k,
Integer l,
const double x[],
double xmin,
double xmax,
double y,
double ymin,
double ymax,
double ff[],
const double a[],
NagError *fail) |  | 
 
3
 Description
This function evaluates a bivariate polynomial (represented in double Chebyshev form) of degree 
 in one variable, 
, and degree 
 in the other, 
.  The range of both variables is 
 to 
.  However, these normalized variables will usually have been derived (as when the polynomial has been computed by 
nag_2d_cheb_fit_lines (e02cac), for example) from your original variables 
 and 
 by the transformations
(Here 
 and 
 are the ends of the range of 
 which has been transformed to the range 
 to 
 of 
.  
 and 
 are correspondingly for 
.  See 
Section 9).  For this reason, the function has been designed to accept values of 
 and 
 rather than 
 and 
, and so requires values of 
, etc. to be supplied by you.  In fact, for the sake of efficiency in appropriate cases, the function evaluates the polynomial for a sequence of values of 
, all associated with the same value of 
.
The double Chebyshev series can be written as
where 
 is the Chebyshev polynomial of the first kind of degree 
 and argument 
, and 
 is similarly defined.  However the standard convention, followed in this function, is that coefficients in the above expression which have either 
 or 
 zero are written 
, instead of simply 
, and the coefficient with both 
 and 
 zero is written 
.
The function first forms 
, with 
 replaced by 
, for each of 
.  The value of the double series is then obtained for each value of 
, by summing 
, with 
 replaced by 
, over 
.  The Clenshaw three term recurrence (see 
Clenshaw (1955)) with modifications due to Reinsch and 
Gentleman (1969) is used to form the sums.
 
4
 References
Clenshaw C W (1955)  A note on the summation of Chebyshev series Math. Tables Aids Comput. 9 118–120 
Gentleman W M (1969)  An error analysis of Goertzel's (Watt's) method for computing Fourier coefficients Comput. J. 12 160–165 
 
5
 Arguments
- 1:
  
      – IntegerInput
- 2:
  
      – IntegerInput
- 
On entry: the index of the first and last   value in the array   at which the evaluation is required respectively (see  Section 9). 
 Constraint:
  .
 
- 3:
  
      – IntegerInput
- 4:
  
      – IntegerInput
- 
On entry: the degree  of  and  of , respectively, in the polynomial. Constraint:
   and .
 
- 5:
  
      – const doubleInput
- 
On entry: , for , must contain the  values at which the evaluation is required. Constraint:
  , for all .
 
- 6:
  
      – doubleInput
- 7:
  
      – doubleInput
- 
On entry: the lower and upper ends,   and  , of the range of the variable   (see  Section 3).
 The values of  xmin and  xmax may depend on the value of   (e.g., when the polynomial has been derived using  nag_2d_cheb_fit_lines (e02cac)). 
 Constraint:
  .
 
- 8:
  
      – doubleInput
- 
On entry: the value of the  coordinate of all the points at which the evaluation is required. Constraint:
  .
 
- 9:
  
      – doubleInput
- 10:
  
    – doubleInput
- 
On entry: the lower and upper ends,   and  , of the range of the variable   (see  Section 3). 
 Constraint:
  .
 
- 11:
  
    – doubleOutput
- 
On exit:  gives the value of the polynomial at the point , for . 
- 12:
  
    – const doubleInput
- 
Note: the dimension,  dim, of the array  a
must be at least
 . 
 On entry: the Chebyshev coefficients of the polynomial. The coefficient   defined according to the standard convention (see  Section 3) must be in  . 
 
- 13:
  
    – NagError *Input/Output
- 
The NAG error argument (see  Section 3.7 in How to Use the NAG Library and its Documentation). 
 
6
 Error Indicators and Warnings
- NE_ALLOC_FAIL
- 
Dynamic memory allocation failed.
       
      See  Section 2.3.1.2  in How to Use the NAG Library and its Documentation for further information. 
- NE_BAD_PARAM
- 
On entry, argument   had an illegal value. 
- NE_INT_2
- 
On entry,  and .
 Constraint:  and .
 
On entry,  and .
 Constraint: .
 
- NE_INTERNAL_ERROR
- 
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact  NAG for assistance. 
	See  Section 2.7.6  in How to Use the NAG Library and its Documentation for further information. 
Unexpected internal failure when evaluating the polynomial.
 
- NE_NO_LICENCE
- 
Your licence key may have expired or may not have been installed correctly.
       
      See  Section 2.7.5 in How to Use the NAG Library and its Documentation for further information. 
- NE_REAL_2
- 
On entry,  and .
 Constraint: .
 
On entry,  and .
 Constraint: .
 
On entry,  and .
 Constraint: .
 
On entry,  and .
 Constraint: .
 
- NE_REAL_ARRAY
- 
On entry, ,  and .
 Constraint: .
 
On entry, ,  and .
 Constraint: .
 
 
7
 Accuracy
The method is numerically stable in the sense that the computed values of the polynomial are exact for a set of coefficients which differ from those supplied by only a modest multiple of machine precision.
 
8
 Parallelism and Performance
nag_2d_cheb_eval (e02cbc) is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
Please consult the 
x06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the 
Users' Note for your implementation for any additional implementation-specific information.
The time taken is approximately proportional to , where , the number of points at which the evaluation is required.
This function is suitable for evaluating the polynomial surface fits produced by the function 
nag_2d_cheb_fit_lines (e02cac), which provides the
array 
a in the required form.  For this use, the values of 
 and 
 supplied to the present function must be the same as those supplied to 
nag_2d_cheb_fit_lines (e02cac).  The same applies to 
 and 
 if they are independent of 
.  If they vary with 
, their values must be consistent with those supplied to 
nag_2d_cheb_fit_lines (e02cac) (see 
Section 9 in 
nag_2d_cheb_fit_lines (e02cac)).
The arguments 
mfirst and 
mlast are intended to permit the selection of a segment of the array 
x which is to be associated with a particular value of 
, when, for example, other segments of 
x are associated with other values of 
.  Such a case arises when, after using 
nag_2d_cheb_fit_lines (e02cac) to fit a set of data, you wish to evaluate the resulting polynomial at all the data values.  In this case, if the arguments 
x, 
y, 
mfirst and 
mlast of the present function are set respectively (in terms of arguments of 
nag_2d_cheb_fit_lines (e02cac)) to 
x, 
, 
 and 
, the function will compute values of the polynomial surface at all data points which have 
 as their 
 coordinate (from which values the residuals of the fit may be derived).
 
10
 Example
This example reads data in the following order, using the notation of the argument list above:
For each line 
 the polynomial is evaluated at 
 equispaced points between 
 and 
 inclusive.
 
10.1
 Program Text
Program Text (e02cbce.c)
 
10.2
 Program Data
Program Data (e02cbce.d)
 
10.3
 Program Results
Program Results (e02cbce.r)