kumi 0.0.24 → 0.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/README.md +70 -71
  4. data/data/functions/agg/boolean.yaml +6 -2
  5. data/data/functions/agg/numeric.yaml +32 -16
  6. data/data/functions/agg/string.yaml +4 -3
  7. data/data/functions/core/arithmetic.yaml +62 -14
  8. data/data/functions/core/boolean.yaml +12 -6
  9. data/data/functions/core/comparison.yaml +25 -13
  10. data/data/functions/core/constructor.yaml +16 -8
  11. data/data/functions/core/select.yaml +3 -1
  12. data/data/functions/core/stencil.yaml +14 -5
  13. data/data/functions/core/string.yaml +9 -4
  14. data/data/kernels/ruby/agg/numeric.yaml +1 -1
  15. data/docs/UNSAT_DETECTION.md +83 -0
  16. data/golden/array_element/expected/nast.txt +1 -1
  17. data/golden/array_element/expected/schema_ruby.rb +1 -1
  18. data/golden/array_index/expected/nast.txt +7 -7
  19. data/golden/array_index/expected/schema_ruby.rb +1 -1
  20. data/golden/array_operations/expected/nast.txt +2 -2
  21. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  22. data/golden/array_operations/expected/snast.txt +3 -3
  23. data/golden/cascade_logic/expected/lir_02_inlined.txt +8 -8
  24. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  25. data/golden/cascade_logic/expected/snast.txt +2 -2
  26. data/golden/chained_fusion/expected/lir_02_inlined.txt +36 -36
  27. data/golden/chained_fusion/expected/lir_03_cse.txt +23 -23
  28. data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +25 -25
  29. data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +23 -23
  30. data/golden/chained_fusion/expected/lir_06_const_prop.txt +23 -23
  31. data/golden/chained_fusion/expected/nast.txt +2 -2
  32. data/golden/chained_fusion/expected/schema_javascript.mjs +23 -23
  33. data/golden/chained_fusion/expected/schema_ruby.rb +28 -28
  34. data/golden/element_arrays/expected/nast.txt +2 -2
  35. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  36. data/golden/element_arrays/expected/snast.txt +1 -1
  37. data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +18 -18
  38. data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +17 -17
  39. data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +17 -17
  40. data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +17 -17
  41. data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +17 -17
  42. data/golden/empty_and_null_inputs/expected/nast.txt +3 -3
  43. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +13 -13
  44. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +18 -18
  45. data/golden/function_overload/expected/ast.txt +29 -0
  46. data/golden/function_overload/expected/input_plan.txt +4 -0
  47. data/golden/function_overload/expected/lir_00_unoptimized.txt +18 -0
  48. data/golden/function_overload/expected/lir_01_hoist_scalar_references.txt +18 -0
  49. data/golden/function_overload/expected/lir_02_inlined.txt +20 -0
  50. data/golden/function_overload/expected/lir_03_cse.txt +20 -0
  51. data/golden/function_overload/expected/lir_04_1_loop_fusion.txt +20 -0
  52. data/golden/function_overload/expected/lir_04_loop_invcm.txt +20 -0
  53. data/golden/function_overload/expected/lir_06_const_prop.txt +20 -0
  54. data/golden/function_overload/expected/nast.txt +22 -0
  55. data/golden/function_overload/expected/schema_javascript.mjs +12 -0
  56. data/golden/function_overload/expected/schema_ruby.rb +39 -0
  57. data/golden/function_overload/expected/snast.txt +22 -0
  58. data/golden/function_overload/input.json +8 -0
  59. data/golden/function_overload/schema.kumi +19 -0
  60. data/golden/game_of_life/expected/lir_00_unoptimized.txt +4 -4
  61. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +4 -4
  62. data/golden/game_of_life/expected/lir_02_inlined.txt +1294 -1294
  63. data/golden/game_of_life/expected/lir_03_cse.txt +403 -399
  64. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +403 -399
  65. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +403 -399
  66. data/golden/game_of_life/expected/lir_06_const_prop.txt +403 -399
  67. data/golden/game_of_life/expected/nast.txt +4 -4
  68. data/golden/game_of_life/expected/schema_javascript.mjs +87 -85
  69. data/golden/game_of_life/expected/schema_ruby.rb +88 -86
  70. data/golden/game_of_life/expected/snast.txt +10 -10
  71. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  72. data/golden/hash_value/expected/nast.txt +1 -1
  73. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  74. data/golden/hash_value/expected/snast.txt +1 -1
  75. data/golden/hierarchical_complex/expected/lir_02_inlined.txt +15 -15
  76. data/golden/hierarchical_complex/expected/lir_03_cse.txt +1 -1
  77. data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +1 -1
  78. data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +1 -1
  79. data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +1 -1
  80. data/golden/hierarchical_complex/expected/nast.txt +3 -3
  81. data/golden/hierarchical_complex/expected/schema_javascript.mjs +1 -1
  82. data/golden/hierarchical_complex/expected/schema_ruby.rb +2 -2
  83. data/golden/hierarchical_complex/expected/snast.txt +3 -3
  84. data/golden/inline_rename_scope_leak/expected/nast.txt +3 -3
  85. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
  86. data/golden/input_reference/expected/nast.txt +2 -2
  87. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  88. data/golden/interleaved_fusion/expected/lir_02_inlined.txt +35 -35
  89. data/golden/interleaved_fusion/expected/lir_03_cse.txt +26 -26
  90. data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +27 -26
  91. data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +26 -26
  92. data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +26 -26
  93. data/golden/interleaved_fusion/expected/nast.txt +2 -2
  94. data/golden/interleaved_fusion/expected/schema_javascript.mjs +23 -23
  95. data/golden/interleaved_fusion/expected/schema_ruby.rb +29 -29
  96. data/golden/let_inline/expected/nast.txt +4 -4
  97. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  98. data/golden/loop_fusion/expected/lir_02_inlined.txt +17 -17
  99. data/golden/loop_fusion/expected/lir_03_cse.txt +14 -14
  100. data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +14 -14
  101. data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +14 -14
  102. data/golden/loop_fusion/expected/lir_06_const_prop.txt +14 -14
  103. data/golden/loop_fusion/expected/nast.txt +1 -1
  104. data/golden/loop_fusion/expected/schema_javascript.mjs +12 -12
  105. data/golden/loop_fusion/expected/schema_ruby.rb +16 -16
  106. data/golden/min_reduce_scope/expected/nast.txt +3 -3
  107. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  108. data/golden/min_reduce_scope/expected/snast.txt +1 -1
  109. data/golden/mixed_dimensions/expected/lir_02_inlined.txt +5 -5
  110. data/golden/mixed_dimensions/expected/lir_03_cse.txt +5 -5
  111. data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +5 -5
  112. data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +5 -5
  113. data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +5 -5
  114. data/golden/mixed_dimensions/expected/nast.txt +2 -2
  115. data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -3
  116. data/golden/mixed_dimensions/expected/schema_ruby.rb +6 -6
  117. data/golden/multirank_hoisting/expected/lir_02_inlined.txt +48 -48
  118. data/golden/multirank_hoisting/expected/lir_03_cse.txt +35 -35
  119. data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +35 -35
  120. data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +35 -35
  121. data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +35 -35
  122. data/golden/multirank_hoisting/expected/nast.txt +7 -7
  123. data/golden/multirank_hoisting/expected/schema_javascript.mjs +34 -34
  124. data/golden/multirank_hoisting/expected/schema_ruby.rb +36 -36
  125. data/golden/nested_hash/expected/nast.txt +1 -1
  126. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  127. data/golden/reduction_broadcast/expected/lir_02_inlined.txt +30 -30
  128. data/golden/reduction_broadcast/expected/lir_03_cse.txt +22 -22
  129. data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +22 -22
  130. data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +22 -22
  131. data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +22 -22
  132. data/golden/reduction_broadcast/expected/nast.txt +3 -3
  133. data/golden/reduction_broadcast/expected/schema_javascript.mjs +18 -18
  134. data/golden/reduction_broadcast/expected/schema_ruby.rb +23 -23
  135. data/golden/reduction_broadcast/expected/snast.txt +1 -1
  136. data/golden/roll/expected/schema_ruby.rb +1 -1
  137. data/golden/shift/expected/schema_ruby.rb +1 -1
  138. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  139. data/golden/simple_math/expected/lir_00_unoptimized.txt +1 -1
  140. data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +1 -1
  141. data/golden/simple_math/expected/lir_02_inlined.txt +1 -1
  142. data/golden/simple_math/expected/lir_03_cse.txt +1 -1
  143. data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +1 -1
  144. data/golden/simple_math/expected/lir_04_loop_invcm.txt +1 -1
  145. data/golden/simple_math/expected/lir_06_const_prop.txt +1 -1
  146. data/golden/simple_math/expected/nast.txt +5 -5
  147. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  148. data/golden/simple_math/expected/snast.txt +2 -2
  149. data/golden/streaming_basics/expected/lir_02_inlined.txt +25 -25
  150. data/golden/streaming_basics/expected/lir_03_cse.txt +13 -13
  151. data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +13 -13
  152. data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +13 -13
  153. data/golden/streaming_basics/expected/lir_06_const_prop.txt +13 -13
  154. data/golden/streaming_basics/expected/nast.txt +8 -8
  155. data/golden/streaming_basics/expected/schema_javascript.mjs +13 -13
  156. data/golden/streaming_basics/expected/schema_ruby.rb +14 -14
  157. data/golden/streaming_basics/expected/snast.txt +1 -1
  158. data/golden/tuples/expected/lir_00_unoptimized.txt +5 -5
  159. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +5 -5
  160. data/golden/tuples/expected/lir_02_inlined.txt +5 -5
  161. data/golden/tuples/expected/lir_03_cse.txt +5 -5
  162. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +5 -5
  163. data/golden/tuples/expected/lir_04_loop_invcm.txt +5 -5
  164. data/golden/tuples/expected/lir_06_const_prop.txt +5 -5
  165. data/golden/tuples/expected/nast.txt +4 -4
  166. data/golden/tuples/expected/schema_ruby.rb +1 -1
  167. data/golden/tuples/expected/snast.txt +6 -6
  168. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
  169. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
  170. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +17 -17
  171. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +13 -13
  172. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +13 -13
  173. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +13 -13
  174. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +13 -13
  175. data/golden/tuples_and_arrays/expected/nast.txt +3 -3
  176. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +13 -13
  177. data/golden/tuples_and_arrays/expected/schema_ruby.rb +14 -14
  178. data/golden/tuples_and_arrays/expected/snast.txt +2 -2
  179. data/golden/us_tax_2024/expected/ast.txt +63 -670
  180. data/golden/us_tax_2024/expected/input_plan.txt +8 -45
  181. data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +253 -863
  182. data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +253 -863
  183. data/golden/us_tax_2024/expected/lir_02_inlined.txt +1215 -5139
  184. data/golden/us_tax_2024/expected/lir_03_cse.txt +587 -2460
  185. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +632 -2480
  186. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +587 -2400
  187. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +587 -2400
  188. data/golden/us_tax_2024/expected/nast.txt +123 -826
  189. data/golden/us_tax_2024/expected/schema_javascript.mjs +127 -581
  190. data/golden/us_tax_2024/expected/schema_ruby.rb +135 -610
  191. data/golden/us_tax_2024/expected/snast.txt +155 -858
  192. data/golden/us_tax_2024/expected.json +120 -1
  193. data/golden/us_tax_2024/input.json +18 -9
  194. data/golden/us_tax_2024/schema.kumi +48 -178
  195. data/golden/with_constants/expected/lir_00_unoptimized.txt +1 -1
  196. data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +1 -1
  197. data/golden/with_constants/expected/lir_02_inlined.txt +1 -1
  198. data/golden/with_constants/expected/lir_03_cse.txt +1 -1
  199. data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +1 -1
  200. data/golden/with_constants/expected/lir_04_loop_invcm.txt +1 -1
  201. data/golden/with_constants/expected/lir_06_const_prop.txt +1 -1
  202. data/golden/with_constants/expected/nast.txt +2 -2
  203. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  204. data/golden/with_constants/expected/snast.txt +2 -2
  205. data/lib/kumi/analyzer.rb +12 -12
  206. data/lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb +236 -0
  207. data/lib/kumi/core/analyzer/passes/input_collector.rb +22 -4
  208. data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +118 -74
  209. data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +64 -18
  210. data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +9 -4
  211. data/lib/kumi/core/analyzer/passes/snast_pass.rb +3 -1
  212. data/lib/kumi/core/analyzer/passes/unsat_detector.rb +172 -198
  213. data/lib/kumi/core/error_reporter.rb +36 -1
  214. data/lib/kumi/core/errors.rb +33 -1
  215. data/lib/kumi/core/functions/function_spec.rb +5 -4
  216. data/lib/kumi/core/functions/loader.rb +17 -1
  217. data/lib/kumi/core/functions/overload_resolver.rb +164 -0
  218. data/lib/kumi/core/functions/type_error_reporter.rb +118 -0
  219. data/lib/kumi/core/functions/type_rules.rb +155 -35
  220. data/lib/kumi/core/types/inference.rb +29 -22
  221. data/lib/kumi/core/types/normalizer.rb +29 -45
  222. data/lib/kumi/core/types/validator.rb +16 -27
  223. data/lib/kumi/core/types/value_objects.rb +116 -0
  224. data/lib/kumi/core/types.rb +45 -37
  225. data/lib/kumi/registry_v2/loader.rb +90 -0
  226. data/lib/kumi/registry_v2.rb +18 -1
  227. data/lib/kumi/version.rb +1 -1
  228. metadata +21 -7
  229. data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +0 -59
  230. data/lib/kumi/core/atom_unsat_solver.rb +0 -396
  231. data/lib/kumi/core/constraint_relationship_solver.rb +0 -641
  232. data/lib/kumi/core/types/builder.rb +0 -23
  233. data/lib/kumi/core/types/compatibility.rb +0 -96
  234. data/lib/kumi/core/types/formatter.rb +0 -26
