sleglslt.pas 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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.