VEC_$IREC3 Domain/OS VEC_$IREC3
NAME
vec_$irec3 - calculate third-order linear recurrence of 32-bit integer
vector
SYNOPSIS (C)
#include <apollo/base.h>
#include <apollo/vec.h>
void vec_$irec3(
long int *start_vec,
long int *vec_2,
long int *vec_3,
long int *vec_4,
long int &count,
long int *result_vec)
SYNOPSIS (Pascal)
%include '/sys/ins/base.ins.pas';
%include '/sys/ins/vec.ins.pas';
procedure vec_$irec3(
in start_vec: univ vec_$integer32_vector;
in vec_2: univ vec_$integer32_vector;
in vec_3: univ vec_$integer32_vector;
in vec_4: univ vec_$integer32_vector;
in count: integer32;
var result_vec: univ vec_$integer32_vector);
SYNOPSIS (FORTRAN)
%include '/sys/ins/base.ins.ftn'
%include '/sys/ins/vec.ins.ftn'
parameter (nvec = 10)
integer*4 start_vec(nvec), result_vec(nvec), vec_2(nvec), vec_3(nvec), vec_4(nvec)
integer*4 count
call vec_$irec3(start_vec, vec_2, vec_3, vec_4, count, result_vec)
DESCRIPTION
Vec_$irec3 calculates a third-order linear recurrence based on start_vec,
vec_2, vec_3, and vec_4. It differs from vec_$rec3 in that the vectors
being handled contain 32-bit integers.
This routine reads the first three entries in the array result_vec; it
then writes count entries into result_vec based on the following formula:
For each integer I such that 1 <= I <= count,
result_vec(I+3) = start_vec(I) + (vec_2(I) x result_vec(I+2))
+ (vec_3(I) x result_vec(I+1))
+ (vec_4(I) x result_vec(I))
Notice that result_vec is used both for input and output, and that it
must be large enough to hold count + 4 entries.
start_vec
An input vector.
vec_2
An input vector.
vec_3
An input vector.
vec_4
An input vector.
count
The number of elements to be operated on.
result_vec
The vector containing three input variables and the output from the
recurrence calculations.
NOTES
When vec_$irec3 is used to operate on matrixes in C and Pascal,
start_vec, vec_2, vec_3, and result_vec are row vectors; in FORTRAN, they
are column vectors.
As in all the vec_$ calls, the result array must not overlap any of the
input arrays; the result array may be identical to an input, but must not
contain any subset of an input. Because of pipelining, using overlap-
ping input and output arrays may cause incorrect results.
SEE ALSO
vec_$rec3, vec_$rec3c, vec_$rec3_i, vec_$drec3, vec_$drec3_i,
vec_$irec3_i, vec_$irec316, vec_$irec316_i.