detgtrte.pas 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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.
  62. program detgtrte;
  63. uses
  64. typ,
  65. iom,
  66. det;
  67. const
  68. c1 = -10;
  69. c2 = 10;
  70. var
  71. k, p, n, term, vb, nvb: ArbInt;
  72. l, d, u: array[c1..c2] of ArbFloat;
  73. f: ArbFloat;
  74. begin
  75. iom.npos := 1000; {max. width of output to 1000, since this is piped}
  76. Write(' program results detgtrte');
  77. case sizeof(ArbFloat) of
  78. 4: writeln('(single)');
  79. 6: writeln('(real)');
  80. 8: writeln('(double)');
  81. 10: writeln('(Extended)');
  82. end;
  83. Read(nvb);
  84. writeln;
  85. writeln(' number of examples:', nvb: 4);
  86. for vb := 1 to nvb do
  87. begin
  88. writeln;
  89. writeln('example nr', vb: 2);
  90. Read(p, n);
  91. writeln;
  92. writeln(' n=', n: 2);
  93. iomrev(input, l[p + 1], n - 1);
  94. iomrev(input, d[p], n);
  95. iomrev(input, u[p], n - 1);
  96. detgtr(n, l[p + 1], d[p], u[p], f, k, term);
  97. writeln;
  98. writeln('lower diagonal of A =');
  99. iomwrv(output, l[p + 1], n - 1, numdig);
  100. writeln;
  101. writeln('diagonal of A =');
  102. iomwrv(output, d[p], n, numdig);
  103. writeln;
  104. writeln('upper diagonal of A =');
  105. iomwrv(output, u[p], n - 1, numdig);
  106. writeln;
  107. writeln('term=', term: 2);
  108. writeln;
  109. if term = 3 then
  110. writeln(' wrong input')
  111. else
  112. begin
  113. Write(' determinant of A =', f: numdig);
  114. if k <> 0 then
  115. Write(' * 8**', k: 3);
  116. writeln;
  117. end; {term=1}
  118. writeln('----------------------------------------------------');
  119. end; {vb}
  120. Close(input);
  121. Close(output);
  122. end.
  123.