Нашел вот здесь в итоге:

Но не получается алгоритм, ни в какую. Может свежим взглядом, кто зацепит? (индексы сдвинуты на 1, так как в С нумерация массивов с 0)
void LDU_decomposition(matrix_t *A, matrix_t *L, matrix_t *D, matrix_t *U)
 
{
 
        int i, j ,k;
 
        double S;
 
 
 
        Make_E(L), Make_E(D), Make_E(U);
 
 
 
        D->p[0][0] = A->p[0][0];
 
 
 
        for(j = 1; j < A->x; ++j)
 
        {
 
        
 
          for(i = 0; i <= j - 1; ++i)
 
          {
 
                    if(i == 0)
 
                        {
 
                                U->p[i][j] = (double)(A->p[i][j]) / (D->p[i][i]);
 
                                L->p[j][i] = (double)(A->p[j][i]) / (D->p[i][i]);
 
                        }
 
                        else if(i > 0)
 
                        { 
 
                                for(S = 0, k = 0; k < i - 1; ++k)
 
                                        S += L->p[i][k] * D->p[k][k] * U->p[k][j];
 
                                U->p[i][j] = (double)(A->p[i][j] - S) / (D->p[i][i]);
 
 
 
                                for(S = 0, k = 0; k < j - 1; ++k)
 
                                        S += U->p[k][i] * D->p[k][k] * L->p[j][k];
 
                        L->p[j][i] = (double)(A->p[j][i] - S) / (D->p[i][i]);
 
                        }
 
          }
 
         
 
          for(S = 0, k = 0; k < j - 1; ++k)
 
                S += (U->p[k][j]) * (D->p[k][k]) * (L->p[j][k]);
 
          D->p[j][j] = (A->p[j][j] - S);
 
          
 
         
 
        }
 
}