kumi 0.0.23 → 0.0.25

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 (166) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +2 -2
  4. data/golden/array_element/expected/schema_ruby.rb +1 -1
  5. data/golden/array_index/expected/schema_ruby.rb +1 -1
  6. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  7. data/golden/cascade_logic/expected/lir_02_inlined.txt +8 -8
  8. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  9. data/golden/chained_fusion/expected/lir_02_inlined.txt +36 -36
  10. data/golden/chained_fusion/expected/lir_03_cse.txt +23 -23
  11. data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +25 -25
  12. data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +23 -23
  13. data/golden/chained_fusion/expected/lir_06_const_prop.txt +23 -23
  14. data/golden/chained_fusion/expected/schema_javascript.mjs +23 -23
  15. data/golden/chained_fusion/expected/schema_ruby.rb +28 -28
  16. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  17. data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +18 -18
  18. data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +17 -17
  19. data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +17 -17
  20. data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +17 -17
  21. data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +17 -17
  22. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +13 -13
  23. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +18 -18
  24. data/golden/game_of_life/expected/lir_00_unoptimized.txt +33 -33
  25. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +33 -33
  26. data/golden/game_of_life/expected/lir_02_inlined.txt +1370 -1370
  27. data/golden/game_of_life/expected/lir_03_cse.txt +448 -448
  28. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +448 -448
  29. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +448 -448
  30. data/golden/game_of_life/expected/lir_06_const_prop.txt +448 -448
  31. data/golden/game_of_life/expected/schema_javascript.mjs +85 -85
  32. data/golden/game_of_life/expected/schema_ruby.rb +86 -86
  33. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  34. data/golden/hash_keys/schema.kumi +4 -5
  35. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  36. data/golden/hierarchical_complex/expected/lir_02_inlined.txt +15 -15
  37. data/golden/hierarchical_complex/expected/lir_03_cse.txt +1 -1
  38. data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +1 -1
  39. data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +1 -1
  40. data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +1 -1
  41. data/golden/hierarchical_complex/expected/schema_javascript.mjs +1 -1
  42. data/golden/hierarchical_complex/expected/schema_ruby.rb +2 -2
  43. data/golden/inline_rename_scope_leak/expected/ast.txt +48 -0
  44. data/golden/inline_rename_scope_leak/expected/input_plan.txt +10 -0
  45. data/golden/inline_rename_scope_leak/expected/lir_00_unoptimized.txt +35 -0
  46. data/golden/inline_rename_scope_leak/expected/lir_01_hoist_scalar_references.txt +35 -0
  47. data/golden/inline_rename_scope_leak/expected/lir_02_inlined.txt +49 -0
  48. data/golden/inline_rename_scope_leak/expected/lir_03_cse.txt +49 -0
  49. data/golden/inline_rename_scope_leak/expected/lir_04_1_loop_fusion.txt +49 -0
  50. data/golden/inline_rename_scope_leak/expected/lir_04_loop_invcm.txt +49 -0
  51. data/golden/inline_rename_scope_leak/expected/lir_06_const_prop.txt +49 -0
  52. data/golden/inline_rename_scope_leak/expected/nast.txt +31 -0
  53. data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +51 -0
  54. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +82 -0
  55. data/golden/inline_rename_scope_leak/expected/snast.txt +31 -0
  56. data/golden/inline_rename_scope_leak/expected.json +7 -0
  57. data/golden/inline_rename_scope_leak/input.json +4 -0
  58. data/golden/inline_rename_scope_leak/schema.kumi +24 -0
  59. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  60. data/golden/interleaved_fusion/expected/lir_02_inlined.txt +35 -35
  61. data/golden/interleaved_fusion/expected/lir_03_cse.txt +26 -26
  62. data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +27 -26
  63. data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +26 -26
  64. data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +26 -26
  65. data/golden/interleaved_fusion/expected/schema_javascript.mjs +23 -23
  66. data/golden/interleaved_fusion/expected/schema_ruby.rb +29 -29
  67. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  68. data/golden/loop_fusion/expected/lir_02_inlined.txt +17 -17
  69. data/golden/loop_fusion/expected/lir_03_cse.txt +14 -14
  70. data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +14 -14
  71. data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +14 -14
  72. data/golden/loop_fusion/expected/lir_06_const_prop.txt +14 -14
  73. data/golden/loop_fusion/expected/schema_javascript.mjs +12 -12
  74. data/golden/loop_fusion/expected/schema_ruby.rb +16 -16
  75. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  76. data/golden/mixed_dimensions/expected/lir_02_inlined.txt +5 -5
  77. data/golden/mixed_dimensions/expected/lir_03_cse.txt +5 -5
  78. data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +5 -5
  79. data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +5 -5
  80. data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +5 -5
  81. data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -3
  82. data/golden/mixed_dimensions/expected/schema_ruby.rb +6 -6
  83. data/golden/multirank_hoisting/expected/lir_02_inlined.txt +48 -48
  84. data/golden/multirank_hoisting/expected/lir_03_cse.txt +35 -35
  85. data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +35 -35
  86. data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +35 -35
  87. data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +35 -35
  88. data/golden/multirank_hoisting/expected/schema_javascript.mjs +34 -34
  89. data/golden/multirank_hoisting/expected/schema_ruby.rb +36 -36
  90. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  91. data/golden/reduction_broadcast/expected/lir_02_inlined.txt +30 -30
  92. data/golden/reduction_broadcast/expected/lir_03_cse.txt +22 -22
  93. data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +22 -22
  94. data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +22 -22
  95. data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +22 -22
  96. data/golden/reduction_broadcast/expected/schema_javascript.mjs +18 -18
  97. data/golden/reduction_broadcast/expected/schema_ruby.rb +23 -23
  98. data/golden/roll/expected/lir_00_unoptimized.txt +8 -8
  99. data/golden/roll/expected/lir_01_hoist_scalar_references.txt +8 -8
  100. data/golden/roll/expected/lir_02_inlined.txt +8 -8
  101. data/golden/roll/expected/lir_03_cse.txt +8 -8
  102. data/golden/roll/expected/lir_04_1_loop_fusion.txt +8 -8
  103. data/golden/roll/expected/lir_04_loop_invcm.txt +8 -8
  104. data/golden/roll/expected/lir_06_const_prop.txt +8 -8
  105. data/golden/roll/expected/schema_ruby.rb +1 -1
  106. data/golden/shift/expected/lir_00_unoptimized.txt +12 -12
  107. data/golden/shift/expected/lir_01_hoist_scalar_references.txt +12 -12
  108. data/golden/shift/expected/lir_02_inlined.txt +12 -12
  109. data/golden/shift/expected/lir_03_cse.txt +12 -12
  110. data/golden/shift/expected/lir_04_1_loop_fusion.txt +12 -12
  111. data/golden/shift/expected/lir_04_loop_invcm.txt +12 -12
  112. data/golden/shift/expected/lir_06_const_prop.txt +12 -12
  113. data/golden/shift/expected/schema_ruby.rb +1 -1
  114. data/golden/shift_2d/expected/lir_00_unoptimized.txt +48 -48
  115. data/golden/shift_2d/expected/lir_01_hoist_scalar_references.txt +48 -48
  116. data/golden/shift_2d/expected/lir_02_inlined.txt +48 -48
  117. data/golden/shift_2d/expected/lir_03_cse.txt +48 -48
  118. data/golden/shift_2d/expected/lir_04_1_loop_fusion.txt +48 -48
  119. data/golden/shift_2d/expected/lir_04_loop_invcm.txt +48 -48
  120. data/golden/shift_2d/expected/lir_06_const_prop.txt +48 -48
  121. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  122. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  123. data/golden/streaming_basics/expected/lir_02_inlined.txt +25 -25
  124. data/golden/streaming_basics/expected/lir_03_cse.txt +13 -13
  125. data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +13 -13
  126. data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +13 -13
  127. data/golden/streaming_basics/expected/lir_06_const_prop.txt +13 -13
  128. data/golden/streaming_basics/expected/schema_javascript.mjs +13 -13
  129. data/golden/streaming_basics/expected/schema_ruby.rb +14 -14
  130. data/golden/tuples/expected/lir_00_unoptimized.txt +4 -4
  131. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +4 -4
  132. data/golden/tuples/expected/lir_02_inlined.txt +4 -4
  133. data/golden/tuples/expected/lir_03_cse.txt +4 -4
  134. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +4 -4
  135. data/golden/tuples/expected/lir_04_loop_invcm.txt +4 -4
  136. data/golden/tuples/expected/lir_06_const_prop.txt +4 -4
  137. data/golden/tuples/expected/schema_ruby.rb +1 -1
  138. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
  139. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
  140. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +17 -17
  141. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +14 -14
  142. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +14 -14
  143. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +14 -14
  144. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +14 -14
  145. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +13 -13
  146. data/golden/tuples_and_arrays/expected/schema_ruby.rb +14 -14
  147. data/golden/us_tax_2024/expected/ast.txt +865 -0
  148. data/golden/us_tax_2024/expected/input_plan.txt +61 -0
  149. data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +901 -0
  150. data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +901 -0
  151. data/golden/us_tax_2024/expected/lir_02_inlined.txt +5178 -0
  152. data/golden/us_tax_2024/expected/lir_03_cse.txt +2499 -0
  153. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +2519 -0
  154. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +2499 -0
  155. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +2499 -0
  156. data/golden/us_tax_2024/expected/nast.txt +976 -0
  157. data/golden/us_tax_2024/expected/schema_javascript.mjs +584 -0
  158. data/golden/us_tax_2024/expected/schema_ruby.rb +639 -0
  159. data/golden/us_tax_2024/expected/snast.txt +976 -0
  160. data/golden/us_tax_2024/expected.json +1 -0
  161. data/golden/us_tax_2024/input.json +168 -0
  162. data/golden/us_tax_2024/schema.kumi +203 -0
  163. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  164. data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +227 -107
  165. data/lib/kumi/version.rb +1 -1
  166. metadata +33 -1
