Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ vec_irec316(A) — Apollo

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

vec_$rec3

vec_$rec3c

vec_$rec3_i

vec_$drec3

vec_$drec3_i

vec_$irec3

vec_$irec3_i

vec_$irec316_i

VEC_$IREC316                      Domain/OS                       VEC_$IREC316


NAME
     vec_$irec316 - calculate third-order linear recurrence of 16-bit integer
     vector

SYNOPSIS (C)
     #include <apollo/base.h>
     #include <apollo/vec.h>

     void vec_$irec316(
          short int *start_vec,
          short int *vec_2,
          short int *vec_3,
          short int *vec_4,
          long int &count,
          short int *result_vec)

SYNOPSIS (Pascal)
     %include '/sys/ins/base.ins.pas';
     %include '/sys/ins/vec.ins.pas';

     procedure vec_$irec316(
          in start_vec: univ vec_$integer16_vector;
          in vec_2: univ vec_$integer16_vector;
          in vec_3: univ vec_$integer16_vector;
          in vec_4: univ vec_$integer16_vector;
          in count: integer32;
          var result_vec: univ vec_$integer16_vector);

SYNOPSIS (FORTRAN)
     %include '/sys/ins/base.ins.ftn'
     %include '/sys/ins/vec.ins.ftn'

           parameter (nvec = 10)

           integer*2 start_vec(nvec), result_vec(nvec), vec_2(nvec), vec_3(nvec), vec_4(nvec)
           integer*4 count

           call vec_$irec316(start_vec, vec_2, vec_3, vec_4, count, result_vec)

DESCRIPTION
     Vec_$irec316 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 16-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_$irec316 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.

     vec_$irec316, like all 16-bit integer routines, performs poorly when com-
     pared to the 32-bit integer routines.  Its use should be avoided wherever
     possible, especially on high-performance workstations.

SEE ALSO
     vec_$rec3, vec_$rec3c, vec_$rec3_i, vec_$drec3, vec_$drec3_i, vec_$irec3,
     vec_$irec3_i, vec_$irec316_i.

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026