File : lin-ops.ads



package Lin.Ops is

  function "-"(U: Ivec) return Ivec;
  function "+"(U,V: Ivec) return Ivec;
  function "-"(U,V: Ivec) return Ivec;

  function "-"(U: Rvec) return Rvec;
  function "+"(U,V: RVec) return RVec;
  function "-"(U,V: RVec) return RVec;
  function "*"(U,V: RVec) return Rep;

  function "-"(A: RMat) return RMat;
  function "+"(A,B: RMat) return RMat;
  function "-"(A,B: RMat) return RMat;
  function "*"(A: RMat; U: RVec) return RVec;
  function "*"(A,B: RMat) return RMat;

  function "-"(A: QMat) return Qmat;
  function "*"(A: Qmat; U: IVec) return IVec;
  function "*"(A,B: QMat) return QMat;
  function Sqr(A: QMat) return QMat;
  procedure Divide(A: in out QMat; N: in Positive);

  procedure Det(N: in Integer; A: in out RMat; R: out Rep);

private

  function Gcd(P: Positive; Q: Natural) return Positive;
  procedure Cleanup(A: in out Qmat);
  procedure dgefa(n: in Integer; a: in out RMat; ipvt: out IVec); -- translated from linpack

end Lin.Ops;