kumi 0.0.24 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/golden/array_element/expected/schema_ruby.rb +1 -1
  4. data/golden/array_index/expected/schema_ruby.rb +1 -1
  5. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  6. data/golden/cascade_logic/expected/lir_02_inlined.txt +8 -8
  7. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  8. data/golden/chained_fusion/expected/lir_02_inlined.txt +36 -36
  9. data/golden/chained_fusion/expected/lir_03_cse.txt +23 -23
  10. data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +25 -25
  11. data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +23 -23
  12. data/golden/chained_fusion/expected/lir_06_const_prop.txt +23 -23
  13. data/golden/chained_fusion/expected/schema_javascript.mjs +23 -23
  14. data/golden/chained_fusion/expected/schema_ruby.rb +28 -28
  15. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  16. data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +18 -18
  17. data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +17 -17
  18. data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +17 -17
  19. data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +17 -17
  20. data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +17 -17
  21. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +13 -13
  22. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +18 -18
  23. data/golden/game_of_life/expected/lir_02_inlined.txt +1291 -1291
  24. data/golden/game_of_life/expected/lir_03_cse.txt +396 -396
  25. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +396 -396
  26. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +396 -396
  27. data/golden/game_of_life/expected/lir_06_const_prop.txt +396 -396
  28. data/golden/game_of_life/expected/schema_javascript.mjs +85 -85
  29. data/golden/game_of_life/expected/schema_ruby.rb +86 -86
  30. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  31. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  32. data/golden/hierarchical_complex/expected/lir_02_inlined.txt +15 -15
  33. data/golden/hierarchical_complex/expected/lir_03_cse.txt +1 -1
  34. data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +1 -1
  35. data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +1 -1
  36. data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +1 -1
  37. data/golden/hierarchical_complex/expected/schema_javascript.mjs +1 -1
  38. data/golden/hierarchical_complex/expected/schema_ruby.rb +2 -2
  39. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
  40. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  41. data/golden/interleaved_fusion/expected/lir_02_inlined.txt +35 -35
  42. data/golden/interleaved_fusion/expected/lir_03_cse.txt +26 -26
  43. data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +27 -26
  44. data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +26 -26
  45. data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +26 -26
  46. data/golden/interleaved_fusion/expected/schema_javascript.mjs +23 -23
  47. data/golden/interleaved_fusion/expected/schema_ruby.rb +29 -29
  48. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  49. data/golden/loop_fusion/expected/lir_02_inlined.txt +17 -17
  50. data/golden/loop_fusion/expected/lir_03_cse.txt +14 -14
  51. data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +14 -14
  52. data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +14 -14
  53. data/golden/loop_fusion/expected/lir_06_const_prop.txt +14 -14
  54. data/golden/loop_fusion/expected/schema_javascript.mjs +12 -12
  55. data/golden/loop_fusion/expected/schema_ruby.rb +16 -16
  56. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  57. data/golden/mixed_dimensions/expected/lir_02_inlined.txt +5 -5
  58. data/golden/mixed_dimensions/expected/lir_03_cse.txt +5 -5
  59. data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +5 -5
  60. data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +5 -5
  61. data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +5 -5
  62. data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -3
  63. data/golden/mixed_dimensions/expected/schema_ruby.rb +6 -6
  64. data/golden/multirank_hoisting/expected/lir_02_inlined.txt +48 -48
  65. data/golden/multirank_hoisting/expected/lir_03_cse.txt +35 -35
  66. data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +35 -35
  67. data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +35 -35
  68. data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +35 -35
  69. data/golden/multirank_hoisting/expected/schema_javascript.mjs +34 -34
  70. data/golden/multirank_hoisting/expected/schema_ruby.rb +36 -36
  71. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  72. data/golden/reduction_broadcast/expected/lir_02_inlined.txt +30 -30
  73. data/golden/reduction_broadcast/expected/lir_03_cse.txt +22 -22
  74. data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +22 -22
  75. data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +22 -22
  76. data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +22 -22
  77. data/golden/reduction_broadcast/expected/schema_javascript.mjs +18 -18
  78. data/golden/reduction_broadcast/expected/schema_ruby.rb +23 -23
  79. data/golden/roll/expected/schema_ruby.rb +1 -1
  80. data/golden/shift/expected/schema_ruby.rb +1 -1
  81. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  82. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  83. data/golden/streaming_basics/expected/lir_02_inlined.txt +25 -25
  84. data/golden/streaming_basics/expected/lir_03_cse.txt +13 -13
  85. data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +13 -13
  86. data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +13 -13
  87. data/golden/streaming_basics/expected/lir_06_const_prop.txt +13 -13
  88. data/golden/streaming_basics/expected/schema_javascript.mjs +13 -13
  89. data/golden/streaming_basics/expected/schema_ruby.rb +14 -14
  90. data/golden/tuples/expected/schema_ruby.rb +1 -1
  91. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +16 -16
  92. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +13 -13
  93. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +13 -13
  94. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +13 -13
  95. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +13 -13
  96. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +13 -13
  97. data/golden/tuples_and_arrays/expected/schema_ruby.rb +14 -14
  98. data/golden/us_tax_2024/expected/lir_02_inlined.txt +524 -524
  99. data/golden/us_tax_2024/expected/lir_03_cse.txt +283 -283
  100. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +283 -283
  101. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +320 -260
  102. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +320 -260
  103. data/golden/us_tax_2024/expected/schema_javascript.mjs +24 -24
  104. data/golden/us_tax_2024/expected/schema_ruby.rb +25 -25
  105. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  106. data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +118 -74
  107. data/lib/kumi/version.rb +1 -1
  108. metadata +1 -1
@@ -70,13 +70,20 @@
70
70
  %t45 = load_input "fed" :: array
71
71
  %t46 = load_field t45["single"] :: any
72
72
  %t47 = load_field t46["rates"] :: any
73
+ %t636 = load_input "income" :: float
74
+ %t637 = load_input "fed" :: any
75
+ %t638 = load_field t637["single"] :: any
76
+ %t639 = load_field t638["std"] :: float
77
+ %t640 = call core.sub(%t636, %t639) :: float
73
78
  %t641 = const 0 :: integer
79
+ %t642 = make_tuple(%t640, %t641) :: tuple<float, integer>
80
+ %t643 = fold %t642 fn="agg.max" :: float
74
81
  %t652 = const -1 :: integer
75
82
  %t654 = const 100000000000.0 :: float
76
83
  loop rates id=L5 in %t47 as el=%rates_el_48, idx=%rates_i_49
77
84
  %t647 = load_field rates_el_48["lo"] :: float
78
85
  %t660 = load_field rates_el_48["hi"] :: float
79
- %t52 = call core.sub(%t50, %t647) :: float
86
+ %t52 = call core.sub(%t643, %t647) :: float
80
87
  %t653 = call core.eq(%t660, %t652) :: boolean
81
88
  %t656 = select %t653, %t654, %t660 :: float
82
89
  %t56 = call core.sub(%t656, %t647) :: float
@@ -85,28 +92,28 @@
85
92
  end_loop
86
93
  )
87
94
  (Declaration fed_tax_single
88
- %acc_58 = decl_acc :: float
89
- %t59 = load_input "fed" :: array
90
- %t60 = load_field t59["single"] :: any
91
- %t61 = load_field t60["rates"] :: any
92
95
  %t680 = load_input "income" :: float
93
96
  %t681 = load_input "fed" :: any
94
- %t685 = const 0 :: integer
95
- %t696 = const -1 :: integer
96
- %t698 = const 100000000000.0 :: float
97
97
  %t682 = load_field t681["single"] :: any
98
98
  %t683 = load_field t682["std"] :: float
99
99
  %t684 = call core.sub(%t680, %t683) :: float
100
+ %t685 = const 0 :: integer
100
101
  %t686 = make_tuple(%t684, %t685) :: tuple<float, integer>
101
102
  %t687 = fold %t686 fn="agg.max" :: float
103
+ %acc_58 = decl_acc :: float
104
+ %t59 = load_input "fed" :: array
105
+ %t60 = load_field t59["single"] :: any
106
+ %t61 = load_field t60["rates"] :: any
107
+ %t696 = const -1 :: integer
108
+ %t698 = const 100000000000.0 :: float
102
109
  loop rates id=L6 in %t61 as el=%rates_el_62, idx=%rates_i_63
103
110
  %t691 = load_field rates_el_62["lo"] :: float
104
111
  %t704 = load_field rates_el_62["hi"] :: float
105
112
  %t716 = load_field rates_el_62["rate"] :: float
113
+ %t674 = call core.sub(%t687, %t691) :: float
106
114
  %t697 = call core.eq(%t704, %t696) :: boolean
107
115
  %t700 = select %t697, %t698, %t704 :: float
108
116
  %t678 = call core.sub(%t700, %t691) :: float
109
- %t674 = call core.sub(%t687, %t691) :: float
110
117
  %t679 = call core.clamp(%t674, %t685, %t678) :: float
111
118
  %t66 = call core.mul(%t679, %t716) :: float
112
119
  %acc_58 = acc_add agg.sum(%acc_58, %t66) :: float
@@ -118,41 +125,49 @@
118
125
  %t68 = load_input "fed" :: array
119
126
  %t69 = load_field t68["single"] :: any
120
127
  %t70 = load_field t69["rates"] :: any
128
+ %t717 = load_input "income" :: float
129
+ %t718 = load_input "fed" :: any
130
+ %t719 = load_field t718["single"] :: any
131
+ %t720 = load_field t719["std"] :: float
132
+ %t721 = call core.sub(%t717, %t720) :: float
133
+ %t722 = const 0 :: integer
134
+ %t723 = make_tuple(%t721, %t722) :: tuple<float, integer>
135
+ %t724 = fold %t723 fn="agg.max" :: float
121
136
  %t741 = const -1 :: integer
122
137
  %t743 = const 100000000000.0 :: float
123
138
  loop rates id=L7 in %t70 as el=%rates_el_71, idx=%rates_i_72
124
139
  %t736 = load_field rates_el_71["lo"] :: float
125
140
  %t749 = load_field rates_el_71["hi"] :: float
126
- %t75 = call core.gte(%t73, %t736) :: boolean
141
+ %t75 = call core.gte(%t724, %t736) :: boolean
127
142
  %t742 = call core.eq(%t749, %t741) :: boolean
128
143
  %t745 = select %t742, %t743, %t749 :: float
129
- %t78 = call core.lt(%t76, %t745) :: boolean
144
+ %t78 = call core.lt(%t724, %t745) :: boolean
130
145
  %t79 = call core.and(%t75, %t78) :: boolean
131
146
  yield %t79
132
147
  end_loop
133
148
  )
