mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-26 12:18:20 +02:00
89 lines
1.7 KiB
ObjectPascal
89 lines
1.7 KiB
ObjectPascal
program detgpbte;
|
|
|
|
{
|
|
|
|
1: 260
|
|
2: 64
|
|
3:
|
|
|
|
}
|
|
uses
|
|
typ,
|
|
iom,
|
|
det;
|
|
|
|
const
|
|
pmin = -10;
|
|
pmax = 100;
|
|
var
|
|
l, i, ind, rw, n, k, term, p, vb, nvb: ArbInt;
|
|
f: ArbFloat;
|
|
a: array[pmin..pmax] of ArbFloat;
|
|
begin
|
|
iom.npos := 1000; {max. width of output to 1000, since this is piped}
|
|
Assign(input, ParamStr(1));
|
|
reset(input);
|
|
Assign(output, ParamStr(2));
|
|
rewrite(output);
|
|
Write(' program results detgpbte');
|
|
case sizeof(ArbFloat) of
|
|
4: writeln('(single)');
|
|
6: writeln('(real)');
|
|
8: writeln('(double)');
|
|
10: writeln('(extended)');
|
|
end;
|
|
Read(nvb);
|
|
writeln;
|
|
writeln(' number of examples:', nvb: 3);
|
|
for vb := 1 to nvb do
|
|
begin
|
|
writeln;
|
|
writeln('example', vb: 2);
|
|
Read(p, n, l);
|
|
ind := p;
|
|
writeln;
|
|
writeln(' n=', n: 1, ' l=', l: 1);
|
|
for i := 1 to n do
|
|
begin
|
|
if i <= l then
|
|
rw := i
|
|
else
|
|
rw := l + 1;
|
|
iomrev(input, a[ind], rw);
|
|
Inc(ind, rw);
|
|
end;
|
|
detgpb(n, l, a[p], f, k, term);
|
|
ind := p;
|
|
writeln;
|
|
writeln(' A (left-under) =');
|
|
for i := 1 to n do
|
|
begin
|
|
if i <= l then
|
|
rw := i
|
|
else
|
|
rw := l + 1;
|
|
if i > l + 1 then
|
|
Write('': (i - l - 1) * (numdig + 2));
|
|
iomwrv(output, a[ind], rw, numdig);
|
|
Inc(ind, rw);
|
|
end;
|
|
writeln;
|
|
writeln('term=', term: 2);
|
|
writeln;
|
|
if term = 3 then
|
|
writeln(' wrong input')
|
|
else
|
|
if term = 2 then
|
|
writeln(' matrix not pos-def.')
|
|
else
|
|
begin
|
|
Write(' determinant of A =', f: numdig);
|
|
{ if k <> 0 then } Write(' * 8**', k: 3);
|
|
writeln;
|
|
end; {term=1}
|
|
writeln('---------------------------------------------');
|
|
end; {vb}
|
|
Close(input);
|
|
Close(output);
|
|
end.
|