detgpbte.pas 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. program detgpbte;
  2. {
  3. 1: 260
  4. 2: 64
  5. 3:
  6. }
  7. uses
  8. typ,
  9. iom,
  10. det;
  11. const
  12. pmin = -10;
  13. pmax = 100;
  14. var
  15. l, i, ind, rw, n, k, term, p, vb, nvb: ArbInt;
  16. f: ArbFloat;
  17. a: array[pmin..pmax] of ArbFloat;
  18. begin
  19. iom.npos := 1000; {max. width of output to 1000, since this is piped}
  20. Assign(input, ParamStr(1));
  21. reset(input);
  22. Assign(output, ParamStr(2));
  23. rewrite(output);
  24. Write(' program results detgpbte');
  25. case sizeof(ArbFloat) of
  26. 4: writeln('(single)');
  27. 6: writeln('(real)');
  28. 8: writeln('(double)');
  29. 10: writeln('(extended)');
  30. end;
  31. Read(nvb);
  32. writeln;
  33. writeln(' number of examples:', nvb: 3);
  34. for vb := 1 to nvb do
  35. begin
  36. writeln;
  37. writeln('example', vb: 2);
  38. Read(p, n, l);
  39. ind := p;
  40. writeln;
  41. writeln(' n=', n: 1, ' l=', l: 1);
  42. for i := 1 to n do
  43. begin
  44. if i <= l then
  45. rw := i
  46. else
  47. rw := l + 1;
  48. iomrev(input, a[ind], rw);
  49. Inc(ind, rw);
  50. end;
  51. detgpb(n, l, a[p], f, k, term);
  52. ind := p;
  53. writeln;
  54. writeln(' A (left-under) =');
  55. for i := 1 to n do
  56. begin
  57. if i <= l then
  58. rw := i
  59. else
  60. rw := l + 1;
  61. if i > l + 1 then
  62. Write('': (i - l - 1) * (numdig + 2));
  63. iomwrv(output, a[ind], rw, numdig);
  64. Inc(ind, rw);
  65. end;
  66. writeln;
  67. writeln('term=', term: 2);
  68. writeln;
  69. if term = 3 then
  70. writeln(' wrong input')
  71. else
  72. if term = 2 then
  73. writeln(' matrix not pos-def.')
  74. else
  75. begin
  76. Write(' determinant of A =', f: numdig);
  77. { if k <> 0 then } Write(' * 8**', k: 3);
  78. writeln;
  79. end; {term=1}
  80. writeln('---------------------------------------------');
  81. end; {vb}
  82. Close(input);
  83. Close(output);
  84. end.