134
149
  (Declaration fed_marginal_single
135
- %acc_80 = decl_acc :: float
136
- %t81 = load_input "fed" :: array
137
- %t82 = load_field t81["single"] :: any
138
- %t83 = load_field t82["rates"] :: any
139
150
  %t764 = load_input "income" :: float
140
151
  %t765 = load_input "fed" :: any
141
- %t769 = const 0 :: integer
142
- %t788 = const -1 :: integer
143
- %t790 = const 100000000000.0 :: float
144
152
  %t766 = load_field t765["single"] :: any
145
153
  %t767 = load_field t766["std"] :: float
146
154
  %t768 = call core.sub(%t764, %t767) :: float
155
+ %t769 = const 0 :: integer
147
156
  %t770 = make_tuple(%t768, %t769) :: tuple<float, integer>
148
157
  %t771 = fold %t770 fn="agg.max" :: float
158
+ %acc_80 = decl_acc :: float
159
+ %t81 = load_input "fed" :: array
160
+ %t82 = load_field t81["single"] :: any
161
+ %t83 = load_field t82["rates"] :: any
162
+ %t788 = const -1 :: integer
163
+ %t790 = const 100000000000.0 :: float
149
164
  loop rates id=L8 in %t83 as el=%rates_el_84, idx=%rates_i_85
150
165
  %t783 = load_field rates_el_84["lo"] :: float
151
166
  %t796 = load_field rates_el_84["hi"] :: float
152
167
  %t804 = load_field rates_el_84["rate"] :: float
168
+ %t760 = call core.gte(%t771, %t783) :: boolean
153
169
  %t789 = call core.eq(%t796, %t788) :: boolean
154
170
  %t792 = select %t789, %t790, %t796 :: float
155
- %t760 = call core.gte(%t771, %t783) :: boolean
156
171
  %t762 = call core.lt(%t771, %t792) :: boolean
157
172
  %t763 = call core.and(%t760, %t762) :: boolean
158
173
  %t89 = select %t763, %t804, %t769 :: float
@@ -162,28 +177,28 @@
162
177
  yield %t90
163
178
  )
164
179
  (Declaration fed_eff_single
165
- %acc806 = decl_acc :: float
166
- %t807 = load_input "fed" :: array
167
- %t808 = load_field t807["single"] :: any
168
- %t809 = load_field t808["rates"] :: any
169
180
  %t827 = load_input "income" :: float
170
181
  %t828 = load_input "fed" :: any
171
- %t832 = const 0 :: integer
172
- %t843 = const -1 :: integer
173
- %t845 = const 100000000000.0 :: float
174
182
  %t829 = load_field t828["single"] :: any
175
183
  %t830 = load_field t829["std"] :: float
176
184
  %t831 = call core.sub(%t827, %t830) :: float
185
+ %t832 = const 0 :: integer
177
186
  %t833 = make_tuple(%t831, %t832) :: tuple<float, integer>
178
187
  %t834 = fold %t833 fn="agg.max" :: float
188
+ %acc806 = decl_acc :: float
189
+ %t807 = load_input "fed" :: array
190
+ %t808 = load_field t807["single"] :: any
191
+ %t809 = load_field t808["rates"] :: any
192
+ %t843 = const -1 :: integer
193
+ %t845 = const 100000000000.0 :: float
179
194
  loop rates id=L33 in %t809 as el=%t810, idx=%t811
180
195
  %t838 = load_field t810["lo"] :: float
181
196
  %t851 = load_field t810["hi"] :: float
182
197
  %t863 = load_field t810["rate"] :: float
198
+ %t821 = call core.sub(%t834, %t838) :: float
183
199
  %t844 = call core.eq(%t851, %t843) :: boolean
184
200
  %t847 = select %t844, %t845, %t851 :: float
185
201
  %t825 = call core.sub(%t847, %t838) :: float
186
- %t821 = call core.sub(%t834, %t838) :: float
187
202
  %t826 = call core.clamp(%t821, %t832, %t825) :: float
188
203
  %t814 = call core.mul(%t826, %t863) :: float
189
204
  %acc806 = acc_add agg.sum(%acc806, %t814) :: float
@@ -286,28 +301,28 @@
286
301
  yield %t129
287
302
  )
288
303
  (Declaration total_tax_single
289
- %acc904 = decl_acc :: float
290
- %t905 = load_input "fed" :: array
291
- %t906 = load_field t905["single"] :: any
292
- %t907 = load_field t906["rates"] :: any
293
304
  %t925 = load_input "income" :: float
294
305
  %t926 = load_input "fed" :: any
295
- %t930 = const 0 :: integer
296
- %t941 = const -1 :: integer
297
- %t943 = const 100000000000.0 :: float
298
306
  %t927 = load_field t926["single"] :: any
299
307
  %t928 = load_field t927["std"] :: float
300
308
  %t929 = call core.sub(%t925, %t928) :: float
309
+ %t930 = const 0 :: integer
301
310
  %t931 = make_tuple(%t929, %t930) :: tuple<float, integer>
302
311
  %t932 = fold %t931 fn="agg.max" :: float
312
+ %acc904 = decl_acc :: float
313
+ %t905 = load_input "fed" :: array
314
+ %t906 = load_field t905["single"] :: any
315
+ %t907 = load_field t906["rates"] :: any
316
+ %t941 = const -1 :: integer
317
+ %t943 = const 100000000000.0 :: float
303
318
  loop rates id=L34 in %t907 as el=%t908, idx=%t909
304
319
  %t936 = load_field t908["lo"] :: float
305
320
  %t949 = load_field t908["hi"] :: float
306
321
  %t961 = load_field t908["rate"] :: float
322
+ %t919 = call core.sub(%t932, %t936) :: float
307
323
  %t942 = call core.eq(%t949, %t941) :: boolean
308
324
  %t945 = select %t942, %t943, %t949 :: float
309
325
  %t923 = call core.sub(%t945, %t936) :: float
310
- %t919 = call core.sub(%t932, %t936) :: float
311
326
  %t924 = call core.clamp(%t919, %t930, %t923) :: float
312
327
  %t912 = call core.mul(%t924, %t961) :: float
313
328
  %acc904 = acc_add agg.sum(%acc904, %t912) :: float
@@ -338,28 +353,28 @@
338
353
  yield %t136
339
354
  )
340
355
  (Declaration total_eff_single
341
- %acc998 = decl_acc :: float
342
- %t999 = load_input "fed" :: array
343
- %t1000 = load_field t999["single"] :: any
344
- %t1001 = load_field t1000["rates"] :: any
345
356
  %t1019 = load_input "income" :: float
346
357
  %t1020 = load_input "fed" :: any
347
- %t1024 = const 0 :: integer
348
- %t1035 = const -1 :: integer
349
- %t1037 = const 100000000000.0 :: float
350
358
  %t1021 = load_field t1020["single"] :: any
351
359
  %t1022 = load_field t1021["std"] :: float
352
360
  %t1023 = call core.sub(%t1019, %t1022) :: float
361
+ %t1024 = const 0 :: integer
353
362
  %t1025 = make_tuple(%t1023, %t1024) :: tuple<float, integer>
354
363
  %t1026 = fold %t1025 fn="agg.max" :: float
364
+ %acc998 = decl_acc :: float
365
+ %t999 = load_input "fed" :: array
366
+ %t1000 = load_field t999["single"] :: any
367
+ %t1001 = load_field t1000["rates"] :: any
368
+ %t1035 = const -1 :: integer
369
+ %t1037 = const 100000000000.0 :: float
355
370
  loop rates id=L35 in %t1001 as el=%t1002, idx=%t1003
356
371
  %t1030 = load_field t1002["lo"] :: float
357
372
  %t1043 = load_field t1002["hi"] :: float
358
373
  %t1055 = load_field t1002["rate"] :: float
374
+ %t1013 = call core.sub(%t1026, %t1030) :: float
359
375
  %t1036 = call core.eq(%t1043, %t1035) :: boolean
360
376
  %t1039 = select %t1036, %t1037, %t1043 :: float
361
377
  %t1017 = call core.sub(%t1039, %t1030) :: float
362
- %t1013 = call core.sub(%t1026, %t1030) :: float
363
378
  %t1018 = call core.clamp(%t1013, %t1024, %t1017) :: float
364
379
  %t1006 = call core.mul(%t1018, %t1055) :: float
365
380
  %acc998 = acc_add agg.sum(%acc998, %t1006) :: float
@@ -395,27 +410,27 @@
395
410
  )
396
411
  (Declaration after_tax_single
397
412
  %t143 = load_input "income" :: float
398
- %acc1092 = decl_acc :: float
399
- %t1093 = load_input "fed" :: array
400
- %t1094 = load_field t1093["single"] :: any
401
- %t1095 = load_field t1094["rates"] :: any
402
413
  %t1114 = load_input "fed" :: any
403
- %t1118 = const 0 :: integer
404
- %t1129 = const -1 :: integer
405
- %t1131 = const 100000000000.0 :: float
406
414
  %t1115 = load_field t1114["single"] :: any
407
415
  %t1116 = load_field t1115["std"] :: float
408
416
  %t1117 = call core.sub(%t143, %t1116) :: float
417
+ %t1118 = const 0 :: integer
409
418
  %t1119 = make_tuple(%t1117, %t1118) :: tuple<float, integer>
410
419
  %t1120 = fold %t1119 fn="agg.max" :: float
420
+ %acc1092 = decl_acc :: float
421
+ %t1093 = load_input "fed" :: array
422
+ %t1094 = load_field t1093["single"] :: any
423
+ %t1095 = load_field t1094["rates"] :: any
424
+ %t1129 = const -1 :: integer
425
+ %t1131 = const 100000000000.0 :: float
411
426
  loop rates id=L36 in %t1095 as el=%t1096, idx=%t1097
412
427
  %t1124 = load_field t1096["lo"] :: float
413
428
  %t1137 = load_field t1096["hi"] :: float
414
429
  %t1149 = load_field t1096["rate"] :: float
430
+ %t1107 = call core.sub(%t1120, %t1124) :: float
415
431
  %t1130 = call core.eq(%t1137, %t1129) :: boolean
416
432
  %t1133 = select %t1130, %t1131, %t1137 :: float
417
433
  %t1111 = call core.sub(%t1133, %t1124) :: float
418
- %t1107 = call core.sub(%t1120, %t1124) :: float
419
434
  %t1112 = call core.clamp(%t1107, %t1118, %t1111) :: float
420
435
  %t1100 = call core.mul(%t1112, %t1149) :: float
421
436
  %acc1092 = acc_add agg.sum(%acc1092, %t1100) :: float
@@ -448,27 +463,27 @@
448
463
  )
