Determinant

is a primitive dyadic operator that takes two dyadic functions for operands and produces a monadic function. Much like Inner Product for matrix products, it generalizes the matrix determinant, so that  computes the determinant and   the permanent. Determinant has been implemented in SHARP APL, NARS2000, and J; however, the J definition differs by factoring out a reduction from the definition, so that  is the matrix determinant.

Unlike the inner product operator, which performs $$O(n^3)$$ arithmetic operations on square matrices of side length $$n$$ given arithmetic operands, definitions of the determinant use a super-polynomial number of evaluations, for example $$O(n\cdot n!)$$ in SHARP APL's definition. Computing the permanent in particular is not believed to be possible in polynomial time, which would rule out a polynomial-time definition for any generalization of it. The specific determinant function  can be computed much faster (for example by LU decomposition in $$O(n^3)$$), and is always handled specially for performance. Other combinations of operands may also have optimized implementations.

The determinant operator was described by Ken Iverson in "Determinant-Like Functions Produced by the Dot Operator" and also implemented in SHARP APL in 1982. It also appears in Iverson's later publications Rationalized APL and A Dictionary of APL.

Documentation

 * NARS2000
 * J NuVoc, Dictionary