Please refer to the following archived thread:

Complex Matrix Determinant on the 15C

The HP-15C represents an *m* x *n* complex-valued matrix as an *m* x *2n* real-valued matrix. The HP-15C's built-in utility functions will transform an *m* x *m* complex-valued square matrix represented in this 'complex' format into an *2m* x *2m* real-valued square matrix. The determinant of such a matrix is the squared magnitude of the complex-valued determinant of the *m* x *m* original matrix.

This procedure can be employed to obtain the magnitude of the determinant of a complex-valued matrix dimensioned up to 4 x 4. However, no built-in capability is available to return the complex-valued determinant itself.

Here's my completed program to calculate the complex-valued determinant of a 3 x 3 complex-valued matrix on the HP-15C. The matrix must be entered as a 3 x 6 real-valued matrix "A" in standard HP-15C 'complex' format. The program was tested with the following matrix **A** on the HP-15C, and verified using the built-in DET function on the HP-42S:

**A** =

[ 1+i3 2-i5 7+i1 ]

[ 4-i2 6+i9 -8+i4 ]

[-3-i7 3+i2 -1+i6 ]

det **A** = -217 + i231, as computed exactly by this HP-15C program and by the HP-42S. The HP-15C's native capabilities return 100,450.0000 as the squared magnitude of the determinant, whose calculation time is 15 seconds.

If **A**(1,3) is edited to 7-i1, my HP-15C program returns the exact determinant of -75 + i289, and the HP-15C's native capabilities return 89,146.00002. (The HP-42S computes a slightly-inexact -74.9999999999 + i289, suggesting that the HP-42S does not calculate determinants directly.)

It may be that the exact answers produced by the HP-42S for the original matrix are attributable to the squared magnitude of the determinant exceeding 10^{5}. If so, that was pure luck. My only criterion for populating **A** was that each component of each element be a single-digit integer, with a variety of signs.

This HP-15C program consumes about 25 registers and takes 21 seconds to run. It utilizes indirect access of any matrix {A-E} by storing the descriptor of the matrix into the indirect register I.

Procedure: Store 3 x 6 matrix in 'complex' form with identifier {A-E}; RCL {A-E}; GSB D.

- Check if dimension of matrix is 3 x 6

- (If not, display blinking descriptor and stop)

- Compute and store first complex sub-determinant

- Compute second sub-determinant

- Combine with first sub-determinant and store

- Compute third sub-determinant

- Combine with first two sub-determinants

- Display complex result

- NOTE: "(u)" denotes user mode, which is necessary for advancing the matrix-element index.

001 LBL D 056 MATRIX 1 102 MATRIX 1

002 STO I 057 2 103 2

003 RCL DIM I 058 STO 0 104 STO 0

004 f I 059 RCL(i) (u) 105 RCL(i) (u)

005 3 060 RCL(i) 106 RCL(i)

006 ENTER 061 f I 107 f I

007 6 062 3 108 3

008 f I 063 STO 0 109 STO 0

009 - 064 5 110 STO 1

010 x=0? 065 STO 1 111 R_down

011 GTO 8 066 R_down 112 RCL(i) (u)

012 CF 8 067 R_down 113 RCL(i)

013 RCL I 068 RCL(i) (u) 114 f I

014 SF 9 069 RCL(i) 115 *

015 RTN 070 f I 116 2

016 LBL 8 071 * 117 STO 0

017 2 072 2 118 3

018 STO 0 073 STO 0 119 STO 1

019 3 074 5 120 R_down

020 STO 1 075 STO 1 121 R_down

021 RCL(i) (u) 076 R_down 122 RCL(i) (u)

022 RCL(i) (u) 077 R_down 123 RCL(i)

023 f I 078 RCL(i) (u) 124 f I

024 3 079 RCL(i) (u) 125 MATRIX 1

025 STO 0 080 f I 126 3

026 R_down 081 RCL(i) (u) 127 STO 0

027 RCL(i) (u) 082 RCL(i) 128 R_down

028 RCL(i) 083 f I 129 RCL(i) (u)

029 f I 084 * 130 RCL(i)

030 * 085 - 131 f I

031 2 086 MATRIX 1 132 *

032 STO 0 087 3 133 -

033 CLx 088 STO 1 134 MATRIX 1

034 5 089 R_down 135 5

035 STO 1 090 RCL(i) (u) 136 STO 1

036 R_down 091 RCL(i) 137 R_down

037 RCL(i) (u) 092 f I 138 RCL(i) (u)

038 RCL(i) (u) 093 * 139 RCL(i)

039 f I 094 RCL 2 140 f I

040 3 095 RCL 3 141 *

041 STO 1 096 f I 142 RCL 2

042 R_down 097 x<>y 143 RCL 3

043 RCL(i) (u) 098 - 144 f I

044 RCL(i) 099 STO 2 145 +

045 f I 100 Re<>Im 146 PSE

046 * 101 STO 3 147 Re<>Im

047 - 148 PSE

048 MATRIX 1 149 Re<>Im

049 RCL(i) (u) 150 RTN

050 RCL(i)

051 f I

052 *

053 STO 2

054 Re<>Im

055 STO 3

*Edited: 19 June 2010, 2:52 p.m. after one or more responses were posted*