449
464
  (Declaration take_home_single
450
465
  %t1178 = load_input "income" :: float
451
- %acc1189 = decl_acc :: float
452
- %t1190 = load_input "fed" :: array
453
- %t1191 = load_field t1190["single"] :: any
454
- %t1192 = load_field t1191["rates"] :: any
455
466
  %t1211 = load_input "fed" :: any
456
- %t1215 = const 0 :: integer
457
- %t1226 = const -1 :: integer
458
- %t1228 = const 100000000000.0 :: float
459
467
  %t1212 = load_field t1211["single"] :: any
460
468
  %t1213 = load_field t1212["std"] :: float
461
469
  %t1214 = call core.sub(%t1178, %t1213) :: float
470
+ %t1215 = const 0 :: integer
462
471
  %t1216 = make_tuple(%t1214, %t1215) :: tuple<float, integer>
463
472
  %t1217 = fold %t1216 fn="agg.max" :: float
473
+ %acc1189 = decl_acc :: float
474
+ %t1190 = load_input "fed" :: array
475
+ %t1191 = load_field t1190["single"] :: any
476
+ %t1192 = load_field t1191["rates"] :: any
477
+ %t1226 = const -1 :: integer
478
+ %t1228 = const 100000000000.0 :: float
464
479
  loop rates id=L37 in %t1192 as el=%t1193, idx=%t1194
465
480
  %t1221 = load_field t1193["lo"] :: float
466
481
  %t1234 = load_field t1193["hi"] :: float
467
482
  %t1246 = load_field t1193["rate"] :: float
483
+ %t1204 = call core.sub(%t1217, %t1221) :: float
468
484
  %t1227 = call core.eq(%t1234, %t1226) :: boolean
469
485
  %t1230 = select %t1227, %t1228, %t1234 :: float
470
486
  %t1208 = call core.sub(%t1230, %t1221) :: float
471
- %t1204 = call core.sub(%t1217, %t1221) :: float
472
487
  %t1209 = call core.clamp(%t1204, %t1215, %t1208) :: float
473
488
  %t1197 = call core.mul(%t1209, %t1246) :: float
474
489
  %acc1189 = acc_add agg.sum(%acc1189, %t1197) :: float
@@ -556,13 +571,20 @@
556
571
  %t186 = load_input "fed" :: array
557
572
  %t187 = load_field t186["married_joint"] :: any
558
573
  %t188 = load_field t187["rates"] :: any
574
+ %t1283 = load_input "income" :: float
575
+ %t1284 = load_input "fed" :: any
576
+ %t1285 = load_field t1284["married_joint"] :: any
577
+ %t1286 = load_field t1285["std"] :: float
578
+ %t1287 = call core.sub(%t1283, %t1286) :: float
559
579
  %t1288 = const 0 :: integer
580
+ %t1289 = make_tuple(%t1287, %t1288) :: tuple<float, integer>
581
+ %t1290 = fold %t1289 fn="agg.max" :: float
560
582
  %t1299 = const -1 :: integer
561
583
  %t1301 = const 100000000000.0 :: float
562
584
  loop rates id=L13 in %t188 as el=%rates_el_189, idx=%rates_i_190
563
585
  %t1294 = load_field rates_el_189["lo"] :: float
564
586
  %t1307 = load_field rates_el_189["hi"] :: float
565
- %t193 = call core.sub(%t191, %t1294) :: float
587
+ %t193 = call core.sub(%t1290, %t1294) :: float
566
588
  %t1300 = call core.eq(%t1307, %t1299) :: boolean
567
589
  %t1303 = select %t1300, %t1301, %t1307 :: float
568
590
  %t197 = call core.sub(%t1303, %t1294) :: float
@@ -571,28 +593,28 @@
571
593
  end_loop
572
594
  )
573
595
  (Declaration fed_tax_mj
574
- %acc_199 = decl_acc :: float
575
- %t200 = load_input "fed" :: array
576
- %t201 = load_field t200["married_joint"] :: any
577
- %t202 = load_field t201["rates"] :: any
578
596
  %t1327 = load_input "income" :: float
579
597
  %t1328 = load_input "fed" :: any
580
- %t1332 = const 0 :: integer
581
- %t1343 = const -1 :: integer
582
- %t1345 = const 100000000000.0 :: float
583
598
  %t1329 = load_field t1328["married_joint"] :: any
584
599
  %t1330 = load_field t1329["std"] :: float
585
600
  %t1331 = call core.sub(%t1327, %t1330) :: float
601
+ %t1332 = const 0 :: integer
586
602
  %t1333 = make_tuple(%t1331, %t1332) :: tuple<float, integer>
587
603
  %t1334 = fold %t1333 fn="agg.max" :: float
604
+ %acc_199 = decl_acc :: float
605
+ %t200 = load_input "fed" :: array
606
+ %t201 = load_field t200["married_joint"] :: any
607
+ %t202 = load_field t201["rates"] :: any
608
+ %t1343 = const -1 :: integer
609
+ %t1345 = const 100000000000.0 :: float
588
610
  loop rates id=L14 in %t202 as el=%rates_el_203, idx=%rates_i_204
589
611
  %t1338 = load_field rates_el_203["lo"] :: float
590
612
  %t1351 = load_field rates_el_203["hi"] :: float
591
613
  %t1363 = load_field rates_el_203["rate"] :: float
614
+ %t1321 = call core.sub(%t1334, %t1338) :: float
592
615
  %t1344 = call core.eq(%t1351, %t1343) :: boolean
593
616
  %t1347 = select %t1344, %t1345, %t1351 :: float
594
617
  %t1325 = call core.sub(%t1347, %t1338) :: float
595
- %t1321 = call core.sub(%t1334, %t1338) :: float
596
618
  %t1326 = call core.clamp(%t1321, %t1332, %t1325) :: float
597
619
  %t207 = call core.mul(%t1326, %t1363) :: float
598
620
  %acc_199 = acc_add agg.sum(%acc_199, %t207) :: float
@@ -604,41 +626,49 @@
604
626
  %t209 = load_input "fed" :: array
605
627
  %t210 = load_field t209["married_joint"] :: any
606
628
  %t211 = load_field t210["rates"] :: any
629
+ %t1364 = load_input "income" :: float
630
+ %t1365 = load_input "fed" :: any
631
+ %t1366 = load_field t1365["married_joint"] :: any
632
+ %t1367 = load_field t1366["std"] :: float
633
+ %t1368 = call core.sub(%t1364, %t1367) :: float
634
+ %t1369 = const 0 :: integer
635
+ %t1370 = make_tuple(%t1368, %t1369) :: tuple<float, integer>
636
+ %t1371 = fold %t1370 fn="agg.max" :: float
607
637
  %t1388 = const -1 :: integer
608
638
  %t1390 = const 100000000000.0 :: float
609
639
  loop rates id=L15 in %t211 as el=%rates_el_212, idx=%rates_i_213
610
640
  %t1383 = load_field rates_el_212["lo"] :: float
611
641
  %t1396 = load_field rates_el_212["hi"] :: float
612
- %t216 = call core.gte(%t214, %t1383) :: boolean
642
+ %t216 = call core.gte(%t1371, %t1383) :: boolean
613
643
  %t1389 = call core.eq(%t1396, %t1388) :: boolean
614
644
  %t1392 = select %t1389, %t1390, %t1396 :: float
615
- %t219 = call core.lt(%t217, %t1392) :: boolean
645
+ %t219 = call core.lt(%t1371, %t1392) :: boolean
616
646
  %t220 = call core.and(%t216, %t219) :: boolean
617
647
  yield %t220
618
648
  end_loop
619
649
  )
620
650
  (Declaration fed_marginal_mj
621
- %acc_221 = decl_acc :: float
622
- %t222 = load_input "fed" :: array
623
- %t223 = load_field t222["married_joint"] :: any
624
- %t224 = load_field t223["rates"] :: any
625
651
  %t1411 = load_input "income" :: float
626
652
  %t1412 = load_input "fed" :: any
627
- %t1416 = const 0 :: integer
628
- %t1435 = const -1 :: integer
629
- %t1437 = const 100000000000.0 :: float
630
653
  %t1413 = load_field t1412["married_joint"] :: any
631
654
  %t1414 = load_field t1413["std"] :: float
632
655
  %t1415 = call core.sub(%t1411, %t1414) :: float
656
+ %t1416 = const 0 :: integer
633
657
  %t1417 = make_tuple(%t1415, %t1416) :: tuple<float, integer>
634
658
  %t1418 = fold %t1417 fn="agg.max" :: float
659
+ %acc_221 = decl_acc :: float
660
+ %t222 = load_input "fed" :: array
661
+ %t223 = load_field t222["married_joint"] :: any
662
+ %t224 = load_field t223["rates"] :: any
663
+ %t1435 = const -1 :: integer
664
+ %t1437 = const 100000000000.0 :: float
635
665
  loop rates id=L16 in %t224 as el=%rates_el_225, idx=%rates_i_226
636
666
  %t1430 = load_field rates_el_225["lo"] :: float
637
667
  %t1443 = load_field rates_el_225["hi"] :: float
638
668
  %t1451 = load_field rates_el_225["rate"] :: float
669
+ %t1407 = call core.gte(%t1418, %t1430) :: boolean
639
670
  %t1436 = call core.eq(%t1443, %t1435) :: boolean
640
671
  %t1439 = select %t1436, %t1437, %t1443 :: float
641
- %t1407 = call core.gte(%t1418, %t1430) :: boolean
642
672
  %t1409 = call core.lt(%t1418, %t1439) :: boolean
643
673
  %t1410 = call core.and(%t1407, %t1409) :: boolean
644
674
  %t230 = select %t1410, %t1451, %t1416 :: float
@@ -648,28 +678,28 @@
648
678
  yield %t231
649
679
  )
650
680
  (Declaration fed_eff_mj
651
- %acc1453 = decl_acc :: float
652
- %t1454 = load_input "fed" :: array
653
- %t1455 = load_field t1454["married_joint"] :: any
654
- %t1456 = load_field t1455["rates"] :: any
655
681
  %t1474 = load_input "income" :: float
656
682
  %t1475 = load_input "fed" :: any
657
- %t1479 = const 0 :: integer
658
- %t1490 = const -1 :: integer
659
- %t1492 = const 100000000000.0 :: float
660
683
  %t1476 = load_field t1475["married_joint"] :: any
661
684
  %t1477 = load_field t1476["std"] :: float
662
685
  %t1478 = call core.sub(%t1474, %t1477) :: float
686
+ %t1479 = const 0 :: integer
663
687
  %t1480 = make_tuple(%t1478, %t1479) :: tuple<float, integer>
664
688
  %t1481 = fold %t1480 fn="agg.max" :: float
689
+ %acc1453 = decl_acc :: float
690
+ %t1454 = load_input "fed" :: array
691
+ %t1455 = load_field t1454["married_joint"] :: any
692
+ %t1456 = load_field t1455["rates"] :: any
693
+ %t1490 = const -1 :: integer
694
+ %t1492 = const 100000000000.0 :: float
665
695
  loop rates id=L38 in %t1456 as el=%t1457, idx=%t1458
666
696
  %t1485 = load_field t1457["lo"] :: float
667
697
  %t1498 = load_field t1457["hi"] :: float
668
698
  %t1510 = load_field t1457["rate"] :: float
699
+ %t1468 = call core.sub(%t1481, %t1485) :: float
669
700
  %t1491 = call core.eq(%t1498, %t1490) :: boolean
670
701
  %t1494 = select %t1491, %t1492, %t1498 :: float
671
702
  %t1472 = call core.sub(%t1494, %t1485) :: float
672
- %t1468 = call core.sub(%t1481, %t1485) :: float
673
703
  %t1473 = call core.clamp(%t1468, %t1479, %t1472) :: float
674
704
  %t1461 = call core.mul(%t1473, %t1510) :: float
675
705
  %acc1453 = acc_add agg.sum(%acc1453, %t1461) :: float
@@ -756,28 +786,28 @@
756
786
  yield %t259
757
787
  )
