16 lines
328 B
Text
16 lines
328 B
Text
mp=: +/ . * NB. matrix product
|
|
h =: +@|: NB. conjugate transpose
|
|
|
|
QR=: 3 : 0
|
|
n=.{:$A=.y
|
|
if. 1>:n do.
|
|
A ((% {.@,) ; ]) %:(h A) mp A
|
|
else.
|
|
m =.>.n%2
|
|
A0=.m{."1 A
|
|
A1=.m}."1 A
|
|
'Q0 R0'=.QR A0
|
|
'Q1 R1'=.QR A1 - Q0 mp T=.(h Q0) mp A1
|
|
(Q0,.Q1);(R0,.T),(-n){."1 R1
|
|
end.
|
|
)
|