Array1dInt.SymW 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. MODULE Array1dInt;
  2. IMPORT SYSTEM, Array1dBytes, DataErrors, NbrInt, NbrInt64, NbrRe;
  3. CONST
  4. sz = SIZEOF(Value);
  5. TYPE
  6. Value* = NbrInt.Integer;
  7. LongerValue* = NbrInt64.Integer;
  8. ShorterValue* = INTEGER;
  9. RealValue* = NbrRe.Real;
  10. Array* = POINTER TO ARRAY OF Value;
  11. Index* = LONGINT;
  12. Map* = PROCEDURE {DELEGATE}(VAR i: Value);
  13. PROCEDURE ^ Copy*(VAR x: ARRAY OF Value; VAR res: ARRAY OF Value; srcoffset, destoffset, len: Index);
  14. PROCEDURE ^ CreateCopy*(VAR x: ARRAY OF Value): Array;
  15. PROCEDURE ^ CopyPat*(VAR x: ARRAY OF Value; VAR res: ARRAY OF Value; srcoffset, srcstep, destoffset, deststep, piecelen, pieces: Index);
  16. PROCEDURE ^ CreateCopyPat*(VAR x: ARRAY OF Value; offset, step, piecelen, pieces: Index): Array;
  17. PROCEDURE ^ Fill*(x: Value; VAR res: ARRAY OF Value; offset, len: Index);
  18. PROCEDURE ^ FillPat*(x: Value; VAR res: ARRAY OF Value; offset, step, piecelen, pieces: Index);
  19. PROCEDURE ^ Negate*(VAR x: ARRAY OF Value; offset, len: Index);
  20. PROCEDURE ^ NegatePat*(VAR x: ARRAY OF Value; offset, step, piecelen, pieces: Index);
  21. PROCEDURE ^ Abs*(VAR x: ARRAY OF Value; offset, len: Index);
  22. PROCEDURE ^ AbsPat*(VAR x: ARRAY OF Value; offset, step, piecelen, pieces: Index);
  23. PROCEDURE ^ AddAA*(VAR x, y: ARRAY OF Value; VAR res: ARRAY OF Value; offset, len: Index);
  24. PROCEDURE ^ SubtractAA*(VAR x, y: ARRAY OF Value; VAR res: ARRAY OF Value; offset, len: Index);
  25. PROCEDURE ^ MultAA*(VAR x, y: ARRAY OF Value; VAR res: ARRAY OF Value; offset, len: Index);
  26. PROCEDURE ^ ScalarProduct*(VAR x, y: ARRAY OF Value; VAR res: Value; xoffset, yoffset, len: Index);
  27. PROCEDURE ^ ScalarProductPat*(VAR x, y: ARRAY OF Value; VAR res: Value; xoffset, yoffset, xstep, ystep, piecelen, pieces: Index);
  28. PROCEDURE ^ ModAA*(VAR x, y: ARRAY OF Value; VAR res: ARRAY OF Value; offset, len: Index);
  29. PROCEDURE ^ DivAA*(VAR x, y: ARRAY OF Value; VAR res: ARRAY OF Value; offset, len: Index);
  30. PROCEDURE ^ EqualsAA*(VAR x, y: ARRAY OF Value; offset, len: Index): BOOLEAN;
  31. PROCEDURE ^ AddAV*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; offset, len: Index);
  32. PROCEDURE ^ AddAVPat*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; srcoffset, srcstep, destoffset, deststep, piecelen, pieces: Index);
  33. PROCEDURE ^ SubtractAV*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; offset, len: Index);
  34. PROCEDURE ^ SubtractAVPat*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; srcoffset, srcstep, destoffset, deststep, piecelen, pieces: Index);
  35. PROCEDURE ^ SubtractVA*(VAR x: Value; VAR y: ARRAY OF Value; VAR res: ARRAY OF Value; offset, len: Index);
  36. PROCEDURE ^ SubtractVAPat*(x: Value; VAR y: ARRAY OF Value; VAR res: ARRAY OF Value; srcoffset, srcstep, destoffset, deststep, piecelen, pieces: Index);
  37. PROCEDURE ^ MultAV*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; offset, len: Index);
  38. PROCEDURE ^ MultAVPat*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; srcoffset, srcstep, destoffset, deststep, piecelen, pieces: Index);
  39. PROCEDURE ^ DivAV*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; offset, len: Index);
  40. PROCEDURE ^ DivAVPat*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; srcoffset, srcstep, destoffset, deststep, piecelen, pieces: Index);
  41. PROCEDURE ^ DivVA*(x: Value; VAR y: ARRAY OF Value; VAR res: ARRAY OF Value; offset, len: Index);
  42. PROCEDURE ^ DivVAPat*(x: Value; VAR y: ARRAY OF Value; VAR res: ARRAY OF Value; srcoffset, srcstep, destoffset, deststep, piecelen, pieces: Index);
  43. PROCEDURE ^ ModAV*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; offset, len: Index);
  44. PROCEDURE ^ ModAVPat*(VAR x: ARRAY OF Value; y: Value; VAR res: ARRAY OF Value; srcoffset, srcstep, destoffset, deststep, piecelen, pieces: Index);
  45. PROCEDURE ^ ModVA*(x: Value; VAR y: ARRAY OF Value; VAR res: ARRAY OF Value; offset, len: Index);
  46. PROCEDURE ^ ModVAPat*(x: Value; VAR y: ARRAY OF Value; VAR res: ARRAY OF Value; srcoffset, srcstep, destoffset, deststep, piecelen, pieces: Index);
  47. PROCEDURE ^ ApplyMap*(map: Map; VAR res: ARRAY OF Value; offset, len: Index);
  48. PROCEDURE ^ ApplyMapPat*(map: Map; VAR res: ARRAY OF Value; offset, step, piecelen, pieces: Index);
  49. PROCEDURE ^ Min*(VAR x: ARRAY OF Value; offset, len: Index; VAR minpos: Index): Value;
  50. PROCEDURE ^ Max*(VAR x: ARRAY OF Value; offset, len: Index; VAR maxpos: Index): Value;
  51. PROCEDURE ^ MinMax*(VAR x: ARRAY OF Value; offset, len: Index; VAR min, max: Value; minpos, maxpos: Index);
  52. PROCEDURE ^ MinMaxPat*(map: Map; VAR x: ARRAY OF Value; offset, step, piecelen, pieces: Index; VAR min, max: Value; minpos, maxpos: Index);
  53. PROCEDURE ^ MeanSsq*(VAR x: ARRAY OF Value; offset, len: Index; VAR mean, ssq: RealValue);
  54. PROCEDURE ^ kSmallestModify*(k: Index; VAR a: ARRAY OF Value; len: LONGINT): Value;
  55. PROCEDURE ^ kSmallest*(k: Index; VAR a: ARRAY OF Value; len: LONGINT): Value;
  56. PROCEDURE ^ Median*(VAR a: ARRAY OF Value; len: LONGINT): Value;
  57. PROCEDURE ^ HammingWeight*(VAR x: ARRAY OF Value; offset, len: Index): Index;
  58. PROCEDURE ^ HammingWeightPat*(VAR x: ARRAY OF Value; offset, step, piecelen, pieces: Index): Index;
  59. PROCEDURE ^ HammingDist*(VAR x, y: ARRAY OF Value; xoffset, yoffset, len: Index): Index;
  60. PROCEDURE ^ L1Norm*(VAR x: ARRAY OF Value; offset, len: Index): Value;
  61. PROCEDURE ^ L1NormPat*(map: Map; VAR x: ARRAY OF Value; offset, step, piecelen, pieces: Index): Value;
  62. PROCEDURE ^ L1Dist*(VAR x, y: ARRAY OF Value; xoffset, yoffset, len: Index): Value;
  63. PROCEDURE ^ L2NormSq*(VAR x: ARRAY OF Value; offset, len: Index): NbrRe.Real;
  64. PROCEDURE ^ L2Norm*(VAR x: ARRAY OF Value; offset, len: Index): NbrRe.Real;
  65. PROCEDURE ^ L2NormPatSq*(VAR x: ARRAY OF Value; offset, step, piecelen, pieces: Index): NbrRe.Real;
  66. PROCEDURE ^ L2NormPat*(VAR x: ARRAY OF Value; offset, step, piecelen, pieces: Index): NbrRe.Real;
  67. PROCEDURE ^ L2DistSq*(VAR x, y: ARRAY OF Value; xoffset, yoffset, len: Index): NbrRe.Real;
  68. PROCEDURE ^ L2Dist*(VAR x, y: ARRAY OF Value; xoffset, yoffset, len: Index): NbrRe.Real;
  69. PROCEDURE ^ LInftyNorm*(VAR x: ARRAY OF Value; offset, len: Index): Value;
  70. PROCEDURE ^ LInftyNormPat*(VAR x: ARRAY OF Value; offset, step, piecelen, pieces: Index): Value;
  71. PROCEDURE ^ LInftyDist*(VAR x, y: ARRAY OF Value; xoffset, yoffset, len: Index): Value;
  72. PROCEDURE ^ MinIndex(x, y: Index): Index;
  73. PROCEDURE ^ SetLen*(VAR a: Array; len: Index);
  74. PROCEDURE ^ RemoveBlock*(VAR x: ARRAY OF Value; offset, len: Index);
  75. PROCEDURE ^ InsertBlock*(VAR x: ARRAY OF Value; offset, len: Index);
  76. PROCEDURE ^ ShiftBlock*(VAR x: ARRAY OF Value; from, to, len: Index);
  77. PROCEDURE ^ RemovePat*(VAR x: ARRAY OF Value; offset, step, piecelen, pieces: LONGINT): Array;
  78. PROCEDURE ^ Remove*(VAR x: ARRAY OF Value; offset, len: LONGINT): Array;
  79. PROCEDURE ^ InsertPat*(VAR x: ARRAY OF Value; offset, step, piecelen, pieces: LONGINT): Array;
  80. PROCEDURE ^ Insert*(VAR x: ARRAY OF Value; offset, len: LONGINT): Array;
  81. PROCEDURE ^ GetPieces*(VAR a: ARRAY OF Value; offset, step, piecelen: LONGINT): LONGINT;
  82. PROCEDURE ^ Long*(VAR x: ARRAY OF Value; res: ARRAY OF LongerValue; len: Index);
  83. PROCEDURE ^ Short*(VAR x: ARRAY OF Value; res: ARRAY OF ShorterValue; len: Index);
  84. PROCEDURE ^ Sort*(VAR x: ARRAY OF Value; offset, len: Index);
  85. PROCEDURE ^ SortWithIndex*(VAR x: ARRAY OF Value; VAR index: ARRAY OF Index; offset, len: Index);
  86. PROCEDURE ^ SortByIndex*(VAR x: ARRAY OF Value; VAR index: ARRAY OF Index; offset, len: Index);
  87. OPERATOR ^ "-"-(x: Array): Array;
  88. OPERATOR ^ ":="-(VAR l: Array; VAR r: ARRAY OF Value);
  89. OPERATOR ^ "="-(l: Array; VAR r: ARRAY OF Value): BOOLEAN;
  90. OPERATOR ^ "="-(VAR l: ARRAY OF Value; r: Array): BOOLEAN;
  91. OPERATOR ^ ":="-(VAR l: Array; r: Value);
  92. OPERATOR ^ "+"-(l, r: Array): Array;
  93. OPERATOR ^ "+"-(l: Array; r: Value): Array;
  94. OPERATOR ^ "+"-(r: Value; l: Array): Array;
  95. OPERATOR ^ "-"-(l: Array; r: Value): Array;
  96. OPERATOR ^ "-"-(l: Value; r: Array): Array;
  97. OPERATOR ^ "-"-(l, r: Array): Array;
  98. OPERATOR ^ "*"-(l, r: Array): Value;
  99. OPERATOR ^ "*"-(l: Value; r: Array): Array;
  100. OPERATOR ^ "*"-(l: Array; r: Value): Array;
  101. OPERATOR ^ "DIV"-(l: Array; r: Value): Array;
  102. OPERATOR ^ "DIV"-(l: Value; r: Array): Array;
  103. OPERATOR ^ "MOD"-(l: Array; r: Value): Array;
  104. OPERATOR ^ "MOD"-(l: Value; r: Array): Array;
  105. BEGIN
  106. END Array1dInt.