758
788
  (Declaration total_tax_mj
759
- %acc1564 = decl_acc :: float
760
- %t1565 = load_input "fed" :: array
761
- %t1566 = load_field t1565["married_joint"] :: any
762
- %t1567 = load_field t1566["rates"] :: any
763
789
  %t1585 = load_input "income" :: float
764
790
  %t1586 = load_input "fed" :: any
765
- %t1590 = const 0 :: integer
766
- %t1601 = const -1 :: integer
767
- %t1603 = const 100000000000.0 :: float
768
791
  %t1587 = load_field t1586["married_joint"] :: any
769
792
  %t1588 = load_field t1587["std"] :: float
770
793
  %t1589 = call core.sub(%t1585, %t1588) :: float
794
+ %t1590 = const 0 :: integer
771
795
  %t1591 = make_tuple(%t1589, %t1590) :: tuple<float, integer>
772
796
  %t1592 = fold %t1591 fn="agg.max" :: float
797
+ %acc1564 = decl_acc :: float
798
+ %t1565 = load_input "fed" :: array
799
+ %t1566 = load_field t1565["married_joint"] :: any
800
+ %t1567 = load_field t1566["rates"] :: any
801
+ %t1601 = const -1 :: integer
802
+ %t1603 = const 100000000000.0 :: float
773
803
  loop rates id=L39 in %t1567 as el=%t1568, idx=%t1569
774
804
  %t1596 = load_field t1568["lo"] :: float
775
805
  %t1609 = load_field t1568["hi"] :: float
776
806
  %t1621 = load_field t1568["rate"] :: float
807
+ %t1579 = call core.sub(%t1592, %t1596) :: float
777
808
  %t1602 = call core.eq(%t1609, %t1601) :: boolean
778
809
  %t1605 = select %t1602, %t1603, %t1609 :: float
779
810
  %t1583 = call core.sub(%t1605, %t1596) :: float
780
- %t1579 = call core.sub(%t1592, %t1596) :: float
781
811
  %t1584 = call core.clamp(%t1579, %t1590, %t1583) :: float
782
812
  %t1572 = call core.mul(%t1584, %t1621) :: float
783
813
  %acc1564 = acc_add agg.sum(%acc1564, %t1572) :: float
@@ -808,28 +838,28 @@
808
838
  yield %t266
809
839
  )
810
840
  (Declaration total_eff_mj
811
- %acc1660 = decl_acc :: float
812
- %t1661 = load_input "fed" :: array
813
- %t1662 = load_field t1661["married_joint"] :: any
814
- %t1663 = load_field t1662["rates"] :: any
815
841
  %t1681 = load_input "income" :: float
816
842
  %t1682 = load_input "fed" :: any
817
- %t1686 = const 0 :: integer
818
- %t1697 = const -1 :: integer
819
- %t1699 = const 100000000000.0 :: float
820
843
  %t1683 = load_field t1682["married_joint"] :: any
821
844
  %t1684 = load_field t1683["std"] :: float
822
845
  %t1685 = call core.sub(%t1681, %t1684) :: float
846
+ %t1686 = const 0 :: integer
823
847
  %t1687 = make_tuple(%t1685, %t1686) :: tuple<float, integer>
824
848
  %t1688 = fold %t1687 fn="agg.max" :: float
849
+ %acc1660 = decl_acc :: float
850
+ %t1661 = load_input "fed" :: array
851
+ %t1662 = load_field t1661["married_joint"] :: any
852
+ %t1663 = load_field t1662["rates"] :: any
853
+ %t1697 = const -1 :: integer
854
+ %t1699 = const 100000000000.0 :: float
825
855
  loop rates id=L40 in %t1663 as el=%t1664, idx=%t1665
826
856
  %t1692 = load_field t1664["lo"] :: float
827
857
  %t1705 = load_field t1664["hi"] :: float
828
858
  %t1717 = load_field t1664["rate"] :: float
859
+ %t1675 = call core.sub(%t1688, %t1692) :: float
829
860
  %t1698 = call core.eq(%t1705, %t1697) :: boolean
830
861
  %t1701 = select %t1698, %t1699, %t1705 :: float
831
862
  %t1679 = call core.sub(%t1701, %t1692) :: float
832
- %t1675 = call core.sub(%t1688, %t1692) :: float
833
863
  %t1680 = call core.clamp(%t1675, %t1686, %t1679) :: float
834
864
  %t1668 = call core.mul(%t1680, %t1717) :: float
835
865
  %acc1660 = acc_add agg.sum(%acc1660, %t1668) :: float
@@ -865,27 +895,27 @@
865
895
  )
866
896
  (Declaration after_tax_mj
867
897
  %t273 = load_input "income" :: float
868
- %acc1756 = decl_acc :: float
869
- %t1757 = load_input "fed" :: array
870
- %t1758 = load_field t1757["married_joint"] :: any
871
- %t1759 = load_field t1758["rates"] :: any
872
898
  %t1778 = load_input "fed" :: any
873
- %t1782 = const 0 :: integer
874
- %t1793 = const -1 :: integer
875
- %t1795 = const 100000000000.0 :: float
876
899
  %t1779 = load_field t1778["married_joint"] :: any
877
900
  %t1780 = load_field t1779["std"] :: float
878
901
  %t1781 = call core.sub(%t273, %t1780) :: float
902
+ %t1782 = const 0 :: integer
879
903
  %t1783 = make_tuple(%t1781, %t1782) :: tuple<float, integer>
880
904
  %t1784 = fold %t1783 fn="agg.max" :: float
905
+ %acc1756 = decl_acc :: float
906
+ %t1757 = load_input "fed" :: array
907
+ %t1758 = load_field t1757["married_joint"] :: any
908
+ %t1759 = load_field t1758["rates"] :: any
909
+ %t1793 = const -1 :: integer
910
+ %t1795 = const 100000000000.0 :: float
881
911
  loop rates id=L41 in %t1759 as el=%t1760, idx=%t1761
882
912
  %t1788 = load_field t1760["lo"] :: float
883
913
  %t1801 = load_field t1760["hi"] :: float
884
914
  %t1813 = load_field t1760["rate"] :: float
915
+ %t1771 = call core.sub(%t1784, %t1788) :: float
885
916
  %t1794 = call core.eq(%t1801, %t1793) :: boolean
886
917
  %t1797 = select %t1794, %t1795, %t1801 :: float
887
918
  %t1775 = call core.sub(%t1797, %t1788) :: float
888
- %t1771 = call core.sub(%t1784, %t1788) :: float
889
919
  %t1776 = call core.clamp(%t1771, %t1782, %t1775) :: float
890
920
  %t1764 = call core.mul(%t1776, %t1813) :: float
891
921
  %acc1756 = acc_add agg.sum(%acc1756, %t1764) :: float
@@ -918,27 +948,27 @@
918
948
  )
919
949
  (Declaration take_home_mj
920
950
  %t1844 = load_input "income" :: float
921
- %acc1855 = decl_acc :: float
922
- %t1856 = load_input "fed" :: array
923
- %t1857 = load_field t1856["married_joint"] :: any
924
- %t1858 = load_field t1857["rates"] :: any
925
951
  %t1877 = load_input "fed" :: any
926
- %t1881 = const 0 :: integer
927
- %t1892 = const -1 :: integer
928
- %t1894 = const 100000000000.0 :: float
929
952
  %t1878 = load_field t1877["married_joint"] :: any
930
953
  %t1879 = load_field t1878["std"] :: float
931
954
  %t1880 = call core.sub(%t1844, %t1879) :: float
955
+ %t1881 = const 0 :: integer
932
956
  %t1882 = make_tuple(%t1880, %t1881) :: tuple<float, integer>
933
957
  %t1883 = fold %t1882 fn="agg.max" :: float
958
+ %acc1855 = decl_acc :: float
959
+ %t1856 = load_input "fed" :: array
960
+ %t1857 = load_field t1856["married_joint"] :: any
961
+ %t1858 = load_field t1857["rates"] :: any
962
+ %t1892 = const -1 :: integer
963
+ %t1894 = const 100000000000.0 :: float
934
964
  loop rates id=L42 in %t1858 as el=%t1859, idx=%t1860
935
965
  %t1887 = load_field t1859["lo"] :: float
936
966
  %t1900 = load_field t1859["hi"] :: float
937
967
  %t1912 = load_field t1859["rate"] :: float
968
+ %t1870 = call core.sub(%t1883, %t1887) :: float
938
969
  %t1893 = call core.eq(%t1900, %t1892) :: boolean
939
970
  %t1896 = select %t1893, %t1894, %t1900 :: float
940
971
  %t1874 = call core.sub(%t1896, %t1887) :: float
941
- %t1870 = call core.sub(%t1883, %t1887) :: float
942
972
  %t1875 = call core.clamp(%t1870, %t1881, %t1874) :: float
943
973
  %t1863 = call core.mul(%t1875, %t1912) :: float
944
974
  %acc1855 = acc_add agg.sum(%acc1855, %t1863) :: float
@@ -1026,13 +1056,20 @@
1026
1056
  %t316 = load_input "fed" :: array
1027
1057
  %t317 = load_field t316["married_separate"] :: any
1028
1058
  %t318 = load_field t317["rates"] :: any
1059
+ %t1951 = load_input "income" :: float
1060
+ %t1952 = load_input "fed" :: any
1061
+ %t1953 = load_field t1952["married_separate"] :: any
1062
+ %t1954 = load_field t1953["std"] :: float
1063
+ %t1955 = call core.sub(%t1951, %t1954) :: float
1029
1064
  %t1956 = const 0 :: integer
1065
+ %t1957 = make_tuple(%t1955, %t1956) :: tuple<float, integer>
1066
+ %t1958 = fold %t1957 fn="agg.max" :: float
1030
1067
  %t1967 = const -1 :: integer
1031
1068
  %t1969 = const 100000000000.0 :: float
1032
1069
  loop rates id=L21 in %t318 as el=%rates_el_319, idx=%rates_i_320
1033
1070
  %t1962 = load_field rates_el_319["lo"] :: float
1034
1071
  %t1975 = load_field rates_el_319["hi"] :: float
1035
- %t323 = call core.sub(%t321, %t1962) :: float
1072
+ %t323 = call core.sub(%t1958, %t1962) :: float
1036
1073
  %t1968 = call core.eq(%t1975, %t1967) :: boolean
1037
1074
  %t1971 = select %t1968, %t1969, %t1975 :: float
1038
1075
  %t327 = call core.sub(%t1971, %t1962) :: float
@@ -1041,28 +1078,28 @@
1041
1078
  end_loop
1042
1079
  )
