- P1 = copy(A1.matrix_space().identity_matrix())
- P1.swap_rows(0,s)
- A1 = P1.T * A1 * P1
-
- # The top-left entry is now our 1x1 pivot.
- C = A1[1:n,0]
- B = A1[1:,1:]
-
- P2, L2, D2 = block_ldlt_naive(B - (C*C.transpose())/A1[0,0])
-
- P1 = P1*block_matrix(2,2, [[ZZ(1), ZZ(0)],
- [0*C, P2]])
- L1 = block_matrix(2,2, [[ZZ(1), ZZ(0)],
- [P2.transpose()*C/A1[0,0], L2]])
- D1 = block_matrix(2,2, [[A1[0,0], ZZ(0)],
- [0*C, D2]])
-
- return (P1,L1,D1)