detgpbte.pas 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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.
  85. program detgpbte;
  86. {
  87. 1: 260
  88. 2: 64
  89. 3:
  90. }
  91. uses
  92. typ,
  93. iom,
  94. det;
  95. const
  96. pmin = -10;
  97. pmax = 100;
  98. var
  99. l, i, ind, rw, n, k, term, p, vb, nvb: ArbInt;
  100. f: ArbFloat;
  101. a: array[pmin..pmax] of ArbFloat;
  102. begin
  103. iom.npos := 1000; {max. width of output to 1000, since this is piped}
  104. Assign(input, ParamStr(1));
  105. reset(input);
  106. Assign(output, ParamStr(2));
  107. rewrite(output);
  108. Write(' program results detgpbte');
  109. case sizeof(ArbFloat) of
  110. 4: writeln('(single)');
  111. 6: writeln('(real)');
  112. 8: writeln('(double)');
  113. 10: writeln('(extended)');
  114. end;
  115. Read(nvb);
  116. writeln;
  117. writeln(' number of examples:', nvb: 3);
  118. for vb := 1 to nvb do
  119. begin
  120. writeln;
  121. writeln('example', vb: 2);
  122. Read(p, n, l);
  123. ind := p;
  124. writeln;
  125. writeln(' n=', n: 1, ' l=', l: 1);
  126. for i := 1 to n do
  127. begin
  128. if i <= l then
  129. rw := i
  130. else
  131. rw := l + 1;
  132. iomrev(input, a[ind], rw);
  133. Inc(ind, rw);
  134. end;
  135. detgpb(n, l, a[p], f, k, term);
  136. ind := p;
  137. writeln;
  138. writeln(' A (left-under) =');
  139. for i := 1 to n do
  140. begin
  141. if i <= l then
  142. rw := i
  143. else
  144. rw := l + 1;
  145. if i > l + 1 then
  146. Write('': (i - l - 1) * (numdig + 2));
  147. iomwrv(output, a[ind], rw, numdig);
  148. Inc(ind, rw);
  149. end;
  150. writeln;
  151. writeln('term=', term: 2);
  152. writeln;
  153. if term = 3 then
  154. writeln(' wrong input')
  155. else
  156. if term = 2 then
  157. writeln(' matrix not pos-def.')
  158. else
  159. begin
  160. Write(' determinant of A =', f: numdig);
  161. { if k <> 0 then } Write(' * 8**', k: 3);
  162. writeln;
  163. end; {term=1}
  164. writeln('---------------------------------------------');
  165. end; {vb}
  166. Close(input);
  167. Close(output);
  168. end.
  169.