@@ -30,37 +30,37 @@
30
30
  loop departments id=L5 in %t19 as el=%departments_el_20, idx=%departments_i_21
31
31
  %acc36 = decl_acc :: integer
32
32
  %t37 = load_field departments_el_20["teams"] :: any
33
- %acc42 = decl_acc :: integer
34
- loop teams id=L8 in %t37 as el=%teams_el_6, idx=%teams_i_7
35
- %t38 = load_field teams_el_6["headcount"] :: integer
36
- %acc36 = acc_add agg.sum(%acc36, %t38) :: integer
37
- %t44 = load_field teams_el_6["team_name"] :: string
38
- %acc42 = acc_add agg.count(%acc42, %t44) :: integer
33
+ %acc44 = decl_acc :: integer
34
+ loop teams id=L8 in %t37 as el=%t38, idx=%t39
35
+ %t40 = load_field t38["headcount"] :: integer
36
+ %acc36 = acc_add agg.sum(%acc36, %t40) :: integer
37
+ %t48 = load_field t38["team_name"] :: string
38
+ %acc44 = acc_add agg.count(%acc44, %t48) :: integer
39
39
  end_loop
40
- %t39 = acc_load %acc36 :: integer
41
- %t45 = acc_load %acc42 :: integer
42
- %t24 = call core.div(%t39, %t45) :: float
40
+ %t41 = acc_load %acc36 :: integer
41
+ %t49 = acc_load %acc44 :: integer
42
+ %t24 = call core.div(%t41, %t49) :: float
43
43
  yield %t24
