kumi 0.0.37 → 0.1.0
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/.rubocop.yml +39 -58
- data/.rubocop_todo.yml +931 -0
- data/CHANGELOG.md +37 -0
- data/README.md +3 -0
- data/data/functions/core/arithmetic.yaml +48 -0
- data/data/functions/core/conversion.yaml +13 -0
- data/data/functions/core/select.yaml +1 -1
- data/data/functions/core/stencil.yaml +32 -0
- data/data/kernels/javascript/agg/numeric.yaml +1 -0
- data/data/kernels/javascript/core/arithmetic.yaml +24 -0
- data/data/kernels/javascript/core/coercion.yaml +18 -4
- data/data/kernels/ruby/agg/numeric.yaml +2 -1
- data/data/kernels/ruby/core/arithmetic.yaml +31 -3
- data/data/kernels/ruby/core/coercion.yaml +8 -0
- data/docs/CROSS_TARGET_SEMANTICS.md +99 -0
- data/docs/FORM_SCHEMA.md +13 -8
- data/docs/FUNCTIONS.md +120 -13
- data/docs/INPUTS.md +164 -0
- data/docs/OUTPUT_SCHEMA.md +12 -8
- data/docs/PASSES.md +76 -0
- data/docs/PASS_AUDIT.md +179 -0
- data/docs/PORTAL.md +39 -0
- data/docs/SYNTAX.md +84 -121
- data/docs/SYNTAX_NOTES.md +612 -0
- data/docs/UNSAT_DETECTION.md +2 -2
- data/docs/functions-reference.json +276 -84
- data/docs/pairwise-design.md +125 -0
- data/docs/superpowers/plans/2026-06-12-pass-conventions-and-dedup.md +1559 -0
- data/docs/superpowers/specs/2026-06-12-pass-conventions-and-dedup-design.md +136 -0
- data/golden/algebraic_identities/expected/ast.txt +66 -0
- data/golden/algebraic_identities/expected/dfir.txt +47 -0
- data/golden/algebraic_identities/expected/dfir_optimized.txt +59 -0
- data/golden/algebraic_identities/expected/input_plan.txt +7 -0
- data/golden/algebraic_identities/expected/loopir.txt +61 -0
- data/golden/algebraic_identities/expected/nast.txt +51 -0
- data/golden/algebraic_identities/expected/runtime.json +24 -0
- data/golden/algebraic_identities/expected/schema_javascript.mjs +89 -0
- data/golden/algebraic_identities/expected/schema_ruby.rb +84 -0
- data/golden/algebraic_identities/expected/snast.txt +51 -0
- data/golden/algebraic_identities/expected/vecir.txt +47 -0
- data/golden/algebraic_identities/input.json +6 -0
- data/golden/algebraic_identities/schema.kumi +25 -0
- data/golden/array_element/expected/loopir.txt +1 -2
- data/golden/array_element/expected/runtime.json +5 -0
- data/golden/array_element/expected/schema_javascript.mjs +1 -2
- data/golden/array_element/expected/schema_ruby.rb +2 -3
- data/golden/array_index/expected/runtime.json +54 -0
- data/golden/array_index/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/{expected.json → expected/runtime.json} +5 -15
- data/golden/array_operations/expected/schema_ruby.rb +1 -1
- data/golden/cascade_logic/expected/runtime.json +3 -0
- data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
- data/golden/cascade_reuse_peephole/expected/ast.txt +193 -0
- data/golden/cascade_reuse_peephole/expected/dfir.txt +124 -0
- data/golden/cascade_reuse_peephole/expected/dfir_optimized.txt +320 -0
- data/golden/cascade_reuse_peephole/expected/input_plan.txt +2 -0
- data/golden/cascade_reuse_peephole/expected/loopir.txt +302 -0
- data/golden/cascade_reuse_peephole/expected/nast.txt +188 -0
- data/golden/cascade_reuse_peephole/expected/runtime.json +8 -0
- data/golden/cascade_reuse_peephole/expected/schema_javascript.mjs +335 -0
- data/golden/cascade_reuse_peephole/expected/schema_ruby.rb +337 -0
- data/golden/cascade_reuse_peephole/expected/snast.txt +188 -0
- data/golden/cascade_reuse_peephole/expected/vecir.txt +302 -0
- data/golden/cascade_reuse_peephole/input.json +4 -0
- data/golden/cascade_reuse_peephole/schema.kumi +31 -0
- data/golden/chained_fusion/expected/loopir.txt +5 -13
- data/golden/chained_fusion/expected/runtime.json +45 -0
- data/golden/chained_fusion/expected/schema_javascript.mjs +5 -13
- data/golden/chained_fusion/expected/schema_ruby.rb +6 -14
- data/golden/cross_import/expected/ast.txt +21 -0
- data/golden/cross_import/expected/dfir.txt +3 -0
- data/golden/cross_import/expected/dfir_optimized.txt +8 -0
- data/golden/cross_import/expected/input_plan.txt +5 -0
- data/golden/cross_import/expected/loopir.txt +14 -0
- data/golden/cross_import/expected/nast.txt +7 -0
- data/golden/cross_import/expected/runtime.json +10 -0
- data/golden/cross_import/expected/schema_javascript.mjs +19 -0
- data/golden/cross_import/expected/schema_ruby.rb +19 -0
- data/golden/cross_import/expected/snast.txt +7 -0
- data/golden/cross_import/expected/vecir.txt +8 -0
- data/golden/cross_import/input.json +1 -0
- data/golden/cross_import/schema.kumi +15 -0
- data/golden/cross_let/expected/ast.txt +62 -0
- data/golden/cross_let/expected/dfir.txt +35 -0
- data/golden/cross_let/expected/dfir_optimized.txt +51 -0
- data/golden/cross_let/expected/input_plan.txt +5 -0
- data/golden/cross_let/expected/loopir.txt +100 -0
- data/golden/cross_let/expected/nast.txt +46 -0
- data/golden/cross_let/expected/runtime.json +61 -0
- data/golden/cross_let/expected/schema_javascript.mjs +136 -0
- data/golden/cross_let/expected/schema_ruby.rb +123 -0
- data/golden/cross_let/expected/snast.txt +46 -0
- data/golden/cross_let/expected/vecir.txt +51 -0
- data/golden/cross_let/input.json +7 -0
- data/golden/cross_let/schema.kumi +25 -0
- data/golden/decimal_explicit/expected/dfir.txt +6 -6
- data/golden/decimal_explicit/expected/dfir_optimized.txt +6 -6
- data/golden/decimal_explicit/expected/loopir.txt +6 -6
- data/golden/decimal_explicit/expected/runtime.json +10 -0
- data/golden/decimal_explicit/expected/schema_ruby.rb +1 -1
- data/golden/decimal_explicit/expected/snast.txt +9 -9
- data/golden/decimal_explicit/expected/vecir.txt +6 -6
- data/golden/element_arrays/expected/loopir.txt +6 -13
- data/golden/element_arrays/expected/runtime.json +117 -0
- data/golden/element_arrays/expected/schema_javascript.mjs +7 -14
- data/golden/element_arrays/expected/schema_ruby.rb +8 -15
- data/golden/empty_and_null_inputs/expected/loopir.txt +4 -9
- data/golden/empty_and_null_inputs/expected/runtime.json +8 -0
- data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +5 -10
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +6 -11
- data/golden/example_xpto/expected/runtime.json +4 -0
- data/golden/example_xpto/expected/schema_ruby.rb +1 -1
- data/golden/function_overload/expected/runtime.json +8 -0
- data/golden/function_overload/expected/schema_ruby.rb +1 -1
- data/golden/game_of_life/expected/loopir.txt +1 -58
- data/golden/game_of_life/expected/runtime.json +418 -0
- data/golden/game_of_life/expected/schema_javascript.mjs +1 -58
- data/golden/game_of_life/expected/schema_ruby.rb +2 -59
- data/golden/hash_keys/expected/runtime.json +20 -0
- data/golden/hash_keys/expected/schema_ruby.rb +1 -1
- data/golden/hash_value/expected/runtime.json +19 -0
- data/golden/hash_value/expected/schema_ruby.rb +1 -1
- data/golden/hierarchical_complex/expected/loopir.txt +0 -4
- data/golden/hierarchical_complex/expected/runtime.json +16 -0
- data/golden/hierarchical_complex/expected/schema_javascript.mjs +0 -4
- data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -5
- data/golden/inline_rename_scope_leak/expected/loopir.txt +1 -5
- data/golden/inline_rename_scope_leak/expected/runtime.json +10 -0
- data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +3 -7
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +4 -8
- data/golden/input_reference/expected/dfir.txt +2 -2
- data/golden/input_reference/expected/dfir_optimized.txt +2 -2
- data/golden/input_reference/expected/loopir.txt +2 -5
- data/golden/input_reference/expected/runtime.json +15 -0
- data/golden/input_reference/expected/schema_javascript.mjs +3 -6
- data/golden/input_reference/expected/schema_ruby.rb +4 -7
- data/golden/input_reference/expected/snast.txt +1 -1
- data/golden/input_reference/expected/vecir.txt +2 -2
- data/golden/interleaved_fusion/expected/loopir.txt +5 -10
- data/golden/interleaved_fusion/expected/runtime.json +37 -0
- data/golden/interleaved_fusion/expected/schema_javascript.mjs +5 -10
- data/golden/interleaved_fusion/expected/schema_ruby.rb +6 -11
- data/golden/let_inline/expected/runtime.json +6 -0
- data/golden/let_inline/expected/schema_ruby.rb +2 -2
- data/golden/loop_fusion/expected/loopir.txt +3 -7
- data/golden/loop_fusion/expected/runtime.json +29 -0
- data/golden/loop_fusion/expected/schema_javascript.mjs +3 -7
- data/golden/loop_fusion/expected/schema_ruby.rb +4 -8
- data/golden/min_max_empty_arrays/expected/loopir.txt +5 -12
- data/golden/min_max_empty_arrays/expected/runtime.json +16 -0
- data/golden/min_max_empty_arrays/expected/schema_javascript.mjs +7 -14
- data/golden/min_max_empty_arrays/expected/schema_ruby.rb +10 -17
- data/golden/min_reduce_scope/expected/loopir.txt +3 -7
- data/golden/min_reduce_scope/expected/runtime.json +11 -0
- data/golden/min_reduce_scope/expected/schema_javascript.mjs +4 -8
- data/golden/min_reduce_scope/expected/schema_ruby.rb +5 -9
- data/golden/mixed_dimensions/expected/loopir.txt +2 -5
- data/golden/mixed_dimensions/expected/runtime.json +34 -0
- data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -6
- data/golden/mixed_dimensions/expected/schema_ruby.rb +4 -7
- data/golden/mlp_backprop/expected/ast.txt +147 -0
- data/golden/mlp_backprop/expected/dfir.txt +99 -0
- data/golden/mlp_backprop/expected/dfir_optimized.txt +374 -0
- data/golden/mlp_backprop/expected/input_plan.txt +17 -0
- data/golden/mlp_backprop/expected/loopir.txt +440 -0
- data/golden/mlp_backprop/expected/nast.txt +120 -0
- data/golden/mlp_backprop/expected/runtime.json +43 -0
- data/golden/mlp_backprop/expected/schema_javascript.mjs +516 -0
- data/golden/mlp_backprop/expected/schema_ruby.rb +484 -0
- data/golden/mlp_backprop/expected/snast.txt +120 -0
- data/golden/mlp_backprop/expected/vecir.txt +374 -0
- data/golden/mlp_backprop/input.json +8 -0
- data/golden/mlp_backprop/schema.kumi +43 -0
- data/golden/multi_loop_reduction/expected/loopir.txt +2 -6
- data/golden/multi_loop_reduction/expected/runtime.json +5 -0
- data/golden/multi_loop_reduction/expected/schema_javascript.mjs +4 -8
- data/golden/multi_loop_reduction/expected/schema_ruby.rb +5 -9
- data/golden/multirank_hoisting/expected/loopir.txt +24 -42
- data/golden/multirank_hoisting/expected/runtime.json +47 -0
- data/golden/multirank_hoisting/expected/schema_javascript.mjs +24 -45
- data/golden/multirank_hoisting/expected/schema_ruby.rb +25 -43
- data/golden/nested_hash/expected/runtime.json +3 -0
- data/golden/nested_hash/expected/schema_ruby.rb +1 -1
- data/golden/outer_let/expected/ast.txt +106 -0
- data/golden/outer_let/expected/dfir.txt +66 -0
- data/golden/outer_let/expected/dfir_optimized.txt +145 -0
- data/golden/outer_let/expected/input_plan.txt +19 -0
- data/golden/outer_let/expected/loopir.txt +166 -0
- data/golden/outer_let/expected/nast.txt +78 -0
- data/golden/outer_let/expected/runtime.json +89 -0
- data/golden/outer_let/expected/schema_javascript.mjs +220 -0
- data/golden/outer_let/expected/schema_ruby.rb +201 -0
- data/golden/outer_let/expected/snast.txt +78 -0
- data/golden/outer_let/expected/vecir.txt +145 -0
- data/golden/outer_let/input.json +9 -0
- data/golden/outer_let/schema.kumi +32 -0
- data/golden/pairwise_cross/expected/ast.txt +62 -0
- data/golden/pairwise_cross/expected/dfir.txt +36 -0
- data/golden/pairwise_cross/expected/dfir_optimized.txt +50 -0
- data/golden/pairwise_cross/expected/input_plan.txt +8 -0
- data/golden/pairwise_cross/expected/loopir.txt +84 -0
- data/golden/pairwise_cross/expected/nast.txt +46 -0
- data/golden/pairwise_cross/expected/runtime.json +80 -0
- data/golden/pairwise_cross/expected/schema_javascript.mjs +113 -0
- data/golden/pairwise_cross/expected/schema_ruby.rb +104 -0
- data/golden/pairwise_cross/expected/snast.txt +46 -0
- data/golden/pairwise_cross/expected/vecir.txt +50 -0
- data/golden/pairwise_cross/input.json +8 -0
- data/golden/pairwise_cross/schema.kumi +18 -0
- data/golden/reduction_broadcast/expected/loopir.txt +4 -10
- data/golden/reduction_broadcast/expected/runtime.json +14 -0
- data/golden/reduction_broadcast/expected/schema_javascript.mjs +4 -10
- data/golden/reduction_broadcast/expected/schema_ruby.rb +5 -11
- data/golden/roll/expected/loopir.txt +4 -8
- data/golden/roll/expected/runtime.json +26 -0
- data/golden/roll/expected/schema_javascript.mjs +4 -8
- data/golden/roll/expected/schema_ruby.rb +5 -9
- data/golden/schema_imports_broadcasting_with_imports/expected/dfir.txt +3 -3
- data/golden/schema_imports_broadcasting_with_imports/expected/dfir_optimized.txt +3 -3
- data/golden/schema_imports_broadcasting_with_imports/expected/loopir.txt +3 -4
- data/golden/schema_imports_broadcasting_with_imports/expected/runtime.json +11 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_javascript.mjs +2 -3
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_ruby.rb +3 -4
- data/golden/schema_imports_broadcasting_with_imports/expected/snast.txt +5 -5
- data/golden/schema_imports_broadcasting_with_imports/expected/vecir.txt +3 -3
- data/golden/schema_imports_complex_order_calc/expected/dfir.txt +20 -20
- data/golden/schema_imports_complex_order_calc/expected/dfir_optimized.txt +60 -60
- data/golden/schema_imports_complex_order_calc/expected/loopir.txt +34 -47
- data/golden/schema_imports_complex_order_calc/expected/runtime.json +33 -0
- data/golden/schema_imports_complex_order_calc/expected/schema_javascript.mjs +16 -29
- data/golden/schema_imports_complex_order_calc/expected/schema_ruby.rb +17 -30
- data/golden/schema_imports_complex_order_calc/expected/snast.txt +26 -26
- data/golden/schema_imports_complex_order_calc/expected/vecir.txt +60 -60
- data/golden/schema_imports_composed_order/expected/dfir.txt +3 -3
- data/golden/schema_imports_composed_order/expected/dfir_optimized.txt +6 -6
- data/golden/schema_imports_composed_order/expected/loopir.txt +6 -6
- data/golden/schema_imports_composed_order/expected/runtime.json +9 -0
- data/golden/schema_imports_composed_order/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_composed_order/expected/snast.txt +5 -5
- data/golden/schema_imports_composed_order/expected/vecir.txt +6 -6
- data/golden/schema_imports_discount_with_tax/expected/dfir.txt +7 -7
- data/golden/schema_imports_discount_with_tax/expected/dfir_optimized.txt +10 -10
- data/golden/schema_imports_discount_with_tax/expected/loopir.txt +10 -10
- data/golden/schema_imports_discount_with_tax/expected/runtime.json +10 -0
- data/golden/schema_imports_discount_with_tax/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_discount_with_tax/expected/snast.txt +11 -11
- data/golden/schema_imports_discount_with_tax/expected/vecir.txt +10 -10
- data/golden/schema_imports_line_items/expected/dfir.txt +1 -1
- data/golden/schema_imports_line_items/expected/dfir_optimized.txt +3 -3
- data/golden/schema_imports_line_items/expected/loopir.txt +3 -6
- data/golden/schema_imports_line_items/expected/runtime.json +8 -0
- data/golden/schema_imports_line_items/expected/schema_javascript.mjs +4 -7
- data/golden/schema_imports_line_items/expected/schema_ruby.rb +5 -8
- data/golden/schema_imports_line_items/expected/snast.txt +1 -1
- data/golden/schema_imports_line_items/expected/vecir.txt +3 -3
- data/golden/schema_imports_multiple/expected/dfir.txt +7 -7
- data/golden/schema_imports_multiple/expected/dfir_optimized.txt +13 -13
- data/golden/schema_imports_multiple/expected/loopir.txt +13 -13
- data/golden/schema_imports_multiple/expected/runtime.json +10 -0
- data/golden/schema_imports_multiple/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_multiple/expected/snast.txt +11 -11
- data/golden/schema_imports_multiple/expected/vecir.txt +13 -13
- data/golden/schema_imports_nested_expressions/expected/dfir.txt +4 -4
- data/golden/schema_imports_nested_expressions/expected/dfir_optimized.txt +6 -6
- data/golden/schema_imports_nested_expressions/expected/loopir.txt +6 -6
- data/golden/schema_imports_nested_expressions/expected/runtime.json +8 -0
- data/golden/schema_imports_nested_expressions/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_nested_expressions/expected/snast.txt +6 -6
- data/golden/schema_imports_nested_expressions/expected/vecir.txt +6 -6
- data/golden/schema_imports_nested_with_reductions/expected/dfir.txt +6 -6
- data/golden/schema_imports_nested_with_reductions/expected/dfir_optimized.txt +15 -15
- data/golden/schema_imports_nested_with_reductions/expected/loopir.txt +7 -14
- data/golden/schema_imports_nested_with_reductions/expected/runtime.json +12 -0
- data/golden/schema_imports_nested_with_reductions/expected/schema_javascript.mjs +8 -15
- data/golden/schema_imports_nested_with_reductions/expected/schema_ruby.rb +9 -16
- data/golden/schema_imports_nested_with_reductions/expected/snast.txt +6 -6
- data/golden/schema_imports_nested_with_reductions/expected/vecir.txt +15 -15
- data/golden/schema_imports_with_imports/expected/dfir.txt +3 -3
- data/golden/schema_imports_with_imports/expected/dfir_optimized.txt +3 -3
- data/golden/schema_imports_with_imports/expected/loopir.txt +3 -3
- data/golden/schema_imports_with_imports/expected/runtime.json +7 -0
- data/golden/schema_imports_with_imports/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_with_imports/expected/snast.txt +5 -5
- data/golden/schema_imports_with_imports/expected/vecir.txt +3 -3
- data/golden/shift/expected/loopir.txt +4 -8
- data/golden/shift/expected/runtime.json +38 -0
- data/golden/shift/expected/schema_javascript.mjs +4 -8
- data/golden/shift/expected/schema_ruby.rb +5 -9
- data/golden/shift_2d/expected/loopir.txt +8 -16
- data/golden/shift_2d/expected/runtime.json +146 -0
- data/golden/shift_2d/expected/schema_javascript.mjs +8 -16
- data/golden/shift_2d/expected/schema_ruby.rb +9 -17
- data/golden/simple_math/expected/runtime.json +10 -0
- data/golden/simple_math/expected/schema_ruby.rb +1 -1
- data/golden/streaming_basics/expected/loopir.txt +0 -3
- data/golden/streaming_basics/expected/runtime.json +25 -0
- data/golden/streaming_basics/expected/schema_javascript.mjs +3 -6
- data/golden/streaming_basics/expected/schema_ruby.rb +4 -7
- data/golden/transcendentals/expected/ast.txt +48 -0
- data/golden/transcendentals/expected/dfir.txt +31 -0
- data/golden/transcendentals/expected/dfir_optimized.txt +34 -0
- data/golden/transcendentals/expected/input_plan.txt +5 -0
- data/golden/transcendentals/expected/loopir.txt +46 -0
- data/golden/transcendentals/expected/nast.txt +34 -0
- data/golden/transcendentals/expected/runtime.json +27 -0
- data/golden/transcendentals/expected/schema_javascript.mjs +66 -0
- data/golden/transcendentals/expected/schema_ruby.rb +63 -0
- data/golden/transcendentals/expected/snast.txt +34 -0
- data/golden/transcendentals/expected/vecir.txt +34 -0
- data/golden/transcendentals/input.json +1 -0
- data/golden/transcendentals/schema.kumi +16 -0
- data/golden/tuples/expected/dfir.txt +4 -4
- data/golden/tuples/expected/runtime.json +12 -0
- data/golden/tuples/expected/schema_ruby.rb +1 -1
- data/golden/tuples_and_arrays/expected/dfir.txt +1 -1
- data/golden/tuples_and_arrays/expected/loopir.txt +0 -1
- data/golden/tuples_and_arrays/expected/runtime.json +13 -0
- data/golden/tuples_and_arrays/expected/schema_javascript.mjs +1 -2
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +2 -3
- data/golden/type_promotion/expected/ast.txt +75 -0
- data/golden/type_promotion/expected/dfir.txt +38 -0
- data/golden/type_promotion/expected/dfir_optimized.txt +51 -0
- data/golden/type_promotion/expected/input_plan.txt +9 -0
- data/golden/type_promotion/expected/loopir.txt +57 -0
- data/golden/type_promotion/expected/nast.txt +57 -0
- data/golden/type_promotion/expected/runtime.json +23 -0
- data/golden/type_promotion/expected/schema_javascript.mjs +90 -0
- data/golden/type_promotion/expected/schema_ruby.rb +89 -0
- data/golden/type_promotion/expected/snast.txt +57 -0
- data/golden/type_promotion/expected/vecir.txt +51 -0
- data/golden/type_promotion/input.json +11 -0
- data/golden/type_promotion/schema.kumi +30 -0
- data/golden/us_tax_2024/expected/dfir.txt +6 -6
- data/golden/us_tax_2024/expected/loopir.txt +108 -217
- data/golden/us_tax_2024/expected/runtime.json +423 -0
- data/golden/us_tax_2024/expected/schema_javascript.mjs +108 -235
- data/golden/us_tax_2024/expected/schema_ruby.rb +109 -218
- data/golden/vector_make_object/expected/schema_ruby.rb +1 -1
- data/golden/with_constants/expected/schema_ruby.rb +1 -1
- data/lib/kumi/analyzer.rb +29 -34
- data/lib/kumi/configuration.rb +31 -0
- data/lib/kumi/core/analyzer/binder.rb +2 -2
- data/lib/kumi/core/analyzer/macro_expander.rb +3 -3
- data/lib/kumi/core/analyzer/pass_failure.rb +1 -1
- data/lib/kumi/core/analyzer/pass_manager.rb +211 -100
- data/lib/kumi/core/analyzer/passes/attach_anchors_pass.rb +44 -15
- data/lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb +6 -20
- data/lib/kumi/core/analyzer/passes/codegen/loop/js/emitter.rb +235 -35
- data/lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb +6 -3
- data/lib/kumi/core/analyzer/passes/codegen/loop_js_pass.rb +3 -0
- data/lib/kumi/core/analyzer/passes/codegen/loop_ruby_pass.rb +3 -0
- data/lib/kumi/core/analyzer/passes/constant_folding_pass.rb +3 -0
- data/lib/kumi/core/analyzer/passes/contract_checker_pass.rb +1 -1
- data/lib/kumi/core/analyzer/passes/declaration_validator_pass.rb +83 -0
- data/lib/kumi/core/analyzer/passes/{dependency_resolver.rb → dependency_resolver_pass.rb} +8 -6
- data/lib/kumi/core/analyzer/passes/df_validate_pass.rb +3 -13
- data/lib/kumi/core/analyzer/passes/import_analysis_pass.rb +7 -2
- data/lib/kumi/core/analyzer/passes/input_access_planner_pass.rb +4 -28
- data/lib/kumi/core/analyzer/passes/{input_collector.rb → input_collector_pass.rb} +30 -3
- data/lib/kumi/core/analyzer/passes/input_form_schema_pass.rb +4 -1
- data/lib/kumi/core/analyzer/passes/ir_execution_schedule_pass.rb +4 -2
- data/lib/kumi/core/analyzer/passes/ir_lower_pass.rb +35 -0
- data/lib/kumi/core/analyzer/passes/ir_validate_pass.rb +43 -0
- data/lib/kumi/core/analyzer/passes/{load_input_cse.rb → load_input_cse_pass.rb} +1 -1
- data/lib/kumi/core/analyzer/passes/loop/lower_pass.rb +23 -10
- data/lib/kumi/core/analyzer/passes/loop_validate_pass.rb +2 -10
- data/lib/kumi/core/analyzer/passes/lower_to_dfir_pass.rb +4 -2
- data/lib/kumi/core/analyzer/passes/{name_indexer.rb → name_indexer_pass.rb} +3 -7
- data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +174 -23
- data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +19 -3
- data/lib/kumi/core/analyzer/passes/output_schema_pass.rb +3 -0
- data/lib/kumi/core/analyzer/passes/pass_base.rb +78 -5
- data/lib/kumi/core/analyzer/passes/precompute_access_paths_pass.rb +7 -1
- data/lib/kumi/core/analyzer/passes/{semantic_constraint_validator.rb → semantic_constraint_validator_pass.rb} +7 -14
- data/lib/kumi/core/analyzer/passes/snast_pass.rb +22 -48
- data/lib/kumi/core/analyzer/passes/{toposorter.rb → toposorter_pass.rb} +4 -5
- data/lib/kumi/core/analyzer/passes/{unsat_detector.rb → unsat_detector_pass.rb} +4 -15
- data/lib/kumi/core/analyzer/passes/vec/lower_pass.rb +6 -8
- data/lib/kumi/core/analyzer/passes/vec_validate_pass.rb +2 -10
- data/lib/kumi/core/analyzer/structs/input_meta.rb +1 -1
- data/lib/kumi/core/compiler/access_builder.rb +1 -1
- data/lib/kumi/core/compiler/access_codegen.rb +1 -1
- data/lib/kumi/core/compiler/access_emit/base.rb +1 -1
- data/lib/kumi/core/compiler/access_planner_v2.rb +2 -2
- data/lib/kumi/core/compiler/accessors/each_indexed_accessor.rb +1 -1
- data/lib/kumi/core/compiler/accessors/materialize_accessor.rb +1 -1
- data/lib/kumi/core/compiler/accessors/ravel_accessor.rb +1 -1
- data/lib/kumi/core/compiler/accessors/read_accessor.rb +1 -1
- data/lib/kumi/core/error_reporter.rb +6 -11
- data/lib/kumi/core/errors.rb +37 -11
- data/lib/kumi/core/expression_renderer.rb +97 -0
- data/lib/kumi/core/functions/overload_resolver.rb +79 -149
- data/lib/kumi/core/ir/execution_engine/combinators.rb +16 -10
- data/lib/kumi/core/nast.rb +24 -0
- data/lib/kumi/core/ruby_parser/dsl.rb +12 -2
- data/lib/kumi/core/ruby_parser/dsl_cascade_builder.rb +14 -12
- data/lib/kumi/core/ruby_parser/guard_rails.rb +15 -1
- data/lib/kumi/core/ruby_parser/input_builder.rb +55 -48
- data/lib/kumi/core/ruby_parser/parser.rb +25 -17
- data/lib/kumi/core/ruby_parser/schema_builder.rb +43 -15
- data/lib/kumi/core/ruby_parser/sugar.rb +0 -86
- data/lib/kumi/core/types/dtype_rule.rb +76 -0
- data/lib/kumi/core/types/normalizer.rb +2 -2
- data/lib/kumi/core/types/profile.rb +82 -0
- data/lib/kumi/core/types/registry.rb +87 -0
- data/lib/kumi/core/types/system.rb +96 -0
- data/lib/kumi/core/types/value_objects.rb +14 -13
- data/lib/kumi/core/types.rb +41 -34
- data/lib/kumi/dev/golden_runtime.rb +163 -0
- data/lib/kumi/dev/golden_v2.rb +30 -5
- data/lib/kumi/dev/pretty_printer.rb +40 -73
- data/lib/kumi/frontends/ruby.rb +52 -12
- data/lib/kumi/frontends/source_frame.rb +71 -0
- data/lib/kumi/frontends/text.rb +4 -48
- data/lib/kumi/function_registry/loader.rb +101 -0
- data/lib/kumi/function_registry.rb +150 -0
- data/lib/kumi/ir/base/block.rb +11 -2
- data/lib/kumi/ir/base/builder.rb +1 -1
- data/lib/kumi/ir/base/function.rb +2 -4
- data/lib/kumi/ir/base/instruction.rb +10 -23
- data/lib/kumi/ir/base/module.rb +5 -4
- data/lib/kumi/ir/buf/lower.rb +1 -2
- data/lib/kumi/ir/df/access_contract.rb +3 -5
- data/lib/kumi/ir/df/import_inliner.rb +2 -5
- data/lib/kumi/ir/df/lower.rb +72 -51
- data/lib/kumi/ir/df/ops/axis_cross.rb +34 -0
- data/lib/kumi/ir/df/ops/axis_outer.rb +35 -0
- data/lib/kumi/ir/df/passes/broadcast_simplify.rb +1 -2
- data/lib/kumi/ir/df/passes/cse.rb +8 -3
- data/lib/kumi/ir/df/passes/decl_inlining.rb +5 -26
- data/lib/kumi/ir/df/passes/import_inlining.rb +42 -36
- data/lib/kumi/ir/df/passes/load_dedup.rb +9 -4
- data/lib/kumi/ir/df/passes/stencil_cse.rb +2 -5
- data/lib/kumi/ir/df/passes/support/instruction_cloner.rb +41 -14
- data/lib/kumi/ir/df/passes/tuple_fold_canonicalization.rb +8 -3
- data/lib/kumi/ir/df/passes/tuple_to_object.rb +1 -2
- data/lib/kumi/ir/df/validator.rb +3 -3
- data/lib/kumi/ir/df.rb +8 -0
- data/lib/kumi/ir/loop/lower.rb +231 -37
- data/lib/kumi/ir/loop/passes/array_contraction.rb +124 -0
- data/lib/kumi/ir/loop/passes/copy_cleanup.rb +112 -0
- data/lib/kumi/ir/loop/passes/loop_fusion.rb +125 -0
- data/lib/kumi/ir/loop/passes/support/structure.rb +100 -0
- data/lib/kumi/ir/loop/passes.rb +14 -0
- data/lib/kumi/ir/loop/pipeline.rb +9 -1
- data/lib/kumi/ir/loop/validator.rb +29 -4
- data/lib/kumi/ir/loop.rb +1 -0
- data/lib/kumi/ir/passes/register_generator.rb +32 -0
- data/lib/kumi/ir/testing/snast_factory.rb +2 -4
- data/lib/kumi/ir/vec/lower.rb +17 -7
- data/lib/kumi/ir/vec/ops/core_ops.rb +41 -0
- data/lib/kumi/ir/vec/passes/axis_canonicalization.rb +1 -2
- data/lib/kumi/ir/vec/passes/constant_propagation.rb +75 -47
- data/lib/kumi/ir/vec/passes/dce.rb +2 -5
- data/lib/kumi/ir/vec/passes/gvn.rb +8 -3
- data/lib/kumi/ir/vec/passes/peephole_simplify.rb +30 -13
- data/lib/kumi/ir/vec/passes/stencil_detection.rb +1 -2
- data/lib/kumi/ir/vec/passes/support/algebraic_identities.rb +70 -0
- data/lib/kumi/ir/vec/passes/support/instruction_cloner.rb +17 -3
- data/lib/kumi/ir/vec/validator.rb +26 -6
- data/lib/kumi/schema.rb +14 -10
- data/lib/kumi/schema_metadata/printer.rb +111 -0
- data/lib/kumi/schema_metadata.rb +289 -0
- data/lib/kumi/syntax/location.rb +14 -1
- data/lib/kumi/syntax/root.rb +35 -3
- data/lib/kumi/test_shared_schemas/pairwise.rb +27 -0
- data/lib/kumi/version.rb +1 -1
- data/lib/kumi.rb +3 -5
- data/tasks/docs_portal.rake +135 -0
- metadata +203 -81
- data/golden/array_element/expected.json +0 -5
- data/golden/array_index/expected.json +0 -5
- data/golden/cascade_logic/expected.json +0 -5
- data/golden/chained_fusion/expected.json +0 -45
- data/golden/decimal_explicit/expected.json +0 -1
- data/golden/element_arrays/expected.json +0 -55
- data/golden/empty_and_null_inputs/expected.json +0 -8
- data/golden/example_xpto/expected.json +0 -4
- data/golden/game_of_life/expected.json +0 -3
- data/golden/hash_keys/expected.json +0 -20
- data/golden/hash_value/expected.json +0 -19
- data/golden/hierarchical_complex/expected.json +0 -34
- data/golden/inline_rename_scope_leak/expected.json +0 -7
- data/golden/input_reference/expected.json +0 -7
- data/golden/interleaved_fusion/expected.json +0 -37
- data/golden/let_inline/expected.json +0 -1
- data/golden/loop_fusion/expected.json +0 -30
- data/golden/min_max_empty_arrays/expected.json +0 -7
- data/golden/min_reduce_scope/expected.json +0 -9
- data/golden/mixed_dimensions/expected.json +0 -6
- data/golden/multi_loop_reduction/expected.json +0 -5
- data/golden/multirank_hoisting/expected.json +0 -15
- data/golden/nested_hash/expected.json +0 -3
- data/golden/reduction_broadcast/expected.json +0 -25
- data/golden/roll/expected.json +0 -6
- data/golden/schema_imports_broadcasting_with_imports/expected.json +0 -4
- data/golden/schema_imports_complex_order_calc/expected.json +0 -12
- data/golden/schema_imports_composed_order/expected.json +0 -6
- data/golden/schema_imports_discount_with_tax/expected.json +0 -7
- data/golden/schema_imports_line_items/expected.json +0 -5
- data/golden/schema_imports_multiple/expected.json +0 -7
- data/golden/schema_imports_nested_expressions/expected.json +0 -5
- data/golden/schema_imports_nested_with_reductions/expected.json +0 -6
- data/golden/schema_imports_with_imports/expected.json +0 -4
- data/golden/shift/expected.json +0 -8
- data/golden/shift_2d/expected.json +0 -15
- data/golden/simple_math/expected.json +0 -1
- data/golden/streaming_basics/expected.json +0 -10
- data/golden/tuples/expected.json +0 -7
- data/golden/tuples_and_arrays/expected.json +0 -18
- data/golden/us_tax_2024/expected.json +0 -120
- data/lib/kumi/core/analyzer/passes/assemble_irv2_pass.rb +0 -130
- data/lib/kumi/core/analyzer/passes/declaration_validator.rb +0 -45
- data/lib/kumi/core/analyzer/passes/lower_to_irv2_pass.rb +0 -197
- data/lib/kumi/core/compiler/access_planner.rb +0 -258
- data/lib/kumi/core/functions/function_spec.rb +0 -17
- data/lib/kumi/core/functions/loader.rb +0 -63
- data/lib/kumi/core/functions/type_categories.rb +0 -44
- data/lib/kumi/core/functions/type_error_reporter.rb +0 -116
- data/lib/kumi/core/functions/type_rules.rb +0 -228
- data/lib/kumi/core/irv2/builder.rb +0 -48
- data/lib/kumi/core/irv2/declaration.rb +0 -28
- data/lib/kumi/core/irv2/module.rb +0 -108
- data/lib/kumi/core/irv2/value.rb +0 -28
- data/lib/kumi/core/types/validator.rb +0 -33
- data/lib/kumi/dev/codegen.rb +0 -194
- data/lib/kumi/dev/golden/generator.rb +0 -109
- data/lib/kumi/dev/golden/reporter.rb +0 -169
- data/lib/kumi/dev/golden/representation.rb +0 -40
- data/lib/kumi/dev/golden/result.rb +0 -106
- data/lib/kumi/dev/golden/runtime_test.rb +0 -131
- data/lib/kumi/dev/golden/suite.rb +0 -147
- data/lib/kumi/dev/golden/value_normalizer.rb +0 -78
- data/lib/kumi/dev/golden/verifier.rb +0 -76
- data/lib/kumi/dev/golden.rb +0 -82
- data/lib/kumi/dev/golden_schema_wrapper.rb +0 -116
- data/lib/kumi/dev/printer/irv2_formatter.rb +0 -163
- data/lib/kumi/kernel_registry.rb +0 -59
- data/lib/kumi/pack/builder.rb +0 -229
- data/lib/kumi/pack.rb +0 -15
- data/lib/kumi/registry_v2/loader.rb +0 -170
- data/lib/kumi/registry_v2.rb +0 -135
|
@@ -25,8 +25,7 @@ function lo:
|
|
|
25
25
|
%arr30 = array_init
|
|
26
26
|
%rates_el25 = loop_start (:v24) [axis=:rates, index=:rates_i26]
|
|
27
27
|
%v27 = load_field (:rates_el25) [field=:lo]
|
|
28
|
-
|
|
29
|
-
array_push (:arr30, :v28)
|
|
28
|
+
array_push (:arr30, :v27)
|
|
30
29
|
loop_end [axis=:rates]
|
|
31
30
|
array_push (:arr29, :arr30)
|
|
32
31
|
loop_end [axis=:statuses]
|
|
@@ -38,8 +37,7 @@ function hi:
|
|
|
38
37
|
%arr35 = array_init
|
|
39
38
|
%rates_el30 = loop_start (:v29) [axis=:rates, index=:rates_i31]
|
|
40
39
|
%v32 = load_field (:rates_el30) [field=:hi]
|
|
41
|
-
|
|
42
|
-
array_push (:arr35, :v33)
|
|
40
|
+
array_push (:arr35, :v32)
|
|
43
41
|
loop_end [axis=:rates]
|
|
44
42
|
array_push (:arr34, :arr35)
|
|
45
43
|
loop_end [axis=:statuses]
|
|
@@ -51,8 +49,7 @@ function rate:
|
|
|
51
49
|
%arr40 = array_init
|
|
52
50
|
%rates_el35 = loop_start (:v34) [axis=:rates, index=:rates_i36]
|
|
53
51
|
%v37 = load_field (:rates_el35) [field=:rate]
|
|
54
|
-
|
|
55
|
-
array_push (:arr40, :v38)
|
|
52
|
+
array_push (:arr40, :v37)
|
|
56
53
|
loop_end [axis=:rates]
|
|
57
54
|
array_push (:arr39, :arr40)
|
|
58
55
|
loop_end [axis=:statuses]
|
|
@@ -126,8 +123,7 @@ function fed_tax:
|
|
|
126
123
|
%v52 = kernel_call (:v94, :v114) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
127
124
|
acc_step (:acc115, :v52) [fn=:agg.sum, nil_init=false]
|
|
128
125
|
loop_end [axis=:rates]
|
|
129
|
-
|
|
130
|
-
array_push (:arr116, :v53)
|
|
126
|
+
array_push (:arr116, :acc115)
|
|
131
127
|
loop_end [axis=:statuses]
|
|
132
128
|
function in_br:
|
|
133
129
|
%v102 = load_input [key=:statuses]
|
|
@@ -180,12 +176,14 @@ function fed_marg:
|
|
|
180
176
|
%v67 = select (:v112, :v131, :v132) [statuses, rates] -> float
|
|
181
177
|
acc_step (:acc133, :v67) [fn=:agg.sum, nil_init=false]
|
|
182
178
|
loop_end [axis=:rates]
|
|
183
|
-
|
|
184
|
-
array_push (:arr134, :v68)
|
|
179
|
+
array_push (:arr134, :acc133)
|
|
185
180
|
loop_end [axis=:statuses]
|
|
186
181
|
function fed_eff:
|
|
187
182
|
%v124 = load_input [key=:statuses]
|
|
188
|
-
%
|
|
183
|
+
%v140 = load_input [key=:income]
|
|
184
|
+
%v141 = constant [value=1.0] [] -> float
|
|
185
|
+
%acc1 = kernel_call (:v140, :v141) [fn=:core.max] [] -> float
|
|
186
|
+
%arr146 = array_init
|
|
189
187
|
%statuses_el125 = loop_start (:v124) [axis=:statuses, index=:statuses_i126]
|
|
190
188
|
%v127 = load_input [key=:income]
|
|
191
189
|
%v128 = load_field (:statuses_el125) [field=:std]
|
|
@@ -209,16 +207,7 @@ function fed_eff:
|
|
|
209
207
|
%v122 = kernel_call (:v116, :v138) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
210
208
|
acc_step (:acc139, :v122) [fn=:agg.sum, nil_init=false]
|
|
211
209
|
loop_end [axis=:rates]
|
|
212
|
-
%
|
|
213
|
-
array_push (:arr144, :v123)
|
|
214
|
-
loop_end [axis=:statuses]
|
|
215
|
-
%v140 = load_input [key=:income]
|
|
216
|
-
%v141 = constant [value=1.0] [] -> float
|
|
217
|
-
%acc1 = kernel_call (:v140, :v141) [fn=:core.max] [] -> float
|
|
218
|
-
%arr146 = array_init
|
|
219
|
-
%statuses_el142 = loop_start (:v124) [axis=:statuses, index=:statuses_i143]
|
|
220
|
-
%v145 = index_read (:arr144, :statuses_i143)
|
|
221
|
-
%v75 = kernel_call (:v145, :acc1) [fn=:core.div] [statuses] -> float
|
|
210
|
+
%v75 = kernel_call (:acc139, :acc1) [fn=:core.div] [statuses] -> float
|
|
222
211
|
array_push (:arr146, :v75)
|
|
223
212
|
loop_end [axis=:statuses]
|
|
224
213
|
function ss_wage_base:
|
|
@@ -284,7 +273,9 @@ function fica_eff:
|
|
|
284
273
|
%v122 = kernel_call (:v138, :v141) [fn=:core.mul:numeric] [] -> float
|
|
285
274
|
%v123 = kernel_call (:v119, :v122) [fn=:core.add] [] -> float
|
|
286
275
|
%v142 = load_input [key=:statuses]
|
|
287
|
-
%
|
|
276
|
+
%v149 = constant [value=1.0] [] -> float
|
|
277
|
+
%acc2 = kernel_call (:v138, :v149) [fn=:core.max] [] -> float
|
|
278
|
+
%arr154 = array_init
|
|
288
279
|
%statuses_el143 = loop_start (:v142) [axis=:statuses, index=:statuses_i144]
|
|
289
280
|
%v145 = load_input [key=:income]
|
|
290
281
|
%v146 = load_field (:statuses_el143) [field=:addl_threshold]
|
|
@@ -294,19 +285,24 @@ function fica_eff:
|
|
|
294
285
|
%v148 = constant [value=0.009] [] -> float
|
|
295
286
|
%v136 = kernel_call (:acc1, :v148) [fn=:core.mul:numeric] [statuses] -> float
|
|
296
287
|
%v137 = kernel_call (:v123, :v136) [fn=:core.add] [statuses] -> float
|
|
297
|
-
|
|
298
|
-
loop_end [axis=:statuses]
|
|
299
|
-
%v149 = constant [value=1.0] [] -> float
|
|
300
|
-
%acc2 = kernel_call (:v138, :v149) [fn=:core.max] [] -> float
|
|
301
|
-
%arr154 = array_init
|
|
302
|
-
%statuses_el150 = loop_start (:v142) [axis=:statuses, index=:statuses_i151]
|
|
303
|
-
%v153 = index_read (:arr152, :statuses_i151)
|
|
304
|
-
%v113 = kernel_call (:v153, :acc2) [fn=:core.div] [statuses] -> float
|
|
288
|
+
%v113 = kernel_call (:v137, :acc2) [fn=:core.div] [statuses] -> float
|
|
305
289
|
array_push (:arr154, :v113)
|
|
306
290
|
loop_end [axis=:statuses]
|
|
307
291
|
function total_tax:
|
|
308
292
|
%v201 = load_input [key=:statuses]
|
|
309
|
-
%
|
|
293
|
+
%v217 = load_input [key=:income]
|
|
294
|
+
%v218 = constant [value=168600.0] [] -> float
|
|
295
|
+
%acc1 = kernel_call (:v217, :v218) [fn=:core.min] [] -> float
|
|
296
|
+
%v219 = constant [value=0.062] [] -> float
|
|
297
|
+
%v176 = kernel_call (:acc1, :v219) [fn=:core.mul:numeric] [] -> float
|
|
298
|
+
%v220 = constant [value=0.0145] [] -> float
|
|
299
|
+
%v179 = kernel_call (:v217, :v220) [fn=:core.mul:numeric] [] -> float
|
|
300
|
+
%v180 = kernel_call (:v176, :v179) [fn=:core.add] [] -> float
|
|
301
|
+
%v229 = load_input [key=:state_rate]
|
|
302
|
+
%v197 = kernel_call (:v217, :v229) [fn=:core.mul:numeric] [] -> float
|
|
303
|
+
%v234 = load_input [key=:local_rate]
|
|
304
|
+
%v200 = kernel_call (:v217, :v234) [fn=:core.mul:numeric] [] -> float
|
|
305
|
+
%arr239 = array_init
|
|
310
306
|
%statuses_el202 = loop_start (:v201) [axis=:statuses, index=:statuses_i203]
|
|
311
307
|
%v204 = load_input [key=:income]
|
|
312
308
|
%v205 = load_field (:statuses_el202) [field=:std]
|
|
@@ -330,50 +326,36 @@ function total_tax:
|
|
|
330
326
|
%v169 = kernel_call (:v163, :v215) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
331
327
|
acc_step (:acc216, :v169) [fn=:agg.sum, nil_init=false]
|
|
332
328
|
loop_end [axis=:rates]
|
|
333
|
-
%v170 = acc_load (:acc216) [] -> float
|
|
334
|
-
array_push (:arr227, :v170)
|
|
335
|
-
loop_end [axis=:statuses]
|
|
336
|
-
%v217 = load_input [key=:income]
|
|
337
|
-
%v218 = constant [value=168600.0] [] -> float
|
|
338
|
-
%acc1 = kernel_call (:v217, :v218) [fn=:core.min] [] -> float
|
|
339
|
-
%v219 = constant [value=0.062] [] -> float
|
|
340
|
-
%v176 = kernel_call (:acc1, :v219) [fn=:core.mul:numeric] [] -> float
|
|
341
|
-
%v220 = constant [value=0.0145] [] -> float
|
|
342
|
-
%v179 = kernel_call (:v217, :v220) [fn=:core.mul:numeric] [] -> float
|
|
343
|
-
%v180 = kernel_call (:v176, :v179) [fn=:core.add] [] -> float
|
|
344
|
-
%arr232 = array_init
|
|
345
|
-
%statuses_el221 = loop_start (:v201) [axis=:statuses, index=:statuses_i222]
|
|
346
329
|
%v223 = load_input [key=:income]
|
|
347
|
-
%v224 = load_field (:
|
|
330
|
+
%v224 = load_field (:statuses_el202) [field=:addl_threshold]
|
|
348
331
|
%v187 = kernel_call (:v223, :v224) [fn=:core.sub] [statuses] -> float
|
|
349
332
|
%v225 = constant [value=0] [] -> integer
|
|
350
333
|
%acc2 = kernel_call (:v187, :v225) [fn=:core.max] [statuses] -> float
|
|
351
334
|
%v226 = constant [value=0.009] [] -> float
|
|
352
335
|
%v193 = kernel_call (:acc2, :v226) [fn=:core.mul:numeric] [statuses] -> float
|
|
353
336
|
%v194 = kernel_call (:v180, :v193) [fn=:core.add] [statuses] -> float
|
|
354
|
-
%
|
|
355
|
-
%
|
|
356
|
-
|
|
357
|
-
loop_end [axis=:statuses]
|
|
358
|
-
%v229 = load_input [key=:state_rate]
|
|
359
|
-
%v197 = kernel_call (:v217, :v229) [fn=:core.mul:numeric] [] -> float
|
|
360
|
-
%arr237 = array_init
|
|
361
|
-
%statuses_el230 = loop_start (:v201) [axis=:statuses, index=:statuses_i231]
|
|
362
|
-
%v233 = index_read (:arr232, :statuses_i231)
|
|
363
|
-
%v119 = kernel_call (:v233, :v197) [fn=:core.add] [statuses] -> float
|
|
364
|
-
array_push (:arr237, :v119)
|
|
365
|
-
loop_end [axis=:statuses]
|
|
366
|
-
%v234 = load_input [key=:local_rate]
|
|
367
|
-
%v200 = kernel_call (:v217, :v234) [fn=:core.mul:numeric] [] -> float
|
|
368
|
-
%arr239 = array_init
|
|
369
|
-
%statuses_el235 = loop_start (:v201) [axis=:statuses, index=:statuses_i236]
|
|
370
|
-
%v238 = index_read (:arr237, :statuses_i236)
|
|
371
|
-
%v122 = kernel_call (:v238, :v200) [fn=:core.add] [statuses] -> float
|
|
337
|
+
%v116 = kernel_call (:acc216, :v194) [fn=:core.add] [statuses] -> float
|
|
338
|
+
%v119 = kernel_call (:v116, :v197) [fn=:core.add] [statuses] -> float
|
|
339
|
+
%v122 = kernel_call (:v119, :v200) [fn=:core.add] [statuses] -> float
|
|
372
340
|
array_push (:arr239, :v122)
|
|
373
341
|
loop_end [axis=:statuses]
|
|
374
342
|
function total_eff:
|
|
375
343
|
%v213 = load_input [key=:statuses]
|
|
376
|
-
%
|
|
344
|
+
%v229 = load_input [key=:income]
|
|
345
|
+
%v230 = constant [value=168600.0] [] -> float
|
|
346
|
+
%acc1 = kernel_call (:v229, :v230) [fn=:core.min] [] -> float
|
|
347
|
+
%v231 = constant [value=0.062] [] -> float
|
|
348
|
+
%v183 = kernel_call (:acc1, :v231) [fn=:core.mul:numeric] [] -> float
|
|
349
|
+
%v232 = constant [value=0.0145] [] -> float
|
|
350
|
+
%v186 = kernel_call (:v229, :v232) [fn=:core.mul:numeric] [] -> float
|
|
351
|
+
%v187 = kernel_call (:v183, :v186) [fn=:core.add] [] -> float
|
|
352
|
+
%v241 = load_input [key=:state_rate]
|
|
353
|
+
%v205 = kernel_call (:v229, :v241) [fn=:core.mul:numeric] [] -> float
|
|
354
|
+
%v246 = load_input [key=:local_rate]
|
|
355
|
+
%v210 = kernel_call (:v229, :v246) [fn=:core.mul:numeric] [] -> float
|
|
356
|
+
%v251 = constant [value=1.0] [] -> float
|
|
357
|
+
%acc3 = kernel_call (:v229, :v251) [fn=:core.max] [] -> float
|
|
358
|
+
%arr256 = array_init
|
|
377
359
|
%statuses_el214 = loop_start (:v213) [axis=:statuses, index=:statuses_i215]
|
|
378
360
|
%v216 = load_input [key=:income]
|
|
379
361
|
%v217 = load_field (:statuses_el214) [field=:std]
|
|
@@ -397,58 +379,35 @@ function total_eff:
|
|
|
397
379
|
%v176 = kernel_call (:v170, :v227) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
398
380
|
acc_step (:acc228, :v176) [fn=:agg.sum, nil_init=false]
|
|
399
381
|
loop_end [axis=:rates]
|
|
400
|
-
%v177 = acc_load (:acc228) [] -> float
|
|
401
|
-
array_push (:arr239, :v177)
|
|
402
|
-
loop_end [axis=:statuses]
|
|
403
|
-
%v229 = load_input [key=:income]
|
|
404
|
-
%v230 = constant [value=168600.0] [] -> float
|
|
405
|
-
%acc1 = kernel_call (:v229, :v230) [fn=:core.min] [] -> float
|
|
406
|
-
%v231 = constant [value=0.062] [] -> float
|
|
407
|
-
%v183 = kernel_call (:acc1, :v231) [fn=:core.mul:numeric] [] -> float
|
|
408
|
-
%v232 = constant [value=0.0145] [] -> float
|
|
409
|
-
%v186 = kernel_call (:v229, :v232) [fn=:core.mul:numeric] [] -> float
|
|
410
|
-
%v187 = kernel_call (:v183, :v186) [fn=:core.add] [] -> float
|
|
411
|
-
%arr244 = array_init
|
|
412
|
-
%statuses_el233 = loop_start (:v213) [axis=:statuses, index=:statuses_i234]
|
|
413
382
|
%v235 = load_input [key=:income]
|
|
414
|
-
%v236 = load_field (:
|
|
383
|
+
%v236 = load_field (:statuses_el214) [field=:addl_threshold]
|
|
415
384
|
%v194 = kernel_call (:v235, :v236) [fn=:core.sub] [statuses] -> float
|
|
416
385
|
%v237 = constant [value=0] [] -> integer
|
|
417
386
|
%acc2 = kernel_call (:v194, :v237) [fn=:core.max] [statuses] -> float
|
|
418
387
|
%v238 = constant [value=0.009] [] -> float
|
|
419
388
|
%v200 = kernel_call (:acc2, :v238) [fn=:core.mul:numeric] [statuses] -> float
|
|
420
389
|
%v201 = kernel_call (:v187, :v200) [fn=:core.add] [statuses] -> float
|
|
421
|
-
%
|
|
422
|
-
%
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
%v241 = load_input [key=:state_rate]
|
|
426
|
-
%v205 = kernel_call (:v229, :v241) [fn=:core.mul:numeric] [] -> float
|
|
427
|
-
%arr249 = array_init
|
|
428
|
-
%statuses_el242 = loop_start (:v213) [axis=:statuses, index=:statuses_i243]
|
|
429
|
-
%v245 = index_read (:arr244, :statuses_i243)
|
|
430
|
-
%v207 = kernel_call (:v245, :v205) [fn=:core.add] [statuses] -> float
|
|
431
|
-
array_push (:arr249, :v207)
|
|
432
|
-
loop_end [axis=:statuses]
|
|
433
|
-
%v246 = load_input [key=:local_rate]
|
|
434
|
-
%v210 = kernel_call (:v229, :v246) [fn=:core.mul:numeric] [] -> float
|
|
435
|
-
%arr254 = array_init
|
|
436
|
-
%statuses_el247 = loop_start (:v213) [axis=:statuses, index=:statuses_i248]
|
|
437
|
-
%v250 = index_read (:arr249, :statuses_i248)
|
|
438
|
-
%v212 = kernel_call (:v250, :v210) [fn=:core.add] [statuses] -> float
|
|
439
|
-
array_push (:arr254, :v212)
|
|
440
|
-
loop_end [axis=:statuses]
|
|
441
|
-
%v251 = constant [value=1.0] [] -> float
|
|
442
|
-
%acc3 = kernel_call (:v229, :v251) [fn=:core.max] [] -> float
|
|
443
|
-
%arr256 = array_init
|
|
444
|
-
%statuses_el252 = loop_start (:v213) [axis=:statuses, index=:statuses_i253]
|
|
445
|
-
%v255 = index_read (:arr254, :statuses_i253)
|
|
446
|
-
%v129 = kernel_call (:v255, :acc3) [fn=:core.div] [statuses] -> float
|
|
390
|
+
%v202 = kernel_call (:acc228, :v201) [fn=:core.add] [statuses] -> float
|
|
391
|
+
%v207 = kernel_call (:v202, :v205) [fn=:core.add] [statuses] -> float
|
|
392
|
+
%v212 = kernel_call (:v207, :v210) [fn=:core.add] [statuses] -> float
|
|
393
|
+
%v129 = kernel_call (:v212, :acc3) [fn=:core.div] [statuses] -> float
|
|
447
394
|
array_push (:arr256, :v129)
|
|
448
395
|
loop_end [axis=:statuses]
|
|
449
396
|
function after_tax:
|
|
450
397
|
%v217 = load_input [key=:statuses]
|
|
451
|
-
%
|
|
398
|
+
%v233 = load_input [key=:income]
|
|
399
|
+
%v234 = constant [value=168600.0] [] -> float
|
|
400
|
+
%acc1 = kernel_call (:v233, :v234) [fn=:core.min] [] -> float
|
|
401
|
+
%v235 = constant [value=0.062] [] -> float
|
|
402
|
+
%v187 = kernel_call (:acc1, :v235) [fn=:core.mul:numeric] [] -> float
|
|
403
|
+
%v236 = constant [value=0.0145] [] -> float
|
|
404
|
+
%v190 = kernel_call (:v233, :v236) [fn=:core.mul:numeric] [] -> float
|
|
405
|
+
%v191 = kernel_call (:v187, :v190) [fn=:core.add] [] -> float
|
|
406
|
+
%v245 = load_input [key=:state_rate]
|
|
407
|
+
%v209 = kernel_call (:v233, :v245) [fn=:core.mul:numeric] [] -> float
|
|
408
|
+
%v250 = load_input [key=:local_rate]
|
|
409
|
+
%v214 = kernel_call (:v233, :v250) [fn=:core.mul:numeric] [] -> float
|
|
410
|
+
%arr256 = array_init
|
|
452
411
|
%statuses_el218 = loop_start (:v217) [axis=:statuses, index=:statuses_i219]
|
|
453
412
|
%v220 = load_input [key=:income]
|
|
454
413
|
%v221 = load_field (:statuses_el218) [field=:std]
|
|
@@ -472,52 +431,36 @@ function after_tax:
|
|
|
472
431
|
%v180 = kernel_call (:v174, :v231) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
473
432
|
acc_step (:acc232, :v180) [fn=:agg.sum, nil_init=false]
|
|
474
433
|
loop_end [axis=:rates]
|
|
475
|
-
%v181 = acc_load (:acc232) [] -> float
|
|
476
|
-
array_push (:arr243, :v181)
|
|
477
|
-
loop_end [axis=:statuses]
|
|
478
|
-
%v233 = load_input [key=:income]
|
|
479
|
-
%v234 = constant [value=168600.0] [] -> float
|
|
480
|
-
%acc1 = kernel_call (:v233, :v234) [fn=:core.min] [] -> float
|
|
481
|
-
%v235 = constant [value=0.062] [] -> float
|
|
482
|
-
%v187 = kernel_call (:acc1, :v235) [fn=:core.mul:numeric] [] -> float
|
|
483
|
-
%v236 = constant [value=0.0145] [] -> float
|
|
484
|
-
%v190 = kernel_call (:v233, :v236) [fn=:core.mul:numeric] [] -> float
|
|
485
|
-
%v191 = kernel_call (:v187, :v190) [fn=:core.add] [] -> float
|
|
486
|
-
%arr248 = array_init
|
|
487
|
-
%statuses_el237 = loop_start (:v217) [axis=:statuses, index=:statuses_i238]
|
|
488
434
|
%v239 = load_input [key=:income]
|
|
489
|
-
%v240 = load_field (:
|
|
435
|
+
%v240 = load_field (:statuses_el218) [field=:addl_threshold]
|
|
490
436
|
%v198 = kernel_call (:v239, :v240) [fn=:core.sub] [statuses] -> float
|
|
491
437
|
%v241 = constant [value=0] [] -> integer
|
|
492
438
|
%acc2 = kernel_call (:v198, :v241) [fn=:core.max] [statuses] -> float
|
|
493
439
|
%v242 = constant [value=0.009] [] -> float
|
|
494
440
|
%v204 = kernel_call (:acc2, :v242) [fn=:core.mul:numeric] [statuses] -> float
|
|
495
441
|
%v205 = kernel_call (:v191, :v204) [fn=:core.add] [statuses] -> float
|
|
496
|
-
%
|
|
497
|
-
%
|
|
498
|
-
|
|
499
|
-
loop_end [axis=:statuses]
|
|
500
|
-
%v245 = load_input [key=:state_rate]
|
|
501
|
-
%v209 = kernel_call (:v233, :v245) [fn=:core.mul:numeric] [] -> float
|
|
502
|
-
%arr253 = array_init
|
|
503
|
-
%statuses_el246 = loop_start (:v217) [axis=:statuses, index=:statuses_i247]
|
|
504
|
-
%v249 = index_read (:arr248, :statuses_i247)
|
|
505
|
-
%v211 = kernel_call (:v249, :v209) [fn=:core.add] [statuses] -> float
|
|
506
|
-
array_push (:arr253, :v211)
|
|
507
|
-
loop_end [axis=:statuses]
|
|
508
|
-
%v250 = load_input [key=:local_rate]
|
|
509
|
-
%v214 = kernel_call (:v233, :v250) [fn=:core.mul:numeric] [] -> float
|
|
510
|
-
%arr256 = array_init
|
|
511
|
-
%statuses_el251 = loop_start (:v217) [axis=:statuses, index=:statuses_i252]
|
|
512
|
-
%v254 = index_read (:arr253, :statuses_i252)
|
|
513
|
-
%v216 = kernel_call (:v254, :v214) [fn=:core.add] [statuses] -> float
|
|
442
|
+
%v206 = kernel_call (:acc232, :v205) [fn=:core.add] [statuses] -> float
|
|
443
|
+
%v211 = kernel_call (:v206, :v209) [fn=:core.add] [statuses] -> float
|
|
444
|
+
%v216 = kernel_call (:v211, :v214) [fn=:core.add] [statuses] -> float
|
|
514
445
|
%v255 = load_input [key=:income]
|
|
515
446
|
%v133 = kernel_call (:v255, :v216) [fn=:core.sub] [statuses] -> float
|
|
516
447
|
array_push (:arr256, :v133)
|
|
517
448
|
loop_end [axis=:statuses]
|
|
518
449
|
function take_home:
|
|
519
450
|
%v224 = load_input [key=:statuses]
|
|
520
|
-
%
|
|
451
|
+
%v240 = load_input [key=:income]
|
|
452
|
+
%v241 = constant [value=168600.0] [] -> float
|
|
453
|
+
%acc1 = kernel_call (:v240, :v241) [fn=:core.min] [] -> float
|
|
454
|
+
%v242 = constant [value=0.062] [] -> float
|
|
455
|
+
%v193 = kernel_call (:acc1, :v242) [fn=:core.mul:numeric] [] -> float
|
|
456
|
+
%v243 = constant [value=0.0145] [] -> float
|
|
457
|
+
%v196 = kernel_call (:v240, :v243) [fn=:core.mul:numeric] [] -> float
|
|
458
|
+
%v197 = kernel_call (:v193, :v196) [fn=:core.add] [] -> float
|
|
459
|
+
%v252 = load_input [key=:state_rate]
|
|
460
|
+
%v215 = kernel_call (:v240, :v252) [fn=:core.mul:numeric] [] -> float
|
|
461
|
+
%v257 = load_input [key=:local_rate]
|
|
462
|
+
%v220 = kernel_call (:v240, :v257) [fn=:core.mul:numeric] [] -> float
|
|
463
|
+
%arr264 = array_init
|
|
521
464
|
%statuses_el225 = loop_start (:v224) [axis=:statuses, index=:statuses_i226]
|
|
522
465
|
%v227 = load_input [key=:income]
|
|
523
466
|
%v228 = load_field (:statuses_el225) [field=:std]
|
|
@@ -541,45 +484,17 @@ function take_home:
|
|
|
541
484
|
%v186 = kernel_call (:v180, :v238) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
542
485
|
acc_step (:acc239, :v186) [fn=:agg.sum, nil_init=false]
|
|
543
486
|
loop_end [axis=:rates]
|
|
544
|
-
%v187 = acc_load (:acc239) [] -> float
|
|
545
|
-
array_push (:arr250, :v187)
|
|
546
|
-
loop_end [axis=:statuses]
|
|
547
|
-
%v240 = load_input [key=:income]
|
|
548
|
-
%v241 = constant [value=168600.0] [] -> float
|
|
549
|
-
%acc1 = kernel_call (:v240, :v241) [fn=:core.min] [] -> float
|
|
550
|
-
%v242 = constant [value=0.062] [] -> float
|
|
551
|
-
%v193 = kernel_call (:acc1, :v242) [fn=:core.mul:numeric] [] -> float
|
|
552
|
-
%v243 = constant [value=0.0145] [] -> float
|
|
553
|
-
%v196 = kernel_call (:v240, :v243) [fn=:core.mul:numeric] [] -> float
|
|
554
|
-
%v197 = kernel_call (:v193, :v196) [fn=:core.add] [] -> float
|
|
555
|
-
%arr255 = array_init
|
|
556
|
-
%statuses_el244 = loop_start (:v224) [axis=:statuses, index=:statuses_i245]
|
|
557
487
|
%v246 = load_input [key=:income]
|
|
558
|
-
%v247 = load_field (:
|
|
488
|
+
%v247 = load_field (:statuses_el225) [field=:addl_threshold]
|
|
559
489
|
%v204 = kernel_call (:v246, :v247) [fn=:core.sub] [statuses] -> float
|
|
560
490
|
%v248 = constant [value=0] [] -> integer
|
|
561
491
|
%acc2 = kernel_call (:v204, :v248) [fn=:core.max] [statuses] -> float
|
|
562
492
|
%v249 = constant [value=0.009] [] -> float
|
|
563
493
|
%v210 = kernel_call (:acc2, :v249) [fn=:core.mul:numeric] [statuses] -> float
|
|
564
494
|
%v211 = kernel_call (:v197, :v210) [fn=:core.add] [statuses] -> float
|
|
565
|
-
%
|
|
566
|
-
%
|
|
567
|
-
|
|
568
|
-
loop_end [axis=:statuses]
|
|
569
|
-
%v252 = load_input [key=:state_rate]
|
|
570
|
-
%v215 = kernel_call (:v240, :v252) [fn=:core.mul:numeric] [] -> float
|
|
571
|
-
%arr260 = array_init
|
|
572
|
-
%statuses_el253 = loop_start (:v224) [axis=:statuses, index=:statuses_i254]
|
|
573
|
-
%v256 = index_read (:arr255, :statuses_i254)
|
|
574
|
-
%v217 = kernel_call (:v256, :v215) [fn=:core.add] [statuses] -> float
|
|
575
|
-
array_push (:arr260, :v217)
|
|
576
|
-
loop_end [axis=:statuses]
|
|
577
|
-
%v257 = load_input [key=:local_rate]
|
|
578
|
-
%v220 = kernel_call (:v240, :v257) [fn=:core.mul:numeric] [] -> float
|
|
579
|
-
%arr264 = array_init
|
|
580
|
-
%statuses_el258 = loop_start (:v224) [axis=:statuses, index=:statuses_i259]
|
|
581
|
-
%v261 = index_read (:arr260, :statuses_i259)
|
|
582
|
-
%v222 = kernel_call (:v261, :v220) [fn=:core.add] [statuses] -> float
|
|
495
|
+
%v212 = kernel_call (:acc239, :v211) [fn=:core.add] [statuses] -> float
|
|
496
|
+
%v217 = kernel_call (:v212, :v215) [fn=:core.add] [statuses] -> float
|
|
497
|
+
%v222 = kernel_call (:v217, :v220) [fn=:core.add] [statuses] -> float
|
|
583
498
|
%v262 = load_input [key=:income]
|
|
584
499
|
%v223 = kernel_call (:v262, :v222) [fn=:core.sub] [statuses] -> float
|
|
585
500
|
%v263 = load_input [key=:retirement_contrib]
|
|
@@ -588,8 +503,23 @@ function take_home:
|
|
|
588
503
|
loop_end [axis=:statuses]
|
|
589
504
|
function summary:
|
|
590
505
|
%v725 = load_input [key=:statuses]
|
|
591
|
-
%
|
|
592
|
-
%
|
|
506
|
+
%v742 = load_input [key=:income]
|
|
507
|
+
%v743 = constant [value=1.0] [] -> float
|
|
508
|
+
%acc3 = kernel_call (:v742, :v743) [fn=:core.max] [] -> float
|
|
509
|
+
%v750 = constant [value=168600.0] [] -> float
|
|
510
|
+
%acc5 = kernel_call (:v742, :v750) [fn=:core.min] [] -> float
|
|
511
|
+
%v751 = constant [value=0.062] [] -> float
|
|
512
|
+
%v323 = kernel_call (:acc5, :v751) [fn=:core.mul:numeric] [] -> float
|
|
513
|
+
%v752 = constant [value=0.0145] [] -> float
|
|
514
|
+
%v326 = kernel_call (:v742, :v752) [fn=:core.mul:numeric] [] -> float
|
|
515
|
+
%v327 = kernel_call (:v323, :v326) [fn=:core.add] [] -> float
|
|
516
|
+
%v759 = load_input [key=:state_rate]
|
|
517
|
+
%v374 = kernel_call (:v742, :v759) [fn=:core.mul:numeric] [] -> float
|
|
518
|
+
%v151 = make_object (:v759, :v759, :v374) [keys=[:marginal, :effective, :tax]] [] -> hash
|
|
519
|
+
%v760 = load_input [key=:local_rate]
|
|
520
|
+
%v377 = kernel_call (:v742, :v760) [fn=:core.mul:numeric] [] -> float
|
|
521
|
+
%v155 = make_object (:v760, :v760, :v377) [keys=[:marginal, :effective, :tax]] [] -> hash
|
|
522
|
+
%arr773 = array_init
|
|
593
523
|
%statuses_el726 = loop_start (:v725) [axis=:statuses, index=:statuses_i727]
|
|
594
524
|
%v728 = load_input [key=:income]
|
|
595
525
|
%v729 = load_field (:statuses_el726) [field=:std]
|
|
@@ -619,56 +549,19 @@ function summary:
|
|
|
619
549
|
%v262 = kernel_call (:v256, :v738) [fn=:core.mul:numeric] [statuses, rates] -> float
|
|
620
550
|
acc_step (:acc741, :v262) [fn=:agg.sum, nil_init=false]
|
|
621
551
|
loop_end [axis=:rates]
|
|
622
|
-
%
|
|
623
|
-
|
|
624
|
-
%v263 = acc_load (:acc741) [] -> float
|
|
625
|
-
array_push (:arr746, :v263)
|
|
626
|
-
loop_end [axis=:statuses]
|
|
627
|
-
%v742 = load_input [key=:income]
|
|
628
|
-
%v743 = constant [value=1.0] [] -> float
|
|
629
|
-
%acc3 = kernel_call (:v742, :v743) [fn=:core.max] [] -> float
|
|
630
|
-
%arr769 = array_init
|
|
631
|
-
%statuses_el744 = loop_start (:v725) [axis=:statuses, index=:statuses_i745]
|
|
632
|
-
%v747 = index_read (:arr746, :statuses_i745)
|
|
633
|
-
%v269 = kernel_call (:v747, :acc3) [fn=:core.div] [statuses] -> float
|
|
634
|
-
%v749 = index_read (:arr748, :statuses_i745)
|
|
635
|
-
%v144 = make_object (:v749, :v269, :v747) [keys=[:marginal, :effective, :tax]] [statuses] -> hash
|
|
636
|
-
array_push (:arr769, :v144)
|
|
637
|
-
loop_end [axis=:statuses]
|
|
638
|
-
%v750 = constant [value=168600.0] [] -> float
|
|
639
|
-
%acc5 = kernel_call (:v742, :v750) [fn=:core.min] [] -> float
|
|
640
|
-
%v751 = constant [value=0.062] [] -> float
|
|
641
|
-
%v323 = kernel_call (:acc5, :v751) [fn=:core.mul:numeric] [] -> float
|
|
642
|
-
%v752 = constant [value=0.0145] [] -> float
|
|
643
|
-
%v326 = kernel_call (:v742, :v752) [fn=:core.mul:numeric] [] -> float
|
|
644
|
-
%v327 = kernel_call (:v323, :v326) [fn=:core.add] [] -> float
|
|
645
|
-
%arr764 = array_init
|
|
646
|
-
%arr771 = array_init
|
|
647
|
-
%statuses_el753 = loop_start (:v725) [axis=:statuses, index=:statuses_i754]
|
|
552
|
+
%v269 = kernel_call (:acc741, :acc3) [fn=:core.div] [statuses] -> float
|
|
553
|
+
%v144 = make_object (:acc740, :v269, :acc741) [keys=[:marginal, :effective, :tax]] [statuses] -> hash
|
|
648
554
|
%v755 = load_input [key=:income]
|
|
649
|
-
%v756 = load_field (:
|
|
555
|
+
%v756 = load_field (:statuses_el726) [field=:addl_threshold]
|
|
650
556
|
%v334 = kernel_call (:v755, :v756) [fn=:core.sub] [statuses] -> float
|
|
651
557
|
%v757 = constant [value=0] [] -> integer
|
|
652
558
|
%acc6 = kernel_call (:v334, :v757) [fn=:core.max] [statuses] -> float
|
|
653
559
|
%v758 = constant [value=0.009] [] -> float
|
|
654
560
|
%v340 = kernel_call (:acc6, :v758) [fn=:core.mul:numeric] [statuses] -> float
|
|
655
561
|
%v341 = kernel_call (:v327, :v340) [fn=:core.add] [statuses] -> float
|
|
656
|
-
array_push (:arr764, :v341)
|
|
657
562
|
%v347 = kernel_call (:v341, :acc3) [fn=:core.div] [statuses] -> float
|
|
658
563
|
%v147 = make_object (:v347, :v341) [keys=[:effective, :tax]] [statuses] -> hash
|
|
659
|
-
|
|
660
|
-
loop_end [axis=:statuses]
|
|
661
|
-
%v759 = load_input [key=:state_rate]
|
|
662
|
-
%v374 = kernel_call (:v742, :v759) [fn=:core.mul:numeric] [] -> float
|
|
663
|
-
%v151 = make_object (:v759, :v759, :v374) [keys=[:marginal, :effective, :tax]] [] -> hash
|
|
664
|
-
%v760 = load_input [key=:local_rate]
|
|
665
|
-
%v377 = kernel_call (:v742, :v760) [fn=:core.mul:numeric] [] -> float
|
|
666
|
-
%v155 = make_object (:v760, :v760, :v377) [keys=[:marginal, :effective, :tax]] [] -> hash
|
|
667
|
-
%arr773 = array_init
|
|
668
|
-
%statuses_el761 = loop_start (:v725) [axis=:statuses, index=:statuses_i762]
|
|
669
|
-
%v763 = index_read (:arr746, :statuses_i762)
|
|
670
|
-
%v765 = index_read (:arr764, :statuses_i762)
|
|
671
|
-
%v450 = kernel_call (:v763, :v765) [fn=:core.add] [statuses] -> float
|
|
564
|
+
%v450 = kernel_call (:acc741, :v341) [fn=:core.add] [statuses] -> float
|
|
672
565
|
%v455 = kernel_call (:v450, :v374) [fn=:core.add] [statuses] -> float
|
|
673
566
|
%v460 = kernel_call (:v455, :v377) [fn=:core.add] [statuses] -> float
|
|
674
567
|
%v466 = kernel_call (:v460, :acc3) [fn=:core.div] [statuses] -> float
|
|
@@ -677,9 +570,7 @@ function summary:
|
|
|
677
570
|
%v635 = kernel_call (:v766, :v460) [fn=:core.sub] [statuses] -> float
|
|
678
571
|
%v767 = load_input [key=:retirement_contrib]
|
|
679
572
|
%v724 = kernel_call (:v635, :v767) [fn=:core.sub] [statuses] -> float
|
|
680
|
-
%v768 = load_field (:
|
|
681
|
-
%
|
|
682
|
-
%v772 = index_read (:arr771, :statuses_i762)
|
|
683
|
-
%v162 = make_object (:v768, :v770, :v772, :v151, :v155, :v158, :v635, :v767, :v724) [keys=[:filing_status, :federal, :fica, :state, :local, :total, :after_tax, :retirement_contrib, :take_home]] [statuses] -> hash
|
|
573
|
+
%v768 = load_field (:statuses_el726) [field=:name]
|
|
574
|
+
%v162 = make_object (:v768, :v144, :v147, :v151, :v155, :v158, :v635, :v767, :v724) [keys=[:filing_status, :federal, :fica, :state, :local, :total, :after_tax, :retirement_contrib, :take_home]] [statuses] -> hash
|
|
684
575
|
array_push (:arr773, :v162)
|
|
685
576
|
loop_end [axis=:statuses]
|