Судя по всему, у данного метода есть какие-то серьезные ограничения применимости. Попытка применить данную функцию к матрице
Код
A[1,1]=2; A[1,2]=1; A[1,3]=3;
A[2,1]=4; A[2,2]=2; A[1,1]=1;
A[3,1]=2; A[3,2]=1; A[3,3]=2;
приводит к следующему результату, при i=2, a[2,2] модифицированной матрицы становится равноым нулю, а следовательно, согласно условнию
for i:=1 to pred(n) do
begin
if abs(a[i,i])<epsilon thenт
begin
det:=0.0;
exit
end;
определитель тоже становится равным нулю. "Ручной" подсчет определителя разложением по первой строке, а также для самопроверки методом суммирования произведений элементов ( т.н. "звездочка") дает значение равное -5. Буду признателен за любые коментарии/замечания по данному вопросу.