1043
1080
  (Declaration fed_tax_ms
1044
- %acc_329 = decl_acc :: float
1045
- %t330 = load_input "fed" :: array
1046
- %t331 = load_field t330["married_separate"] :: any
1047
- %t332 = load_field t331["rates"] :: any
1048
1081
  %t1995 = load_input "income" :: float
1049
1082
  %t1996 = load_input "fed" :: any
1050
- %t2000 = const 0 :: integer
1051
- %t2011 = const -1 :: integer
1052
- %t2013 = const 100000000000.0 :: float
1053
1083
  %t1997 = load_field t1996["married_separate"] :: any
1054
1084
  %t1998 = load_field t1997["std"] :: float
1055
1085
  %t1999 = call core.sub(%t1995, %t1998) :: float
1086
+ %t2000 = const 0 :: integer
1056
1087
  %t2001 = make_tuple(%t1999, %t2000) :: tuple<float, integer>
1057
1088
  %t2002 = fold %t2001 fn="agg.max" :: float
1089
+ %acc_329 = decl_acc :: float
1090
+ %t330 = load_input "fed" :: array
1091
+ %t331 = load_field t330["married_separate"] :: any
1092
+ %t332 = load_field t331["rates"] :: any
1093
+ %t2011 = const -1 :: integer
1094
+ %t2013 = const 100000000000.0 :: float
1058
1095
  loop rates id=L22 in %t332 as el=%rates_el_333, idx=%rates_i_334
1059
1096
  %t2006 = load_field rates_el_333["lo"] :: float
1060
1097
  %t2019 = load_field rates_el_333["hi"] :: float
1061
1098
  %t2031 = load_field rates_el_333["rate"] :: float
1099
+ %t1989 = call core.sub(%t2002, %t2006) :: float
1062
1100
  %t2012 = call core.eq(%t2019, %t2011) :: boolean
1063
1101
  %t2015 = select %t2012, %t2013, %t2019 :: float
1064
1102
  %t1993 = call core.sub(%t2015, %t2006) :: float
1065
- %t1989 = call core.sub(%t2002, %t2006) :: float
1066
1103
  %t1994 = call core.clamp(%t1989, %t2000, %t1993) :: float
1067
1104
  %t337 = call core.mul(%t1994, %t2031) :: float
1068
1105
  %acc_329 = acc_add agg.sum(%acc_329, %t337) :: float
@@ -1074,41 +1111,49 @@
1074
1111
  %t339 = load_input "fed" :: array
1075
1112
  %t340 = load_field t339["married_separate"] :: any
1076
1113
  %t341 = load_field t340["rates"] :: any
1114
+ %t2032 = load_input "income" :: float
1115
+ %t2033 = load_input "fed" :: any
1116
+ %t2034 = load_field t2033["married_separate"] :: any
1117
+ %t2035 = load_field t2034["std"] :: float
1118
+ %t2036 = call core.sub(%t2032, %t2035) :: float
1119
+ %t2037 = const 0 :: integer
1120
+ %t2038 = make_tuple(%t2036, %t2037) :: tuple<float, integer>
1121
+ %t2039 = fold %t2038 fn="agg.max" :: float
1077
1122
  %t2056 = const -1 :: integer
1078
1123
  %t2058 = const 100000000000.0 :: float
1079
1124
  loop rates id=L23 in %t341 as el=%rates_el_342, idx=%rates_i_343
1080
1125
  %t2051 = load_field rates_el_342["lo"] :: float
1081
1126
  %t2064 = load_field rates_el_342["hi"] :: float
1082
- %t346 = call core.gte(%t344, %t2051) :: boolean
1127
+ %t346 = call core.gte(%t2039, %t2051) :: boolean
1083
1128
  %t2057 = call core.eq(%t2064, %t2056) :: boolean
1084
1129
  %t2060 = select %t2057, %t2058, %t2064 :: float
1085
- %t349 = call core.lt(%t347, %t2060) :: boolean
1130
+ %t349 = call core.lt(%t2039, %t2060) :: boolean
1086
1131
  %t350 = call core.and(%t346, %t349) :: boolean
1087
1132
  yield %t350
1088
1133
  end_loop
1089
1134
  )
1090
1135
  (Declaration fed_marginal_ms
1091
- %acc_351 = decl_acc :: float
1092
- %t352 = load_input "fed" :: array
1093
- %t353 = load_field t352["married_separate"] :: any
1094
- %t354 = load_field t353["rates"] :: any
1095
1136
  %t2079 = load_input "income" :: float
1096
1137
  %t2080 = load_input "fed" :: any
1097
- %t2084 = const 0 :: integer
1098
- %t2103 = const -1 :: integer
1099
- %t2105 = const 100000000000.0 :: float
1100
1138
  %t2081 = load_field t2080["married_separate"] :: any
1101
1139
  %t2082 = load_field t2081["std"] :: float
1102
1140
  %t2083 = call core.sub(%t2079, %t2082) :: float
1141
+ %t2084 = const 0 :: integer
1103
1142
  %t2085 = make_tuple(%t2083, %t2084) :: tuple<float, integer>
1104
1143
  %t2086 = fold %t2085 fn="agg.max" :: float
1144
+ %acc_351 = decl_acc :: float
1145
+ %t352 = load_input "fed" :: array
1146
+ %t353 = load_field t352["married_separate"] :: any
1147
+ %t354 = load_field t353["rates"] :: any
1148
+ %t2103 = const -1 :: integer
1149
+ %t2105 = const 100000000000.0 :: float
1105
1150
  loop rates id=L24 in %t354 as el=%rates_el_355, idx=%rates_i_356
1106
1151
  %t2098 = load_field rates_el_355["lo"] :: float
1107
1152
  %t2111 = load_field rates_el_355["hi"] :: float
1108
1153
  %t2119 = load_field rates_el_355["rate"] :: float
1154
+ %t2075 = call core.gte(%t2086, %t2098) :: boolean
1109
1155
  %t2104 = call core.eq(%t2111, %t2103) :: boolean
1110
1156
  %t2107 = select %t2104, %t2105, %t2111 :: float
1111
- %t2075 = call core.gte(%t2086, %t2098) :: boolean
1112
1157
  %t2077 = call core.lt(%t2086, %t2107) :: boolean
1113
1158
  %t2078 = call core.and(%t2075, %t2077) :: boolean
1114
1159
  %t360 = select %t2078, %t2119, %t2084 :: float
@@ -1118,28 +1163,28 @@
1118
1163
  yield %t361
1119
1164
  )
1120
1165
  (Declaration fed_eff_ms
1121
- %acc2121 = decl_acc :: float
1122
- %t2122 = load_input "fed" :: array
1123
- %t2123 = load_field t2122["married_separate"] :: any
1124
- %t2124 = load_field t2123["rates"] :: any
1125
1166
  %t2142 = load_input "income" :: float
1126
1167
  %t2143 = load_input "fed" :: any
1127
- %t2147 = const 0 :: integer
1128
- %t2158 = const -1 :: integer
1129
- %t2160 = const 100000000000.0 :: float
1130
1168
  %t2144 = load_field t2143["married_separate"] :: any
1131
1169
  %t2145 = load_field t2144["std"] :: float
1132
1170
  %t2146 = call core.sub(%t2142, %t2145) :: float
1171
+ %t2147 = const 0 :: integer
1133
1172
  %t2148 = make_tuple(%t2146, %t2147) :: tuple<float, integer>
1134
1173
  %t2149 = fold %t2148 fn="agg.max" :: float
1174
+ %acc2121 = decl_acc :: float
1175
+ %t2122 = load_input "fed" :: array
1176
+ %t2123 = load_field t2122["married_separate"] :: any
1177
+ %t2124 = load_field t2123["rates"] :: any
1178
+ %t2158 = const -1 :: integer
1179
+ %t2160 = const 100000000000.0 :: float
1135
1180
  loop rates id=L43 in %t2124 as el=%t2125, idx=%t2126
1136
1181
  %t2153 = load_field t2125["lo"] :: float
1137
1182
  %t2166 = load_field t2125["hi"] :: float
1138
1183
  %t2178 = load_field t2125["rate"] :: float
1184
+ %t2136 = call core.sub(%t2149, %t2153) :: float
1139
1185
  %t2159 = call core.eq(%t2166, %t2158) :: boolean
1140
1186
  %t2162 = select %t2159, %t2160, %t2166 :: float
1141
1187
  %t2140 = call core.sub(%t2162, %t2153) :: float
1142
- %t2136 = call core.sub(%t2149, %t2153) :: float
1143
1188
  %t2141 = call core.clamp(%t2136, %t2147, %t2140) :: float
1144
1189
  %t2129 = call core.mul(%t2141, %t2178) :: float
1145
1190
  %acc2121 = acc_add agg.sum(%acc2121, %t2129) :: float
@@ -1226,28 +1271,28 @@
1226
1271
  yield %t389
1227
1272
  )
1228
1273
  (Declaration total_tax_ms
1229
- %acc2232 = decl_acc :: float
1230
- %t2233 = load_input "fed" :: array
1231
- %t2234 = load_field t2233["married_separate"] :: any
1232
- %t2235 = load_field t2234["rates"] :: any
1233
1274
  %t2253 = load_input "income" :: float
1234
1275
  %t2254 = load_input "fed" :: any
1235
- %t2258 = const 0 :: integer
1236
- %t2269 = const -1 :: integer
1237
- %t2271 = const 100000000000.0 :: float
1238
1276
  %t2255 = load_field t2254["married_separate"] :: any
1239
1277
  %t2256 = load_field t2255["std"] :: float
1240
1278
  %t2257 = call core.sub(%t2253, %t2256) :: float
1279
+ %t2258 = const 0 :: integer
1241
1280
  %t2259 = make_tuple(%t2257, %t2258) :: tuple<float, integer>
1242
1281
  %t2260 = fold %t2259 fn="agg.max" :: float
1282
+ %acc2232 = decl_acc :: float
1283
+ %t2233 = load_input "fed" :: array
1284
+ %t2234 = load_field t2233["married_separate"] :: any
1285
+ %t2235 = load_field t2234["rates"] :: any
1286
+ %t2269 = const -1 :: integer
1287
+ %t2271 = const 100000000000.0 :: float
1243
1288
  loop rates id=L44 in %t2235 as el=%t2236, idx=%t2237
1244
1289
  %t2264 = load_field t2236["lo"] :: float
1245
1290
  %t2277 = load_field t2236["hi"] :: float
1246
1291
  %t2289 = load_field t2236["rate"] :: float
1292
+ %t2247 = call core.sub(%t2260, %t2264) :: float
1247
1293
  %t2270 = call core.eq(%t2277, %t2269) :: boolean
1248
1294
  %t2273 = select %t2270, %t2271, %t2277 :: float
1249
1295
  %t2251 = call core.sub(%t2273, %t2264) :: float
1250
- %t2247 = call core.sub(%t2260, %t2264) :: float
1251
1296
  %t2252 = call core.clamp(%t2247, %t2258, %t2251) :: float
1252
1297
  %t2240 = call core.mul(%t2252, %t2289) :: float
1253
1298
  %acc2232 = acc_add agg.sum(%acc2232, %t2240) :: float
@@ -1278,28 +1323,28 @@
1278
1323
  yield %t396
1279
1324
  )
1280
1325
  (Declaration total_eff_ms
1281
- %acc2328 = decl_acc :: float
1282
- %t2329 = load_input "fed" :: array
1283
- %t2330 = load_field t2329["married_separate"] :: any
1284
- %t2331 = load_field t2330["rates"] :: any
1285
1326
  %t2349 = load_input "income" :: float
1286
1327
  %t2350 = load_input "fed" :: any
1287
- %t2354 = const 0 :: integer
1288
- %t2365 = const -1 :: integer
1289
- %t2367 = const 100000000000.0 :: float
1290
1328
  %t2351 = load_field t2350["married_separate"] :: any
1291
1329
  %t2352 = load_field t2351["std"] :: float
1292
1330
  %t2353 = call core.sub(%t2349, %t2352) :: float
1331
+ %t2354 = const 0 :: integer
1293
1332
  %t2355 = make_tuple(%t2353, %t2354) :: tuple<float, integer>
1294
1333
  %t2356 = fold %t2355 fn="agg.max" :: float
1334
+ %acc2328 = decl_acc :: float
1335
+ %t2329 = load_input "fed" :: array
1336
+ %t2330 = load_field t2329["married_separate"] :: any
1337
+ %t2331 = load_field t2330["rates"] :: any
1338
+ %t2365 = const -1 :: integer
1339
+ %t2367 = const 100000000000.0 :: float
1295
1340
  loop rates id=L45 in %t2331 as el=%t2332, idx=%t2333
1296
1341
  %t2360 = load_field t2332["lo"] :: float
1297
1342
  %t2373 = load_field t2332["hi"] :: float
1298
1343
  %t2385 = load_field t2332["rate"] :: float
1344
+ %t2343 = call core.sub(%t2356, %t2360) :: float
1299
1345
  %t2366 = call core.eq(%t2373, %t2365) :: boolean
1300
1346
  %t2369 = select %t2366, %t2367, %t2373 :: float
1301
1347
  %t2347 = call core.sub(%t2369, %t2360) :: float
1302
- %t2343 = call core.sub(%t2356, %t2360) :: float
1303
1348
  %t2348 = call core.clamp(%t2343, %t2354, %t2347) :: float
1304
1349
  %t2336 = call core.mul(%t2348, %t2385) :: float
1305
1350
  %acc2328 = acc_add agg.sum(%acc2328, %t2336) :: float
@@ -1335,27 +1380,27 @@
1335
1380
  )
