Artifact 124c1fdcbc3d2d61e2f7bab4f57f06181c00852e48153e8791b24dc8ea1808fe:
- Executable file
r37/packages/int/vect.red
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 2419) [annotate] [blame] [check-ins using] [more...]
- Executable file
r38/packages/int/vect.red
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 2419) [annotate] [blame] [check-ins using]
MODULE VECT; % Vector support routines. % Authors: Mary Ann Moore and Arthur C. Norman. % Modified by: James H. Davenport. EXPORTS MKUNIQUEVECT,MKVEC,MKVECF2Q,MKIDENM,COPYVEC,VECSORT,SWAP, NON!-NULL!-VEC,MKVECT2; SYMBOLIC PROCEDURE MKUNIQUEVECT V; BEGIN SCALAR U,N; N:=UPBV V; FOR I:=0:N DO BEGIN SCALAR UU; UU:=GETV(V,I); IF NOT (UU MEMBER U) THEN U:=UU.U END; RETURN MKVEC U END; SYMBOLIC PROCEDURE MKVEC(L); BEGIN SCALAR V,I; V:=MKVECT(ISUB1 LENGTH L); I:=0; WHILE L DO <<PUTV(V,I,CAR L); I:=IADD1 I; L:=CDR L>>; RETURN V END; SYMBOLIC PROCEDURE MKVECF2Q(L); BEGIN SCALAR V,I,LL; V:=MKVECT(ISUB1 LENGTH L); I:=0; WHILE L DO << LL:=CAR L; IF LL = 0 THEN LL:=NIL; PUTV(V,I,!*F2Q LL); I:=IADD1 I; L:=CDR L >>; RETURN V END; SYMBOLIC PROCEDURE MKIDENM N; BEGIN SCALAR ANS,U; SCALAR C0,C1; C0:=NIL ./ 1; C1:= 1 ./ 1; % constants. ANS:=MKVECT(N); FOR I:=0 STEP 1 UNTIL N DO << U:=MKVECT N; FOR J:=0 STEP 1 UNTIL N DO IF I IEQUAL J THEN PUTV(U,J,C1) ELSE PUTV(U,J,C0); PUTV(ANS,I,U) >>; RETURN ANS END; SYMBOLIC PROCEDURE COPYVEC(V,N); BEGIN SCALAR NEW; NEW:=MKVECT(N); FOR I:=0:N DO PUTV(NEW,I,GETV(V,I)); RETURN NEW END; SYMBOLIC PROCEDURE VECSORT(U,L); % Sorts vector v of numbers into decreasing order. % Performs same interchanges of all vectors in the list l. BEGIN SCALAR J,K,N,V,W; N:=UPBV U;% elements 0...n exist. % algorithm used is a bubble sort. FOR I:=1:N DO BEGIN V:=GETV(U,I); K:=I; LOOP: J:=K; K:=ISUB1 K; W:=GETV(U,K); IF V<=W THEN GOTO ORDERED; PUTV(U,K,V); PUTV(U,J,W); MAPC(L,FUNCTION (LAMBDA U;SWAP(U,J,K))); IF K>0 THEN GOTO LOOP; ORDERED: END; RETURN NIL END; SYMBOLIC PROCEDURE SWAP(U,J,K); IF NULL U THEN NIL ELSE BEGIN SCALAR V; %swaps elements i,j of vector u. V:=GETV(U,J); PUTV(U,J,GETV(U,K)); PUTV(U,K,V) END; SYMBOLIC PROCEDURE NON!-NULL!-VEC V; BEGIN SCALAR CNT; CNT := 0; FOR I:=0:UPBV V DO IF GETV(V,I) THEN CNT:=IADD1 CNT; RETURN CNT END; SYMBOLIC PROCEDURE MKVECT2(N,INITIAL); BEGIN SCALAR U; U:=MKVECT N; FOR I:=0:N DO PUTV(U,I,INITIAL); RETURN U END; ENDMODULE; END;