kumi 0.0.31 → 0.0.35
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/.codex +0 -0
- data/CHANGELOG.md +39 -1
- data/README.md +50 -106
- data/Rakefile +2 -0
- data/data/functions/agg/numeric.yaml +6 -0
- data/data/functions/core/arithmetic.yaml +26 -0
- data/data/kernels/javascript/agg/numeric.yaml +8 -4
- data/data/kernels/javascript/agg/string.yaml +4 -1
- data/data/kernels/javascript/core/arithmetic.yaml +8 -0
- data/data/kernels/ruby/agg/numeric.yaml +6 -2
- data/data/kernels/ruby/agg/string.yaml +4 -1
- data/data/kernels/ruby/core/arithmetic.yaml +12 -2
- data/docs/AGENTS.md +60 -0
- data/docs/ARCHITECTURE.md +114 -250
- data/docs/DEVELOPMENT.md +13 -0
- data/docs/GOLDEN_TESTS.md +88 -161
- data/docs/RELEASING.md +52 -0
- data/docs/SCHEMA_IMPORTS.md +155 -0
- data/docs/SYNTAX.md +48 -0
- data/docs/UNSAT_DETECTION.md +2 -1
- data/golden/array_element/expected/dfir.txt +5 -0
- data/golden/array_element/expected/dfir_optimized.txt +5 -0
- data/golden/array_element/expected/loopir.txt +11 -0
- data/golden/array_element/expected/schema_javascript.mjs +13 -10
- data/golden/array_element/expected/schema_ruby.rb +11 -36
- data/golden/array_element/expected/vecir.txt +5 -0
- data/golden/array_index/expected/dfir.txt +25 -0
- data/golden/array_index/expected/dfir_optimized.txt +27 -0
- data/golden/array_index/expected/loopir.txt +44 -0
- data/golden/array_index/expected/nast.txt +6 -6
- data/golden/array_index/expected/schema_javascript.mjs +53 -36
- data/golden/array_index/expected/schema_ruby.rb +41 -58
- data/golden/array_index/expected/snast.txt +2 -2
- data/golden/array_index/expected/vecir.txt +27 -0
- data/golden/array_operations/expected/dfir.txt +36 -0
- data/golden/array_operations/expected/dfir_optimized.txt +36 -0
- data/golden/array_operations/expected/loopir.txt +45 -0
- data/golden/array_operations/expected/schema_javascript.mjs +50 -45
- data/golden/array_operations/expected/schema_ruby.rb +46 -75
- data/golden/array_operations/expected/vecir.txt +36 -0
- data/golden/cascade_logic/expected/dfir.txt +21 -0
- data/golden/cascade_logic/expected/dfir_optimized.txt +22 -0
- data/golden/cascade_logic/expected/loopir.txt +22 -0
- data/golden/cascade_logic/expected/schema_javascript.mjs +18 -18
- data/golden/cascade_logic/expected/schema_ruby.rb +25 -49
- data/golden/cascade_logic/expected/vecir.txt +22 -0
- data/golden/chained_fusion/expected/dfir.txt +53 -0
- data/golden/chained_fusion/expected/dfir_optimized.txt +75 -0
- data/golden/chained_fusion/expected/loopir.txt +95 -0
- data/golden/chained_fusion/expected/schema_javascript.mjs +105 -101
- data/golden/chained_fusion/expected/schema_ruby.rb +93 -128
- data/golden/chained_fusion/expected/vecir.txt +75 -0
- data/golden/decimal_explicit/expected/dfir.txt +18 -0
- data/golden/decimal_explicit/expected/dfir_optimized.txt +28 -0
- data/golden/decimal_explicit/expected/loopir.txt +28 -0
- data/golden/decimal_explicit/expected/schema_javascript.mjs +31 -19
- data/golden/decimal_explicit/expected/schema_ruby.rb +34 -46
- data/golden/decimal_explicit/expected/vecir.txt +28 -0
- data/golden/element_arrays/expected/dfir.txt +42 -0
- data/golden/element_arrays/expected/dfir_optimized.txt +50 -0
- data/golden/element_arrays/expected/loopir.txt +92 -0
- data/golden/element_arrays/expected/schema_javascript.mjs +107 -85
- data/golden/element_arrays/expected/schema_ruby.rb +85 -111
- data/golden/element_arrays/expected/snast.txt +6 -6
- data/golden/element_arrays/expected/vecir.txt +50 -0
- data/golden/empty_and_null_inputs/expected/dfir.txt +14 -0
- data/golden/empty_and_null_inputs/expected/dfir_optimized.txt +25 -0
- data/golden/empty_and_null_inputs/expected/loopir.txt +43 -0
- data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +49 -38
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +41 -66
- data/golden/empty_and_null_inputs/expected/vecir.txt +25 -0
- data/golden/example_xpto/expected/ast.txt +23 -0
- data/golden/example_xpto/expected/dfir.txt +10 -0
- data/golden/example_xpto/expected/dfir_optimized.txt +10 -0
- data/golden/example_xpto/expected/input_plan.txt +1 -0
- data/golden/example_xpto/expected/loopir.txt +10 -0
- data/golden/example_xpto/expected/nast.txt +17 -0
- data/golden/example_xpto/expected/schema_javascript.mjs +16 -0
- data/golden/example_xpto/expected/schema_ruby.rb +18 -0
- data/golden/example_xpto/expected/snast.txt +17 -0
- data/golden/example_xpto/expected/vecir.txt +10 -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/dfir.txt +10 -0
- data/golden/function_overload/expected/dfir_optimized.txt +12 -0
- data/golden/function_overload/expected/loopir.txt +12 -0
- data/golden/function_overload/expected/schema_javascript.mjs +17 -8
- data/golden/function_overload/expected/schema_ruby.rb +16 -32
- data/golden/function_overload/expected/snast.txt +1 -1
- data/golden/function_overload/expected/vecir.txt +12 -0
- data/golden/game_of_life/expected/dfir.txt +69 -0
- data/golden/game_of_life/expected/dfir_optimized.txt +207 -0
- data/golden/game_of_life/expected/loopir.txt +694 -0
- data/golden/game_of_life/expected/schema_javascript.mjs +841 -97
- data/golden/game_of_life/expected/schema_ruby.rb +792 -115
- data/golden/game_of_life/expected/vecir.txt +207 -0
- data/golden/hash_keys/expected/dfir.txt +14 -0
- data/golden/hash_keys/expected/dfir_optimized.txt +14 -0
- data/golden/hash_keys/expected/loopir.txt +14 -0
- data/golden/hash_keys/expected/schema_javascript.mjs +13 -30
- data/golden/hash_keys/expected/schema_ruby.rb +16 -58
- data/golden/hash_keys/expected/vecir.txt +14 -0
- data/golden/hash_value/expected/dfir.txt +21 -0
- data/golden/hash_value/expected/dfir_optimized.txt +25 -0
- data/golden/hash_value/expected/loopir.txt +31 -0
- data/golden/hash_value/expected/schema_javascript.mjs +34 -37
- data/golden/hash_value/expected/schema_ruby.rb +32 -65
- data/golden/hash_value/expected/vecir.txt +25 -0
- data/golden/hierarchical_complex/expected/dfir.txt +86 -0
- data/golden/hierarchical_complex/expected/dfir_optimized.txt +88 -0
- data/golden/hierarchical_complex/expected/loopir.txt +129 -0
- data/golden/hierarchical_complex/expected/schema_javascript.mjs +145 -109
- data/golden/hierarchical_complex/expected/schema_ruby.rb +119 -127
- data/golden/hierarchical_complex/expected/vecir.txt +88 -0
- data/golden/inline_rename_scope_leak/expected/dfir.txt +19 -0
- data/golden/inline_rename_scope_leak/expected/dfir_optimized.txt +27 -0
- data/golden/inline_rename_scope_leak/expected/loopir.txt +35 -0
- data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +39 -39
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +36 -69
- data/golden/inline_rename_scope_leak/expected/vecir.txt +23 -0
- data/golden/input_reference/expected/dfir.txt +22 -0
- data/golden/input_reference/expected/dfir_optimized.txt +22 -0
- data/golden/input_reference/expected/loopir.txt +33 -0
- data/golden/input_reference/expected/schema_javascript.mjs +36 -30
- data/golden/input_reference/expected/schema_ruby.rb +36 -60
- data/golden/input_reference/expected/snast.txt +1 -1
- data/golden/input_reference/expected/vecir.txt +22 -0
- data/golden/interleaved_fusion/expected/dfir.txt +35 -0
- data/golden/interleaved_fusion/expected/dfir_optimized.txt +60 -0
- data/golden/interleaved_fusion/expected/loopir.txt +74 -0
- data/golden/interleaved_fusion/expected/schema_javascript.mjs +82 -73
- data/golden/interleaved_fusion/expected/schema_ruby.rb +70 -104
- data/golden/interleaved_fusion/expected/vecir.txt +60 -0
- data/golden/let_inline/expected/dfir.txt +16 -0
- data/golden/let_inline/expected/dfir_optimized.txt +20 -0
- data/golden/let_inline/expected/loopir.txt +20 -0
- data/golden/let_inline/expected/schema_javascript.mjs +28 -7
- data/golden/let_inline/expected/schema_ruby.rb +25 -28
- data/golden/let_inline/expected/vecir.txt +20 -0
- data/golden/loop_fusion/expected/dfir.txt +29 -0
- data/golden/loop_fusion/expected/dfir_optimized.txt +47 -0
- data/golden/loop_fusion/expected/loopir.txt +55 -0
- data/golden/loop_fusion/expected/schema_javascript.mjs +61 -55
- data/golden/loop_fusion/expected/schema_ruby.rb +53 -84
- data/golden/loop_fusion/expected/vecir.txt +47 -0
- data/golden/min_max_empty_arrays/expected/ast.txt +58 -0
- data/golden/min_max_empty_arrays/expected/dfir.txt +27 -0
- data/golden/min_max_empty_arrays/expected/dfir_optimized.txt +37 -0
- data/golden/min_max_empty_arrays/expected/input_plan.txt +15 -0
- data/golden/min_max_empty_arrays/expected/loopir.txt +67 -0
- data/golden/min_max_empty_arrays/expected/nast.txt +27 -0
- data/golden/min_max_empty_arrays/expected/schema_javascript.mjs +92 -0
- data/golden/min_max_empty_arrays/expected/schema_ruby.rb +90 -0
- data/golden/min_max_empty_arrays/expected/snast.txt +27 -0
- data/golden/min_max_empty_arrays/expected/vecir.txt +37 -0
- data/golden/min_max_empty_arrays/expected.json +7 -0
- data/golden/min_max_empty_arrays/input.json +12 -0
- data/golden/min_max_empty_arrays/schema.kumi +24 -0
- data/golden/min_reduce_scope/expected/dfir.txt +35 -0
- data/golden/min_reduce_scope/expected/dfir_optimized.txt +37 -0
- data/golden/min_reduce_scope/expected/loopir.txt +58 -0
- data/golden/min_reduce_scope/expected/schema_javascript.mjs +66 -54
- data/golden/min_reduce_scope/expected/schema_ruby.rb +55 -82
- data/golden/min_reduce_scope/expected/vecir.txt +37 -0
- data/golden/mixed_dimensions/expected/dfir.txt +23 -0
- data/golden/mixed_dimensions/expected/dfir_optimized.txt +26 -0
- data/golden/mixed_dimensions/expected/loopir.txt +44 -0
- data/golden/mixed_dimensions/expected/schema_javascript.mjs +50 -41
- data/golden/mixed_dimensions/expected/schema_ruby.rb +43 -69
- data/golden/mixed_dimensions/expected/vecir.txt +28 -0
- data/golden/multi_loop_reduction/expected/ast.txt +39 -0
- data/golden/multi_loop_reduction/expected/dfir.txt +23 -0
- data/golden/multi_loop_reduction/expected/dfir_optimized.txt +25 -0
- data/golden/multi_loop_reduction/expected/input_plan.txt +5 -0
- data/golden/multi_loop_reduction/expected/loopir.txt +37 -0
- data/golden/multi_loop_reduction/expected/nast.txt +25 -0
- data/golden/multi_loop_reduction/expected/schema_javascript.mjs +50 -0
- data/golden/multi_loop_reduction/expected/schema_ruby.rb +48 -0
- data/golden/multi_loop_reduction/expected/snast.txt +25 -0
- data/golden/multi_loop_reduction/expected/vecir.txt +25 -0
- data/golden/multi_loop_reduction/expected.json +5 -0
- data/golden/multi_loop_reduction/input.json +7 -0
- data/golden/multi_loop_reduction/schema.kumi +20 -0
- data/golden/multirank_hoisting/expected/dfir.txt +40 -0
- data/golden/multirank_hoisting/expected/dfir_optimized.txt +109 -0
- data/golden/multirank_hoisting/expected/loopir.txt +164 -0
- data/golden/multirank_hoisting/expected/schema_javascript.mjs +183 -108
- data/golden/multirank_hoisting/expected/schema_ruby.rb +157 -135
- data/golden/multirank_hoisting/expected/vecir.txt +109 -0
- data/golden/nested_hash/expected/dfir.txt +6 -0
- data/golden/nested_hash/expected/dfir_optimized.txt +6 -0
- data/golden/nested_hash/expected/loopir.txt +6 -0
- data/golden/nested_hash/expected/schema_javascript.mjs +5 -5
- data/golden/nested_hash/expected/schema_ruby.rb +8 -32
- data/golden/nested_hash/expected/vecir.txt +6 -0
- data/golden/reduction_broadcast/expected/dfir.txt +27 -0
- data/golden/reduction_broadcast/expected/dfir_optimized.txt +44 -0
- data/golden/reduction_broadcast/expected/loopir.txt +68 -0
- data/golden/reduction_broadcast/expected/schema_javascript.mjs +77 -62
- data/golden/reduction_broadcast/expected/schema_ruby.rb +64 -92
- data/golden/reduction_broadcast/expected/vecir.txt +44 -0
- data/golden/roll/expected/dfir.txt +16 -0
- data/golden/roll/expected/dfir_optimized.txt +16 -0
- data/golden/roll/expected/loopir.txt +40 -0
- data/golden/roll/expected/schema_javascript.mjs +44 -53
- data/golden/roll/expected/schema_ruby.rb +41 -82
- data/golden/roll/expected/vecir.txt +16 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/ast.txt +26 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/dfir.txt +8 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/dfir_optimized.txt +13 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/input_plan.txt +5 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/loopir.txt +19 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/nast.txt +12 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_javascript.mjs +27 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_ruby.rb +27 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/snast.txt +12 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/vecir.txt +13 -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/dfir.txt +41 -0
- data/golden/schema_imports_complex_order_calc/expected/dfir_optimized.txt +168 -0
- data/golden/schema_imports_complex_order_calc/expected/input_plan.txt +16 -0
- data/golden/schema_imports_complex_order_calc/expected/loopir.txt +202 -0
- data/golden/schema_imports_complex_order_calc/expected/nast.txt +56 -0
- data/golden/schema_imports_complex_order_calc/expected/schema_javascript.mjs +251 -0
- data/golden/schema_imports_complex_order_calc/expected/schema_ruby.rb +234 -0
- data/golden/schema_imports_complex_order_calc/expected/snast.txt +56 -0
- data/golden/schema_imports_complex_order_calc/expected/vecir.txt +168 -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/dfir.txt +15 -0
- data/golden/schema_imports_composed_order/expected/dfir_optimized.txt +29 -0
- data/golden/schema_imports_composed_order/expected/input_plan.txt +3 -0
- data/golden/schema_imports_composed_order/expected/loopir.txt +29 -0
- data/golden/schema_imports_composed_order/expected/nast.txt +25 -0
- data/golden/schema_imports_composed_order/expected/schema_javascript.mjs +41 -0
- data/golden/schema_imports_composed_order/expected/schema_ruby.rb +43 -0
- data/golden/schema_imports_composed_order/expected/snast.txt +25 -0
- data/golden/schema_imports_composed_order/expected/vecir.txt +29 -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/dfir.txt +18 -0
- data/golden/schema_imports_discount_with_tax/expected/dfir_optimized.txt +31 -0
- data/golden/schema_imports_discount_with_tax/expected/input_plan.txt +2 -0
- data/golden/schema_imports_discount_with_tax/expected/loopir.txt +31 -0
- data/golden/schema_imports_discount_with_tax/expected/nast.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected/schema_javascript.mjs +46 -0
- data/golden/schema_imports_discount_with_tax/expected/schema_ruby.rb +48 -0
- data/golden/schema_imports_discount_with_tax/expected/snast.txt +30 -0
- data/golden/schema_imports_discount_with_tax/expected/vecir.txt +31 -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/dfir.txt +11 -0
- data/golden/schema_imports_line_items/expected/dfir_optimized.txt +26 -0
- data/golden/schema_imports_line_items/expected/input_plan.txt +8 -0
- data/golden/schema_imports_line_items/expected/loopir.txt +35 -0
- data/golden/schema_imports_line_items/expected/nast.txt +19 -0
- data/golden/schema_imports_line_items/expected/schema_javascript.mjs +47 -0
- data/golden/schema_imports_line_items/expected/schema_ruby.rb +46 -0
- data/golden/schema_imports_line_items/expected/snast.txt +19 -0
- data/golden/schema_imports_line_items/expected/vecir.txt +26 -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/dfir.txt +17 -0
- data/golden/schema_imports_multiple/expected/dfir_optimized.txt +34 -0
- data/golden/schema_imports_multiple/expected/input_plan.txt +2 -0
- data/golden/schema_imports_multiple/expected/loopir.txt +34 -0
- data/golden/schema_imports_multiple/expected/nast.txt +28 -0
- data/golden/schema_imports_multiple/expected/schema_javascript.mjs +49 -0
- data/golden/schema_imports_multiple/expected/schema_ruby.rb +51 -0
- data/golden/schema_imports_multiple/expected/snast.txt +28 -0
- data/golden/schema_imports_multiple/expected/vecir.txt +34 -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/dfir.txt +14 -0
- data/golden/schema_imports_nested_expressions/expected/dfir_optimized.txt +24 -0
- data/golden/schema_imports_nested_expressions/expected/input_plan.txt +3 -0
- data/golden/schema_imports_nested_expressions/expected/loopir.txt +24 -0
- data/golden/schema_imports_nested_expressions/expected/nast.txt +23 -0
- data/golden/schema_imports_nested_expressions/expected/schema_javascript.mjs +33 -0
- data/golden/schema_imports_nested_expressions/expected/schema_ruby.rb +35 -0
- data/golden/schema_imports_nested_expressions/expected/snast.txt +23 -0
- data/golden/schema_imports_nested_expressions/expected/vecir.txt +24 -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/dfir.txt +15 -0
- data/golden/schema_imports_nested_with_reductions/expected/dfir_optimized.txt +44 -0
- data/golden/schema_imports_nested_with_reductions/expected/input_plan.txt +12 -0
- data/golden/schema_imports_nested_with_reductions/expected/loopir.txt +68 -0
- data/golden/schema_imports_nested_with_reductions/expected/nast.txt +23 -0
- data/golden/schema_imports_nested_with_reductions/expected/schema_javascript.mjs +88 -0
- data/golden/schema_imports_nested_with_reductions/expected/schema_ruby.rb +82 -0
- data/golden/schema_imports_nested_with_reductions/expected/snast.txt +23 -0
- data/golden/schema_imports_nested_with_reductions/expected/vecir.txt +44 -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/dfir.txt +7 -0
- data/golden/schema_imports_with_imports/expected/dfir_optimized.txt +9 -0
- data/golden/schema_imports_with_imports/expected/input_plan.txt +1 -0
- data/golden/schema_imports_with_imports/expected/loopir.txt +9 -0
- data/golden/schema_imports_with_imports/expected/nast.txt +13 -0
- data/golden/schema_imports_with_imports/expected/schema_javascript.mjs +15 -0
- data/golden/schema_imports_with_imports/expected/schema_ruby.rb +17 -0
- data/golden/schema_imports_with_imports/expected/snast.txt +13 -0
- data/golden/schema_imports_with_imports/expected/vecir.txt +9 -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/dfir.txt +24 -0
- data/golden/shift/expected/dfir_optimized.txt +24 -0
- data/golden/shift/expected/loopir.txt +64 -0
- data/golden/shift/expected/schema_javascript.mjs +72 -88
- data/golden/shift/expected/schema_ruby.rb +67 -119
- data/golden/shift/expected/vecir.txt +24 -0
- data/golden/shift_2d/expected/dfir.txt +60 -0
- data/golden/shift_2d/expected/dfir_optimized.txt +60 -0
- data/golden/shift_2d/expected/loopir.txt +176 -0
- data/golden/shift_2d/expected/schema_javascript.mjs +204 -284
- data/golden/shift_2d/expected/schema_ruby.rb +169 -309
- data/golden/shift_2d/expected/vecir.txt +60 -0
- data/golden/simple_math/expected/dfir.txt +21 -0
- data/golden/simple_math/expected/dfir_optimized.txt +21 -0
- data/golden/simple_math/expected/loopir.txt +21 -0
- data/golden/simple_math/expected/schema_javascript.mjs +17 -17
- data/golden/simple_math/expected/schema_ruby.rb +24 -48
- data/golden/simple_math/expected/vecir.txt +21 -0
- data/golden/streaming_basics/expected/dfir.txt +43 -0
- data/golden/streaming_basics/expected/dfir_optimized.txt +69 -0
- data/golden/streaming_basics/expected/loopir.txt +76 -0
- data/golden/streaming_basics/expected/schema_javascript.mjs +83 -73
- data/golden/streaming_basics/expected/schema_ruby.rb +77 -105
- data/golden/streaming_basics/expected/vecir.txt +69 -0
- data/golden/tuples/expected/dfir.txt +28 -0
- data/golden/tuples/expected/dfir_optimized.txt +42 -0
- data/golden/tuples/expected/loopir.txt +42 -0
- data/golden/tuples/expected/schema_javascript.mjs +41 -35
- data/golden/tuples/expected/schema_ruby.rb +56 -74
- data/golden/tuples/expected/vecir.txt +42 -0
- data/golden/tuples_and_arrays/expected/dfir.txt +26 -0
- data/golden/tuples_and_arrays/expected/dfir_optimized.txt +37 -0
- data/golden/tuples_and_arrays/expected/loopir.txt +45 -0
- data/golden/tuples_and_arrays/expected/schema_javascript.mjs +49 -46
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +46 -75
- data/golden/tuples_and_arrays/expected/vecir.txt +37 -0
- data/golden/us_tax_2024/expected/dfir.txt +189 -0
- data/golden/us_tax_2024/expected/dfir_optimized.txt +565 -0
- data/golden/us_tax_2024/expected/loopir.txt +685 -0
- data/golden/us_tax_2024/expected/schema_javascript.mjs +813 -127
- data/golden/us_tax_2024/expected/schema_ruby.rb +763 -159
- data/golden/us_tax_2024/expected/vecir.txt +567 -0
- data/golden/vector_make_object/expected/ast.txt +22 -0
- data/golden/vector_make_object/expected/dfir.txt +6 -0
- data/golden/vector_make_object/expected/dfir_optimized.txt +6 -0
- data/golden/vector_make_object/expected/input_plan.txt +5 -0
- data/golden/vector_make_object/expected/loopir.txt +9 -0
- data/golden/vector_make_object/expected/nast.txt +8 -0
- data/golden/vector_make_object/expected/schema_javascript.mjs +13 -0
- data/golden/vector_make_object/expected/schema_ruby.rb +14 -0
- data/golden/vector_make_object/expected/snast.txt +8 -0
- data/golden/vector_make_object/expected/vecir.txt +7 -0
- data/golden/vector_make_object/schema.kumi +11 -0
- data/golden/with_constants/expected/dfir.txt +9 -0
- data/golden/with_constants/expected/dfir_optimized.txt +9 -0
- data/golden/with_constants/expected/loopir.txt +9 -0
- data/golden/with_constants/expected/schema_javascript.mjs +8 -8
- data/golden/with_constants/expected/schema_ruby.rb +13 -37
- data/golden/with_constants/expected/vecir.txt +9 -0
- data/lib/kumi/analyzer.rb +28 -34
- data/lib/kumi/configuration.rb +7 -6
- data/lib/kumi/core/analyzer/pass_manager.rb +6 -1
- 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/loop/js/emitter.rb +204 -0
- data/lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb +212 -0
- data/lib/kumi/core/analyzer/passes/codegen/loop/ruby/output_buffer.rb +74 -0
- data/lib/kumi/core/analyzer/passes/codegen/loop_js_pass.rb +24 -0
- data/lib/kumi/core/analyzer/passes/codegen/loop_ruby_pass.rb +24 -0
- data/lib/kumi/core/analyzer/passes/dependency_resolver.rb +6 -0
- data/lib/kumi/core/analyzer/passes/df_validate_pass.rb +24 -0
- data/lib/kumi/core/analyzer/passes/import_analysis_pass.rb +90 -0
- data/lib/kumi/core/analyzer/passes/loop/lower_pass.rb +28 -0
- data/lib/kumi/core/analyzer/passes/loop_validate_pass.rb +21 -0
- data/lib/kumi/core/analyzer/passes/lower_to_dfir_pass.rb +37 -0
- 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/analyzer/passes/vec/lower_pass.rb +24 -0
- data/lib/kumi/core/analyzer/passes/vec_validate_pass.rb +21 -0
- data/lib/kumi/core/analyzer/plans.rb +2 -3
- data/lib/kumi/core/compiler/access_planner_v2.rb +33 -2
- 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/representation.rb +4 -7
- 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/golden_v2.rb +292 -0
- data/lib/kumi/dev/pretty_printer.rb +42 -67
- data/lib/kumi/dev/support/kumi_runner.mjs +18 -0
- data/lib/kumi/ir/README.md +163 -0
- data/lib/kumi/ir/base/block.rb +32 -0
- data/lib/kumi/ir/base/builder.rb +43 -0
- data/lib/kumi/ir/base/function.rb +45 -0
- data/lib/kumi/ir/base/instruction.rb +206 -0
- data/lib/kumi/ir/base/module.rb +37 -0
- data/lib/kumi/ir/base.rb +10 -0
- data/lib/kumi/ir/buf/lower.rb +28 -0
- data/lib/kumi/ir/buf/pipeline.rb +19 -0
- data/lib/kumi/ir/buf.rb +29 -0
- data/lib/kumi/ir/df/access_contract.rb +87 -0
- data/lib/kumi/ir/df/import_inliner.rb +89 -0
- data/lib/kumi/ir/df/import_loader.rb +63 -0
- data/lib/kumi/ir/df/lower.rb +397 -0
- data/lib/kumi/ir/df/ops/array_build.rb +23 -0
- data/lib/kumi/ir/df/ops/array_get.rb +29 -0
- data/lib/kumi/ir/df/ops/array_len.rb +23 -0
- data/lib/kumi/ir/df/ops/axis_broadcast.rb +28 -0
- data/lib/kumi/ir/df/ops/axis_index.rb +23 -0
- data/lib/kumi/ir/df/ops/axis_shift.rb +35 -0
- data/lib/kumi/ir/df/ops/constant.rb +21 -0
- data/lib/kumi/ir/df/ops/decl_ref.rb +23 -0
- data/lib/kumi/ir/df/ops/fold.rb +25 -0
- data/lib/kumi/ir/df/ops/import_call.rb +25 -0
- data/lib/kumi/ir/df/ops/load_field.rb +33 -0
- data/lib/kumi/ir/df/ops/load_input.rb +31 -0
- data/lib/kumi/ir/df/ops/make_object.rb +23 -0
- data/lib/kumi/ir/df/ops/map.rb +21 -0
- data/lib/kumi/ir/df/ops/node.rb +46 -0
- data/lib/kumi/ir/df/ops/reduce.rb +27 -0
- data/lib/kumi/ir/df/ops/select.rb +25 -0
- data/lib/kumi/ir/df/ops.rb +10 -0
- data/lib/kumi/ir/df/passes/broadcast_simplify.rb +74 -0
- data/lib/kumi/ir/df/passes/cse.rb +51 -0
- data/lib/kumi/ir/df/passes/decl_inlining.rb +131 -0
- data/lib/kumi/ir/df/passes/import_inlining.rb +272 -0
- data/lib/kumi/ir/df/passes/load_dedup.rb +93 -0
- data/lib/kumi/ir/df/passes/stencil_cse.rb +71 -0
- data/lib/kumi/ir/df/passes/support/instruction_cloner.rb +82 -0
- data/lib/kumi/ir/df/passes/tuple_fold_canonicalization.rb +181 -0
- data/lib/kumi/ir/df/passes/tuple_to_object.rb +58 -0
- data/lib/kumi/ir/df/passes.rb +11 -0
- data/lib/kumi/ir/df/pipeline.rb +32 -0
- data/lib/kumi/ir/df/validator.rb +120 -0
- data/lib/kumi/ir/df.rb +95 -0
- data/lib/kumi/ir/loop/builder.rb +84 -0
- data/lib/kumi/ir/loop/lower.rb +679 -0
- data/lib/kumi/ir/loop/ops/core_ops.rb +194 -0
- data/lib/kumi/ir/loop/ops/node.rb +45 -0
- data/lib/kumi/ir/loop/ops.rb +4 -0
- data/lib/kumi/ir/loop/pipeline.rb +19 -0
- data/lib/kumi/ir/loop/validator.rb +101 -0
- data/lib/kumi/ir/loop.rb +28 -0
- data/lib/kumi/ir/loop_definition.md +93 -0
- data/lib/kumi/ir/passes.rb +32 -0
- data/lib/kumi/ir/printer.rb +54 -0
- data/lib/kumi/ir/testing/snast_factory.rb +146 -0
- data/lib/kumi/ir/testing.rb +9 -0
- data/lib/kumi/ir/vec/lower.rb +131 -0
- data/lib/kumi/ir/vec/ops/core_ops.rb +126 -0
- data/lib/kumi/ir/vec/ops/node.rb +45 -0
- data/lib/kumi/ir/vec/ops.rb +13 -0
- data/lib/kumi/ir/vec/passes/axis_canonicalization.rb +57 -0
- data/lib/kumi/ir/vec/passes/constant_propagation.rb +110 -0
- data/lib/kumi/ir/vec/passes/dce.rb +52 -0
- data/lib/kumi/ir/vec/passes/gvn.rb +64 -0
- data/lib/kumi/ir/vec/passes/peephole_simplify.rb +67 -0
- data/lib/kumi/ir/vec/passes/stencil_detection.rb +60 -0
- data/lib/kumi/ir/vec/passes/support/instruction_cloner.rb +48 -0
- data/lib/kumi/ir/vec/passes.rb +16 -0
- data/lib/kumi/ir/vec/pipeline.rb +30 -0
- data/lib/kumi/ir/vec/validator.rb +68 -0
- data/lib/kumi/ir/vec.rb +66 -0
- data/lib/kumi/ir/vec_definition.md +102 -0
- data/lib/kumi/ir.rb +14 -0
- data/lib/kumi/schema.rb +44 -2
- data/lib/kumi/support/nast_printer.rb +14 -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 +50 -34
- data/tasks/release.rake +129 -0
- metadata +401 -261
- data/CLAUDE.md +0 -45
- data/docs/GOLDEN_QUICK_START.md +0 -141
- data/golden/array_element/expected/lir_00_unoptimized.txt +0 -13
- data/golden/array_element/expected/lir_01_hoist_scalar_references.txt +0 -13
- data/golden/array_element/expected/lir_02_inlined.txt +0 -13
- data/golden/array_element/expected/lir_03_cse.txt +0 -13
- data/golden/array_element/expected/lir_04_1_loop_fusion.txt +0 -13
- data/golden/array_element/expected/lir_04_loop_invcm.txt +0 -13
- data/golden/array_element/expected/lir_06_const_prop.txt +0 -13
- data/golden/array_index/expected/lir_00_unoptimized.txt +0 -41
- data/golden/array_index/expected/lir_01_hoist_scalar_references.txt +0 -41
- data/golden/array_index/expected/lir_02_inlined.txt +0 -42
- data/golden/array_index/expected/lir_03_cse.txt +0 -40
- data/golden/array_index/expected/lir_04_1_loop_fusion.txt +0 -40
- data/golden/array_index/expected/lir_04_loop_invcm.txt +0 -40
- data/golden/array_index/expected/lir_06_const_prop.txt +0 -40
- data/golden/array_operations/expected/lir_00_unoptimized.txt +0 -47
- data/golden/array_operations/expected/lir_01_hoist_scalar_references.txt +0 -47
- data/golden/array_operations/expected/lir_02_inlined.txt +0 -47
- data/golden/array_operations/expected/lir_03_cse.txt +0 -47
- data/golden/array_operations/expected/lir_04_1_loop_fusion.txt +0 -47
- data/golden/array_operations/expected/lir_04_loop_invcm.txt +0 -47
- data/golden/array_operations/expected/lir_06_const_prop.txt +0 -47
- data/golden/cascade_logic/expected/lir_00_unoptimized.txt +0 -29
- data/golden/cascade_logic/expected/lir_01_hoist_scalar_references.txt +0 -29
- data/golden/cascade_logic/expected/lir_02_inlined.txt +0 -37
- data/golden/cascade_logic/expected/lir_03_cse.txt +0 -30
- data/golden/cascade_logic/expected/lir_04_1_loop_fusion.txt +0 -30
- data/golden/cascade_logic/expected/lir_04_loop_invcm.txt +0 -30
- data/golden/cascade_logic/expected/lir_06_const_prop.txt +0 -30
- data/golden/chained_fusion/expected/lir_00_unoptimized.txt +0 -76
- data/golden/chained_fusion/expected/lir_01_hoist_scalar_references.txt +0 -76
- data/golden/chained_fusion/expected/lir_02_inlined.txt +0 -114
- data/golden/chained_fusion/expected/lir_03_cse.txt +0 -97
- data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +0 -99
- data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +0 -97
- data/golden/chained_fusion/expected/lir_06_const_prop.txt +0 -97
- data/golden/decimal_explicit/expected/lir_00_unoptimized.txt +0 -30
- data/golden/decimal_explicit/expected/lir_01_hoist_scalar_references.txt +0 -30
- data/golden/decimal_explicit/expected/lir_02_inlined.txt +0 -44
- data/golden/decimal_explicit/expected/lir_03_cse.txt +0 -40
- data/golden/decimal_explicit/expected/lir_04_1_loop_fusion.txt +0 -40
- data/golden/decimal_explicit/expected/lir_04_loop_invcm.txt +0 -40
- data/golden/decimal_explicit/expected/lir_06_const_prop.txt +0 -40
- data/golden/element_arrays/expected/lir_00_unoptimized.txt +0 -81
- data/golden/element_arrays/expected/lir_01_hoist_scalar_references.txt +0 -81
- data/golden/element_arrays/expected/lir_02_inlined.txt +0 -85
- data/golden/element_arrays/expected/lir_03_cse.txt +0 -83
- data/golden/element_arrays/expected/lir_04_1_loop_fusion.txt +0 -83
- data/golden/element_arrays/expected/lir_04_loop_invcm.txt +0 -83
- data/golden/element_arrays/expected/lir_06_const_prop.txt +0 -83
- data/golden/empty_and_null_inputs/expected/lir_00_unoptimized.txt +0 -31
- data/golden/empty_and_null_inputs/expected/lir_01_hoist_scalar_references.txt +0 -31
- data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +0 -51
- data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +0 -49
- data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +0 -49
- data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +0 -49
- data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +0 -49
- data/golden/function_overload/expected/lir_00_unoptimized.txt +0 -18
- data/golden/function_overload/expected/lir_01_hoist_scalar_references.txt +0 -18
- data/golden/function_overload/expected/lir_02_inlined.txt +0 -20
- data/golden/function_overload/expected/lir_03_cse.txt +0 -20
- data/golden/function_overload/expected/lir_04_1_loop_fusion.txt +0 -20
- data/golden/function_overload/expected/lir_04_loop_invcm.txt +0 -20
- data/golden/function_overload/expected/lir_06_const_prop.txt +0 -20
- data/golden/game_of_life/expected/lir_00_unoptimized.txt +0 -343
- data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +0 -343
- data/golden/game_of_life/expected/lir_02_inlined.txt +0 -1918
- data/golden/game_of_life/expected/lir_03_cse.txt +0 -770
- data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +0 -770
- data/golden/game_of_life/expected/lir_04_loop_invcm.txt +0 -770
- data/golden/game_of_life/expected/lir_06_const_prop.txt +0 -770
- data/golden/hash_keys/expected/lir_00_unoptimized.txt +0 -18
- data/golden/hash_keys/expected/lir_01_hoist_scalar_references.txt +0 -18
- data/golden/hash_keys/expected/lir_02_inlined.txt +0 -18
- data/golden/hash_keys/expected/lir_03_cse.txt +0 -18
- data/golden/hash_keys/expected/lir_04_1_loop_fusion.txt +0 -18
- data/golden/hash_keys/expected/lir_04_loop_invcm.txt +0 -18
- data/golden/hash_keys/expected/lir_06_const_prop.txt +0 -18
- data/golden/hash_value/expected/lir_00_unoptimized.txt +0 -30
- data/golden/hash_value/expected/lir_01_hoist_scalar_references.txt +0 -30
- data/golden/hash_value/expected/lir_02_inlined.txt +0 -36
- data/golden/hash_value/expected/lir_03_cse.txt +0 -33
- data/golden/hash_value/expected/lir_04_1_loop_fusion.txt +0 -33
- data/golden/hash_value/expected/lir_04_loop_invcm.txt +0 -33
- data/golden/hash_value/expected/lir_06_const_prop.txt +0 -33
- data/golden/hierarchical_complex/expected/lir_00_unoptimized.txt +0 -87
- data/golden/hierarchical_complex/expected/lir_01_hoist_scalar_references.txt +0 -87
- data/golden/hierarchical_complex/expected/lir_02_inlined.txt +0 -115
- data/golden/hierarchical_complex/expected/lir_03_cse.txt +0 -89
- data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +0 -89
- data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +0 -89
- data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +0 -89
- data/golden/inline_rename_scope_leak/expected/lir_00_unoptimized.txt +0 -35
- data/golden/inline_rename_scope_leak/expected/lir_01_hoist_scalar_references.txt +0 -35
- data/golden/inline_rename_scope_leak/expected/lir_02_inlined.txt +0 -49
- data/golden/inline_rename_scope_leak/expected/lir_03_cse.txt +0 -49
- data/golden/inline_rename_scope_leak/expected/lir_04_1_loop_fusion.txt +0 -49
- data/golden/inline_rename_scope_leak/expected/lir_04_loop_invcm.txt +0 -49
- data/golden/inline_rename_scope_leak/expected/lir_06_const_prop.txt +0 -49
- data/golden/input_reference/expected/lir_00_unoptimized.txt +0 -39
- data/golden/input_reference/expected/lir_01_hoist_scalar_references.txt +0 -39
- data/golden/input_reference/expected/lir_02_inlined.txt +0 -39
- data/golden/input_reference/expected/lir_03_cse.txt +0 -39
- data/golden/input_reference/expected/lir_04_1_loop_fusion.txt +0 -39
- data/golden/input_reference/expected/lir_04_loop_invcm.txt +0 -39
- data/golden/input_reference/expected/lir_06_const_prop.txt +0 -39
- data/golden/interleaved_fusion/expected/lir_00_unoptimized.txt +0 -53
- data/golden/interleaved_fusion/expected/lir_01_hoist_scalar_references.txt +0 -53
- data/golden/interleaved_fusion/expected/lir_02_inlined.txt +0 -89
- data/golden/interleaved_fusion/expected/lir_03_cse.txt +0 -77
- data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +0 -78
- data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +0 -77
- data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +0 -77
- data/golden/let_inline/expected/lir_00_unoptimized.txt +0 -26
- data/golden/let_inline/expected/lir_01_hoist_scalar_references.txt +0 -26
- data/golden/let_inline/expected/lir_02_inlined.txt +0 -36
- data/golden/let_inline/expected/lir_03_cse.txt +0 -30
- data/golden/let_inline/expected/lir_04_1_loop_fusion.txt +0 -30
- data/golden/let_inline/expected/lir_04_loop_invcm.txt +0 -30
- data/golden/let_inline/expected/lir_06_const_prop.txt +0 -30
- data/golden/loop_fusion/expected/lir_00_unoptimized.txt +0 -43
- data/golden/loop_fusion/expected/lir_01_hoist_scalar_references.txt +0 -43
- data/golden/loop_fusion/expected/lir_02_inlined.txt +0 -62
- data/golden/loop_fusion/expected/lir_03_cse.txt +0 -57
- data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +0 -57
- data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +0 -57
- data/golden/loop_fusion/expected/lir_06_const_prop.txt +0 -57
- data/golden/min_reduce_scope/expected/lir_00_unoptimized.txt +0 -59
- data/golden/min_reduce_scope/expected/lir_01_hoist_scalar_references.txt +0 -59
- data/golden/min_reduce_scope/expected/lir_02_inlined.txt +0 -63
- data/golden/min_reduce_scope/expected/lir_03_cse.txt +0 -60
- data/golden/min_reduce_scope/expected/lir_04_1_loop_fusion.txt +0 -60
- data/golden/min_reduce_scope/expected/lir_04_loop_invcm.txt +0 -60
- data/golden/min_reduce_scope/expected/lir_06_const_prop.txt +0 -60
- data/golden/mixed_dimensions/expected/lir_00_unoptimized.txt +0 -42
- data/golden/mixed_dimensions/expected/lir_01_hoist_scalar_references.txt +0 -42
- data/golden/mixed_dimensions/expected/lir_02_inlined.txt +0 -48
- data/golden/mixed_dimensions/expected/lir_03_cse.txt +0 -48
- data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +0 -48
- data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +0 -48
- data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +0 -48
- data/golden/multirank_hoisting/expected/lir_00_unoptimized.txt +0 -75
- data/golden/multirank_hoisting/expected/lir_01_hoist_scalar_references.txt +0 -75
- data/golden/multirank_hoisting/expected/lir_02_inlined.txt +0 -126
- data/golden/multirank_hoisting/expected/lir_03_cse.txt +0 -109
- data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +0 -109
- data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +0 -109
- data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +0 -109
- data/golden/nested_hash/expected/lir_00_unoptimized.txt +0 -10
- data/golden/nested_hash/expected/lir_01_hoist_scalar_references.txt +0 -10
- data/golden/nested_hash/expected/lir_02_inlined.txt +0 -10
- data/golden/nested_hash/expected/lir_03_cse.txt +0 -10
- data/golden/nested_hash/expected/lir_04_1_loop_fusion.txt +0 -10
- data/golden/nested_hash/expected/lir_04_loop_invcm.txt +0 -10
- data/golden/nested_hash/expected/lir_06_const_prop.txt +0 -10
- data/golden/reduction_broadcast/expected/lir_00_unoptimized.txt +0 -49
- data/golden/reduction_broadcast/expected/lir_01_hoist_scalar_references.txt +0 -49
- data/golden/reduction_broadcast/expected/lir_02_inlined.txt +0 -80
- data/golden/reduction_broadcast/expected/lir_03_cse.txt +0 -68
- data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +0 -68
- data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +0 -68
- data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +0 -68
- data/golden/roll/expected/lir_00_unoptimized.txt +0 -56
- data/golden/roll/expected/lir_01_hoist_scalar_references.txt +0 -56
- data/golden/roll/expected/lir_02_inlined.txt +0 -56
- data/golden/roll/expected/lir_03_cse.txt +0 -55
- data/golden/roll/expected/lir_04_1_loop_fusion.txt +0 -55
- data/golden/roll/expected/lir_04_loop_invcm.txt +0 -55
- data/golden/roll/expected/lir_06_const_prop.txt +0 -55
- data/golden/shift/expected/lir_00_unoptimized.txt +0 -96
- data/golden/shift/expected/lir_01_hoist_scalar_references.txt +0 -96
- data/golden/shift/expected/lir_02_inlined.txt +0 -96
- data/golden/shift/expected/lir_03_cse.txt +0 -90
- data/golden/shift/expected/lir_04_1_loop_fusion.txt +0 -90
- data/golden/shift/expected/lir_04_loop_invcm.txt +0 -90
- data/golden/shift/expected/lir_06_const_prop.txt +0 -90
- data/golden/shift_2d/expected/lir_00_unoptimized.txt +0 -274
- data/golden/shift_2d/expected/lir_01_hoist_scalar_references.txt +0 -274
- data/golden/shift_2d/expected/lir_02_inlined.txt +0 -274
- data/golden/shift_2d/expected/lir_03_cse.txt +0 -262
- data/golden/shift_2d/expected/lir_04_1_loop_fusion.txt +0 -262
- data/golden/shift_2d/expected/lir_04_loop_invcm.txt +0 -262
- data/golden/shift_2d/expected/lir_06_const_prop.txt +0 -262
- data/golden/simple_math/expected/lir_00_unoptimized.txt +0 -31
- data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +0 -31
- data/golden/simple_math/expected/lir_02_inlined.txt +0 -31
- data/golden/simple_math/expected/lir_03_cse.txt +0 -31
- data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +0 -31
- data/golden/simple_math/expected/lir_04_loop_invcm.txt +0 -31
- data/golden/simple_math/expected/lir_06_const_prop.txt +0 -31
- data/golden/streaming_basics/expected/lir_00_unoptimized.txt +0 -73
- data/golden/streaming_basics/expected/lir_01_hoist_scalar_references.txt +0 -73
- data/golden/streaming_basics/expected/lir_02_inlined.txt +0 -100
- data/golden/streaming_basics/expected/lir_03_cse.txt +0 -84
- data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +0 -84
- data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +0 -84
- data/golden/streaming_basics/expected/lir_06_const_prop.txt +0 -84
- data/golden/tuples/expected/lir_00_unoptimized.txt +0 -40
- data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +0 -40
- data/golden/tuples/expected/lir_02_inlined.txt +0 -48
- data/golden/tuples/expected/lir_03_cse.txt +0 -48
- data/golden/tuples/expected/lir_04_1_loop_fusion.txt +0 -48
- data/golden/tuples/expected/lir_04_loop_invcm.txt +0 -48
- data/golden/tuples/expected/lir_06_const_prop.txt +0 -48
- data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +0 -41
- data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +0 -41
- data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +0 -62
- data/golden/tuples_and_arrays/expected/lir_03_cse.txt +0 -51
- data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +0 -51
- data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +0 -51
- data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +0 -51
- data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +0 -291
- data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +0 -291
- data/golden/us_tax_2024/expected/lir_02_inlined.txt +0 -1254
- data/golden/us_tax_2024/expected/lir_03_cse.txt +0 -626
- data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +0 -671
- data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +0 -626
- data/golden/us_tax_2024/expected/lir_06_const_prop.txt +0 -626
- data/golden/with_constants/expected/lir_00_unoptimized.txt +0 -17
- data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +0 -17
- data/golden/with_constants/expected/lir_02_inlined.txt +0 -17
- data/golden/with_constants/expected/lir_03_cse.txt +0 -17
- data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +0 -17
- data/golden/with_constants/expected/lir_04_loop_invcm.txt +0 -17
- data/golden/with_constants/expected/lir_06_const_prop.txt +0 -17
- data/lib/kumi/core/analyzer/passes/codegen/js/declaration_emitter.rb +0 -317
- data/lib/kumi/core/analyzer/passes/codegen/js/emitter.rb +0 -75
- data/lib/kumi/core/analyzer/passes/codegen/js/output_buffer.rb +0 -103
- data/lib/kumi/core/analyzer/passes/codegen/js_pass.rb +0 -27
- data/lib/kumi/core/analyzer/passes/codegen/ruby/declaration_emitter.rb +0 -321
- data/lib/kumi/core/analyzer/passes/codegen/ruby/emitter.rb +0 -85
- data/lib/kumi/core/analyzer/passes/codegen/ruby/output_buffer.rb +0 -111
- data/lib/kumi/core/analyzer/passes/codegen/ruby_pass.rb +0 -32
- data/lib/kumi/core/analyzer/passes/lir/constant_propagation_pass.rb +0 -84
- data/lib/kumi/core/analyzer/passes/lir/dead_code_elimination_pass.rb +0 -93
- data/lib/kumi/core/analyzer/passes/lir/hoist_scalar_references_pass.rb +0 -115
- data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +0 -394
- data/lib/kumi/core/analyzer/passes/lir/instruction_scheduling_pass.rb +0 -198
- data/lib/kumi/core/analyzer/passes/lir/kernel_binding_pass.rb +0 -30
- data/lib/kumi/core/analyzer/passes/lir/local_cse_pass.rb +0 -121
- data/lib/kumi/core/analyzer/passes/lir/loop_fusion_pass.rb +0 -156
- data/lib/kumi/core/analyzer/passes/lir/loop_invariant_code_motion_pass.rb +0 -148
- data/lib/kumi/core/analyzer/passes/lir/lower_pass.rb +0 -407
- data/lib/kumi/core/analyzer/passes/lir/stencil_emitter.rb +0 -241
- data/lib/kumi/core/analyzer/passes/lir/validation_pass.rb +0 -83
- data/lib/kumi/core/lir/analyze.rb +0 -64
- data/lib/kumi/core/lir/build.rb +0 -363
- data/lib/kumi/core/lir/emit.rb +0 -62
- data/lib/kumi/core/lir/structs/instruction.rb +0 -44
- data/lib/kumi/core/lir/structs/literal.rb +0 -14
- data/lib/kumi/core/lir/structs/stamp.rb +0 -13
- data/lib/kumi/core/lir/support/error.rb +0 -9
- data/lib/kumi/core/lir/support/ids.rb +0 -34
- data/lib/kumi/core/lir/validate.rb +0 -74
- data/lib/kumi/core/lir.rb +0 -34
- data/lib/kumi/support/lir_printer.rb +0 -143
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
function state_tax:
|
|
2
|
+
%v1 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
3
|
+
%v2 = load_input [key=:state_rate, chain=[], plan_ref="state_rate"] [] -> float
|
|
4
|
+
%v3 = map (:v1, :v2) [fn=:core.mul:numeric] [] -> float
|
|
5
|
+
function local_tax:
|
|
6
|
+
%v4 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
7
|
+
%v5 = load_input [key=:local_rate, chain=[], plan_ref="local_rate"] [] -> float
|
|
8
|
+
%v6 = map (:v4, :v5) [fn=:core.mul:numeric] [] -> float
|
|
9
|
+
function taxable:
|
|
10
|
+
%v7 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
11
|
+
%v8 = axis_broadcast (:v7) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
12
|
+
%v9 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
13
|
+
%v10 = load_field (:v9) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
14
|
+
%v11 = load_field (:v10) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
15
|
+
%v12 = map (:v8, :v11) [fn=:core.sub] [statuses] -> float
|
|
16
|
+
%v13 = constant [value=0] [] -> integer
|
|
17
|
+
%acc0 = map (:v12, :v13) [fn=:core.max] [statuses] -> float
|
|
18
|
+
function lo:
|
|
19
|
+
%v16 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
20
|
+
%v17 = load_field (:v16) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
21
|
+
%v18 = load_field (:v17) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
22
|
+
%v19 = load_field (:v18) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
23
|
+
%v20 = load_field (:v19) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
24
|
+
function hi:
|
|
25
|
+
%v21 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
26
|
+
%v22 = load_field (:v21) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
27
|
+
%v23 = load_field (:v22) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
28
|
+
%v24 = load_field (:v23) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
29
|
+
%v25 = load_field (:v24) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
30
|
+
function rate:
|
|
31
|
+
%v26 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
32
|
+
%v27 = load_field (:v26) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
33
|
+
%v28 = load_field (:v27) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
34
|
+
%v29 = load_field (:v28) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
35
|
+
%v30 = load_field (:v29) [field=:rate, plan_ref="statuses.status.rates.bracket.rate"] [statuses, rates] -> float
|
|
36
|
+
function big_hi:
|
|
37
|
+
%v31 = constant [value=100000000000.0] [] -> float
|
|
38
|
+
function hi_eff:
|
|
39
|
+
%v40 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
40
|
+
%v41 = load_field (:v40) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
41
|
+
%v42 = load_field (:v41) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
42
|
+
%v43 = load_field (:v42) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
43
|
+
%v44 = load_field (:v43) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
44
|
+
%v33 = constant [value=-1] [] -> integer
|
|
45
|
+
%v34 = axis_broadcast (:v33) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
46
|
+
%v35 = map (:v44, :v34) [fn=:core.eq] [statuses, rates] -> boolean
|
|
47
|
+
%v36 = constant [value=100000000000.0] [] -> float
|
|
48
|
+
%v38 = axis_broadcast (:v36) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
49
|
+
%v39 = select (:v35, :v38, :v44) [statuses, rates] -> float
|
|
50
|
+
function amt:
|
|
51
|
+
%v50 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
52
|
+
%v51 = axis_broadcast (:v50) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
53
|
+
%v52 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
54
|
+
%v53 = load_field (:v52) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
55
|
+
%v54 = load_field (:v53) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
56
|
+
%v55 = map (:v51, :v54) [fn=:core.sub] [statuses] -> float
|
|
57
|
+
%v56 = constant [value=0] [] -> integer
|
|
58
|
+
%acc0 = map (:v55, :v56) [fn=:core.max] [statuses] -> float
|
|
59
|
+
%v41 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
60
|
+
%v59 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
61
|
+
%v60 = load_field (:v59) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
62
|
+
%v61 = load_field (:v60) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
63
|
+
%v62 = load_field (:v61) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
64
|
+
%v63 = load_field (:v62) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
65
|
+
%v43 = map (:v41, :v63) [fn=:core.sub] [statuses, rates] -> float
|
|
66
|
+
%v45 = axis_broadcast (:v56) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
67
|
+
%v68 = load_field (:v62) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
68
|
+
%v69 = constant [value=-1] [] -> integer
|
|
69
|
+
%v70 = axis_broadcast (:v69) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
70
|
+
%v71 = map (:v68, :v70) [fn=:core.eq] [statuses, rates] -> boolean
|
|
71
|
+
%v72 = constant [value=100000000000.0] [] -> float
|
|
72
|
+
%v78 = axis_broadcast (:v72) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
73
|
+
%v79 = select (:v71, :v78, :v68) [statuses, rates] -> float
|
|
74
|
+
%v48 = map (:v79, :v63) [fn=:core.sub] [statuses, rates] -> float
|
|
75
|
+
%v49 = map (:v43, :v45, :v48) [fn=:core.clamp] [statuses, rates] -> float
|
|
76
|
+
function fed_tax:
|
|
77
|
+
%v54 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
78
|
+
%v55 = axis_broadcast (:v54) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
79
|
+
%v56 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
80
|
+
%v57 = load_field (:v56) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
81
|
+
%v58 = load_field (:v57) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
82
|
+
%v59 = map (:v55, :v58) [fn=:core.sub] [statuses] -> float
|
|
83
|
+
%v60 = constant [value=0] [] -> integer
|
|
84
|
+
%acc0 = map (:v59, :v60) [fn=:core.max] [statuses] -> float
|
|
85
|
+
%v63 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
86
|
+
%v64 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
87
|
+
%v65 = load_field (:v64) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
88
|
+
%v66 = load_field (:v65) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
89
|
+
%v67 = load_field (:v66) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
90
|
+
%v68 = load_field (:v67) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
91
|
+
%v69 = map (:v63, :v68) [fn=:core.sub] [statuses, rates] -> float
|
|
92
|
+
%v71 = axis_broadcast (:v60) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
93
|
+
%v76 = load_field (:v67) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
94
|
+
%v77 = constant [value=-1] [] -> integer
|
|
95
|
+
%v78 = axis_broadcast (:v77) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
96
|
+
%v79 = map (:v76, :v78) [fn=:core.eq] [statuses, rates] -> boolean
|
|
97
|
+
%v80 = constant [value=100000000000.0] [] -> float
|
|
98
|
+
%v86 = axis_broadcast (:v80) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
99
|
+
%v87 = select (:v79, :v86, :v76) [statuses, rates] -> float
|
|
100
|
+
%v93 = map (:v87, :v68) [fn=:core.sub] [statuses, rates] -> float
|
|
101
|
+
%v94 = map (:v69, :v71, :v93) [fn=:core.clamp] [statuses, rates] -> float
|
|
102
|
+
%v99 = load_field (:v67) [field=:rate, plan_ref="statuses.status.rates.bracket.rate"] [statuses, rates] -> float
|
|
103
|
+
%v52 = map (:v94, :v99) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
104
|
+
%v53 = reduce (:v52) [fn=:agg.sum, over_axes=[:rates]] [statuses] -> float
|
|
105
|
+
function in_br:
|
|
106
|
+
%v63 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
107
|
+
%v64 = axis_broadcast (:v63) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
108
|
+
%v65 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
109
|
+
%v66 = load_field (:v65) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
110
|
+
%v67 = load_field (:v66) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
111
|
+
%v68 = map (:v64, :v67) [fn=:core.sub] [statuses] -> float
|
|
112
|
+
%v69 = constant [value=0] [] -> integer
|
|
113
|
+
%acc0 = map (:v68, :v69) [fn=:core.max] [statuses] -> float
|
|
114
|
+
%v55 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
115
|
+
%v72 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
116
|
+
%v73 = load_field (:v72) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
117
|
+
%v74 = load_field (:v73) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
118
|
+
%v75 = load_field (:v74) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
119
|
+
%v76 = load_field (:v75) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
120
|
+
%v57 = map (:v55, :v76) [fn=:core.gte] [statuses, rates] -> boolean
|
|
121
|
+
%v90 = load_field (:v75) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
122
|
+
%v91 = constant [value=-1] [] -> integer
|
|
123
|
+
%v92 = axis_broadcast (:v91) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
124
|
+
%v93 = map (:v90, :v92) [fn=:core.eq] [statuses, rates] -> boolean
|
|
125
|
+
%v94 = constant [value=100000000000.0] [] -> float
|
|
126
|
+
%v100 = axis_broadcast (:v94) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
127
|
+
%v101 = select (:v93, :v100, :v90) [statuses, rates] -> float
|
|
128
|
+
%v61 = map (:v55, :v101) [fn=:core.lt] [statuses, rates] -> boolean
|
|
129
|
+
%v62 = map (:v57, :v61) [fn=:core.and] [statuses, rates] -> boolean
|
|
130
|
+
function fed_marg:
|
|
131
|
+
%v69 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
132
|
+
%v70 = axis_broadcast (:v69) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
133
|
+
%v71 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
134
|
+
%v72 = load_field (:v71) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
135
|
+
%v73 = load_field (:v72) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
136
|
+
%v74 = map (:v70, :v73) [fn=:core.sub] [statuses] -> float
|
|
137
|
+
%v75 = constant [value=0] [] -> integer
|
|
138
|
+
%acc0 = map (:v74, :v75) [fn=:core.max] [statuses] -> float
|
|
139
|
+
%v78 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
140
|
+
%v79 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
141
|
+
%v80 = load_field (:v79) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
142
|
+
%v81 = load_field (:v80) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
143
|
+
%v82 = load_field (:v81) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
144
|
+
%v83 = load_field (:v82) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
145
|
+
%v84 = map (:v78, :v83) [fn=:core.gte] [statuses, rates] -> boolean
|
|
146
|
+
%v99 = load_field (:v82) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
147
|
+
%v100 = constant [value=-1] [] -> integer
|
|
148
|
+
%v101 = axis_broadcast (:v100) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
149
|
+
%v102 = map (:v99, :v101) [fn=:core.eq] [statuses, rates] -> boolean
|
|
150
|
+
%v103 = constant [value=100000000000.0] [] -> float
|
|
151
|
+
%v109 = axis_broadcast (:v103) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
152
|
+
%v110 = select (:v102, :v109, :v99) [statuses, rates] -> float
|
|
153
|
+
%v111 = map (:v78, :v110) [fn=:core.lt] [statuses, rates] -> boolean
|
|
154
|
+
%v112 = map (:v84, :v111) [fn=:core.and] [statuses, rates] -> boolean
|
|
155
|
+
%v117 = load_field (:v82) [field=:rate, plan_ref="statuses.status.rates.bracket.rate"] [statuses, rates] -> float
|
|
156
|
+
%v66 = axis_broadcast (:v75) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
157
|
+
%v67 = select (:v112, :v117, :v66) [statuses, rates] -> float
|
|
158
|
+
%v68 = reduce (:v67) [fn=:agg.sum, over_axes=[:rates]] [statuses] -> float
|
|
159
|
+
function fed_eff:
|
|
160
|
+
%v76 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
161
|
+
%v77 = axis_broadcast (:v76) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
162
|
+
%v78 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
163
|
+
%v79 = load_field (:v78) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
164
|
+
%v80 = load_field (:v79) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
165
|
+
%v81 = map (:v77, :v80) [fn=:core.sub] [statuses] -> float
|
|
166
|
+
%v82 = constant [value=0] [] -> integer
|
|
167
|
+
%acc0 = map (:v81, :v82) [fn=:core.max] [statuses] -> float
|
|
168
|
+
%v85 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
169
|
+
%v86 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
170
|
+
%v87 = load_field (:v86) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
171
|
+
%v88 = load_field (:v87) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
172
|
+
%v89 = load_field (:v88) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
173
|
+
%v90 = load_field (:v89) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
174
|
+
%v91 = map (:v85, :v90) [fn=:core.sub] [statuses, rates] -> float
|
|
175
|
+
%v93 = axis_broadcast (:v82) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
176
|
+
%v98 = load_field (:v89) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
177
|
+
%v99 = constant [value=-1] [] -> integer
|
|
178
|
+
%v100 = axis_broadcast (:v99) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
179
|
+
%v101 = map (:v98, :v100) [fn=:core.eq] [statuses, rates] -> boolean
|
|
180
|
+
%v102 = constant [value=100000000000.0] [] -> float
|
|
181
|
+
%v108 = axis_broadcast (:v102) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
182
|
+
%v109 = select (:v101, :v108, :v98) [statuses, rates] -> float
|
|
183
|
+
%v115 = map (:v109, :v90) [fn=:core.sub] [statuses, rates] -> float
|
|
184
|
+
%v116 = map (:v91, :v93, :v115) [fn=:core.clamp] [statuses, rates] -> float
|
|
185
|
+
%v121 = load_field (:v89) [field=:rate, plan_ref="statuses.status.rates.bracket.rate"] [statuses, rates] -> float
|
|
186
|
+
%v122 = map (:v116, :v121) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
187
|
+
%v123 = reduce (:v122) [fn=:agg.sum, over_axes=[:rates]] [statuses] -> float
|
|
188
|
+
%v71 = constant [value=1.0] [] -> float
|
|
189
|
+
%acc1 = map (:v76, :v71) [fn=:core.max] [] -> float
|
|
190
|
+
%v74 = axis_broadcast (:acc1) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
191
|
+
%v75 = map (:v123, :v74) [fn=:core.div] [statuses] -> float
|
|
192
|
+
function ss_wage_base:
|
|
193
|
+
%v76 = constant [value=168600.0] [] -> float
|
|
194
|
+
function ss_rate:
|
|
195
|
+
%v77 = constant [value=0.062] [] -> float
|
|
196
|
+
function ss_tax:
|
|
197
|
+
%v78 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
198
|
+
%v79 = constant [value=168600.0] [] -> float
|
|
199
|
+
%acc0 = map (:v78, :v79) [fn=:core.min] [] -> float
|
|
200
|
+
%v82 = constant [value=0.062] [] -> float
|
|
201
|
+
%v83 = map (:acc0, :v82) [fn=:core.mul:numeric] [] -> float
|
|
202
|
+
function med_base_rate:
|
|
203
|
+
%v84 = constant [value=0.0145] [] -> float
|
|
204
|
+
function med_tax:
|
|
205
|
+
%v85 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
206
|
+
%v86 = constant [value=0.0145] [] -> float
|
|
207
|
+
%v87 = map (:v85, :v86) [fn=:core.mul:numeric] [] -> float
|
|
208
|
+
function addl_med_rate:
|
|
209
|
+
%v88 = constant [value=0.009] [] -> float
|
|
210
|
+
function addl_med_tax:
|
|
211
|
+
%v89 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
212
|
+
%v90 = axis_broadcast (:v89) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
213
|
+
%v91 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
214
|
+
%v92 = load_field (:v91) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
215
|
+
%v93 = load_field (:v92) [field=:addl_threshold, plan_ref="statuses.status.addl_threshold"] [statuses] -> float
|
|
216
|
+
%v94 = map (:v90, :v93) [fn=:core.sub] [statuses] -> float
|
|
217
|
+
%v95 = constant [value=0] [] -> integer
|
|
218
|
+
%acc0 = map (:v94, :v95) [fn=:core.max] [statuses] -> float
|
|
219
|
+
%v98 = constant [value=0.009] [] -> float
|
|
220
|
+
%v99 = axis_broadcast (:v98) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
221
|
+
%v100 = map (:acc0, :v99) [fn=:core.mul:numeric] [statuses] -> float
|
|
222
|
+
function fica_tax:
|
|
223
|
+
%v107 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
224
|
+
%v108 = constant [value=168600.0] [] -> float
|
|
225
|
+
%acc0 = map (:v107, :v108) [fn=:core.min] [] -> float
|
|
226
|
+
%v111 = constant [value=0.062] [] -> float
|
|
227
|
+
%v112 = map (:acc0, :v111) [fn=:core.mul:numeric] [] -> float
|
|
228
|
+
%v114 = constant [value=0.0145] [] -> float
|
|
229
|
+
%v115 = map (:v107, :v114) [fn=:core.mul:numeric] [] -> float
|
|
230
|
+
%v103 = map (:v112, :v115) [fn=:core.add] [] -> float
|
|
231
|
+
%v104 = axis_broadcast (:v103) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
232
|
+
%v117 = axis_broadcast (:v107) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
233
|
+
%v118 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
234
|
+
%v119 = load_field (:v118) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
235
|
+
%v120 = load_field (:v119) [field=:addl_threshold, plan_ref="statuses.status.addl_threshold"] [statuses] -> float
|
|
236
|
+
%v121 = map (:v117, :v120) [fn=:core.sub] [statuses] -> float
|
|
237
|
+
%v122 = constant [value=0] [] -> integer
|
|
238
|
+
%acc1 = map (:v121, :v122) [fn=:core.max] [statuses] -> float
|
|
239
|
+
%v125 = constant [value=0.009] [] -> float
|
|
240
|
+
%v126 = axis_broadcast (:v125) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
241
|
+
%v127 = map (:acc1, :v126) [fn=:core.mul:numeric] [statuses] -> float
|
|
242
|
+
%v106 = map (:v104, :v127) [fn=:core.add] [statuses] -> float
|
|
243
|
+
function fica_eff:
|
|
244
|
+
%v114 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
245
|
+
%v115 = constant [value=168600.0] [] -> float
|
|
246
|
+
%acc0 = map (:v114, :v115) [fn=:core.min] [] -> float
|
|
247
|
+
%v118 = constant [value=0.062] [] -> float
|
|
248
|
+
%v119 = map (:acc0, :v118) [fn=:core.mul:numeric] [] -> float
|
|
249
|
+
%v121 = constant [value=0.0145] [] -> float
|
|
250
|
+
%v122 = map (:v114, :v121) [fn=:core.mul:numeric] [] -> float
|
|
251
|
+
%v123 = map (:v119, :v122) [fn=:core.add] [] -> float
|
|
252
|
+
%v124 = axis_broadcast (:v123) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
253
|
+
%v126 = axis_broadcast (:v114) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
254
|
+
%v127 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
255
|
+
%v128 = load_field (:v127) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
256
|
+
%v129 = load_field (:v128) [field=:addl_threshold, plan_ref="statuses.status.addl_threshold"] [statuses] -> float
|
|
257
|
+
%v130 = map (:v126, :v129) [fn=:core.sub] [statuses] -> float
|
|
258
|
+
%v131 = constant [value=0] [] -> integer
|
|
259
|
+
%acc1 = map (:v130, :v131) [fn=:core.max] [statuses] -> float
|
|
260
|
+
%v134 = constant [value=0.009] [] -> float
|
|
261
|
+
%v135 = axis_broadcast (:v134) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
262
|
+
%v136 = map (:acc1, :v135) [fn=:core.mul:numeric] [statuses] -> float
|
|
263
|
+
%v137 = map (:v124, :v136) [fn=:core.add] [statuses] -> float
|
|
264
|
+
%v109 = constant [value=1.0] [] -> float
|
|
265
|
+
%acc2 = map (:v114, :v109) [fn=:core.max] [] -> float
|
|
266
|
+
%v112 = axis_broadcast (:acc2) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
267
|
+
%v113 = map (:v137, :v112) [fn=:core.div] [statuses] -> float
|
|
268
|
+
function total_tax:
|
|
269
|
+
%v123 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
270
|
+
%v124 = axis_broadcast (:v123) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
271
|
+
%v125 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
272
|
+
%v126 = load_field (:v125) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
273
|
+
%v127 = load_field (:v126) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
274
|
+
%v128 = map (:v124, :v127) [fn=:core.sub] [statuses] -> float
|
|
275
|
+
%v129 = constant [value=0] [] -> integer
|
|
276
|
+
%acc0 = map (:v128, :v129) [fn=:core.max] [statuses] -> float
|
|
277
|
+
%v132 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
278
|
+
%v133 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
279
|
+
%v134 = load_field (:v133) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
280
|
+
%v135 = load_field (:v134) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
281
|
+
%v136 = load_field (:v135) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
282
|
+
%v137 = load_field (:v136) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
283
|
+
%v138 = map (:v132, :v137) [fn=:core.sub] [statuses, rates] -> float
|
|
284
|
+
%v140 = axis_broadcast (:v129) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
285
|
+
%v145 = load_field (:v136) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
286
|
+
%v146 = constant [value=-1] [] -> integer
|
|
287
|
+
%v147 = axis_broadcast (:v146) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
288
|
+
%v148 = map (:v145, :v147) [fn=:core.eq] [statuses, rates] -> boolean
|
|
289
|
+
%v149 = constant [value=100000000000.0] [] -> float
|
|
290
|
+
%v155 = axis_broadcast (:v149) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
291
|
+
%v156 = select (:v148, :v155, :v145) [statuses, rates] -> float
|
|
292
|
+
%v162 = map (:v156, :v137) [fn=:core.sub] [statuses, rates] -> float
|
|
293
|
+
%v163 = map (:v138, :v140, :v162) [fn=:core.clamp] [statuses, rates] -> float
|
|
294
|
+
%v168 = load_field (:v136) [field=:rate, plan_ref="statuses.status.rates.bracket.rate"] [statuses, rates] -> float
|
|
295
|
+
%v169 = map (:v163, :v168) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
296
|
+
%v170 = reduce (:v169) [fn=:agg.sum, over_axes=[:rates]] [statuses] -> float
|
|
297
|
+
%v172 = constant [value=168600.0] [] -> float
|
|
298
|
+
%acc1 = map (:v123, :v172) [fn=:core.min] [] -> float
|
|
299
|
+
%v175 = constant [value=0.062] [] -> float
|
|
300
|
+
%v176 = map (:acc1, :v175) [fn=:core.mul:numeric] [] -> float
|
|
301
|
+
%v178 = constant [value=0.0145] [] -> float
|
|
302
|
+
%v179 = map (:v123, :v178) [fn=:core.mul:numeric] [] -> float
|
|
303
|
+
%v180 = map (:v176, :v179) [fn=:core.add] [] -> float
|
|
304
|
+
%v181 = axis_broadcast (:v180) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
305
|
+
%v186 = load_field (:v126) [field=:addl_threshold, plan_ref="statuses.status.addl_threshold"] [statuses] -> float
|
|
306
|
+
%v187 = map (:v124, :v186) [fn=:core.sub] [statuses] -> float
|
|
307
|
+
%acc2 = map (:v187, :v129) [fn=:core.max] [statuses] -> float
|
|
308
|
+
%v191 = constant [value=0.009] [] -> float
|
|
309
|
+
%v192 = axis_broadcast (:v191) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
310
|
+
%v193 = map (:acc2, :v192) [fn=:core.mul:numeric] [statuses] -> float
|
|
311
|
+
%v194 = map (:v181, :v193) [fn=:core.add] [statuses] -> float
|
|
312
|
+
%v116 = map (:v170, :v194) [fn=:core.add] [statuses] -> float
|
|
313
|
+
%v196 = load_input [key=:state_rate, chain=[], plan_ref="state_rate"] [] -> float
|
|
314
|
+
%v197 = map (:v123, :v196) [fn=:core.mul:numeric] [] -> float
|
|
315
|
+
%v118 = axis_broadcast (:v197) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
316
|
+
%v119 = map (:v116, :v118) [fn=:core.add] [statuses] -> float
|
|
317
|
+
%v199 = load_input [key=:local_rate, chain=[], plan_ref="local_rate"] [] -> float
|
|
318
|
+
%v200 = map (:v123, :v199) [fn=:core.mul:numeric] [] -> float
|
|
319
|
+
%v121 = axis_broadcast (:v200) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
320
|
+
%v122 = map (:v119, :v121) [fn=:core.add] [statuses] -> float
|
|
321
|
+
function total_eff:
|
|
322
|
+
%v130 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
323
|
+
%v131 = axis_broadcast (:v130) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
324
|
+
%v132 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
325
|
+
%v133 = load_field (:v132) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
326
|
+
%v134 = load_field (:v133) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
327
|
+
%v135 = map (:v131, :v134) [fn=:core.sub] [statuses] -> float
|
|
328
|
+
%v136 = constant [value=0] [] -> integer
|
|
329
|
+
%acc0 = map (:v135, :v136) [fn=:core.max] [statuses] -> float
|
|
330
|
+
%v139 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
331
|
+
%v140 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
332
|
+
%v141 = load_field (:v140) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
333
|
+
%v142 = load_field (:v141) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
334
|
+
%v143 = load_field (:v142) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
335
|
+
%v144 = load_field (:v143) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
336
|
+
%v145 = map (:v139, :v144) [fn=:core.sub] [statuses, rates] -> float
|
|
337
|
+
%v147 = axis_broadcast (:v136) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
338
|
+
%v152 = load_field (:v143) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
339
|
+
%v153 = constant [value=-1] [] -> integer
|
|
340
|
+
%v154 = axis_broadcast (:v153) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
341
|
+
%v155 = map (:v152, :v154) [fn=:core.eq] [statuses, rates] -> boolean
|
|
342
|
+
%v156 = constant [value=100000000000.0] [] -> float
|
|
343
|
+
%v162 = axis_broadcast (:v156) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
344
|
+
%v163 = select (:v155, :v162, :v152) [statuses, rates] -> float
|
|
345
|
+
%v169 = map (:v163, :v144) [fn=:core.sub] [statuses, rates] -> float
|
|
346
|
+
%v170 = map (:v145, :v147, :v169) [fn=:core.clamp] [statuses, rates] -> float
|
|
347
|
+
%v175 = load_field (:v143) [field=:rate, plan_ref="statuses.status.rates.bracket.rate"] [statuses, rates] -> float
|
|
348
|
+
%v176 = map (:v170, :v175) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
349
|
+
%v177 = reduce (:v176) [fn=:agg.sum, over_axes=[:rates]] [statuses] -> float
|
|
350
|
+
%v179 = constant [value=168600.0] [] -> float
|
|
351
|
+
%acc1 = map (:v130, :v179) [fn=:core.min] [] -> float
|
|
352
|
+
%v182 = constant [value=0.062] [] -> float
|
|
353
|
+
%v183 = map (:acc1, :v182) [fn=:core.mul:numeric] [] -> float
|
|
354
|
+
%v185 = constant [value=0.0145] [] -> float
|
|
355
|
+
%v186 = map (:v130, :v185) [fn=:core.mul:numeric] [] -> float
|
|
356
|
+
%v187 = map (:v183, :v186) [fn=:core.add] [] -> float
|
|
357
|
+
%v188 = axis_broadcast (:v187) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
358
|
+
%v193 = load_field (:v133) [field=:addl_threshold, plan_ref="statuses.status.addl_threshold"] [statuses] -> float
|
|
359
|
+
%v194 = map (:v131, :v193) [fn=:core.sub] [statuses] -> float
|
|
360
|
+
%acc2 = map (:v194, :v136) [fn=:core.max] [statuses] -> float
|
|
361
|
+
%v198 = constant [value=0.009] [] -> float
|
|
362
|
+
%v199 = axis_broadcast (:v198) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
363
|
+
%v200 = map (:acc2, :v199) [fn=:core.mul:numeric] [statuses] -> float
|
|
364
|
+
%v201 = map (:v188, :v200) [fn=:core.add] [statuses] -> float
|
|
365
|
+
%v202 = map (:v177, :v201) [fn=:core.add] [statuses] -> float
|
|
366
|
+
%v204 = load_input [key=:state_rate, chain=[], plan_ref="state_rate"] [] -> float
|
|
367
|
+
%v205 = map (:v130, :v204) [fn=:core.mul:numeric] [] -> float
|
|
368
|
+
%v206 = axis_broadcast (:v205) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
369
|
+
%v207 = map (:v202, :v206) [fn=:core.add] [statuses] -> float
|
|
370
|
+
%v209 = load_input [key=:local_rate, chain=[], plan_ref="local_rate"] [] -> float
|
|
371
|
+
%v210 = map (:v130, :v209) [fn=:core.mul:numeric] [] -> float
|
|
372
|
+
%v211 = axis_broadcast (:v210) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
373
|
+
%v212 = map (:v207, :v211) [fn=:core.add] [statuses] -> float
|
|
374
|
+
%v125 = constant [value=1.0] [] -> float
|
|
375
|
+
%acc3 = map (:v130, :v125) [fn=:core.max] [] -> float
|
|
376
|
+
%v128 = axis_broadcast (:acc3) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
377
|
+
%v129 = map (:v212, :v128) [fn=:core.div] [statuses] -> float
|
|
378
|
+
function after_tax:
|
|
379
|
+
%v130 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
380
|
+
%v131 = axis_broadcast (:v130) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
381
|
+
%v136 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
382
|
+
%v137 = load_field (:v136) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
383
|
+
%v138 = load_field (:v137) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
384
|
+
%v139 = map (:v131, :v138) [fn=:core.sub] [statuses] -> float
|
|
385
|
+
%v140 = constant [value=0] [] -> integer
|
|
386
|
+
%acc0 = map (:v139, :v140) [fn=:core.max] [statuses] -> float
|
|
387
|
+
%v143 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
388
|
+
%v144 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
389
|
+
%v145 = load_field (:v144) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
390
|
+
%v146 = load_field (:v145) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
391
|
+
%v147 = load_field (:v146) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
392
|
+
%v148 = load_field (:v147) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
393
|
+
%v149 = map (:v143, :v148) [fn=:core.sub] [statuses, rates] -> float
|
|
394
|
+
%v151 = axis_broadcast (:v140) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
395
|
+
%v156 = load_field (:v147) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
396
|
+
%v157 = constant [value=-1] [] -> integer
|
|
397
|
+
%v158 = axis_broadcast (:v157) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
398
|
+
%v159 = map (:v156, :v158) [fn=:core.eq] [statuses, rates] -> boolean
|
|
399
|
+
%v160 = constant [value=100000000000.0] [] -> float
|
|
400
|
+
%v166 = axis_broadcast (:v160) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
401
|
+
%v167 = select (:v159, :v166, :v156) [statuses, rates] -> float
|
|
402
|
+
%v173 = map (:v167, :v148) [fn=:core.sub] [statuses, rates] -> float
|
|
403
|
+
%v174 = map (:v149, :v151, :v173) [fn=:core.clamp] [statuses, rates] -> float
|
|
404
|
+
%v179 = load_field (:v147) [field=:rate, plan_ref="statuses.status.rates.bracket.rate"] [statuses, rates] -> float
|
|
405
|
+
%v180 = map (:v174, :v179) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
406
|
+
%v181 = reduce (:v180) [fn=:agg.sum, over_axes=[:rates]] [statuses] -> float
|
|
407
|
+
%v183 = constant [value=168600.0] [] -> float
|
|
408
|
+
%acc1 = map (:v130, :v183) [fn=:core.min] [] -> float
|
|
409
|
+
%v186 = constant [value=0.062] [] -> float
|
|
410
|
+
%v187 = map (:acc1, :v186) [fn=:core.mul:numeric] [] -> float
|
|
411
|
+
%v189 = constant [value=0.0145] [] -> float
|
|
412
|
+
%v190 = map (:v130, :v189) [fn=:core.mul:numeric] [] -> float
|
|
413
|
+
%v191 = map (:v187, :v190) [fn=:core.add] [] -> float
|
|
414
|
+
%v192 = axis_broadcast (:v191) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
415
|
+
%v197 = load_field (:v137) [field=:addl_threshold, plan_ref="statuses.status.addl_threshold"] [statuses] -> float
|
|
416
|
+
%v198 = map (:v131, :v197) [fn=:core.sub] [statuses] -> float
|
|
417
|
+
%acc2 = map (:v198, :v140) [fn=:core.max] [statuses] -> float
|
|
418
|
+
%v202 = constant [value=0.009] [] -> float
|
|
419
|
+
%v203 = axis_broadcast (:v202) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
420
|
+
%v204 = map (:acc2, :v203) [fn=:core.mul:numeric] [statuses] -> float
|
|
421
|
+
%v205 = map (:v192, :v204) [fn=:core.add] [statuses] -> float
|
|
422
|
+
%v206 = map (:v181, :v205) [fn=:core.add] [statuses] -> float
|
|
423
|
+
%v208 = load_input [key=:state_rate, chain=[], plan_ref="state_rate"] [] -> float
|
|
424
|
+
%v209 = map (:v130, :v208) [fn=:core.mul:numeric] [] -> float
|
|
425
|
+
%v210 = axis_broadcast (:v209) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
426
|
+
%v211 = map (:v206, :v210) [fn=:core.add] [statuses] -> float
|
|
427
|
+
%v213 = load_input [key=:local_rate, chain=[], plan_ref="local_rate"] [] -> float
|
|
428
|
+
%v214 = map (:v130, :v213) [fn=:core.mul:numeric] [] -> float
|
|
429
|
+
%v215 = axis_broadcast (:v214) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
430
|
+
%v216 = map (:v211, :v215) [fn=:core.add] [statuses] -> float
|
|
431
|
+
%v133 = map (:v131, :v216) [fn=:core.sub] [statuses] -> float
|
|
432
|
+
function take_home:
|
|
433
|
+
%v138 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
434
|
+
%v139 = axis_broadcast (:v138) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
435
|
+
%v142 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
436
|
+
%v143 = load_field (:v142) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
437
|
+
%v144 = load_field (:v143) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
438
|
+
%v145 = map (:v139, :v144) [fn=:core.sub] [statuses] -> float
|
|
439
|
+
%v146 = constant [value=0] [] -> integer
|
|
440
|
+
%acc0 = map (:v145, :v146) [fn=:core.max] [statuses] -> float
|
|
441
|
+
%v149 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
442
|
+
%v150 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
443
|
+
%v151 = load_field (:v150) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
444
|
+
%v152 = load_field (:v151) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
445
|
+
%v153 = load_field (:v152) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
446
|
+
%v154 = load_field (:v153) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
447
|
+
%v155 = map (:v149, :v154) [fn=:core.sub] [statuses, rates] -> float
|
|
448
|
+
%v157 = axis_broadcast (:v146) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
449
|
+
%v162 = load_field (:v153) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
450
|
+
%v163 = constant [value=-1] [] -> integer
|
|
451
|
+
%v164 = axis_broadcast (:v163) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
452
|
+
%v165 = map (:v162, :v164) [fn=:core.eq] [statuses, rates] -> boolean
|
|
453
|
+
%v166 = constant [value=100000000000.0] [] -> float
|
|
454
|
+
%v172 = axis_broadcast (:v166) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
455
|
+
%v173 = select (:v165, :v172, :v162) [statuses, rates] -> float
|
|
456
|
+
%v179 = map (:v173, :v154) [fn=:core.sub] [statuses, rates] -> float
|
|
457
|
+
%v180 = map (:v155, :v157, :v179) [fn=:core.clamp] [statuses, rates] -> float
|
|
458
|
+
%v185 = load_field (:v153) [field=:rate, plan_ref="statuses.status.rates.bracket.rate"] [statuses, rates] -> float
|
|
459
|
+
%v186 = map (:v180, :v185) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
460
|
+
%v187 = reduce (:v186) [fn=:agg.sum, over_axes=[:rates]] [statuses] -> float
|
|
461
|
+
%v189 = constant [value=168600.0] [] -> float
|
|
462
|
+
%acc1 = map (:v138, :v189) [fn=:core.min] [] -> float
|
|
463
|
+
%v192 = constant [value=0.062] [] -> float
|
|
464
|
+
%v193 = map (:acc1, :v192) [fn=:core.mul:numeric] [] -> float
|
|
465
|
+
%v195 = constant [value=0.0145] [] -> float
|
|
466
|
+
%v196 = map (:v138, :v195) [fn=:core.mul:numeric] [] -> float
|
|
467
|
+
%v197 = map (:v193, :v196) [fn=:core.add] [] -> float
|
|
468
|
+
%v198 = axis_broadcast (:v197) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
469
|
+
%v203 = load_field (:v143) [field=:addl_threshold, plan_ref="statuses.status.addl_threshold"] [statuses] -> float
|
|
470
|
+
%v204 = map (:v139, :v203) [fn=:core.sub] [statuses] -> float
|
|
471
|
+
%acc2 = map (:v204, :v146) [fn=:core.max] [statuses] -> float
|
|
472
|
+
%v208 = constant [value=0.009] [] -> float
|
|
473
|
+
%v209 = axis_broadcast (:v208) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
474
|
+
%v210 = map (:acc2, :v209) [fn=:core.mul:numeric] [statuses] -> float
|
|
475
|
+
%v211 = map (:v198, :v210) [fn=:core.add] [statuses] -> float
|
|
476
|
+
%v212 = map (:v187, :v211) [fn=:core.add] [statuses] -> float
|
|
477
|
+
%v214 = load_input [key=:state_rate, chain=[], plan_ref="state_rate"] [] -> float
|
|
478
|
+
%v215 = map (:v138, :v214) [fn=:core.mul:numeric] [] -> float
|
|
479
|
+
%v216 = axis_broadcast (:v215) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
480
|
+
%v217 = map (:v212, :v216) [fn=:core.add] [statuses] -> float
|
|
481
|
+
%v219 = load_input [key=:local_rate, chain=[], plan_ref="local_rate"] [] -> float
|
|
482
|
+
%v220 = map (:v138, :v219) [fn=:core.mul:numeric] [] -> float
|
|
483
|
+
%v221 = axis_broadcast (:v220) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
484
|
+
%v222 = map (:v217, :v221) [fn=:core.add] [statuses] -> float
|
|
485
|
+
%v223 = map (:v139, :v222) [fn=:core.sub] [statuses] -> float
|
|
486
|
+
%v135 = load_input [key=:retirement_contrib, chain=[], plan_ref="retirement_contrib"] [] -> float
|
|
487
|
+
%v136 = axis_broadcast (:v135) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
488
|
+
%v137 = map (:v223, :v136) [fn=:core.sub] [statuses] -> float
|
|
489
|
+
function summary:
|
|
490
|
+
%v138 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> string
|
|
491
|
+
%v139 = load_field (:v138) [field=:status, plan_ref="statuses.status"] [statuses] -> string
|
|
492
|
+
%v140 = load_field (:v139) [field=:name, plan_ref="statuses.status.name"] [statuses] -> string
|
|
493
|
+
%v163 = load_input [key=:income, chain=[], plan_ref="income"] [] -> float
|
|
494
|
+
%v164 = axis_broadcast (:v163) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
495
|
+
%v165 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses] -> float
|
|
496
|
+
%v166 = load_field (:v165) [field=:status, plan_ref="statuses.status"] [statuses] -> float
|
|
497
|
+
%v167 = load_field (:v166) [field=:std, plan_ref="statuses.status.std"] [statuses] -> float
|
|
498
|
+
%v168 = map (:v164, :v167) [fn=:core.sub] [statuses] -> float
|
|
499
|
+
%v169 = constant [value=0] [] -> integer
|
|
500
|
+
%acc0 = map (:v168, :v169) [fn=:core.max] [statuses] -> float
|
|
501
|
+
%v172 = axis_broadcast (:acc0) [from_axes=[:statuses], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
502
|
+
%v173 = load_input [key=:statuses, chain=[], plan_ref="statuses"] [statuses, rates] -> float
|
|
503
|
+
%v174 = load_field (:v173) [field=:status, plan_ref="statuses.status"] [statuses, rates] -> float
|
|
504
|
+
%v175 = load_field (:v174) [field=:rates, plan_ref="statuses.status.rates"] [statuses, rates] -> float
|
|
505
|
+
%v176 = load_field (:v175) [field=:bracket, plan_ref="statuses.status.rates.bracket"] [statuses, rates] -> float
|
|
506
|
+
%v177 = load_field (:v176) [field=:lo, plan_ref="statuses.status.rates.bracket.lo"] [statuses, rates] -> float
|
|
507
|
+
%v178 = map (:v172, :v177) [fn=:core.gte] [statuses, rates] -> boolean
|
|
508
|
+
%v193 = load_field (:v176) [field=:hi, plan_ref="statuses.status.rates.bracket.hi"] [statuses, rates] -> float
|
|
509
|
+
%v194 = constant [value=-1] [] -> integer
|
|
510
|
+
%v195 = axis_broadcast (:v194) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
511
|
+
%v196 = map (:v193, :v195) [fn=:core.eq] [statuses, rates] -> boolean
|
|
512
|
+
%v197 = constant [value=100000000000.0] [] -> float
|
|
513
|
+
%v203 = axis_broadcast (:v197) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> float
|
|
514
|
+
%v204 = select (:v196, :v203, :v193) [statuses, rates] -> float
|
|
515
|
+
%v205 = map (:v172, :v204) [fn=:core.lt] [statuses, rates] -> boolean
|
|
516
|
+
%v206 = map (:v178, :v205) [fn=:core.and] [statuses, rates] -> boolean
|
|
517
|
+
%v211 = load_field (:v176) [field=:rate, plan_ref="statuses.status.rates.bracket.rate"] [statuses, rates] -> float
|
|
518
|
+
%v213 = axis_broadcast (:v169) [from_axes=[], to_axes=[:statuses, :rates]] [statuses, rates] -> integer
|
|
519
|
+
%v214 = select (:v206, :v211, :v213) [statuses, rates] -> float
|
|
520
|
+
%v215 = reduce (:v214) [fn=:agg.sum, over_axes=[:rates]] [statuses] -> float
|
|
521
|
+
%v231 = map (:v172, :v177) [fn=:core.sub] [statuses, rates] -> float
|
|
522
|
+
%v255 = map (:v204, :v177) [fn=:core.sub] [statuses, rates] -> float
|
|
523
|
+
%v256 = map (:v231, :v213, :v255) [fn=:core.clamp] [statuses, rates] -> float
|
|
524
|
+
%v262 = map (:v256, :v211) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
525
|
+
%v263 = reduce (:v262) [fn=:agg.sum, over_axes=[:rates]] [statuses] -> float
|
|
526
|
+
%v265 = constant [value=1.0] [] -> float
|
|
527
|
+
%acc3 = map (:v163, :v265) [fn=:core.max] [] -> float
|
|
528
|
+
%v268 = axis_broadcast (:acc3) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
529
|
+
%v269 = map (:v263, :v268) [fn=:core.div] [statuses] -> float
|
|
530
|
+
%v144 = make_object (:v215, :v269, :v263) [keys=[:marginal, :effective, :tax]] [statuses] -> hash
|
|
531
|
+
%v319 = constant [value=168600.0] [] -> float
|
|
532
|
+
%acc5 = map (:v163, :v319) [fn=:core.min] [] -> float
|
|
533
|
+
%v322 = constant [value=0.062] [] -> float
|
|
534
|
+
%v323 = map (:acc5, :v322) [fn=:core.mul:numeric] [] -> float
|
|
535
|
+
%v325 = constant [value=0.0145] [] -> float
|
|
536
|
+
%v326 = map (:v163, :v325) [fn=:core.mul:numeric] [] -> float
|
|
537
|
+
%v327 = map (:v323, :v326) [fn=:core.add] [] -> float
|
|
538
|
+
%v328 = axis_broadcast (:v327) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
539
|
+
%v333 = load_field (:v166) [field=:addl_threshold, plan_ref="statuses.status.addl_threshold"] [statuses] -> float
|
|
540
|
+
%v334 = map (:v164, :v333) [fn=:core.sub] [statuses] -> float
|
|
541
|
+
%acc6 = map (:v334, :v169) [fn=:core.max] [statuses] -> float
|
|
542
|
+
%v338 = constant [value=0.009] [] -> float
|
|
543
|
+
%v339 = axis_broadcast (:v338) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
544
|
+
%v340 = map (:acc6, :v339) [fn=:core.mul:numeric] [statuses] -> float
|
|
545
|
+
%v341 = map (:v328, :v340) [fn=:core.add] [statuses] -> float
|
|
546
|
+
%v347 = map (:v341, :v268) [fn=:core.div] [statuses] -> float
|
|
547
|
+
%v147 = make_object (:v347, :v341) [keys=[:effective, :tax]] [statuses] -> hash
|
|
548
|
+
%v148 = load_input [key=:state_rate, chain=[], plan_ref="state_rate"] [] -> float
|
|
549
|
+
%v374 = map (:v163, :v148) [fn=:core.mul:numeric] [] -> float
|
|
550
|
+
%v151 = make_object (:v148, :v148, :v374) [keys=[:marginal, :effective, :tax]] [] -> hash
|
|
551
|
+
%v152 = load_input [key=:local_rate, chain=[], plan_ref="local_rate"] [] -> float
|
|
552
|
+
%v377 = map (:v163, :v152) [fn=:core.mul:numeric] [] -> float
|
|
553
|
+
%v155 = make_object (:v152, :v152, :v377) [keys=[:marginal, :effective, :tax]] [] -> hash
|
|
554
|
+
%v450 = map (:v263, :v341) [fn=:core.add] [statuses] -> float
|
|
555
|
+
%v454 = axis_broadcast (:v374) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
556
|
+
%v455 = map (:v450, :v454) [fn=:core.add] [statuses] -> float
|
|
557
|
+
%v459 = axis_broadcast (:v377) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
558
|
+
%v460 = map (:v455, :v459) [fn=:core.add] [statuses] -> float
|
|
559
|
+
%v466 = map (:v460, :v268) [fn=:core.div] [statuses] -> float
|
|
560
|
+
%v158 = make_object (:v466, :v460) [keys=[:effective, :tax]] [statuses] -> hash
|
|
561
|
+
%v635 = map (:v164, :v460) [fn=:core.sub] [statuses] -> float
|
|
562
|
+
%v160 = load_input [key=:retirement_contrib, chain=[], plan_ref="retirement_contrib"] [] -> float
|
|
563
|
+
%v723 = axis_broadcast (:v160) [from_axes=[], to_axes=[:statuses]] [statuses] -> float
|
|
564
|
+
%v724 = map (:v635, :v723) [fn=:core.sub] [statuses] -> float
|
|
565
|
+
%v162 = make_object (:v140, :v144, :v147, :v151, :v155, :v158, :v635, :v160, :v724) [keys=[:filing_status, :federal, :fica, :state, :local, :total, :after_tax, :retirement_contrib, :take_home]] [statuses] -> hash
|