kumi 0.0.31 → 0.0.33
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 +21 -1
- data/README.md +31 -99
- data/data/kernels/ruby/core/arithmetic.yaml +2 -2
- data/docs/COMPOSED_SCHEMAS.md +137 -0
- data/docs/SCHEMA_IMPORTS.md +275 -0
- data/docs/SYNTAX.md +48 -0
- data/golden/array_element/expected/schema_ruby.rb +2 -27
- data/golden/array_index/expected/nast.txt +6 -6
- data/golden/array_index/expected/schema_ruby.rb +4 -31
- data/golden/array_operations/expected/lir_06_const_prop.txt +4 -8
- data/golden/array_operations/expected/schema_javascript.mjs +4 -8
- data/golden/array_operations/expected/schema_ruby.rb +10 -43
- data/golden/cascade_logic/expected/lir_06_const_prop.txt +7 -14
- data/golden/cascade_logic/expected/schema_javascript.mjs +7 -14
- data/golden/cascade_logic/expected/schema_ruby.rb +11 -45
- data/golden/chained_fusion/expected/lir_06_const_prop.txt +8 -18
- data/golden/chained_fusion/expected/schema_javascript.mjs +8 -18
- data/golden/chained_fusion/expected/schema_ruby.rb +14 -53
- data/golden/decimal_explicit/expected/schema_ruby.rb +4 -31
- data/golden/element_arrays/expected/lir_06_const_prop.txt +5 -11
- data/golden/element_arrays/expected/schema_javascript.mjs +5 -11
- data/golden/element_arrays/expected/schema_ruby.rb +13 -50
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +4 -31
- data/golden/example_xpto/expected/ast.txt +23 -0
- data/golden/example_xpto/expected/input_plan.txt +1 -0
- data/golden/example_xpto/expected/lir_00_unoptimized.txt +16 -0
- data/golden/example_xpto/expected/lir_01_hoist_scalar_references.txt +16 -0
- data/golden/example_xpto/expected/lir_02_inlined.txt +16 -0
- data/golden/example_xpto/expected/lir_03_cse.txt +16 -0
- data/golden/example_xpto/expected/lir_04_1_loop_fusion.txt +16 -0
- data/golden/example_xpto/expected/lir_04_loop_invcm.txt +16 -0
- data/golden/example_xpto/expected/lir_06_const_prop.txt +13 -0
- data/golden/example_xpto/expected/nast.txt +17 -0
- data/golden/example_xpto/expected/schema_javascript.mjs +13 -0
- data/golden/example_xpto/expected/schema_ruby.rb +13 -0
- data/golden/example_xpto/expected/snast.txt +17 -0
- data/golden/example_xpto/expected.json +4 -0
- data/golden/example_xpto/input.json +3 -0
- data/golden/example_xpto/schema.kumi +8 -0
- data/golden/function_overload/expected/schema_ruby.rb +2 -27
- data/golden/game_of_life/expected/lir_06_const_prop.txt +236 -287
- data/golden/game_of_life/expected/schema_javascript.mjs +32 -39
- data/golden/game_of_life/expected/schema_ruby.rb +34 -66
- data/golden/hash_keys/expected/lir_06_const_prop.txt +4 -10
- data/golden/hash_keys/expected/schema_javascript.mjs +6 -12
- data/golden/hash_keys/expected/schema_ruby.rb +8 -39
- data/golden/hash_value/expected/lir_06_const_prop.txt +3 -6
- data/golden/hash_value/expected/schema_javascript.mjs +3 -6
- data/golden/hash_value/expected/schema_ruby.rb +7 -37
- data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +9 -18
- data/golden/hierarchical_complex/expected/schema_javascript.mjs +9 -18
- data/golden/hierarchical_complex/expected/schema_ruby.rb +14 -51
- data/golden/inline_rename_scope_leak/expected/lir_06_const_prop.txt +2 -6
- data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +2 -6
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +7 -39
- data/golden/input_reference/expected/schema_ruby.rb +6 -35
- data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +6 -14
- data/golden/interleaved_fusion/expected/schema_javascript.mjs +6 -14
- data/golden/interleaved_fusion/expected/schema_ruby.rb +11 -47
- data/golden/let_inline/expected/lir_06_const_prop.txt +1 -2
- data/golden/let_inline/expected/schema_javascript.mjs +1 -2
- data/golden/let_inline/expected/schema_ruby.rb +3 -29
- data/golden/loop_fusion/expected/lir_06_const_prop.txt +4 -10
- data/golden/loop_fusion/expected/schema_javascript.mjs +4 -10
- data/golden/loop_fusion/expected/schema_ruby.rb +8 -41
- data/golden/min_reduce_scope/expected/lir_06_const_prop.txt +3 -6
- data/golden/min_reduce_scope/expected/schema_javascript.mjs +3 -6
- data/golden/min_reduce_scope/expected/schema_ruby.rb +8 -39
- data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +1 -2
- data/golden/mixed_dimensions/expected/schema_javascript.mjs +1 -2
- data/golden/mixed_dimensions/expected/schema_ruby.rb +5 -33
- data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +9 -18
- data/golden/multirank_hoisting/expected/schema_javascript.mjs +9 -18
- data/golden/multirank_hoisting/expected/schema_ruby.rb +16 -55
- data/golden/nested_hash/expected/lir_06_const_prop.txt +1 -2
- data/golden/nested_hash/expected/schema_javascript.mjs +1 -2
- data/golden/nested_hash/expected/schema_ruby.rb +3 -29
- data/golden/reduction_broadcast/expected/schema_ruby.rb +5 -33
- data/golden/roll/expected/lir_06_const_prop.txt +8 -15
- data/golden/roll/expected/schema_javascript.mjs +8 -15
- data/golden/roll/expected/schema_ruby.rb +13 -48
- data/golden/schema_imports_broadcasting_with_imports/expected/ast.txt +26 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/input_plan.txt +5 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_00_unoptimized.txt +20 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_01_hoist_scalar_references.txt +20 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_02_inlined.txt +22 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_03_cse.txt +21 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_04_1_loop_fusion.txt +21 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_04_loop_invcm.txt +21 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/lir_06_const_prop.txt +21 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/nast.txt +12 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_javascript.mjs +22 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_ruby.rb +24 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/snast.txt +12 -0
- data/golden/schema_imports_broadcasting_with_imports/expected.json +4 -0
- data/golden/schema_imports_broadcasting_with_imports/input.json +7 -0
- data/golden/schema_imports_broadcasting_with_imports/schema.kumi +14 -0
- data/golden/schema_imports_complex_order_calc/expected/ast.txt +82 -0
- data/golden/schema_imports_complex_order_calc/expected/input_plan.txt +16 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_00_unoptimized.txt +94 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_01_hoist_scalar_references.txt +94 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_02_inlined.txt +187 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_03_cse.txt +131 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_04_1_loop_fusion.txt +131 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_04_loop_invcm.txt +131 -0
- data/golden/schema_imports_complex_order_calc/expected/lir_06_const_prop.txt +131 -0
- data/golden/schema_imports_complex_order_calc/expected/nast.txt +56 -0
- data/golden/schema_imports_complex_order_calc/expected/schema_javascript.mjs +147 -0
- data/golden/schema_imports_complex_order_calc/expected/schema_ruby.rb +149 -0
- data/golden/schema_imports_complex_order_calc/expected/snast.txt +56 -0
- data/golden/schema_imports_complex_order_calc/expected.json +12 -0
- data/golden/schema_imports_complex_order_calc/input.json +20 -0
- data/golden/schema_imports_complex_order_calc/schema.kumi +33 -0
- data/golden/schema_imports_composed_order/expected/ast.txt +33 -0
- data/golden/schema_imports_composed_order/expected/input_plan.txt +3 -0
- data/golden/schema_imports_composed_order/expected/lir_00_unoptimized.txt +25 -0
- data/golden/schema_imports_composed_order/expected/lir_01_hoist_scalar_references.txt +25 -0
- data/golden/schema_imports_composed_order/expected/lir_02_inlined.txt +33 -0
- data/golden/schema_imports_composed_order/expected/lir_03_cse.txt +33 -0
- data/golden/schema_imports_composed_order/expected/lir_04_1_loop_fusion.txt +33 -0
- data/golden/schema_imports_composed_order/expected/lir_04_loop_invcm.txt +33 -0
- data/golden/schema_imports_composed_order/expected/lir_06_const_prop.txt +33 -0
- data/golden/schema_imports_composed_order/expected/nast.txt +25 -0
- data/golden/schema_imports_composed_order/expected/schema_javascript.mjs +35 -0
- data/golden/schema_imports_composed_order/expected/schema_ruby.rb +33 -0
- data/golden/schema_imports_composed_order/expected/snast.txt +25 -0
- data/golden/schema_imports_composed_order/expected.json +6 -0
- data/golden/schema_imports_composed_order/input.json +5 -0
- data/golden/schema_imports_composed_order/schema.kumi +15 -0
- data/golden/schema_imports_discount_with_tax/expected/ast.txt +37 -0
- data/golden/schema_imports_discount_with_tax/expected/input_plan.txt +2 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_00_unoptimized.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_01_hoist_scalar_references.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_02_inlined.txt +37 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_03_cse.txt +34 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_04_1_loop_fusion.txt +34 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_04_loop_invcm.txt +34 -0
- data/golden/schema_imports_discount_with_tax/expected/lir_06_const_prop.txt +34 -0
- data/golden/schema_imports_discount_with_tax/expected/nast.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected/schema_javascript.mjs +37 -0
- data/golden/schema_imports_discount_with_tax/expected/schema_ruby.rb +34 -0
- data/golden/schema_imports_discount_with_tax/expected/snast.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected.json +7 -0
- data/golden/schema_imports_discount_with_tax/input.json +4 -0
- data/golden/schema_imports_discount_with_tax/schema.kumi +15 -0
- data/golden/schema_imports_line_items/expected/ast.txt +35 -0
- data/golden/schema_imports_line_items/expected/input_plan.txt +8 -0
- data/golden/schema_imports_line_items/expected/lir_00_unoptimized.txt +19 -0
- data/golden/schema_imports_line_items/expected/lir_01_hoist_scalar_references.txt +19 -0
- data/golden/schema_imports_line_items/expected/lir_02_inlined.txt +24 -0
- data/golden/schema_imports_line_items/expected/lir_03_cse.txt +22 -0
- data/golden/schema_imports_line_items/expected/lir_04_1_loop_fusion.txt +22 -0
- data/golden/schema_imports_line_items/expected/lir_04_loop_invcm.txt +22 -0
- data/golden/schema_imports_line_items/expected/lir_06_const_prop.txt +22 -0
- data/golden/schema_imports_line_items/expected/nast.txt +19 -0
- data/golden/schema_imports_line_items/expected/schema_javascript.mjs +23 -0
- data/golden/schema_imports_line_items/expected/schema_ruby.rb +22 -0
- data/golden/schema_imports_line_items/expected/snast.txt +19 -0
- data/golden/schema_imports_line_items/expected.json +5 -0
- data/golden/schema_imports_line_items/input.json +13 -0
- data/golden/schema_imports_line_items/schema.kumi +17 -0
- data/golden/schema_imports_multiple/expected/ast.txt +35 -0
- data/golden/schema_imports_multiple/expected/input_plan.txt +2 -0
- data/golden/schema_imports_multiple/expected/lir_00_unoptimized.txt +29 -0
- data/golden/schema_imports_multiple/expected/lir_01_hoist_scalar_references.txt +29 -0
- data/golden/schema_imports_multiple/expected/lir_02_inlined.txt +41 -0
- data/golden/schema_imports_multiple/expected/lir_03_cse.txt +37 -0
- data/golden/schema_imports_multiple/expected/lir_04_1_loop_fusion.txt +37 -0
- data/golden/schema_imports_multiple/expected/lir_04_loop_invcm.txt +37 -0
- data/golden/schema_imports_multiple/expected/lir_06_const_prop.txt +37 -0
- data/golden/schema_imports_multiple/expected/nast.txt +28 -0
- data/golden/schema_imports_multiple/expected/schema_javascript.mjs +40 -0
- data/golden/schema_imports_multiple/expected/schema_ruby.rb +37 -0
- data/golden/schema_imports_multiple/expected/snast.txt +28 -0
- data/golden/schema_imports_multiple/expected.json +7 -0
- data/golden/schema_imports_multiple/input.json +4 -0
- data/golden/schema_imports_multiple/schema.kumi +15 -0
- data/golden/schema_imports_nested_expressions/expected/ast.txt +31 -0
- data/golden/schema_imports_nested_expressions/expected/input_plan.txt +3 -0
- data/golden/schema_imports_nested_expressions/expected/lir_00_unoptimized.txt +22 -0
- data/golden/schema_imports_nested_expressions/expected/lir_01_hoist_scalar_references.txt +22 -0
- data/golden/schema_imports_nested_expressions/expected/lir_02_inlined.txt +32 -0
- data/golden/schema_imports_nested_expressions/expected/lir_03_cse.txt +32 -0
- data/golden/schema_imports_nested_expressions/expected/lir_04_1_loop_fusion.txt +32 -0
- data/golden/schema_imports_nested_expressions/expected/lir_04_loop_invcm.txt +32 -0
- data/golden/schema_imports_nested_expressions/expected/lir_06_const_prop.txt +28 -0
- data/golden/schema_imports_nested_expressions/expected/nast.txt +23 -0
- data/golden/schema_imports_nested_expressions/expected/schema_javascript.mjs +29 -0
- data/golden/schema_imports_nested_expressions/expected/schema_ruby.rb +28 -0
- data/golden/schema_imports_nested_expressions/expected/snast.txt +23 -0
- data/golden/schema_imports_nested_expressions/expected.json +5 -0
- data/golden/schema_imports_nested_expressions/input.json +5 -0
- data/golden/schema_imports_nested_expressions/schema.kumi +13 -0
- data/golden/schema_imports_nested_with_reductions/expected/ast.txt +47 -0
- data/golden/schema_imports_nested_with_reductions/expected/input_plan.txt +12 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_00_unoptimized.txt +31 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_01_hoist_scalar_references.txt +31 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_02_inlined.txt +58 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_03_cse.txt +49 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_04_1_loop_fusion.txt +51 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_04_loop_invcm.txt +49 -0
- data/golden/schema_imports_nested_with_reductions/expected/lir_06_const_prop.txt +49 -0
- data/golden/schema_imports_nested_with_reductions/expected/nast.txt +23 -0
- data/golden/schema_imports_nested_with_reductions/expected/schema_javascript.mjs +49 -0
- data/golden/schema_imports_nested_with_reductions/expected/schema_ruby.rb +52 -0
- data/golden/schema_imports_nested_with_reductions/expected/snast.txt +23 -0
- data/golden/schema_imports_nested_with_reductions/expected.json +6 -0
- data/golden/schema_imports_nested_with_reductions/input.json +16 -0
- data/golden/schema_imports_nested_with_reductions/schema.kumi +23 -0
- data/golden/schema_imports_with_imports/expected/ast.txt +19 -0
- data/golden/schema_imports_with_imports/expected/input_plan.txt +1 -0
- data/golden/schema_imports_with_imports/expected/lir_00_unoptimized.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_01_hoist_scalar_references.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_02_inlined.txt +14 -0
- data/golden/schema_imports_with_imports/expected/lir_03_cse.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_04_1_loop_fusion.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_04_loop_invcm.txt +13 -0
- data/golden/schema_imports_with_imports/expected/lir_06_const_prop.txt +13 -0
- data/golden/schema_imports_with_imports/expected/nast.txt +13 -0
- data/golden/schema_imports_with_imports/expected/schema_javascript.mjs +13 -0
- data/golden/schema_imports_with_imports/expected/schema_ruby.rb +13 -0
- data/golden/schema_imports_with_imports/expected/snast.txt +13 -0
- data/golden/schema_imports_with_imports/expected.json +4 -0
- data/golden/schema_imports_with_imports/input.json +3 -0
- data/golden/schema_imports_with_imports/schema.kumi +10 -0
- data/golden/shift/expected/lir_06_const_prop.txt +18 -30
- data/golden/shift/expected/schema_javascript.mjs +18 -30
- data/golden/shift/expected/schema_ruby.rb +25 -67
- data/golden/shift_2d/expected/lir_06_const_prop.txt +36 -60
- data/golden/shift_2d/expected/schema_javascript.mjs +36 -60
- data/golden/shift_2d/expected/schema_ruby.rb +49 -109
- data/golden/simple_math/expected/lir_06_const_prop.txt +3 -6
- data/golden/simple_math/expected/schema_javascript.mjs +3 -6
- data/golden/simple_math/expected/schema_ruby.rb +8 -39
- data/golden/streaming_basics/expected/lir_06_const_prop.txt +6 -12
- data/golden/streaming_basics/expected/schema_javascript.mjs +6 -12
- data/golden/streaming_basics/expected/schema_ruby.rb +14 -51
- data/golden/tuples/expected/lir_06_const_prop.txt +5 -22
- data/golden/tuples/expected/schema_javascript.mjs +5 -22
- data/golden/tuples/expected/schema_ruby.rb +11 -57
- data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +4 -8
- data/golden/tuples_and_arrays/expected/schema_javascript.mjs +4 -8
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +9 -41
- data/golden/us_tax_2024/expected/lir_06_const_prop.txt +94 -171
- data/golden/us_tax_2024/expected/schema_javascript.mjs +13 -21
- data/golden/us_tax_2024/expected/schema_ruby.rb +15 -48
- data/golden/with_constants/expected/lir_06_const_prop.txt +3 -8
- data/golden/with_constants/expected/schema_javascript.mjs +3 -8
- data/golden/with_constants/expected/schema_ruby.rb +5 -35
- data/lib/kumi/analyzer.rb +8 -7
- data/lib/kumi/configuration.rb +7 -6
- data/lib/kumi/core/analyzer/passes/attach_anchors_pass.rb +1 -1
- data/lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb +1 -1
- data/lib/kumi/core/analyzer/passes/codegen/js/declaration_emitter.rb +20 -0
- data/lib/kumi/core/analyzer/passes/codegen/ruby/declaration_emitter.rb +16 -7
- data/lib/kumi/core/analyzer/passes/codegen/ruby/output_buffer.rb +3 -35
- data/lib/kumi/core/analyzer/passes/dependency_resolver.rb +6 -0
- data/lib/kumi/core/analyzer/passes/import_analysis_pass.rb +90 -0
- data/lib/kumi/core/analyzer/passes/lir/constant_propagation_pass.rb +77 -36
- data/lib/kumi/core/analyzer/passes/lir/lower_pass.rb +26 -11
- data/lib/kumi/core/analyzer/passes/name_indexer.rb +20 -2
- data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +44 -0
- data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +30 -0
- data/lib/kumi/core/analyzer/passes/semantic_constraint_validator.rb +5 -1
- data/lib/kumi/core/analyzer/passes/snast_pass.rb +15 -0
- data/lib/kumi/core/lir/build.rb +27 -0
- data/lib/kumi/core/lir/peephole.rb +164 -0
- data/lib/kumi/core/nast.rb +16 -0
- data/lib/kumi/core/ruby_parser/build_context.rb +3 -1
- data/lib/kumi/core/ruby_parser/parser.rb +1 -1
- data/lib/kumi/core/ruby_parser/schema_builder.rb +33 -3
- data/lib/kumi/dev/golden/result.rb +9 -3
- data/lib/kumi/dev/golden/runtime_test.rb +16 -1
- data/lib/kumi/dev/golden.rb +18 -20
- data/lib/kumi/dev/golden_schema_modules.rb +8 -0
- data/lib/kumi/dev/golden_schema_wrapper.rb +116 -0
- data/lib/kumi/dev/support/kumi_runner.mjs +18 -0
- data/lib/kumi/schema.rb +44 -2
- data/lib/kumi/support/lir_printer.rb +21 -5
- data/lib/kumi/support/nast_printer.rb +11 -0
- data/lib/kumi/support/s_expression_printer.rb +9 -0
- data/lib/kumi/support/snast_printer.rb +6 -0
- data/lib/kumi/syntax/import_call.rb +11 -0
- data/lib/kumi/syntax/import_declaration.rb +11 -0
- data/lib/kumi/syntax/root.rb +2 -2
- data/lib/kumi/test_shared_schemas/compound.rb +21 -0
- data/lib/kumi/test_shared_schemas/discount.rb +19 -0
- data/lib/kumi/test_shared_schemas/price.rb +19 -0
- data/lib/kumi/test_shared_schemas/subtotal.rb +22 -0
- data/lib/kumi/test_shared_schemas/tax.rb +18 -0
- data/lib/kumi/version.rb +1 -1
- data/lib/kumi.rb +19 -4
- metadata +176 -3
|
@@ -1,59 +1,28 @@
|
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
|
2
|
-
module Kumi::Compiled::
|
|
3
|
-
def self.
|
|
4
|
-
instance = Object.new
|
|
5
|
-
instance.extend(self)
|
|
6
|
-
instance.instance_variable_set(:@input, input_data)
|
|
7
|
-
instance
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def self.__kumi_executable__
|
|
11
|
-
instance = Object.new
|
|
12
|
-
instance.extend(self)
|
|
13
|
-
instance
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def update(input_data)
|
|
17
|
-
@input = @input.merge(input_data)
|
|
18
|
-
self
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def [](name)
|
|
22
|
-
case name
|
|
23
|
-
when :sum then _sum
|
|
24
|
-
when :product then _product
|
|
25
|
-
when :difference then _difference
|
|
26
|
-
when :results_array then _results_array
|
|
27
|
-
else raise KeyError, "Unknown declaration"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def _sum(input = @input)
|
|
2
|
+
module Kumi::Compiled::KUMI_d3724a75498099c0b5fa0fef7fc42fd942eafe2c82a690fc8efeaf8ef9e6ac72
|
|
3
|
+
def self._sum(input)
|
|
32
4
|
t1 = input["x"] || input[:x]
|
|
33
5
|
t2 = input["y"] || input[:y]
|
|
34
6
|
t1 + t2
|
|
35
7
|
end
|
|
36
8
|
|
|
37
|
-
def _product(input
|
|
9
|
+
def self._product(input)
|
|
38
10
|
t4 = input["x"] || input[:x]
|
|
39
11
|
t5 = input["y"] || input[:y]
|
|
40
12
|
t4 * t5
|
|
41
13
|
end
|
|
42
14
|
|
|
43
|
-
def _difference(input
|
|
15
|
+
def self._difference(input)
|
|
44
16
|
t7 = input["x"] || input[:x]
|
|
45
17
|
t8 = input["y"] || input[:y]
|
|
46
18
|
t7 - t8
|
|
47
19
|
end
|
|
48
20
|
|
|
49
|
-
def _results_array(input
|
|
50
|
-
t10 = 1
|
|
21
|
+
def self._results_array(input)
|
|
51
22
|
t11 = input["x"] || input[:x]
|
|
52
|
-
|
|
53
|
-
t13 = t11 + t12
|
|
23
|
+
t13 = t11 + 10
|
|
54
24
|
t14 = input["y"] || input[:y]
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
[t10, t13, t16]
|
|
25
|
+
t16 = t14 * 2
|
|
26
|
+
[1, t13, t16]
|
|
58
27
|
end
|
|
59
28
|
end
|
|
@@ -10,9 +10,8 @@
|
|
|
10
10
|
)
|
|
11
11
|
(Declaration items_discounted
|
|
12
12
|
%t7 = load_input "items" :: array
|
|
13
|
-
%t11 = const 1.0 :: float
|
|
14
13
|
%t12 = load_input "discount" :: float
|
|
15
|
-
%t13 = call core.sub(
|
|
14
|
+
%t13 = call core.sub(1.0, %t12) :: float
|
|
16
15
|
loop items id=L2 in %t7 as el=%items_el_8, idx=%items_i_9
|
|
17
16
|
%t10 = load_field items_el_8["price"] :: float
|
|
18
17
|
%t14 = call core.mul:numeric(%t10, %t13) :: float
|
|
@@ -21,23 +20,20 @@
|
|
|
21
20
|
)
|
|
22
21
|
(Declaration items_is_big
|
|
23
22
|
%t15 = load_input "items" :: array
|
|
24
|
-
%t19 = const 100.0 :: float
|
|
25
23
|
loop items id=L3 in %t15 as el=%items_el_16, idx=%items_i_17
|
|
26
24
|
%t18 = load_field items_el_16["price"] :: float
|
|
27
|
-
%t20 = call core.gt(%t18,
|
|
25
|
+
%t20 = call core.gt(%t18, 100.0) :: boolean
|
|
28
26
|
yield %t20
|
|
29
27
|
end_loop
|
|
30
28
|
)
|
|
31
29
|
(Declaration items_effective
|
|
32
30
|
%t21 = load_input "items" :: array
|
|
33
|
-
%t50 = const 100.0 :: float
|
|
34
|
-
%t26 = const 0.9 :: float
|
|
35
31
|
loop items id=L4 in %t21 as el=%items_el_22, idx=%items_i_23
|
|
36
32
|
%t49 = load_field items_el_22["price"] :: float
|
|
37
33
|
%t54 = load_field items_el_22["qty"] :: integer
|
|
38
|
-
%t51 = call core.gt(%t49,
|
|
34
|
+
%t51 = call core.gt(%t49, 100.0) :: boolean
|
|
39
35
|
%t55 = call core.mul:numeric(%t49, %t54) :: float
|
|
40
|
-
%t27 = call core.mul:numeric(%t55,
|
|
36
|
+
%t27 = call core.mul:numeric(%t55, 0.9) :: float
|
|
41
37
|
%t29 = select %t51, %t27, %t55 :: float
|
|
42
38
|
yield %t29
|
|
43
39
|
end_loop
|
|
@@ -67,14 +63,12 @@
|
|
|
67
63
|
(Declaration cart_total_effective
|
|
68
64
|
%acc_42 = decl_acc :: float
|
|
69
65
|
%t43 = load_input "items" :: array
|
|
70
|
-
%t73 = const 100.0 :: float
|
|
71
|
-
%t67 = const 0.9 :: float
|
|
72
66
|
loop items id=L7 in %t43 as el=%items_el_44, idx=%items_i_45
|
|
73
67
|
%t72 = load_field items_el_44["price"] :: float
|
|
74
68
|
%t77 = load_field items_el_44["qty"] :: integer
|
|
75
|
-
%t74 = call core.gt(%t72,
|
|
69
|
+
%t74 = call core.gt(%t72, 100.0) :: boolean
|
|
76
70
|
%t78 = call core.mul:numeric(%t72, %t77) :: float
|
|
77
|
-
%t68 = call core.mul:numeric(%t78,
|
|
71
|
+
%t68 = call core.mul:numeric(%t78, 0.9) :: float
|
|
78
72
|
%t70 = select %t74, %t68, %t78 :: float
|
|
79
73
|
%acc_42 = acc_add agg.sum(%acc_42, %t70) :: float
|
|
80
74
|
end_loop
|
|
@@ -13,9 +13,8 @@ export function _items_subtotal(input) {
|
|
|
13
13
|
export function _items_discounted(input) {
|
|
14
14
|
let out = [];
|
|
15
15
|
let t7 = input["items"];
|
|
16
|
-
const t11 = 1.0;
|
|
17
16
|
let t12 = input["discount"];
|
|
18
|
-
let t13 =
|
|
17
|
+
let t13 = 1.0 - t12;
|
|
19
18
|
t7.forEach((items_el_8, items_i_9) => {
|
|
20
19
|
let t10 = items_el_8["price"];
|
|
21
20
|
let t14 = t10 * t13;
|
|
@@ -27,10 +26,9 @@ export function _items_discounted(input) {
|
|
|
27
26
|
export function _items_is_big(input) {
|
|
28
27
|
let out = [];
|
|
29
28
|
let t15 = input["items"];
|
|
30
|
-
const t19 = 100.0;
|
|
31
29
|
t15.forEach((items_el_16, items_i_17) => {
|
|
32
30
|
let t18 = items_el_16["price"];
|
|
33
|
-
let t20 = t18 >
|
|
31
|
+
let t20 = t18 > 100.0;
|
|
34
32
|
out.push(t20);
|
|
35
33
|
});
|
|
36
34
|
return out;
|
|
@@ -39,14 +37,12 @@ export function _items_is_big(input) {
|
|
|
39
37
|
export function _items_effective(input) {
|
|
40
38
|
let out = [];
|
|
41
39
|
let t21 = input["items"];
|
|
42
|
-
const t50 = 100.0;
|
|
43
|
-
const t26 = 0.9;
|
|
44
40
|
t21.forEach((items_el_22, items_i_23) => {
|
|
45
41
|
let t49 = items_el_22["price"];
|
|
46
42
|
let t54 = items_el_22["qty"];
|
|
47
|
-
let t51 = t49 >
|
|
43
|
+
let t51 = t49 > 100.0;
|
|
48
44
|
let t55 = t49 * t54;
|
|
49
|
-
let t27 = t55 *
|
|
45
|
+
let t27 = t55 * 0.9;
|
|
50
46
|
let t29 = t51 ? t27 : t55;
|
|
51
47
|
out.push(t29);
|
|
52
48
|
});
|
|
@@ -78,14 +74,12 @@ export function _cart_total(input) {
|
|
|
78
74
|
export function _cart_total_effective(input) {
|
|
79
75
|
let acc_42 = 0.0;
|
|
80
76
|
let t43 = input["items"];
|
|
81
|
-
const t73 = 100.0;
|
|
82
|
-
const t67 = 0.9;
|
|
83
77
|
t43.forEach((items_el_44, items_i_45) => {
|
|
84
78
|
let t72 = items_el_44["price"];
|
|
85
79
|
let t77 = items_el_44["qty"];
|
|
86
|
-
let t74 = t72 >
|
|
80
|
+
let t74 = t72 > 100.0;
|
|
87
81
|
let t78 = t72 * t77;
|
|
88
|
-
let t68 = t78 *
|
|
82
|
+
let t68 = t78 * 0.9;
|
|
89
83
|
let t70 = t74 ? t68 : t78;
|
|
90
84
|
acc_42 += t70;
|
|
91
85
|
});
|
|
@@ -1,37 +1,6 @@
|
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
|
2
|
-
module Kumi::Compiled::
|
|
3
|
-
def self.
|
|
4
|
-
instance = Object.new
|
|
5
|
-
instance.extend(self)
|
|
6
|
-
instance.instance_variable_set(:@input, input_data)
|
|
7
|
-
instance
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def self.__kumi_executable__
|
|
11
|
-
instance = Object.new
|
|
12
|
-
instance.extend(self)
|
|
13
|
-
instance
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def update(input_data)
|
|
17
|
-
@input = @input.merge(input_data)
|
|
18
|
-
self
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def [](name)
|
|
22
|
-
case name
|
|
23
|
-
when :items_subtotal then _items_subtotal
|
|
24
|
-
when :items_discounted then _items_discounted
|
|
25
|
-
when :items_is_big then _items_is_big
|
|
26
|
-
when :items_effective then _items_effective
|
|
27
|
-
when :total_qty then _total_qty
|
|
28
|
-
when :cart_total then _cart_total
|
|
29
|
-
when :cart_total_effective then _cart_total_effective
|
|
30
|
-
else raise KeyError, "Unknown declaration"
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def _items_subtotal(input = @input)
|
|
2
|
+
module Kumi::Compiled::KUMI_ed9d24ba9b77a06e101883c7dc0b73845a548e7f7a03b7654a2d4a0a12324188
|
|
3
|
+
def self._items_subtotal(input)
|
|
35
4
|
out = []
|
|
36
5
|
t1 = input["items"] || input[:items]
|
|
37
6
|
t1.each_with_index do |items_el_2, items_i_3|
|
|
@@ -43,12 +12,11 @@ module Kumi::Compiled::KUMI_d972b45a945bf808f0713ddc12e431b18405a54a9d90bfa262d8
|
|
|
43
12
|
out
|
|
44
13
|
end
|
|
45
14
|
|
|
46
|
-
def _items_discounted(input
|
|
15
|
+
def self._items_discounted(input)
|
|
47
16
|
out = []
|
|
48
17
|
t7 = input["items"] || input[:items]
|
|
49
|
-
t11 = 1.0
|
|
50
18
|
t12 = input["discount"] || input[:discount]
|
|
51
|
-
t13 =
|
|
19
|
+
t13 = 1.0 - t12
|
|
52
20
|
t7.each_with_index do |items_el_8, items_i_9|
|
|
53
21
|
t10 = items_el_8["price"] || items_el_8[:price]
|
|
54
22
|
t14 = t10 * t13
|
|
@@ -57,36 +25,33 @@ module Kumi::Compiled::KUMI_d972b45a945bf808f0713ddc12e431b18405a54a9d90bfa262d8
|
|
|
57
25
|
out
|
|
58
26
|
end
|
|
59
27
|
|
|
60
|
-
def _items_is_big(input
|
|
28
|
+
def self._items_is_big(input)
|
|
61
29
|
out = []
|
|
62
30
|
t15 = input["items"] || input[:items]
|
|
63
|
-
t19 = 100.0
|
|
64
31
|
t15.each_with_index do |items_el_16, items_i_17|
|
|
65
32
|
t18 = items_el_16["price"] || items_el_16[:price]
|
|
66
|
-
t20 = t18 >
|
|
33
|
+
t20 = t18 > 100.0
|
|
67
34
|
out << t20
|
|
68
35
|
end
|
|
69
36
|
out
|
|
70
37
|
end
|
|
71
38
|
|
|
72
|
-
def _items_effective(input
|
|
39
|
+
def self._items_effective(input)
|
|
73
40
|
out = []
|
|
74
41
|
t21 = input["items"] || input[:items]
|
|
75
|
-
t50 = 100.0
|
|
76
|
-
t26 = 0.9
|
|
77
42
|
t21.each_with_index do |items_el_22, items_i_23|
|
|
78
43
|
t49 = items_el_22["price"] || items_el_22[:price]
|
|
79
44
|
t54 = items_el_22["qty"] || items_el_22[:qty]
|
|
80
|
-
t51 = t49 >
|
|
45
|
+
t51 = t49 > 100.0
|
|
81
46
|
t55 = t49 * t54
|
|
82
|
-
t27 = t55 *
|
|
47
|
+
t27 = t55 * 0.9
|
|
83
48
|
t29 = t51 ? t27 : t55
|
|
84
49
|
out << t29
|
|
85
50
|
end
|
|
86
51
|
out
|
|
87
52
|
end
|
|
88
53
|
|
|
89
|
-
def _total_qty(input
|
|
54
|
+
def self._total_qty(input)
|
|
90
55
|
acc_30 = 0.0
|
|
91
56
|
t31 = input["items"] || input[:items]
|
|
92
57
|
t31.each_with_index do |items_el_32, items_i_33|
|
|
@@ -96,7 +61,7 @@ module Kumi::Compiled::KUMI_d972b45a945bf808f0713ddc12e431b18405a54a9d90bfa262d8
|
|
|
96
61
|
acc_30
|
|
97
62
|
end
|
|
98
63
|
|
|
99
|
-
def _cart_total(input
|
|
64
|
+
def self._cart_total(input)
|
|
100
65
|
acc_36 = 0.0
|
|
101
66
|
t37 = input["items"] || input[:items]
|
|
102
67
|
t37.each_with_index do |items_el_38, items_i_39|
|
|
@@ -108,17 +73,15 @@ module Kumi::Compiled::KUMI_d972b45a945bf808f0713ddc12e431b18405a54a9d90bfa262d8
|
|
|
108
73
|
acc_36
|
|
109
74
|
end
|
|
110
75
|
|
|
111
|
-
def _cart_total_effective(input
|
|
76
|
+
def self._cart_total_effective(input)
|
|
112
77
|
acc_42 = 0.0
|
|
113
78
|
t43 = input["items"] || input[:items]
|
|
114
|
-
t73 = 100.0
|
|
115
|
-
t67 = 0.9
|
|
116
79
|
t43.each_with_index do |items_el_44, items_i_45|
|
|
117
80
|
t72 = items_el_44["price"] || items_el_44[:price]
|
|
118
81
|
t77 = items_el_44["qty"] || items_el_44[:qty]
|
|
119
|
-
t74 = t72 >
|
|
82
|
+
t74 = t72 > 100.0
|
|
120
83
|
t78 = t72 * t77
|
|
121
|
-
t68 = t78 *
|
|
84
|
+
t68 = t78 * 0.9
|
|
122
85
|
t70 = t74 ? t68 : t78
|
|
123
86
|
acc_42 += t70
|
|
124
87
|
end
|
|
@@ -1,47 +1,30 @@
|
|
|
1
1
|
(LIR
|
|
2
2
|
(Declaration tuple
|
|
3
|
-
%t1 = const 1 :: integer
|
|
4
|
-
%t2 = const 2 :: integer
|
|
5
|
-
%t3 = const 3 :: integer
|
|
6
3
|
%t4 = load_input "x" :: integer
|
|
7
|
-
%t5 = make_tuple(%
|
|
4
|
+
%t5 = make_tuple(%__immediate_placeholder__, %__immediate_placeholder__, %__immediate_placeholder__, %t4) :: tuple<integer, integer, integer, integer>
|
|
8
5
|
yield %t5
|
|
9
6
|
)
|
|
10
7
|
(Declaration max_1
|
|
11
|
-
%t24 = const 1 :: integer
|
|
12
|
-
%t25 = const 2 :: integer
|
|
13
|
-
%t26 = const 3 :: integer
|
|
14
8
|
%t27 = load_input "x" :: integer
|
|
15
|
-
%t28 = make_tuple(%
|
|
9
|
+
%t28 = make_tuple(%__immediate_placeholder__, %__immediate_placeholder__, %__immediate_placeholder__, %t27) :: tuple<integer, integer, integer, integer>
|
|
16
10
|
%t7 = fold %t28 fn="agg.max" :: integer
|
|
17
11
|
yield %t7
|
|
18
12
|
)
|
|
19
13
|
(Declaration max_2
|
|
20
|
-
%t8 = const 1 :: integer
|
|
21
|
-
%t9 = const 2 :: integer
|
|
22
|
-
%t10 = const 3 :: integer
|
|
23
14
|
%t11 = load_input "x" :: integer
|
|
24
|
-
%
|
|
25
|
-
%t13 = make_tuple(%t8, %t9, %t10, %t11, %t12) :: tuple<integer, integer, integer, integer, integer>
|
|
15
|
+
%t13 = make_tuple(%__immediate_placeholder__, %__immediate_placeholder__, %__immediate_placeholder__, %t11, %__immediate_placeholder__) :: tuple<integer, integer, integer, integer, integer>
|
|
26
16
|
%t14 = fold %t13 fn="agg.max" :: integer
|
|
27
17
|
yield %t14
|
|
28
18
|
)
|
|
29
19
|
(Declaration min_1
|
|
30
|
-
%t29 = const 1 :: integer
|
|
31
|
-
%t30 = const 2 :: integer
|
|
32
|
-
%t31 = const 3 :: integer
|
|
33
20
|
%t32 = load_input "x" :: integer
|
|
34
|
-
%t33 = make_tuple(%
|
|
21
|
+
%t33 = make_tuple(%__immediate_placeholder__, %__immediate_placeholder__, %__immediate_placeholder__, %t32) :: tuple<integer, integer, integer, integer>
|
|
35
22
|
%t16 = fold %t33 fn="agg.min" :: integer
|
|
36
23
|
yield %t16
|
|
37
24
|
)
|
|
38
25
|
(Declaration min_2
|
|
39
|
-
%t17 = const 1 :: integer
|
|
40
|
-
%t18 = const 2 :: integer
|
|
41
|
-
%t19 = const 3 :: integer
|
|
42
26
|
%t20 = load_input "x" :: integer
|
|
43
|
-
%
|
|
44
|
-
%t22 = make_tuple(%t17, %t18, %t19, %t20, %t21) :: tuple<integer, integer, integer, integer, integer>
|
|
27
|
+
%t22 = make_tuple(%__immediate_placeholder__, %__immediate_placeholder__, %__immediate_placeholder__, %t20, %__immediate_placeholder__) :: tuple<integer, integer, integer, integer, integer>
|
|
45
28
|
%t23 = fold %t22 fn="agg.min" :: integer
|
|
46
29
|
yield %t23
|
|
47
30
|
)
|
|
@@ -1,50 +1,33 @@
|
|
|
1
1
|
export function _tuple(input) {
|
|
2
|
-
const t1 = 1;
|
|
3
|
-
const t2 = 2;
|
|
4
|
-
const t3 = 3;
|
|
5
2
|
let t4 = input["x"];
|
|
6
|
-
let t5 = [
|
|
3
|
+
let t5 = [1, 2, 3, t4];
|
|
7
4
|
return t5;
|
|
8
5
|
}
|
|
9
6
|
|
|
10
7
|
export function _max_1(input) {
|
|
11
|
-
const t24 = 1;
|
|
12
|
-
const t25 = 2;
|
|
13
|
-
const t26 = 3;
|
|
14
8
|
let t27 = input["x"];
|
|
15
|
-
let t28 = [
|
|
9
|
+
let t28 = [1, 2, 3, t27];
|
|
16
10
|
let t7 = Math.max(...t28);
|
|
17
11
|
return t7;
|
|
18
12
|
}
|
|
19
13
|
|
|
20
14
|
export function _max_2(input) {
|
|
21
|
-
const t8 = 1;
|
|
22
|
-
const t9 = 2;
|
|
23
|
-
const t10 = 3;
|
|
24
15
|
let t11 = input["x"];
|
|
25
|
-
|
|
26
|
-
let t13 = [t8, t9, t10, t11, t12];
|
|
16
|
+
let t13 = [1, 2, 3, t11, 1000];
|
|
27
17
|
let t14 = Math.max(...t13);
|
|
28
18
|
return t14;
|
|
29
19
|
}
|
|
30
20
|
|
|
31
21
|
export function _min_1(input) {
|
|
32
|
-
const t29 = 1;
|
|
33
|
-
const t30 = 2;
|
|
34
|
-
const t31 = 3;
|
|
35
22
|
let t32 = input["x"];
|
|
36
|
-
let t33 = [
|
|
23
|
+
let t33 = [1, 2, 3, t32];
|
|
37
24
|
let t16 = Math.min(...t33);
|
|
38
25
|
return t16;
|
|
39
26
|
}
|
|
40
27
|
|
|
41
28
|
export function _min_2(input) {
|
|
42
|
-
const t17 = 1;
|
|
43
|
-
const t18 = 2;
|
|
44
|
-
const t19 = 3;
|
|
45
29
|
let t20 = input["x"];
|
|
46
|
-
|
|
47
|
-
let t22 = [t17, t18, t19, t20, t21];
|
|
30
|
+
let t22 = [1, 2, 3, t20, -100];
|
|
48
31
|
let t23 = Math.min(...t22);
|
|
49
32
|
return t23;
|
|
50
33
|
}
|
|
@@ -1,77 +1,31 @@
|
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
|
2
|
-
module Kumi::Compiled::
|
|
3
|
-
def self.
|
|
4
|
-
instance = Object.new
|
|
5
|
-
instance.extend(self)
|
|
6
|
-
instance.instance_variable_set(:@input, input_data)
|
|
7
|
-
instance
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def self.__kumi_executable__
|
|
11
|
-
instance = Object.new
|
|
12
|
-
instance.extend(self)
|
|
13
|
-
instance
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def update(input_data)
|
|
17
|
-
@input = @input.merge(input_data)
|
|
18
|
-
self
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def [](name)
|
|
22
|
-
case name
|
|
23
|
-
when :tuple then _tuple
|
|
24
|
-
when :max_1 then _max_1
|
|
25
|
-
when :max_2 then _max_2
|
|
26
|
-
when :min_1 then _min_1
|
|
27
|
-
when :min_2 then _min_2
|
|
28
|
-
else raise KeyError, "Unknown declaration"
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def _tuple(input = @input)
|
|
33
|
-
t1 = 1
|
|
34
|
-
t2 = 2
|
|
35
|
-
t3 = 3
|
|
2
|
+
module Kumi::Compiled::KUMI_be775f6599577b9dfe31ca0a248a9c6d88b906f1f41ae7606749bc94ce3ae9e5
|
|
3
|
+
def self._tuple(input)
|
|
36
4
|
t4 = input["x"] || input[:x]
|
|
37
|
-
[
|
|
5
|
+
[1, 2, 3, t4]
|
|
38
6
|
end
|
|
39
7
|
|
|
40
|
-
def _max_1(input
|
|
41
|
-
t24 = 1
|
|
42
|
-
t25 = 2
|
|
43
|
-
t26 = 3
|
|
8
|
+
def self._max_1(input)
|
|
44
9
|
t27 = input["x"] || input[:x]
|
|
45
|
-
t28 = [
|
|
10
|
+
t28 = [1, 2, 3, t27]
|
|
46
11
|
t28.max
|
|
47
12
|
end
|
|
48
13
|
|
|
49
|
-
def _max_2(input
|
|
50
|
-
t8 = 1
|
|
51
|
-
t9 = 2
|
|
52
|
-
t10 = 3
|
|
14
|
+
def self._max_2(input)
|
|
53
15
|
t11 = input["x"] || input[:x]
|
|
54
|
-
|
|
55
|
-
t13 = [t8, t9, t10, t11, t12]
|
|
16
|
+
t13 = [1, 2, 3, t11, 1000]
|
|
56
17
|
t13.max
|
|
57
18
|
end
|
|
58
19
|
|
|
59
|
-
def _min_1(input
|
|
60
|
-
t29 = 1
|
|
61
|
-
t30 = 2
|
|
62
|
-
t31 = 3
|
|
20
|
+
def self._min_1(input)
|
|
63
21
|
t32 = input["x"] || input[:x]
|
|
64
|
-
t33 = [
|
|
22
|
+
t33 = [1, 2, 3, t32]
|
|
65
23
|
t33.min
|
|
66
24
|
end
|
|
67
25
|
|
|
68
|
-
def _min_2(input
|
|
69
|
-
t17 = 1
|
|
70
|
-
t18 = 2
|
|
71
|
-
t19 = 3
|
|
26
|
+
def self._min_2(input)
|
|
72
27
|
t20 = input["x"] || input[:x]
|
|
73
|
-
|
|
74
|
-
t22 = [t17, t18, t19, t20, t21]
|
|
28
|
+
t22 = [1, 2, 3, t20, -100]
|
|
75
29
|
t22.min
|
|
76
30
|
end
|
|
77
31
|
end
|
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
(LIR
|
|
2
2
|
(Declaration x_is_large
|
|
3
3
|
%t1 = load_input "points" :: array
|
|
4
|
-
%t5 = const 100 :: integer
|
|
5
4
|
loop points id=L1 in %t1 as el=%points_el_2, idx=%points_i_3
|
|
6
5
|
%t4 = load_field points_el_2["x"] :: integer
|
|
7
|
-
%t6 = call core.gt(%t4,
|
|
6
|
+
%t6 = call core.gt(%t4, 100) :: boolean
|
|
8
7
|
yield %t6
|
|
9
8
|
end_loop
|
|
10
9
|
)
|
|
11
10
|
(Declaration selected_value
|
|
12
11
|
%t7 = load_input "points" :: array
|
|
13
|
-
%t29 = const 100 :: integer
|
|
14
12
|
loop points id=L2 in %t7 as el=%points_el_8, idx=%points_i_9
|
|
15
13
|
%t28 = load_field points_el_8["x"] :: integer
|
|
16
14
|
%t12 = load_field points_el_8["y"] :: integer
|
|
17
|
-
%t30 = call core.gt(%t28,
|
|
15
|
+
%t30 = call core.gt(%t28, 100) :: boolean
|
|
18
16
|
%t13 = select %t30, %t28, %t12 :: integer
|
|
19
17
|
yield %t13
|
|
20
18
|
end_loop
|
|
21
19
|
)
|
|
22
20
|
(Declaration final_value_per_point
|
|
23
21
|
%t14 = load_input "points" :: array
|
|
24
|
-
%t38 = const 100 :: integer
|
|
25
22
|
loop points id=L3 in %t14 as el=%points_el_15, idx=%points_i_16
|
|
26
23
|
%t37 = load_field points_el_15["x"] :: integer
|
|
27
24
|
%t34 = load_field points_el_15["y"] :: integer
|
|
28
|
-
%t39 = call core.gt(%t37,
|
|
25
|
+
%t39 = call core.gt(%t37, 100) :: boolean
|
|
29
26
|
%t35 = select %t39, %t37, %t34 :: integer
|
|
30
27
|
%t19 = make_tuple(%t35, %t37) :: tuple<integer, integer>
|
|
31
28
|
%t20 = fold %t19 fn="agg.max" :: integer
|
|
@@ -35,11 +32,10 @@
|
|
|
35
32
|
(Declaration grand_total
|
|
36
33
|
%acc_21 = decl_acc :: integer
|
|
37
34
|
%t22 = load_input "points" :: array
|
|
38
|
-
%t52 = const 100 :: integer
|
|
39
35
|
loop points id=L4 in %t22 as el=%points_el_23, idx=%points_i_24
|
|
40
36
|
%t51 = load_field points_el_23["x"] :: integer
|
|
41
37
|
%t48 = load_field points_el_23["y"] :: integer
|
|
42
|
-
%t53 = call core.gt(%t51,
|
|
38
|
+
%t53 = call core.gt(%t51, 100) :: boolean
|
|
43
39
|
%t49 = select %t53, %t51, %t48 :: integer
|
|
44
40
|
%t43 = make_tuple(%t49, %t51) :: tuple<integer, integer>
|
|
45
41
|
%t44 = fold %t43 fn="agg.max" :: integer
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export function _x_is_large(input) {
|
|
2
2
|
let out = [];
|
|
3
3
|
let t1 = input["points"];
|
|
4
|
-
const t5 = 100;
|
|
5
4
|
t1.forEach((points_el_2, points_i_3) => {
|
|
6
5
|
let t4 = points_el_2["x"];
|
|
7
|
-
let t6 = t4 >
|
|
6
|
+
let t6 = t4 > 100;
|
|
8
7
|
out.push(t6);
|
|
9
8
|
});
|
|
10
9
|
return out;
|
|
@@ -13,11 +12,10 @@ export function _x_is_large(input) {
|
|
|
13
12
|
export function _selected_value(input) {
|
|
14
13
|
let out = [];
|
|
15
14
|
let t7 = input["points"];
|
|
16
|
-
const t29 = 100;
|
|
17
15
|
t7.forEach((points_el_8, points_i_9) => {
|
|
18
16
|
let t28 = points_el_8["x"];
|
|
19
17
|
let t12 = points_el_8["y"];
|
|
20
|
-
let t30 = t28 >
|
|
18
|
+
let t30 = t28 > 100;
|
|
21
19
|
let t13 = t30 ? t28 : t12;
|
|
22
20
|
out.push(t13);
|
|
23
21
|
});
|
|
@@ -27,11 +25,10 @@ export function _selected_value(input) {
|
|
|
27
25
|
export function _final_value_per_point(input) {
|
|
28
26
|
let out = [];
|
|
29
27
|
let t14 = input["points"];
|
|
30
|
-
const t38 = 100;
|
|
31
28
|
t14.forEach((points_el_15, points_i_16) => {
|
|
32
29
|
let t37 = points_el_15["x"];
|
|
33
30
|
let t34 = points_el_15["y"];
|
|
34
|
-
let t39 = t37 >
|
|
31
|
+
let t39 = t37 > 100;
|
|
35
32
|
let t35 = t39 ? t37 : t34;
|
|
36
33
|
let t19 = [t35, t37];
|
|
37
34
|
let t20 = Math.max(...t19);
|
|
@@ -43,11 +40,10 @@ export function _final_value_per_point(input) {
|
|
|
43
40
|
export function _grand_total(input) {
|
|
44
41
|
let acc_21 = 0;
|
|
45
42
|
let t22 = input["points"];
|
|
46
|
-
const t52 = 100;
|
|
47
43
|
t22.forEach((points_el_23, points_i_24) => {
|
|
48
44
|
let t51 = points_el_23["x"];
|
|
49
45
|
let t48 = points_el_23["y"];
|
|
50
|
-
let t53 = t51 >
|
|
46
|
+
let t53 = t51 > 100;
|
|
51
47
|
let t49 = t53 ? t51 : t48;
|
|
52
48
|
let t43 = [t49, t51];
|
|
53
49
|
let t44 = Math.max(...t43);
|