44
44
  end_loop
45
45
  )
46
46
  (Declaration is_above_average_team
47
47
  %t25 = load_input "departments" :: array
48
48
  loop departments id=L6 in %t25 as el=%departments_el_26, idx=%departments_i_27
49
- %t28 = load_field departments_el_26["teams"] :: any
50
- %acc52 = decl_acc :: integer
51
- %acc58 = decl_acc :: integer
52
- loop teams id=L10 in %t28 as el=%teams_el_6, idx=%teams_i_7
53
- %t54 = load_field teams_el_6["headcount"] :: integer
54
- %acc52 = acc_add agg.sum(%acc52, %t54) :: integer
55
- %t60 = load_field teams_el_6["team_name"] :: string
56
- %acc58 = acc_add agg.count(%acc58, %t60) :: integer
49
+ %acc56 = decl_acc :: integer
50
+ %t57 = load_field departments_el_26["teams"] :: any
51
+ %acc64 = decl_acc :: integer
52
+ loop teams id=L10 in %t57 as el=%t58, idx=%t59
53
+ %t60 = load_field t58["headcount"] :: integer
54
+ %acc56 = acc_add agg.sum(%acc56, %t60) :: integer
55
+ %t68 = load_field t58["team_name"] :: string
56
+ %acc64 = acc_add agg.count(%acc64, %t68) :: integer
57
57
  end_loop
58
- %t55 = acc_load %acc52 :: integer
59
- %t61 = acc_load %acc58 :: integer
60
- %t49 = call core.div(%t55, %t61) :: float
61
- loop teams id=L7 in %t28 as el=%teams_el_29, idx=%teams_i_30
58
+ %t61 = acc_load %acc56 :: integer
59
+ %t69 = acc_load %acc64 :: integer
60
+ %t53 = call core.div(%t61, %t69) :: float
61
+ loop teams id=L7 in %t57 as el=%teams_el_29, idx=%teams_i_30
62
62
  %t31 = load_field teams_el_29["headcount"] :: integer
63
- %t33 = call core.gt(%t31, %t49) :: boolean
63
+ %t33 = call core.gt(%t31, %t53) :: boolean
64
64
  yield %t33
65
65
  end_loop
66
66
  end_loop
@@ -30,37 +30,37 @@
30
30
  loop departments id=L5 in %t19 as el=%departments_el_20, idx=%departments_i_21
31
31
  %acc36 = decl_acc :: integer
32
32
  %t37 = load_field departments_el_20["teams"] :: any
33
- %acc42 = decl_acc :: integer
34
- loop teams id=L8 in %t37 as el=%teams_el_6, idx=%teams_i_7
35
- %t38 = load_field teams_el_6["headcount"] :: integer
36
- %acc36 = acc_add agg.sum(%acc36, %t38) :: integer
37
- %t44 = load_field teams_el_6["team_name"] :: string
38
- %acc42 = acc_add agg.count(%acc42, %t44) :: integer
33
+ %acc44 = decl_acc :: integer
34
+ loop teams id=L8 in %t37 as el=%t38, idx=%t39
35
+ %t40 = load_field t38["headcount"] :: integer
36
+ %acc36 = acc_add agg.sum(%acc36, %t40) :: integer
37
+ %t48 = load_field t38["team_name"] :: string
38
+ %acc44 = acc_add agg.count(%acc44, %t48) :: integer
39
39
  end_loop
40
- %t39 = acc_load %acc36 :: integer
41
- %t45 = acc_load %acc42 :: integer
42
- %t24 = call core.div(%t39, %t45) :: float
40
+ %t41 = acc_load %acc36 :: integer
41
+ %t49 = acc_load %acc44 :: integer
42
+ %t24 = call core.div(%t41, %t49) :: float
43
43
  yield %t24
44
44
  end_loop
45
45
  )
