FoxArrayBase.SymW 80 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120
  1. MODULE FoxArrayBase;
  2. IMPORT SYSTEM, KernelLog, Heaps, Math, MathL, ComplexNumbers;
  3. CONST
  4. debug = FALSE;
  5. statistics = FALSE;
  6. conservative = TRUE;
  7. ArrDataArrayOffset = ADDRESS(16);
  8. AddressSize = SIZEOF(ADDRESS);
  9. MathPtrOffset = (0 * AddressSize);
  10. MathAdrOffset = (1 * AddressSize);
  11. MathFlagsOffset = (2 * AddressSize);
  12. MathDimOffset = (3 * AddressSize);
  13. MathElementSizeOffset = (4 * AddressSize);
  14. MathLenOffset = (5 * AddressSize);
  15. MathIncrOffset = (6 * AddressSize);
  16. GeometryMismatch = 400;
  17. DimensionMismatch = 401;
  18. AllocationForbidden = 402;
  19. TensorFlag = 0;
  20. RangeFlag = 1;
  21. TemporaryFlag = 2;
  22. down = 0;
  23. up = 1;
  24. SmallMatrixFlag = 3;
  25. SmallVectorFlag = 3;
  26. Size2Flag = 4;
  27. Size3Flag = 5;
  28. Size4Flag = 6;
  29. Size5Flag = 7;
  30. Size6Flag = 8;
  31. Size7Flag = 9;
  32. Size8Flag = 10;
  33. Mat2x2 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, Size2Flag});
  34. Mat3x3 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, Size3Flag});
  35. Mat4x4 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, Size4Flag});
  36. Mat5x5 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, Size5Flag});
  37. Mat6x6 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, Size6Flag});
  38. Mat7x7 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, Size7Flag});
  39. Mat8x8 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, Size8Flag});
  40. Vec2 = SYSTEM.VAL(LONGINT, {SmallVectorFlag, Size2Flag});
  41. Vec3 = SYSTEM.VAL(LONGINT, {SmallVectorFlag, Size3Flag});
  42. Vec4 = SYSTEM.VAL(LONGINT, {SmallVectorFlag, Size4Flag});
  43. Vec5 = SYSTEM.VAL(LONGINT, {SmallVectorFlag, Size5Flag});
  44. Vec6 = SYSTEM.VAL(LONGINT, {SmallVectorFlag, Size6Flag});
  45. Vec7 = SYSTEM.VAL(LONGINT, {SmallVectorFlag, Size7Flag});
  46. Vec8 = SYSTEM.VAL(LONGINT, {SmallVectorFlag, Size8Flag});
  47. MatVec2x2 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, SmallVectorFlag, Size2Flag});
  48. MatVec3x3 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, SmallVectorFlag, Size3Flag});
  49. MatVec4x4 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, SmallVectorFlag, Size4Flag});
  50. MatVec5x5 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, SmallVectorFlag, Size5Flag});
  51. MatVec6x6 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, SmallVectorFlag, Size6Flag});
  52. MatVec7x7 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, SmallVectorFlag, Size7Flag});
  53. MatVec8x8 = SYSTEM.VAL(LONGINT, {SmallMatrixFlag, SmallVectorFlag, Size8Flag});
  54. SmallArrayMask = {SmallMatrixFlag, SmallVectorFlag, Size2Flag, Size3Flag, Size4Flag, Size5Flag, Size6Flag, Size7Flag, Size8Flag};
  55. TYPE
  56. GenericUnaryAALoopS = PROCEDURE (ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: SHORTINT):SHORTINT);
  57. GenericUnaryAALoopI = PROCEDURE (ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: INTEGER):INTEGER);
  58. GenericUnaryAALoopL = PROCEDURE (ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: LONGINT):LONGINT);
  59. GenericUnaryAALoopH = PROCEDURE (ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: HUGEINT):HUGEINT);
  60. GenericUnaryAALoopR = PROCEDURE (ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: REAL):REAL);
  61. GenericUnaryAALoopX = PROCEDURE (ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: LONGREAL):LONGREAL);
  62. GenericUnaryAALoopZ = PROCEDURE (ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: COMPLEX):COMPLEX);
  63. GenericUnaryAALoopLZ = PROCEDURE (ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: LONGCOMPLEX):LONGCOMPLEX);
  64. UnaryAALoop = PROCEDURE (ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  65. UnaryASLoop = PROCEDURE (ladr, dadr: ADDRESS; linc, len: SIZE);
  66. UnarySALoop = PROCEDURE (ladr, dadr: ADDRESS; dinc, len: SIZE);
  67. BinaryAAALoop = PROCEDURE (ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  68. BinaryASALoop = PROCEDURE (ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  69. BinaryAASLoop = PROCEDURE (ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  70. BinaryAABLoop = PROCEDURE (ladr, radr: ADDRESS; linc, rinc, len: SIZE):BOOLEAN;
  71. BinaryASBLoop = PROCEDURE (ladr, radr: ADDRESS; linc, len: SIZE):BOOLEAN;
  72. FastMatMul* = PROCEDURE (matrixA, matrixB, matrixC, IncA, StrideA, IncB, StrideB, IncC, StrideC, RowsA, ColsA, RowsB, ColsB: LONGINT):BOOLEAN;
  73. TransposeP* = PROCEDURE (ladr, dadr, lstride, linc, dstride, dinc, rows, cols: LONGINT);
  74. LenInc = RECORD
  75. len: SIZE;
  76. inc: SIZE;
  77. END;
  78. ArrayDescriptor* = RECORD
  79. ptr*: ANY;
  80. adr*: ADDRESS;
  81. flags*: SET;
  82. dim*: SIZE;
  83. elementSize*: SIZE;
  84. END;
  85. Tensor = POINTER TO ArrayDescriptor;
  86. UnsafeArray* = POINTER {UNSAFE} TO RECORD (ArrayDescriptor)
  87. lens*: ARRAY 8 OF LenInc;
  88. END;
  89. A0 = RECORD (ArrayDescriptor)
  90. END;
  91. A1 = RECORD (ArrayDescriptor)
  92. lens: ARRAY 1 OF LenInc;
  93. END;
  94. A2 = RECORD (ArrayDescriptor)
  95. lens: ARRAY 2 OF LenInc;
  96. END;
  97. A3 = RECORD (ArrayDescriptor)
  98. lens: ARRAY 3 OF LenInc;
  99. END;
  100. A4 = RECORD (ArrayDescriptor)
  101. lens: ARRAY 4 OF LenInc;
  102. END;
  103. A5 = RECORD (ArrayDescriptor)
  104. lens: ARRAY 5 OF LenInc;
  105. END;
  106. A6 = RECORD (ArrayDescriptor)
  107. lens: ARRAY 6 OF LenInc;
  108. END;
  109. A7 = RECORD (ArrayDescriptor)
  110. lens: ARRAY 7 OF LenInc;
  111. END;
  112. A8 = RECORD (ArrayDescriptor)
  113. lens: ARRAY 8 OF LenInc;
  114. END;
  115. T0 = POINTER TO A0;
  116. T1 = POINTER TO A1;
  117. T2 = POINTER TO A2;
  118. T3 = POINTER TO A3;
  119. T4 = POINTER TO A4;
  120. T5 = POINTER TO A5;
  121. T6 = POINTER TO A6;
  122. T7 = POINTER TO A7;
  123. T8 = POINTER TO A8;
  124. SmallMatMul* = PROCEDURE (dadr, ladr, radr: LONGINT);
  125. LongintPtr = POINTER {UNSAFE} TO RECORD
  126. val: LONGINT;
  127. END;
  128. VAR
  129. temporary*: T0;
  130. alloc*: LONGINT;
  131. allocTemp*: LONGINT;
  132. loopSPAXAX*, loopSPARAR*: BinaryAASLoop;
  133. loopSPAZAZ, loopSPALZALZ: BinaryAASLoop;
  134. loopAddAXAX*, loopAddARAR*, loopAddAZAZ*, loopAddALZALZ*: BinaryAAALoop;
  135. loopMatMulAXAX*, loopMatMulARAR*: BinaryAASLoop;
  136. loopMatMulIncAXAX*, loopMatMulIncARAR*: BinaryAASLoop;
  137. loopMulAXSX*, loopMulARSR*, loopMulAZSZ*, loopMulALZSLZ*: BinaryASALoop;
  138. loopIncMulAXSX*, loopIncMulARSR*: BinaryASALoop;
  139. matMulX*, matMulR*: FastMatMul;
  140. matMulIncX*, matMulIncR*: FastMatMul;
  141. transpose4*: TransposeP;
  142. transpose8*: TransposeP;
  143. matMulR2x2*: SmallMatMul;
  144. matMulR3x3*: SmallMatMul;
  145. matMulR4x4*: SmallMatMul;
  146. matVecMulR2x2*: SmallMatMul;
  147. matVecMulR3x3*: SmallMatMul;
  148. matVecMulR4x4*: SmallMatMul;
  149. matMulLR2x2*: SmallMatMul;
  150. matMulLR3x3*: SmallMatMul;
  151. matMulLR4x4*: SmallMatMul;
  152. matVecMulLR2x2*: SmallMatMul;
  153. matVecMulLR3x3*: SmallMatMul;
  154. matVecMulLR4x4*: SmallMatMul;
  155. PROCEDURE ^ SetDefaults*;
  156. PROCEDURE ^ Err(CONST s: ARRAY OF CHAR);
  157. PROCEDURE ^ GetIncr(base: UnsafeArray; dim: SIZE): SIZE;
  158. PROCEDURE ^ PutInc(base: UnsafeArray; dim, val: SIZE);
  159. PROCEDURE ^ GetLen(base: UnsafeArray; dim: SIZE): LONGINT;
  160. PROCEDURE ^ PutLen(base: UnsafeArray; dim, val: SIZE);
  161. PROCEDURE ^ GetAdr(base: UnsafeArray): ADDRESS;
  162. PROCEDURE ^ PutAdr(base: UnsafeArray; value: ADDRESS);
  163. PROCEDURE ^ Align(value: ADDRESS): ADDRESS;
  164. PROCEDURE ^ GetPtr(base: UnsafeArray): ANY;
  165. PROCEDURE ^ PutPtr(base: UnsafeArray; value: ANY);
  166. PROCEDURE ^ GetSize(base: UnsafeArray): LONGINT;
  167. PROCEDURE ^ PutSize(base: UnsafeArray; val: SIZE);
  168. PROCEDURE ^ GetDim(base: UnsafeArray): SIZE;
  169. PROCEDURE ^ GetFlags(base: UnsafeArray): SET;
  170. PROCEDURE ^ PutDim(base: UnsafeArray; dim: SIZE);
  171. PROCEDURE ^ PutFlags(base: UnsafeArray; flags: SET);
  172. PROCEDURE ^ Report(CONST name: ARRAY OF CHAR; s: ADDRESS);
  173. PROCEDURE ^ GetArrayDesc(dim: LONGINT): Tensor;
  174. PROCEDURE ^ EnsureArrayDesc*(dim: SIZE; VAR d: Tensor);
  175. PROCEDURE ^ Halt(code: LONGINT; left, right, dest: LONGINT);
  176. PROCEDURE ^ FindPattern1(left, dim: ADDRESS; VAR d, len, linc: LONGINT);
  177. PROCEDURE ^ FindPattern2(left, right: ADDRESS; dim: LONGINT; VAR d, len, linc, ri: LONGINT);
  178. PROCEDURE ^ FindPattern3(left, right, dest: ADDRESS; dim: LONGINT; VAR d, len, linc, ri, di: LONGINT);
  179. PROCEDURE ^ Reverse(src: ADDRESS; dim: LONGINT);
  180. PROCEDURE ^ CopyUpCompatible(dest, src: ADDRESS; VAR modes: SET);
  181. PROCEDURE ^ AllocateTemp(VAR dest: ADDRESS; src: ADDRESS; Size: LONGINT): ANY;
  182. PROCEDURE ^ ApplyGenericUnaryAAOpS(d, l: ADDRESS; elementSize: LONGINT; Loop: GenericUnaryAALoopS; op: PROCEDURE (x: SHORTINT):SHORTINT);
  183. PROCEDURE ^ ApplyGenericUnaryAAOpI(d, l: ADDRESS; elementSize: LONGINT; Loop: GenericUnaryAALoopI; op: PROCEDURE (x: INTEGER):INTEGER);
  184. PROCEDURE ^ ApplyGenericUnaryAAOpL(d, l: ADDRESS; elementSize: LONGINT; Loop: GenericUnaryAALoopL; op: PROCEDURE (x: LONGINT):LONGINT);
  185. PROCEDURE ^ ApplyGenericUnaryAAOpH(d, l: ADDRESS; elementSize: LONGINT; Loop: GenericUnaryAALoopH; op: PROCEDURE (x: HUGEINT):HUGEINT);
  186. PROCEDURE ^ ApplyGenericUnaryAAOpR(d, l: ADDRESS; elementSize: LONGINT; Loop: GenericUnaryAALoopR; op: PROCEDURE (x: REAL):REAL);
  187. PROCEDURE ^ ApplyGenericUnaryAAOpX(d, l: ADDRESS; elementSize: LONGINT; Loop: GenericUnaryAALoopX; op: PROCEDURE (x: LONGREAL):LONGREAL);
  188. PROCEDURE ^ ApplyGenericUnaryAAOpZ(d, l: ADDRESS; elementSize: LONGINT; Loop: GenericUnaryAALoopZ; op: PROCEDURE (x: COMPLEX):COMPLEX);
  189. PROCEDURE ^ ApplyGenericUnaryAAOpLZ(d, l: ADDRESS; elementSize: LONGINT; Loop: GenericUnaryAALoopLZ; op: PROCEDURE (x: LONGCOMPLEX):LONGCOMPLEX);
  190. PROCEDURE ^ ApplyUnaryAAOp(d, l: ADDRESS; elementSize: LONGINT; Loop: UnaryAALoop);
  191. PROCEDURE ^ ApplyUnaryASOp(dest, l: ADDRESS; Loop: UnaryASLoop);
  192. PROCEDURE ^ ApplyUnarySAOp(d, right: ADDRESS; Loop: UnarySALoop);
  193. PROCEDURE ^ ApplyBinaryAAAOp(d, l, r: ADDRESS; elementSize: LONGINT; Loop: BinaryAAALoop);
  194. PROCEDURE ^ ApplyBinaryASAOp(d, l, right: ADDRESS; elementSize: LONGINT; Loop: BinaryASALoop);
  195. PROCEDURE ^ ApplyBinaryAASOp(dest, l, r: ADDRESS; Loop: BinaryAASLoop);
  196. PROCEDURE ^ ApplyBinaryAABOp(l, r: ADDRESS; Loop: BinaryAABLoop; geometryMismatchDefault: BOOLEAN): BOOLEAN;
  197. PROCEDURE ^ ApplyBinaryASBOp(l, right: ADDRESS; Loop: BinaryASBLoop): BOOLEAN;
  198. PROCEDURE ^ Copy4(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  199. PROCEDURE ^ Copy2(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  200. PROCEDURE ^ Copy1(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  201. PROCEDURE ^ Copy8(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  202. PROCEDURE {FingerPrint(1857348743)} - MoveB*(srcadr, destadr, len: LONGINT);
  203. CODE {SYSTEM.i386}
  204. MOV ECX, [ESP] ; len
  205. MOV EDI, [ESP+4] ; destadr
  206. MOV ESI, [ESP+8] ; srcadr
  207. CMP ESI, EDI
  208. JAE moveup ; src adr greater then dest adr, no problem with moving up
  209. MOV EAX, ESI
  210. ADD EAX, ECX
  211. CMP EAX, EDI
  212. JBE moveup ; no overlap, no problem, move up
  213. MOV ESI, EAX
  214. ADD EDI, ECX
  215. DEC ESI
  216. DEC EDI
  217. STD ; move down since overlap occured
  218. REP
  219. MOVSB
  220. JMP done
  221. moveup:
  222. CLD
  223. MOV BL, CL
  224. SHR ECX, 2
  225. AND BL, 00000003H ; rest to move after 4 byte move
  226. REP
  227. MOVSD ; move 4 bytes each step
  228. MOV CL, BL
  229. REP
  230. MOVSB ; move rest in one byte steps
  231. done:
  232. ADD ESP, 12 ; adjust stack pointer(inline procedure!)
  233. END MoveB;
  234. PROCEDURE ^ CopyContent(dest, src: ADDRESS; elementSize: SIZE);
  235. PROCEDURE ^ AllocateSame(VAR dest: ADDRESS; src: ADDRESS; elementsize: LONGINT): ANY;
  236. PROCEDURE ^ TempDescCopy(src: ADDRESS): ANY;
  237. PROCEDURE ^ CopyArraySelf*(dest, src: ADDRESS; elementsize: LONGINT);
  238. PROCEDURE ^ CopyArray*(dest: ADDRESS; src: ADDRESS; elementsize: SIZE);
  239. PROCEDURE ^ CopyTensorSelf*(VAR dest: ADDRESS; src: ADDRESS; elementsize: SIZE);
  240. PROCEDURE ^ CopyTensor*(VAR dest: ADDRESS; src: ADDRESS; elementsize: SIZE);
  241. PROCEDURE ^ ShallowCopy*(VAR dest: ADDRESS; src: ADDRESS);
  242. PROCEDURE ^ DescriptorCopy(src, dest: LONGINT);
  243. PROCEDURE ^ ZeroCopy*(CONST src: ARRAY [?] ; VAR dest: ARRAY [?] );
  244. OPERATOR ^ "ALIAS"-(CONST src: ARRAY [?] ): ARRAY [?] ;
  245. PROCEDURE ^ SameShape(l, r: ADDRESS): BOOLEAN;
  246. PROCEDURE ^ ConvertASAILoop(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  247. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF SHORTINT): ARRAY [?] OF INTEGER;
  248. OPERATOR ^ "LONG"-(CONST src: ARRAY [?] OF SHORTINT): ARRAY [?] OF INTEGER;
  249. PROCEDURE ^ ConvertLoopSL(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  250. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF SHORTINT): ARRAY [?] OF LONGINT;
  251. PROCEDURE ^ ConvertLoopSR(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  252. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF SHORTINT): ARRAY [?] OF REAL;
  253. PROCEDURE ^ ConvertLoopSX(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  254. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF SHORTINT): ARRAY [?] OF LONGREAL;
  255. PROCEDURE ^ ConvertLoopIS(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  256. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF INTEGER): ARRAY [?] OF SHORTINT;
  257. OPERATOR ^ "SHORT"-(CONST src: ARRAY [?] OF INTEGER): ARRAY [?] OF SHORTINT;
  258. PROCEDURE ^ ConvertLoopIL(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  259. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF INTEGER): ARRAY [?] OF LONGINT;
  260. OPERATOR ^ "LONG"-(CONST src: ARRAY [?] OF INTEGER): ARRAY [?] OF LONGINT;
  261. PROCEDURE ^ ConvertLoopIR(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  262. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF INTEGER): ARRAY [?] OF REAL;
  263. PROCEDURE ^ ConvertLoopIX(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  264. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF INTEGER): ARRAY [?] OF LONGREAL;
  265. PROCEDURE ^ ConvertLoopLI(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  266. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF LONGINT): ARRAY [?] OF INTEGER;
  267. OPERATOR ^ "SHORT"-(CONST src: ARRAY [?] OF LONGINT): ARRAY [?] OF INTEGER;
  268. PROCEDURE ^ ConvertLoopLR(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  269. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF LONGINT): ARRAY [?] OF REAL;
  270. PROCEDURE ^ ConvertLoopLX(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  271. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGREAL;
  272. PROCEDURE ^ ConvertLoopRL(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  273. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF REAL): ARRAY [?] OF LONGINT;
  274. OPERATOR ^ "ENTIER"-(CONST src: ARRAY [?] OF REAL): ARRAY [?] OF LONGINT;
  275. PROCEDURE ^ ConvertLoopRX(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  276. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF REAL): ARRAY [?] OF LONGREAL;
  277. OPERATOR ^ "LONG"-(CONST src: ARRAY [?] OF REAL): ARRAY [?] OF LONGREAL;
  278. PROCEDURE ^ ConvertLoopXR(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  279. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF LONGREAL): ARRAY [?] OF REAL;
  280. OPERATOR ^ "SHORT"-(CONST src: ARRAY [?] OF LONGREAL): ARRAY [?] OF REAL;
  281. PROCEDURE ^ ConvertLoopXL(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  282. OPERATOR ^ "@Convert"-(CONST src: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGINT;
  283. OPERATOR ^ "ENTIER"-(CONST src: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGINT;
  284. PROCEDURE ^ NotLoopAB(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  285. OPERATOR ^ "~"-(CONST src: ARRAY [?] OF BOOLEAN): ARRAY [?] OF BOOLEAN;
  286. PROCEDURE ^ GenericLoopS(ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: SHORTINT):SHORTINT);
  287. PROCEDURE ^ GenericLoopI(ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: INTEGER):INTEGER);
  288. PROCEDURE ^ GenericLoopL(ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: LONGINT):LONGINT);
  289. PROCEDURE ^ GenericLoopH(ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: HUGEINT):HUGEINT);
  290. PROCEDURE ^ GenericLoopR(ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: REAL):REAL);
  291. PROCEDURE ^ GenericLoopX(ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: LONGREAL):LONGREAL);
  292. PROCEDURE ^ GenericLoopZ(ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: COMPLEX):COMPLEX);
  293. PROCEDURE ^ GenericLoopLZ(ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE (x: LONGCOMPLEX):LONGCOMPLEX);
  294. PROCEDURE ^ MinusLoopS(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  295. OPERATOR ^ "-"-(CONST src: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  296. PROCEDURE ^ MinusLoopI(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  297. OPERATOR ^ "-"-(CONST src: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  298. PROCEDURE ^ MinusLoopL(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  299. OPERATOR ^ "-"-(CONST src: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  300. PROCEDURE ^ MinusLoopR(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  301. OPERATOR ^ "-"-(CONST src: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  302. PROCEDURE ^ MinusLoopX(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  303. OPERATOR ^ "-"-(CONST src: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  304. PROCEDURE ^ AddASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  305. OPERATOR ^ "+"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  306. PROCEDURE ^ AddAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  307. OPERATOR ^ "+"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  308. PROCEDURE ^ AddALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  309. OPERATOR ^ "+"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  310. PROCEDURE ^ AddARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  311. OPERATOR ^ "+"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  312. PROCEDURE ^ AddAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  313. OPERATOR ^ "+"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  314. PROCEDURE ^ AddAZAZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  315. OPERATOR ^ "+"-(CONST left, right: ARRAY [?] OF COMPLEX): ARRAY [?] OF COMPLEX;
  316. PROCEDURE ^ AddALZALZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  317. OPERATOR ^ "+"-(CONST left, right: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  318. PROCEDURE ^ AddASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  319. OPERATOR ^ "+"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF SHORTINT;
  320. OPERATOR ^ "+"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  321. PROCEDURE ^ AddAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  322. OPERATOR ^ "+"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF INTEGER;
  323. OPERATOR ^ "+"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  324. PROCEDURE ^ AddALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  325. OPERATOR ^ "+"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF LONGINT;
  326. OPERATOR ^ "+"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  327. PROCEDURE ^ AddARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  328. OPERATOR ^ "+"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF REAL;
  329. OPERATOR ^ "+"-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  330. PROCEDURE ^ AddAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  331. OPERATOR ^ "+"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF LONGREAL;
  332. OPERATOR ^ "+"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  333. PROCEDURE ^ AddAZSZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  334. OPERATOR ^ "+"-(CONST left: ARRAY [?] OF COMPLEX; right: COMPLEX): ARRAY [?] OF COMPLEX;
  335. OPERATOR ^ "+"-(left: COMPLEX; CONST right: ARRAY [?] OF COMPLEX): ARRAY [?] OF COMPLEX;
  336. PROCEDURE ^ AddALZSLZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  337. OPERATOR ^ "+"-(CONST left: ARRAY [?] OF LONGCOMPLEX; right: LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  338. OPERATOR ^ "+"-(left: LONGCOMPLEX; CONST right: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  339. PROCEDURE ^ SubASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  340. OPERATOR ^ "-"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  341. PROCEDURE ^ SubAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  342. OPERATOR ^ "-"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  343. PROCEDURE ^ SubALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  344. OPERATOR ^ "-"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  345. PROCEDURE ^ SubARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  346. OPERATOR ^ "-"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  347. PROCEDURE ^ SubAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  348. OPERATOR ^ "-"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  349. PROCEDURE ^ SubAZAZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  350. OPERATOR ^ "-"-(CONST left, right: ARRAY [?] OF COMPLEX): ARRAY [?] OF COMPLEX;
  351. PROCEDURE ^ SubALZALZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  352. OPERATOR ^ "-"-(CONST left, right: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  353. OPERATOR ^ "-"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF SHORTINT;
  354. OPERATOR ^ "-"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF INTEGER;
  355. OPERATOR ^ "-"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF LONGINT;
  356. OPERATOR ^ "-"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF REAL;
  357. OPERATOR ^ "-"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF LONGREAL;
  358. OPERATOR ^ "-"-(CONST left: ARRAY [?] OF COMPLEX; right: COMPLEX): ARRAY [?] OF COMPLEX;
  359. OPERATOR ^ "-"-(CONST left: ARRAY [?] OF LONGCOMPLEX; right: LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  360. PROCEDURE ^ SubSSASLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  361. OPERATOR ^ "-"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  362. PROCEDURE ^ SubSIAILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  363. OPERATOR ^ "-"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  364. PROCEDURE ^ SubSLALLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  365. OPERATOR ^ "-"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  366. PROCEDURE ^ SubSRARLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  367. OPERATOR ^ "-"-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  368. PROCEDURE ^ SubSXAXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  369. OPERATOR ^ "-"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  370. PROCEDURE ^ SubSZAZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  371. OPERATOR ^ "-"-(left: COMPLEX; CONST right: ARRAY [?] OF COMPLEX): ARRAY [?] OF COMPLEX;
  372. PROCEDURE ^ SubSLZALZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  373. OPERATOR ^ "-"-(left: LONGCOMPLEX; CONST right: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  374. PROCEDURE ^ EMulASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  375. OPERATOR ^ ".*"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  376. PROCEDURE ^ EMulAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  377. OPERATOR ^ ".*"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  378. PROCEDURE ^ EMulALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  379. OPERATOR ^ ".*"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  380. PROCEDURE ^ EMulARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  381. OPERATOR ^ ".*"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  382. PROCEDURE ^ EMulAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  383. OPERATOR ^ ".*"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  384. PROCEDURE ^ EMulAZAZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  385. OPERATOR ^ ".*"-(CONST left, right: ARRAY [?] OF COMPLEX): ARRAY [?] OF COMPLEX;
  386. PROCEDURE ^ EMulALZALZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  387. OPERATOR ^ ".*"-(CONST left, right: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  388. PROCEDURE ^ EMulIncASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  389. OPERATOR ^ ".*+"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  390. PROCEDURE ^ EMulIncAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  391. OPERATOR ^ ".*+"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  392. PROCEDURE ^ EMulIncALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  393. OPERATOR ^ ".*+"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  394. PROCEDURE ^ EMulIncARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  395. OPERATOR ^ ".*+"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  396. PROCEDURE ^ EMulIncAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  397. OPERATOR ^ ".*+"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  398. PROCEDURE ^ MulASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  399. OPERATOR ^ "*"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF SHORTINT;
  400. OPERATOR ^ "*"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  401. PROCEDURE ^ MulAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  402. OPERATOR ^ "*"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF INTEGER;
  403. OPERATOR ^ "*"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  404. PROCEDURE ^ MulALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  405. OPERATOR ^ "*"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF LONGINT;
  406. OPERATOR ^ "*"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  407. PROCEDURE ^ MulARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  408. OPERATOR ^ "*"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF REAL;
  409. OPERATOR ^ "*"-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  410. PROCEDURE ^ MulAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  411. OPERATOR ^ "*"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF LONGREAL;
  412. OPERATOR ^ "*"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  413. PROCEDURE ^ MulAZSZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  414. OPERATOR ^ "*"-(CONST left: ARRAY [?] OF COMPLEX; right: COMPLEX): ARRAY [?] OF COMPLEX;
  415. OPERATOR ^ "*"-(left: COMPLEX; CONST right: ARRAY [?] OF COMPLEX): ARRAY [?] OF COMPLEX;
  416. PROCEDURE ^ MulALZSLZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  417. OPERATOR ^ "*"-(CONST left: ARRAY [?] OF LONGCOMPLEX; right: LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  418. OPERATOR ^ "*"-(left: LONGCOMPLEX; CONST right: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  419. PROCEDURE ^ IncMulASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  420. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF SHORTINT;
  421. OPERATOR ^ "INCMUL"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  422. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF SHORTINT;
  423. OPERATOR ^ "DECMUL"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  424. PROCEDURE ^ IncMulAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  425. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF INTEGER;
  426. OPERATOR ^ "INCMUL"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  427. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF INTEGER;
  428. OPERATOR ^ "DECMUL"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  429. PROCEDURE ^ IncMulALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  430. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF LONGINT;
  431. OPERATOR ^ "INCMUL"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  432. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF LONGINT;
  433. OPERATOR ^ "DECMUL"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  434. PROCEDURE ^ IncMulARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  435. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF REAL;
  436. OPERATOR ^ "INCMUL"-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  437. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF REAL;
  438. OPERATOR ^ "DECMUL"-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  439. PROCEDURE ^ IncMulAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  440. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF LONGREAL;
  441. OPERATOR ^ "INCMUL"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  442. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF LONGREAL;
  443. OPERATOR ^ "DECMUL"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  444. PROCEDURE ^ EDivideASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  445. OPERATOR ^ "./"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF REAL;
  446. PROCEDURE ^ EDivideAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  447. OPERATOR ^ "./"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF REAL;
  448. PROCEDURE ^ EDivideALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  449. OPERATOR ^ "./"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF REAL;
  450. PROCEDURE ^ EDivideARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  451. OPERATOR ^ "./"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  452. PROCEDURE ^ EDivideAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  453. OPERATOR ^ "./"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  454. PROCEDURE ^ EDivideAZAZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  455. OPERATOR ^ "./"-(CONST left, right: ARRAY [?] OF COMPLEX): ARRAY [?] OF COMPLEX;
  456. PROCEDURE ^ EDivideALZALZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  457. OPERATOR ^ "./"-(CONST left, right: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  458. PROCEDURE ^ DivideASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  459. OPERATOR ^ "/"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF REAL;
  460. PROCEDURE ^ DivideSSASLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  461. OPERATOR ^ "/"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF REAL;
  462. PROCEDURE ^ DivideAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  463. OPERATOR ^ "/"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF REAL;
  464. PROCEDURE ^ DivideSIAILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  465. OPERATOR ^ "/"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF REAL;
  466. PROCEDURE ^ DivideALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  467. OPERATOR ^ "/"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF REAL;
  468. PROCEDURE ^ DivideSLALLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  469. OPERATOR ^ "/"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF REAL;
  470. PROCEDURE ^ DivideARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  471. OPERATOR ^ "/"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF REAL;
  472. PROCEDURE ^ DivideSRARLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  473. OPERATOR ^ "/"-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  474. PROCEDURE ^ DivideAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  475. OPERATOR ^ "/"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF LONGREAL;
  476. PROCEDURE ^ DivideSXAXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  477. OPERATOR ^ "/"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  478. PROCEDURE ^ DivideAZSZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  479. OPERATOR ^ "/"-(CONST left: ARRAY [?] OF COMPLEX; right: COMPLEX): ARRAY [?] OF COMPLEX;
  480. PROCEDURE ^ DivideSZAZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  481. OPERATOR ^ "/"-(left: COMPLEX; CONST right: ARRAY [?] OF COMPLEX): ARRAY [?] OF COMPLEX;
  482. PROCEDURE ^ DivideALZSLZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  483. OPERATOR ^ "/"-(CONST left: ARRAY [?] OF LONGCOMPLEX; right: LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  484. PROCEDURE ^ DivideSLZALZLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  485. OPERATOR ^ "/"-(left: LONGCOMPLEX; CONST right: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  486. PROCEDURE ^ EDivASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  487. OPERATOR ^ "DIV"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  488. PROCEDURE ^ EDivAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  489. OPERATOR ^ "DIV"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  490. PROCEDURE ^ EDivALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  491. OPERATOR ^ "DIV"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  492. PROCEDURE ^ DivASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  493. OPERATOR ^ "DIV"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF SHORTINT;
  494. PROCEDURE ^ DivSSASLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  495. OPERATOR ^ "DIV"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  496. PROCEDURE ^ DivAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  497. OPERATOR ^ "DIV"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF INTEGER;
  498. PROCEDURE ^ DivSIAILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  499. OPERATOR ^ "DIV"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  500. PROCEDURE ^ DivALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  501. OPERATOR ^ "DIV"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF LONGINT;
  502. PROCEDURE ^ DivSLALLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  503. OPERATOR ^ "DIV"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  504. PROCEDURE ^ EModASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  505. OPERATOR ^ "MOD"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  506. PROCEDURE ^ EModAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  507. OPERATOR ^ "MOD"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  508. PROCEDURE ^ EModALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  509. OPERATOR ^ "MOD"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  510. PROCEDURE ^ ModASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  511. OPERATOR ^ "MOD"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF SHORTINT;
  512. PROCEDURE ^ ModSSASLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  513. OPERATOR ^ "MOD"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  514. PROCEDURE ^ ModAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  515. OPERATOR ^ "MOD"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF INTEGER;
  516. PROCEDURE ^ ModSIAILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  517. OPERATOR ^ "MOD"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  518. PROCEDURE ^ ModALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  519. OPERATOR ^ "MOD"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF LONGINT;
  520. PROCEDURE ^ ModSLALLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  521. OPERATOR ^ "MOD"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  522. PROCEDURE ^ SPASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  523. OPERATOR ^ "+*"-(CONST left, right: ARRAY [?] OF SHORTINT): LONGINT;
  524. PROCEDURE ^ SPAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  525. OPERATOR ^ "+*"-(CONST left, right: ARRAY [?] OF INTEGER): LONGINT;
  526. PROCEDURE ^ SPALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  527. OPERATOR ^ "+*"-(CONST left, right: ARRAY [?] OF LONGINT): LONGINT;
  528. PROCEDURE ^ SPARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  529. OPERATOR ^ "+*"-(CONST left, right: ARRAY [?] OF REAL): REAL;
  530. PROCEDURE ^ SPAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  531. OPERATOR ^ "+*"-(CONST left, right: ARRAY [?] OF LONGREAL): LONGREAL;
  532. PROCEDURE ^ SPAZAZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  533. OPERATOR ^ "+*"-(CONST left, right: ARRAY [?] OF COMPLEX): COMPLEX;
  534. PROCEDURE ^ SPALZALZLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  535. OPERATOR ^ "+*"-(CONST left, right: ARRAY [?] OF LONGCOMPLEX): LONGCOMPLEX;
  536. PROCEDURE ^ EEqlABABLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  537. OPERATOR ^ ".="-(CONST left, right: ARRAY [?] OF BOOLEAN): ARRAY [?] OF BOOLEAN;
  538. PROCEDURE ^ EEqlASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  539. OPERATOR ^ ".="-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  540. PROCEDURE ^ EEqlAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  541. OPERATOR ^ ".="-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  542. PROCEDURE ^ EEqlALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  543. OPERATOR ^ ".="-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  544. PROCEDURE ^ EEqlARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  545. OPERATOR ^ ".="-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  546. PROCEDURE ^ EEqlAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  547. OPERATOR ^ ".="-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  548. PROCEDURE ^ EEqlABSBLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  549. OPERATOR ^ ".="-(CONST left: ARRAY [?] OF BOOLEAN; right: BOOLEAN): ARRAY [?] OF BOOLEAN;
  550. OPERATOR ^ ".="-(left: BOOLEAN; CONST right: ARRAY [?] OF BOOLEAN): ARRAY [?] OF BOOLEAN;
  551. PROCEDURE ^ EEqlASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  552. OPERATOR ^ ".="-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF BOOLEAN;
  553. OPERATOR ^ ".="-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  554. PROCEDURE ^ EEqlAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  555. OPERATOR ^ ".="-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF BOOLEAN;
  556. OPERATOR ^ ".="-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  557. PROCEDURE ^ EEqlALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  558. OPERATOR ^ ".="-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF BOOLEAN;
  559. OPERATOR ^ ".="-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  560. PROCEDURE ^ EEqlARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  561. OPERATOR ^ ".="-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF BOOLEAN;
  562. OPERATOR ^ ".="-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  563. PROCEDURE ^ EEqlAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  564. OPERATOR ^ ".="-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF BOOLEAN;
  565. OPERATOR ^ ".="-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  566. PROCEDURE ^ ENeqABABLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  567. OPERATOR ^ ".#"-(CONST left, right: ARRAY [?] OF BOOLEAN): ARRAY [?] OF BOOLEAN;
  568. PROCEDURE ^ ENeqASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  569. OPERATOR ^ ".#"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  570. PROCEDURE ^ ENeqAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  571. OPERATOR ^ ".#"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  572. PROCEDURE ^ ENeqALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  573. OPERATOR ^ ".#"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  574. PROCEDURE ^ ENeqARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  575. OPERATOR ^ ".#"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  576. PROCEDURE ^ ENeqAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  577. OPERATOR ^ ".#"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  578. PROCEDURE ^ ENeqABSBLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  579. OPERATOR ^ ".#"-(CONST left: ARRAY [?] OF BOOLEAN; right: BOOLEAN): ARRAY [?] OF BOOLEAN;
  580. OPERATOR ^ ".#"-(left: BOOLEAN; CONST right: ARRAY [?] OF BOOLEAN): ARRAY [?] OF BOOLEAN;
  581. PROCEDURE ^ ENeqASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  582. OPERATOR ^ ".#"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF BOOLEAN;
  583. OPERATOR ^ ".#"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  584. PROCEDURE ^ ENeqAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  585. OPERATOR ^ ".#"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF BOOLEAN;
  586. OPERATOR ^ ".#"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  587. PROCEDURE ^ ENeqALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  588. OPERATOR ^ ".#"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF BOOLEAN;
  589. OPERATOR ^ ".#"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  590. PROCEDURE ^ ENeqARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  591. OPERATOR ^ ".#"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF BOOLEAN;
  592. OPERATOR ^ ".#"-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  593. PROCEDURE ^ ENeqAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  594. OPERATOR ^ ".#"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF BOOLEAN;
  595. OPERATOR ^ ".#"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  596. PROCEDURE ^ EGtrASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  597. OPERATOR ^ ".>"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  598. PROCEDURE ^ EGtrAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  599. OPERATOR ^ ".>"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  600. PROCEDURE ^ EGtrALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  601. OPERATOR ^ ".>"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  602. PROCEDURE ^ EGtrARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  603. OPERATOR ^ ".>"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  604. PROCEDURE ^ EGtrAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  605. OPERATOR ^ ".>"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  606. PROCEDURE ^ EGtrASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  607. OPERATOR ^ ".>"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF BOOLEAN;
  608. OPERATOR ^ ".<"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  609. PROCEDURE ^ EGtrAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  610. OPERATOR ^ ".>"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF BOOLEAN;
  611. OPERATOR ^ ".<"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  612. PROCEDURE ^ EGtrALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  613. OPERATOR ^ ".>"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF BOOLEAN;
  614. OPERATOR ^ ".<"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  615. PROCEDURE ^ EGtrARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  616. OPERATOR ^ ".>"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF BOOLEAN;
  617. OPERATOR ^ ".<"-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  618. PROCEDURE ^ EGtrAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  619. OPERATOR ^ ".>"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF BOOLEAN;
  620. OPERATOR ^ ".<"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  621. PROCEDURE ^ EGeqASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  622. OPERATOR ^ ".>="-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  623. PROCEDURE ^ EGeqAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  624. OPERATOR ^ ".>="-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  625. PROCEDURE ^ EGeqALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  626. OPERATOR ^ ".>="-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  627. PROCEDURE ^ EGeqARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  628. OPERATOR ^ ".>="-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  629. PROCEDURE ^ EGeqAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  630. OPERATOR ^ ".>="-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  631. PROCEDURE ^ EGeqASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  632. OPERATOR ^ ".>="-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF BOOLEAN;
  633. OPERATOR ^ ".<="-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  634. PROCEDURE ^ EGeqAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  635. OPERATOR ^ ".>="-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF BOOLEAN;
  636. OPERATOR ^ ".<="-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  637. PROCEDURE ^ EGeqALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  638. OPERATOR ^ ".>="-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF BOOLEAN;
  639. OPERATOR ^ ".<="-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  640. PROCEDURE ^ EGeqARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  641. OPERATOR ^ ".>="-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF BOOLEAN;
  642. OPERATOR ^ ".<="-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  643. PROCEDURE ^ EGeqAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  644. OPERATOR ^ ".>="-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF BOOLEAN;
  645. OPERATOR ^ ".<="-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  646. PROCEDURE ^ ELssASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  647. OPERATOR ^ ".<"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  648. PROCEDURE ^ ELssAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  649. OPERATOR ^ ".<"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  650. PROCEDURE ^ ELssALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  651. OPERATOR ^ ".<"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  652. PROCEDURE ^ ELssARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  653. OPERATOR ^ ".<"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  654. PROCEDURE ^ ELssAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  655. OPERATOR ^ ".<"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  656. PROCEDURE ^ ELssASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  657. OPERATOR ^ ".<"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF BOOLEAN;
  658. OPERATOR ^ ".>"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  659. PROCEDURE ^ ELssAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  660. OPERATOR ^ ".<"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF BOOLEAN;
  661. OPERATOR ^ ".>"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  662. PROCEDURE ^ ELssALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  663. OPERATOR ^ ".<"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF BOOLEAN;
  664. OPERATOR ^ ".>"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  665. PROCEDURE ^ ELssARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  666. OPERATOR ^ ".<"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF BOOLEAN;
  667. OPERATOR ^ ".>"-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  668. PROCEDURE ^ ELssAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  669. OPERATOR ^ ".<"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF BOOLEAN;
  670. OPERATOR ^ ".>"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  671. PROCEDURE ^ ELeqASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  672. OPERATOR ^ ".<="-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  673. PROCEDURE ^ ELeqAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  674. OPERATOR ^ ".<="-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  675. PROCEDURE ^ ELeqALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  676. OPERATOR ^ ".<="-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  677. PROCEDURE ^ ELeqARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  678. OPERATOR ^ ".<="-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  679. PROCEDURE ^ ELeqAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  680. OPERATOR ^ ".<="-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  681. PROCEDURE ^ ELeqASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  682. OPERATOR ^ ".<="-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF BOOLEAN;
  683. OPERATOR ^ ".>="-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): ARRAY [?] OF BOOLEAN;
  684. PROCEDURE ^ ELeqAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  685. OPERATOR ^ ".<="-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF BOOLEAN;
  686. OPERATOR ^ ".>="-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): ARRAY [?] OF BOOLEAN;
  687. PROCEDURE ^ ELeqALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  688. OPERATOR ^ ".<="-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF BOOLEAN;
  689. OPERATOR ^ ".>="-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): ARRAY [?] OF BOOLEAN;
  690. PROCEDURE ^ ELeqARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  691. OPERATOR ^ ".<="-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF BOOLEAN;
  692. OPERATOR ^ ".>="-(left: REAL; CONST right: ARRAY [?] OF REAL): ARRAY [?] OF BOOLEAN;
  693. PROCEDURE ^ ELeqAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  694. OPERATOR ^ ".<="-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF BOOLEAN;
  695. OPERATOR ^ ".>="-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): ARRAY [?] OF BOOLEAN;
  696. PROCEDURE ^ ElOrABABLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  697. OPERATOR ^ "OR"-(CONST left, right: ARRAY [?] OF BOOLEAN): ARRAY [?] OF BOOLEAN;
  698. PROCEDURE ^ ElAndABABLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  699. OPERATOR ^ "&"-(CONST left, right: ARRAY [?] OF BOOLEAN): ARRAY [?] OF BOOLEAN;
  700. PROCEDURE ^ ElOrABSBLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  701. OPERATOR ^ "OR"-(CONST left: ARRAY [?] OF BOOLEAN; right: BOOLEAN): ARRAY [?] OF BOOLEAN;
  702. OPERATOR ^ "OR"-(left: BOOLEAN; CONST right: ARRAY [?] OF BOOLEAN): ARRAY [?] OF BOOLEAN;
  703. PROCEDURE ^ ElAndABSBLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  704. OPERATOR ^ "&"-(CONST left: ARRAY [?] OF BOOLEAN; right: BOOLEAN): ARRAY [?] OF BOOLEAN;
  705. OPERATOR ^ "&"-(left: BOOLEAN; CONST right: ARRAY [?] OF BOOLEAN): ARRAY [?] OF BOOLEAN;
  706. PROCEDURE ^ LssASASLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  707. OPERATOR ^ "<"-(CONST left, right: ARRAY [?] OF SHORTINT): BOOLEAN;
  708. PROCEDURE ^ GeqASASLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  709. OPERATOR ^ ">="-(CONST left, right: ARRAY [?] OF SHORTINT): BOOLEAN;
  710. PROCEDURE ^ LssAIAILoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  711. OPERATOR ^ "<"-(CONST left, right: ARRAY [?] OF INTEGER): BOOLEAN;
  712. PROCEDURE ^ GeqAIAILoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  713. OPERATOR ^ ">="-(CONST left, right: ARRAY [?] OF INTEGER): BOOLEAN;
  714. PROCEDURE ^ LssALALLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  715. OPERATOR ^ "<"-(CONST left, right: ARRAY [?] OF LONGINT): BOOLEAN;
  716. PROCEDURE ^ GeqALALLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  717. OPERATOR ^ ">="-(CONST left, right: ARRAY [?] OF LONGINT): BOOLEAN;
  718. PROCEDURE ^ LssARARLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  719. OPERATOR ^ "<"-(CONST left, right: ARRAY [?] OF REAL): BOOLEAN;
  720. PROCEDURE ^ GeqARARLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  721. OPERATOR ^ ">="-(CONST left, right: ARRAY [?] OF REAL): BOOLEAN;
  722. PROCEDURE ^ LssAXAXLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  723. OPERATOR ^ "<"-(CONST left, right: ARRAY [?] OF LONGREAL): BOOLEAN;
  724. PROCEDURE ^ GeqAXAXLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  725. OPERATOR ^ ">="-(CONST left, right: ARRAY [?] OF LONGREAL): BOOLEAN;
  726. PROCEDURE ^ GtrASASLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  727. OPERATOR ^ ">"-(CONST left, right: ARRAY [?] OF SHORTINT): BOOLEAN;
  728. PROCEDURE ^ LeqASASLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  729. OPERATOR ^ "<="-(CONST left, right: ARRAY [?] OF SHORTINT): BOOLEAN;
  730. PROCEDURE ^ GtrAIAILoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  731. OPERATOR ^ ">"-(CONST left, right: ARRAY [?] OF INTEGER): BOOLEAN;
  732. PROCEDURE ^ LeqAIAILoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  733. OPERATOR ^ "<="-(CONST left, right: ARRAY [?] OF INTEGER): BOOLEAN;
  734. PROCEDURE ^ GtrALALLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  735. OPERATOR ^ ">"-(CONST left, right: ARRAY [?] OF LONGINT): BOOLEAN;
  736. PROCEDURE ^ LeqALALLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  737. OPERATOR ^ "<="-(CONST left, right: ARRAY [?] OF LONGINT): BOOLEAN;
  738. PROCEDURE ^ GtrARARLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  739. OPERATOR ^ ">"-(CONST left, right: ARRAY [?] OF REAL): BOOLEAN;
  740. PROCEDURE ^ LeqARARLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  741. OPERATOR ^ "<="-(CONST left, right: ARRAY [?] OF REAL): BOOLEAN;
  742. PROCEDURE ^ GtrAXAXLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  743. OPERATOR ^ ">"-(CONST left, right: ARRAY [?] OF LONGREAL): BOOLEAN;
  744. PROCEDURE ^ LeqAXAXLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  745. OPERATOR ^ "<="-(CONST left, right: ARRAY [?] OF LONGREAL): BOOLEAN;
  746. PROCEDURE ^ EqlABABLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  747. OPERATOR ^ "="-(CONST left, right: ARRAY [?] OF BOOLEAN): BOOLEAN;
  748. OPERATOR ^ "#"-(CONST left, right: ARRAY [?] OF BOOLEAN): BOOLEAN;
  749. PROCEDURE ^ EqlASASLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  750. OPERATOR ^ "="-(CONST left, right: ARRAY [?] OF SHORTINT): BOOLEAN;
  751. OPERATOR ^ "#"-(CONST left, right: ARRAY [?] OF SHORTINT): BOOLEAN;
  752. PROCEDURE ^ EqlAIAILoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  753. OPERATOR ^ "="-(CONST left, right: ARRAY [?] OF INTEGER): BOOLEAN;
  754. OPERATOR ^ "#"-(CONST left, right: ARRAY [?] OF INTEGER): BOOLEAN;
  755. PROCEDURE ^ EqlALALLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  756. OPERATOR ^ "="-(CONST left, right: ARRAY [?] OF LONGINT): BOOLEAN;
  757. OPERATOR ^ "#"-(CONST left, right: ARRAY [?] OF LONGINT): BOOLEAN;
  758. PROCEDURE ^ EqlARARLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  759. OPERATOR ^ "="-(CONST left, right: ARRAY [?] OF REAL): BOOLEAN;
  760. OPERATOR ^ "#"-(CONST left, right: ARRAY [?] OF REAL): BOOLEAN;
  761. PROCEDURE ^ EqlAXAXLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  762. OPERATOR ^ "="-(CONST left, right: ARRAY [?] OF LONGREAL): BOOLEAN;
  763. OPERATOR ^ "#"-(CONST left, right: ARRAY [?] OF LONGREAL): BOOLEAN;
  764. PROCEDURE ^ EqlAZAZLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  765. OPERATOR ^ "="-(CONST left, right: ARRAY [?] OF COMPLEX): BOOLEAN;
  766. OPERATOR ^ "#"-(CONST left, right: ARRAY [?] OF COMPLEX): BOOLEAN;
  767. PROCEDURE ^ EqlALZALZLoop(ladr, radr: ADDRESS; linc, rinc, len: SIZE): BOOLEAN;
  768. OPERATOR ^ "="-(CONST left, right: ARRAY [?] OF LONGCOMPLEX): BOOLEAN;
  769. OPERATOR ^ "#"-(CONST left, right: ARRAY [?] OF LONGCOMPLEX): BOOLEAN;
  770. PROCEDURE ^ EqlABSBLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  771. OPERATOR ^ "="-(CONST left: ARRAY [?] OF BOOLEAN; right: BOOLEAN): BOOLEAN;
  772. OPERATOR ^ "="-(left: BOOLEAN; CONST right: ARRAY [?] OF BOOLEAN): BOOLEAN;
  773. OPERATOR ^ "#"-(CONST left: ARRAY [?] OF BOOLEAN; right: BOOLEAN): BOOLEAN;
  774. OPERATOR ^ "#"-(left: BOOLEAN; CONST right: ARRAY [?] OF BOOLEAN): BOOLEAN;
  775. PROCEDURE ^ EqlASSSLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  776. OPERATOR ^ "="-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): BOOLEAN;
  777. OPERATOR ^ "="-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): BOOLEAN;
  778. OPERATOR ^ "#"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): BOOLEAN;
  779. OPERATOR ^ "#"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): BOOLEAN;
  780. PROCEDURE ^ EqlAISILoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  781. OPERATOR ^ "="-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): BOOLEAN;
  782. OPERATOR ^ "="-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): BOOLEAN;
  783. OPERATOR ^ "#"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): BOOLEAN;
  784. OPERATOR ^ "#"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): BOOLEAN;
  785. PROCEDURE ^ EqlALSLLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  786. OPERATOR ^ "="-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): BOOLEAN;
  787. OPERATOR ^ "="-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): BOOLEAN;
  788. OPERATOR ^ "#"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): BOOLEAN;
  789. OPERATOR ^ "#"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): BOOLEAN;
  790. PROCEDURE ^ EqlARSRLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  791. OPERATOR ^ "="-(CONST left: ARRAY [?] OF REAL; right: REAL): BOOLEAN;
  792. OPERATOR ^ "="-(left: REAL; CONST right: ARRAY [?] OF REAL): BOOLEAN;
  793. OPERATOR ^ "#"-(CONST left: ARRAY [?] OF REAL; right: REAL): BOOLEAN;
  794. OPERATOR ^ "#"-(left: REAL; CONST right: ARRAY [?] OF REAL): BOOLEAN;
  795. PROCEDURE ^ EqlAXSXLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  796. OPERATOR ^ "="-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): BOOLEAN;
  797. OPERATOR ^ "="-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): BOOLEAN;
  798. OPERATOR ^ "#"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): BOOLEAN;
  799. OPERATOR ^ "#"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): BOOLEAN;
  800. PROCEDURE ^ GtrASSSLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  801. OPERATOR ^ ">"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): BOOLEAN;
  802. OPERATOR ^ "<"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): BOOLEAN;
  803. PROCEDURE ^ GtrAISILoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  804. OPERATOR ^ ">"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): BOOLEAN;
  805. OPERATOR ^ "<"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): BOOLEAN;
  806. PROCEDURE ^ GtrALSLLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  807. OPERATOR ^ ">"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): BOOLEAN;
  808. OPERATOR ^ "<"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): BOOLEAN;
  809. PROCEDURE ^ GtrARSRLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  810. OPERATOR ^ ">"-(CONST left: ARRAY [?] OF REAL; right: REAL): BOOLEAN;
  811. OPERATOR ^ "<"-(left: REAL; CONST right: ARRAY [?] OF REAL): BOOLEAN;
  812. PROCEDURE ^ GtrAXSXLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  813. OPERATOR ^ ">"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): BOOLEAN;
  814. OPERATOR ^ "<"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): BOOLEAN;
  815. PROCEDURE ^ GeqASSSLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  816. OPERATOR ^ ">="-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): BOOLEAN;
  817. OPERATOR ^ "<="-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): BOOLEAN;
  818. PROCEDURE ^ GeqAISILoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  819. OPERATOR ^ ">="-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): BOOLEAN;
  820. OPERATOR ^ "<="-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): BOOLEAN;
  821. PROCEDURE ^ GeqALSLLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  822. OPERATOR ^ ">="-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): BOOLEAN;
  823. OPERATOR ^ "<="-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): BOOLEAN;
  824. PROCEDURE ^ GeqARSRLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  825. OPERATOR ^ ">="-(CONST left: ARRAY [?] OF REAL; right: REAL): BOOLEAN;
  826. OPERATOR ^ "<="-(left: REAL; CONST right: ARRAY [?] OF REAL): BOOLEAN;
  827. PROCEDURE ^ GeqAXSXLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  828. OPERATOR ^ ">="-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): BOOLEAN;
  829. OPERATOR ^ "<="-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): BOOLEAN;
  830. PROCEDURE ^ LeqASSSLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  831. OPERATOR ^ "<="-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): BOOLEAN;
  832. OPERATOR ^ ">="-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): BOOLEAN;
  833. PROCEDURE ^ LeqAISILoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  834. OPERATOR ^ "<="-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): BOOLEAN;
  835. OPERATOR ^ ">="-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): BOOLEAN;
  836. PROCEDURE ^ LeqALSLLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  837. OPERATOR ^ "<="-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): BOOLEAN;
  838. OPERATOR ^ ">="-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): BOOLEAN;
  839. PROCEDURE ^ LeqARSRLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  840. OPERATOR ^ "<="-(CONST left: ARRAY [?] OF REAL; right: REAL): BOOLEAN;
  841. OPERATOR ^ ">="-(left: REAL; CONST right: ARRAY [?] OF REAL): BOOLEAN;
  842. PROCEDURE ^ LeqAXSXLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  843. OPERATOR ^ "<="-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): BOOLEAN;
  844. OPERATOR ^ ">="-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): BOOLEAN;
  845. PROCEDURE ^ LssASSSLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  846. OPERATOR ^ "<"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): BOOLEAN;
  847. OPERATOR ^ ">"-(left: SHORTINT; CONST right: ARRAY [?] OF SHORTINT): BOOLEAN;
  848. PROCEDURE ^ LssAISILoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  849. OPERATOR ^ "<"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): BOOLEAN;
  850. OPERATOR ^ ">"-(left: INTEGER; CONST right: ARRAY [?] OF INTEGER): BOOLEAN;
  851. PROCEDURE ^ LssALSLLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  852. OPERATOR ^ "<"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): BOOLEAN;
  853. OPERATOR ^ ">"-(left: LONGINT; CONST right: ARRAY [?] OF LONGINT): BOOLEAN;
  854. PROCEDURE ^ LssARSRLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  855. OPERATOR ^ "<"-(CONST left: ARRAY [?] OF REAL; right: REAL): BOOLEAN;
  856. OPERATOR ^ ">"-(left: REAL; CONST right: ARRAY [?] OF REAL): BOOLEAN;
  857. PROCEDURE ^ LssAXSXLoop(ladr, radr: ADDRESS; linc, len: SIZE): BOOLEAN;
  858. OPERATOR ^ "<"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): BOOLEAN;
  859. OPERATOR ^ ">"-(left: LONGREAL; CONST right: ARRAY [?] OF LONGREAL): BOOLEAN;
  860. PROCEDURE ^ MaxAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  861. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF LONGREAL;
  862. PROCEDURE ^ MaxARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  863. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF REAL;
  864. PROCEDURE ^ MaxALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  865. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF LONGINT;
  866. PROCEDURE ^ MaxAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  867. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF INTEGER;
  868. PROCEDURE ^ MaxASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  869. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF SHORTINT;
  870. PROCEDURE ^ MinAXSXLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  871. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF LONGREAL; right: LONGREAL): ARRAY [?] OF LONGREAL;
  872. PROCEDURE ^ MinARSRLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  873. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF REAL; right: REAL): ARRAY [?] OF REAL;
  874. PROCEDURE ^ MinALSLLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  875. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF LONGINT; right: LONGINT): ARRAY [?] OF LONGINT;
  876. PROCEDURE ^ MinAISILoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  877. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF INTEGER; right: INTEGER): ARRAY [?] OF INTEGER;
  878. PROCEDURE ^ MinASSSLoop(ladr, radr, dadr: ADDRESS; linc, dinc, len: SIZE);
  879. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF SHORTINT; right: SHORTINT): ARRAY [?] OF SHORTINT;
  880. PROCEDURE ^ MaxAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  881. OPERATOR ^ "MAX"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  882. PROCEDURE ^ MaxARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  883. OPERATOR ^ "MAX"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  884. PROCEDURE ^ MaxALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  885. OPERATOR ^ "MAX"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  886. PROCEDURE ^ MaxAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  887. OPERATOR ^ "MAX"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  888. PROCEDURE ^ MaxASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  889. OPERATOR ^ "MAX"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  890. PROCEDURE ^ MinAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  891. OPERATOR ^ "MIN"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  892. PROCEDURE ^ MinARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  893. OPERATOR ^ "MIN"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  894. PROCEDURE ^ MinALALLoop(ladr, radr, dadr: LongintPtr; linc, rinc, dinc, len: SIZE);
  895. OPERATOR ^ "MIN"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  896. PROCEDURE ^ MinAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  897. OPERATOR ^ "MIN"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  898. PROCEDURE ^ MinASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, dinc, len: SIZE);
  899. OPERATOR ^ "MIN"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  900. PROCEDURE ^ MinASLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  901. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF SHORTINT): SHORTINT;
  902. PROCEDURE ^ MinAILoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  903. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF INTEGER): INTEGER;
  904. PROCEDURE ^ MinALLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  905. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF LONGINT): LONGINT;
  906. PROCEDURE ^ MinARLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  907. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF REAL): REAL;
  908. PROCEDURE ^ MinAXLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  909. OPERATOR ^ "MIN"-(CONST left: ARRAY [?] OF LONGREAL): LONGREAL;
  910. PROCEDURE ^ MaxASLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  911. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF SHORTINT): SHORTINT;
  912. PROCEDURE ^ MaxAILoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  913. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF INTEGER): INTEGER;
  914. PROCEDURE ^ MaxALLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  915. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF LONGINT): LONGINT;
  916. PROCEDURE ^ MaxARLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  917. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF REAL): REAL;
  918. PROCEDURE ^ MaxAXLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  919. OPERATOR ^ "MAX"-(CONST left: ARRAY [?] OF LONGREAL): LONGREAL;
  920. OPERATOR ^ "LEN"-(CONST left: ARRAY [?] ): ARRAY [*] OF LONGINT;
  921. PROCEDURE ^ SumASLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  922. OPERATOR ^ "SUM"-(CONST left: ARRAY [?] OF SHORTINT): SHORTINT;
  923. PROCEDURE ^ SumAILoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  924. OPERATOR ^ "SUM"-(CONST left: ARRAY [?] OF INTEGER): INTEGER;
  925. PROCEDURE ^ SumALLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  926. OPERATOR ^ "SUM"-(CONST left: ARRAY [?] OF LONGINT): LONGINT;
  927. PROCEDURE ^ SumARLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  928. OPERATOR ^ "SUM"-(CONST left: ARRAY [?] OF REAL): REAL;
  929. PROCEDURE ^ SumAXLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  930. OPERATOR ^ "SUM"-(CONST left: ARRAY [?] OF LONGREAL): LONGREAL;
  931. PROCEDURE ^ SumAZLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  932. OPERATOR ^ "SUM"-(CONST left: ARRAY [?] OF COMPLEX): COMPLEX;
  933. PROCEDURE ^ SumALZLoop(ladr, dadr: ADDRESS; linc, len: SIZE);
  934. OPERATOR ^ "SUM"-(CONST left: ARRAY [?] OF LONGCOMPLEX): LONGCOMPLEX;
  935. PROCEDURE ^ AbsLoopS(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  936. OPERATOR ^ "ABS"-(CONST src: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  937. PROCEDURE ^ AbsLoopI(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  938. OPERATOR ^ "ABS"-(CONST src: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  939. PROCEDURE ^ AbsLoopL(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  940. OPERATOR ^ "ABS"-(CONST src: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  941. PROCEDURE ^ AbsLoopR(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  942. OPERATOR ^ "ABS"-(CONST src: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  943. PROCEDURE ^ AbsLoopX(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  944. OPERATOR ^ "ABS"-(CONST src: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  945. PROCEDURE ^ AbsLoopZ(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  946. OPERATOR ^ "ABS"-(CONST src: ARRAY [?] OF COMPLEX): ARRAY [?] OF REAL;
  947. PROCEDURE ^ AbsLoopLZ(ladr, dadr: ADDRESS; linc, dinc, len: SIZE);
  948. OPERATOR ^ "ABS"-(CONST src: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGREAL;
  949. PROCEDURE ^ AssignSBABLoop(ladr, dadr: ADDRESS; dinc, len: SIZE);
  950. OPERATOR ^ ":="-(VAR dest: ARRAY [?] OF BOOLEAN; right: BOOLEAN);
  951. PROCEDURE ^ AssignSSASLoop(ladr, dadr: ADDRESS; dinc, len: SIZE);
  952. OPERATOR ^ ":="-(VAR dest: ARRAY [?] OF SHORTINT; right: SHORTINT);
  953. PROCEDURE ^ AssignSIAILoop(ladr, dadr: ADDRESS; dinc, len: SIZE);
  954. OPERATOR ^ ":="-(VAR dest: ARRAY [?] OF INTEGER; right: INTEGER);
  955. PROCEDURE ^ AssignSLALLoop(ladr, dadr: ADDRESS; dinc, len: SIZE);
  956. OPERATOR ^ ":="-(VAR dest: ARRAY [?] OF LONGINT; right: LONGINT);
  957. PROCEDURE ^ AssignSRARLoop(ladr, dadr: ADDRESS; dinc, len: SIZE);
  958. OPERATOR ^ ":="-(VAR dest: ARRAY [?] OF REAL; right: REAL);
  959. PROCEDURE ^ AssignSXAXLoop(ladr, dadr: ADDRESS; dinc, len: SIZE);
  960. OPERATOR ^ ":="-(VAR dest: ARRAY [?] OF LONGREAL; right: LONGREAL);
  961. PROCEDURE ^ AssignSZAZLoop(ladr, dadr: ADDRESS; dinc, len: SIZE);
  962. OPERATOR ^ ":="-(VAR dest: ARRAY [?] OF COMPLEX; right: COMPLEX);
  963. PROCEDURE ^ AssignSLZALZLoop(ladr, dadr: ADDRESS; dinc, len: SIZE);
  964. OPERATOR ^ ":="-(VAR dest: ARRAY [?] OF LONGCOMPLEX; right: LONGCOMPLEX);
  965. PROCEDURE ^ AllocateMatrix(dest: ADDRESS; rows, cols, elementsize: LONGINT): ANY;
  966. PROCEDURE ^ AllocateVector(dest: ADDRESS; l0, elementsize: LONGINT): ANY;
  967. PROCEDURE ^ ApplyMatMulLoop(dest, left, right: ADDRESS; Size: LONGINT; loop: BinaryAASLoop; fast: FastMatMul);
  968. PROCEDURE ^ ApplyMatVecMulLoop(dest, left, right: ADDRESS; Size: LONGINT; loop: BinaryAASLoop; fast: FastMatMul);
  969. PROCEDURE ^ ApplyVecMatMulLoop(dest, left, right: ADDRESS; Size: LONGINT; loop: BinaryAASLoop; fast: FastMatMul);
  970. PROCEDURE ^ MatMulASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  971. OPERATOR ^ "*"-(CONST left, right: ARRAY [*, *] OF SHORTINT): ARRAY [*, *] OF SHORTINT;
  972. OPERATOR ^ "*"-(CONST left: ARRAY [*, *] OF SHORTINT; CONST right: ARRAY [*] OF SHORTINT): ARRAY [*] OF SHORTINT;
  973. OPERATOR ^ "*"-(CONST left: ARRAY [*] OF SHORTINT; CONST right: ARRAY [*, *] OF SHORTINT): ARRAY [*] OF SHORTINT;
  974. PROCEDURE ^ MatMulAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  975. OPERATOR ^ "*"-(CONST left, right: ARRAY [*, *] OF INTEGER): ARRAY [*, *] OF INTEGER;
  976. OPERATOR ^ "*"-(CONST left: ARRAY [*, *] OF INTEGER; CONST right: ARRAY [*] OF INTEGER): ARRAY [*] OF INTEGER;
  977. OPERATOR ^ "*"-(CONST left: ARRAY [*] OF INTEGER; CONST right: ARRAY [*, *] OF INTEGER): ARRAY [*] OF INTEGER;
  978. PROCEDURE ^ MatMulALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  979. OPERATOR ^ "*"-(CONST left, right: ARRAY [*, *] OF LONGINT): ARRAY [*, *] OF LONGINT;
  980. OPERATOR ^ "*"-(CONST left: ARRAY [*, *] OF LONGINT; CONST right: ARRAY [*] OF LONGINT): ARRAY [*] OF LONGINT;
  981. OPERATOR ^ "*"-(CONST left: ARRAY [*] OF LONGINT; CONST right: ARRAY [*, *] OF LONGINT): ARRAY [*] OF LONGINT;
  982. PROCEDURE ^ MatMulARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  983. OPERATOR ^ "*"-(CONST left, right: ARRAY [*, *] OF REAL): ARRAY [*, *] OF REAL;
  984. OPERATOR ^ "*"-(CONST left: ARRAY [*, *] OF REAL; CONST right: ARRAY [*] OF REAL): ARRAY [*] OF REAL;
  985. OPERATOR ^ "*"-(CONST left: ARRAY [*] OF REAL; CONST right: ARRAY [*, *] OF REAL): ARRAY [*] OF REAL;
  986. PROCEDURE ^ MatMulAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  987. OPERATOR ^ "*"-(CONST left, right: ARRAY [*, *] OF LONGREAL): ARRAY [*, *] OF LONGREAL;
  988. OPERATOR ^ "*"-(CONST left: ARRAY [*, *] OF LONGREAL; CONST right: ARRAY [*] OF LONGREAL): ARRAY [*] OF LONGREAL;
  989. OPERATOR ^ "*"-(CONST left: ARRAY [*] OF LONGREAL; CONST right: ARRAY [*, *] OF LONGREAL): ARRAY [*] OF LONGREAL;
  990. PROCEDURE ^ MatMulIncASASLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  991. OPERATOR ^ "INCMUL"-(CONST left, right: ARRAY [*, *] OF SHORTINT): ARRAY [*, *] OF SHORTINT;
  992. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*, *] OF SHORTINT; CONST right: ARRAY [*] OF SHORTINT): ARRAY [*] OF SHORTINT;
  993. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*] OF SHORTINT; CONST right: ARRAY [*, *] OF SHORTINT): ARRAY [*] OF SHORTINT;
  994. OPERATOR ^ "DECMUL"-(CONST left, right: ARRAY [*, *] OF SHORTINT): ARRAY [*, *] OF SHORTINT;
  995. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*, *] OF SHORTINT; CONST right: ARRAY [*] OF SHORTINT): ARRAY [*] OF SHORTINT;
  996. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*] OF SHORTINT; CONST right: ARRAY [*, *] OF SHORTINT): ARRAY [*] OF SHORTINT;
  997. PROCEDURE ^ MatMulIncAIAILoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  998. OPERATOR ^ "INCMUL"-(CONST left, right: ARRAY [*, *] OF INTEGER): ARRAY [*, *] OF INTEGER;
  999. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*, *] OF INTEGER; CONST right: ARRAY [*] OF INTEGER): ARRAY [*] OF INTEGER;
  1000. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*] OF INTEGER; CONST right: ARRAY [*, *] OF INTEGER): ARRAY [*] OF INTEGER;
  1001. OPERATOR ^ "DECMUL"-(CONST left, right: ARRAY [*, *] OF INTEGER): ARRAY [*, *] OF INTEGER;
  1002. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*, *] OF INTEGER; CONST right: ARRAY [*] OF INTEGER): ARRAY [*] OF INTEGER;
  1003. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*] OF INTEGER; CONST right: ARRAY [*, *] OF INTEGER): ARRAY [*] OF INTEGER;
  1004. PROCEDURE ^ MatMulIncALALLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  1005. OPERATOR ^ "INCMUL"-(CONST left, right: ARRAY [*, *] OF LONGINT): ARRAY [*, *] OF LONGINT;
  1006. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*, *] OF LONGINT; CONST right: ARRAY [*] OF LONGINT): ARRAY [*] OF LONGINT;
  1007. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*] OF LONGINT; CONST right: ARRAY [*, *] OF LONGINT): ARRAY [*] OF LONGINT;
  1008. OPERATOR ^ "DECMUL"-(CONST left, right: ARRAY [*, *] OF LONGINT): ARRAY [*, *] OF LONGINT;
  1009. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*, *] OF LONGINT; CONST right: ARRAY [*] OF LONGINT): ARRAY [*] OF LONGINT;
  1010. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*] OF LONGINT; CONST right: ARRAY [*, *] OF LONGINT): ARRAY [*] OF LONGINT;
  1011. PROCEDURE ^ MatMulIncARARLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  1012. OPERATOR ^ "INCMUL"-(CONST left, right: ARRAY [*, *] OF REAL): ARRAY [*, *] OF REAL;
  1013. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*, *] OF REAL; CONST right: ARRAY [*] OF REAL): ARRAY [*] OF REAL;
  1014. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*] OF REAL; CONST right: ARRAY [*, *] OF REAL): ARRAY [*] OF REAL;
  1015. OPERATOR ^ "DECMUL"-(CONST left, right: ARRAY [*, *] OF REAL): ARRAY [*, *] OF REAL;
  1016. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*, *] OF REAL; CONST right: ARRAY [*] OF REAL): ARRAY [*] OF REAL;
  1017. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*] OF REAL; CONST right: ARRAY [*, *] OF REAL): ARRAY [*] OF REAL;
  1018. PROCEDURE ^ MatMulIncAXAXLoop(ladr, radr, dadr: ADDRESS; linc, rinc, len: SIZE);
  1019. OPERATOR ^ "INCMUL"-(CONST left, right: ARRAY [*, *] OF LONGREAL): ARRAY [*, *] OF LONGREAL;
  1020. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*, *] OF LONGREAL; CONST right: ARRAY [*] OF LONGREAL): ARRAY [*] OF LONGREAL;
  1021. OPERATOR ^ "INCMUL"-(CONST left: ARRAY [*] OF LONGREAL; CONST right: ARRAY [*, *] OF LONGREAL): ARRAY [*] OF LONGREAL;
  1022. OPERATOR ^ "DECMUL"-(CONST left, right: ARRAY [*, *] OF LONGREAL): ARRAY [*, *] OF LONGREAL;
  1023. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*, *] OF LONGREAL; CONST right: ARRAY [*] OF LONGREAL): ARRAY [*] OF LONGREAL;
  1024. OPERATOR ^ "DECMUL"-(CONST left: ARRAY [*] OF LONGREAL; CONST right: ARRAY [*, *] OF LONGREAL): ARRAY [*] OF LONGREAL;
  1025. OPERATOR ^ "*"-(CONST left, right: ARRAY [*] OF SHORTINT): ARRAY [*] OF SHORTINT;
  1026. OPERATOR ^ "*"-(CONST left, right: ARRAY [*] OF INTEGER): ARRAY [*] OF INTEGER;
  1027. OPERATOR ^ "*"-(CONST left, right: ARRAY [*] OF LONGINT): ARRAY [*] OF LONGINT;
  1028. OPERATOR ^ "*"-(CONST left, right: ARRAY [*] OF REAL): ARRAY [*] OF REAL;
  1029. OPERATOR ^ "*"-(CONST left, right: ARRAY [*] OF LONGREAL): ARRAY [*] OF LONGREAL;
  1030. OPERATOR ^ "*"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  1031. OPERATOR ^ "*"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  1032. OPERATOR ^ "*"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  1033. OPERATOR ^ "*"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  1034. OPERATOR ^ "*"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  1035. PROCEDURE ^ Overlap(src1, src2: ADDRESS): BOOLEAN;
  1036. PROCEDURE ^ AllocateTransposed(VAR dest: ADDRESS; src: ADDRESS; elementsize: SIZE): ANY;
  1037. PROCEDURE ^ Transpose*(dest, left: ADDRESS; Size: SIZE);
  1038. OPERATOR ^ "`"-(CONST left: ARRAY [*, *] OF SHORTINT): ARRAY [*, *] OF SHORTINT;
  1039. OPERATOR ^ "`"-(CONST left: ARRAY [*, *] OF INTEGER): ARRAY [*, *] OF INTEGER;
  1040. OPERATOR ^ "`"-(CONST left: ARRAY [*, *] OF LONGINT): ARRAY [*, *] OF LONGINT;
  1041. OPERATOR ^ "`"-(CONST left: ARRAY [*, *] OF REAL): ARRAY [*, *] OF REAL;
  1042. OPERATOR ^ "`"-(CONST left: ARRAY [*, *] OF LONGREAL): ARRAY [*, *] OF LONGREAL;
  1043. PROCEDURE ^ CheckTensorGeometry(left, right, dest: ADDRESS; ldim, rdim: LONGINT): BOOLEAN;
  1044. PROCEDURE ^ DoReshape*(VAR dest: ADDRESS; src: LONGINT; CONST shape: ARRAY [*] OF LONGINT);
  1045. PROCEDURE ^ AllocateTensorA*(CONST a: ARRAY OF SIZE; elementSize: SIZE; tag: ADDRESS; VAR dest: UnsafeArray);
  1046. PROCEDURE ^ AllocateArrayA*(CONST a: ARRAY OF SIZE; elementSize: SIZE; tag: ADDRESS; dest: UnsafeArray);
  1047. PROCEDURE ^ AllocateTensorX*(VAR destA: ARRAY [?] ; CONST a: ARRAY [*] OF LONGINT; Size: SIZE; tag: ADDRESS);
  1048. PROCEDURE ^ LenA*(VAR dest: ARRAY [*] OF SIZE; src: ADDRESS);
  1049. PROCEDURE ^ IncrA*(VAR dest: ARRAY [*] OF SIZE; src: ADDRESS);
  1050. PROCEDURE ^ Len*(src: ADDRESS; d: SIZE): SIZE;
  1051. PROCEDURE ^ Incr*(src: ADDRESS; d: SIZE): SIZE;
  1052. PROCEDURE ^ AllocateTensor(VAR dest: ADDRESS; left, right: ADDRESS; Size: SIZE): ANY;
  1053. PROCEDURE ^ FindPatternTensor(left, right: ADDRESS; VAR rdim, len, linc, ri: SIZE);
  1054. PROCEDURE ^ ApplyTensorAAAOp(d, l, r: ADDRESS; elementSize: LONGINT; Loop: BinaryASALoop);
  1055. OPERATOR ^ "**"-(CONST left, right: ARRAY [?] OF SHORTINT): ARRAY [?] OF SHORTINT;
  1056. OPERATOR ^ "**"-(CONST left, right: ARRAY [?] OF INTEGER): ARRAY [?] OF INTEGER;
  1057. OPERATOR ^ "**"-(CONST left, right: ARRAY [?] OF LONGINT): ARRAY [?] OF LONGINT;
  1058. OPERATOR ^ "**"-(CONST left, right: ARRAY [?] OF REAL): ARRAY [?] OF REAL;
  1059. OPERATOR ^ "**"-(CONST left, right: ARRAY [?] OF LONGREAL): ARRAY [?] OF LONGREAL;
  1060. OPERATOR ^ "**"-(CONST left, right: ARRAY [?] OF COMPLEX): ARRAY [?] OF COMPLEX;
  1061. OPERATOR ^ "**"-(CONST left, right: ARRAY [?] OF LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  1062. PROCEDURE ^ InitOptimization;
  1063. PROCEDURE ^ CopyDescriptor*(VAR destPtr: ANY; src: LONGINT; prefixIndices, prefixRanges, suffixIndices, suffixRanges: LONGINT);
  1064. PROCEDURE ^ Reshape*(CONST left: ARRAY [?] ; CONST right: ARRAY [*] OF LONGINT): ARRAY [?] ;
  1065. PROCEDURE ^ RangeFromInteger*(CONST integer: LONGINT): RANGE;
  1066. PROCEDURE ^ ExpandDimensions*(CONST sourceArray: ARRAY [?] ; CONST keptDimensions: ARRAY [*] OF BOOLEAN): ARRAY [?] ;
  1067. OPERATOR ^ "LEN"-(CONST range: RANGE): LONGINT;
  1068. OPERATOR ^ "ALL"-(CONST x: ARRAY [?] OF SHORTINT; op: PROCEDURE (x: SHORTINT):SHORTINT): ARRAY [?] OF SHORTINT;
  1069. OPERATOR ^ "ALL"-(CONST x: ARRAY [?] OF INTEGER; op: PROCEDURE (x: INTEGER):INTEGER): ARRAY [?] OF INTEGER;
  1070. OPERATOR ^ "ALL"-(CONST x: ARRAY [?] OF LONGINT; op: PROCEDURE (x: LONGINT):LONGINT): ARRAY [?] OF LONGINT;
  1071. OPERATOR ^ "ALL"-(CONST x: ARRAY [?] OF HUGEINT; op: PROCEDURE (x: HUGEINT):HUGEINT): ARRAY [?] OF HUGEINT;
  1072. OPERATOR ^ "ALL"-(CONST x: ARRAY [?] OF REAL; op: PROCEDURE (x: REAL):REAL): ARRAY [?] OF REAL;
  1073. OPERATOR ^ "ALL"-(CONST x: ARRAY [?] OF LONGREAL; op: PROCEDURE (x: LONGREAL):LONGREAL): ARRAY [?] OF LONGREAL;
  1074. OPERATOR ^ "ALL"-(CONST x: ARRAY [?] OF COMPLEX; op: PROCEDURE (x: COMPLEX):COMPLEX): ARRAY [?] OF COMPLEX;
  1075. OPERATOR ^ "ALL"-(CONST x: ARRAY [?] OF LONGCOMPLEX; op: PROCEDURE (x: LONGCOMPLEX):LONGCOMPLEX): ARRAY [?] OF LONGCOMPLEX;
  1076. BEGIN
  1077. END FoxArrayBase.