kumi 0.0.25 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +70 -71
- data/data/functions/agg/boolean.yaml +6 -2
- data/data/functions/agg/numeric.yaml +32 -16
- data/data/functions/agg/string.yaml +4 -3
- data/data/functions/core/arithmetic.yaml +62 -14
- data/data/functions/core/boolean.yaml +12 -6
- data/data/functions/core/comparison.yaml +25 -13
- data/data/functions/core/constructor.yaml +16 -8
- data/data/functions/core/select.yaml +3 -1
- data/data/functions/core/stencil.yaml +14 -5
- data/data/functions/core/string.yaml +9 -4
- data/data/kernels/ruby/agg/numeric.yaml +1 -1
- data/docs/UNSAT_DETECTION.md +83 -0
- data/golden/array_element/expected/nast.txt +1 -1
- data/golden/array_element/expected/schema_ruby.rb +1 -1
- data/golden/array_index/expected/nast.txt +7 -7
- data/golden/array_index/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/expected/nast.txt +2 -2
- data/golden/array_operations/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/expected/snast.txt +3 -3
- data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
- data/golden/cascade_logic/expected/snast.txt +2 -2
- data/golden/chained_fusion/expected/nast.txt +2 -2
- data/golden/chained_fusion/expected/schema_ruby.rb +1 -1
- data/golden/element_arrays/expected/nast.txt +2 -2
- data/golden/element_arrays/expected/schema_ruby.rb +1 -1
- data/golden/element_arrays/expected/snast.txt +1 -1
- data/golden/empty_and_null_inputs/expected/nast.txt +3 -3
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +1 -1
- data/golden/function_overload/expected/ast.txt +29 -0
- data/golden/function_overload/expected/input_plan.txt +4 -0
- data/golden/function_overload/expected/lir_00_unoptimized.txt +18 -0
- data/golden/function_overload/expected/lir_01_hoist_scalar_references.txt +18 -0
- data/golden/function_overload/expected/lir_02_inlined.txt +20 -0
- data/golden/function_overload/expected/lir_03_cse.txt +20 -0
- data/golden/function_overload/expected/lir_04_1_loop_fusion.txt +20 -0
- data/golden/function_overload/expected/lir_04_loop_invcm.txt +20 -0
- data/golden/function_overload/expected/lir_06_const_prop.txt +20 -0
- data/golden/function_overload/expected/nast.txt +22 -0
- data/golden/function_overload/expected/schema_javascript.mjs +12 -0
- data/golden/function_overload/expected/schema_ruby.rb +39 -0
- data/golden/function_overload/expected/snast.txt +22 -0
- data/golden/function_overload/input.json +8 -0
- data/golden/function_overload/schema.kumi +19 -0
- data/golden/game_of_life/expected/lir_00_unoptimized.txt +4 -4
- data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +4 -4
- data/golden/game_of_life/expected/lir_02_inlined.txt +16 -16
- data/golden/game_of_life/expected/lir_03_cse.txt +20 -16
- data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +20 -16
- data/golden/game_of_life/expected/lir_04_loop_invcm.txt +20 -16
- data/golden/game_of_life/expected/lir_06_const_prop.txt +20 -16
- data/golden/game_of_life/expected/nast.txt +4 -4
- data/golden/game_of_life/expected/schema_javascript.mjs +4 -2
- data/golden/game_of_life/expected/schema_ruby.rb +5 -3
- data/golden/game_of_life/expected/snast.txt +10 -10
- data/golden/hash_keys/expected/schema_ruby.rb +1 -1
- data/golden/hash_value/expected/nast.txt +1 -1
- data/golden/hash_value/expected/schema_ruby.rb +1 -1
- data/golden/hash_value/expected/snast.txt +1 -1
- data/golden/hierarchical_complex/expected/nast.txt +3 -3
- data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -1
- data/golden/hierarchical_complex/expected/snast.txt +3 -3
- data/golden/inline_rename_scope_leak/expected/nast.txt +3 -3
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
- data/golden/input_reference/expected/nast.txt +2 -2
- data/golden/input_reference/expected/schema_ruby.rb +1 -1
- data/golden/interleaved_fusion/expected/nast.txt +2 -2
- data/golden/interleaved_fusion/expected/schema_ruby.rb +1 -1
- data/golden/let_inline/expected/nast.txt +4 -4
- data/golden/let_inline/expected/schema_ruby.rb +1 -1
- data/golden/loop_fusion/expected/nast.txt +1 -1
- data/golden/loop_fusion/expected/schema_ruby.rb +1 -1
- data/golden/min_reduce_scope/expected/nast.txt +3 -3
- data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
- data/golden/min_reduce_scope/expected/snast.txt +1 -1
- data/golden/mixed_dimensions/expected/nast.txt +2 -2
- data/golden/mixed_dimensions/expected/schema_ruby.rb +1 -1
- data/golden/multirank_hoisting/expected/nast.txt +7 -7
- data/golden/multirank_hoisting/expected/schema_ruby.rb +1 -1
- data/golden/nested_hash/expected/nast.txt +1 -1
- data/golden/nested_hash/expected/schema_ruby.rb +1 -1
- data/golden/reduction_broadcast/expected/nast.txt +3 -3
- data/golden/reduction_broadcast/expected/schema_ruby.rb +1 -1
- data/golden/reduction_broadcast/expected/snast.txt +1 -1
- data/golden/roll/expected/schema_ruby.rb +1 -1
- data/golden/shift/expected/schema_ruby.rb +1 -1
- data/golden/shift_2d/expected/schema_ruby.rb +1 -1
- data/golden/simple_math/expected/lir_00_unoptimized.txt +1 -1
- data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/simple_math/expected/lir_02_inlined.txt +1 -1
- data/golden/simple_math/expected/lir_03_cse.txt +1 -1
- data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +1 -1
- data/golden/simple_math/expected/lir_04_loop_invcm.txt +1 -1
- data/golden/simple_math/expected/lir_06_const_prop.txt +1 -1
- data/golden/simple_math/expected/nast.txt +5 -5
- data/golden/simple_math/expected/schema_ruby.rb +1 -1
- data/golden/simple_math/expected/snast.txt +2 -2
- data/golden/streaming_basics/expected/nast.txt +8 -8
- data/golden/streaming_basics/expected/schema_ruby.rb +1 -1
- data/golden/streaming_basics/expected/snast.txt +1 -1
- data/golden/tuples/expected/lir_00_unoptimized.txt +5 -5
- data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +5 -5
- data/golden/tuples/expected/lir_02_inlined.txt +5 -5
- data/golden/tuples/expected/lir_03_cse.txt +5 -5
- data/golden/tuples/expected/lir_04_1_loop_fusion.txt +5 -5
- data/golden/tuples/expected/lir_04_loop_invcm.txt +5 -5
- data/golden/tuples/expected/lir_06_const_prop.txt +5 -5
- data/golden/tuples/expected/nast.txt +4 -4
- data/golden/tuples/expected/schema_ruby.rb +1 -1
- data/golden/tuples/expected/snast.txt +6 -6
- data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
- data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_03_cse.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +2 -2
- data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +2 -2
- data/golden/tuples_and_arrays/expected/nast.txt +3 -3
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +1 -1
- data/golden/tuples_and_arrays/expected/snast.txt +2 -2
- data/golden/us_tax_2024/expected/ast.txt +63 -670
- data/golden/us_tax_2024/expected/input_plan.txt +8 -45
- data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +253 -863
- data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +253 -863
- data/golden/us_tax_2024/expected/lir_02_inlined.txt +1215 -5139
- data/golden/us_tax_2024/expected/lir_03_cse.txt +587 -2460
- data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +632 -2480
- data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +587 -2460
- data/golden/us_tax_2024/expected/lir_06_const_prop.txt +587 -2460
- data/golden/us_tax_2024/expected/nast.txt +123 -826
- data/golden/us_tax_2024/expected/schema_javascript.mjs +127 -581
- data/golden/us_tax_2024/expected/schema_ruby.rb +135 -610
- data/golden/us_tax_2024/expected/snast.txt +155 -858
- data/golden/us_tax_2024/expected.json +120 -1
- data/golden/us_tax_2024/input.json +18 -9
- data/golden/us_tax_2024/schema.kumi +48 -178
- data/golden/with_constants/expected/lir_00_unoptimized.txt +1 -1
- data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/with_constants/expected/lir_02_inlined.txt +1 -1
- data/golden/with_constants/expected/lir_03_cse.txt +1 -1
- data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +1 -1
- data/golden/with_constants/expected/lir_04_loop_invcm.txt +1 -1
- data/golden/with_constants/expected/lir_06_const_prop.txt +1 -1
- data/golden/with_constants/expected/nast.txt +2 -2
- data/golden/with_constants/expected/schema_ruby.rb +1 -1
- data/golden/with_constants/expected/snast.txt +2 -2
- data/lib/kumi/analyzer.rb +12 -12
- data/lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb +236 -0
- data/lib/kumi/core/analyzer/passes/input_collector.rb +22 -4
- data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +64 -18
- data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +9 -4
- data/lib/kumi/core/analyzer/passes/snast_pass.rb +3 -1
- data/lib/kumi/core/analyzer/passes/unsat_detector.rb +172 -198
- data/lib/kumi/core/error_reporter.rb +36 -1
- data/lib/kumi/core/errors.rb +33 -1
- data/lib/kumi/core/functions/function_spec.rb +5 -4
- data/lib/kumi/core/functions/loader.rb +17 -1
- data/lib/kumi/core/functions/overload_resolver.rb +164 -0
- data/lib/kumi/core/functions/type_error_reporter.rb +118 -0
- data/lib/kumi/core/functions/type_rules.rb +155 -35
- data/lib/kumi/core/types/inference.rb +29 -22
- data/lib/kumi/core/types/normalizer.rb +29 -45
- data/lib/kumi/core/types/validator.rb +16 -27
- data/lib/kumi/core/types/value_objects.rb +116 -0
- data/lib/kumi/core/types.rb +45 -37
- data/lib/kumi/registry_v2/loader.rb +90 -0
- data/lib/kumi/registry_v2.rb +18 -1
- data/lib/kumi/version.rb +1 -1
- metadata +21 -7
- data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +0 -59
- data/lib/kumi/core/atom_unsat_solver.rb +0 -396
- data/lib/kumi/core/constraint_relationship_solver.rb +0 -641
- data/lib/kumi/core/types/builder.rb +0 -23
- data/lib/kumi/core/types/compatibility.rb +0 -96
- data/lib/kumi/core/types/formatter.rb +0 -26
@@ -4,11 +4,11 @@
|
|
4
4
|
%t2 = const 2 :: integer
|
5
5
|
%t3 = const 3 :: integer
|
6
6
|
%t4 = load_input "x" :: integer
|
7
|
-
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
|
7
|
+
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
|
8
8
|
yield %t5
|
9
9
|
)
|
10
10
|
(Declaration max_1
|
11
|
-
%t6 = load_decl tuple :: tuple<integer>
|
11
|
+
%t6 = load_decl tuple :: tuple<integer, integer, integer, integer>
|
12
12
|
%t7 = fold %t6 fn="agg.max" :: integer
|
13
13
|
yield %t7
|
14
14
|
)
|
@@ -18,12 +18,12 @@
|
|
18
18
|
%t10 = const 3 :: integer
|
19
19
|
%t11 = load_input "x" :: integer
|
20
20
|
%t12 = const 1000 :: integer
|
21
|
-
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
|
21
|
+
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
|
22
22
|
%t14 = fold %t13 fn="agg.max" :: integer
|
23
23
|
yield %t14
|
24
24
|
)
|
25
25
|
(Declaration min_1
|
26
|
-
%t15 = load_decl tuple :: tuple<integer>
|
26
|
+
%t15 = load_decl tuple :: tuple<integer, integer, integer, integer>
|
27
27
|
%t16 = fold %t15 fn="agg.min" :: integer
|
28
28
|
yield %t16
|
29
29
|
)
|
@@ -33,7 +33,7 @@
|
|
33
33
|
%t19 = const 3 :: integer
|
34
34
|
%t20 = load_input "x" :: integer
|
35
35
|
%t21 = const -100 :: integer
|
36
|
-
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
|
36
|
+
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
|
37
37
|
%t23 = fold %t22 fn="agg.min" :: integer
|
38
38
|
yield %t23
|
39
39
|
)
|
@@ -4,7 +4,7 @@
|
|
4
4
|
%t2 = const 2 :: integer
|
5
5
|
%t3 = const 3 :: integer
|
6
6
|
%t4 = load_input "x" :: integer
|
7
|
-
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
|
7
|
+
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
|
8
8
|
yield %t5
|
9
9
|
)
|
10
10
|
(Declaration max_1
|
@@ -12,7 +12,7 @@
|
|
12
12
|
%t25 = const 2 :: integer
|
13
13
|
%t26 = const 3 :: integer
|
14
14
|
%t27 = load_input "x" :: integer
|
15
|
-
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer>
|
15
|
+
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer, integer, integer, integer>
|
16
16
|
%t7 = fold %t28 fn="agg.max" :: integer
|
17
17
|
yield %t7
|
18
18
|
)
|
@@ -22,7 +22,7 @@
|
|
22
22
|
%t10 = const 3 :: integer
|
23
23
|
%t11 = load_input "x" :: integer
|
24
24
|
%t12 = const 1000 :: integer
|
25
|
-
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
|
25
|
+
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
|
26
26
|
%t14 = fold %t13 fn="agg.max" :: integer
|
27
27
|
yield %t14
|
28
28
|
)
|
@@ -31,7 +31,7 @@
|
|
31
31
|
%t30 = const 2 :: integer
|
32
32
|
%t31 = const 3 :: integer
|
33
33
|
%t32 = load_input "x" :: integer
|
34
|
-
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer>
|
34
|
+
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer, integer, integer, integer>
|
35
35
|
%t16 = fold %t33 fn="agg.min" :: integer
|
36
36
|
yield %t16
|
37
37
|
)
|
@@ -41,7 +41,7 @@
|
|
41
41
|
%t19 = const 3 :: integer
|
42
42
|
%t20 = load_input "x" :: integer
|
43
43
|
%t21 = const -100 :: integer
|
44
|
-
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
|
44
|
+
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
|
45
45
|
%t23 = fold %t22 fn="agg.min" :: integer
|
46
46
|
yield %t23
|
47
47
|
)
|
@@ -4,7 +4,7 @@
|
|
4
4
|
%t2 = const 2 :: integer
|
5
5
|
%t3 = const 3 :: integer
|
6
6
|
%t4 = load_input "x" :: integer
|
7
|
-
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
|
7
|
+
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
|
8
8
|
yield %t5
|
9
9
|
)
|
10
10
|
(Declaration max_1
|
@@ -12,7 +12,7 @@
|
|
12
12
|
%t25 = const 2 :: integer
|
13
13
|
%t26 = const 3 :: integer
|
14
14
|
%t27 = load_input "x" :: integer
|
15
|
-
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer>
|
15
|
+
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer, integer, integer, integer>
|
16
16
|
%t7 = fold %t28 fn="agg.max" :: integer
|
17
17
|
yield %t7
|
18
18
|
)
|
@@ -22,7 +22,7 @@
|
|
22
22
|
%t10 = const 3 :: integer
|
23
23
|
%t11 = load_input "x" :: integer
|
24
24
|
%t12 = const 1000 :: integer
|
25
|
-
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
|
25
|
+
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
|
26
26
|
%t14 = fold %t13 fn="agg.max" :: integer
|
27
27
|
yield %t14
|
28
28
|
)
|
@@ -31,7 +31,7 @@
|
|
31
31
|
%t30 = const 2 :: integer
|
32
32
|
%t31 = const 3 :: integer
|
33
33
|
%t32 = load_input "x" :: integer
|
34
|
-
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer>
|
34
|
+
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer, integer, integer, integer>
|
35
35
|
%t16 = fold %t33 fn="agg.min" :: integer
|
36
36
|
yield %t16
|
37
37
|
)
|
@@ -41,7 +41,7 @@
|
|
41
41
|
%t19 = const 3 :: integer
|
42
42
|
%t20 = load_input "x" :: integer
|
43
43
|
%t21 = const -100 :: integer
|
44
|
-
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
|
44
|
+
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
|
45
45
|
%t23 = fold %t22 fn="agg.min" :: integer
|
46
46
|
yield %t23
|
47
47
|
)
|
@@ -4,7 +4,7 @@
|
|
4
4
|
%t2 = const 2 :: integer
|
5
5
|
%t3 = const 3 :: integer
|
6
6
|
%t4 = load_input "x" :: integer
|
7
|
-
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
|
7
|
+
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
|
8
8
|
yield %t5
|
9
9
|
)
|
10
10
|
(Declaration max_1
|
@@ -12,7 +12,7 @@
|
|
12
12
|
%t25 = const 2 :: integer
|
13
13
|
%t26 = const 3 :: integer
|
14
14
|
%t27 = load_input "x" :: integer
|
15
|
-
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer>
|
15
|
+
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer, integer, integer, integer>
|
16
16
|
%t7 = fold %t28 fn="agg.max" :: integer
|
17
17
|
yield %t7
|
18
18
|
)
|
@@ -22,7 +22,7 @@
|
|
22
22
|
%t10 = const 3 :: integer
|
23
23
|
%t11 = load_input "x" :: integer
|
24
24
|
%t12 = const 1000 :: integer
|
25
|
-
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
|
25
|
+
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
|
26
26
|
%t14 = fold %t13 fn="agg.max" :: integer
|
27
27
|
yield %t14
|
28
28
|
)
|
@@ -31,7 +31,7 @@
|
|
31
31
|
%t30 = const 2 :: integer
|
32
32
|
%t31 = const 3 :: integer
|
33
33
|
%t32 = load_input "x" :: integer
|
34
|
-
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer>
|
34
|
+
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer, integer, integer, integer>
|
35
35
|
%t16 = fold %t33 fn="agg.min" :: integer
|
36
36
|
yield %t16
|
37
37
|
)
|
@@ -41,7 +41,7 @@
|
|
41
41
|
%t19 = const 3 :: integer
|
42
42
|
%t20 = load_input "x" :: integer
|
43
43
|
%t21 = const -100 :: integer
|
44
|
-
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
|
44
|
+
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
|
45
45
|
%t23 = fold %t22 fn="agg.min" :: integer
|
46
46
|
yield %t23
|
47
47
|
)
|
@@ -4,7 +4,7 @@
|
|
4
4
|
%t2 = const 2 :: integer
|
5
5
|
%t3 = const 3 :: integer
|
6
6
|
%t4 = load_input "x" :: integer
|
7
|
-
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
|
7
|
+
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
|
8
8
|
yield %t5
|
9
9
|
)
|
10
10
|
(Declaration max_1
|
@@ -12,7 +12,7 @@
|
|
12
12
|
%t25 = const 2 :: integer
|
13
13
|
%t26 = const 3 :: integer
|
14
14
|
%t27 = load_input "x" :: integer
|
15
|
-
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer>
|
15
|
+
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer, integer, integer, integer>
|
16
16
|
%t7 = fold %t28 fn="agg.max" :: integer
|
17
17
|
yield %t7
|
18
18
|
)
|
@@ -22,7 +22,7 @@
|
|
22
22
|
%t10 = const 3 :: integer
|
23
23
|
%t11 = load_input "x" :: integer
|
24
24
|
%t12 = const 1000 :: integer
|
25
|
-
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
|
25
|
+
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
|
26
26
|
%t14 = fold %t13 fn="agg.max" :: integer
|
27
27
|
yield %t14
|
28
28
|
)
|
@@ -31,7 +31,7 @@
|
|
31
31
|
%t30 = const 2 :: integer
|
32
32
|
%t31 = const 3 :: integer
|
33
33
|
%t32 = load_input "x" :: integer
|
34
|
-
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer>
|
34
|
+
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer, integer, integer, integer>
|
35
35
|
%t16 = fold %t33 fn="agg.min" :: integer
|
36
36
|
yield %t16
|
37
37
|
)
|
@@ -41,7 +41,7 @@
|
|
41
41
|
%t19 = const 3 :: integer
|
42
42
|
%t20 = load_input "x" :: integer
|
43
43
|
%t21 = const -100 :: integer
|
44
|
-
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
|
44
|
+
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
|
45
45
|
%t23 = fold %t22 fn="agg.min" :: integer
|
46
46
|
yield %t23
|
47
47
|
)
|
@@ -4,7 +4,7 @@
|
|
4
4
|
%t2 = const 2 :: integer
|
5
5
|
%t3 = const 3 :: integer
|
6
6
|
%t4 = load_input "x" :: integer
|
7
|
-
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer>
|
7
|
+
%t5 = make_tuple(%t1, %t2, %t3, %t4) :: tuple<integer, integer, integer, integer>
|
8
8
|
yield %t5
|
9
9
|
)
|
10
10
|
(Declaration max_1
|
@@ -12,7 +12,7 @@
|
|
12
12
|
%t25 = const 2 :: integer
|
13
13
|
%t26 = const 3 :: integer
|
14
14
|
%t27 = load_input "x" :: integer
|
15
|
-
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer>
|
15
|
+
%t28 = make_tuple(%t24, %t25, %t26, %t27) :: tuple<integer, integer, integer, integer>
|
16
16
|
%t7 = fold %t28 fn="agg.max" :: integer
|
17
17
|
yield %t7
|
18
18
|
)
|
@@ -22,7 +22,7 @@
|
|
22
22
|
%t10 = const 3 :: integer
|
23
23
|
%t11 = load_input "x" :: integer
|
24
24
|
%t12 = const 1000 :: integer
|
25
|
-
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer>
|
25
|
+
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
|
26
26
|
%t14 = fold %t13 fn="agg.max" :: integer
|
27
27
|
yield %t14
|
28
28
|
)
|
@@ -31,7 +31,7 @@
|
|
31
31
|
%t30 = const 2 :: integer
|
32
32
|
%t31 = const 3 :: integer
|
33
33
|
%t32 = load_input "x" :: integer
|
34
|
-
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer>
|
34
|
+
%t33 = make_tuple(%t29, %t30, %t31, %t32) :: tuple<integer, integer, integer, integer>
|
35
35
|
%t16 = fold %t33 fn="agg.min" :: integer
|
36
36
|
yield %t16
|
37
37
|
)
|
@@ -41,7 +41,7 @@
|
|
41
41
|
%t19 = const 3 :: integer
|
42
42
|
%t20 = load_input "x" :: integer
|
43
43
|
%t21 = const -100 :: integer
|
44
|
-
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer>
|
44
|
+
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
|
45
45
|
%t23 = fold %t22 fn="agg.min" :: integer
|
46
46
|
yield %t23
|
47
47
|
)
|
@@ -8,12 +8,12 @@
|
|
8
8
|
)
|
9
9
|
)
|
10
10
|
(VALUE max_1
|
11
|
-
(Call :
|
11
|
+
(Call :max
|
12
12
|
(Ref tuple)
|
13
13
|
)
|
14
14
|
)
|
15
15
|
(VALUE max_2
|
16
|
-
(Call :
|
16
|
+
(Call :max
|
17
17
|
(Tuple
|
18
18
|
(Const 1)
|
19
19
|
(Const 2)
|
@@ -24,12 +24,12 @@
|
|
24
24
|
)
|
25
25
|
)
|
26
26
|
(VALUE min_1
|
27
|
-
(Call :
|
27
|
+
(Call :min
|
28
28
|
(Ref tuple)
|
29
29
|
)
|
30
30
|
)
|
31
31
|
(VALUE min_2
|
32
|
-
(Call :
|
32
|
+
(Call :min
|
33
33
|
(Tuple
|
34
34
|
(Const 1)
|
35
35
|
(Const 2)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_2a2d7ca421c364fcc8994d8ea79ac793a5bfe18cd756cea122fc6ea42d8f6e9a
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -5,11 +5,11 @@
|
|
5
5
|
(Const 2) :: [] -> integer
|
6
6
|
(Const 3) :: [] -> integer
|
7
7
|
(InputRef x key_chain=[]) :: [] -> integer
|
8
|
-
) :: [] -> tuple<integer>
|
9
|
-
) :: [] -> tuple<integer>
|
8
|
+
) :: [] -> tuple<integer, integer, integer, integer>
|
9
|
+
) :: [] -> tuple<integer, integer, integer, integer>
|
10
10
|
(VALUE max_1
|
11
11
|
(Fold :agg.max
|
12
|
-
(Ref tuple) :: [] -> tuple<integer>
|
12
|
+
(Ref tuple) :: [] -> tuple<integer, integer, integer, integer>
|
13
13
|
) :: [] -> integer
|
14
14
|
) :: [] -> integer
|
15
15
|
(VALUE max_2
|
@@ -20,12 +20,12 @@
|
|
20
20
|
(Const 3) :: [] -> integer
|
21
21
|
(InputRef x key_chain=[]) :: [] -> integer
|
22
22
|
(Const 1000) :: [] -> integer
|
23
|
-
) :: [] -> tuple<integer>
|
23
|
+
) :: [] -> tuple<integer, integer, integer, integer, integer>
|
24
24
|
) :: [] -> integer
|
25
25
|
) :: [] -> integer
|
26
26
|
(VALUE min_1
|
27
27
|
(Fold :agg.min
|
28
|
-
(Ref tuple) :: [] -> tuple<integer>
|
28
|
+
(Ref tuple) :: [] -> tuple<integer, integer, integer, integer>
|
29
29
|
) :: [] -> integer
|
30
30
|
) :: [] -> integer
|
31
31
|
(VALUE min_2
|
@@ -36,7 +36,7 @@
|
|
36
36
|
(Const 3) :: [] -> integer
|
37
37
|
(InputRef x key_chain=[]) :: [] -> integer
|
38
38
|
(Const -100) :: [] -> integer
|
39
|
-
) :: [] -> tuple<integer>
|
39
|
+
) :: [] -> tuple<integer, integer, integer, integer, integer>
|
40
40
|
) :: [] -> integer
|
41
41
|
) :: [] -> integer
|
42
42
|
)
|
@@ -23,7 +23,7 @@
|
|
23
23
|
loop points id=L3 in %t14 as el=%points_el_15, idx=%points_i_16
|
24
24
|
%t17 = load_decl selected_value axes=[points] :: integer
|
25
25
|
%t18 = load_field points_el_15["x"] :: integer
|
26
|
-
%t19 = make_tuple(%t17, %t18) :: tuple<integer>
|
26
|
+
%t19 = make_tuple(%t17, %t18) :: tuple<integer, integer>
|
27
27
|
%t20 = fold %t19 fn="agg.max" :: integer
|
28
28
|
yield %t20
|
29
29
|
end_loop
|
@@ -23,7 +23,7 @@
|
|
23
23
|
loop points id=L3 in %t14 as el=%points_el_15, idx=%points_i_16
|
24
24
|
%t17 = load_decl selected_value axes=[points] :: integer
|
25
25
|
%t18 = load_field points_el_15["x"] :: integer
|
26
|
-
%t19 = make_tuple(%t17, %t18) :: tuple<integer>
|
26
|
+
%t19 = make_tuple(%t17, %t18) :: tuple<integer, integer>
|
27
27
|
%t20 = fold %t19 fn="agg.max" :: integer
|
28
28
|
yield %t20
|
29
29
|
end_loop
|
@@ -33,7 +33,7 @@
|
|
33
33
|
%t34 = load_field points_el_15["y"] :: integer
|
34
34
|
%t35 = select %t39, %t33, %t34 :: integer
|
35
35
|
%t18 = load_field points_el_15["x"] :: integer
|
36
|
-
%t19 = make_tuple(%t35, %t18) :: tuple<integer>
|
36
|
+
%t19 = make_tuple(%t35, %t18) :: tuple<integer, integer>
|
37
37
|
%t20 = fold %t19 fn="agg.max" :: integer
|
38
38
|
yield %t20
|
39
39
|
end_loop
|
@@ -52,7 +52,7 @@
|
|
52
52
|
%t48 = load_field points_el_23["y"] :: integer
|
53
53
|
%t49 = select %t53, %t47, %t48 :: integer
|
54
54
|
%t42 = load_field points_el_23["x"] :: integer
|
55
|
-
%t43 = make_tuple(%t49, %t42) :: tuple<integer>
|
55
|
+
%t43 = make_tuple(%t49, %t42) :: tuple<integer, integer>
|
56
56
|
%t44 = fold %t43 fn="agg.max" :: integer
|
57
57
|
%acc_21 = acc_add agg.sum(%acc_21, %t44) :: integer
|
58
58
|
end_loop
|
@@ -27,7 +27,7 @@
|
|
27
27
|
%t34 = load_field points_el_15["y"] :: integer
|
28
28
|
%t39 = call core.gt(%t37, %t38) :: boolean
|
29
29
|
%t35 = select %t39, %t37, %t34 :: integer
|
30
|
-
%t19 = make_tuple(%t35, %t37) :: tuple<integer>
|
30
|
+
%t19 = make_tuple(%t35, %t37) :: tuple<integer, integer>
|
31
31
|
%t20 = fold %t19 fn="agg.max" :: integer
|
32
32
|
yield %t20
|
33
33
|
end_loop
|
@@ -41,7 +41,7 @@
|
|
41
41
|
%t48 = load_field points_el_23["y"] :: integer
|
42
42
|
%t53 = call core.gt(%t51, %t52) :: boolean
|
43
43
|
%t49 = select %t53, %t51, %t48 :: integer
|
44
|
-
%t43 = make_tuple(%t49, %t51) :: tuple<integer>
|
44
|
+
%t43 = make_tuple(%t49, %t51) :: tuple<integer, integer>
|
45
45
|
%t44 = fold %t43 fn="agg.max" :: integer
|
46
46
|
%acc_21 = acc_add agg.sum(%acc_21, %t44) :: integer
|
47
47
|
end_loop
|
@@ -27,7 +27,7 @@
|
|
27
27
|
%t34 = load_field points_el_15["y"] :: integer
|
28
28
|
%t39 = call core.gt(%t37, %t38) :: boolean
|
29
29
|
%t35 = select %t39, %t37, %t34 :: integer
|
30
|
-
%t19 = make_tuple(%t35, %t37) :: tuple<integer>
|
30
|
+
%t19 = make_tuple(%t35, %t37) :: tuple<integer, integer>
|
31
31
|
%t20 = fold %t19 fn="agg.max" :: integer
|
32
32
|
yield %t20
|
33
33
|
end_loop
|
@@ -41,7 +41,7 @@
|
|
41
41
|
%t48 = load_field points_el_23["y"] :: integer
|
42
42
|
%t53 = call core.gt(%t51, %t52) :: boolean
|
43
43
|
%t49 = select %t53, %t51, %t48 :: integer
|
44
|
-
%t43 = make_tuple(%t49, %t51) :: tuple<integer>
|
44
|
+
%t43 = make_tuple(%t49, %t51) :: tuple<integer, integer>
|
45
45
|
%t44 = fold %t43 fn="agg.max" :: integer
|
46
46
|
%acc_21 = acc_add agg.sum(%acc_21, %t44) :: integer
|
47
47
|
end_loop
|
@@ -27,7 +27,7 @@
|
|
27
27
|
%t34 = load_field points_el_15["y"] :: integer
|
28
28
|
%t39 = call core.gt(%t37, %t38) :: boolean
|
29
29
|
%t35 = select %t39, %t37, %t34 :: integer
|
30
|
-
%t19 = make_tuple(%t35, %t37) :: tuple<integer>
|
30
|
+
%t19 = make_tuple(%t35, %t37) :: tuple<integer, integer>
|
31
31
|
%t20 = fold %t19 fn="agg.max" :: integer
|
32
32
|
yield %t20
|
33
33
|
end_loop
|
@@ -41,7 +41,7 @@
|
|
41
41
|
%t48 = load_field points_el_23["y"] :: integer
|
42
42
|
%t53 = call core.gt(%t51, %t52) :: boolean
|
43
43
|
%t49 = select %t53, %t51, %t48 :: integer
|
44
|
-
%t43 = make_tuple(%t49, %t51) :: tuple<integer>
|
44
|
+
%t43 = make_tuple(%t49, %t51) :: tuple<integer, integer>
|
45
45
|
%t44 = fold %t43 fn="agg.max" :: integer
|
46
46
|
%acc_21 = acc_add agg.sum(%acc_21, %t44) :: integer
|
47
47
|
end_loop
|
@@ -27,7 +27,7 @@
|
|
27
27
|
%t34 = load_field points_el_15["y"] :: integer
|
28
28
|
%t39 = call core.gt(%t37, %t38) :: boolean
|
29
29
|
%t35 = select %t39, %t37, %t34 :: integer
|
30
|
-
%t19 = make_tuple(%t35, %t37) :: tuple<integer>
|
30
|
+
%t19 = make_tuple(%t35, %t37) :: tuple<integer, integer>
|
31
31
|
%t20 = fold %t19 fn="agg.max" :: integer
|
32
32
|
yield %t20
|
33
33
|
end_loop
|
@@ -41,7 +41,7 @@
|
|
41
41
|
%t48 = load_field points_el_23["y"] :: integer
|
42
42
|
%t53 = call core.gt(%t51, %t52) :: boolean
|
43
43
|
%t49 = select %t53, %t51, %t48 :: integer
|
44
|
-
%t43 = make_tuple(%t49, %t51) :: tuple<integer>
|
44
|
+
%t43 = make_tuple(%t49, %t51) :: tuple<integer, integer>
|
45
45
|
%t44 = fold %t43 fn="agg.max" :: integer
|
46
46
|
%acc_21 = acc_add agg.sum(%acc_21, %t44) :: integer
|
47
47
|
end_loop
|
@@ -6,14 +6,14 @@
|
|
6
6
|
)
|
7
7
|
)
|
8
8
|
(VALUE selected_value
|
9
|
-
(Call :
|
9
|
+
(Call :select
|
10
10
|
(Ref x_is_large)
|
11
11
|
(InputRef [:points, :point, :x])
|
12
12
|
(InputRef [:points, :point, :y])
|
13
13
|
)
|
14
14
|
)
|
15
15
|
(VALUE final_value_per_point
|
16
|
-
(Call :
|
16
|
+
(Call :max
|
17
17
|
(Tuple
|
18
18
|
(Ref selected_value)
|
19
19
|
(InputRef [:points, :point, :x])
|
@@ -21,7 +21,7 @@
|
|
21
21
|
)
|
22
22
|
)
|
23
23
|
(VALUE grand_total
|
24
|
-
(Call :
|
24
|
+
(Call :sum
|
25
25
|
(Ref final_value_per_point)
|
26
26
|
)
|
27
27
|
)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_ada1b474771f2aaf5e63976adaf0402190d8744885036ff2a695e5bf8c93f65e
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
(SNAST
|
2
|
-
(
|
2
|
+
(VALUE x_is_large
|
3
3
|
(Call :core.gt
|
4
4
|
(InputRef points.point.x key_chain=[]) :: [points] -> integer
|
5
5
|
(Const 100) :: [] -> integer
|
@@ -17,7 +17,7 @@
|
|
17
17
|
(Tuple
|
18
18
|
(Ref selected_value) :: [points] -> integer
|
19
19
|
(InputRef points.point.x key_chain=[]) :: [points] -> integer
|
20
|
-
) :: [points] -> tuple<integer>
|
20
|
+
) :: [points] -> tuple<integer, integer>
|
21
21
|
) :: [points] -> integer
|
22
22
|
) :: [points] -> integer
|
23
23
|
(VALUE grand_total
|