File : lin.adb
package body Lin is
procedure SetZero(V: in out IVec) is
begin
for I in V'Range loop
V(I) := 0;
end loop;
end SetZero;
procedure SetZero(V: in out IntVec) is
begin
for I in V'Range loop
V(I) := 0;
end loop;
end SetZero;
procedure SetZero(A: in out IMat) is
begin
for I in A'Range(1) loop
for J in A'Range(2) loop
A(I,J) := 0;
end loop;
end loop;
end SetZero;
procedure SetOne(A: in out IMat) is
begin
for I in A'Range(1) loop
for J in A'Range(2) loop
A(I,J) := 0;
end loop;
A(I,I) := 1;
end loop;
end SetOne;
procedure SetZero(V: in out RVec) is
begin
for I in V'Range loop
V(I) := Zero;
end loop;
end SetZero;
procedure SetZero(A: in out RMat) is
begin
for I in A'Range(1) loop
for J in A'Range(2) loop
A(I,J) := Zero;
end loop;
end loop;
end SetZero;
procedure SetOne(A: in out RMat) is
begin
for I in A'Range(1) loop
for J in A'Range(2) loop
A(I,J) := Zero;
end loop;
A(I,I) := One;
end loop;
end SetOne;
procedure SetZero(A: in out QMat) is
begin
SetZero(A.P);
A.Q := 1;
end SetZero;
function QZero(Dim: in Positive) return QMat is
A: Qmat(Dim);
begin
SetZero(A.P);
A.Q := 1;
return A;
end QZero;
procedure SetOne(A: in out QMat) is
begin
SetOne(A.P);
A.Q := 1;
end SetOne;
function QOne(Dim: in Positive) return QMat is
A: Qmat(Dim);
begin
SetOne(A.P);
A.Q := 1;
return A;
end QOne;
procedure SetRow(I: in Positive; V: in IVec; A: in out QMat) is
begin
for J in V'Range loop
A.P(I,J) := V(J);
end loop;
end SetRow;
end Lin;