46
46
  (Declaration is_above_average_team
47
47
  %t25 = load_input "departments" :: array
48
48
  loop departments id=L6 in %t25 as el=%departments_el_26, idx=%departments_i_27
49
- %t28 = load_field departments_el_26["teams"] :: any
50
- %acc52 = decl_acc :: integer
51
- %acc58 = decl_acc :: integer
52
- loop teams id=L10 in %t28 as el=%teams_el_6, idx=%teams_i_7
53
- %t54 = load_field teams_el_6["headcount"] :: integer
54
- %acc52 = acc_add agg.sum(%acc52, %t54) :: integer
55
- %t60 = load_field teams_el_6["team_name"] :: string
56
- %acc58 = acc_add agg.count(%acc58, %t60) :: integer
49
+ %acc56 = decl_acc :: integer
50
+ %t57 = load_field departments_el_26["teams"] :: any
51
+ %acc64 = decl_acc :: integer
52
+ loop teams id=L10 in %t57 as el=%t58, idx=%t59
53
+ %t60 = load_field t58["headcount"] :: integer
54
+ %acc56 = acc_add agg.sum(%acc56, %t60) :: integer
55
+ %t68 = load_field t58["team_name"] :: string
56
+ %acc64 = acc_add agg.count(%acc64, %t68) :: integer
57
57
  end_loop
58
- %t55 = acc_load %acc52 :: integer
59
- %t61 = acc_load %acc58 :: integer
60
- %t49 = call core.div(%t55, %t61) :: float
61
- loop teams id=L7 in %t28 as el=%teams_el_29, idx=%teams_i_30
58
+ %t61 = acc_load %acc56 :: integer
59
+ %t69 = acc_load %acc64 :: integer
60
+ %t53 = call core.div(%t61, %t69) :: float
61
+ loop teams id=L7 in %t57 as el=%teams_el_29, idx=%teams_i_30
62
62
  %t31 = load_field teams_el_29["headcount"] :: integer
63
- %t33 = call core.gt(%t31, %t49) :: boolean
63
+ %t33 = call core.gt(%t31, %t53) :: boolean
64
64
  yield %t33
65
65
  end_loop
66
66
  end_loop
@@ -30,37 +30,37 @@
30
30
  loop departments id=L5 in %t19 as el=%departments_el_20, idx=%departments_i_21
31
31
  %acc36 = decl_acc :: integer
32
32
  %t37 = load_field departments_el_20["teams"] :: any
33
- %acc42 = decl_acc :: integer
34
- loop teams id=L8 in %t37 as el=%teams_el_6, idx=%teams_i_7
35
- %t38 = load_field teams_el_6["headcount"] :: integer
36
- %acc36 = acc_add agg.sum(%acc36, %t38) :: integer
37
- %t44 = load_field teams_el_6["team_name"] :: string
38
- %acc42 = acc_add agg.count(%acc42, %t44) :: integer
33
+ %acc44 = decl_acc :: integer
34
+ loop teams id=L8 in %t37 as el=%t38, idx=%t39
35
+ %t40 = load_field t38["headcount"] :: integer
36
+ %acc36 = acc_add agg.sum(%acc36, %t40) :: integer
37
+ %t48 = load_field t38["team_name"] :: string
38
+ %acc44 = acc_add agg.count(%acc44, %t48) :: integer
39
39
  end_loop
40
- %t39 = acc_load %acc36 :: integer
41
- %t45 = acc_load %acc42 :: integer
42
- %t24 = call core.div(%t39, %t45) :: float
40
+ %t41 = acc_load %acc36 :: integer
41
+ %t49 = acc_load %acc44 :: integer
42
+ %t24 = call core.div(%t41, %t49) :: float
43
43
  yield %t24
44
44
  end_loop
45
45
  )
46
46
  (Declaration is_above_average_team
47
47
  %t25 = load_input "departments" :: array
48
48
  loop departments id=L6 in %t25 as el=%departments_el_26, idx=%departments_i_27
49
- %t28 = load_field departments_el_26["teams"] :: any
50
- %acc52 = decl_acc :: integer
51
- %acc58 = decl_acc :: integer
52
- loop teams id=L10 in %t28 as el=%teams_el_6, idx=%teams_i_7
53
- %t54 = load_field teams_el_6["headcount"] :: integer
54
- %acc52 = acc_add agg.sum(%acc52, %t54) :: integer
55
- %t60 = load_field teams_el_6["team_name"] :: string
56
- %acc58 = acc_add agg.count(%acc58, %t60) :: integer
49
+ %acc56 = decl_acc :: integer
50
+ %t57 = load_field departments_el_26["teams"] :: any
51
+ %acc64 = decl_acc :: integer
52
+ loop teams id=L10 in %t57 as el=%t58, idx=%t59
53
+ %t60 = load_field t58["headcount"] :: integer
54
+ %acc56 = acc_add agg.sum(%acc56, %t60) :: integer
55
+ %t68 = load_field t58["team_name"] :: string
56
+ %acc64 = acc_add agg.count(%acc64, %t68) :: integer
57
57
  end_loop
58
- %t55 = acc_load %acc52 :: integer
59
- %t61 = acc_load %acc58 :: integer
60
- %t49 = call core.div(%t55, %t61) :: float
61
- loop teams id=L7 in %t28 as el=%teams_el_29, idx=%teams_i_30
58
+ %t61 = acc_load %acc56 :: integer
59
+ %t69 = acc_load %acc64 :: integer
60
+ %t53 = call core.div(%t61, %t69) :: float
61
+ loop teams id=L7 in %t57 as el=%teams_el_29, idx=%teams_i_30
62
62
  %t31 = load_field teams_el_29["headcount"] :: integer
63
- %t33 = call core.gt(%t31, %t49) :: boolean
63
+ %t33 = call core.gt(%t31, %t53) :: boolean
64
64
  yield %t33
65
65
  end_loop
66
66
  end_loop
@@ -30,37 +30,37 @@
30
30
  loop departments id=L5 in %t19 as el=%departments_el_20, idx=%departments_i_21
31
31
  %acc36 = decl_acc :: integer
32
32
  %t37 = load_field departments_el_20["teams"] :: any
33
- %acc42 = decl_acc :: integer
34
- loop teams id=L8 in %t37 as el=%teams_el_6, idx=%teams_i_7
35
- %t38 = load_field teams_el_6["headcount"] :: integer
36
- %acc36 = acc_add agg.sum(%acc36, %t38) :: integer
37
- %t44 = load_field teams_el_6["team_name"] :: string
38
- %acc42 = acc_add agg.count(%acc42, %t44) :: integer
33
+ %acc44 = decl_acc :: integer
34
+ loop teams id=L8 in %t37 as el=%t38, idx=%t39
35
+ %t40 = load_field t38["headcount"] :: integer
36
+ %acc36 = acc_add agg.sum(%acc36, %t40) :: integer
37
+ %t48 = load_field t38["team_name"] :: string
38
+ %acc44 = acc_add agg.count(%acc44, %t48) :: integer
39
39
  end_loop
40
- %t39 = acc_load %acc36 :: integer
41
- %t45 = acc_load %acc42 :: integer
42
- %t24 = call core.div(%t39, %t45) :: float
40
+ %t41 = acc_load %acc36 :: integer
41
+ %t49 = acc_load %acc44 :: integer
42
+ %t24 = call core.div(%t41, %t49) :: float
43
43
  yield %t24
44
44
  end_loop
45
45
  )
