Libraries and Packages: The VOS Interface

The vector operator (

Each section below describes a family of **vops** *operators* related by functionality. Each operator (procedure) is implemented with the same root name and calling sequence for several data types. However, not all operators are implemented (nor do they make sense) for every data type. The tables list the root procedure name, implemented data types, calling sequence, and description of the operation. All of the functions require an int argument that specifies the number of elements in the passed vector or vectors. If the procedure requires more than one vector, they are assumed to have the same number of elements. In nearly every case, multiple array arguments to **vops** procedures are also the same data type. A significant exception is achtTT(), which converts a vector of one data type to another vector of a different data type.

All vector operations may be performed *in place*. That is, the same array may be used on input as well as output. An array passed to a vector procedure need not be one-dimensional. In all cases, the vectors are treated simply as contiguous words. Since there is assumed to be no functional relationship among the pixel positions in the vectors, arrays of any dimensionality may be passed. Only the total number of pixels in the array need be passed to the **vops** procedure. Many procedures are implemented for the case of two vectors or a vector and a scalar. In the latter case, the procedure name has a k inserted before the last character (the initial of the data type) and one argument must be a constant or scalar variable.

`short`

, `int`

, `long`

, `real`

, `double`

, and `complex`

. To use the appropriate data type, replace `amulr()`

or `aaddki()`

, for example. Most of these are the first character of the data type, except for `complex`

, whose representative character is `x`

. The last procedure, `advz`

`()`

, implements dividing vectors, but upon dividing by zero it calls `errfcn()`

, supplied by the application as an external function.`short`

, `int`

, and `long`

.`char`

, `short`

, `int`

, `long`

, `real`

, `double`

, and `complex`

. Note, however, that the output vector, `c`

is always an `int`

array.

`char`

, `short`

, `int`

, `long`

, `real`

, `double`

, and `complex`

. In addition, `ach`

`()`

is implemented for unsigned byte `b`

and unsigned short `u`

types. These are used primarily in low-level image I/O (`aclr`

`()`

is also implemented for byte.`short`

, `int`

, `long`

, `real`

, `double`

, and `complex`

, except the modulus functions `amod`

`()`

and `amodk`

`()`

, which are not implemented for `complex`

.`acjg`

`()`

is implemented only for `complex`

arrays. The first argument to `aimg`

`()`

and `aupx`

`()`

must be a `complex`

array. The last argument to `aupx`

`()`

must be a `complex`

array.`aravt()`

and `awvgt()`

, in which the returned value is the number of points remaining in the sample after rejection.- Arithmetic Operators
**Table 2.48:**- Arithmetic Functions.- Bitwise Boolean operators
**Table 2.49:**- Bitwise Boolean Operators.- Logical Comparison
**Table 2.50:**- Logical Comparison Functions.- Fundamental Array Operators
**Table 2.51:**- Fundamental Array Operators.- Algebraic Operators
**Table 2.52:**- Algebraic Operators.- Complex Operators
**Table 2.53:**- Complex Operators.- Fourier Transforms
**Table 2.54:**- Fourier Transforms.- Transformations
**Table 2.55:**- Transformations.- Miscellaneous Procedures
**Table 2.56:**- Miscellaneous Procedures.- Scalar Results
**Table 2.57:**- Scalar Results.

Generated with CERN WebMaker