Data type information is encoded in the Sun S3L array handle for both C and Fortran interfaces and is decoded at runtime. This allows appropriate branching to occur during execution, which makes it unnecessary to maintain separate routines with different names for each language interface.
TABLE 2-1 shows the data types supported for the various Sun S3L routines. TABLE 2-2 lists the C and Fortran language-specific data type equivalents.
Within each subroutine call, elements of all array arguments must match in data type, unless the argument descriptions indicate otherwise.
Place one of the following include lines at the top of any C or Fortran program unit that makes a Sun S3L call:
C and C++ programs
F77 and F90 programs
Note - For Sun S3L 2.0 (previously released version of Sun S3L), the Sun S3L array handles for the F77 interfaces are of type integer*4. For subsequent releases, they are of type integer*8. Therefore, when porting F77 programs from Sun S3L 2.0 to a later version, be sure to change the array handle data type definitions accordingly. If you want your F77 program to be compatible across Sun S3L 2.0 and subsequent releases, you should insert #ifdef statements in appropriate places in the code.
|
TABLE 2-1 Array Data Types Supported for C/C++ and F77/F90
Operation
|
int
|
long integer
|
float
|
double
|
complex
|
double
complex
|
2-norm
|
|
|
x
|
x
|
x
|
x
|
Autocorrelation
|
|
|
x
|
x
|
x
|
x
|
Convolve
|
|
|
x
|
x
|
x
|
x
|
Copy array
|
x
|
x
|
x
|
x
|
x
|
x
|
Circular shift
|
x
|
x
|
x
|
x
|
x
|
x
|
Declare array
|
x
|
x
|
x
|
x
|
x
|
x
|
Deconvolve
|
|
|
x
|
x
|
x
|
x
|
Define array
|
x
|
x
|
x
|
x
|
x
|
x
|
Describe array
|
x
|
x
|
x
|
x
|
x
|
x
|
Exit
|
- N/A -
|
FFT, simple and detailed
complex-to-complex
|
|
|
|
|
x
|
x
|
FFT, inverse
|
|
|
|
|
x
|
x
|
FFT, simple real-to-complex
|
|
|
x
|
x
|
|
|
FFT, simple complex-to-real
|
|
|
x
|
x
|
|
|
Forall
|
x
|
x
|
x
|
x
|
x
|
x
|
Free array handle
|
x
|
x
|
x
|
x
|
x
|
x
|
General band solver
|
|
|
x
|
x
|
x
|
x
|
General iterative solver
|
|
|
x
|
x
|
x
|
x
|
General least squares
|
|
|
x
|
x
|
x
|
x
|
General singular value decomposition (SVD)
|
|
|
x
|
x
|
x
|
x
|
General tridiagonal
|
|
|
x
|
x
|
x
|
x
|
Get array elements
|
x
|
x
|
x
|
x
|
x
|
x
|
Get array attributes
|
x
|
x
|
x
|
x
|
x
|
x
|
Grade up/down
|
x
|
x
|
x
|
x
|
x
|
x
|
Initialize Sun S3L environment
|
|
|
|
- N/A -
|
|
|
Inner product
|
|
|
x
|
x
|
x
|
x
|
LU factor
|
|
|
x
|
x
|
x
|
x
|
LU solve
|
|
|
x
|
x
|
x
|
x
|
LU invert
|
|
|
x
|
x
|
x
|
x
|
Matrix multiplication
|
|
|
x
|
x
|
x
|
x
|
Matrix vector multiplication
|
|
|
x
|
x
|
x
|
x
|
Matrix vector sparse
|
|
|
x
|
x
|
x
|
x
|
Outer product
|
|
|
x
|
x
|
x
|
x
|
Print array
|
x
|
x
|
x
|
x
|
x
|
x
|
Print sparse array
|
|
|
x
|
x
|
x
|
x
|
Read array
|
x
|
x
|
x
|
x
|
x
|
x
|
Read sparse array
|
|
|
x
|
x
|
x
|
x
|
Reduce
|
x
|
x
|
x
|
x
|
x
|
x
|
Reduce axis
|
x
|
x
|
x
|
x
|
x
|
x
|
RNG, lagged Fibonacci
|
x
|
x
|
x
|
x
|
x
|
x
|
RNG, linear congruential
|
x
|
x
|
x
|
x
|
x
|
x
|
RNG, sparse matrix
|
|
|
x
|
x
|
x
|
x
|
Set array elements
|
x
|
x
|
x
|
x
|
x
|
x
|
Set process grid
|
- N/A -
|
Set safety
|
- N/A -
|
Sort
|
x
|
x
|
x
|
x
|
|
|
Thread communicator setup
|
- N/A -
|
Symmetric eigenvalues, eigenvectors
|
|
|
x
|
x
|
x
|
x
|
Transpose
|
x
|
x
|
x
|
x
|
x
|
x
|
Write array
|
x
|
x
|
x
|
x
|
x
|
x
|
Zero elements
|
x
|
x
|
x
|
x
|
x
|
x
|
TABLE 2-2 Equivalent Sun S3L, Fortran, and C Array Data Types
Sun S3L Data Types
|
F77/F90 Data Types
|
C/C++ Data Types
|
S3L_integer
|
INTEGER*4
|
int
|
S3L_long_integer
|
INTEGER*8
|
long long
|
S3L_float
|
REAL*4
|
float
|
S3L_double
|
REAL*8
|
double
|
S3L_complex
|
COMPLEX*8
|
typedef struct
{ float real;
float imag;
} S3L_cmpx8
|
S3L_double_complex
|
COMPLEX*16
|
typedef struct cmpx16_s
{ float double real;
float double imag;
} S3L_cmpx16
|
Sun S3L 4.0 Software Programming Guide
| 817-0086-10
| ![Table of Contents](shared/toc01.gif) ![Previous Chapter](shared/prev01.gif) ![Next Chapter](shared/next01.gif)
|
Copyright © 2003, Sun Microsystems, Inc. All rights reserved.