1336
1381
  (Declaration after_tax_ms
1337
1382
  %t403 = load_input "income" :: float
1338
- %acc2424 = decl_acc :: float
1339
- %t2425 = load_input "fed" :: array
1340
- %t2426 = load_field t2425["married_separate"] :: any
1341
- %t2427 = load_field t2426["rates"] :: any
1342
1383
  %t2446 = load_input "fed" :: any
1343
- %t2450 = const 0 :: integer
1344
- %t2461 = const -1 :: integer
1345
- %t2463 = const 100000000000.0 :: float
1346
1384
  %t2447 = load_field t2446["married_separate"] :: any
1347
1385
  %t2448 = load_field t2447["std"] :: float
1348
1386
  %t2449 = call core.sub(%t403, %t2448) :: float
1387
+ %t2450 = const 0 :: integer
1349
1388
  %t2451 = make_tuple(%t2449, %t2450) :: tuple<float, integer>
1350
1389
  %t2452 = fold %t2451 fn="agg.max" :: float
1390
+ %acc2424 = decl_acc :: float
1391
+ %t2425 = load_input "fed" :: array
1392
+ %t2426 = load_field t2425["married_separate"] :: any
1393
+ %t2427 = load_field t2426["rates"] :: any
1394
+ %t2461 = const -1 :: integer
1395
+ %t2463 = const 100000000000.0 :: float
1351
1396
  loop rates id=L46 in %t2427 as el=%t2428, idx=%t2429
1352
1397
  %t2456 = load_field t2428["lo"] :: float
1353
1398
  %t2469 = load_field t2428["hi"] :: float
1354
1399
  %t2481 = load_field t2428["rate"] :: float
1400
+ %t2439 = call core.sub(%t2452, %t2456) :: float
1355
1401
  %t2462 = call core.eq(%t2469, %t2461) :: boolean
1356
1402
  %t2465 = select %t2462, %t2463, %t2469 :: float
1357
1403
  %t2443 = call core.sub(%t2465, %t2456) :: float
1358
- %t2439 = call core.sub(%t2452, %t2456) :: float
1359
1404
  %t2444 = call core.clamp(%t2439, %t2450, %t2443) :: float
1360
1405
  %t2432 = call core.mul(%t2444, %t2481) :: float
1361
1406
  %acc2424 = acc_add agg.sum(%acc2424, %t2432) :: float
@@ -1388,27 +1433,27 @@
1388
1433
  )
1389
1434
  (Declaration take_home_ms
1390
1435
  %t2512 = load_input "income" :: float
1391
- %acc2523 = decl_acc :: float
1392
- %t2524 = load_input "fed" :: array
1393
- %t2525 = load_field t2524["married_separate"] :: any
1394
- %t2526 = load_field t2525["rates"] :: any
1395
1436
  %t2545 = load_input "fed" :: any
1396
- %t2549 = const 0 :: integer
1397
- %t2560 = const -1 :: integer
1398
- %t2562 = const 100000000000.0 :: float
1399
1437
  %t2546 = load_field t2545["married_separate"] :: any
1400
1438
  %t2547 = load_field t2546["std"] :: float
1401
1439
  %t2548 = call core.sub(%t2512, %t2547) :: float
1440
+ %t2549 = const 0 :: integer
1402
1441
  %t2550 = make_tuple(%t2548, %t2549) :: tuple<float, integer>
1403
1442
  %t2551 = fold %t2550 fn="agg.max" :: float
1443
+ %acc2523 = decl_acc :: float
1444
+ %t2524 = load_input "fed" :: array
1445
+ %t2525 = load_field t2524["married_separate"] :: any
1446
+ %t2526 = load_field t2525["rates"] :: any
1447
+ %t2560 = const -1 :: integer
1448
+ %t2562 = const 100000000000.0 :: float
1404
1449
  loop rates id=L47 in %t2526 as el=%t2527, idx=%t2528
1405
1450
  %t2555 = load_field t2527["lo"] :: float
1406
1451
  %t2568 = load_field t2527["hi"] :: float
1407
1452
  %t2580 = load_field t2527["rate"] :: float
1453
+ %t2538 = call core.sub(%t2551, %t2555) :: float
1408
1454
  %t2561 = call core.eq(%t2568, %t2560) :: boolean
1409
1455
  %t2564 = select %t2561, %t2562, %t2568 :: float
1410
1456
  %t2542 = call core.sub(%t2564, %t2555) :: float
1411
- %t2538 = call core.sub(%t2551, %t2555) :: float
1412
1457
  %t2543 = call core.clamp(%t2538, %t2549, %t2542) :: float
1413
1458
  %t2531 = call core.mul(%t2543, %t2580) :: float
1414
1459
  %acc2523 = acc_add agg.sum(%acc2523, %t2531) :: float
@@ -1496,13 +1541,20 @@
1496
1541
  %t446 = load_input "fed" :: array
1497
1542
  %t447 = load_field t446["head_of_household"] :: any
1498
1543
  %t448 = load_field t447["rates"] :: any
1544
+ %t2619 = load_input "income" :: float
1545
+ %t2620 = load_input "fed" :: any
1546
+ %t2621 = load_field t2620["head_of_household"] :: any
1547
+ %t2622 = load_field t2621["std"] :: float
1548
+ %t2623 = call core.sub(%t2619, %t2622) :: float
1499
1549
  %t2624 = const 0 :: integer
1550
+ %t2625 = make_tuple(%t2623, %t2624) :: tuple<float, integer>
1551
+ %t2626 = fold %t2625 fn="agg.max" :: float
1500
1552
  %t2635 = const -1 :: integer
1501
1553
  %t2637 = const 100000000000.0 :: float
1502
1554
  loop rates id=L29 in %t448 as el=%rates_el_449, idx=%rates_i_450
1503
1555
  %t2630 = load_field rates_el_449["lo"] :: float
1504
1556
  %t2643 = load_field rates_el_449["hi"] :: float
1505
- %t453 = call core.sub(%t451, %t2630) :: float
1557
+ %t453 = call core.sub(%t2626, %t2630) :: float
1506
1558
  %t2636 = call core.eq(%t2643, %t2635) :: boolean
1507
1559
  %t2639 = select %t2636, %t2637, %t2643 :: float
1508
1560
  %t457 = call core.sub(%t2639, %t2630) :: float
@@ -1511,28 +1563,28 @@
1511
1563
  end_loop
1512
1564
  )
1513
1565
  (Declaration fed_tax_hoh
1514
- %acc_459 = decl_acc :: float
1515
- %t460 = load_input "fed" :: array
1516
- %t461 = load_field t460["head_of_household"] :: any
1517
- %t462 = load_field t461["rates"] :: any
1518
1566
  %t2663 = load_input "income" :: float
1519
1567
  %t2664 = load_input "fed" :: any
1520
- %t2668 = const 0 :: integer
1521
- %t2679 = const -1 :: integer
1522
- %t2681 = const 100000000000.0 :: float
1523
1568
  %t2665 = load_field t2664["head_of_household"] :: any
1524
1569
  %t2666 = load_field t2665["std"] :: float
1525
1570
  %t2667 = call core.sub(%t2663, %t2666) :: float
1571
+ %t2668 = const 0 :: integer
1526
1572
  %t2669 = make_tuple(%t2667, %t2668) :: tuple<float, integer>
1527
1573
  %t2670 = fold %t2669 fn="agg.max" :: float
1574
+ %acc_459 = decl_acc :: float
1575
+ %t460 = load_input "fed" :: array
1576
+ %t461 = load_field t460["head_of_household"] :: any
1577
+ %t462 = load_field t461["rates"] :: any
1578
+ %t2679 = const -1 :: integer
1579
+ %t2681 = const 100000000000.0 :: float
1528
1580
  loop rates id=L30 in %t462 as el=%rates_el_463, idx=%rates_i_464
1529
1581
  %t2674 = load_field rates_el_463["lo"] :: float
1530
1582
  %t2687 = load_field rates_el_463["hi"] :: float
1531
1583
  %t2699 = load_field rates_el_463["rate"] :: float
1584
+ %t2657 = call core.sub(%t2670, %t2674) :: float
1532
1585
  %t2680 = call core.eq(%t2687, %t2679) :: boolean
1533
1586
  %t2683 = select %t2680, %t2681, %t2687 :: float
1534
1587
  %t2661 = call core.sub(%t2683, %t2674) :: float
1535
- %t2657 = call core.sub(%t2670, %t2674) :: float
1536
1588
  %t2662 = call core.clamp(%t2657, %t2668, %t2661) :: float
1537
1589
  %t467 = call core.mul(%t2662, %t2699) :: float
1538
1590
  %acc_459 = acc_add agg.sum(%acc_459, %t467) :: float
@@ -1544,41 +1596,49 @@
1544
1596
  %t469 = load_input "fed" :: array
1545
1597
  %t470 = load_field t469["head_of_household"] :: any
1546
1598
  %t471 = load_field t470["rates"] :: any
1599
+ %t2700 = load_input "income" :: float
1600
+ %t2701 = load_input "fed" :: any
1601
+ %t2702 = load_field t2701["head_of_household"] :: any
1602
+ %t2703 = load_field t2702["std"] :: float
1603
+ %t2704 = call core.sub(%t2700, %t2703) :: float
1604
+ %t2705 = const 0 :: integer
1605
+ %t2706 = make_tuple(%t2704, %t2705) :: tuple<float, integer>
1606
+ %t2707 = fold %t2706 fn="agg.max" :: float
1547
1607
  %t2724 = const -1 :: integer
1548
1608
  %t2726 = const 100000000000.0 :: float
1549
1609
  loop rates id=L31 in %t471 as el=%rates_el_472, idx=%rates_i_473
1550
1610
  %t2719 = load_field rates_el_472["lo"] :: float
1551
1611
  %t2732 = load_field rates_el_472["hi"] :: float
1552
- %t476 = call core.gte(%t474, %t2719) :: boolean
1612
+ %t476 = call core.gte(%t2707, %t2719) :: boolean
1553
1613
  %t2725 = call core.eq(%t2732, %t2724) :: boolean
1554
1614
  %t2728 = select %t2725, %t2726, %t2732 :: float
1555
- %t479 = call core.lt(%t477, %t2728) :: boolean
1615
+ %t479 = call core.lt(%t2707, %t2728) :: boolean
1556
1616
  %t480 = call core.and(%t476, %t479) :: boolean
1557
1617
  yield %t480
1558
1618
  end_loop
1559
1619
  )
