sleglslt.pas 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. program sleglslt;
  2. uses
  3. typ,
  4. iom,
  5. sle;
  6. const
  7. mbov = 10;
  8. nbov = 8;
  9. type
  10. ar1n = array[1..nbov] of ArbFloat;
  11. var
  12. i, j, ii, m, n, k, nex, term: ArbInt;
  13. s: ArbFloat;
  14. p: array[1..mbov] of ^ar1n;
  15. b, e: array[1..mbov] of ArbFloat;
  16. x: array[1..nbov] of ArbFloat;
  17. begin
  18. Write(' program results sleglslt ');
  19. case sizeof(ArbFloat) of
  20. 4: writeln('(single)');
  21. 6: writeln('(real)');
  22. 8: writeln('(double)');
  23. end;
  24. Read(nex);
  25. writeln;
  26. writeln(' number of examples:', nex: 2);
  27. for ii := 1 to nex do
  28. begin
  29. Read(k, m, n);
  30. for i := k to m + k - 1 do
  31. begin
  32. getmem(p[i], n * sizeof(ArbFloat));
  33. iomrev(input, p[i]^[1], n);
  34. end;
  35. iomrev(input, b[k], m);
  36. sleglsl(p[k], m, n, b[k], x[k], term);
  37. writeln;
  38. writeln(' A =');
  39. for i := k to m + k - 1 do
  40. iomwrv(output, p[i]^[1], n, numdig);
  41. writeln;
  42. writeln(' b =');
  43. iomwrv(output, b[k], m, numdig);
  44. writeln;
  45. writeln('term=', term: 2);
  46. case term of
  47. 1:
  48. begin
  49. writeln;
  50. writeln(' x =');
  51. iomwrv(output, x[k], n, numdig);
  52. writeln;
  53. writeln('Ax - b =');
  54. for i := k to m + k - 1 do
  55. begin
  56. s := 0;
  57. for j := 1 to n do
  58. s := s + p[i]^[j] * x[j + k - 1];
  59. e[i] := s - b[i];
  60. end;
  61. iomwrv(output, e[k], m, numdig);
  62. end;
  63. 2: writeln(' A is (nearly) singular');
  64. 3: writeln('wrong input (m<n or n<1)');
  65. end;
  66. for i := m + k - 1 downto k do
  67. freemem(p[i], n * sizeof(ArbFloat));
  68. writeln(' --------------------------------------------------');
  69. end;
  70. end.
  71. program sleglslt;
  72. uses
  73. typ,
  74. iom,
  75. sle;
  76. const
  77. mbov = 10;
  78. nbov = 8;
  79. type
  80. ar1n = array[1..nbov] of ArbFloat;
  81. var
  82. i, j, ii, m, n, k, nex, term: ArbInt;
  83. s: ArbFloat;
  84. p: array[1..mbov] of ^ar1n;
  85. b, e: array[1..mbov] of ArbFloat;
  86. x: array[1..nbov] of ArbFloat;
  87. begin
  88. Write(' program results sleglslt ');
  89. case sizeof(ArbFloat) of
  90. 4: writeln('(single)');
  91. 6: writeln('(real)');
  92. 8: writeln('(double)');
  93. end;
  94. Read(nex);
  95. writeln;
  96. writeln(' number of examples:', nex: 2);
  97. for ii := 1 to nex do
  98. begin
  99. Read(k, m, n);
  100. for i := k to m + k - 1 do
  101. begin
  102. getmem(p[i], n * sizeof(ArbFloat));
  103. iomrev(input, p[i]^[1], n);
  104. end;
  105. iomrev(input, b[k], m);
  106. sleglsl(p[k], m, n, b[k], x[k], term);
  107. writeln;
  108. writeln(' A =');
  109. for i := k to m + k - 1 do
  110. iomwrv(output, p[i]^[1], n, numdig);
  111. writeln;
  112. writeln(' b =');
  113. iomwrv(output, b[k], m, numdig);
  114. writeln;
  115. writeln('term=', term: 2);
  116. case term of
  117. 1:
  118. begin
  119. writeln;
  120. writeln(' x =');
  121. iomwrv(output, x[k], n, numdig);
  122. writeln;
  123. writeln('Ax - b =');
  124. for i := k to m + k - 1 do
  125. begin
  126. s := 0;
  127. for j := 1 to n do
  128. s := s + p[i]^[j] * x[j + k - 1];
  129. e[i] := s - b[i];
  130. end;
  131. iomwrv(output, e[k], m, numdig);
  132. end;
  133. 2: writeln(' A is (nearly) singular');
  134. 3: writeln('wrong input (m<n or n<1)');
  135. end;
  136. for i := m + k - 1 downto k do
  137. freemem(p[i], n * sizeof(ArbFloat));
  138. writeln(' --------------------------------------------------');
  139. end;
  140. end.