VEC_$IPOSTMULT16 Domain/OS VEC_$IPOSTMULT16
NAME
vec_$ipostmult16 - multiply a 16-bit integer vector by a 4x4 matrix
SYNOPSIS (C)
#include <apollo/base.h>
#include <apollo/vec.h>
void vec_$ipostmult16(
short *matrix,
short *start_vec,
short *result_vec)
SYNOPSIS (Pascal)
%include '/sys/ins/base.ins.pas';
%include '/sys/ins/vec.ins.pas';
procedure vec_$ipostmult16(
in matrix: univ vec_$integer16_matrix;
in start_vec: univ vec_$integer16_vector;
out result_vec: univ vec_$integer16_vector);
SYNOPSIS (FORTRAN)
%include '/sys/ins/base.ins.ftn'
%include '/sys/ins/vec.ins.ftn'
integer*2 matrix(4, 4), start_vec(4), result_vec(4)
call vec_$ipostmult16(matrix, start_vec, result_vec)
DESCRIPTION
Vec_$ipostmult16 multiplies the 4-element vector start_vec by the 4x4
matrix matrix.
In C, vec_$ipostmult16 applies matrix as a right transform to a row vec-
tor start_vec, and the resulting operation is
for (j = 0; j < 4; ++j) {
result_vec[j] = 0;
for (i = 0; i < 4; ++i)
result_vec[j] += start_vec[i]
* matrix[i][j];
}
In Pascal, vec_$ipostmult16 applies matrix as a right transform to a row
vector start_vec, and the resulting operation is
for j := 1 to 4 do
begin
result_vec[j] := 0;
for i := 1 to 4 do
result_vec[j] := result_vec[j]
+ start_vec[i]
* matrix[i,j];
end
In FORTRAN, vec_$ipostmult16 applies matrix as a left transform to a
column vector start_vec, and the resulting operation is
do 10 j = 1, 4
result_vec(j) = 0
do 10 i = 1, 4
result_vec(j) = result_vec(j)
& + start_vec(i)
& * matrix(j,i)
10 continue
matrix
The matrix to multiply by start_vec.
start_vec
The vector to multiply by matrix.
result_vec
The product of start_vec and matrix.
NOTES
Vec_$ipremult16 transforms 16-bit integer vectors from the other side.
SEE ALSO
vec_$dpostmult, vec_$ipostmult, vec_$postmult.