cube/src/R4x4.i3


 Copyright (C) 1992, Digital Equipment Corporation                         
 All rights reserved.                                                      
 See the file COPYRIGHT for a full description.                            
                                                                           
 Created on Sep 15 1988 by Jorge Stolfi                      
 Last modified on Tue Jun 16 18:29:58 PDT 1992 by muller     
      modified on Fri Feb 16  0:35:06 PST 1990 by stolfi     
      modified on Fri Jan 20 11:14:55 PST 1989 by glassman   

INTERFACE R4x4;
Real 4 x 4 matrices.

This interface implements operations on 4 x 4 real matrices, and uses them to represent linear transformations of R4.

Index: reals, matrices of points; geometry; linear algebra; numerical routines; vectors; reals, vectors of

****************************************************************** WARNING: DO NOT EDIT THIS FILE. IT WAS GENERATED MECHANICALLY. See the Makefile for more details. ******************************************************************

IMPORT R4;

TYPE
  INT = INTEGER;
  NAT = CARDINAL;
  BOOL = BOOLEAN;

  Axis = R4.Axis;
  Matrix = ARRAY Axis OF R4.T;
  T = Matrix;

  ArrT = ARRAY OF T;
  RefT = REF T;
  RefArrT = REF ArrT;

PROCEDURE FromRows(READONLY p0, p1, p2, p3: R4.T): Matrix;
  (* Matrix with given rows, which maps the ith canonical vector
  to the ith given point. *)

PROCEDURE Zero(): Matrix;
  (* Null linear map, with zero matrix. *)

PROCEDURE Identity(): Matrix;
  (* Identity linear map *)

PROCEDURE Equal(READONLY A, B: Matrix): BOOL;
  (* True if A=B *)

PROCEDURE Scale (alpha: REAL; READONLY A: Matrix): Matrix;
  (* Scalar multiplication alpha * A. *)

PROCEDURE Add (READONLY A, B: Matrix): Matrix;
  (* Matrix addition A + B. *)

PROCEDURE Sub (READONLY A, B: Matrix): Matrix;
  (* Matrix difference A - B. *)

PROCEDURE Minus (READONLY A: Matrix): Matrix;
  (* Negation - A. *)

PROCEDURE Mul(READONLY A, B: Matrix): Matrix;
  (* Matrix product A*B *)

PROCEDURE Map(READONLY p: R4.T; READONLY A: Matrix): R4.T;
  (* Computes p (as a row vector) times A *)

PROCEDURE Row(READONLY A: Matrix; i: Axis): R4.T;
  (* Extracts row i of A as a vector. *)

PROCEDURE Col(READONLY A: Matrix; j: Axis): R4.T;
  (* Extracts column j of A as a vector. *)

PROCEDURE Diagonal(READONLY A: Matrix): R4.T;
  (* Extracts the diagonal of A as a vector. *)

PROCEDURE Transpose(READONLY A: Matrix): Matrix;
  (* Transpose of matrix A *)

PROCEDURE TrMap(READONLY A: Matrix; READONLY p: R4.T): R4.T;
  (* Computes A times p (viewed as a column vector) *)

PROCEDURE Inv(READONLY A: Matrix): Matrix;
  (* Inverse of matrix or map. *)

PROCEDURE Det(READONLY A: Matrix): REAL;
  (* Determinant *)

END R4x4.