detgtrte.pas 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. program detgtrte;
  2. uses
  3. typ,
  4. iom,
  5. det;
  6. const
  7. c1 = -10;
  8. c2 = 10;
  9. var
  10. k, p, n, term, vb, nvb: ArbInt;
  11. l, d, u: array[c1..c2] of ArbFloat;
  12. f: ArbFloat;
  13. begin
  14. iom.npos := 1000; {max. width of output to 1000, since this is piped}
  15. Write(' program results detgtrte');
  16. case sizeof(ArbFloat) of
  17. 4: writeln('(single)');
  18. 6: writeln('(real)');
  19. 8: writeln('(double)');
  20. 10: writeln('(Extended)');
  21. end;
  22. Read(nvb);
  23. writeln;
  24. writeln(' number of examples:', nvb: 4);
  25. for vb := 1 to nvb do
  26. begin
  27. writeln;
  28. writeln('example nr', vb: 2);
  29. Read(p, n);
  30. writeln;
  31. writeln(' n=', n: 2);
  32. iomrev(input, l[p + 1], n - 1);
  33. iomrev(input, d[p], n);
  34. iomrev(input, u[p], n - 1);
  35. detgtr(n, l[p + 1], d[p], u[p], f, k, term);
  36. writeln;
  37. writeln('lower diagonal of A =');
  38. iomwrv(output, l[p + 1], n - 1, numdig);
  39. writeln;
  40. writeln('diagonal of A =');
  41. iomwrv(output, d[p], n, numdig);
  42. writeln;
  43. writeln('upper diagonal of A =');
  44. iomwrv(output, u[p], n - 1, numdig);
  45. writeln;
  46. writeln('term=', term: 2);
  47. writeln;
  48. if term = 3 then
  49. writeln(' wrong input')
  50. else
  51. begin
  52. Write(' determinant of A =', f: numdig);
  53. if k <> 0 then
  54. Write(' * 8**', k: 3);
  55. writeln;
  56. end; {term=1}
  57. writeln('----------------------------------------------------');
  58. end; {vb}
  59. Close(input);
  60. Close(output);
  61. end.