The 3d-matrices Reference Manual

This is the 3d-matrices Reference Manual, version 1.0.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 14:28:54 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 3d-matrices

A utility library implementing 2x2, 3x3, 4x4, and NxN matrix functionality.

Maintainer

Yukari Hafner <>

Author

Yukari Hafner <>

Home Page

https://Shinmera.github.io/3d-matrices/

Source Control

(GIT https://github.com/Shinmera/3d-matrices.git)

Bug Tracker

https://github.com/Shinmera/3d-matrices/issues

License

zlib

Version

1.0.0

Dependencies
  • documentation-utils (system).
  • 3d-vectors (system).
Source

3d-matrices.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


3.1 Lisp


3.1.1 3d-matrices/3d-matrices.asd

Source

3d-matrices.asd.

Parent Component

3d-matrices (system).

ASDF Systems

3d-matrices.


3.1.2 3d-matrices/package.lisp

Source

3d-matrices.asd.

Parent Component

3d-matrices (system).

Packages

3d-matrices.


3.1.3 3d-matrices/toolkit.lisp

Dependency

package.lisp (file).

Source

3d-matrices.asd.

Parent Component

3d-matrices (system).

Internals

3.1.4 3d-matrices/struct.lisp

Dependency

toolkit.lisp (file).

Source

3d-matrices.asd.

Parent Component

3d-matrices (system).

Public Interface
Internals

3.1.5 3d-matrices/iterate.lisp

Dependency

struct.lisp (file).

Source

3d-matrices.asd.

Parent Component

3d-matrices (system).

Internals

3.1.6 3d-matrices/ops.lisp

Dependency

iterate.lisp (file).

Source

3d-matrices.asd.

Parent Component

3d-matrices (system).

Public Interface
Internals

3.1.7 3d-matrices/documentation.lisp

Dependency

ops.lisp (file).

Source

3d-matrices.asd.

Parent Component

3d-matrices (system).


4 Packages

Packages are listed by definition order.


4.1 3d-matrices

Source

package.lisp.

Nickname

org.shirakumo.flare.matrix

Use List
  • 3d-vectors.
  • common-lisp.
Public Interface
Internals

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


5.1 Public Interface


5.1.1 Macros

Macro: msetf (mat &rest els)
Package

3d-matrices.

Source

ops.lisp.

Macro: with-fast-matcase ((accessor mat) &body body)

Does an etypecase on MAT and an appropriate WITH-FAST-MATREF on each case.

The body should be an expression of (MAT-TYPE form*). For each
matrix type /except/ for MATN, the forms will be wrapped in an appropriate WITH-FAST-MATREF. This is not done for MATN, as often times a different approach to manipulating the matrix than by
direct reference is preferable for that case.

See WITH-FAST-MATREF

Package

3d-matrices.

Source

ops.lisp.

Macro: with-fast-matref ((accessor mat width) &body body)

Allows efficient referencing to matrix elements.

ACCESSOR designates the name of the local macro that will allow you to both read and set the matrix element at the given position It will take either one or two arguments. If two, they are row and column of the cell to dereference, and if one, it is the row-major index of the element to dereference.

You must also designate the proper number of columns stored in the matrix. This is done because often times when you will want to use this macro, you’ll already know the number of columns anyway. Retrieving it again would be wasteful.

You should use this whenever you need to reference elements in a loop or need to do more than one reference overall.

Package

3d-matrices.

Source

ops.lisp.

Macro: with-fast-matrefs (bindings &body body)

Allows efficient referencing of multiple matrices.

Each binding must be of the form that WITH-FAST-MATREF expects.

See WITH-FAST-MATREF

Package

3d-matrices.

Source

ops.lisp.


5.1.2 Compiler macros

Compiler Macro: m* (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: m+ (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: m- (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: m/ (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: m/= (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: m< (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: m<= (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: m= (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: m> (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: m>= (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: mat (&rest vals)
Package

3d-matrices.

Source

struct.lisp.

Compiler Macro: mat2 (&optional elements)
Package

3d-matrices.

Source

struct.lisp.

Compiler Macro: mat3 (&optional elements)
Package

3d-matrices.

Source

struct.lisp.

Compiler Macro: mat4 (&optional elements)
Package

3d-matrices.

Source

struct.lisp.

Compiler Macro: matf (mat &rest vals)
Package

3d-matrices.

Source

struct.lisp.

Compiler Macro: matn (r c &optional elements)
Package

3d-matrices.

Source

struct.lisp.

Compiler Macro: m~= (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: n*m (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: nm* (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: nm+ (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: nm- (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.

Compiler Macro: nm/ (val &rest vals)
Package

3d-matrices.

Source

ops.lisp.


5.1.3 Setf expanders

Setf Expander: (setf mcref) (mat y x)
Package

3d-matrices.

Source

struct.lisp.

Reader

mcref (function).

Setf Expander: (setf mcref2) (mat y x)
Package

3d-matrices.

Source

struct.lisp.

Reader

mcref2 (function).

Setf Expander: (setf mcref3) (mat y x)
Package

3d-matrices.

Source

struct.lisp.

Reader

mcref3 (function).

Setf Expander: (setf mcref4) (mat y x)
Package

3d-matrices.

Source

struct.lisp.

Reader

mcref4 (function).

Setf Expander: (setf mcrefn) (mat y x)
Package

3d-matrices.

Source

struct.lisp.

Reader

mcrefn (function).

Setf Expander: (setf miref) (mat i)
Package

3d-matrices.

Source

struct.lisp.

Reader

miref (function).

Setf Expander: (setf miref2) (mat i)
Package

3d-matrices.

Source

struct.lisp.

Reader

miref2 (function).

Setf Expander: (setf miref3) (mat i)
Package

3d-matrices.

Source

struct.lisp.

Reader

miref3 (function).

Setf Expander: (setf miref4) (mat i)
Package

3d-matrices.

Source

struct.lisp.

Reader

miref4 (function).

Setf Expander: (setf mirefn) (mat i)
Package

3d-matrices.

Source

struct.lisp.

Reader

mirefn (function).


5.1.4 Ordinary functions

Function: m* (val &rest vals)

Computes a matrix multiplication.

If the other operand is a real, the matrix is multiplied with the real element-wise. If the other operand is a matrix, they are multiplied as per matrix multiplication. Note that the returned matrix may have different size than the input matrices as a result of this. The two matrices must agree on the size as per matrix multiplication.

A special provision is made to allow for MAT4*VEC3, which acts as MAT4*(VEC4 X Y Z 1) and discarding the W component.

Package

3d-matrices.

Source

ops.lisp.

Function: m+ (val &rest vals)

Computes the element-wise addition of the matrices or reals. Returns a fresh matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: m- (val &rest vals)

Computes the element-wise subtraction of the matrices or reals. Returns a fresh matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: m/ (val &rest vals)

Computes an element-wise division of the matrix from a real. Returns a fresh matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: m/= (val &rest vals)

Compares matrices against each other or a real, returning T if they are element-wise equal by /=.

Package

3d-matrices.

Source

ops.lisp.

Function: m1norm (m)

Computes the 1 norm of the matrix, namely the maximum of the sums of the columns.

Package

3d-matrices.

Source

ops.lisp.

Function: m2norm (m)

Computes the 2 norm of the matrix, namely the square root of the sum of all squared elements.

Package

3d-matrices.

Source

ops.lisp.

Function: m< (val &rest vals)

Compares matrices against each other or a real, returning T if they are element-wise ordered by <.

Package

3d-matrices.

Source

ops.lisp.

Function: m<= (val &rest vals)

Compares matrices against each other or a real, returning T if they are element-wise ordered by <=.

Package

3d-matrices.

Source

ops.lisp.

Function: m= (val &rest vals)

Compares matrices against each other or a real, returning T if they are element-wise equal by =.

Package

3d-matrices.

Source

ops.lisp.

Function: m> (val &rest vals)

Compares matrices against each other or a real, returning T if they are element-wise ordered by >.

Package

3d-matrices.

Source

ops.lisp.

Function: m>= (val &rest vals)

Compares matrices against each other or a real, returning T if they are element-wise ordered by >=.

Package

3d-matrices.

Source

ops.lisp.

Function: madj (m)

Computes the adjugate of the matrix.

For MAT2 MAT3 MAT4, inlined variants exist. For MATN, an algorithm based on the cofactors is used.

Package

3d-matrices.

Source

ops.lisp.

Function: mapply (mat op)

Applies the function to each element of the matrix and maps the result of it to a new matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: mapplyf (mat op)

Applies the function to each element of the matrix and maps the result of it back into the matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: marr (mat)

Returns the backing array used by the matrix.

This should be a SIMPLE-VECTOR with the elements of type FLOAT-TYPE.

See MARR2
See MARR3
See MARR4
See MARRN

Package

3d-matrices.

Source

struct.lisp.

Reader: marr2 (instance)

Direct accessor to the backing array of the MAT2.

Package

3d-matrices.

Source

struct.lisp.

Target Slot

marr2.

Writer: (setf marr2) (instance)
Package

3d-matrices.

Source

struct.lisp.

Target Slot

marr2.

Reader: marr3 (instance)

Direct accessor to the backing array of the MAT3o.

Package

3d-matrices.

Source

struct.lisp.

Target Slot

marr3.

Writer: (setf marr3) (instance)
Package

3d-matrices.

Source

struct.lisp.

Target Slot

marr3.

Reader: marr4 (instance)

Direct accessor to the backing array of the MAT4.

Package

3d-matrices.

Source

struct.lisp.

Target Slot

marr4.

Writer: (setf marr4) (instance)
Package

3d-matrices.

Source

struct.lisp.

Target Slot

marr4.

Reader: marrn (instance)

Direct accessor to the backing array of the MATN.

Package

3d-matrices.

Source

struct.lisp.

Target Slot

marrn.

Writer: (setf marrn) (instance)
Package

3d-matrices.

Source

struct.lisp.

Target Slot

marrn.

Function: mat (&rest vals)

Constructs a fitting matrix for the number of elements given.

This only works for square numbers of elements, as otherwise it is not possible to guess what dimensions the matrix should have. In the case of a non-square number, an error is signalled.

See MAT2
See MAT3
See MAT4
See MATN

Package

3d-matrices.

Source

struct.lisp.

Function: mat-p (mat)

Returns T if the given object is of type MAT.

See MAT2-P
See MAT3-P
See MAT4-P
See MATN-P

Package

3d-matrices.

Source

struct.lisp.

Function: mat2 (&optional elements)

Constructs a MAT2 from the given elements.

ELEMENTS can be
NULL — The matrix is initialised with zeroes. REAL — The matrix is initialised with this number. SEQUENCE — The sequence is mapped into the matrix and the rest are initialised to 0.

Package

3d-matrices.

Source

struct.lisp.

Function: mat2-p (object)

Returns T if the given object is of type MAT2.

Package

3d-matrices.

Source

struct.lisp.

Function: mat3 (&optional elements)

Constructs a MAT3 from the given elements.

ELEMENTS can be
NULL — The matrix is initialised with zeroes. REAL — The matrix is initialised with this number. SEQUENCE — The sequence is mapped into the matrix and the rest are initialised to 0.

Package

3d-matrices.

Source

struct.lisp.

Function: mat3-p (object)

Returns T if the given object is of type MAT3.

Package

3d-matrices.

Source

struct.lisp.

Function: mat4 (&optional elements)

Constructs a MAT4 from the given elements.

ELEMENTS can be
NULL — The matrix is initialised with zeroes. REAL — The matrix is initialised with this number. SEQUENCE — The sequence is mapped into the matrix and the rest are initialised to 0.

Package

3d-matrices.

Source

struct.lisp.

Function: mat4-p (object)

Returns T if the given object is of type MAT4.

Package

3d-matrices.

Source

struct.lisp.

Function: matf (mat &rest vals)

Maps the VALs into the matrix.

The values will be mapped in row-major order.

Package

3d-matrices.

Source

struct.lisp.

Function: matn (r c &optional elements)

Constructs a MATN of the requested size from the given elements.

ELEMENTS can be
NULL — The matrix is initialised with zeroes.
REAL — The matrix is initialised with this number. SEQUENCE — The sequence is mapped into the matrix
and the rest are initialised to 0.

Note that if R and C are both...
2 - A MAT2 is constructed
3 - A MAT3 is constructed
4 - A MAT4 is constructed
instead of a MATN.

Package

3d-matrices.

Source

struct.lisp.

Function: matn-p (object)

Returns T if the given object is of type MATN.

Package

3d-matrices.

Source

struct.lisp.

Function: mblock (m y1 x1 y2 x2)

Returns the designated sub-matrix as a new matrix. Y1, X1 are the upper left corner, inclusive Y2, X2 are the lower right corner, exclusive

Package

3d-matrices.

Source

ops.lisp.

Function: mbottom (m n)

Returns the lowermost N rows as a new matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: mcof (m)

Computes the cofactor matrix.

See MCOFACTOR

Package

3d-matrices.

Source

ops.lisp.

Function: mcofactor (m y x)

Computes the cofactor at the specified index of the matrix.

This is just the element at the position multiplied by the minor.

See MMINOR

Package

3d-matrices.

Source

ops.lisp.

Function: mcol (mat n)

Accesses the requested column as a vector of the appropriate size.

This only works for MAT2, MAT3, MAT4.

Package

3d-matrices.

Source

ops.lisp.

Function: (setf mcol) (mat n)
Package

3d-matrices.

Source

ops.lisp.

Function: mcols (mat)

Returns the number of columns the matrix stores.

Package

3d-matrices.

Source

struct.lisp.

Function: mcopy (m)

Creates a full copy of the matrix.

See MCOPY2
See MCOPY3
See MCOPY4
See MCOPYN

Package

3d-matrices.

Source

struct.lisp.

Function: mcopy2 (m2)

Creates a full copy of the MAT2.

Package

3d-matrices.

Source

struct.lisp.

Function: mcopy3 (m3)

Creates a full copy of the MAT3.

Package

3d-matrices.

Source

struct.lisp.

Function: mcopy4 (m4)

Creates a full copy of the MAT4.

Package

3d-matrices.

Source

struct.lisp.

Function: mcopyn (mn)

Creates a full copy of the MATN.

Package

3d-matrices.

Source

struct.lisp.

Function: mcref (mat y x)

Returns the element at the given cell in the matrix.

See MCREF2
See MCREF3
See MCREF4
See MCREFN

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf mcref).

Function: mcref2 (mat y x)

Returns the element at the given cell in the MAT2.

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf mcref2).

Function: mcref3 (mat y x)

Returns the element at the given cell in the MAT3.

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf mcref3).

Function: mcref4 (mat y x)

Returns the element at the given cell in the MAT4.

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf mcref4).

Function: mcrefn (mat y x)

Returns the element at the given cell in the MATN.

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf mcrefn).

Function: mdet (m)

Computes the determinant of the matrix.

For MAT2 MAT3 MAT4, inlined variants exist. For MATN, an algorithm based on LU factorisation is used.

Package

3d-matrices.

Source

ops.lisp.

Function: mdiag (m)

Returns the diagonal values of the matrix as a list.

Package

3d-matrices.

Source

ops.lisp.

Function: meigen (m &optional iterations)

Computes an approximation of the eigenvalues of the matrix.

An approach based on QR factorisation is used. The number of iterations dictates how many times the factorisation is repeated to make the result more accurate. Usually something around 50 iterations should give somewhat accurate results, but due to floating point limitations that may be off more significantly.

Returns the eigenvalues as a list.

Package

3d-matrices.

Source

ops.lisp.

Function: meye (n)

Constructs a square identity matrix of the requested size.

Package

3d-matrices.

Source

ops.lisp.

Function: mfrustum (left right bottom top near far)

Returns a 3D frustum projection view matrix.

See MPERSPECTIVE

Package

3d-matrices.

Source

ops.lisp.

Function: minorm (m)

Computes the infinity norm of the matrix, namely the maximum of the sums of the rows.

Package

3d-matrices.

Source

ops.lisp.

Function: minv (m)

Computes the inverses of the matrix.

This is only possible if the determinant is non-zero.

For MAT2 MAT3 MAT4, inlined variants exist. For MATN, an algorithm based on the adjugate is used.

See MINV-AFFINE

Package

3d-matrices.

Source

ops.lisp.

Function: minv-affine (m &optional out)

Computes the inverses of the affine transformation matrix.

If your matrix is only composed of rotation and translation, this will be much faster and more numerically stable than minv.

See MINV

Package

3d-matrices.

Source

ops.lisp.

Function: miref (mat i)

Returns the element at the given index in the matrix.

Elements are stored in row-major format.

See MIREF2
See MIREF3
See MIREF4
See MIREFN

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf miref).

Function: miref2 (mat i)

Returns the element at the given index in the MAT2.

Elements are stored in row-major format.

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf miref2).

Function: miref3 (mat i)

Returns the element at the given index in the MAT3.

Elements are stored in row-major format.

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf miref3).

Function: miref4 (mat i)

Returns the element at the given index in the MAT4.

Elements are stored in row-major format.

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf miref4).

Function: mirefn (mat i)

Returns the element at the given index in the MATN.

Elements are stored in row-major format.

Package

3d-matrices.

Source

struct.lisp.

Setf expander for this function

(setf mirefn).

Function: mleft (m n)

Returns the leftmost N columns as a new matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: mlookat (eye target up)

Returns a view translation matrix that should "look at" TARGET from EYE where UP is the up vector.

Package

3d-matrices.

Source

ops.lisp.

Function: mlu (m &optional pivot)

Computes an LU factorisation of the matrix.

An approach based on Crout is used with on-the-fly pivotisation if requested.

Returns the combined LU matrix, the permutation matrix, and the number of permutations that were done.

Package

3d-matrices.

Source

ops.lisp.

Function: mminor (m y x)

Computes the minor at the specified index of the matrix.

This basically calculates the determinant of the matrix with the row and column of the specified index excluded.

Package

3d-matrices.

Source

ops.lisp.

Function: mortho (left right bottom top near far)

Returns a 3D orthographic projection view matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: mperspective (fovy aspect near far)

Returns a 3D perspective projection view matrix.

FOVY – The field of view (how "zoomy" it is) ASPECT – The aspect ratio of the screen NEAR / FAR – The Z near and far clipping planes

See MFRUSTUM

Package

3d-matrices.

Source

ops.lisp.

Function: mpivot (m)

Attempts to do a partial pivotisation.

Returns the pivotised matrix, the permutation matrix, and the number of permutations that were done.

Package

3d-matrices.

Source

ops.lisp.

Function: mqr (mat)

Computes the QR factorisation of the matrix.

An approach based on givens rotations is used.

Returns the Q and R matrices, which are fresh.

Package

3d-matrices.

Source

ops.lisp.

Function: mrand (r c &key min max)

Constructs a matrix of the requested size where each element is randomized.

MIN and MAX return the inclusive bounds of the numbers in the matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: mright (m n)

Returns the rightmost N columns as a new matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: mrotation (v angle)

Returns a 3D rotation matrix for the given vector as a MAT4.

Package

3d-matrices.

Source

ops.lisp.

Function: mrow (mat n)

Accesses the requested row as a vector of the appropriate size.

This only works for MAT2, MAT3, MAT4.

Package

3d-matrices.

Source

ops.lisp.

Function: (setf mrow) (mat n)
Package

3d-matrices.

Source

ops.lisp.

Function: mrows (mat)

Returns the number of rows the matrix stores.

Package

3d-matrices.

Source

struct.lisp.

Function: mscaling (v)

Returns a 3D scaling matrix for the given vector as a MAT4.

Package

3d-matrices.

Source

ops.lisp.

Function: mtop (m n)

Returns the topmost N rows as a new matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: mtrace (m)

Computes the trace of the matrix.

For MAT2 MAT3 MAT4, inlined variants exist. For MATN, a generic sum is used.

Package

3d-matrices.

Source

ops.lisp.

Function: mtranslation (v)

Returns a 3D translation matrix for the given vector as a MAT4.

Package

3d-matrices.

Source

ops.lisp.

Function: mtranspose (m)

Computes the transpose of the matrix.

For MAT2 MAT3 MAT4, inlined variants exist. For MATN, a generic swap is used.

Package

3d-matrices.

Source

ops.lisp.

Function: muniform (r c element)

Constructs a matrix of the requested size where each element is initialised to the requested element.

Package

3d-matrices.

Source

ops.lisp.

Function: m~= (val &rest vals)

Compares matrices against each other or a real, returning T if they are element-wise equal by ~=.

See ~=

Package

3d-matrices.

Source

ops.lisp.

Function: n*m (val &rest vals)

Computes a modifying matrix multiplication, but modifying the right-hand side.

See NM*

Package

3d-matrices.

Source

ops.lisp.

Function: nm* (val &rest vals)

Computes a modifying matrix multiplication.

If the other operand is a real, the matrix is multiplied with the real element-wise. If the other operand is a matrix, they are multiplied as per matrix multiplication. Note that this only works for square matrix against square matrix, as otherwise a size change would occur, which is not possible to do in a modifying variant. The two matrices must agree on the size as per matrix multiplication.
If the other operand is a vector, the vector is modified.

A special provision is made to allow for MAT4*VEC3, which acts as MAT4*(VEC4 X Y Z 1) and discarding the W component.

See N*M

Package

3d-matrices.

Source

ops.lisp.

Function: nm+ (val &rest vals)

Computes the element-wise addition of the matrices or reals. Returns the first matrix, modified.

Package

3d-matrices.

Source

ops.lisp.

Function: nm- (val &rest vals)

Computes the element-wise subtraction of the matrices or reals. Returns the first matrix, modified.

Package

3d-matrices.

Source

ops.lisp.

Function: nm/ (val &rest vals)

Computes an element-wise division of the matrix from a real. Returns the modified, first matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: nmlookat (m eye target up)

Modifies the matrix to look at TARGET from the EYE.

See MLOOKAT.

Package

3d-matrices.

Source

ops.lisp.

Function: nmrotate (m v angle)

Rotates the given matrix around the vector by angle. Returns the modified matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: nmscale (m v)

Scales the given matrix by the vector. Returns the modified matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: nmswap-col (m k l)

Modifies the matrix by swapping the Kth column with the Lth column.

Package

3d-matrices.

Source

ops.lisp.

Function: nmswap-row (m k l)

Modifies the matrix by swapping the Kth row with the Lth row.

Package

3d-matrices.

Source

ops.lisp.

Function: nmtranslate (m v)

Translates the given matrix by the vector. Returns the modified matrix.

Package

3d-matrices.

Source

ops.lisp.

Function: nmtranspose (m)
Package

3d-matrices.

Source

ops.lisp.

Function: write-matrix (m stream &key format)

Writes the matrix in a certain format, by default a human-readable one.

FORMAT can be one of
:NICE - Prints it in a nice representation intended for humans. :WOLFRAM - Prints it in the format for Wolfram Alpha, namely {{a,b..},..} :ARRAY - Prints it as a common lisp 2D array.

If the STREAM is NIL, a string of the output is returned. Otherwise the matrix itself is returned.

Package

3d-matrices.

Source

struct.lisp.


5.1.5 Standalone methods

Method: describe-object ((a mat3) stream)
Source

struct.lisp.

Method: describe-object ((a matn) stream)
Source

struct.lisp.

Method: describe-object ((a mat4) stream)
Source

struct.lisp.

Method: describe-object ((a mat2) stream)
Source

struct.lisp.

Method: make-load-form ((m mat3) &optional env)
Source

struct.lisp.

Method: make-load-form ((m matn) &optional env)
Source

struct.lisp.

Method: make-load-form ((m mat4) &optional env)
Source

struct.lisp.

Method: make-load-form ((m mat2) &optional env)
Source

struct.lisp.

Method: print-object ((m mat3) stream)
Source

struct.lisp.

Method: print-object ((m matn) stream)
Source

struct.lisp.

Method: print-object ((m mat4) stream)
Source

struct.lisp.

Method: print-object ((m mat2) stream)
Source

struct.lisp.


5.1.6 Structures

Structure: mat2

The 2x2 matrix type.

Package

3d-matrices.

Source

struct.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: marr2
Type

(simple-array 3d-vectors::float-type (4))

Readers

marr2.

Writers

(setf marr2).

Structure: mat3

The 3x3 matrix type.

Package

3d-matrices.

Source

struct.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: marr3
Type

(simple-array 3d-vectors::float-type (9))

Readers

marr3.

Writers

(setf marr3).

Structure: mat4

The 4x4 matrix type.

Package

3d-matrices.

Source

struct.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: marr4
Type

(simple-array 3d-vectors::float-type (16))

Readers

marr4.

Writers

(setf marr4).

Structure: matn

The NxM matrix type.

Package

3d-matrices.

Source

struct.lisp.

Direct superclasses

structure-object.

Direct methods
Direct slots
Slot: %rows
Type

3d-matrices::mat-dim

Readers

%rows.

Writers

(setf %rows).

Slot: %cols
Type

3d-matrices::mat-dim

Readers

%cols.

Writers

(setf %cols).

Slot: marrn
Type

(simple-array 3d-vectors::float-type)

Readers

marrn.

Writers

(setf marrn).


5.1.7 Types

Type: mat ()

Supertype for all matrix types.

See MAT2
See MAT3
See MAT4
See MATN

Package

3d-matrices.

Source

struct.lisp.


5.2 Internals


5.2.1 Special variables

Special Variable: *eps*

The allowed divergence for ~= and m~= to succeed.

Package

3d-matrices.

Source

toolkit.lisp.

Special Variable: *matrix-limit*

The maximum extent of a matrix dimension.

This is set to either the square root of ARRAY-DIMENSION-LIMIT or the square root of MOST-POSITIVE-FIXNUM, whichever is smaller.

Package

3d-matrices.

Source

toolkit.lisp.


5.2.2 Macros

Macro: %2mat*-expansion (a b)

Inner expansion to compute a proper matrix multiplication, which is non element-wise.

Package

3d-matrices.

Source

ops.lisp.

Macro: %2mat-op (a b c m2 m3 m4 mnmn mnr)

Macro for the handling of an operation for two matrices.

A B — Variables for the two matrices.
C — The function that combines an element from each matrix. M2 M3 M4 — The aggregator for the respective matrix type that combines the result of the combinator for each element of the matrix into one.
MNMN — The form to use to calculate a MATN MATN op.
MNR — The form to use to calculate a MATN REAL op.

Package

3d-matrices.

Source

ops.lisp.

Macro: %2mat/-expansion (a b)

Inner expansion to compute an element-wise matrix division.

Package

3d-matrices.

Source

ops.lisp.

Macro: %2n*mat-expansion (a b)

Inner expansion to compute a proper, modifying matrix multiplication on the right side.

Package

3d-matrices.

Source

ops.lisp.

Macro: %2nmat*-expansion (a b &optional u)

Inner expansion to compute a proper, modifying matrix multiplication, which is non element-wise.

Package

3d-matrices.

Source

ops.lisp.

Macro: %2nmat/-expansion (a b &optional mc mn)

Inner expansion to compute an element-wise, modifying matrix division.

Package

3d-matrices.

Source

ops.lisp.

Macro: %mka (size &key element contents coercion)

Proper array construction helper.

Emits a form that returns a useable array for a matrix.

Package

3d-matrices.

Source

struct.lisp.

Macro: %proper-array (size elements)

Proper array constructor.

ELEMENTS can be
NULL — The initial element is set to 0.
REAL — The initial element is set to this. SEQUENCE — The array is mapped into with this sequence and the initial element is set to 0.

Package

3d-matrices.

Source

struct.lisp.

Macro: define-describe-matrix (type)

Shorthand macro to define a describe-object method.

Package

3d-matrices.

Source

struct.lisp.

Macro: define-mat-accessor (mtype miref mcref marr size)
Package

3d-matrices.

Source

struct.lisp.

Macro: define-matcomp (name op &optional comb)

Defines a matrix comparison function of NAME, using OP as the element-wise comparator.

COMB defines how the elements are combined together, usually by AND.

Package

3d-matrices.

Source

ops.lisp.

Macro: define-matop (name nname op &optional body)

Defines a non-mutating matrix operation of NAME that delegates to NNAME for secondary calculations, and uses OP to combine elements.

If BODY is given, it is used for the 2MAT-case in place of a standard %2MAT-OP based approach.
Body will be called with two arguments, the A and B matrix of the combination.

A MATOP like this always returns a fresh matrix.

Package

3d-matrices.

Source

ops.lisp.

Macro: define-nmatop (name op &optional body)

Defines a mutating matrix operation of NAME that uses OP to combine elements.

If BODY is given, it is used for the 2MAT-case in place of standard %2MAT-OP based approach. Body will be called with two arguments, the A and B matrix of the combination.

A MATOP like this always returns the modified, first matrix.

Package

3d-matrices.

Source

ops.lisp.

Macro: do-mat-diag ((i el mat &optional result) &body body)

Iterates over the diagonal of the matrix.

Binds the diagonal index to the variable of I and the element at that place to the variable of EL.

Package

3d-matrices.

Source

iterate.lisp.

Macro: do-mat-index ((i el mat &optional result) &body body)

Iterates over the indexes of the matrix.

Binds the row-major index to the variable of I and the element at that place to the variable of EL.

Package

3d-matrices.

Source

iterate.lisp.

Macro: with-floats (bindings &body body)

Like LET, except ensuring that each value is of the appropriate float type.

Package

3d-matrices.

Source

toolkit.lisp.


5.2.3 Ordinary functions

Reader: %cols (instance)

Direct accessor to the number of columns in the MATN.

Package

3d-matrices.

Source

struct.lisp.

Target Slot

%cols.

Writer: (setf %cols) (instance)
Package

3d-matrices.

Source

struct.lisp.

Target Slot

%cols.

Function: %mat2 (marr2)

Direct constructor for the 2x2 matrix struct.

Package

3d-matrices.

Source

struct.lisp.

Function: %mat3 (marr3)

Direct constructor for the 3x3 matrix struct.

Package

3d-matrices.

Source

struct.lisp.

Function: %mat4 (marr4)

Direct constructor for the 4x4 matrix struct.

Package

3d-matrices.

Source

struct.lisp.

Function: %matn (%rows %cols marrn)

Direct constructor for the NxM matrix struct.

Package

3d-matrices.

Source

struct.lisp.

Function: %mrotation (arr v angle)
Package

3d-matrices.

Source

ops.lisp.

Function: %proper-array-form (size elements)

Returns a form that should construct a proper array for the given compile-time args.

Package

3d-matrices.

Source

struct.lisp.

Reader: %rows (instance)

Direct accessor to the number of rows in the MATN.

Package

3d-matrices.

Source

struct.lisp.

Target Slot

%rows.

Writer: (setf %rows) (instance)
Package

3d-matrices.

Source

struct.lisp.

Target Slot

%rows.

Function: 2mat-m* (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m+ (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m- (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m/ (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m/= (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m< (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m<= (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m= (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m> (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m>= (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-m~= (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-n*m (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-nm* (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-nm+ (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-nm- (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: 2mat-nm/ (a b)
Package

3d-matrices.

Source

ops.lisp.

Function: ensure-function (functionish)

If the argument is a symbol, it resolves it to a function by FDEFINITION.

Otherwise it can only be a function in which case it is returned verbatim.

Package

3d-matrices.

Source

toolkit.lisp.

Function: intern* (&rest parts)
Package

3d-matrices.

Source

toolkit.lisp.

Function: map-mat-diag (function mat)

Maps the diagonal of the matrix to the function.

The function receives two arguments: the index in the diagonal, and the element at that position of the matrix.

Package

3d-matrices.

Source

iterate.lisp.

Function: map-mat-index (function mat)

Maps the matrix by index to the function.

The function receives two arguments: the row-major index in the matrix, and the element at that position of the matrix.

Package

3d-matrices.

Source

iterate.lisp.

Function: mswap-col (m k l)

Returns a copy of the matrix with the columns swapped.

Package

3d-matrices.

Source

ops.lisp.

Function: mswap-row (m k l)

Returns a copy of the matrix with the rows swapped.

Package

3d-matrices.

Source

ops.lisp.

Function: ~/= (a b)
Package

3d-matrices.

Source

toolkit.lisp.

Function: ~= (a b)

Does "approximate comparison" by testing whether the two numbers are within *EPS* from each other.

Package

3d-matrices.

Source

toolkit.lisp.


5.2.4 Types

Type: mat-dim ()

Concrete type for the allowed matrix dimension size.

Package

3d-matrices.

Source

toolkit.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (   2   ~  
C   D   E   F   I   M   N   P   S   W  
Index Entry  Section

%
%2mat*-expansion: Private macros
%2mat-op: Private macros
%2mat/-expansion: Private macros
%2n*mat-expansion: Private macros
%2nmat*-expansion: Private macros
%2nmat/-expansion: Private macros
%cols: Private ordinary functions
%mat2: Private ordinary functions
%mat3: Private ordinary functions
%mat4: Private ordinary functions
%matn: Private ordinary functions
%mka: Private macros
%mrotation: Private ordinary functions
%proper-array: Private macros
%proper-array-form: Private ordinary functions
%rows: Private ordinary functions

(
(setf %cols): Private ordinary functions
(setf %rows): Private ordinary functions
(setf marr2): Public ordinary functions
(setf marr3): Public ordinary functions
(setf marr4): Public ordinary functions
(setf marrn): Public ordinary functions
(setf mcol): Public ordinary functions
(setf mcref): Public setf expanders
(setf mcref2): Public setf expanders
(setf mcref3): Public setf expanders
(setf mcref4): Public setf expanders
(setf mcrefn): Public setf expanders
(setf miref): Public setf expanders
(setf miref2): Public setf expanders
(setf miref3): Public setf expanders
(setf miref4): Public setf expanders
(setf mirefn): Public setf expanders
(setf mrow): Public ordinary functions

2
2mat-m*: Private ordinary functions
2mat-m+: Private ordinary functions
2mat-m-: Private ordinary functions
2mat-m/: Private ordinary functions
2mat-m/=: Private ordinary functions
2mat-m<: Private ordinary functions
2mat-m<=: Private ordinary functions
2mat-m=: Private ordinary functions
2mat-m>: Private ordinary functions
2mat-m>=: Private ordinary functions
2mat-m~=: Private ordinary functions
2mat-n*m: Private ordinary functions
2mat-nm*: Private ordinary functions
2mat-nm+: Private ordinary functions
2mat-nm-: Private ordinary functions
2mat-nm/: Private ordinary functions

~
~/=: Private ordinary functions
~=: Private ordinary functions

C
Compiler Macro, m*: Public compiler macros
Compiler Macro, m+: Public compiler macros
Compiler Macro, m-: Public compiler macros
Compiler Macro, m/: Public compiler macros
Compiler Macro, m/=: Public compiler macros
Compiler Macro, m<: Public compiler macros
Compiler Macro, m<=: Public compiler macros
Compiler Macro, m=: Public compiler macros
Compiler Macro, m>: Public compiler macros
Compiler Macro, m>=: Public compiler macros
Compiler Macro, mat: Public compiler macros
Compiler Macro, mat2: Public compiler macros
Compiler Macro, mat3: Public compiler macros
Compiler Macro, mat4: Public compiler macros
Compiler Macro, matf: Public compiler macros
Compiler Macro, matn: Public compiler macros
Compiler Macro, m~=: Public compiler macros
Compiler Macro, n*m: Public compiler macros
Compiler Macro, nm*: Public compiler macros
Compiler Macro, nm+: Public compiler macros
Compiler Macro, nm-: Public compiler macros
Compiler Macro, nm/: Public compiler macros

D
define-describe-matrix: Private macros
define-mat-accessor: Private macros
define-matcomp: Private macros
define-matop: Private macros
define-nmatop: Private macros
describe-object: Public standalone methods
describe-object: Public standalone methods
describe-object: Public standalone methods
describe-object: Public standalone methods
do-mat-diag: Private macros
do-mat-index: Private macros

E
ensure-function: Private ordinary functions

F
Function, %cols: Private ordinary functions
Function, %mat2: Private ordinary functions
Function, %mat3: Private ordinary functions
Function, %mat4: Private ordinary functions
Function, %matn: Private ordinary functions
Function, %mrotation: Private ordinary functions
Function, %proper-array-form: Private ordinary functions
Function, %rows: Private ordinary functions
Function, (setf %cols): Private ordinary functions
Function, (setf %rows): Private ordinary functions
Function, (setf marr2): Public ordinary functions
Function, (setf marr3): Public ordinary functions
Function, (setf marr4): Public ordinary functions
Function, (setf marrn): Public ordinary functions
Function, (setf mcol): Public ordinary functions
Function, (setf mrow): Public ordinary functions
Function, 2mat-m*: Private ordinary functions
Function, 2mat-m+: Private ordinary functions
Function, 2mat-m-: Private ordinary functions
Function, 2mat-m/: Private ordinary functions
Function, 2mat-m/=: Private ordinary functions
Function, 2mat-m<: Private ordinary functions
Function, 2mat-m<=: Private ordinary functions
Function, 2mat-m=: Private ordinary functions
Function, 2mat-m>: Private ordinary functions
Function, 2mat-m>=: Private ordinary functions
Function, 2mat-m~=: Private ordinary functions
Function, 2mat-n*m: Private ordinary functions
Function, 2mat-nm*: Private ordinary functions
Function, 2mat-nm+: Private ordinary functions
Function, 2mat-nm-: Private ordinary functions
Function, 2mat-nm/: Private ordinary functions
Function, ensure-function: Private ordinary functions
Function, intern*: Private ordinary functions
Function, m*: Public ordinary functions
Function, m+: Public ordinary functions
Function, m-: Public ordinary functions
Function, m/: Public ordinary functions
Function, m/=: Public ordinary functions
Function, m1norm: Public ordinary functions
Function, m2norm: Public ordinary functions
Function, m<: Public ordinary functions
Function, m<=: Public ordinary functions
Function, m=: Public ordinary functions
Function, m>: Public ordinary functions
Function, m>=: Public ordinary functions
Function, madj: Public ordinary functions
Function, map-mat-diag: Private ordinary functions
Function, map-mat-index: Private ordinary functions
Function, mapply: Public ordinary functions
Function, mapplyf: Public ordinary functions
Function, marr: Public ordinary functions
Function, marr2: Public ordinary functions
Function, marr3: Public ordinary functions
Function, marr4: Public ordinary functions
Function, marrn: Public ordinary functions
Function, mat: Public ordinary functions
Function, mat-p: Public ordinary functions
Function, mat2: Public ordinary functions
Function, mat2-p: Public ordinary functions
Function, mat3: Public ordinary functions
Function, mat3-p: Public ordinary functions
Function, mat4: Public ordinary functions
Function, mat4-p: Public ordinary functions
Function, matf: Public ordinary functions
Function, matn: Public ordinary functions
Function, matn-p: Public ordinary functions
Function, mblock: Public ordinary functions
Function, mbottom: Public ordinary functions
Function, mcof: Public ordinary functions
Function, mcofactor: Public ordinary functions
Function, mcol: Public ordinary functions
Function, mcols: Public ordinary functions
Function, mcopy: Public ordinary functions
Function, mcopy2: Public ordinary functions
Function, mcopy3: Public ordinary functions
Function, mcopy4: Public ordinary functions
Function, mcopyn: Public ordinary functions
Function, mcref: Public ordinary functions
Function, mcref2: Public ordinary functions
Function, mcref3: Public ordinary functions
Function, mcref4: Public ordinary functions
Function, mcrefn: Public ordinary functions
Function, mdet: Public ordinary functions
Function, mdiag: Public ordinary functions
Function, meigen: Public ordinary functions
Function, meye: Public ordinary functions
Function, mfrustum: Public ordinary functions
Function, minorm: Public ordinary functions
Function, minv: Public ordinary functions
Function, minv-affine: Public ordinary functions
Function, miref: Public ordinary functions
Function, miref2: Public ordinary functions
Function, miref3: Public ordinary functions
Function, miref4: Public ordinary functions
Function, mirefn: Public ordinary functions
Function, mleft: Public ordinary functions
Function, mlookat: Public ordinary functions
Function, mlu: Public ordinary functions
Function, mminor: Public ordinary functions
Function, mortho: Public ordinary functions
Function, mperspective: Public ordinary functions
Function, mpivot: Public ordinary functions
Function, mqr: Public ordinary functions
Function, mrand: Public ordinary functions
Function, mright: Public ordinary functions
Function, mrotation: Public ordinary functions
Function, mrow: Public ordinary functions
Function, mrows: Public ordinary functions
Function, mscaling: Public ordinary functions
Function, mswap-col: Private ordinary functions
Function, mswap-row: Private ordinary functions
Function, mtop: Public ordinary functions
Function, mtrace: Public ordinary functions
Function, mtranslation: Public ordinary functions
Function, mtranspose: Public ordinary functions
Function, muniform: Public ordinary functions
Function, m~=: Public ordinary functions
Function, n*m: Public ordinary functions
Function, nm*: Public ordinary functions
Function, nm+: Public ordinary functions
Function, nm-: Public ordinary functions
Function, nm/: Public ordinary functions
Function, nmlookat: Public ordinary functions
Function, nmrotate: Public ordinary functions
Function, nmscale: Public ordinary functions
Function, nmswap-col: Public ordinary functions
Function, nmswap-row: Public ordinary functions
Function, nmtranslate: Public ordinary functions
Function, nmtranspose: Public ordinary functions
Function, write-matrix: Public ordinary functions
Function, ~/=: Private ordinary functions
Function, ~=: Private ordinary functions

I
intern*: Private ordinary functions

M
m*: Public compiler macros
m*: Public ordinary functions
m+: Public compiler macros
m+: Public ordinary functions
m-: Public compiler macros
m-: Public ordinary functions
m/: Public compiler macros
m/: Public ordinary functions
m/=: Public compiler macros
m/=: Public ordinary functions
m1norm: Public ordinary functions
m2norm: Public ordinary functions
m<: Public compiler macros
m<: Public ordinary functions
m<=: Public compiler macros
m<=: Public ordinary functions
m=: Public compiler macros
m=: Public ordinary functions
m>: Public compiler macros
m>: Public ordinary functions
m>=: Public compiler macros
m>=: Public ordinary functions
Macro, %2mat*-expansion: Private macros
Macro, %2mat-op: Private macros
Macro, %2mat/-expansion: Private macros
Macro, %2n*mat-expansion: Private macros
Macro, %2nmat*-expansion: Private macros
Macro, %2nmat/-expansion: Private macros
Macro, %mka: Private macros
Macro, %proper-array: Private macros
Macro, define-describe-matrix: Private macros
Macro, define-mat-accessor: Private macros
Macro, define-matcomp: Private macros
Macro, define-matop: Private macros
Macro, define-nmatop: Private macros
Macro, do-mat-diag: Private macros
Macro, do-mat-index: Private macros
Macro, msetf: Public macros
Macro, with-fast-matcase: Public macros
Macro, with-fast-matref: Public macros
Macro, with-fast-matrefs: Public macros
Macro, with-floats: Private macros
madj: Public ordinary functions
make-load-form: Public standalone methods
make-load-form: Public standalone methods
make-load-form: Public standalone methods
make-load-form: Public standalone methods
map-mat-diag: Private ordinary functions
map-mat-index: Private ordinary functions
mapply: Public ordinary functions
mapplyf: Public ordinary functions
marr: Public ordinary functions
marr2: Public ordinary functions
marr3: Public ordinary functions
marr4: Public ordinary functions
marrn: Public ordinary functions
mat: Public compiler macros
mat: Public ordinary functions
mat-p: Public ordinary functions
mat2: Public compiler macros
mat2: Public ordinary functions
mat2-p: Public ordinary functions
mat3: Public compiler macros
mat3: Public ordinary functions
mat3-p: Public ordinary functions
mat4: Public compiler macros
mat4: Public ordinary functions
mat4-p: Public ordinary functions
matf: Public compiler macros
matf: Public ordinary functions
matn: Public compiler macros
matn: Public ordinary functions
matn-p: Public ordinary functions
mblock: Public ordinary functions
mbottom: Public ordinary functions
mcof: Public ordinary functions
mcofactor: Public ordinary functions
mcol: Public ordinary functions
mcols: Public ordinary functions
mcopy: Public ordinary functions
mcopy2: Public ordinary functions
mcopy3: Public ordinary functions
mcopy4: Public ordinary functions
mcopyn: Public ordinary functions
mcref: Public ordinary functions
mcref2: Public ordinary functions
mcref3: Public ordinary functions
mcref4: Public ordinary functions
mcrefn: Public ordinary functions
mdet: Public ordinary functions
mdiag: Public ordinary functions
meigen: Public ordinary functions
Method, describe-object: Public standalone methods
Method, describe-object: Public standalone methods
Method, describe-object: Public standalone methods
Method, describe-object: Public standalone methods
Method, make-load-form: Public standalone methods
Method, make-load-form: Public standalone methods
Method, make-load-form: Public standalone methods
Method, make-load-form: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
meye: Public ordinary functions
mfrustum: Public ordinary functions
minorm: Public ordinary functions
minv: Public ordinary functions
minv-affine: Public ordinary functions
miref: Public ordinary functions
miref2: Public ordinary functions
miref3: Public ordinary functions
miref4: Public ordinary functions
mirefn: Public ordinary functions
mleft: Public ordinary functions
mlookat: Public ordinary functions
mlu: Public ordinary functions
mminor: Public ordinary functions
mortho: Public ordinary functions
mperspective: Public ordinary functions
mpivot: Public ordinary functions
mqr: Public ordinary functions
mrand: Public ordinary functions
mright: Public ordinary functions
mrotation: Public ordinary functions
mrow: Public ordinary functions
mrows: Public ordinary functions
mscaling: Public ordinary functions
msetf: Public macros
mswap-col: Private ordinary functions
mswap-row: Private ordinary functions
mtop: Public ordinary functions
mtrace: Public ordinary functions
mtranslation: Public ordinary functions
mtranspose: Public ordinary functions
muniform: Public ordinary functions
m~=: Public compiler macros
m~=: Public ordinary functions

N
n*m: Public compiler macros
n*m: Public ordinary functions
nm*: Public compiler macros
nm*: Public ordinary functions
nm+: Public compiler macros
nm+: Public ordinary functions
nm-: Public compiler macros
nm-: Public ordinary functions
nm/: Public compiler macros
nm/: Public ordinary functions
nmlookat: Public ordinary functions
nmrotate: Public ordinary functions
nmscale: Public ordinary functions
nmswap-col: Public ordinary functions
nmswap-row: Public ordinary functions
nmtranslate: Public ordinary functions
nmtranspose: Public ordinary functions

P
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods

S
Setf Expander, (setf mcref): Public setf expanders
Setf Expander, (setf mcref2): Public setf expanders
Setf Expander, (setf mcref3): Public setf expanders
Setf Expander, (setf mcref4): Public setf expanders
Setf Expander, (setf mcrefn): Public setf expanders
Setf Expander, (setf miref): Public setf expanders
Setf Expander, (setf miref2): Public setf expanders
Setf Expander, (setf miref3): Public setf expanders
Setf Expander, (setf miref4): Public setf expanders
Setf Expander, (setf mirefn): Public setf expanders

W
with-fast-matcase: Public macros
with-fast-matref: Public macros
with-fast-matrefs: Public macros
with-floats: Private macros
write-matrix: Public ordinary functions


A.4 Data types