The 3d-matrices Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The 3d-matrices Reference Manual

This is the 3d-matrices Reference Manual, version 1.0.0, generated automatically by Declt version 2.3 "Robert April" on Tue Feb 20 07:35:26 2018 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

About 3d-matrices

This is a library implementing common matrix operations, mainly intended as the counterpiece to 3d-vectors and thus being aimed at operations in 3D space. Still, it also implements other common matrix tasks such as LU and QR factorisation, determinant computation, and sub-matrix selection. 2x2, 3x3, and 4x4 matrices are specially treated and often have specifically optimised or inlined variants in the operations to ensure as high a speed as possible. NxM matrices are also available, but will always use a general algorithm in the operations.

This library by no means attempts, nor comes in any way close to replacing or imitating things such as BLAS and LIN/LAPACK. The main purpose is to have a library that allows convenient matrix operations in conjunction with the 3d-vectors library. It should be sufficiently fast and accurate for most purposes, but should not be used for serious matrix based calculations. Please use industry-standard packages for that.

How To

Load it through ASDF or Quicklisp and use the package.

(ql:quickload :3d-matrices)
(use-package :3d-matrices)

All the functions are prefixed with an m or with nm for destructive ops. This should ensure that there are no clashes in names. Now let's look at creating matrices.

(mat 1 2 3 4)
(mat2 1)
(mat2 '(1 2 3 4))
(mcopy (mat3))
(matn 2 3)
(meye 5)
(muniform 2 3 1)
(mrand 10 10)

In order to see the matrix in a more human-readable format, you can use describe or write-matrix directly:

(describe (meye 5))
(write-matrix (mat2) T)
(write-matrix (mat2) T :format :wolfram)
(write-matrix (mat2) T :format :array)

Matrices always use floats. Where sensible, operations will accept reals as well however. Either single-floats or double-floats are used, depending on the presence of the :3d-vectors-double-floats keyword in *features*. This feature is taken over from the 3d-vectors library to ensure that both of them always agree on the float type.

The type mat includes all subtypes mat2, mat3, mat4, and matn. Each of them have their own specific accessors that are suffixed with the dimension number. Usually you should be fine with using the generic variants, but if you already know the type you should probably fall back to using the specific one, or use with-fast-matref.

(miref (meye 2) 3)
(mcref (meye 2) 1 1)
(with-fast-matref (e (mat 2) 2)
  (e 1 1))

Matrices are basically a struct that contains a simple-vector of floats. This means that every single reference must also dereference the array first. This is why, if you have many repeated accesses to an array, you should use with-fast-matref or do the same manually by first retrieving the backing array with marr.

If you're coming to this library with the intention of using it to do 3D math, you'll most likely be mostly looking for how to create translation, rotation, and scaling matrices. Specific functions exist for this that take care of it for you. They all operate on mat4s and take a vec3 as argument.

(let ((mat (mat4 1)))
  (nmtranslate mat (3d-vectors:vec 1 2 3))
  (nmscale mat (3d-vectors:vec 1 2 3))
  (nmrotate mat 3d-vectors:+vx+ 90)
  (m* mat (vec 1 2 3)))

Aside from translations you'll probably also want to set up a projection and a camera. You can do this, too.

(mperspective 75 (/ w h) 0.001 10000)       ; Perspective projection
(mortho 0 w h 0 0.001 10000)                ; Orthographic projection
(nmlookat modelview camera-pos center +vy+) ; Look at the centre

Aside from the basic comparison operators m= m~= m/= m< m> m<= m>=, and arithmetic operators m+ m- m* m/ nm+ nm- nm* n*m nm/, 3d-matrices also includes LU decomposition mlu, determinant computation mdet, inversion minv, transposition mtranspose, trace calculation mtrace, minors mminor, cofactors mcof mcofactor, matrix adjugate madj, pivoting mpivot, norming m1norm minorm m2norm, QR decomposition mqr and eigenvalue calculation meigen. These should all work "as you expect" and I will thus refrain from showing them off in detail here. Refer to your standard linear algebra textbook to get an understanding of what they do if you don't know already.

Finally, There's also some basic operators to do sectioning or restructuring of a matrix.

(mcol (mat 1 2 3 4) 0)
(mrow (mat 1 2 3 4) 0)
(mdiag (mat 1 0 0 0 2 0 0 0 3))
(mtop (mat 1 2 3 4 5 6 7 8 9) 2)
(nmswap-row (mat 1 2 3 4) 0 1)

And that's pretty much all she wrote. Note that some operations will only work on square or non-singular matrices, and all operations that take multiple operands require them to be of a compatible type. For example, you can only multiply matrices that are of agreeable rows and columns or multiply with a vector that is of the appropriate size.

Also See


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

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


Previous: , Up: Systems   [Contents][Index]

2.1 3d-matrices

Maintainer

Nicolas Hafner <shinmera@tymoon.eu>

Author

Nicolas Hafner <shinmera@tymoon.eu>

Home Page

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

License

Artistic

Description

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

Version

1.0.0

Dependencies
Source

3d-matrices.asd (file)

Components

Next: , Previous: , Up: Top   [Contents][Index]

3 Files

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


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 3d-matrices.asd

Location

3d-matrices.asd

Systems

3d-matrices (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 3d-matrices/package.lisp

Parent

3d-matrices (system)

Location

package.lisp

Packages

3d-matrices


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.3 3d-matrices/toolkit.lisp

Dependency

package.lisp (file)

Parent

3d-matrices (system)

Location

toolkit.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.4 3d-matrices/struct.lisp

Dependency

toolkit.lisp (file)

Parent

3d-matrices (system)

Location

struct.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.5 3d-matrices/iterate.lisp

Dependency

struct.lisp (file)

Parent

3d-matrices (system)

Location

iterate.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.6 3d-matrices/ops.lisp

Dependency

iterate.lisp (file)

Parent

3d-matrices (system)

Location

ops.lisp

Exported Definitions
Internal Definitions

Previous: , Up: Lisp files   [Contents][Index]

3.1.7 3d-matrices/documentation.lisp

Dependency

ops.lisp (file)

Parent

3d-matrices (system)

Location

documentation.lisp


Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

4.1 3d-matrices

Source

package.lisp (file)

Nickname

org.shirakumo.flare.matrix

Use List
Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

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


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Macros

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 (file)

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 (file)

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 (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Compiler macros

Compiler Macro: m* VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: m+ VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: m- VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: m/ VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: m/= VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: m< VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: m<= VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: m= VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: m> VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: m>= VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: mat &rest VALS
Package

3d-matrices

Source

struct.lisp (file)

Compiler Macro: mat2 &optional ELEMENTS
Package

3d-matrices

Source

struct.lisp (file)

Compiler Macro: mat3 &optional ELEMENTS
Package

3d-matrices

Source

struct.lisp (file)

Compiler Macro: mat4 &optional ELEMENTS
Package

3d-matrices

Source

struct.lisp (file)

Compiler Macro: matf MAT &rest VALS
Package

3d-matrices

Source

struct.lisp (file)

Compiler Macro: matn R C &optional ELEMENTS
Package

3d-matrices

Source

struct.lisp (file)

Compiler Macro: m~= VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: n*m VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: nm* VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: nm+ VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: nm- VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)

Compiler Macro: nm/ VAL &rest VALS
Package

3d-matrices

Source

ops.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.3 Functions

Function: m* ()

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.

Package

3d-matrices

Source

ops.lisp (file)

Function: m+ ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m- ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m/ ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m/= ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m1norm ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m2norm ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m< ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m<= ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m= ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m> ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m>= ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: madj ()

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 (file)

Function: mapply ()

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 (file)

Function: mapplyf ()

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 (file)

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 (file)

Function: marr2 INSTANCE

Direct accessor to the backing array of the MAT2.

Package

3d-matrices

Source

struct.lisp (file)

Writer

(setf marr2) (function)

Function: (setf marr2) VALUE INSTANCE
Package

3d-matrices

Source

struct.lisp (file)

Reader

marr2 (function)

Function: marr3 INSTANCE

Direct accessor to the backing array of the MAT3o.

Package

3d-matrices

Source

struct.lisp (file)

Writer

(setf marr3) (function)

Function: (setf marr3) VALUE INSTANCE
Package

3d-matrices

Source

struct.lisp (file)

Reader

marr3 (function)

Function: marr4 INSTANCE

Direct accessor to the backing array of the MAT4.

Package

3d-matrices

Source

struct.lisp (file)

Writer

(setf marr4) (function)

Function: (setf marr4) VALUE INSTANCE
Package

3d-matrices

Source

struct.lisp (file)

Reader

marr4 (function)

Function: marrn INSTANCE

Direct accessor to the backing array of the MATN.

Package

3d-matrices

Source

struct.lisp (file)

Writer

(setf marrn) (function)

Function: (setf marrn) VALUE INSTANCE
Package

3d-matrices

Source

struct.lisp (file)

Reader

marrn (function)

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 (file)

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 (file)

Function: mat2 ()

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 (file)

Function: mat2-p OBJECT

Returns T if the given object is of type MAT2.

Package

3d-matrices

Source

struct.lisp (file)

Function: mat3 ()

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 (file)

Function: mat3-p OBJECT

Returns T if the given object is of type MAT3.

Package

3d-matrices

Source

struct.lisp (file)

Function: mat4 ()

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 (file)

Function: mat4-p OBJECT

Returns T if the given object is of type MAT4.

Package

3d-matrices

Source

struct.lisp (file)

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 (file)

Function: matn ()

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 (file)

Function: matn-p OBJECT

Returns T if the given object is of type MATN.

Package

3d-matrices

Source

struct.lisp (file)

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 (file)

Function: mbottom M N

Returns the lowermost N rows as a new matrix.

Package

3d-matrices

Source

ops.lisp (file)

Function: mcof ()

Computes the cofactor matrix.

See MCOFACTOR

Package

3d-matrices

Source

ops.lisp (file)

Function: mcofactor ()

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 (file)

Function: mcol ()

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

This only works for MAT2, MAT3, MAT4.

Package

3d-matrices

Source

ops.lisp (file)

Writer

(setf mcol) (function)

Function: (setf mcol) ()
Package

3d-matrices

Source

ops.lisp (file)

Reader

mcol (function)

Function: mcols MAT

Returns the number of columns the matrix stores.

Package

3d-matrices

Source

struct.lisp (file)

Function: mcopy M

Creates a full copy of the matrix.

See MCOPY2
See MCOPY3
See MCOPY4
See MCOPYN

Package

3d-matrices

Source

struct.lisp (file)

Function: mcopy2 M2

Creates a full copy of the MAT2.

Package

3d-matrices

Source

struct.lisp (file)

Function: mcopy3 M3

Creates a full copy of the MAT3.

Package

3d-matrices

Source

struct.lisp (file)

Function: mcopy4 M4

Creates a full copy of the MAT4.

Package

3d-matrices

Source

struct.lisp (file)

Function: mcopyn MN

Creates a full copy of the MATN.

Package

3d-matrices

Source

struct.lisp (file)

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 (file)

Setf Expander

(setf mcref) (setf expander)

Setf Expander: (setf mcref) MAT Y X
Package

3d-matrices

Source

struct.lisp (file)

Reader

mcref (function)

Function: mcref2 ()

Returns the element at the given cell in the MAT2.

Package

3d-matrices

Source

struct.lisp (file)

Setf Expander

(setf mcref2) (setf expander)

Setf Expander: (setf mcref2) MAT Y X
Package

3d-matrices

Source

struct.lisp (file)

Reader

mcref2 (function)

Function: mcref3 ()

Returns the element at the given cell in the MAT3.

Package

3d-matrices

Source

struct.lisp (file)

Setf Expander

(setf mcref3) (setf expander)

Setf Expander: (setf mcref3) MAT Y X
Package

3d-matrices

Source

struct.lisp (file)

Reader

mcref3 (function)

Function: mcref4 ()

Returns the element at the given cell in the MAT4.

Package

3d-matrices

Source

struct.lisp (file)

Setf Expander

(setf mcref4) (setf expander)

Setf Expander: (setf mcref4) MAT Y X
Package

3d-matrices

Source

struct.lisp (file)

Reader

mcref4 (function)

Function: mcrefn ()

Returns the element at the given cell in the MATN.

Package

3d-matrices

Source

struct.lisp (file)

Setf Expander

(setf mcrefn) (setf expander)

Setf Expander: (setf mcrefn) MAT Y X
Package

3d-matrices

Source

struct.lisp (file)

Reader

mcrefn (function)

Function: mdet ()

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 (file)

Function: mdiag M

Returns the diagonal values of the matrix as a list.

Package

3d-matrices

Source

ops.lisp (file)

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 (file)

Function: meye ()

Constructs a square identity matrix of the requested size.

Package

3d-matrices

Source

ops.lisp (file)

Function: mfrustum ()

Returns a 3D frustum projection view matrix.

See MPERSPECTIVE

Package

3d-matrices

Source

ops.lisp (file)

Function: minorm ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: minv ()

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.

Package

3d-matrices

Source

ops.lisp (file)

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 (file)

Setf Expander

(setf miref) (setf expander)

Setf Expander: (setf miref) MAT I
Package

3d-matrices

Source

struct.lisp (file)

Reader

miref (function)

Function: miref2 ()

Returns the element at the given index in the MAT2.

Elements are stored in row-major format.

Package

3d-matrices

Source

struct.lisp (file)

Setf Expander

(setf miref2) (setf expander)

Setf Expander: (setf miref2) MAT I
Package

3d-matrices

Source

struct.lisp (file)

Reader

miref2 (function)

Function: miref3 ()

Returns the element at the given index in the MAT3.

Elements are stored in row-major format.

Package

3d-matrices

Source

struct.lisp (file)

Setf Expander

(setf miref3) (setf expander)

Setf Expander: (setf miref3) MAT I
Package

3d-matrices

Source

struct.lisp (file)

Reader

miref3 (function)

Function: miref4 ()

Returns the element at the given index in the MAT4.

Elements are stored in row-major format.

Package

3d-matrices

Source

struct.lisp (file)

Setf Expander

(setf miref4) (setf expander)

Setf Expander: (setf miref4) MAT I
Package

3d-matrices

Source

struct.lisp (file)

Reader

miref4 (function)

Function: mirefn ()

Returns the element at the given index in the MATN.

Elements are stored in row-major format.

Package

3d-matrices

Source

struct.lisp (file)

Setf Expander

(setf mirefn) (setf expander)

Setf Expander: (setf mirefn) MAT I
Package

3d-matrices

Source

struct.lisp (file)

Reader

mirefn (function)

Function: mleft M N

Returns the leftmost N columns as a new matrix.

Package

3d-matrices

Source

ops.lisp (file)

Function: mlookat ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: mlu ()

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 (file)

Function: mminor ()

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 (file)

Function: mortho ()

Returns a 3D orthographic projection view matrix.

Package

3d-matrices

Source

ops.lisp (file)

Function: mperspective ()

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 (file)

Function: mpivot ()

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 (file)

Function: mqr ()

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 (file)

Function: mrand ()

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 (file)

Function: mright M N

Returns the rightmost N columns as a new matrix.

Package

3d-matrices

Source

ops.lisp (file)

Function: mrotation ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: mrow ()

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

This only works for MAT2, MAT3, MAT4.

Package

3d-matrices

Source

ops.lisp (file)

Writer

(setf mrow) (function)

Function: (setf mrow) ()
Package

3d-matrices

Source

ops.lisp (file)

Reader

mrow (function)

Function: mrows MAT

Returns the number of rows the matrix stores.

Package

3d-matrices

Source

struct.lisp (file)

Function: mscaling ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: mtop M N

Returns the topmost N rows as a new matrix.

Package

3d-matrices

Source

ops.lisp (file)

Function: mtrace ()

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 (file)

Function: mtranslation ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: mtranspose ()

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 (file)

Function: muniform ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: m~= ()

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

See ~=

Package

3d-matrices

Source

ops.lisp (file)

Function: n*m ()

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

See NM*

Package

3d-matrices

Source

ops.lisp (file)

Function: nm* ()

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.

See N*M

Package

3d-matrices

Source

ops.lisp (file)

Function: nm+ ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: nm- ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: nm/ ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: nmlookat ()

Modifies the matrix to look at TARGET from the EYE.

See MLOOKAT.

Package

3d-matrices

Source

ops.lisp (file)

Function: nmrotate ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: nmscale ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: nmswap-col ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: nmswap-row ()

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

Package

3d-matrices

Source

ops.lisp (file)

Function: nmtranslate ()

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

Package

3d-matrices

Source

ops.lisp (file)

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 (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.4 Structures

Structure: mat2 ()

The 2x2 matrix type.

Package

3d-matrices

Source

struct.lisp (file)

Direct superclasses

structure-object (structure)

Direct methods
  • describe-object (method)
  • make-load-form (method)
  • print-object (method)
Direct slots
Slot: marr2
Type

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

Readers

marr2 (function)

Writers

(setf marr2) (function)

Structure: mat3 ()

The 3x3 matrix type.

Package

3d-matrices

Source

struct.lisp (file)

Direct superclasses

structure-object (structure)

Direct methods
  • describe-object (method)
  • make-load-form (method)
  • print-object (method)
Direct slots
Slot: marr3
Type

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

Readers

marr3 (function)

Writers

(setf marr3) (function)

Structure: mat4 ()

The 4x4 matrix type.

Package

3d-matrices

Source

struct.lisp (file)

Direct superclasses

structure-object (structure)

Direct methods
  • describe-object (method)
  • make-load-form (method)
  • print-object (method)
Direct slots
Slot: marr4
Type

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

Readers

marr4 (function)

Writers

(setf marr4) (function)

Structure: matn ()

The NxM matrix type.

Package

3d-matrices

Source

struct.lisp (file)

Direct superclasses

structure-object (structure)

Direct methods
  • describe-object (method)
  • make-load-form (method)
  • print-object (method)
Direct slots
Slot: %rows
Type

3d-matrices::mat-dim

Readers

%rows (function)

Writers

(setf %rows) (function)

Slot: %cols
Type

3d-matrices::mat-dim

Readers

%cols (function)

Writers

(setf %cols) (function)

Slot: marrn
Type

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

Readers

marrn (function)

Writers

(setf marrn) (function)


Previous: , Up: Exported definitions   [Contents][Index]

5.1.5 Types

Type: mat ()

Supertype for all matrix types.

See MAT2
See MAT3
See MAT4
See MATN

Package

3d-matrices

Source

struct.lisp (file)


Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Special variables

Special Variable: *eps*

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

Package

3d-matrices

Source

toolkit.lisp (file)

Special Variable: *float-type*

The concrete float type to use in this library.

This must be the same as 3d-vectors::*float-type*.

Package

3d-matrices

Source

toolkit.lisp (file)

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 (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

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 (file)

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 (file)

Macro: %2mat/-expansion A B

Inner expansion to compute an element-wise matrix division.

Package

3d-matrices

Source

ops.lisp (file)

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 (file)

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 (file)

Macro: %2nmat/-expansion A B &optional MC MN

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

Package

3d-matrices

Source

ops.lisp (file)

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 (file)

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 (file)

Macro: define-describe-matrix TYPE

Shorthand macro to define a describe-object method.

Package

3d-matrices

Source

struct.lisp (file)

Macro: define-mat-accessor MTYPE MIREF MCREF MARR SIZE
Package

3d-matrices

Source

struct.lisp (file)

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 (file)

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 (file)

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 (file)

Macro: define-ofun NAME ARGS &body BODY

Same as DEFUN but with optimisation flags set.

The flags will be set accordingly:
SPEED 3, SPACE 3, DEBUG 0, SAFETY 1, COMPILATION-SPEED 0

Package

3d-matrices

Source

toolkit.lisp (file)

Macro: defsetf* NAME ARGS VALUES &body BODY
Package

3d-matrices

Source

toolkit.lisp (file)

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 (file)

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 (file)

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 (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Functions

Function: %cols INSTANCE

Direct accessor to the number of columns in the MATN.

Package

3d-matrices

Source

struct.lisp (file)

Writer

(setf %cols) (function)

Function: (setf %cols) VALUE INSTANCE
Package

3d-matrices

Source

struct.lisp (file)

Reader

%cols (function)

Function: %mat2 MARR2

Direct constructor for the 2x2 matrix struct.

Package

3d-matrices

Source

struct.lisp (file)

Function: %mat3 MARR3

Direct constructor for the 3x3 matrix struct.

Package

3d-matrices

Source

struct.lisp (file)

Function: %mat4 MARR4

Direct constructor for the 4x4 matrix struct.

Package

3d-matrices

Source

struct.lisp (file)

Function: %matn %ROWS %COLS MARRN

Direct constructor for the NxM matrix struct.

Package

3d-matrices

Source

struct.lisp (file)

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 (file)

Function: %rows INSTANCE

Direct accessor to the number of rows in the MATN.

Package

3d-matrices

Source

struct.lisp (file)

Writer

(setf %rows) (function)

Function: (setf %rows) VALUE INSTANCE
Package

3d-matrices

Source

struct.lisp (file)

Reader

%rows (function)

Function: 2mat-m* ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m+ ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m- ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m/ ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m/= ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m< ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m<= ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m= ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m> ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m>= ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-m~= ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-n*m ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-nm* ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-nm+ ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-nm- ()
Package

3d-matrices

Source

ops.lisp (file)

Function: 2mat-nm/ ()
Package

3d-matrices

Source

ops.lisp (file)

Function: ensure-float THING

Takes a real and returns a float of the appropriate *FLOAT-TYPE*.

Package

3d-matrices

Source

toolkit.lisp (file)

Function: ensure-float-param VAL ENV

The same as ENSURE-FLOAT, but to be used in macros for compile-time expansion.

Package

3d-matrices

Source

toolkit.lisp (file)

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 (file)

Function: map-mat-diag ()

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 (file)

Function: map-mat-index ()

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 (file)

Function: mswap-col ()

Returns a copy of the matrix with the columns swapped.

Package

3d-matrices

Source

ops.lisp (file)

Function: mswap-row ()

Returns a copy of the matrix with the rows swapped.

Package

3d-matrices

Source

ops.lisp (file)

Function: ~= A B

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

Package

3d-matrices

Source

toolkit.lisp (file)


Previous: , Up: Internal definitions   [Contents][Index]

5.2.4 Types

Type: float-type ()

Concrete type for the used floating point type.

Package

3d-matrices

Source

toolkit.lisp (file)

Type: mat-dim ()

Concrete type for the allowed matrix dimension size.

Package

3d-matrices

Source

toolkit.lisp (file)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   3  
F   L  
Index Entry  Section

3
3d-matrices.asd: The 3d-matrices<dot>asd file
3d-matrices/documentation.lisp: The 3d-matrices/documentation<dot>lisp file
3d-matrices/iterate.lisp: The 3d-matrices/iterate<dot>lisp file
3d-matrices/ops.lisp: The 3d-matrices/ops<dot>lisp file
3d-matrices/package.lisp: The 3d-matrices/package<dot>lisp file
3d-matrices/struct.lisp: The 3d-matrices/struct<dot>lisp file
3d-matrices/toolkit.lisp: The 3d-matrices/toolkit<dot>lisp file

F
File, Lisp, 3d-matrices.asd: The 3d-matrices<dot>asd file
File, Lisp, 3d-matrices/documentation.lisp: The 3d-matrices/documentation<dot>lisp file
File, Lisp, 3d-matrices/iterate.lisp: The 3d-matrices/iterate<dot>lisp file
File, Lisp, 3d-matrices/ops.lisp: The 3d-matrices/ops<dot>lisp file
File, Lisp, 3d-matrices/package.lisp: The 3d-matrices/package<dot>lisp file
File, Lisp, 3d-matrices/struct.lisp: The 3d-matrices/struct<dot>lisp file
File, Lisp, 3d-matrices/toolkit.lisp: The 3d-matrices/toolkit<dot>lisp file

L
Lisp File, 3d-matrices.asd: The 3d-matrices<dot>asd file
Lisp File, 3d-matrices/documentation.lisp: The 3d-matrices/documentation<dot>lisp file
Lisp File, 3d-matrices/iterate.lisp: The 3d-matrices/iterate<dot>lisp file
Lisp File, 3d-matrices/ops.lisp: The 3d-matrices/ops<dot>lisp file
Lisp File, 3d-matrices/package.lisp: The 3d-matrices/package<dot>lisp file
Lisp File, 3d-matrices/struct.lisp: The 3d-matrices/struct<dot>lisp file
Lisp File, 3d-matrices/toolkit.lisp: The 3d-matrices/toolkit<dot>lisp file

Jump to:   3  
F   L  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

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

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

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

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

~
~=: Internal functions

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

D
define-describe-matrix: Internal macros
define-mat-accessor: Internal macros
define-matcomp: Internal macros
define-matop: Internal macros
define-nmatop: Internal macros
define-ofun: Internal macros
defsetf*: Internal macros
do-mat-diag: Internal macros
do-mat-index: Internal macros

E
ensure-float: Internal functions
ensure-float-param: Internal functions
ensure-function: Internal functions

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

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

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

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

W
with-fast-matcase: Exported macros
with-fast-matref: Exported macros
with-fast-matrefs: Exported macros
with-floats: Internal macros
write-matrix: Exported functions

Jump to:   %   (   2   ~  
C   D   E   F   M   N   S   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   %   *  
M   S  
Index Entry  Section

%
%cols: Exported structures
%rows: Exported structures

*
*eps*: Internal special variables
*float-type*: Internal special variables
*matrix-limit*: Internal special variables

M
marr2: Exported structures
marr3: Exported structures
marr4: Exported structures
marrn: Exported structures

S
Slot, %cols: Exported structures
Slot, %rows: Exported structures
Slot, marr2: Exported structures
Slot, marr3: Exported structures
Slot, marr4: Exported structures
Slot, marrn: Exported structures
Special Variable, *eps*: Internal special variables
Special Variable, *float-type*: Internal special variables
Special Variable, *matrix-limit*: Internal special variables

Jump to:   %   *  
M   S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   3  
F   M   P   S   T  
Index Entry  Section

3
3d-matrices: The 3d-matrices system
3d-matrices: The 3d-matrices package

F
float-type: Internal types

M
mat: Exported types
mat-dim: Internal types
mat2: Exported structures
mat3: Exported structures
mat4: Exported structures
matn: Exported structures

P
Package, 3d-matrices: The 3d-matrices package

S
Structure, mat2: Exported structures
Structure, mat3: Exported structures
Structure, mat4: Exported structures
Structure, matn: Exported structures
System, 3d-matrices: The 3d-matrices system

T
Type, float-type: Internal types
Type, mat: Exported types
Type, mat-dim: Internal types

Jump to:   3  
F   M   P   S   T