46
46
  (Declaration is_above_average_team
47
47
  %t25 = load_input "departments" :: array
48
48
  loop departments id=L6 in %t25 as el=%departments_el_26, idx=%departments_i_27
49
- %t28 = load_field departments_el_26["teams"] :: any
50
- %acc52 = decl_acc :: integer
51
- %acc58 = decl_acc :: integer
52
- loop teams id=L10 in %t28 as el=%teams_el_6, idx=%teams_i_7
53
- %t54 = load_field teams_el_6["headcount"] :: integer
54
- %acc52 = acc_add agg.sum(%acc52, %t54) :: integer
55
- %t60 = load_field teams_el_6["team_name"] :: string
56
- %acc58 = acc_add agg.count(%acc58, %t60) :: integer
49
+ %acc56 = decl_acc :: integer
50
+ %t57 = load_field departments_el_26["teams"] :: any
51
+ %acc64 = decl_acc :: integer
52
+ loop teams id=L10 in %t57 as el=%t58, idx=%t59
53
+ %t60 = load_field t58["headcount"] :: integer
54
+ %acc56 = acc_add agg.sum(%acc56, %t60) :: integer
55
+ %t68 = load_field t58["team_name"] :: string
56
+ %acc64 = acc_add agg.count(%acc64, %t68) :: integer
57
57
  end_loop
58
- %t55 = acc_load %acc52 :: integer
59
- %t61 = acc_load %acc58 :: integer
60
- %t49 = call core.div(%t55, %t61) :: float
61
- loop teams id=L7 in %t28 as el=%teams_el_29, idx=%teams_i_30
58
+ %t61 = acc_load %acc56 :: integer
59
+ %t69 = acc_load %acc64 :: integer
60
+ %t53 = call core.div(%t61, %t69) :: float
61
+ loop teams id=L7 in %t57 as el=%teams_el_29, idx=%teams_i_30
62
62
  %t31 = load_field teams_el_29["headcount"] :: integer
63
- %t33 = call core.gt(%t31, %t49) :: boolean
63
+ %t33 = call core.gt(%t31, %t53) :: boolean
64
64
  yield %t33
65
65
  end_loop
66
66
  end_loop
@@ -34,14 +34,14 @@ export function _avg_headcount_per_dept(input) {
34
34
  t19.forEach((departments_el_20, departments_i_21) => {
35
35
  let acc36 = 0;
36
36
  let t37 = departments_el_20["teams"];
37
- let acc42 = 0;
38
- t37.forEach((teams_el_6, teams_i_7) => {
39
- let t38 = teams_el_6["headcount"];
40
- acc36 += t38;
41
- let t44 = teams_el_6["team_name"];
42
- acc42 += 1;
37
+ let acc44 = 0;
38
+ t37.forEach((t38, t39) => {
39
+ let t40 = t38["headcount"];
40
+ acc36 += t40;
41
+ let t48 = t38["team_name"];
42
+ acc44 += 1;
43
43
  });
44
- let t24 = acc36 / acc42;
44
+ let t24 = acc36 / acc44;
45
45
  out.push(t24);
46
46
  });
47
47
  return out;
@@ -52,19 +52,19 @@ export function _is_above_average_team(input) {
52
52
  let t25 = input["departments"];
53
53
  t25.forEach((departments_el_26, departments_i_27) => {
54
54
  let out_1 = [];
55
- let t28 = departments_el_26["teams"];
56
- let acc52 = 0;
57
- let acc58 = 0;
58
- t28.forEach((teams_el_6, teams_i_7) => {
59
- let t54 = teams_el_6["headcount"];
60
- acc52 += t54;
61
- let t60 = teams_el_6["team_name"];
62
- acc58 += 1;
55
+ let acc56 = 0;
56
+ let t57 = departments_el_26["teams"];
57
+ let acc64 = 0;
58
+ t57.forEach((t58, t59) => {
59
+ let t60 = t58["headcount"];
60
+ acc56 += t60;
61
+ let t68 = t58["team_name"];
62
+ acc64 += 1;
63
63
  });
64
- let t49 = acc52 / acc58;
65
- t28.forEach((teams_el_29, teams_i_30) => {
64
+ let t53 = acc56 / acc64;
65
+ t57.forEach((teams_el_29, teams_i_30) => {
66
66
  let t31 = teams_el_29["headcount"];
67
- let t33 = t31 > t49;
67
+ let t33 = t31 > t53;
68
68
  out_1.push(t33);
69
69
  });
70
70
  out.push(out_1);
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_621112a9f96fd9df9274375684d4aad116dd930db67521f72ec03d1f911fd1ca
2
+ module Kumi::Compiled::KUMI_798dac22208bafc0f2b7f93d43bef5ae4c1d550f52f4c3773c486db02058561a
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -66,16 +66,16 @@ module Kumi::Compiled::KUMI_621112a9f96fd9df9274375684d4aad116dd930db67521f72ec0
66
66
  t19.each_with_index do |departments_el_20, departments_i_21|
67
67
  acc36 = 0
68
68
  t37 = departments_el_20["teams"] || departments_el_20[:teams]
69
- acc42 = 0
70
- t37.each_with_index do |teams_el_6, teams_i_7|
71
- t38 = teams_el_6["headcount"] || teams_el_6[:headcount]
72
- acc36 += t38
73
- t44 = teams_el_6["team_name"] || teams_el_6[:team_name]
74
- acc42 += 1
69
+ acc44 = 0
70
+ t37.each_with_index do |t38, t39|
71
+ t40 = t38["headcount"] || t38[:headcount]
72
+ acc36 += t40
73
+ t48 = t38["team_name"] || t38[:team_name]
74
+ acc44 += 1
75
75
  end
76
- t39 = acc36
77
- t45 = acc42
78
- t24 = t39 / t45.to_f
76
+ t41 = acc36
77
+ t49 = acc44
78
+ t24 = t41 / t49.to_f
79
79
  out << t24
80
80
  end
81
81
  out
@@ -86,21 +86,21 @@ module Kumi::Compiled::KUMI_621112a9f96fd9df9274375684d4aad116dd930db67521f72ec0
86
86
  t25 = input["departments"] || input[:departments]
87
87
  t25.each_with_index do |departments_el_26, departments_i_27|
88
88
  out_1 = []
89
- t28 = departments_el_26["teams"] || departments_el_26[:teams]
90
- acc52 = 0
91
- acc58 = 0
92
- t28.each_with_index do |teams_el_6, teams_i_7|
93
- t54 = teams_el_6["headcount"] || teams_el_6[:headcount]
94
- acc52 += t54
95
- t60 = teams_el_6["team_name"] || teams_el_6[:team_name]
96
- acc58 += 1
89
+ acc56 = 0
90
+ t57 = departments_el_26["teams"] || departments_el_26[:teams]
91
+ acc64 = 0
92
+ t57.each_with_index do |t58, t59|
93
+ t60 = t58["headcount"] || t58[:headcount]
94
+ acc56 += t60
95
+ t68 = t58["team_name"] || t58[:team_name]
96
+ acc64 += 1
97
97
  end
98
- t55 = acc52
99
- t61 = acc58
100
- t49 = t55 / t61.to_f
101
- t28.each_with_index do |teams_el_29, teams_i_30|
98
+ t61 = acc56
99
+ t69 = acc64
100
+ t53 = t61 / t69.to_f
101
+ t57.each_with_index do |teams_el_29, teams_i_30|
102
102
  t31 = teams_el_29["headcount"] || teams_el_29[:headcount]
103
- t33 = t31 > t49
103
+ t33 = t31 > t53
104
104
  out_1 << t33
105
105
  end
106
106
  out << out_1
@@ -2,54 +2,54 @@
2
2
  (Declaration roll_right
3
3
  %t1 = load_input "cells" :: array
4
4
  loop cells id=L1 in %t1 as el=%cells_el_2, idx=%cells_i_3
5
- %t4 = Length %t1 :: integer
5
+ %t4 = length %t1 :: integer
6
6
  %t5 = const 1 :: integer
7
7
  %t6 = call core.sub(%cells_i_3, %t5) :: integer
8
8
  %t7 = call core.mod(%t6, %t4) :: integer
9
9
  %t8 = call core.add(%t7, %t4) :: integer
10
10
  %t9 = call core.mod(%t8, %t4) :: integer
11
- %t10 = Gather %t1, %t9 :: integer
11
+ %t10 = gather %t1, %t9 :: integer
12
12
  yield %t10
13
13
  end_loop
14
14
  )
15
15
  (Declaration roll_left
16
16
  %t11 = load_input "cells" :: array
17
17
  loop cells id=L2 in %t11 as el=%cells_el_12, idx=%cells_i_13
18
- %t14 = Length %t11 :: integer
18
+ %t14 = length %t11 :: integer
19
19
  %t15 = const -1 :: integer
20
20
  %t16 = call core.sub(%cells_i_13, %t15) :: integer
21
21
  %t17 = call core.mod(%t16, %t14) :: integer
22
22
  %t18 = call core.add(%t17, %t14) :: integer
23
23
  %t19 = call core.mod(%t18, %t14) :: integer
24
- %t20 = Gather %t11, %t19 :: integer
24
+ %t20 = gather %t11, %t19 :: integer
25
25
  yield %t20
26
26
  end_loop
27
27
  )
28
28
  (Declaration roll_right_clamp
29
29
  %t21 = load_input "cells" :: array
30
30
  loop cells id=L3 in %t21 as el=%cells_el_22, idx=%cells_i_23
31
- %t24 = Length %t21 :: integer
31
+ %t24 = length %t21 :: integer
32
32
  %t25 = const 1 :: integer
33
33
  %t26 = call core.sub(%cells_i_23, %t25) :: integer
34
34
  %t27 = const 1 :: integer
35
35
  %t28 = call core.sub(%t24, %t27) :: integer
36
36
  %t29 = const 0 :: integer
37
37
  %t30 = call core.clamp(%t26, %t29, %t28) :: integer
38
- %t31 = Gather %t21, %t30 :: integer
38
+ %t31 = gather %t21, %t30 :: integer
39
39
  yield %t31
40
40
  end_loop
41
41
  )
42
42
  (Declaration roll_left_clamp
43
43
  %t32 = load_input "cells" :: array
44
44
  loop cells id=L4 in %t32 as el=%cells_el_33, idx=%cells_i_34
45
- %t35 = Length %t32 :: integer
45
+ %t35 = length %t32 :: integer
46
46
  %t36 = const -1 :: integer
47
47
  %t37 = call core.sub(%cells_i_34, %t36) :: integer
48
48
  %t38 = const 1 :: integer
49
49
  %t39 = call core.sub(%t35, %t38) :: integer
50
50
  %t40 = const 0 :: integer
51
51
  %t41 = call core.clamp(%t37, %t40, %t39) :: integer
52
- %t42 = Gather %t32, %t41 :: integer
52
+ %t42 = gather %t32, %t41 :: integer
53
53
  yield %t42
54
54
  end_loop
55
55
  )
@@ -2,54 +2,54 @@
2
2
  (Declaration roll_right
3
3
  %t1 = load_input "cells" :: array
4
4
  loop cells id=L1 in %t1 as el=%cells_el_2, idx=%cells_i_3
5
- %t4 = Length %t1 :: integer
5
+ %t4 = length %t1 :: integer
6
6
  %t5 = const 1 :: integer
7
7
  %t6 = call core.sub(%cells_i_3, %t5) :: integer
8
8
  %t7 = call core.mod(%t6, %t4) :: integer
9
9
  %t8 = call core.add(%t7, %t4) :: integer
10
10
  %t9 = call core.mod(%t8, %t4) :: integer
11
- %t10 = Gather %t1, %t9 :: integer
11
+ %t10 = gather %t1, %t9 :: integer
12
12
  yield %t10
13
13
  end_loop
14
14
  )
15
15
  (Declaration roll_left
16
16
  %t11 = load_input "cells" :: array
17
17
  loop cells id=L2 in %t11 as el=%cells_el_12, idx=%cells_i_13
18
- %t14 = Length %t11 :: integer
18
+ %t14 = length %t11 :: integer
19
19
  %t15 = const -1 :: integer
20
20
  %t16 = call core.sub(%cells_i_13, %t15) :: integer
21
21
  %t17 = call core.mod(%t16, %t14) :: integer
22
22
  %t18 = call core.add(%t17, %t14) :: integer
23
23
  %t19 = call core.mod(%t18, %t14) :: integer
24
- %t20 = Gather %t11, %t19 :: integer
24
+ %t20 = gather %t11, %t19 :: integer
25
25
  yield %t20
26
26
  end_loop
27
27
  )
28
28
  (Declaration roll_right_clamp
29
29
  %t21 = load_input "cells" :: array
30
30
  loop cells id=L3 in %t21 as el=%cells_el_22, idx=%cells_i_23
31
- %t24 = Length %t21 :: integer
31
+ %t24 = length %t21 :: integer
32
32
  %t25 = const 1 :: integer
33
33
  %t26 = call core.sub(%cells_i_23, %t25) :: integer
34
34
  %t27 = const 1 :: integer
35
35
  %t28 = call core.sub(%t24, %t27) :: integer
36
36
  %t29 = const 0 :: integer
37
37
  %t30 = call core.clamp(%t26, %t29, %t28) :: integer
38
- %t31 = Gather %t21, %t30 :: integer
38
+ %t31 = gather %t21, %t30 :: integer
39
39
  yield %t31
40
40
  end_loop
41
41
  )
42
42
  (Declaration roll_left_clamp
43
43
  %t32 = load_input "cells" :: array
44
44
  loop cells id=L4 in %t32 as el=%cells_el_33, idx=%cells_i_34
45
- %t35 = Length %t32 :: integer
45
+ %t35 = length %t32 :: integer
46
46
  %t36 = const -1 :: integer
47
47
  %t37 = call core.sub(%cells_i_34, %t36) :: integer
48
48
  %t38 = const 1 :: integer
49
49
  %t39 = call core.sub(%t35, %t38) :: integer
50
50
  %t40 = const 0 :: integer
51
51
  %t41 = call core.clamp(%t37, %t40, %t39) :: integer
52
- %t42 = Gather %t32, %t41 :: integer
52
+ %t42 = gather %t32, %t41 :: integer
53
53
  yield %t42
54
54
  end_loop
55
55
  )
@@ -2,54 +2,54 @@
2
2
  (Declaration roll_right
3
3
  %t1 = load_input "cells" :: array
4
4
  loop cells id=L1 in %t1 as el=%cells_el_2, idx=%cells_i_3
5
- %t4 = Length %t1 :: integer
5
+ %t4 = length %t1 :: integer
6
6
  %t5 = const 1 :: integer
7
7
  %t6 = call core.sub(%cells_i_3, %t5) :: integer
8
8
  %t7 = call core.mod(%t6, %t4) :: integer
9
9
  %t8 = call core.add(%t7, %t4) :: integer
10
10
  %t9 = call core.mod(%t8, %t4) :: integer
11
- %t10 = Gather %t1, %t9 :: integer
11
+ %t10 = gather %t1, %t9 :: integer
12
12
  yield %t10
13
13
  end_loop
14
14
  )
15
15
  (Declaration roll_left
16
16
  %t11 = load_input "cells" :: array
17
17
  loop cells id=L2 in %t11 as el=%cells_el_12, idx=%cells_i_13
18
- %t14 = Length %t11 :: integer
18
+ %t14 = length %t11 :: integer
19
19
  %t15 = const -1 :: integer
20
20
  %t16 = call core.sub(%cells_i_13, %t15) :: integer
21
21
  %t17 = call core.mod(%t16, %t14) :: integer
22
22
  %t18 = call core.add(%t17, %t14) :: integer
23
23
  %t19 = call core.mod(%t18, %t14) :: integer
24
- %t20 = Gather %t11, %t19 :: integer
24
+ %t20 = gather %t11, %t19 :: integer
25
25
  yield %t20
26
26
  end_loop
27
27
  )
28
28
  (Declaration roll_right_clamp
29
29
  %t21 = load_input "cells" :: array
30
30
  loop cells id=L3 in %t21 as el=%cells_el_22, idx=%cells_i_23
31
- %t24 = Length %t21 :: integer
31
+ %t24 = length %t21 :: integer
32
32
  %t25 = const 1 :: integer
33
33
  %t26 = call core.sub(%cells_i_23, %t25) :: integer
34
34
  %t27 = const 1 :: integer
35
35
  %t28 = call core.sub(%t24, %t27) :: integer
36
36
  %t29 = const 0 :: integer
37
37
  %t30 = call core.clamp(%t26, %t29, %t28) :: integer
38
- %t31 = Gather %t21, %t30 :: integer
38
+ %t31 = gather %t21, %t30 :: integer
39
39
  yield %t31
40
40
  end_loop
41
41
  )
42
42
  (Declaration roll_left_clamp
43
43
  %t32 = load_input "cells" :: array
44
44
  loop cells id=L4 in %t32 as el=%cells_el_33, idx=%cells_i_34
45
- %t35 = Length %t32 :: integer
45
+ %t35 = length %t32 :: integer
46
46
  %t36 = const -1 :: integer
47
47
  %t37 = call core.sub(%cells_i_34, %t36) :: integer
48
48
  %t38 = const 1 :: integer
49
49
  %t39 = call core.sub(%t35, %t38) :: integer
50
50
  %t40 = const 0 :: integer
51
51
  %t41 = call core.clamp(%t37, %t40, %t39) :: integer
52
- %t42 = Gather %t32, %t41 :: integer
52
+ %t42 = gather %t32, %t41 :: integer
53
53
  yield %t42
54
54
  end_loop
55
55
  )
@@ -2,53 +2,53 @@
2
2
  (Declaration roll_right
3
3
  %t1 = load_input "cells" :: array
4
4
  loop cells id=L1 in %t1 as el=%cells_el_2, idx=%cells_i_3
5
- %t4 = Length %t1 :: integer
5
+ %t4 = length %t1 :: integer
6
6
  %t5 = const 1 :: integer
7
7
  %t6 = call core.sub(%cells_i_3, %t5) :: integer
8
8
  %t7 = call core.mod(%t6, %t4) :: integer
9
9
  %t8 = call core.add(%t7, %t4) :: integer
10
10
  %t9 = call core.mod(%t8, %t4) :: integer
11
- %t10 = Gather %t1, %t9 :: integer
11
+ %t10 = gather %t1, %t9 :: integer
12
12
  yield %t10
13
13
  end_loop
14
14
  )
15
15
  (Declaration roll_left
16
16
  %t11 = load_input "cells" :: array
17
17
  loop cells id=L2 in %t11 as el=%cells_el_12, idx=%cells_i_13
18
- %t14 = Length %t11 :: integer
18
+ %t14 = length %t11 :: integer
19
19
  %t15 = const -1 :: integer
20
20
  %t16 = call core.sub(%cells_i_13, %t15) :: integer
21
21
  %t17 = call core.mod(%t16, %t14) :: integer
22
22
  %t18 = call core.add(%t17, %t14) :: integer
23
23
  %t19 = call core.mod(%t18, %t14) :: integer
24
- %t20 = Gather %t11, %t19 :: integer
24
+ %t20 = gather %t11, %t19 :: integer
25
25
  yield %t20
26
26
  end_loop
27
27
  )
28
28
  (Declaration roll_right_clamp
29
29
  %t21 = load_input "cells" :: array
30
30
  loop cells id=L3 in %t21 as el=%cells_el_22, idx=%cells_i_23
31
- %t24 = Length %t21 :: integer
31
+ %t24 = length %t21 :: integer
32
32
  %t25 = const 1 :: integer
33
33
  %t29 = const 0 :: integer
34
34
  %t26 = call core.sub(%cells_i_23, %t25) :: integer
35
35
  %t28 = call core.sub(%t24, %t25) :: integer
36
36
  %t30 = call core.clamp(%t26, %t29, %t28) :: integer
37
- %t31 = Gather %t21, %t30 :: integer
37
+ %t31 = gather %t21, %t30 :: integer
38
38
  yield %t31
39
39
  end_loop
40
40
  )
41
41
  (Declaration roll_left_clamp
42
42
  %t32 = load_input "cells" :: array
43
43
  loop cells id=L4 in %t32 as el=%cells_el_33, idx=%cells_i_34
44
- %t35 = Length %t32 :: integer
44
+ %t35 = length %t32 :: integer
45
45
  %t36 = const -1 :: integer
46
46
  %t38 = const 1 :: integer
47
47
  %t40 = const 0 :: integer
48
48
  %t37 = call core.sub(%cells_i_34, %t36) :: integer
49
49
  %t39 = call core.sub(%t35, %t38) :: integer
50
50
  %t41 = call core.clamp(%t37, %t40, %t39) :: integer
51
- %t42 = Gather %t32, %t41 :: integer
51
+ %t42 = gather %t32, %t41 :: integer
52
52
  yield %t42
53
53
  end_loop
54
54
  )