1560
1620
  (Declaration fed_marginal_hoh
1561
- %acc_481 = decl_acc :: float
1562
- %t482 = load_input "fed" :: array
1563
- %t483 = load_field t482["head_of_household"] :: any
1564
- %t484 = load_field t483["rates"] :: any
1565
1621
  %t2747 = load_input "income" :: float
1566
1622
  %t2748 = load_input "fed" :: any
1567
- %t2752 = const 0 :: integer
1568
- %t2771 = const -1 :: integer
1569
- %t2773 = const 100000000000.0 :: float
1570
1623
  %t2749 = load_field t2748["head_of_household"] :: any
1571
1624
  %t2750 = load_field t2749["std"] :: float
1572
1625
  %t2751 = call core.sub(%t2747, %t2750) :: float
1626
+ %t2752 = const 0 :: integer
1573
1627
  %t2753 = make_tuple(%t2751, %t2752) :: tuple<float, integer>
1574
1628
  %t2754 = fold %t2753 fn="agg.max" :: float
1629
+ %acc_481 = decl_acc :: float
1630
+ %t482 = load_input "fed" :: array
1631
+ %t483 = load_field t482["head_of_household"] :: any
1632
+ %t484 = load_field t483["rates"] :: any
1633
+ %t2771 = const -1 :: integer
1634
+ %t2773 = const 100000000000.0 :: float
1575
1635
  loop rates id=L32 in %t484 as el=%rates_el_485, idx=%rates_i_486
1576
1636
  %t2766 = load_field rates_el_485["lo"] :: float
1577
1637
  %t2779 = load_field rates_el_485["hi"] :: float
1578
1638
  %t2787 = load_field rates_el_485["rate"] :: float
1639
+ %t2743 = call core.gte(%t2754, %t2766) :: boolean
1579
1640
  %t2772 = call core.eq(%t2779, %t2771) :: boolean
1580
1641
  %t2775 = select %t2772, %t2773, %t2779 :: float
1581
- %t2743 = call core.gte(%t2754, %t2766) :: boolean
1582
1642
  %t2745 = call core.lt(%t2754, %t2775) :: boolean
1583
1643
  %t2746 = call core.and(%t2743, %t2745) :: boolean
1584
1644
  %t490 = select %t2746, %t2787, %t2752 :: float
@@ -1588,28 +1648,28 @@
1588
1648
  yield %t491
1589
1649
  )
1590
1650
  (Declaration fed_eff_hoh
1591
- %acc2789 = decl_acc :: float
1592
- %t2790 = load_input "fed" :: array
1593
- %t2791 = load_field t2790["head_of_household"] :: any
1594
- %t2792 = load_field t2791["rates"] :: any
1595
1651
  %t2810 = load_input "income" :: float
1596
1652
  %t2811 = load_input "fed" :: any
1597
- %t2815 = const 0 :: integer
1598
- %t2826 = const -1 :: integer
1599
- %t2828 = const 100000000000.0 :: float
1600
1653
  %t2812 = load_field t2811["head_of_household"] :: any
1601
1654
  %t2813 = load_field t2812["std"] :: float
1602
1655
  %t2814 = call core.sub(%t2810, %t2813) :: float
1656
+ %t2815 = const 0 :: integer
1603
1657
  %t2816 = make_tuple(%t2814, %t2815) :: tuple<float, integer>
1604
1658
  %t2817 = fold %t2816 fn="agg.max" :: float
1659
+ %acc2789 = decl_acc :: float
1660
+ %t2790 = load_input "fed" :: array
1661
+ %t2791 = load_field t2790["head_of_household"] :: any
1662
+ %t2792 = load_field t2791["rates"] :: any
1663
+ %t2826 = const -1 :: integer
1664
+ %t2828 = const 100000000000.0 :: float
1605
1665
  loop rates id=L48 in %t2792 as el=%t2793, idx=%t2794
1606
1666
  %t2821 = load_field t2793["lo"] :: float
1607
1667
  %t2834 = load_field t2793["hi"] :: float
1608
1668
  %t2846 = load_field t2793["rate"] :: float
1669
+ %t2804 = call core.sub(%t2817, %t2821) :: float
1609
1670
  %t2827 = call core.eq(%t2834, %t2826) :: boolean
1610
1671
  %t2830 = select %t2827, %t2828, %t2834 :: float
1611
1672
  %t2808 = call core.sub(%t2830, %t2821) :: float
1612
- %t2804 = call core.sub(%t2817, %t2821) :: float
1613
1673
  %t2809 = call core.clamp(%t2804, %t2815, %t2808) :: float
1614
1674
  %t2797 = call core.mul(%t2809, %t2846) :: float
1615
1675
  %acc2789 = acc_add agg.sum(%acc2789, %t2797) :: float
@@ -1696,28 +1756,28 @@
1696
1756
  yield %t519
1697
1757
  )
1698
1758
  (Declaration total_tax_hoh
1699
- %acc2900 = decl_acc :: float
1700
- %t2901 = load_input "fed" :: array
1701
- %t2902 = load_field t2901["head_of_household"] :: any
1702
- %t2903 = load_field t2902["rates"] :: any
1703
1759
  %t2921 = load_input "income" :: float
1704
1760
  %t2922 = load_input "fed" :: any
1705
- %t2926 = const 0 :: integer
1706
- %t2937 = const -1 :: integer
1707
- %t2939 = const 100000000000.0 :: float
1708
1761
  %t2923 = load_field t2922["head_of_household"] :: any
1709
1762
  %t2924 = load_field t2923["std"] :: float
1710
1763
  %t2925 = call core.sub(%t2921, %t2924) :: float
1764
+ %t2926 = const 0 :: integer
1711
1765
  %t2927 = make_tuple(%t2925, %t2926) :: tuple<float, integer>
1712
1766
  %t2928 = fold %t2927 fn="agg.max" :: float
1767
+ %acc2900 = decl_acc :: float
1768
+ %t2901 = load_input "fed" :: array
1769
+ %t2902 = load_field t2901["head_of_household"] :: any
1770
+ %t2903 = load_field t2902["rates"] :: any
1771
+ %t2937 = const -1 :: integer
1772
+ %t2939 = const 100000000000.0 :: float
1713
1773
  loop rates id=L49 in %t2903 as el=%t2904, idx=%t2905
1714
1774
  %t2932 = load_field t2904["lo"] :: float
1715
1775
  %t2945 = load_field t2904["hi"] :: float
1716
1776
  %t2957 = load_field t2904["rate"] :: float
1777
+ %t2915 = call core.sub(%t2928, %t2932) :: float
1717
1778
  %t2938 = call core.eq(%t2945, %t2937) :: boolean
1718
1779
  %t2941 = select %t2938, %t2939, %t2945 :: float
1719
1780
  %t2919 = call core.sub(%t2941, %t2932) :: float
1720
- %t2915 = call core.sub(%t2928, %t2932) :: float
1721
1781
  %t2920 = call core.clamp(%t2915, %t2926, %t2919) :: float
1722
1782
  %t2908 = call core.mul(%t2920, %t2957) :: float
1723
1783
  %acc2900 = acc_add agg.sum(%acc2900, %t2908) :: float
@@ -1748,28 +1808,28 @@
1748
1808
  yield %t526
1749
1809
  )
1750
1810
  (Declaration total_eff_hoh
1751
- %acc2996 = decl_acc :: float
1752
- %t2997 = load_input "fed" :: array
1753
- %t2998 = load_field t2997["head_of_household"] :: any
1754
- %t2999 = load_field t2998["rates"] :: any
1755
1811
  %t3017 = load_input "income" :: float
1756
1812
  %t3018 = load_input "fed" :: any
1757
- %t3022 = const 0 :: integer
1758
- %t3033 = const -1 :: integer
1759
- %t3035 = const 100000000000.0 :: float
1760
1813
  %t3019 = load_field t3018["head_of_household"] :: any
1761
1814
  %t3020 = load_field t3019["std"] :: float
1762
1815
  %t3021 = call core.sub(%t3017, %t3020) :: float
1816
+ %t3022 = const 0 :: integer
1763
1817
  %t3023 = make_tuple(%t3021, %t3022) :: tuple<float, integer>
1764
1818
  %t3024 = fold %t3023 fn="agg.max" :: float
1819
+ %acc2996 = decl_acc :: float
1820
+ %t2997 = load_input "fed" :: array
1821
+ %t2998 = load_field t2997["head_of_household"] :: any
1822
+ %t2999 = load_field t2998["rates"] :: any
1823
+ %t3033 = const -1 :: integer
1824
+ %t3035 = const 100000000000.0 :: float
1765
1825
  loop rates id=L50 in %t2999 as el=%t3000, idx=%t3001
1766
1826
  %t3028 = load_field t3000["lo"] :: float
1767
1827
  %t3041 = load_field t3000["hi"] :: float
1768
1828
  %t3053 = load_field t3000["rate"] :: float
1829
+ %t3011 = call core.sub(%t3024, %t3028) :: float
1769
1830
  %t3034 = call core.eq(%t3041, %t3033) :: boolean
1770
1831
  %t3037 = select %t3034, %t3035, %t3041 :: float
1771
1832
  %t3015 = call core.sub(%t3037, %t3028) :: float
1772
- %t3011 = call core.sub(%t3024, %t3028) :: float
1773
1833
  %t3016 = call core.clamp(%t3011, %t3022, %t3015) :: float
1774
1834
  %t3004 = call core.mul(%t3016, %t3053) :: float
1775
1835
  %acc2996 = acc_add agg.sum(%acc2996, %t3004) :: float
@@ -1805,27 +1865,27 @@
1805
1865
  )
1806
1866
  (Declaration after_tax_hoh
1807
1867
  %t533 = load_input "income" :: float
1808
- %acc3092 = decl_acc :: float
1809
- %t3093 = load_input "fed" :: array
1810
- %t3094 = load_field t3093["head_of_household"] :: any
1811
- %t3095 = load_field t3094["rates"] :: any
1812
1868
  %t3114 = load_input "fed" :: any
1813
- %t3118 = const 0 :: integer
1814
- %t3129 = const -1 :: integer
1815
- %t3131 = const 100000000000.0 :: float
1816
1869
  %t3115 = load_field t3114["head_of_household"] :: any
1817
1870
  %t3116 = load_field t3115["std"] :: float
1818
1871
  %t3117 = call core.sub(%t533, %t3116) :: float
1872
+ %t3118 = const 0 :: integer
1819
1873
  %t3119 = make_tuple(%t3117, %t3118) :: tuple<float, integer>
1820
1874
  %t3120 = fold %t3119 fn="agg.max" :: float
1875
+ %acc3092 = decl_acc :: float
1876
+ %t3093 = load_input "fed" :: array
1877
+ %t3094 = load_field t3093["head_of_household"] :: any
1878
+ %t3095 = load_field t3094["rates"] :: any
1879
+ %t3129 = const -1 :: integer
1880
+ %t3131 = const 100000000000.0 :: float
1821
1881
  loop rates id=L51 in %t3095 as el=%t3096, idx=%t3097
1822
1882
  %t3124 = load_field t3096["lo"] :: float
1823
1883
  %t3137 = load_field t3096["hi"] :: float
1824
1884
  %t3149 = load_field t3096["rate"] :: float
1885
+ %t3107 = call core.sub(%t3120, %t3124) :: float
1825
1886
  %t3130 = call core.eq(%t3137, %t3129) :: boolean
1826
1887
  %t3133 = select %t3130, %t3131, %t3137 :: float
1827
1888
  %t3111 = call core.sub(%t3133, %t3124) :: float
1828
- %t3107 = call core.sub(%t3120, %t3124) :: float
1829
1889
  %t3112 = call core.clamp(%t3107, %t3118, %t3111) :: float
1830
1890
  %t3100 = call core.mul(%t3112, %t3149) :: float
1831
1891
  %acc3092 = acc_add agg.sum(%acc3092, %t3100) :: float
@@ -1858,27 +1918,27 @@
1858
1918
  )
