### AST_CHEBYMAP

Create a ChebyMap

#### Description:

This function creates a new ChebyMap and optionally initialises its attributes.

A ChebyMap is a form of Mapping which performs a Chebyshev polynomial transformation. Each output coordinate is a linear combination of Chebyshev polynomials of the first kind, of order zero up to a specified maximum order, evaluated at the input coordinates. The coefficients to be used in the linear combination are specified separately for each output coordinate.

For a 1-dimensional ChebyMap, the forward transformation is defined as follows:

f(x) = c0.T0(x’ ) $+$ c1.T1(x’ ) $+$ c2.T2(x’ ) $+$ ...

where:

• Tn(x’ ) is the nth Chebyshev polynomial of the first kind:

• T0(x’ ) = 1

• T1(x’ ) = x’

• Tn$+$1(x’ ) = 2.x’ .Tn(x’ ) $+$ Tn-1(x’ )

• x’ is the inpux axis value, x, offset and scaled to the range [-1, 1] as x ranges over a specified bounding box, given when the ChebyMap is created. The input positions, x, supplied to the forward transformation must fall within the bounding box - bad axis values (AST__BAD) are generated for points outside the bounding box.

For an N-dimensional ChebyMap, the forward transformation is a generalisation of the above form. Each output axis value is the sum of NCOEFF terms, where each term is the product of a single coefficient value and N factors of the form Tn(x’ _i), where " x’ _i" is the normalised value of the i’ th input axis value.

The forward and inverse transformations are defined independantly by separate sets of coefficients, supplied when the ChebyMap is created. If no coefficients are supplied to define the inverse transformation, the AST_POLYTRAN method of the parent PolyMap class can instead be used to create an inverse transformation. The inverse transformation so generated will be a Chebyshev polynomial with coefficients chosen to minimise the residuals left by a round trip (forward transformation followed by inverse transformation).

#### Invocation

RESULT = AST_CHEBYMAP( NIN, NOUT, NCOEFF_F, COEFF_F, NCOEFF_I, COEFF_I, LBND_F, UBND_F, LBND_I, UBND_I, OPTIONS, STATUS )

#### Arguments

##### NIN = INTEGER (Given)
The number of input coordinates.
##### NOUT = INTEGER (Given)
The number of output coordinates.
##### NCOEFF_F = INTEGER (Given)
The number of non-zero coefficients necessary to define the forward transformation of the ChebyMap. If zero is supplied, the forward transformation will be undefined.
##### COEFF_F( $\ast$ ) = DOUBLE PRECISION (Given)
An array containing " NCOEFF_F$\ast$( 2 $+$ NIN )" elements. Each group of " 2 $+$ NIN" adjacent elements describe a single coefficient of the forward transformation. Within each such group, the first element is the coefficient value; the next element is the integer index of the ChebyMap output which uses the coefficient within its defining expression (the first output has index 1); the remaining elements of the group give the integer powers to use with each input coordinate value (powers must not be negative, and floating point values are rounded to the nearest integer).

For instance, if the ChebyMap has 3 inputs and 2 outputs, each group consisting of 5 elements, A groups such as " (1.2, 2.0, 1.0, 3.0, 0.0)" describes a coefficient with value 1.2 which is used within the definition of output 2. The output value is incremented by the product of the coefficient value, the value of the Chebyshev polynomial of power 1 evaluated at input coordinate 1, and the value of the Chebyshev polynomial of power 3 evaluated at input coordinate 2. Input coordinate 3 is not used since its power is specified as zero. As another example, the group " (-1.0, 1.0, 0.0, 0.0, 0.0 )" adds a constant value -1.0 onto output 1 (it is a constant value since the power for every input axis is given as zero).

Each final output coordinate value is the sum of the " NCOEFF_F" terms described by the " NCOEFF_F" groups within the supplied array.

##### NCOEFF_I = INTEGER (Given)
The number of non-zero coefficients necessary to define the inverse transformation of the ChebyMap. If zero is supplied, the inverse transformation will be undefined.
##### COEFF_I( $\ast$ ) = DOUBLE PRECISION (Given)
An array containing " NCOEFF_I$\ast$( 2 $+$ NOUT )" elements. Each group of " 2 $+$ NOUT" adjacent elements describe a single coefficient of the inverse transformation, using the same schame as " COEFF_F" , except that " inputs" and " outputs" are transposed.
##### LBND_F( $\ast$ ) = DOUBLE PRECISION (Given)
An array containing the lower bounds of the input bounding box within which the ChebyMap is defined. This argument is not used or accessed if NCOEFF_F is zero. If supplied, the array should contain " NIN" elements.
##### UBND_F( $\ast$ ) = DOUBLE PRECISION (Given)
An array containing the upper bounds of the input bounding box within which the ChebyMap is defined. This argument is not used or accessed if NCOEFF_F is zero. If supplied, the array should contain " NIN" elements.
##### LBND_I( $\ast$ ) = DOUBLE PRECISION (Given)
An array containing the lower bounds of the output bounding box within which the ChebyMap is defined. This argument is not used or accessed if NCOEFF_I is zero. If supplied, the array should contain " NOUT" elements.
##### UBND_I( $\ast$ ) = DOUBLE PRECISION (Given)
An array containing the upper bounds of the output bounding box within which the ChebyMap is defined. This argument is not used or accessed if NCOEFF_I is zero. If supplied, the array should contain " NOUT" elements.
##### OPTIONS = CHARACTER $\ast$ ( $\ast$ ) (Given)
A character string containing an optional comma-separated list of attribute assignments to be used for initialising the new ChebyMap. The syntax used is identical to that for the AST_SET routine.
##### STATUS = INTEGER (Given and Returned)
The global status.

#### Returned Value

##### AST_CHEBYMAP = INTEGER
A pointer to the new ChebyMap.

#### Notes:

• A null Object pointer (AST__NULL) will be returned if this function is invoked with STATUS set to an error value, or if it should fail for any reason.