@@ -51,7 +51,7 @@
51
51
  )
52
52
  )
53
53
  (VALUE neighbors
54
- (Call :"agg.sum"
54
+ (Call :sum
55
55
  (Tuple
56
56
  (Ref n)
57
57
  (Ref s)
@@ -83,19 +83,19 @@
83
83
  )
84
84
  )
85
85
  (VALUE keep_alive
86
- (Call :"core.and"
86
+ (Call :and
87
87
  (Ref n2_alive)
88
88
  (Ref alive)
89
89
  )
90
90
  )
91
91
  (VALUE next_alive
92
- (Call :"core.or"
92
+ (Call :or
93
93
  (Ref n3_alive)
94
94
  (Ref keep_alive)
95
95
  )
96
96
  )
97
97
  (VALUE next_state
98
- (Call :__select__
98
+ (Call :select
99
99
  (Ref next_alive)
100
100
  (Const 1)
101
101
  (Const 0)
@@ -1,94 +1,96 @@
1
1
  export function _next_state(input) {
2
2
  let out = [];
3
3
  let t285 = input["rows"];
4
- let t1539 = t285.length;
5
- const t1540 = -1;
6
- const t1542 = 0;
7
- const t1546 = 1;
8
- const t1334 = 3;
9
- const t1339 = 2;
10
- let t1547 = t1539 - t1546;
4
+ let t1548 = t285.length;
5
+ const t1549 = -1;
6
+ const t1551 = 0;
7
+ const t1555 = 1;
8
+ const t1534 = 3;
9
+ const t1745 = 2;
10
+ const t1952 = 0;
11
+ const t291 = 1;
12
+ let t1556 = t1548 - t1555;
11
13
  t285.forEach((rows_el_286, rows_i_287) => {
12
14
  let out_1 = [];
13
- let t1541 = rows_i_287 - t1540;
14
- let t1561 = rows_i_287 - t1546;
15
- let t1580 = ((rows_i_287 % t1539) + t1539) % t1539;
16
- let t1543 = t1541 >= t1542;
17
- let t1544 = t1541 < t1539;
18
- let t1549 = Math.min(Math.max(t1541, t1542), t1547);
19
- let t1563 = t1561 >= t1542;
20
- let t1564 = t1561 < t1539;
21
- let t1569 = Math.min(Math.max(t1561, t1542), t1547);
22
- let t1581 = t1580 + t1539;
23
- let t1545 = t1543 && t1544;
24
- let t1550 = t285[t1549];
25
- let t1565 = t1563 && t1564;
26
- let t1570 = t285[t1569];
27
- let t1582 = ((t1581 % t1539) + t1539) % t1539;
28
- let t1551 = t1550.length;
29
- let t1571 = t1570.length;
30
- let t1583 = t285[t1582];
31
- let t1584 = t1583.length;
32
- let t1640 = t1551 - t1546;
33
- let t1696 = t1571 - t1546;
34
- let t1592 = t1584 - t1546;
15
+ let t1550 = rows_i_287 - t1549;
16
+ let t1570 = rows_i_287 - t1555;
17
+ let t1589 = ((rows_i_287 % t1548) + t1548) % t1548;
18
+ let t1552 = t1550 >= t1551;
19
+ let t1553 = t1550 < t1548;
20
+ let t1558 = Math.min(Math.max(t1550, t1551), t1556);
21
+ let t1572 = t1570 >= t1551;
22
+ let t1573 = t1570 < t1548;
23
+ let t1578 = Math.min(Math.max(t1570, t1551), t1556);
24
+ let t1590 = t1589 + t1548;
25
+ let t1554 = t1552 && t1553;
26
+ let t1559 = t285[t1558];
27
+ let t1574 = t1572 && t1573;
28
+ let t1579 = t285[t1578];
29
+ let t1591 = ((t1590 % t1548) + t1548) % t1548;
30
+ let t1560 = t1559.length;
31
+ let t1580 = t1579.length;
32
+ let t1592 = t285[t1591];
33
+ let t1593 = t1592.length;
34
+ let t1649 = t1560 - t1555;
35
+ let t1705 = t1580 - t1555;
36
+ let t1601 = t1593 - t1555;
35
37
  rows_el_286.forEach((col_el_288, col_i_289) => {
36
- let t1552 = ((col_i_289 % t1551) + t1551) % t1551;
37
- let t1553 = t1552 + t1551;
38
- let t1554 = ((t1553 % t1551) + t1551) % t1551;
39
- let t1555 = t1550[t1554];
40
- let t1557 = t1545 ? t1555 : t1542;
41
- let t1572 = ((col_i_289 % t1571) + t1571) % t1571;
42
- let t1573 = t1572 + t1571;
43
- let t1574 = ((t1573 % t1571) + t1571) % t1571;
44
- let t1575 = t1570[t1574];
45
- let t1577 = t1565 ? t1575 : t1542;
46
- let t1586 = col_i_289 - t1540;
47
- let t1588 = t1586 >= t1542;
48
- let t1589 = t1586 < t1584;
49
- let t1590 = t1588 && t1589;
50
- let t1594 = Math.min(Math.max(t1586, t1542), t1592);
51
- let t1595 = t1583[t1594];
52
- let t1597 = t1590 ? t1595 : t1542;
53
- let t1606 = col_i_289 - t1546;
54
- let t1608 = t1606 >= t1542;
55
- let t1609 = t1606 < t1584;
56
- let t1610 = t1608 && t1609;
57
- let t1614 = Math.min(Math.max(t1606, t1542), t1592);
58
- let t1615 = t1583[t1614];
59
- let t1617 = t1610 ? t1615 : t1542;
60
- let t1636 = t1586 < t1551;
61
- let t1637 = t1588 && t1636;
62
- let t1638 = t1545 && t1637;
63
- let t1642 = Math.min(Math.max(t1586, t1542), t1640);
64
- let t1643 = t1550[t1642];
65
- let t1645 = t1638 ? t1643 : t1542;
66
- let t1664 = t1606 < t1551;
67
- let t1665 = t1608 && t1664;
68
- let t1666 = t1545 && t1665;
69
- let t1670 = Math.min(Math.max(t1606, t1542), t1640);
70
- let t1671 = t1550[t1670];
71
- let t1673 = t1666 ? t1671 : t1542;
72
- let t1692 = t1586 < t1571;
73
- let t1693 = t1588 && t1692;
74
- let t1694 = t1565 && t1693;
75
- let t1698 = Math.min(Math.max(t1586, t1542), t1696);
76
- let t1699 = t1570[t1698];
77
- let t1701 = t1694 ? t1699 : t1542;
78
- let t1720 = t1606 < t1571;
79
- let t1721 = t1608 && t1720;
80
- let t1722 = t1565 && t1721;
81
- let t1726 = Math.min(Math.max(t1606, t1542), t1696);
82
- let t1727 = t1570[t1726];
83
- let t1729 = t1722 ? t1727 : t1542;
84
- let t1332 = [t1557, t1577, t1597, t1617, t1645, t1673, t1701, t1729];
85
- let t1333 = t1332.reduce((a, b) => a + b, 0);
86
- let t1335 = t1333 == t1334;
87
- let t1340 = t1333 == t1339;
88
- let t1344 = col_el_288 > t1542;
89
- let t1345 = t1340 && t1344;
90
- let t528 = t1335 || t1345;
91
- let t293 = t528 ? t1546 : t1542;
38
+ let t1561 = ((col_i_289 % t1560) + t1560) % t1560;
39
+ let t1562 = t1561 + t1560;
40
+ let t1563 = ((t1562 % t1560) + t1560) % t1560;
41
+ let t1564 = t1559[t1563];
42
+ let t1566 = t1554 ? t1564 : t1551;
43
+ let t1581 = ((col_i_289 % t1580) + t1580) % t1580;
44
+ let t1582 = t1581 + t1580;
45
+ let t1583 = ((t1582 % t1580) + t1580) % t1580;
46
+ let t1584 = t1579[t1583];
47
+ let t1586 = t1574 ? t1584 : t1551;
48
+ let t1595 = col_i_289 - t1549;
49
+ let t1597 = t1595 >= t1551;
50
+ let t1598 = t1595 < t1593;
51
+ let t1599 = t1597 && t1598;
52
+ let t1603 = Math.min(Math.max(t1595, t1551), t1601);
53
+ let t1604 = t1592[t1603];
54
+ let t1606 = t1599 ? t1604 : t1551;
55
+ let t1615 = col_i_289 - t1555;
56
+ let t1617 = t1615 >= t1551;
57
+ let t1618 = t1615 < t1593;
58
+ let t1619 = t1617 && t1618;
59
+ let t1623 = Math.min(Math.max(t1615, t1551), t1601);
60
+ let t1624 = t1592[t1623];
61
+ let t1626 = t1619 ? t1624 : t1551;
62
+ let t1645 = t1595 < t1560;
63
+ let t1646 = t1597 && t1645;
64
+ let t1647 = t1554 && t1646;
65
+ let t1651 = Math.min(Math.max(t1595, t1551), t1649);
66
+ let t1652 = t1559[t1651];
67
+ let t1654 = t1647 ? t1652 : t1551;
68
+ let t1673 = t1615 < t1560;
69
+ let t1674 = t1617 && t1673;
70
+ let t1675 = t1554 && t1674;
71
+ let t1679 = Math.min(Math.max(t1615, t1551), t1649);
72
+ let t1680 = t1559[t1679];
73
+ let t1682 = t1675 ? t1680 : t1551;
74
+ let t1701 = t1595 < t1580;
75
+ let t1702 = t1597 && t1701;
76
+ let t1703 = t1574 && t1702;
77
+ let t1707 = Math.min(Math.max(t1595, t1551), t1705);
78
+ let t1708 = t1579[t1707];
79
+ let t1710 = t1703 ? t1708 : t1551;
80
+ let t1729 = t1615 < t1580;
81
+ let t1730 = t1617 && t1729;
82
+ let t1731 = t1574 && t1730;
83
+ let t1735 = Math.min(Math.max(t1615, t1551), t1705);
84
+ let t1736 = t1579[t1735];
85
+ let t1738 = t1731 ? t1736 : t1551;
86
+ let t1545 = [t1566, t1586, t1606, t1626, t1654, t1682, t1710, t1738];
87
+ let t1546 = t1545.reduce((a, b) => a + b, 0);
88
+ let t1535 = t1546 == t1534;
89
+ let t1746 = t1546 == t1745;
90
+ let t1953 = col_el_288 > t1952;
91
+ let t1742 = t1746 && t1953;
92
+ let t1531 = t1535 || t1742;
93
+ let t293 = t1531 ? t291 : t1952;
92
94
  out_1.push(t293);
93
95
  });
94
96
  out.push(out_1);
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_7f8da9f72da44456b53831adb45862195177b23a6de44ddaeb2f4548d3a03763
2
+ module Kumi::Compiled::KUMI_283fb5a79e6f8291e61648873c3f66e10aa9bd5f67c9a7f319663c393389237a
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -28,94 +28,96 @@ module Kumi::Compiled::KUMI_7f8da9f72da44456b53831adb45862195177b23a6de44ddaeb2f
28
28
  def _next_state(input = @input)
29
29
  out = []
30
30
  t285 = input["rows"] || input[:rows]
31
- t1539 = t285.length
32
- t1540 = -1
33
- t1542 = 0
34
- t1546 = 1
35
- t1334 = 3
36
- t1339 = 2
37
- t1547 = t1539 - t1546
31
+ t1548 = t285.length
32
+ t1549 = -1
33
+ t1551 = 0
34
+ t1555 = 1
35
+ t1534 = 3
36
+ t1745 = 2
37
+ t1952 = 0
38
+ t291 = 1
39
+ t1556 = t1548 - t1555
38
40
  t285.each_with_index do |rows_el_286, rows_i_287|
39
41
  out_1 = []
40
- t1541 = rows_i_287 - t1540
41
- t1561 = rows_i_287 - t1546
42
- t1580 = rows_i_287 % t1539
43
- t1543 = t1541 >= t1542
44
- t1544 = t1541 < t1539
45
- t1549 = [[ t1541, t1542 ].max, t1547 ].min
46
- t1563 = t1561 >= t1542
47
- t1564 = t1561 < t1539
48
- t1569 = [[ t1561, t1542 ].max, t1547 ].min
49
- t1581 = t1580 + t1539
50
- t1545 = t1543 && t1544
51
- t1550 = t285[t1549]
52
- t1565 = t1563 && t1564
53
- t1570 = t285[t1569]
54
- t1582 = t1581 % t1539
55
- t1551 = t1550.length
56
- t1571 = t1570.length
57
- t1583 = t285[t1582]
58
- t1584 = t1583.length
59
- t1640 = t1551 - t1546
60
- t1696 = t1571 - t1546
61
- t1592 = t1584 - t1546
42
+ t1550 = rows_i_287 - t1549
43
+ t1570 = rows_i_287 - t1555
44
+ t1589 = rows_i_287 % t1548
45
+ t1552 = t1550 >= t1551
46
+ t1553 = t1550 < t1548
47
+ t1558 = [[ t1550, t1551 ].max, t1556 ].min
48
+ t1572 = t1570 >= t1551
49
+ t1573 = t1570 < t1548
50
+ t1578 = [[ t1570, t1551 ].max, t1556 ].min
51
+ t1590 = t1589 + t1548
52
+ t1554 = t1552 && t1553
53
+ t1559 = t285[t1558]
54
+ t1574 = t1572 && t1573
55
+ t1579 = t285[t1578]
56
+ t1591 = t1590 % t1548
57
+ t1560 = t1559.length
58
+ t1580 = t1579.length
59
+ t1592 = t285[t1591]
60
+ t1593 = t1592.length
61
+ t1649 = t1560 - t1555
62
+ t1705 = t1580 - t1555
63
+ t1601 = t1593 - t1555
62
64
  rows_el_286.each_with_index do |col_el_288, col_i_289|
63
- t1552 = col_i_289 % t1551
64
- t1553 = t1552 + t1551
65
- t1554 = t1553 % t1551
66
- t1555 = t1550[t1554]
67
- t1557 = t1545 ? t1555 : t1542
68
- t1572 = col_i_289 % t1571
69
- t1573 = t1572 + t1571
70
- t1574 = t1573 % t1571
71
- t1575 = t1570[t1574]
72
- t1577 = t1565 ? t1575 : t1542
73
- t1586 = col_i_289 - t1540
74
- t1588 = t1586 >= t1542
75
- t1589 = t1586 < t1584
76
- t1590 = t1588 && t1589
77
- t1594 = [[ t1586, t1542 ].max, t1592 ].min
78
- t1595 = t1583[t1594]
79
- t1597 = t1590 ? t1595 : t1542
80
- t1606 = col_i_289 - t1546
81
- t1608 = t1606 >= t1542
82
- t1609 = t1606 < t1584
83
- t1610 = t1608 && t1609
84
- t1614 = [[ t1606, t1542 ].max, t1592 ].min
85
- t1615 = t1583[t1614]
86
- t1617 = t1610 ? t1615 : t1542
87
- t1636 = t1586 < t1551
88
- t1637 = t1588 && t1636
89
- t1638 = t1545 && t1637
90
- t1642 = [[ t1586, t1542 ].max, t1640 ].min
91
- t1643 = t1550[t1642]
92
- t1645 = t1638 ? t1643 : t1542
93
- t1664 = t1606 < t1551
94
- t1665 = t1608 && t1664
95
- t1666 = t1545 && t1665
96
- t1670 = [[ t1606, t1542 ].max, t1640 ].min
97
- t1671 = t1550[t1670]
98
- t1673 = t1666 ? t1671 : t1542
99
- t1692 = t1586 < t1571
100
- t1693 = t1588 && t1692
101
- t1694 = t1565 && t1693
102
- t1698 = [[ t1586, t1542 ].max, t1696 ].min
103
- t1699 = t1570[t1698]
104
- t1701 = t1694 ? t1699 : t1542
105
- t1720 = t1606 < t1571
106
- t1721 = t1608 && t1720
107
- t1722 = t1565 && t1721
108
- t1726 = [[ t1606, t1542 ].max, t1696 ].min
109
- t1727 = t1570[t1726]
110
- t1729 = t1722 ? t1727 : t1542
111
- t1332 = [t1557, t1577, t1597, t1617, t1645, t1673, t1701, t1729]
112
- t1333 = t1332.sum
113
- t1335 = t1333 == t1334
114
- t1340 = t1333 == t1339
115
- t1344 = col_el_288 > t1542
116
- t1345 = t1340 && t1344
117
- t528 = t1335 || t1345
118
- t293 = t528 ? t1546 : t1542
65
+ t1561 = col_i_289 % t1560
66
+ t1562 = t1561 + t1560
67
+ t1563 = t1562 % t1560
68
+ t1564 = t1559[t1563]
69
+ t1566 = t1554 ? t1564 : t1551
70
+ t1581 = col_i_289 % t1580
71
+ t1582 = t1581 + t1580
72
+ t1583 = t1582 % t1580
73
+ t1584 = t1579[t1583]
74
+ t1586 = t1574 ? t1584 : t1551
75
+ t1595 = col_i_289 - t1549
76
+ t1597 = t1595 >= t1551
77
+ t1598 = t1595 < t1593
78
+ t1599 = t1597 && t1598
79
+ t1603 = [[ t1595, t1551 ].max, t1601 ].min
80
+ t1604 = t1592[t1603]
81
+ t1606 = t1599 ? t1604 : t1551
82
+ t1615 = col_i_289 - t1555
83
+ t1617 = t1615 >= t1551
84
+ t1618 = t1615 < t1593
85
+ t1619 = t1617 && t1618
86
+ t1623 = [[ t1615, t1551 ].max, t1601 ].min
87
+ t1624 = t1592[t1623]
88
+ t1626 = t1619 ? t1624 : t1551
89
+ t1645 = t1595 < t1560
90
+ t1646 = t1597 && t1645
91
+ t1647 = t1554 && t1646
92
+ t1651 = [[ t1595, t1551 ].max, t1649 ].min
93
+ t1652 = t1559[t1651]
94
+ t1654 = t1647 ? t1652 : t1551
95
+ t1673 = t1615 < t1560
96
+ t1674 = t1617 && t1673
97
+ t1675 = t1554 && t1674
98
+ t1679 = [[ t1615, t1551 ].max, t1649 ].min
99
+ t1680 = t1559[t1679]
100
+ t1682 = t1675 ? t1680 : t1551
101
+ t1701 = t1595 < t1580
102
+ t1702 = t1597 && t1701
103
+ t1703 = t1574 && t1702
104
+ t1707 = [[ t1595, t1551 ].max, t1705 ].min
105
+ t1708 = t1579[t1707]
106
+ t1710 = t1703 ? t1708 : t1551
107
+ t1729 = t1615 < t1580
108
+ t1730 = t1617 && t1729
109
+ t1731 = t1574 && t1730
110
+ t1735 = [[ t1615, t1551 ].max, t1705 ].min
111
+ t1736 = t1579[t1735]
112
+ t1738 = t1731 ? t1736 : t1551
113
+ t1545 = [t1566, t1586, t1606, t1626, t1654, t1682, t1710, t1738]
114
+ t1546 = t1545.sum
115
+ t1535 = t1546 == t1534
116
+ t1746 = t1546 == t1745
117
+ t1953 = col_el_288 > t1952
118
+ t1742 = t1746 && t1953
119
+ t1531 = t1535 || t1742
120
+ t293 = t1531 ? t291 : t1952
119
121
  out_1 << t293
120
122
  end
121
123
  out << out_1
@@ -61,34 +61,34 @@
61
61
  (Ref ne) :: [rows, col] -> integer
62
62
  (Ref sw) :: [rows, col] -> integer
63
63
  (Ref se) :: [rows, col] -> integer
64
- ) :: [rows, col] -> tuple<integer>
65
- ) :: [rows, col] ->
66
- ) :: [rows, col] ->
67
- (TRAIT alive
64
+ ) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
65
+ ) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
66
+ ) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
67
+ (VALUE alive
68
68
  (Call :core.gt
69
69
  (Ref a) :: [rows, col] -> integer
70
70
  (Const 0) :: [] -> integer
71
71
  ) :: [rows, col] -> boolean
72
72
  ) :: [rows, col] -> boolean
73
- (TRAIT n3_alive
73
+ (VALUE n3_alive
74
74
  (Call :core.eq
75
- (Ref neighbors) :: [rows, col] ->
75
+ (Ref neighbors) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
76
76
  (Const 3) :: [] -> integer
77
77
  ) :: [rows, col] -> boolean
78
78
  ) :: [rows, col] -> boolean
79
- (TRAIT n2_alive
79
+ (VALUE n2_alive
80
80
  (Call :core.eq
81
- (Ref neighbors) :: [rows, col] ->
81
+ (Ref neighbors) :: [rows, col] -> tuple<integer, integer, integer, integer, integer, integer, integer, integer>
82
82
  (Const 2) :: [] -> integer
83
83
  ) :: [rows, col] -> boolean
84
84
  ) :: [rows, col] -> boolean
85
- (TRAIT keep_alive
85
+ (VALUE keep_alive
86
86
  (Call :core.and
87
87
  (Ref n2_alive) :: [rows, col] -> boolean
88
88
  (Ref alive) :: [rows, col] -> boolean
89
89
  ) :: [rows, col] -> boolean
90
90
  ) :: [rows, col] -> boolean
91
- (TRAIT next_alive
91
+ (VALUE next_alive
92
92
  (Call :core.or
93
93
  (Ref n3_alive) :: [rows, col] -> boolean
94
94
  (Ref keep_alive) :: [rows, col] -> boolean
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_6bf7bc7a8b5aa3100171c0cfb98b3fbd85a8044bd3561af65115d0ed6c7d7656
2
+ module Kumi::Compiled::KUMI_12cfcb8020fae57cf986508d88121cdcd8d169a25ea60becdb0375c66241fa37
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -16,7 +16,7 @@
16
16
  )
17
17
  )
18
18
  (VALUE john_user
19
- (Call :__select__
19
+ (Call :select
20
20
  (Ref is_john)
21
21
  (Ref users)
22
22
  (Const "NOT_JOHN")
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_c643326a905412f8383dfdf5434a76da6946aa8f7d89002f06aa830abb137d5e
2
+ module Kumi::Compiled::KUMI_0f694be63aa892525e8879fe071b4a4a2ad55567b0480c5fca002f748a54818d
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -9,7 +9,7 @@
9
9
  ) :: [users] -> pair
10
10
  ) :: [users] -> hash
11
11
  ) :: [users] -> hash
12
- (TRAIT is_john
12
+ (VALUE is_john
13
13
  (Call :core.eq
14
14
  (InputRef users.user.name key_chain=[]) :: [users] -> string
15
15
  (Const "John") :: [] -> string
@@ -57,19 +57,19 @@
57
57
  loop offices id=L13 in %t46 as el=%offices_el_47, idx=%offices_i_48
58
58
  %t49 = load_field offices_el_47["teams"] :: any
59
59
  loop teams id=L14 in %t49 as el=%teams_el_50, idx=%teams_i_51
60
- %t52 = load_field teams_el_50["employees"] :: any
61
- %t88 = load_input "regions" :: array
62
- %t89 = load_field regions_el_44["offices"] :: any
63
- %t90 = load_field offices_el_47["teams"] :: any
64
- %t91 = load_field teams_el_50["performance_score"] :: float
65
- %t92 = const 0.9 :: float
66
- %t93 = call core.gte(%t91, %t92) :: boolean
67
60
  %t88 = load_input "regions" :: array
68
61
  %t89 = load_field regions_el_44["offices"] :: any
69
62
  %t90 = load_field offices_el_47["teams"] :: any
70
63
  %t91 = load_field teams_el_50["performance_score"] :: float
71
64
  %t92 = const 0.9 :: float
72
65
  %t93 = call core.gte(%t91, %t92) :: boolean
66
+ %t101 = load_input "regions" :: array
67
+ %t102 = load_field regions_el_44["offices"] :: any
68
+ %t103 = load_field offices_el_47["teams"] :: any
69
+ %t104 = load_field teams_el_50["performance_score"] :: float
70
+ %t105 = const 0.9 :: float
71
+ %t106 = call core.gte(%t104, %t105) :: boolean
72
+ %t52 = load_field teams_el_50["employees"] :: any
73
73
  loop employees id=L15 in %t52 as el=%employees_el_53, idx=%employees_i_54
74
74
  %t74 = load_input "regions" :: array
75
75
  %t75 = load_field regions_el_44["offices"] :: any
@@ -90,14 +90,14 @@
90
90
  %t60 = load_field employees_el_53["salary"] :: float
91
91
  %t61 = const 0.3 :: float
92
92
  %t62 = call core.mul(%t60, %t61) :: float
93
- %t74 = load_input "regions" :: array
94
- %t75 = load_field regions_el_44["offices"] :: any
95
- %t76 = load_field offices_el_47["teams"] :: any
96
- %t77 = load_field teams_el_50["employees"] :: any
97
- %t78 = load_field employees_el_53["rating"] :: float
98
- %t79 = const 4.5 :: float
99
- %t80 = call core.gte(%t78, %t79) :: boolean
100
- %t65 = call core.and(%t80, %t93) :: boolean
93
+ %t94 = load_input "regions" :: array
94
+ %t95 = load_field regions_el_44["offices"] :: any
95
+ %t96 = load_field offices_el_47["teams"] :: any
96
+ %t97 = load_field teams_el_50["employees"] :: any
97
+ %t98 = load_field employees_el_53["rating"] :: float
98
+ %t99 = const 4.5 :: float
99
+ %t100 = call core.gte(%t98, %t99) :: boolean
100
+ %t65 = call core.and(%t100, %t106) :: boolean
101
101
  %t66 = load_field employees_el_53["salary"] :: float
102
102
  %t67 = const 0.2 :: float
103
103
  %t68 = call core.mul(%t66, %t67) :: float
@@ -57,10 +57,10 @@
57
57
  loop offices id=L13 in %t46 as el=%offices_el_47, idx=%offices_i_48
58
58
  %t49 = load_field offices_el_47["teams"] :: any
59
59
  loop teams id=L14 in %t49 as el=%teams_el_50, idx=%teams_i_51
60
- %t52 = load_field teams_el_50["employees"] :: any
61
60
  %t91 = load_field teams_el_50["performance_score"] :: float
62
61
  %t92 = const 0.9 :: float
63
62
  %t93 = call core.gte(%t91, %t92) :: boolean
63
+ %t52 = load_field teams_el_50["employees"] :: any
64
64
  loop employees id=L15 in %t52 as el=%employees_el_53, idx=%employees_i_54
65
65
  %t78 = load_field employees_el_53["rating"] :: float
66
66
  %t79 = const 4.5 :: float
@@ -57,10 +57,10 @@
57
57
  loop offices id=L13 in %t46 as el=%offices_el_47, idx=%offices_i_48
58
58
  %t49 = load_field offices_el_47["teams"] :: any
59
59
  loop teams id=L14 in %t49 as el=%teams_el_50, idx=%teams_i_51
60
- %t52 = load_field teams_el_50["employees"] :: any
61
60
  %t91 = load_field teams_el_50["performance_score"] :: float
62
61
  %t92 = const 0.9 :: float
63
62
  %t93 = call core.gte(%t91, %t92) :: boolean
63
+ %t52 = load_field teams_el_50["employees"] :: any
64
64
  loop employees id=L15 in %t52 as el=%employees_el_53, idx=%employees_i_54
65
65
  %t78 = load_field employees_el_53["rating"] :: float
66
66
  %t79 = const 4.5 :: float
@@ -63,9 +63,9 @@
63
63
  loop offices id=L13 in %t46 as el=%offices_el_47, idx=%offices_i_48
64
64
  %t49 = load_field offices_el_47["teams"] :: any
65
65
  loop teams id=L14 in %t49 as el=%teams_el_50, idx=%teams_i_51
66
- %t52 = load_field teams_el_50["employees"] :: any
67
66
  %t91 = load_field teams_el_50["performance_score"] :: float
68
67
  %t93 = call core.gte(%t91, %t92) :: boolean
68
+ %t52 = load_field teams_el_50["employees"] :: any
69
69
  loop employees id=L15 in %t52 as el=%employees_el_53, idx=%employees_i_54
70
70
  %t78 = load_field employees_el_53["rating"] :: float
71
71
  %t80 = call core.gte(%t78, %t79) :: boolean
@@ -63,9 +63,9 @@
63
63
  loop offices id=L13 in %t46 as el=%offices_el_47, idx=%offices_i_48
64
64
  %t49 = load_field offices_el_47["teams"] :: any
65
65
  loop teams id=L14 in %t49 as el=%teams_el_50, idx=%teams_i_51
66
- %t52 = load_field teams_el_50["employees"] :: any
67
66
  %t91 = load_field teams_el_50["performance_score"] :: float
68
67
  %t93 = call core.gte(%t91, %t92) :: boolean
68
+ %t52 = load_field teams_el_50["employees"] :: any
69
69
  loop employees id=L15 in %t52 as el=%employees_el_53, idx=%employees_i_54
70
70
  %t78 = load_field employees_el_53["rating"] :: float
71
71
  %t80 = call core.gte(%t78, %t79) :: boolean
@@ -26,7 +26,7 @@
26
26
  (Ref top_team)
27
27
  )
28
28
  )
29
- (Call :"core.mul"
29
+ (Call :multiply
30
30
  (InputRef [:regions, :region, :offices, :office, :teams, :team, :employees, :employee, :salary])
31
31
  (Const 0.3)
32
32
  )
@@ -35,11 +35,11 @@
35
35
  (Ref high_performer)
36
36
  (Ref top_team)
37
37
  )
38
- (Call :"core.mul"
38
+ (Call :multiply
39
39
  (InputRef [:regions, :region, :offices, :office, :teams, :team, :employees, :employee, :salary])
40
40
  (Const 0.2)
41
41
  )
42
- (Call :"core.mul"
42
+ (Call :multiply
43
43
  (InputRef [:regions, :region, :offices, :office, :teams, :team, :employees, :employee, :salary])
44
44
  (Const 0.05)
45
45
  )
@@ -91,9 +91,9 @@ export function _employee_bonus(input) {
91
91
  let t49 = offices_el_47["teams"];
92
92
  t49.forEach((teams_el_50, teams_i_51) => {
93
93
  let out_3 = [];
94
- let t52 = teams_el_50["employees"];
95
94
  let t91 = teams_el_50["performance_score"];
96
95
  let t93 = t91 >= t92;
96
+ let t52 = teams_el_50["employees"];
97
97
  t52.forEach((employees_el_53, employees_i_54) => {
98
98
  let t78 = employees_el_53["rating"];
99
99
  let t80 = t78 >= t79;