1859
1919
  (Declaration take_home_hoh
1860
1920
  %t3180 = load_input "income" :: float
1861
- %acc3191 = decl_acc :: float
1862
- %t3192 = load_input "fed" :: array
1863
- %t3193 = load_field t3192["head_of_household"] :: any
1864
- %t3194 = load_field t3193["rates"] :: any
1865
1921
  %t3213 = load_input "fed" :: any
1866
- %t3217 = const 0 :: integer
1867
- %t3228 = const -1 :: integer
1868
- %t3230 = const 100000000000.0 :: float
1869
1922
  %t3214 = load_field t3213["head_of_household"] :: any
1870
1923
  %t3215 = load_field t3214["std"] :: float
1871
1924
  %t3216 = call core.sub(%t3180, %t3215) :: float
1925
+ %t3217 = const 0 :: integer
1872
1926
  %t3218 = make_tuple(%t3216, %t3217) :: tuple<float, integer>
1873
1927
  %t3219 = fold %t3218 fn="agg.max" :: float
1928
+ %acc3191 = decl_acc :: float
1929
+ %t3192 = load_input "fed" :: array
1930
+ %t3193 = load_field t3192["head_of_household"] :: any
1931
+ %t3194 = load_field t3193["rates"] :: any
1932
+ %t3228 = const -1 :: integer
1933
+ %t3230 = const 100000000000.0 :: float
1874
1934
  loop rates id=L52 in %t3194 as el=%t3195, idx=%t3196
1875
1935
  %t3223 = load_field t3195["lo"] :: float
1876
1936
  %t3236 = load_field t3195["hi"] :: float
1877
1937
  %t3248 = load_field t3195["rate"] :: float
1938
+ %t3206 = call core.sub(%t3219, %t3223) :: float
1878
1939
  %t3229 = call core.eq(%t3236, %t3228) :: boolean
1879
1940
  %t3232 = select %t3229, %t3230, %t3236 :: float
1880
1941
  %t3210 = call core.sub(%t3232, %t3223) :: float
1881
- %t3206 = call core.sub(%t3219, %t3223) :: float
1882
1942
  %t3211 = call core.clamp(%t3206, %t3217, %t3210) :: float
1883
1943
  %t3199 = call core.mul(%t3211, %t3248) :: float
1884
1944
  %acc3191 = acc_add agg.sum(%acc3191, %t3199) :: float
@@ -1912,28 +1972,28 @@
1912
1972
  yield %t538
1913
1973
  )
1914
1974
  (Declaration summary
1915
- %acc3280 = decl_acc :: float
1916
- %t3281 = load_input "fed" :: array
1917
- %t3282 = load_field t3281["single"] :: any
1918
- %t3283 = load_field t3282["rates"] :: any
1919
- %acc3349 = decl_acc :: float
1920
1975
  %t3301 = load_input "income" :: float
1921
1976
  %t3302 = load_input "fed" :: any
1922
- %t3306 = const 0 :: integer
1923
- %t3325 = const -1 :: integer
1924
- %t3327 = const 100000000000.0 :: float
1925
1977
  %t3303 = load_field t3302["single"] :: any
1926
1978
  %t3304 = load_field t3303["std"] :: float
1927
1979
  %t3305 = call core.sub(%t3301, %t3304) :: float
1980
+ %t3306 = const 0 :: integer
1928
1981
  %t3307 = make_tuple(%t3305, %t3306) :: tuple<float, integer>
1929
1982
  %t3308 = fold %t3307 fn="agg.max" :: float
1983
+ %acc3280 = decl_acc :: float
1984
+ %t3281 = load_input "fed" :: array
1985
+ %t3282 = load_field t3281["single"] :: any
1986
+ %t3283 = load_field t3282["rates"] :: any
1987
+ %acc3349 = decl_acc :: float
1988
+ %t3325 = const -1 :: integer
1989
+ %t3327 = const 100000000000.0 :: float
1930
1990
  loop rates id=L53 in %t3283 as el=%t3284, idx=%t3285
1931
1991
  %t3320 = load_field t3284["lo"] :: float
1932
1992
  %t3333 = load_field t3284["hi"] :: float
1933
1993
  %t3341 = load_field t3284["rate"] :: float
1994
+ %t3297 = call core.gte(%t3308, %t3320) :: boolean
1934
1995
  %t3326 = call core.eq(%t3333, %t3325) :: boolean
1935
1996
  %t3329 = select %t3326, %t3327, %t3333 :: float
1936
- %t3297 = call core.gte(%t3308, %t3320) :: boolean
1937
1997
  %t3299 = call core.lt(%t3308, %t3329) :: boolean
1938
1998
  %t3300 = call core.and(%t3297, %t3299) :: boolean
1939
1999
  %t3289 = select %t3300, %t3341, %t3306 :: float
@@ -2063,22 +2123,22 @@
2063
2123
  %t3818 = call core.sub(%t3301, %t3825) :: float
2064
2124
  %t3815 = call core.sub(%t3818, %t558) :: float
2065
2125
  %t560 = make_object{federal: %t542, fica: %t545, state: %t549, local: %t553, total: %t556, after_tax: %t3718, retirement_contrib: %t558, take_home: %t3815} :: object
2066
- %acc3914 = decl_acc :: float
2067
- %t3916 = load_field t3281["married_joint"] :: any
2068
- %t3917 = load_field t3916["rates"] :: any
2069
- %acc3983 = decl_acc :: float
2070
2126
  %t3937 = load_field t3302["married_joint"] :: any
2071
2127
  %t3938 = load_field t3937["std"] :: float
2072
2128
  %t3939 = call core.sub(%t3301, %t3938) :: float
2073
2129
  %t3941 = make_tuple(%t3939, %t3306) :: tuple<float, integer>
2074
2130
  %t3942 = fold %t3941 fn="agg.max" :: float
2131
+ %acc3914 = decl_acc :: float
2132
+ %t3916 = load_field t3281["married_joint"] :: any
2133
+ %t3917 = load_field t3916["rates"] :: any
2134
+ %acc3983 = decl_acc :: float
2075
2135
  loop rates id=L60 in %t3917 as el=%t3918, idx=%t3919
2076
2136
  %t3954 = load_field t3918["lo"] :: float
2077
2137
  %t3967 = load_field t3918["hi"] :: float
2078
2138
  %t3975 = load_field t3918["rate"] :: float
2139
+ %t3931 = call core.gte(%t3942, %t3954) :: boolean
2079
2140
  %t3960 = call core.eq(%t3967, %t3325) :: boolean
2080
2141
  %t3963 = select %t3960, %t3327, %t3967 :: float
2081
- %t3931 = call core.gte(%t3942, %t3954) :: boolean
2082
2142
  %t3933 = call core.lt(%t3942, %t3963) :: boolean
2083
2143
  %t3934 = call core.and(%t3931, %t3933) :: boolean
2084
2144
  %t3923 = select %t3934, %t3975, %t3306 :: float
@@ -2189,22 +2249,22 @@
2189
2249
  %t4462 = call core.sub(%t3301, %t4469) :: float
2190
2250
  %t4459 = call core.sub(%t4462, %t558) :: float
2191
2251
  %t582 = make_object{federal: %t564, fica: %t567, state: %t549, local: %t553, total: %t578, after_tax: %t4360, retirement_contrib: %t558, take_home: %t4459} :: object
2192
- %acc4560 = decl_acc :: float
2193
- %t4562 = load_field t3281["married_separate"] :: any
2194
- %t4563 = load_field t4562["rates"] :: any
2195
- %acc4629 = decl_acc :: float
2196
2252
  %t4583 = load_field t3302["married_separate"] :: any
2197
2253
  %t4584 = load_field t4583["std"] :: float
2198
2254
  %t4585 = call core.sub(%t3301, %t4584) :: float
2199
2255
  %t4587 = make_tuple(%t4585, %t3306) :: tuple<float, integer>
2200
2256
  %t4588 = fold %t4587 fn="agg.max" :: float
2257
+ %acc4560 = decl_acc :: float
2258
+ %t4562 = load_field t3281["married_separate"] :: any
2259
+ %t4563 = load_field t4562["rates"] :: any
2260
+ %acc4629 = decl_acc :: float
2201
2261
  loop rates id=L67 in %t4563 as el=%t4564, idx=%t4565
2202
2262
  %t4600 = load_field t4564["lo"] :: float
2203
2263
  %t4613 = load_field t4564["hi"] :: float
2204
2264
  %t4621 = load_field t4564["rate"] :: float
2265
+ %t4577 = call core.gte(%t4588, %t4600) :: boolean
2205
2266
  %t4606 = call core.eq(%t4613, %t3325) :: boolean
2206
2267
  %t4609 = select %t4606, %t3327, %t4613 :: float
2207
- %t4577 = call core.gte(%t4588, %t4600) :: boolean
2208
2268
  %t4579 = call core.lt(%t4588, %t4609) :: boolean
2209
2269
  %t4580 = call core.and(%t4577, %t4579) :: boolean
2210
2270
  %t4569 = select %t4580, %t4621, %t3306 :: float
@@ -2315,22 +2375,22 @@
2315
2375
  %t5108 = call core.sub(%t3301, %t5115) :: float
2316
2376
  %t5105 = call core.sub(%t5108, %t558) :: float
2317
2377
  %t604 = make_object{federal: %t586, fica: %t589, state: %t549, local: %t553, total: %t600, after_tax: %t5006, retirement_contrib: %t558, take_home: %t5105} :: object
2318
- %acc5206 = decl_acc :: float
2319
- %t5208 = load_field t3281["head_of_household"] :: any
2320
- %t5209 = load_field t5208["rates"] :: any
2321
- %acc5275 = decl_acc :: float
2322
2378
  %t5229 = load_field t3302["head_of_household"] :: any
2323
2379
  %t5230 = load_field t5229["std"] :: float
2324
2380
  %t5231 = call core.sub(%t3301, %t5230) :: float
2325
2381
  %t5233 = make_tuple(%t5231, %t3306) :: tuple<float, integer>
2326
2382
  %t5234 = fold %t5233 fn="agg.max" :: float
2383
+ %acc5206 = decl_acc :: float
2384
+ %t5208 = load_field t3281["head_of_household"] :: any
2385
+ %t5209 = load_field t5208["rates"] :: any
2386
+ %acc5275 = decl_acc :: float
2327
2387
  loop rates id=L74 in %t5209 as el=%t5210, idx=%t5211
2328
2388
  %t5246 = load_field t5210["lo"] :: float
2329
2389
  %t5259 = load_field t5210["hi"] :: float
2330
2390
  %t5267 = load_field t5210["rate"] :: float
2391
+ %t5223 = call core.gte(%t5234, %t5246) :: boolean
2331
2392
  %t5252 = call core.eq(%t5259, %t3325) :: boolean
2332
2393
  %t5255 = select %t5252, %t3327, %t5259 :: float
2333
- %t5223 = call core.gte(%t5234, %t5246) :: boolean
2334
2394
  %t5225 = call core.lt(%t5234, %t5255) :: boolean
2335
2395
  %t5226 = call core.and(%t5223, %t5225) :: boolean
2336
2396
  %t5215 = select %t5226, %t5267, %t3306 :: float