home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / numana01.zip / DEF / VEC.DEF < prev   
Text File  |  1996-08-15  |  3KB  |  81 lines

  1. DEFINITION MODULE Vec;
  2.  
  3.         (********************************************************)
  4.         (*                                                      *)
  5.         (*                 Vector arithmetic                    *)
  6.         (*                                                      *)
  7.         (*  Programmer:         P. Moylan                       *)
  8.         (*  Last edited:        15 August 1995                  *)
  9.         (*  Status:             OK                              *)
  10.         (*                                                      *)
  11.         (*      Portability problem: I've had to use an XDS     *)
  12.         (*      language extension (open arrays) here; I        *)
  13.         (*      haven't yet figured out how to do the job       *)
  14.         (*      in ISO standard Modula-2.                       *)
  15.         (*                                                      *)
  16.         (********************************************************)
  17.  
  18. <* m2extensions + *>
  19.  
  20. TYPE
  21.     EltType = LONGREAL;
  22.     VectorPtr = POINTER TO ARRAY OF EltType;
  23.  
  24. (************************************************************************)
  25. (*                   CREATING AND DESTROYING VECTORS                    *)
  26. (************************************************************************)
  27.  
  28. PROCEDURE NewVector (N: CARDINAL): VectorPtr;
  29.  
  30.     (* Creates a vector of N elements. *)
  31.  
  32. PROCEDURE DisposeVector (VAR (*INOUT*) V: VectorPtr;  N: CARDINAL);
  33.  
  34.     (* Deallocates a vector of N elements. *)
  35.  
  36. (************************************************************************)
  37. (*                          ASSIGNMENTS                                 *)
  38. (************************************************************************)
  39.  
  40. PROCEDURE Copy (A: ARRAY OF EltType;  N: CARDINAL;
  41.                          VAR (*OUT*) B: ARRAY OF EltType);
  42.  
  43.     (* Copies an N-element vector A to B. *)
  44.  
  45. (************************************************************************)
  46. (*                          VECTOR ARITHMETIC                           *)
  47. (************************************************************************)
  48.  
  49. PROCEDURE Add (A, B: ARRAY OF EltType;  elts: CARDINAL;
  50.                       VAR (*OUT*) C: ARRAY OF EltType);
  51.  
  52.     (* Computes C := A + B.  All vectors have elts elements. *)
  53.  
  54. PROCEDURE Sub (A, B: ARRAY OF EltType;  elts: CARDINAL;
  55.                       VAR (*OUT*) C: ARRAY OF EltType);
  56.  
  57.     (* Computes C := A - B.  All vectors have elts elements.  *)
  58.  
  59. PROCEDURE Mul (A: ARRAY OF ARRAY OF EltType;  B: ARRAY OF EltType;
  60.                       N1, N2: CARDINAL;
  61.                       VAR (*OUT*) C: ARRAY OF EltType);
  62.  
  63.     (* Computes C := A*B, where A is N1xN2 and B is N2x1. *)
  64.  
  65. PROCEDURE ScalarMul (A: EltType;  B: ARRAY OF EltType;  elts: CARDINAL;
  66.                                   VAR (*OUT*) C: ARRAY OF EltType);
  67.  
  68.     (* Computes C := A*B, where A is scalar and B has elts elements. *)
  69.  
  70. (************************************************************************)
  71. (*                          SCREEN OUTPUT                               *)
  72. (************************************************************************)
  73.  
  74. PROCEDURE Write (V: ARRAY OF EltType;  N: CARDINAL;  places: CARDINAL);
  75.  
  76.     (* Writes the N-element vector V to the screen, where each  *)
  77.     (* column occupies a field "places" characters wide.        *)
  78.  
  79. END Vec.
  80.  
  81.