C H A P T E R  16

Summary of Other Sun S3L Routines

This chapter provides a summary listing of routines that are in Sun S3L, but are not discussed in detail elsewhere in this manual. The discussion is separated into two sections, as follows:

For detailed descriptions of these routines, refer to the Sun S3L Software Reference Manual.

 


Other Computational Routines

Walsh Transform

The following Sun S3L routines support the computation of the discrete Walsh/Hadamard transform of 1D and 2D Sun S3L arrays:

S3L_walsh_setup
S3L_walsh
S3L_walsh_free_setup

Sun S3L computes the unordered Hadamard transform, whose matrix is a permutation of the ordered Hadamard and Walsh transforms. The transform can be computed either in place or out of place.

If computed in-place, the result is in a and in order. If it is computed out of place, the result is in b and out of order.

Iterative Eigenpairs

Sun S3L provides the following routine for computing selected eigenpairs of dense or sparse matrices using iterative methods:

S3L_eigen_iter

Eigenpair selection can be based on user-specified properties, such as largest magnitude. When computing eigenpairs in densely populated arrays, the multiple-instance paradigm can be used to shorten the time to solution.

Stock Option Pricing

The following Sun S3L routines compute the prices of vanilla and certain exotic stock option prices. Optional support for hedge statistics (Greeks) is also provided.

S3L_fin_fd_1D
S3L_fin_fd_2D

Both use fourth-order, unconditionally stable, oscillation-free finite-difference method to solve 1D and 2D Black-Scholes partial differential equations.

Discrete Sine and Cosine Transforms

Sun S3L provides routines for computing the discrete cosine transform Type IV and discrete sine transform of 1D, 2D, and 3D Sun S3L arrays. The arrays have to be real (S3L_float or S3L_double).

The discrete cosine transform routines are:

S3L_dct_iv_setup
S3L_dct_iv
S3L_dct_iv_setup

The discrete sine transform routines are:

S3L_dst_setup
S3L_dst
S3L_dst_free_setup

Quadratic Programming Optimization

The following routines are provided for quadratic programming optimization:

S3L_qp
S3L_qp_attr_set
S3L_qp_attr_destroy
S3L_qp_attr_init

S3L_qp applies an interior point method to solve a linear/quadratic optimization problem. The other routines are used to define certain attributes, such as the type of solver to be used, and to release the array handle associated with the specified attributes.

Sparse Linear Problem Solver

Sun S3L also provides the following routine for solving linear/quadratic optimization problems for sparse Sun S3L arrays.

S3L_lp_sparse

Cholesky Solver

Sun S3L provides the following routines for computing Cholesky factors and solving systems of distributed linear equations:

S3L_cholesky_factor
S3L_cholesky_solve
S3L_cholesky_invert

For each square matrix A in the parallel array a, S3L_cholesky_factor computes the Cholesky factorization. The factorization has the form A = U' x U, where U is an upper triangular matrix.

S3L_cholesky_solve uses the factors computed by S3L_cholesky_factor to solve a system of distributed linear equations of the form AX = B for each square matrix A in the parallel array a.

S3L_cholesky_invert computes the inverse of each square matrix instance A of the parallel array a. It does this by inverting the Cholesky factor U and then computing inverse(U) * inverse(U)'.

Structured Solvers

The following routines can be used to solve banded and triangular systems:

S3L_gen_band_factor
S3L_gen_band_solve
S3L_gen_band_free_factors
S3L_gen_trid_factor
S3L_gen_trid_solve
S3L_gen_trid_free_factors

S3L_gen_band_factor performs the LU factorization of an n x n general banded array and S3L_gen_band_solve solves the banded system represented by the factorization results. S3L_gen_band_free_factors frees the internal data structures associated with the banded matrix factorization.

S3L_gen_trid_factor factors a tridiagonal matrix whose diagonal is stored in a vector. S3L_gen_trid_solve solves a tridiagonal system using the factors supplied by an earlier call to S3L_gen_trid_factor. S3L_gen_trid_free_factors frees the internal data structures associated with a prior tridiagonal factorization.

Both S3L_gen_band_factor and S3L_gen_trid_factor operate on arrays of rank 3 and greater in 2D slices, using the multiple-instance method to reduce overall execution time.

Dense Symmetric Eigenvalue Solver

Sun S3L provides the following routine for finding selected eigenvalues and, optionally, eigenvectors of Hermitian matrices:

S3L_sym_eigen

Various controls can be placed on the selection process, such as specifying a range of values or range of indices within which the eigenvalues must lie.

Condition Numbers

The following routine can be used to compute the condition numbers of square arrays:

S3L_condition_number

Internal LU factorization is used in combination with a norm as specified by a calling argument. The norm can be either 1-norm or infinity norm.

Least-Squares Solver

Sun S3L provides the following routine for finding the least-squares solution of an overdetermined system (m >= n):

S3L_gen_lsq

For an underdetermined system (m < n), S3L_gen_lsq finds the minimum norm solution.

Dense Singular Value Decomposition

The following routine computes the singular value of a parallel array and, optionally, the right and/or left singular vectors:

S3L_gen_svd

Iterative Solver

The following routine uses an iterative algorithm, with or without preconditioning, to solve a linear system of equations of the form Ax = b:

S3L_gen_iter_solve

Autocorrelation

Sun S3L provides the following routines for computing the 1D or 2D autocorrelation of a signal represented by a parallel array:

S3L_acorr_setup
S3L_acorr
S3L_acorr_free_setup

Convolution

Sun S3L provides the following routines for computing the 1D or 2D convolution of a signal represented by a parallel array, using a filter contained in a second parallel array:

S3L_conv_setup
S3L_conv
S3L_conv_free_setup

Deconvolution

Sun S3L provides the following routines for computing the 1D or 2D deconvolution of a signal represented by a parallel array:

S3L_deconv_setup
S3L_deconv
S3L_deconv_free_setup

Grade Elements

Sun S3L includes a family of routines that computes the grade of the elements of a parallel array. Grading is done in either descending or ascending order and is done either across the whole array or along a specified axis. These routines are:

S3L_grade_up
S3L_grade_down
S3L_grade_detailed_up
S3L_grade_detailed_down

Sort Elements

Sun S3L includes a family of routines that sorts the elements of a parallel array. Sorting is done in either descending or ascending order and is done either across the whole array or along a specified axis. These routines are:

S3L_sort
S3L_sort_up
S3L_sort_down
S3L_sort_detailed
S3L_sort_detailed_up
S3L_sort_detailed_down

Parallel Transpose

The following routine performs a general permutation of the axes of a parallel array:

S3L_trans


Other Toolkit Routines

Perform Operations on Array Elements

Sun S3L includes a variety of routines that can be used to alter the values of individual elements or particular subsets of elements in parallel arrays.

The following routines perform operations that involve one or two operands:

S3L_array_op1
S3L_array_op2
S3L_array_scalar_op2

S3L_array_op1 and S3L_array_op2 both operate on elements contained in one (op1) or two (op2) arrays. S3L_array_scalar_op2 operations involve an array and a scalar.

The following routine performs a circular shift of a specified distance along a specified axis of an array:

S3L_cshift

The following routine applies a user-defined function to some or all elements of an array:

S3L_forall

The following routines perform a predefined reduction function over all elements of an array or along a specified axis of an array:

S3L_reduce
S3L_reduce_axis

The following routine sets all elements in an array to zero:

S3L_zero_elements

Copy Arrays

The following routine copies the contents of one parallel array into a second parallel array:

S3L_copy_array