kumi 0.0.22 → 0.0.24

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +60 -116
  4. data/golden/array_element/expected/schema_ruby.rb +1 -1
  5. data/golden/array_index/expected/schema_ruby.rb +1 -1
  6. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  7. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  8. data/golden/chained_fusion/expected/schema_ruby.rb +1 -1
  9. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  10. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +1 -1
  11. data/golden/game_of_life/expected/lir_00_unoptimized.txt +33 -33
  12. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +33 -33
  13. data/golden/game_of_life/expected/lir_02_inlined.txt +296 -296
  14. data/golden/game_of_life/expected/lir_03_cse.txt +128 -128
  15. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +128 -128
  16. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +128 -128
  17. data/golden/game_of_life/expected/lir_06_const_prop.txt +128 -128
  18. data/golden/game_of_life/expected/schema_ruby.rb +1 -1
  19. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  20. data/golden/hash_keys/schema.kumi +4 -5
  21. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  22. data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -1
  23. data/golden/inline_rename_scope_leak/expected/ast.txt +48 -0
  24. data/golden/inline_rename_scope_leak/expected/input_plan.txt +10 -0
  25. data/golden/inline_rename_scope_leak/expected/lir_00_unoptimized.txt +35 -0
  26. data/golden/inline_rename_scope_leak/expected/lir_01_hoist_scalar_references.txt +35 -0
  27. data/golden/inline_rename_scope_leak/expected/lir_02_inlined.txt +49 -0
  28. data/golden/inline_rename_scope_leak/expected/lir_03_cse.txt +49 -0
  29. data/golden/inline_rename_scope_leak/expected/lir_04_1_loop_fusion.txt +49 -0
  30. data/golden/inline_rename_scope_leak/expected/lir_04_loop_invcm.txt +49 -0
  31. data/golden/inline_rename_scope_leak/expected/lir_06_const_prop.txt +49 -0
  32. data/golden/inline_rename_scope_leak/expected/nast.txt +31 -0
  33. data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +51 -0
  34. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +82 -0
  35. data/golden/inline_rename_scope_leak/expected/snast.txt +31 -0
  36. data/golden/inline_rename_scope_leak/expected.json +7 -0
  37. data/golden/inline_rename_scope_leak/input.json +4 -0
  38. data/golden/inline_rename_scope_leak/schema.kumi +24 -0
  39. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  40. data/golden/interleaved_fusion/expected/schema_ruby.rb +1 -1
  41. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  42. data/golden/loop_fusion/expected/schema_ruby.rb +1 -1
  43. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  44. data/golden/mixed_dimensions/expected/schema_ruby.rb +1 -1
  45. data/golden/multirank_hoisting/expected/schema_ruby.rb +1 -1
  46. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  47. data/golden/reduction_broadcast/expected/schema_ruby.rb +1 -1
  48. data/golden/roll/expected/lir_00_unoptimized.txt +8 -8
  49. data/golden/roll/expected/lir_01_hoist_scalar_references.txt +8 -8
  50. data/golden/roll/expected/lir_02_inlined.txt +8 -8
  51. data/golden/roll/expected/lir_03_cse.txt +8 -8
  52. data/golden/roll/expected/lir_04_1_loop_fusion.txt +8 -8
  53. data/golden/roll/expected/lir_04_loop_invcm.txt +8 -8
  54. data/golden/roll/expected/lir_06_const_prop.txt +8 -8
  55. data/golden/roll/expected/schema_ruby.rb +1 -1
  56. data/golden/shift/expected/lir_00_unoptimized.txt +12 -12
  57. data/golden/shift/expected/lir_01_hoist_scalar_references.txt +12 -12
  58. data/golden/shift/expected/lir_02_inlined.txt +12 -12
  59. data/golden/shift/expected/lir_03_cse.txt +12 -12
  60. data/golden/shift/expected/lir_04_1_loop_fusion.txt +12 -12
  61. data/golden/shift/expected/lir_04_loop_invcm.txt +12 -12
  62. data/golden/shift/expected/lir_06_const_prop.txt +12 -12
  63. data/golden/shift/expected/schema_ruby.rb +1 -1
  64. data/golden/shift_2d/expected/lir_00_unoptimized.txt +48 -48
  65. data/golden/shift_2d/expected/lir_01_hoist_scalar_references.txt +48 -48
  66. data/golden/shift_2d/expected/lir_02_inlined.txt +48 -48
  67. data/golden/shift_2d/expected/lir_03_cse.txt +48 -48
  68. data/golden/shift_2d/expected/lir_04_1_loop_fusion.txt +48 -48
  69. data/golden/shift_2d/expected/lir_04_loop_invcm.txt +48 -48
  70. data/golden/shift_2d/expected/lir_06_const_prop.txt +48 -48
  71. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  72. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  73. data/golden/streaming_basics/expected/schema_ruby.rb +1 -1
  74. data/golden/tuples/expected/lir_00_unoptimized.txt +4 -4
  75. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +4 -4
  76. data/golden/tuples/expected/lir_02_inlined.txt +4 -4
  77. data/golden/tuples/expected/lir_03_cse.txt +4 -4
  78. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +4 -4
  79. data/golden/tuples/expected/lir_04_loop_invcm.txt +4 -4
  80. data/golden/tuples/expected/lir_06_const_prop.txt +4 -4
  81. data/golden/tuples/expected/schema_ruby.rb +1 -1
  82. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
  83. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
  84. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +2 -2
  85. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +2 -2
  86. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +2 -2
  87. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +2 -2
  88. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +2 -2
  89. data/golden/tuples_and_arrays/expected/schema_ruby.rb +1 -1
  90. data/golden/us_tax_2024/expected/ast.txt +865 -0
  91. data/golden/us_tax_2024/expected/input_plan.txt +61 -0
  92. data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +901 -0
  93. data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +901 -0
  94. data/golden/us_tax_2024/expected/lir_02_inlined.txt +5178 -0
  95. data/golden/us_tax_2024/expected/lir_03_cse.txt +2499 -0
  96. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +2519 -0
  97. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +2439 -0
  98. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +2439 -0
  99. data/golden/us_tax_2024/expected/nast.txt +976 -0
  100. data/golden/us_tax_2024/expected/schema_javascript.mjs +584 -0
  101. data/golden/us_tax_2024/expected/schema_ruby.rb +639 -0
  102. data/golden/us_tax_2024/expected/snast.txt +976 -0
  103. data/golden/us_tax_2024/expected.json +1 -0
  104. data/golden/us_tax_2024/input.json +168 -0
  105. data/golden/us_tax_2024/schema.kumi +203 -0
  106. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  107. data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +181 -105
  108. data/lib/kumi/core/analyzer/passes/output_schema_pass.rb +6 -4
  109. data/lib/kumi/core/functions/function_spec.rb +14 -8
  110. data/lib/kumi/core/functions/loader.rb +1 -1
  111. data/lib/kumi/version.rb +1 -1
  112. metadata +33 -1
@@ -0,0 +1,2439 @@
1
+ (LIR
2
+ (Declaration state_tax
3
+ %t1 = load_input "income" :: float
4
+ %t2 = load_input "state_rate" :: float
5
+ %t3 = call core.mul(%t1, %t2) :: float
6
+ yield %t3
7
+ )
8
+ (Declaration local_tax
9
+ %t4 = load_input "income" :: float
10
+ %t5 = load_input "local_rate" :: float
11
+ %t6 = call core.mul(%t4, %t5) :: float
12
+ yield %t6
13
+ )
14
+ (Declaration taxable_single
15
+ %t7 = load_input "income" :: float
16
+ %t8 = load_input "fed" :: any
17
+ %t9 = load_field t8["single"] :: any
18
+ %t10 = load_field t9["std"] :: float
19
+ %t11 = call core.sub(%t7, %t10) :: float
20
+ %t12 = const 0 :: integer
21
+ %t13 = make_tuple(%t11, %t12) :: tuple<float, integer>
22
+ %t14 = fold %t13 fn="agg.max" :: float
23
+ yield %t14
24
+ )
25
+ (Declaration lo_s
26
+ %t15 = load_input "fed" :: array
27
+ %t16 = load_field t15["single"] :: any
28
+ %t17 = load_field t16["rates"] :: any
29
+ loop rates id=L1 in %t17 as el=%rates_el_18, idx=%rates_i_19
30
+ %t20 = load_field rates_el_18["lo"] :: float
31
+ yield %t20
32
+ end_loop
33
+ )
34
+ (Declaration hi_s
35
+ %t21 = load_input "fed" :: array
36
+ %t22 = load_field t21["single"] :: any
37
+ %t23 = load_field t22["rates"] :: any
38
+ loop rates id=L2 in %t23 as el=%rates_el_24, idx=%rates_i_25
39
+ %t26 = load_field rates_el_24["hi"] :: float
40
+ yield %t26
41
+ end_loop
42
+ )
43
+ (Declaration rate_s
44
+ %t27 = load_input "fed" :: array
45
+ %t28 = load_field t27["single"] :: any
46
+ %t29 = load_field t28["rates"] :: any
47
+ loop rates id=L3 in %t29 as el=%rates_el_30, idx=%rates_i_31
48
+ %t32 = load_field rates_el_30["rate"] :: float
49
+ yield %t32
50
+ end_loop
51
+ )
52
+ (Declaration big_hi
53
+ %t33 = const 100000000000.0 :: float
54
+ yield %t33
55
+ )
56
+ (Declaration hi_s_eff
57
+ %t34 = load_input "fed" :: array
58
+ %t35 = load_field t34["single"] :: any
59
+ %t36 = load_field t35["rates"] :: any
60
+ %t40 = const -1 :: integer
61
+ %t42 = const 100000000000.0 :: float
62
+ loop rates id=L4 in %t36 as el=%rates_el_37, idx=%rates_i_38
63
+ %t631 = load_field rates_el_37["hi"] :: float
64
+ %t41 = call core.eq(%t631, %t40) :: boolean
65
+ %t44 = select %t41, %t42, %t631 :: float
66
+ yield %t44
67
+ end_loop
68
+ )
69
+ (Declaration amt_s
70
+ %t45 = load_input "fed" :: array
71
+ %t46 = load_field t45["single"] :: any
72
+ %t47 = load_field t46["rates"] :: any
73
+ %t641 = const 0 :: integer
74
+ %t652 = const -1 :: integer
75
+ %t654 = const 100000000000.0 :: float
76
+ loop rates id=L5 in %t47 as el=%rates_el_48, idx=%rates_i_49
77
+ %t647 = load_field rates_el_48["lo"] :: float
78
+ %t660 = load_field rates_el_48["hi"] :: float
79
+ %t52 = call core.sub(%t50, %t647) :: float
80
+ %t653 = call core.eq(%t660, %t652) :: boolean
81
+ %t656 = select %t653, %t654, %t660 :: float
82
+ %t56 = call core.sub(%t656, %t647) :: float
83
+ %t57 = call core.clamp(%t52, %t641, %t56) :: float
84
+ yield %t57
85
+ end_loop
86
+ )
87
+ (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
+ %t680 = load_input "income" :: float
93
+ %t681 = load_input "fed" :: any
94
+ %t685 = const 0 :: integer
95
+ %t696 = const -1 :: integer
96
+ %t698 = const 100000000000.0 :: float
97
+ %t682 = load_field t681["single"] :: any
98
+ %t683 = load_field t682["std"] :: float
99
+ %t684 = call core.sub(%t680, %t683) :: float
100
+ %t686 = make_tuple(%t684, %t685) :: tuple<float, integer>
101
+ %t687 = fold %t686 fn="agg.max" :: float
102
+ loop rates id=L6 in %t61 as el=%rates_el_62, idx=%rates_i_63
103
+ %t691 = load_field rates_el_62["lo"] :: float
104
+ %t704 = load_field rates_el_62["hi"] :: float
105
+ %t716 = load_field rates_el_62["rate"] :: float
106
+ %t697 = call core.eq(%t704, %t696) :: boolean
107
+ %t700 = select %t697, %t698, %t704 :: float
108
+ %t678 = call core.sub(%t700, %t691) :: float
109
+ %t674 = call core.sub(%t687, %t691) :: float
110
+ %t679 = call core.clamp(%t674, %t685, %t678) :: float
111
+ %t66 = call core.mul(%t679, %t716) :: float
112
+ %acc_58 = acc_add agg.sum(%acc_58, %t66) :: float
113
+ end_loop
114
+ %t67 = acc_load %acc_58 :: float
115
+ yield %t67
116
+ )
117
+ (Declaration in_br_s
118
+ %t68 = load_input "fed" :: array
119
+ %t69 = load_field t68["single"] :: any
120
+ %t70 = load_field t69["rates"] :: any
121
+ %t741 = const -1 :: integer
122
+ %t743 = const 100000000000.0 :: float
123
+ loop rates id=L7 in %t70 as el=%rates_el_71, idx=%rates_i_72
124
+ %t736 = load_field rates_el_71["lo"] :: float
125
+ %t749 = load_field rates_el_71["hi"] :: float
126
+ %t75 = call core.gte(%t73, %t736) :: boolean
127
+ %t742 = call core.eq(%t749, %t741) :: boolean
128
+ %t745 = select %t742, %t743, %t749 :: float
129
+ %t78 = call core.lt(%t76, %t745) :: boolean
130
+ %t79 = call core.and(%t75, %t78) :: boolean
131
+ yield %t79
132
+ end_loop
133
+ )
134
+ (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
+ %t764 = load_input "income" :: float
140
+ %t765 = load_input "fed" :: any
141
+ %t769 = const 0 :: integer
142
+ %t788 = const -1 :: integer
143
+ %t790 = const 100000000000.0 :: float
144
+ %t766 = load_field t765["single"] :: any
145
+ %t767 = load_field t766["std"] :: float
146
+ %t768 = call core.sub(%t764, %t767) :: float
147
+ %t770 = make_tuple(%t768, %t769) :: tuple<float, integer>
148
+ %t771 = fold %t770 fn="agg.max" :: float
149
+ loop rates id=L8 in %t83 as el=%rates_el_84, idx=%rates_i_85
150
+ %t783 = load_field rates_el_84["lo"] :: float
151
+ %t796 = load_field rates_el_84["hi"] :: float
152
+ %t804 = load_field rates_el_84["rate"] :: float
153
+ %t789 = call core.eq(%t796, %t788) :: boolean
154
+ %t792 = select %t789, %t790, %t796 :: float
155
+ %t760 = call core.gte(%t771, %t783) :: boolean
156
+ %t762 = call core.lt(%t771, %t792) :: boolean
157
+ %t763 = call core.and(%t760, %t762) :: boolean
158
+ %t89 = select %t763, %t804, %t769 :: float
159
+ %acc_80 = acc_add agg.sum(%acc_80, %t89) :: float
160
+ end_loop
161
+ %t90 = acc_load %acc_80 :: float
162
+ yield %t90
163
+ )
164
+ (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
+ %t827 = load_input "income" :: float
170
+ %t828 = load_input "fed" :: any
171
+ %t832 = const 0 :: integer
172
+ %t843 = const -1 :: integer
173
+ %t845 = const 100000000000.0 :: float
174
+ %t829 = load_field t828["single"] :: any
175
+ %t830 = load_field t829["std"] :: float
176
+ %t831 = call core.sub(%t827, %t830) :: float
177
+ %t833 = make_tuple(%t831, %t832) :: tuple<float, integer>
178
+ %t834 = fold %t833 fn="agg.max" :: float
179
+ loop rates id=L33 in %t809 as el=%t810, idx=%t811
180
+ %t838 = load_field t810["lo"] :: float
181
+ %t851 = load_field t810["hi"] :: float
182
+ %t863 = load_field t810["rate"] :: float
183
+ %t844 = call core.eq(%t851, %t843) :: boolean
184
+ %t847 = select %t844, %t845, %t851 :: float
185
+ %t825 = call core.sub(%t847, %t838) :: float
186
+ %t821 = call core.sub(%t834, %t838) :: float
187
+ %t826 = call core.clamp(%t821, %t832, %t825) :: float
188
+ %t814 = call core.mul(%t826, %t863) :: float
189
+ %acc806 = acc_add agg.sum(%acc806, %t814) :: float
190
+ end_loop
191
+ %t815 = acc_load %acc806 :: float
192
+ %t93 = const 1.0 :: float
193
+ %t94 = make_tuple(%t827, %t93) :: tuple<float>
194
+ %t95 = fold %t94 fn="agg.max" :: float
195
+ %t96 = call core.div(%t815, %t95) :: float
196
+ yield %t96
197
+ )
198
+ (Declaration ss_wage_base
199
+ %t97 = const 168600.0 :: float
200
+ yield %t97
201
+ )
202
+ (Declaration ss_rate
203
+ %t98 = const 0.062 :: float
204
+ yield %t98
205
+ )
206
+ (Declaration ss_tax_s
207
+ %t99 = load_input "income" :: float
208
+ %t100 = const 168600.0 :: float
209
+ %t101 = make_tuple(%t99, %t100) :: tuple<float>
210
+ %t102 = fold %t101 fn="agg.min" :: float
211
+ %t103 = const 0.062 :: float
212
+ %t104 = call core.mul(%t102, %t103) :: float
213
+ yield %t104
214
+ )
215
+ (Declaration med_base_rate
216
+ %t105 = const 0.0145 :: float
217
+ yield %t105
218
+ )
219
+ (Declaration med_tax_s
220
+ %t106 = load_input "income" :: float
221
+ %t107 = const 0.0145 :: float
222
+ %t108 = call core.mul(%t106, %t107) :: float
223
+ yield %t108
224
+ )
225
+ (Declaration addl_threshold_single
226
+ %t109 = const 200000.0 :: float
227
+ yield %t109
228
+ )
229
+ (Declaration addl_med_rate
230
+ %t110 = const 0.009 :: float
231
+ yield %t110
232
+ )
233
+ (Declaration addl_med_tax_s
234
+ %t111 = load_input "income" :: float
235
+ %t112 = const 200000.0 :: float
236
+ %t113 = call core.sub(%t111, %t112) :: float
237
+ %t114 = const 0 :: integer
238
+ %t115 = make_tuple(%t113, %t114) :: tuple<float, integer>
239
+ %t116 = fold %t115 fn="agg.max" :: float
240
+ %t117 = const 0.009 :: float
241
+ %t118 = call core.mul(%t116, %t117) :: float
242
+ yield %t118
243
+ )
244
+ (Declaration fica_tax_single
245
+ %t864 = load_input "income" :: float
246
+ %t865 = const 168600.0 :: float
247
+ %t866 = make_tuple(%t864, %t865) :: tuple<float>
248
+ %t867 = fold %t866 fn="agg.min" :: float
249
+ %t868 = const 0.062 :: float
250
+ %t869 = call core.mul(%t867, %t868) :: float
251
+ %t871 = const 0.0145 :: float
252
+ %t872 = call core.mul(%t864, %t871) :: float
253
+ %t121 = call core.add(%t869, %t872) :: float
254
+ %t874 = const 200000.0 :: float
255
+ %t875 = call core.sub(%t864, %t874) :: float
256
+ %t876 = const 0 :: integer
257
+ %t877 = make_tuple(%t875, %t876) :: tuple<float, integer>
258
+ %t878 = fold %t877 fn="agg.max" :: float
259
+ %t879 = const 0.009 :: float
260
+ %t880 = call core.mul(%t878, %t879) :: float
261
+ %t123 = call core.add(%t121, %t880) :: float
262
+ yield %t123
263
+ )
264
+ (Declaration fica_eff_single
265
+ %t886 = load_input "income" :: float
266
+ %t887 = const 168600.0 :: float
267
+ %t888 = make_tuple(%t886, %t887) :: tuple<float>
268
+ %t889 = fold %t888 fn="agg.min" :: float
269
+ %t890 = const 0.062 :: float
270
+ %t891 = call core.mul(%t889, %t890) :: float
271
+ %t893 = const 0.0145 :: float
272
+ %t894 = call core.mul(%t886, %t893) :: float
273
+ %t883 = call core.add(%t891, %t894) :: float
274
+ %t896 = const 200000.0 :: float
275
+ %t897 = call core.sub(%t886, %t896) :: float
276
+ %t898 = const 0 :: integer
277
+ %t899 = make_tuple(%t897, %t898) :: tuple<float, integer>
278
+ %t900 = fold %t899 fn="agg.max" :: float
279
+ %t901 = const 0.009 :: float
280
+ %t902 = call core.mul(%t900, %t901) :: float
281
+ %t885 = call core.add(%t883, %t902) :: float
282
+ %t126 = const 1.0 :: float
283
+ %t127 = make_tuple(%t886, %t126) :: tuple<float>
284
+ %t128 = fold %t127 fn="agg.max" :: float
285
+ %t129 = call core.div(%t885, %t128) :: float
286
+ yield %t129
287
+ )
288
+ (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
+ %t925 = load_input "income" :: float
294
+ %t926 = load_input "fed" :: any
295
+ %t930 = const 0 :: integer
296
+ %t941 = const -1 :: integer
297
+ %t943 = const 100000000000.0 :: float
298
+ %t927 = load_field t926["single"] :: any
299
+ %t928 = load_field t927["std"] :: float
300
+ %t929 = call core.sub(%t925, %t928) :: float
301
+ %t931 = make_tuple(%t929, %t930) :: tuple<float, integer>
302
+ %t932 = fold %t931 fn="agg.max" :: float
303
+ loop rates id=L34 in %t907 as el=%t908, idx=%t909
304
+ %t936 = load_field t908["lo"] :: float
305
+ %t949 = load_field t908["hi"] :: float
306
+ %t961 = load_field t908["rate"] :: float
307
+ %t942 = call core.eq(%t949, %t941) :: boolean
308
+ %t945 = select %t942, %t943, %t949 :: float
309
+ %t923 = call core.sub(%t945, %t936) :: float
310
+ %t919 = call core.sub(%t932, %t936) :: float
311
+ %t924 = call core.clamp(%t919, %t930, %t923) :: float
312
+ %t912 = call core.mul(%t924, %t961) :: float
313
+ %acc904 = acc_add agg.sum(%acc904, %t912) :: float
314
+ end_loop
315
+ %t913 = acc_load %acc904 :: float
316
+ %t968 = const 168600.0 :: float
317
+ %t969 = make_tuple(%t925, %t968) :: tuple<float>
318
+ %t970 = fold %t969 fn="agg.min" :: float
319
+ %t971 = const 0.062 :: float
320
+ %t972 = call core.mul(%t970, %t971) :: float
321
+ %t974 = const 0.0145 :: float
322
+ %t975 = call core.mul(%t925, %t974) :: float
323
+ %t964 = call core.add(%t972, %t975) :: float
324
+ %t977 = const 200000.0 :: float
325
+ %t978 = call core.sub(%t925, %t977) :: float
326
+ %t980 = make_tuple(%t978, %t930) :: tuple<float, integer>
327
+ %t981 = fold %t980 fn="agg.max" :: float
328
+ %t982 = const 0.009 :: float
329
+ %t983 = call core.mul(%t981, %t982) :: float
330
+ %t966 = call core.add(%t964, %t983) :: float
331
+ %t132 = call core.add(%t913, %t966) :: float
332
+ %t985 = load_input "state_rate" :: float
333
+ %t986 = call core.mul(%t925, %t985) :: float
334
+ %t134 = call core.add(%t132, %t986) :: float
335
+ %t988 = load_input "local_rate" :: float
336
+ %t989 = call core.mul(%t925, %t988) :: float
337
+ %t136 = call core.add(%t134, %t989) :: float
338
+ yield %t136
339
+ )
340
+ (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
+ %t1019 = load_input "income" :: float
346
+ %t1020 = load_input "fed" :: any
347
+ %t1024 = const 0 :: integer
348
+ %t1035 = const -1 :: integer
349
+ %t1037 = const 100000000000.0 :: float
350
+ %t1021 = load_field t1020["single"] :: any
351
+ %t1022 = load_field t1021["std"] :: float
352
+ %t1023 = call core.sub(%t1019, %t1022) :: float
353
+ %t1025 = make_tuple(%t1023, %t1024) :: tuple<float, integer>
354
+ %t1026 = fold %t1025 fn="agg.max" :: float
355
+ loop rates id=L35 in %t1001 as el=%t1002, idx=%t1003
356
+ %t1030 = load_field t1002["lo"] :: float
357
+ %t1043 = load_field t1002["hi"] :: float
358
+ %t1055 = load_field t1002["rate"] :: float
359
+ %t1036 = call core.eq(%t1043, %t1035) :: boolean
360
+ %t1039 = select %t1036, %t1037, %t1043 :: float
361
+ %t1017 = call core.sub(%t1039, %t1030) :: float
362
+ %t1013 = call core.sub(%t1026, %t1030) :: float
363
+ %t1018 = call core.clamp(%t1013, %t1024, %t1017) :: float
364
+ %t1006 = call core.mul(%t1018, %t1055) :: float
365
+ %acc998 = acc_add agg.sum(%acc998, %t1006) :: float
366
+ end_loop
367
+ %t1007 = acc_load %acc998 :: float
368
+ %t1062 = const 168600.0 :: float
369
+ %t1063 = make_tuple(%t1019, %t1062) :: tuple<float>
370
+ %t1064 = fold %t1063 fn="agg.min" :: float
371
+ %t1065 = const 0.062 :: float
372
+ %t1066 = call core.mul(%t1064, %t1065) :: float
373
+ %t1068 = const 0.0145 :: float
374
+ %t1069 = call core.mul(%t1019, %t1068) :: float
375
+ %t1058 = call core.add(%t1066, %t1069) :: float
376
+ %t1071 = const 200000.0 :: float
377
+ %t1072 = call core.sub(%t1019, %t1071) :: float
378
+ %t1074 = make_tuple(%t1072, %t1024) :: tuple<float, integer>
379
+ %t1075 = fold %t1074 fn="agg.max" :: float
380
+ %t1076 = const 0.009 :: float
381
+ %t1077 = call core.mul(%t1075, %t1076) :: float
382
+ %t1060 = call core.add(%t1058, %t1077) :: float
383
+ %t992 = call core.add(%t1007, %t1060) :: float
384
+ %t1079 = load_input "state_rate" :: float
385
+ %t1080 = call core.mul(%t1019, %t1079) :: float
386
+ %t994 = call core.add(%t992, %t1080) :: float
387
+ %t1082 = load_input "local_rate" :: float
388
+ %t1083 = call core.mul(%t1019, %t1082) :: float
389
+ %t996 = call core.add(%t994, %t1083) :: float
390
+ %t139 = const 1.0 :: float
391
+ %t140 = make_tuple(%t1019, %t139) :: tuple<float>
392
+ %t141 = fold %t140 fn="agg.max" :: float
393
+ %t142 = call core.div(%t996, %t141) :: float
394
+ yield %t142
395
+ )
396
+ (Declaration after_tax_single
397
+ %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
+ %t1114 = load_input "fed" :: any
403
+ %t1118 = const 0 :: integer
404
+ %t1129 = const -1 :: integer
405
+ %t1131 = const 100000000000.0 :: float
406
+ %t1115 = load_field t1114["single"] :: any
407
+ %t1116 = load_field t1115["std"] :: float
408
+ %t1117 = call core.sub(%t143, %t1116) :: float
409
+ %t1119 = make_tuple(%t1117, %t1118) :: tuple<float, integer>
410
+ %t1120 = fold %t1119 fn="agg.max" :: float
411
+ loop rates id=L36 in %t1095 as el=%t1096, idx=%t1097
412
+ %t1124 = load_field t1096["lo"] :: float
413
+ %t1137 = load_field t1096["hi"] :: float
414
+ %t1149 = load_field t1096["rate"] :: float
415
+ %t1130 = call core.eq(%t1137, %t1129) :: boolean
416
+ %t1133 = select %t1130, %t1131, %t1137 :: float
417
+ %t1111 = call core.sub(%t1133, %t1124) :: float
418
+ %t1107 = call core.sub(%t1120, %t1124) :: float
419
+ %t1112 = call core.clamp(%t1107, %t1118, %t1111) :: float
420
+ %t1100 = call core.mul(%t1112, %t1149) :: float
421
+ %acc1092 = acc_add agg.sum(%acc1092, %t1100) :: float
422
+ end_loop
423
+ %t1101 = acc_load %acc1092 :: float
424
+ %t1156 = const 168600.0 :: float
425
+ %t1157 = make_tuple(%t143, %t1156) :: tuple<float>
426
+ %t1158 = fold %t1157 fn="agg.min" :: float
427
+ %t1159 = const 0.062 :: float
428
+ %t1160 = call core.mul(%t1158, %t1159) :: float
429
+ %t1162 = const 0.0145 :: float
430
+ %t1163 = call core.mul(%t143, %t1162) :: float
431
+ %t1152 = call core.add(%t1160, %t1163) :: float
432
+ %t1165 = const 200000.0 :: float
433
+ %t1166 = call core.sub(%t143, %t1165) :: float
434
+ %t1168 = make_tuple(%t1166, %t1118) :: tuple<float, integer>
435
+ %t1169 = fold %t1168 fn="agg.max" :: float
436
+ %t1170 = const 0.009 :: float
437
+ %t1171 = call core.mul(%t1169, %t1170) :: float
438
+ %t1154 = call core.add(%t1152, %t1171) :: float
439
+ %t1086 = call core.add(%t1101, %t1154) :: float
440
+ %t1173 = load_input "state_rate" :: float
441
+ %t1174 = call core.mul(%t143, %t1173) :: float
442
+ %t1088 = call core.add(%t1086, %t1174) :: float
443
+ %t1176 = load_input "local_rate" :: float
444
+ %t1177 = call core.mul(%t143, %t1176) :: float
445
+ %t1090 = call core.add(%t1088, %t1177) :: float
446
+ %t145 = call core.sub(%t143, %t1090) :: float
447
+ yield %t145
448
+ )
449
+ (Declaration take_home_single
450
+ %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
+ %t1211 = load_input "fed" :: any
456
+ %t1215 = const 0 :: integer
457
+ %t1226 = const -1 :: integer
458
+ %t1228 = const 100000000000.0 :: float
459
+ %t1212 = load_field t1211["single"] :: any
460
+ %t1213 = load_field t1212["std"] :: float
461
+ %t1214 = call core.sub(%t1178, %t1213) :: float
462
+ %t1216 = make_tuple(%t1214, %t1215) :: tuple<float, integer>
463
+ %t1217 = fold %t1216 fn="agg.max" :: float
464
+ loop rates id=L37 in %t1192 as el=%t1193, idx=%t1194
465
+ %t1221 = load_field t1193["lo"] :: float
466
+ %t1234 = load_field t1193["hi"] :: float
467
+ %t1246 = load_field t1193["rate"] :: float
468
+ %t1227 = call core.eq(%t1234, %t1226) :: boolean
469
+ %t1230 = select %t1227, %t1228, %t1234 :: float
470
+ %t1208 = call core.sub(%t1230, %t1221) :: float
471
+ %t1204 = call core.sub(%t1217, %t1221) :: float
472
+ %t1209 = call core.clamp(%t1204, %t1215, %t1208) :: float
473
+ %t1197 = call core.mul(%t1209, %t1246) :: float
474
+ %acc1189 = acc_add agg.sum(%acc1189, %t1197) :: float
475
+ end_loop
476
+ %t1198 = acc_load %acc1189 :: float
477
+ %t1253 = const 168600.0 :: float
478
+ %t1254 = make_tuple(%t1178, %t1253) :: tuple<float>
479
+ %t1255 = fold %t1254 fn="agg.min" :: float
480
+ %t1256 = const 0.062 :: float
481
+ %t1257 = call core.mul(%t1255, %t1256) :: float
482
+ %t1259 = const 0.0145 :: float
483
+ %t1260 = call core.mul(%t1178, %t1259) :: float
484
+ %t1249 = call core.add(%t1257, %t1260) :: float
485
+ %t1262 = const 200000.0 :: float
486
+ %t1263 = call core.sub(%t1178, %t1262) :: float
487
+ %t1265 = make_tuple(%t1263, %t1215) :: tuple<float, integer>
488
+ %t1266 = fold %t1265 fn="agg.max" :: float
489
+ %t1267 = const 0.009 :: float
490
+ %t1268 = call core.mul(%t1266, %t1267) :: float
491
+ %t1251 = call core.add(%t1249, %t1268) :: float
492
+ %t1183 = call core.add(%t1198, %t1251) :: float
493
+ %t1270 = load_input "state_rate" :: float
494
+ %t1271 = call core.mul(%t1178, %t1270) :: float
495
+ %t1185 = call core.add(%t1183, %t1271) :: float
496
+ %t1273 = load_input "local_rate" :: float
497
+ %t1274 = call core.mul(%t1178, %t1273) :: float
498
+ %t1187 = call core.add(%t1185, %t1274) :: float
499
+ %t1180 = call core.sub(%t1178, %t1187) :: float
500
+ %t147 = load_input "retirement_contrib" :: float
501
+ %t148 = call core.sub(%t1180, %t147) :: float
502
+ yield %t148
503
+ )
504
+ (Declaration taxable_mj
505
+ %t149 = load_input "income" :: float
506
+ %t150 = load_input "fed" :: any
507
+ %t151 = load_field t150["married_joint"] :: any
508
+ %t152 = load_field t151["std"] :: float
509
+ %t153 = call core.sub(%t149, %t152) :: float
510
+ %t154 = const 0 :: integer
511
+ %t155 = make_tuple(%t153, %t154) :: tuple<float, integer>
512
+ %t156 = fold %t155 fn="agg.max" :: float
513
+ yield %t156
514
+ )
515
+ (Declaration lo_mj
516
+ %t157 = load_input "fed" :: array
517
+ %t158 = load_field t157["married_joint"] :: any
518
+ %t159 = load_field t158["rates"] :: any
519
+ loop rates id=L9 in %t159 as el=%rates_el_160, idx=%rates_i_161
520
+ %t162 = load_field rates_el_160["lo"] :: float
521
+ yield %t162
522
+ end_loop
523
+ )
524
+ (Declaration hi_mj
525
+ %t163 = load_input "fed" :: array
526
+ %t164 = load_field t163["married_joint"] :: any
527
+ %t165 = load_field t164["rates"] :: any
528
+ loop rates id=L10 in %t165 as el=%rates_el_166, idx=%rates_i_167
529
+ %t168 = load_field rates_el_166["hi"] :: float
530
+ yield %t168
531
+ end_loop
532
+ )
533
+ (Declaration rate_mj
534
+ %t169 = load_input "fed" :: array
535
+ %t170 = load_field t169["married_joint"] :: any
536
+ %t171 = load_field t170["rates"] :: any
537
+ loop rates id=L11 in %t171 as el=%rates_el_172, idx=%rates_i_173
538
+ %t174 = load_field rates_el_172["rate"] :: float
539
+ yield %t174
540
+ end_loop
541
+ )
542
+ (Declaration hi_mj_eff
543
+ %t175 = load_input "fed" :: array
544
+ %t176 = load_field t175["married_joint"] :: any
545
+ %t177 = load_field t176["rates"] :: any
546
+ %t181 = const -1 :: integer
547
+ %t183 = const 100000000000.0 :: float
548
+ loop rates id=L12 in %t177 as el=%rates_el_178, idx=%rates_i_179
549
+ %t1278 = load_field rates_el_178["hi"] :: float
550
+ %t182 = call core.eq(%t1278, %t181) :: boolean
551
+ %t185 = select %t182, %t183, %t1278 :: float
552
+ yield %t185
553
+ end_loop
554
+ )
555
+ (Declaration amt_mj
556
+ %t186 = load_input "fed" :: array
557
+ %t187 = load_field t186["married_joint"] :: any
558
+ %t188 = load_field t187["rates"] :: any
559
+ %t1288 = const 0 :: integer
560
+ %t1299 = const -1 :: integer
561
+ %t1301 = const 100000000000.0 :: float
562
+ loop rates id=L13 in %t188 as el=%rates_el_189, idx=%rates_i_190
563
+ %t1294 = load_field rates_el_189["lo"] :: float
564
+ %t1307 = load_field rates_el_189["hi"] :: float
565
+ %t193 = call core.sub(%t191, %t1294) :: float
566
+ %t1300 = call core.eq(%t1307, %t1299) :: boolean
567
+ %t1303 = select %t1300, %t1301, %t1307 :: float
568
+ %t197 = call core.sub(%t1303, %t1294) :: float
569
+ %t198 = call core.clamp(%t193, %t1288, %t197) :: float
570
+ yield %t198
571
+ end_loop
572
+ )
573
+ (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
+ %t1327 = load_input "income" :: float
579
+ %t1328 = load_input "fed" :: any
580
+ %t1332 = const 0 :: integer
581
+ %t1343 = const -1 :: integer
582
+ %t1345 = const 100000000000.0 :: float
583
+ %t1329 = load_field t1328["married_joint"] :: any
584
+ %t1330 = load_field t1329["std"] :: float
585
+ %t1331 = call core.sub(%t1327, %t1330) :: float
586
+ %t1333 = make_tuple(%t1331, %t1332) :: tuple<float, integer>
587
+ %t1334 = fold %t1333 fn="agg.max" :: float
588
+ loop rates id=L14 in %t202 as el=%rates_el_203, idx=%rates_i_204
589
+ %t1338 = load_field rates_el_203["lo"] :: float
590
+ %t1351 = load_field rates_el_203["hi"] :: float
591
+ %t1363 = load_field rates_el_203["rate"] :: float
592
+ %t1344 = call core.eq(%t1351, %t1343) :: boolean
593
+ %t1347 = select %t1344, %t1345, %t1351 :: float
594
+ %t1325 = call core.sub(%t1347, %t1338) :: float
595
+ %t1321 = call core.sub(%t1334, %t1338) :: float
596
+ %t1326 = call core.clamp(%t1321, %t1332, %t1325) :: float
597
+ %t207 = call core.mul(%t1326, %t1363) :: float
598
+ %acc_199 = acc_add agg.sum(%acc_199, %t207) :: float
599
+ end_loop
600
+ %t208 = acc_load %acc_199 :: float
601
+ yield %t208
602
+ )
603
+ (Declaration in_br_mj
604
+ %t209 = load_input "fed" :: array
605
+ %t210 = load_field t209["married_joint"] :: any
606
+ %t211 = load_field t210["rates"] :: any
607
+ %t1388 = const -1 :: integer
608
+ %t1390 = const 100000000000.0 :: float
609
+ loop rates id=L15 in %t211 as el=%rates_el_212, idx=%rates_i_213
610
+ %t1383 = load_field rates_el_212["lo"] :: float
611
+ %t1396 = load_field rates_el_212["hi"] :: float
612
+ %t216 = call core.gte(%t214, %t1383) :: boolean
613
+ %t1389 = call core.eq(%t1396, %t1388) :: boolean
614
+ %t1392 = select %t1389, %t1390, %t1396 :: float
615
+ %t219 = call core.lt(%t217, %t1392) :: boolean
616
+ %t220 = call core.and(%t216, %t219) :: boolean
617
+ yield %t220
618
+ end_loop
619
+ )
620
+ (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
+ %t1411 = load_input "income" :: float
626
+ %t1412 = load_input "fed" :: any
627
+ %t1416 = const 0 :: integer
628
+ %t1435 = const -1 :: integer
629
+ %t1437 = const 100000000000.0 :: float
630
+ %t1413 = load_field t1412["married_joint"] :: any
631
+ %t1414 = load_field t1413["std"] :: float
632
+ %t1415 = call core.sub(%t1411, %t1414) :: float
633
+ %t1417 = make_tuple(%t1415, %t1416) :: tuple<float, integer>
634
+ %t1418 = fold %t1417 fn="agg.max" :: float
635
+ loop rates id=L16 in %t224 as el=%rates_el_225, idx=%rates_i_226
636
+ %t1430 = load_field rates_el_225["lo"] :: float
637
+ %t1443 = load_field rates_el_225["hi"] :: float
638
+ %t1451 = load_field rates_el_225["rate"] :: float
639
+ %t1436 = call core.eq(%t1443, %t1435) :: boolean
640
+ %t1439 = select %t1436, %t1437, %t1443 :: float
641
+ %t1407 = call core.gte(%t1418, %t1430) :: boolean
642
+ %t1409 = call core.lt(%t1418, %t1439) :: boolean
643
+ %t1410 = call core.and(%t1407, %t1409) :: boolean
644
+ %t230 = select %t1410, %t1451, %t1416 :: float
645
+ %acc_221 = acc_add agg.sum(%acc_221, %t230) :: float
646
+ end_loop
647
+ %t231 = acc_load %acc_221 :: float
648
+ yield %t231
649
+ )
650
+ (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
+ %t1474 = load_input "income" :: float
656
+ %t1475 = load_input "fed" :: any
657
+ %t1479 = const 0 :: integer
658
+ %t1490 = const -1 :: integer
659
+ %t1492 = const 100000000000.0 :: float
660
+ %t1476 = load_field t1475["married_joint"] :: any
661
+ %t1477 = load_field t1476["std"] :: float
662
+ %t1478 = call core.sub(%t1474, %t1477) :: float
663
+ %t1480 = make_tuple(%t1478, %t1479) :: tuple<float, integer>
664
+ %t1481 = fold %t1480 fn="agg.max" :: float
665
+ loop rates id=L38 in %t1456 as el=%t1457, idx=%t1458
666
+ %t1485 = load_field t1457["lo"] :: float
667
+ %t1498 = load_field t1457["hi"] :: float
668
+ %t1510 = load_field t1457["rate"] :: float
669
+ %t1491 = call core.eq(%t1498, %t1490) :: boolean
670
+ %t1494 = select %t1491, %t1492, %t1498 :: float
671
+ %t1472 = call core.sub(%t1494, %t1485) :: float
672
+ %t1468 = call core.sub(%t1481, %t1485) :: float
673
+ %t1473 = call core.clamp(%t1468, %t1479, %t1472) :: float
674
+ %t1461 = call core.mul(%t1473, %t1510) :: float
675
+ %acc1453 = acc_add agg.sum(%acc1453, %t1461) :: float
676
+ end_loop
677
+ %t1462 = acc_load %acc1453 :: float
678
+ %t234 = const 1.0 :: float
679
+ %t235 = make_tuple(%t1474, %t234) :: tuple<float>
680
+ %t236 = fold %t235 fn="agg.max" :: float
681
+ %t237 = call core.div(%t1462, %t236) :: float
682
+ yield %t237
683
+ )
684
+ (Declaration ss_tax_mj
685
+ %t1511 = load_input "income" :: float
686
+ %t1512 = const 168600.0 :: float
687
+ %t1513 = make_tuple(%t1511, %t1512) :: tuple<float>
688
+ %t1514 = fold %t1513 fn="agg.min" :: float
689
+ %t1515 = const 0.062 :: float
690
+ %t1516 = call core.mul(%t1514, %t1515) :: float
691
+ yield %t1516
692
+ )
693
+ (Declaration med_tax_mj
694
+ %t1517 = load_input "income" :: float
695
+ %t1518 = const 0.0145 :: float
696
+ %t1519 = call core.mul(%t1517, %t1518) :: float
697
+ yield %t1519
698
+ )
699
+ (Declaration addl_threshold_mj
700
+ %t240 = const 250000.0 :: float
701
+ yield %t240
702
+ )
703
+ (Declaration addl_med_tax_mj
704
+ %t241 = load_input "income" :: float
705
+ %t242 = const 250000.0 :: float
706
+ %t243 = call core.sub(%t241, %t242) :: float
707
+ %t244 = const 0 :: integer
708
+ %t245 = make_tuple(%t243, %t244) :: tuple<float, integer>
709
+ %t246 = fold %t245 fn="agg.max" :: float
710
+ %t247 = const 0.009 :: float
711
+ %t248 = call core.mul(%t246, %t247) :: float
712
+ yield %t248
713
+ )
714
+ (Declaration fica_tax_mj
715
+ %t1521 = load_input "income" :: float
716
+ %t1522 = const 168600.0 :: float
717
+ %t1523 = make_tuple(%t1521, %t1522) :: tuple<float>
718
+ %t1524 = fold %t1523 fn="agg.min" :: float
719
+ %t1525 = const 0.062 :: float
720
+ %t1526 = call core.mul(%t1524, %t1525) :: float
721
+ %t1529 = const 0.0145 :: float
722
+ %t1530 = call core.mul(%t1521, %t1529) :: float
723
+ %t251 = call core.add(%t1526, %t1530) :: float
724
+ %t1532 = const 250000.0 :: float
725
+ %t1533 = call core.sub(%t1521, %t1532) :: float
726
+ %t1534 = const 0 :: integer
727
+ %t1535 = make_tuple(%t1533, %t1534) :: tuple<float, integer>
728
+ %t1536 = fold %t1535 fn="agg.max" :: float
729
+ %t1537 = const 0.009 :: float
730
+ %t1538 = call core.mul(%t1536, %t1537) :: float
731
+ %t253 = call core.add(%t251, %t1538) :: float
732
+ yield %t253
733
+ )
734
+ (Declaration fica_eff_mj
735
+ %t1545 = load_input "income" :: float
736
+ %t1546 = const 168600.0 :: float
737
+ %t1547 = make_tuple(%t1545, %t1546) :: tuple<float>
738
+ %t1548 = fold %t1547 fn="agg.min" :: float
739
+ %t1549 = const 0.062 :: float
740
+ %t1550 = call core.mul(%t1548, %t1549) :: float
741
+ %t1553 = const 0.0145 :: float
742
+ %t1554 = call core.mul(%t1545, %t1553) :: float
743
+ %t1541 = call core.add(%t1550, %t1554) :: float
744
+ %t1556 = const 250000.0 :: float
745
+ %t1557 = call core.sub(%t1545, %t1556) :: float
746
+ %t1558 = const 0 :: integer
747
+ %t1559 = make_tuple(%t1557, %t1558) :: tuple<float, integer>
748
+ %t1560 = fold %t1559 fn="agg.max" :: float
749
+ %t1561 = const 0.009 :: float
750
+ %t1562 = call core.mul(%t1560, %t1561) :: float
751
+ %t1543 = call core.add(%t1541, %t1562) :: float
752
+ %t256 = const 1.0 :: float
753
+ %t257 = make_tuple(%t1545, %t256) :: tuple<float>
754
+ %t258 = fold %t257 fn="agg.max" :: float
755
+ %t259 = call core.div(%t1543, %t258) :: float
756
+ yield %t259
757
+ )
758
+ (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
+ %t1585 = load_input "income" :: float
764
+ %t1586 = load_input "fed" :: any
765
+ %t1590 = const 0 :: integer
766
+ %t1601 = const -1 :: integer
767
+ %t1603 = const 100000000000.0 :: float
768
+ %t1587 = load_field t1586["married_joint"] :: any
769
+ %t1588 = load_field t1587["std"] :: float
770
+ %t1589 = call core.sub(%t1585, %t1588) :: float
771
+ %t1591 = make_tuple(%t1589, %t1590) :: tuple<float, integer>
772
+ %t1592 = fold %t1591 fn="agg.max" :: float
773
+ loop rates id=L39 in %t1567 as el=%t1568, idx=%t1569
774
+ %t1596 = load_field t1568["lo"] :: float
775
+ %t1609 = load_field t1568["hi"] :: float
776
+ %t1621 = load_field t1568["rate"] :: float
777
+ %t1602 = call core.eq(%t1609, %t1601) :: boolean
778
+ %t1605 = select %t1602, %t1603, %t1609 :: float
779
+ %t1583 = call core.sub(%t1605, %t1596) :: float
780
+ %t1579 = call core.sub(%t1592, %t1596) :: float
781
+ %t1584 = call core.clamp(%t1579, %t1590, %t1583) :: float
782
+ %t1572 = call core.mul(%t1584, %t1621) :: float
783
+ %acc1564 = acc_add agg.sum(%acc1564, %t1572) :: float
784
+ end_loop
785
+ %t1573 = acc_load %acc1564 :: float
786
+ %t1629 = const 168600.0 :: float
787
+ %t1630 = make_tuple(%t1585, %t1629) :: tuple<float>
788
+ %t1631 = fold %t1630 fn="agg.min" :: float
789
+ %t1632 = const 0.062 :: float
790
+ %t1633 = call core.mul(%t1631, %t1632) :: float
791
+ %t1636 = const 0.0145 :: float
792
+ %t1637 = call core.mul(%t1585, %t1636) :: float
793
+ %t1624 = call core.add(%t1633, %t1637) :: float
794
+ %t1639 = const 250000.0 :: float
795
+ %t1640 = call core.sub(%t1585, %t1639) :: float
796
+ %t1642 = make_tuple(%t1640, %t1590) :: tuple<float, integer>
797
+ %t1643 = fold %t1642 fn="agg.max" :: float
798
+ %t1644 = const 0.009 :: float
799
+ %t1645 = call core.mul(%t1643, %t1644) :: float
800
+ %t1626 = call core.add(%t1624, %t1645) :: float
801
+ %t262 = call core.add(%t1573, %t1626) :: float
802
+ %t1647 = load_input "state_rate" :: float
803
+ %t1648 = call core.mul(%t1585, %t1647) :: float
804
+ %t264 = call core.add(%t262, %t1648) :: float
805
+ %t1650 = load_input "local_rate" :: float
806
+ %t1651 = call core.mul(%t1585, %t1650) :: float
807
+ %t266 = call core.add(%t264, %t1651) :: float
808
+ yield %t266
809
+ )
810
+ (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
+ %t1681 = load_input "income" :: float
816
+ %t1682 = load_input "fed" :: any
817
+ %t1686 = const 0 :: integer
818
+ %t1697 = const -1 :: integer
819
+ %t1699 = const 100000000000.0 :: float
820
+ %t1683 = load_field t1682["married_joint"] :: any
821
+ %t1684 = load_field t1683["std"] :: float
822
+ %t1685 = call core.sub(%t1681, %t1684) :: float
823
+ %t1687 = make_tuple(%t1685, %t1686) :: tuple<float, integer>
824
+ %t1688 = fold %t1687 fn="agg.max" :: float
825
+ loop rates id=L40 in %t1663 as el=%t1664, idx=%t1665
826
+ %t1692 = load_field t1664["lo"] :: float
827
+ %t1705 = load_field t1664["hi"] :: float
828
+ %t1717 = load_field t1664["rate"] :: float
829
+ %t1698 = call core.eq(%t1705, %t1697) :: boolean
830
+ %t1701 = select %t1698, %t1699, %t1705 :: float
831
+ %t1679 = call core.sub(%t1701, %t1692) :: float
832
+ %t1675 = call core.sub(%t1688, %t1692) :: float
833
+ %t1680 = call core.clamp(%t1675, %t1686, %t1679) :: float
834
+ %t1668 = call core.mul(%t1680, %t1717) :: float
835
+ %acc1660 = acc_add agg.sum(%acc1660, %t1668) :: float
836
+ end_loop
837
+ %t1669 = acc_load %acc1660 :: float
838
+ %t1725 = const 168600.0 :: float
839
+ %t1726 = make_tuple(%t1681, %t1725) :: tuple<float>
840
+ %t1727 = fold %t1726 fn="agg.min" :: float
841
+ %t1728 = const 0.062 :: float
842
+ %t1729 = call core.mul(%t1727, %t1728) :: float
843
+ %t1732 = const 0.0145 :: float
844
+ %t1733 = call core.mul(%t1681, %t1732) :: float
845
+ %t1720 = call core.add(%t1729, %t1733) :: float
846
+ %t1735 = const 250000.0 :: float
847
+ %t1736 = call core.sub(%t1681, %t1735) :: float
848
+ %t1738 = make_tuple(%t1736, %t1686) :: tuple<float, integer>
849
+ %t1739 = fold %t1738 fn="agg.max" :: float
850
+ %t1740 = const 0.009 :: float
851
+ %t1741 = call core.mul(%t1739, %t1740) :: float
852
+ %t1722 = call core.add(%t1720, %t1741) :: float
853
+ %t1654 = call core.add(%t1669, %t1722) :: float
854
+ %t1743 = load_input "state_rate" :: float
855
+ %t1744 = call core.mul(%t1681, %t1743) :: float
856
+ %t1656 = call core.add(%t1654, %t1744) :: float
857
+ %t1746 = load_input "local_rate" :: float
858
+ %t1747 = call core.mul(%t1681, %t1746) :: float
859
+ %t1658 = call core.add(%t1656, %t1747) :: float
860
+ %t269 = const 1.0 :: float
861
+ %t270 = make_tuple(%t1681, %t269) :: tuple<float>
862
+ %t271 = fold %t270 fn="agg.max" :: float
863
+ %t272 = call core.div(%t1658, %t271) :: float
864
+ yield %t272
865
+ )
866
+ (Declaration after_tax_mj
867
+ %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
+ %t1778 = load_input "fed" :: any
873
+ %t1782 = const 0 :: integer
874
+ %t1793 = const -1 :: integer
875
+ %t1795 = const 100000000000.0 :: float
876
+ %t1779 = load_field t1778["married_joint"] :: any
877
+ %t1780 = load_field t1779["std"] :: float
878
+ %t1781 = call core.sub(%t273, %t1780) :: float
879
+ %t1783 = make_tuple(%t1781, %t1782) :: tuple<float, integer>
880
+ %t1784 = fold %t1783 fn="agg.max" :: float
881
+ loop rates id=L41 in %t1759 as el=%t1760, idx=%t1761
882
+ %t1788 = load_field t1760["lo"] :: float
883
+ %t1801 = load_field t1760["hi"] :: float
884
+ %t1813 = load_field t1760["rate"] :: float
885
+ %t1794 = call core.eq(%t1801, %t1793) :: boolean
886
+ %t1797 = select %t1794, %t1795, %t1801 :: float
887
+ %t1775 = call core.sub(%t1797, %t1788) :: float
888
+ %t1771 = call core.sub(%t1784, %t1788) :: float
889
+ %t1776 = call core.clamp(%t1771, %t1782, %t1775) :: float
890
+ %t1764 = call core.mul(%t1776, %t1813) :: float
891
+ %acc1756 = acc_add agg.sum(%acc1756, %t1764) :: float
892
+ end_loop
893
+ %t1765 = acc_load %acc1756 :: float
894
+ %t1821 = const 168600.0 :: float
895
+ %t1822 = make_tuple(%t273, %t1821) :: tuple<float>
896
+ %t1823 = fold %t1822 fn="agg.min" :: float
897
+ %t1824 = const 0.062 :: float
898
+ %t1825 = call core.mul(%t1823, %t1824) :: float
899
+ %t1828 = const 0.0145 :: float
900
+ %t1829 = call core.mul(%t273, %t1828) :: float
901
+ %t1816 = call core.add(%t1825, %t1829) :: float
902
+ %t1831 = const 250000.0 :: float
903
+ %t1832 = call core.sub(%t273, %t1831) :: float
904
+ %t1834 = make_tuple(%t1832, %t1782) :: tuple<float, integer>
905
+ %t1835 = fold %t1834 fn="agg.max" :: float
906
+ %t1836 = const 0.009 :: float
907
+ %t1837 = call core.mul(%t1835, %t1836) :: float
908
+ %t1818 = call core.add(%t1816, %t1837) :: float
909
+ %t1750 = call core.add(%t1765, %t1818) :: float
910
+ %t1839 = load_input "state_rate" :: float
911
+ %t1840 = call core.mul(%t273, %t1839) :: float
912
+ %t1752 = call core.add(%t1750, %t1840) :: float
913
+ %t1842 = load_input "local_rate" :: float
914
+ %t1843 = call core.mul(%t273, %t1842) :: float
915
+ %t1754 = call core.add(%t1752, %t1843) :: float
916
+ %t275 = call core.sub(%t273, %t1754) :: float
917
+ yield %t275
918
+ )
919
+ (Declaration take_home_mj
920
+ %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
+ %t1877 = load_input "fed" :: any
926
+ %t1881 = const 0 :: integer
927
+ %t1892 = const -1 :: integer
928
+ %t1894 = const 100000000000.0 :: float
929
+ %t1878 = load_field t1877["married_joint"] :: any
930
+ %t1879 = load_field t1878["std"] :: float
931
+ %t1880 = call core.sub(%t1844, %t1879) :: float
932
+ %t1882 = make_tuple(%t1880, %t1881) :: tuple<float, integer>
933
+ %t1883 = fold %t1882 fn="agg.max" :: float
934
+ loop rates id=L42 in %t1858 as el=%t1859, idx=%t1860
935
+ %t1887 = load_field t1859["lo"] :: float
936
+ %t1900 = load_field t1859["hi"] :: float
937
+ %t1912 = load_field t1859["rate"] :: float
938
+ %t1893 = call core.eq(%t1900, %t1892) :: boolean
939
+ %t1896 = select %t1893, %t1894, %t1900 :: float
940
+ %t1874 = call core.sub(%t1896, %t1887) :: float
941
+ %t1870 = call core.sub(%t1883, %t1887) :: float
942
+ %t1875 = call core.clamp(%t1870, %t1881, %t1874) :: float
943
+ %t1863 = call core.mul(%t1875, %t1912) :: float
944
+ %acc1855 = acc_add agg.sum(%acc1855, %t1863) :: float
945
+ end_loop
946
+ %t1864 = acc_load %acc1855 :: float
947
+ %t1920 = const 168600.0 :: float
948
+ %t1921 = make_tuple(%t1844, %t1920) :: tuple<float>
949
+ %t1922 = fold %t1921 fn="agg.min" :: float
950
+ %t1923 = const 0.062 :: float
951
+ %t1924 = call core.mul(%t1922, %t1923) :: float
952
+ %t1927 = const 0.0145 :: float
953
+ %t1928 = call core.mul(%t1844, %t1927) :: float
954
+ %t1915 = call core.add(%t1924, %t1928) :: float
955
+ %t1930 = const 250000.0 :: float
956
+ %t1931 = call core.sub(%t1844, %t1930) :: float
957
+ %t1933 = make_tuple(%t1931, %t1881) :: tuple<float, integer>
958
+ %t1934 = fold %t1933 fn="agg.max" :: float
959
+ %t1935 = const 0.009 :: float
960
+ %t1936 = call core.mul(%t1934, %t1935) :: float
961
+ %t1917 = call core.add(%t1915, %t1936) :: float
962
+ %t1849 = call core.add(%t1864, %t1917) :: float
963
+ %t1938 = load_input "state_rate" :: float
964
+ %t1939 = call core.mul(%t1844, %t1938) :: float
965
+ %t1851 = call core.add(%t1849, %t1939) :: float
966
+ %t1941 = load_input "local_rate" :: float
967
+ %t1942 = call core.mul(%t1844, %t1941) :: float
968
+ %t1853 = call core.add(%t1851, %t1942) :: float
969
+ %t1846 = call core.sub(%t1844, %t1853) :: float
970
+ %t277 = load_input "retirement_contrib" :: float
971
+ %t278 = call core.sub(%t1846, %t277) :: float
972
+ yield %t278
973
+ )
974
+ (Declaration taxable_ms
975
+ %t279 = load_input "income" :: float
976
+ %t280 = load_input "fed" :: any
977
+ %t281 = load_field t280["married_separate"] :: any
978
+ %t282 = load_field t281["std"] :: float
979
+ %t283 = call core.sub(%t279, %t282) :: float
980
+ %t284 = const 0 :: integer
981
+ %t285 = make_tuple(%t283, %t284) :: tuple<float, integer>
982
+ %t286 = fold %t285 fn="agg.max" :: float
983
+ yield %t286
984
+ )
985
+ (Declaration lo_ms
986
+ %t287 = load_input "fed" :: array
987
+ %t288 = load_field t287["married_separate"] :: any
988
+ %t289 = load_field t288["rates"] :: any
989
+ loop rates id=L17 in %t289 as el=%rates_el_290, idx=%rates_i_291
990
+ %t292 = load_field rates_el_290["lo"] :: float
991
+ yield %t292
992
+ end_loop
993
+ )
994
+ (Declaration hi_ms
995
+ %t293 = load_input "fed" :: array
996
+ %t294 = load_field t293["married_separate"] :: any
997
+ %t295 = load_field t294["rates"] :: any
998
+ loop rates id=L18 in %t295 as el=%rates_el_296, idx=%rates_i_297
999
+ %t298 = load_field rates_el_296["hi"] :: float
1000
+ yield %t298
1001
+ end_loop
1002
+ )
1003
+ (Declaration rate_ms
1004
+ %t299 = load_input "fed" :: array
1005
+ %t300 = load_field t299["married_separate"] :: any
1006
+ %t301 = load_field t300["rates"] :: any
1007
+ loop rates id=L19 in %t301 as el=%rates_el_302, idx=%rates_i_303
1008
+ %t304 = load_field rates_el_302["rate"] :: float
1009
+ yield %t304
1010
+ end_loop
1011
+ )
1012
+ (Declaration hi_ms_eff
1013
+ %t305 = load_input "fed" :: array
1014
+ %t306 = load_field t305["married_separate"] :: any
1015
+ %t307 = load_field t306["rates"] :: any
1016
+ %t311 = const -1 :: integer
1017
+ %t313 = const 100000000000.0 :: float
1018
+ loop rates id=L20 in %t307 as el=%rates_el_308, idx=%rates_i_309
1019
+ %t1946 = load_field rates_el_308["hi"] :: float
1020
+ %t312 = call core.eq(%t1946, %t311) :: boolean
1021
+ %t315 = select %t312, %t313, %t1946 :: float
1022
+ yield %t315
1023
+ end_loop
1024
+ )
1025
+ (Declaration amt_ms
1026
+ %t316 = load_input "fed" :: array
1027
+ %t317 = load_field t316["married_separate"] :: any
1028
+ %t318 = load_field t317["rates"] :: any
1029
+ %t1956 = const 0 :: integer
1030
+ %t1967 = const -1 :: integer
1031
+ %t1969 = const 100000000000.0 :: float
1032
+ loop rates id=L21 in %t318 as el=%rates_el_319, idx=%rates_i_320
1033
+ %t1962 = load_field rates_el_319["lo"] :: float
1034
+ %t1975 = load_field rates_el_319["hi"] :: float
1035
+ %t323 = call core.sub(%t321, %t1962) :: float
1036
+ %t1968 = call core.eq(%t1975, %t1967) :: boolean
1037
+ %t1971 = select %t1968, %t1969, %t1975 :: float
1038
+ %t327 = call core.sub(%t1971, %t1962) :: float
1039
+ %t328 = call core.clamp(%t323, %t1956, %t327) :: float
1040
+ yield %t328
1041
+ end_loop
1042
+ )
1043
+ (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
+ %t1995 = load_input "income" :: float
1049
+ %t1996 = load_input "fed" :: any
1050
+ %t2000 = const 0 :: integer
1051
+ %t2011 = const -1 :: integer
1052
+ %t2013 = const 100000000000.0 :: float
1053
+ %t1997 = load_field t1996["married_separate"] :: any
1054
+ %t1998 = load_field t1997["std"] :: float
1055
+ %t1999 = call core.sub(%t1995, %t1998) :: float
1056
+ %t2001 = make_tuple(%t1999, %t2000) :: tuple<float, integer>
1057
+ %t2002 = fold %t2001 fn="agg.max" :: float
1058
+ loop rates id=L22 in %t332 as el=%rates_el_333, idx=%rates_i_334
1059
+ %t2006 = load_field rates_el_333["lo"] :: float
1060
+ %t2019 = load_field rates_el_333["hi"] :: float
1061
+ %t2031 = load_field rates_el_333["rate"] :: float
1062
+ %t2012 = call core.eq(%t2019, %t2011) :: boolean
1063
+ %t2015 = select %t2012, %t2013, %t2019 :: float
1064
+ %t1993 = call core.sub(%t2015, %t2006) :: float
1065
+ %t1989 = call core.sub(%t2002, %t2006) :: float
1066
+ %t1994 = call core.clamp(%t1989, %t2000, %t1993) :: float
1067
+ %t337 = call core.mul(%t1994, %t2031) :: float
1068
+ %acc_329 = acc_add agg.sum(%acc_329, %t337) :: float
1069
+ end_loop
1070
+ %t338 = acc_load %acc_329 :: float
1071
+ yield %t338
1072
+ )
1073
+ (Declaration in_br_ms
1074
+ %t339 = load_input "fed" :: array
1075
+ %t340 = load_field t339["married_separate"] :: any
1076
+ %t341 = load_field t340["rates"] :: any
1077
+ %t2056 = const -1 :: integer
1078
+ %t2058 = const 100000000000.0 :: float
1079
+ loop rates id=L23 in %t341 as el=%rates_el_342, idx=%rates_i_343
1080
+ %t2051 = load_field rates_el_342["lo"] :: float
1081
+ %t2064 = load_field rates_el_342["hi"] :: float
1082
+ %t346 = call core.gte(%t344, %t2051) :: boolean
1083
+ %t2057 = call core.eq(%t2064, %t2056) :: boolean
1084
+ %t2060 = select %t2057, %t2058, %t2064 :: float
1085
+ %t349 = call core.lt(%t347, %t2060) :: boolean
1086
+ %t350 = call core.and(%t346, %t349) :: boolean
1087
+ yield %t350
1088
+ end_loop
1089
+ )
1090
+ (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
+ %t2079 = load_input "income" :: float
1096
+ %t2080 = load_input "fed" :: any
1097
+ %t2084 = const 0 :: integer
1098
+ %t2103 = const -1 :: integer
1099
+ %t2105 = const 100000000000.0 :: float
1100
+ %t2081 = load_field t2080["married_separate"] :: any
1101
+ %t2082 = load_field t2081["std"] :: float
1102
+ %t2083 = call core.sub(%t2079, %t2082) :: float
1103
+ %t2085 = make_tuple(%t2083, %t2084) :: tuple<float, integer>
1104
+ %t2086 = fold %t2085 fn="agg.max" :: float
1105
+ loop rates id=L24 in %t354 as el=%rates_el_355, idx=%rates_i_356
1106
+ %t2098 = load_field rates_el_355["lo"] :: float
1107
+ %t2111 = load_field rates_el_355["hi"] :: float
1108
+ %t2119 = load_field rates_el_355["rate"] :: float
1109
+ %t2104 = call core.eq(%t2111, %t2103) :: boolean
1110
+ %t2107 = select %t2104, %t2105, %t2111 :: float
1111
+ %t2075 = call core.gte(%t2086, %t2098) :: boolean
1112
+ %t2077 = call core.lt(%t2086, %t2107) :: boolean
1113
+ %t2078 = call core.and(%t2075, %t2077) :: boolean
1114
+ %t360 = select %t2078, %t2119, %t2084 :: float
1115
+ %acc_351 = acc_add agg.sum(%acc_351, %t360) :: float
1116
+ end_loop
1117
+ %t361 = acc_load %acc_351 :: float
1118
+ yield %t361
1119
+ )
1120
+ (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
+ %t2142 = load_input "income" :: float
1126
+ %t2143 = load_input "fed" :: any
1127
+ %t2147 = const 0 :: integer
1128
+ %t2158 = const -1 :: integer
1129
+ %t2160 = const 100000000000.0 :: float
1130
+ %t2144 = load_field t2143["married_separate"] :: any
1131
+ %t2145 = load_field t2144["std"] :: float
1132
+ %t2146 = call core.sub(%t2142, %t2145) :: float
1133
+ %t2148 = make_tuple(%t2146, %t2147) :: tuple<float, integer>
1134
+ %t2149 = fold %t2148 fn="agg.max" :: float
1135
+ loop rates id=L43 in %t2124 as el=%t2125, idx=%t2126
1136
+ %t2153 = load_field t2125["lo"] :: float
1137
+ %t2166 = load_field t2125["hi"] :: float
1138
+ %t2178 = load_field t2125["rate"] :: float
1139
+ %t2159 = call core.eq(%t2166, %t2158) :: boolean
1140
+ %t2162 = select %t2159, %t2160, %t2166 :: float
1141
+ %t2140 = call core.sub(%t2162, %t2153) :: float
1142
+ %t2136 = call core.sub(%t2149, %t2153) :: float
1143
+ %t2141 = call core.clamp(%t2136, %t2147, %t2140) :: float
1144
+ %t2129 = call core.mul(%t2141, %t2178) :: float
1145
+ %acc2121 = acc_add agg.sum(%acc2121, %t2129) :: float
1146
+ end_loop
1147
+ %t2130 = acc_load %acc2121 :: float
1148
+ %t364 = const 1.0 :: float
1149
+ %t365 = make_tuple(%t2142, %t364) :: tuple<float>
1150
+ %t366 = fold %t365 fn="agg.max" :: float
1151
+ %t367 = call core.div(%t2130, %t366) :: float
1152
+ yield %t367
1153
+ )
1154
+ (Declaration ss_tax_ms
1155
+ %t2179 = load_input "income" :: float
1156
+ %t2180 = const 168600.0 :: float
1157
+ %t2181 = make_tuple(%t2179, %t2180) :: tuple<float>
1158
+ %t2182 = fold %t2181 fn="agg.min" :: float
1159
+ %t2183 = const 0.062 :: float
1160
+ %t2184 = call core.mul(%t2182, %t2183) :: float
1161
+ yield %t2184
1162
+ )
1163
+ (Declaration med_tax_ms
1164
+ %t2185 = load_input "income" :: float
1165
+ %t2186 = const 0.0145 :: float
1166
+ %t2187 = call core.mul(%t2185, %t2186) :: float
1167
+ yield %t2187
1168
+ )
1169
+ (Declaration addl_threshold_ms
1170
+ %t370 = const 125000.0 :: float
1171
+ yield %t370
1172
+ )
1173
+ (Declaration addl_med_tax_ms
1174
+ %t371 = load_input "income" :: float
1175
+ %t372 = const 125000.0 :: float
1176
+ %t373 = call core.sub(%t371, %t372) :: float
1177
+ %t374 = const 0 :: integer
1178
+ %t375 = make_tuple(%t373, %t374) :: tuple<float, integer>
1179
+ %t376 = fold %t375 fn="agg.max" :: float
1180
+ %t377 = const 0.009 :: float
1181
+ %t378 = call core.mul(%t376, %t377) :: float
1182
+ yield %t378
1183
+ )
1184
+ (Declaration fica_tax_ms
1185
+ %t2189 = load_input "income" :: float
1186
+ %t2190 = const 168600.0 :: float
1187
+ %t2191 = make_tuple(%t2189, %t2190) :: tuple<float>
1188
+ %t2192 = fold %t2191 fn="agg.min" :: float
1189
+ %t2193 = const 0.062 :: float
1190
+ %t2194 = call core.mul(%t2192, %t2193) :: float
1191
+ %t2197 = const 0.0145 :: float
1192
+ %t2198 = call core.mul(%t2189, %t2197) :: float
1193
+ %t381 = call core.add(%t2194, %t2198) :: float
1194
+ %t2200 = const 125000.0 :: float
1195
+ %t2201 = call core.sub(%t2189, %t2200) :: float
1196
+ %t2202 = const 0 :: integer
1197
+ %t2203 = make_tuple(%t2201, %t2202) :: tuple<float, integer>
1198
+ %t2204 = fold %t2203 fn="agg.max" :: float
1199
+ %t2205 = const 0.009 :: float
1200
+ %t2206 = call core.mul(%t2204, %t2205) :: float
1201
+ %t383 = call core.add(%t381, %t2206) :: float
1202
+ yield %t383
1203
+ )
1204
+ (Declaration fica_eff_ms
1205
+ %t2213 = load_input "income" :: float
1206
+ %t2214 = const 168600.0 :: float
1207
+ %t2215 = make_tuple(%t2213, %t2214) :: tuple<float>
1208
+ %t2216 = fold %t2215 fn="agg.min" :: float
1209
+ %t2217 = const 0.062 :: float
1210
+ %t2218 = call core.mul(%t2216, %t2217) :: float
1211
+ %t2221 = const 0.0145 :: float
1212
+ %t2222 = call core.mul(%t2213, %t2221) :: float
1213
+ %t2209 = call core.add(%t2218, %t2222) :: float
1214
+ %t2224 = const 125000.0 :: float
1215
+ %t2225 = call core.sub(%t2213, %t2224) :: float
1216
+ %t2226 = const 0 :: integer
1217
+ %t2227 = make_tuple(%t2225, %t2226) :: tuple<float, integer>
1218
+ %t2228 = fold %t2227 fn="agg.max" :: float
1219
+ %t2229 = const 0.009 :: float
1220
+ %t2230 = call core.mul(%t2228, %t2229) :: float
1221
+ %t2211 = call core.add(%t2209, %t2230) :: float
1222
+ %t386 = const 1.0 :: float
1223
+ %t387 = make_tuple(%t2213, %t386) :: tuple<float>
1224
+ %t388 = fold %t387 fn="agg.max" :: float
1225
+ %t389 = call core.div(%t2211, %t388) :: float
1226
+ yield %t389
1227
+ )
1228
+ (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
+ %t2253 = load_input "income" :: float
1234
+ %t2254 = load_input "fed" :: any
1235
+ %t2258 = const 0 :: integer
1236
+ %t2269 = const -1 :: integer
1237
+ %t2271 = const 100000000000.0 :: float
1238
+ %t2255 = load_field t2254["married_separate"] :: any
1239
+ %t2256 = load_field t2255["std"] :: float
1240
+ %t2257 = call core.sub(%t2253, %t2256) :: float
1241
+ %t2259 = make_tuple(%t2257, %t2258) :: tuple<float, integer>
1242
+ %t2260 = fold %t2259 fn="agg.max" :: float
1243
+ loop rates id=L44 in %t2235 as el=%t2236, idx=%t2237
1244
+ %t2264 = load_field t2236["lo"] :: float
1245
+ %t2277 = load_field t2236["hi"] :: float
1246
+ %t2289 = load_field t2236["rate"] :: float
1247
+ %t2270 = call core.eq(%t2277, %t2269) :: boolean
1248
+ %t2273 = select %t2270, %t2271, %t2277 :: float
1249
+ %t2251 = call core.sub(%t2273, %t2264) :: float
1250
+ %t2247 = call core.sub(%t2260, %t2264) :: float
1251
+ %t2252 = call core.clamp(%t2247, %t2258, %t2251) :: float
1252
+ %t2240 = call core.mul(%t2252, %t2289) :: float
1253
+ %acc2232 = acc_add agg.sum(%acc2232, %t2240) :: float
1254
+ end_loop
1255
+ %t2241 = acc_load %acc2232 :: float
1256
+ %t2297 = const 168600.0 :: float
1257
+ %t2298 = make_tuple(%t2253, %t2297) :: tuple<float>
1258
+ %t2299 = fold %t2298 fn="agg.min" :: float
1259
+ %t2300 = const 0.062 :: float
1260
+ %t2301 = call core.mul(%t2299, %t2300) :: float
1261
+ %t2304 = const 0.0145 :: float
1262
+ %t2305 = call core.mul(%t2253, %t2304) :: float
1263
+ %t2292 = call core.add(%t2301, %t2305) :: float
1264
+ %t2307 = const 125000.0 :: float
1265
+ %t2308 = call core.sub(%t2253, %t2307) :: float
1266
+ %t2310 = make_tuple(%t2308, %t2258) :: tuple<float, integer>
1267
+ %t2311 = fold %t2310 fn="agg.max" :: float
1268
+ %t2312 = const 0.009 :: float
1269
+ %t2313 = call core.mul(%t2311, %t2312) :: float
1270
+ %t2294 = call core.add(%t2292, %t2313) :: float
1271
+ %t392 = call core.add(%t2241, %t2294) :: float
1272
+ %t2315 = load_input "state_rate" :: float
1273
+ %t2316 = call core.mul(%t2253, %t2315) :: float
1274
+ %t394 = call core.add(%t392, %t2316) :: float
1275
+ %t2318 = load_input "local_rate" :: float
1276
+ %t2319 = call core.mul(%t2253, %t2318) :: float
1277
+ %t396 = call core.add(%t394, %t2319) :: float
1278
+ yield %t396
1279
+ )
1280
+ (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
+ %t2349 = load_input "income" :: float
1286
+ %t2350 = load_input "fed" :: any
1287
+ %t2354 = const 0 :: integer
1288
+ %t2365 = const -1 :: integer
1289
+ %t2367 = const 100000000000.0 :: float
1290
+ %t2351 = load_field t2350["married_separate"] :: any
1291
+ %t2352 = load_field t2351["std"] :: float
1292
+ %t2353 = call core.sub(%t2349, %t2352) :: float
1293
+ %t2355 = make_tuple(%t2353, %t2354) :: tuple<float, integer>
1294
+ %t2356 = fold %t2355 fn="agg.max" :: float
1295
+ loop rates id=L45 in %t2331 as el=%t2332, idx=%t2333
1296
+ %t2360 = load_field t2332["lo"] :: float
1297
+ %t2373 = load_field t2332["hi"] :: float
1298
+ %t2385 = load_field t2332["rate"] :: float
1299
+ %t2366 = call core.eq(%t2373, %t2365) :: boolean
1300
+ %t2369 = select %t2366, %t2367, %t2373 :: float
1301
+ %t2347 = call core.sub(%t2369, %t2360) :: float
1302
+ %t2343 = call core.sub(%t2356, %t2360) :: float
1303
+ %t2348 = call core.clamp(%t2343, %t2354, %t2347) :: float
1304
+ %t2336 = call core.mul(%t2348, %t2385) :: float
1305
+ %acc2328 = acc_add agg.sum(%acc2328, %t2336) :: float
1306
+ end_loop
1307
+ %t2337 = acc_load %acc2328 :: float
1308
+ %t2393 = const 168600.0 :: float
1309
+ %t2394 = make_tuple(%t2349, %t2393) :: tuple<float>
1310
+ %t2395 = fold %t2394 fn="agg.min" :: float
1311
+ %t2396 = const 0.062 :: float
1312
+ %t2397 = call core.mul(%t2395, %t2396) :: float
1313
+ %t2400 = const 0.0145 :: float
1314
+ %t2401 = call core.mul(%t2349, %t2400) :: float
1315
+ %t2388 = call core.add(%t2397, %t2401) :: float
1316
+ %t2403 = const 125000.0 :: float
1317
+ %t2404 = call core.sub(%t2349, %t2403) :: float
1318
+ %t2406 = make_tuple(%t2404, %t2354) :: tuple<float, integer>
1319
+ %t2407 = fold %t2406 fn="agg.max" :: float
1320
+ %t2408 = const 0.009 :: float
1321
+ %t2409 = call core.mul(%t2407, %t2408) :: float
1322
+ %t2390 = call core.add(%t2388, %t2409) :: float
1323
+ %t2322 = call core.add(%t2337, %t2390) :: float
1324
+ %t2411 = load_input "state_rate" :: float
1325
+ %t2412 = call core.mul(%t2349, %t2411) :: float
1326
+ %t2324 = call core.add(%t2322, %t2412) :: float
1327
+ %t2414 = load_input "local_rate" :: float
1328
+ %t2415 = call core.mul(%t2349, %t2414) :: float
1329
+ %t2326 = call core.add(%t2324, %t2415) :: float
1330
+ %t399 = const 1.0 :: float
1331
+ %t400 = make_tuple(%t2349, %t399) :: tuple<float>
1332
+ %t401 = fold %t400 fn="agg.max" :: float
1333
+ %t402 = call core.div(%t2326, %t401) :: float
1334
+ yield %t402
1335
+ )
1336
+ (Declaration after_tax_ms
1337
+ %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
+ %t2446 = load_input "fed" :: any
1343
+ %t2450 = const 0 :: integer
1344
+ %t2461 = const -1 :: integer
1345
+ %t2463 = const 100000000000.0 :: float
1346
+ %t2447 = load_field t2446["married_separate"] :: any
1347
+ %t2448 = load_field t2447["std"] :: float
1348
+ %t2449 = call core.sub(%t403, %t2448) :: float
1349
+ %t2451 = make_tuple(%t2449, %t2450) :: tuple<float, integer>
1350
+ %t2452 = fold %t2451 fn="agg.max" :: float
1351
+ loop rates id=L46 in %t2427 as el=%t2428, idx=%t2429
1352
+ %t2456 = load_field t2428["lo"] :: float
1353
+ %t2469 = load_field t2428["hi"] :: float
1354
+ %t2481 = load_field t2428["rate"] :: float
1355
+ %t2462 = call core.eq(%t2469, %t2461) :: boolean
1356
+ %t2465 = select %t2462, %t2463, %t2469 :: float
1357
+ %t2443 = call core.sub(%t2465, %t2456) :: float
1358
+ %t2439 = call core.sub(%t2452, %t2456) :: float
1359
+ %t2444 = call core.clamp(%t2439, %t2450, %t2443) :: float
1360
+ %t2432 = call core.mul(%t2444, %t2481) :: float
1361
+ %acc2424 = acc_add agg.sum(%acc2424, %t2432) :: float
1362
+ end_loop
1363
+ %t2433 = acc_load %acc2424 :: float
1364
+ %t2489 = const 168600.0 :: float
1365
+ %t2490 = make_tuple(%t403, %t2489) :: tuple<float>
1366
+ %t2491 = fold %t2490 fn="agg.min" :: float
1367
+ %t2492 = const 0.062 :: float
1368
+ %t2493 = call core.mul(%t2491, %t2492) :: float
1369
+ %t2496 = const 0.0145 :: float
1370
+ %t2497 = call core.mul(%t403, %t2496) :: float
1371
+ %t2484 = call core.add(%t2493, %t2497) :: float
1372
+ %t2499 = const 125000.0 :: float
1373
+ %t2500 = call core.sub(%t403, %t2499) :: float
1374
+ %t2502 = make_tuple(%t2500, %t2450) :: tuple<float, integer>
1375
+ %t2503 = fold %t2502 fn="agg.max" :: float
1376
+ %t2504 = const 0.009 :: float
1377
+ %t2505 = call core.mul(%t2503, %t2504) :: float
1378
+ %t2486 = call core.add(%t2484, %t2505) :: float
1379
+ %t2418 = call core.add(%t2433, %t2486) :: float
1380
+ %t2507 = load_input "state_rate" :: float
1381
+ %t2508 = call core.mul(%t403, %t2507) :: float
1382
+ %t2420 = call core.add(%t2418, %t2508) :: float
1383
+ %t2510 = load_input "local_rate" :: float
1384
+ %t2511 = call core.mul(%t403, %t2510) :: float
1385
+ %t2422 = call core.add(%t2420, %t2511) :: float
1386
+ %t405 = call core.sub(%t403, %t2422) :: float
1387
+ yield %t405
1388
+ )
1389
+ (Declaration take_home_ms
1390
+ %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
+ %t2545 = load_input "fed" :: any
1396
+ %t2549 = const 0 :: integer
1397
+ %t2560 = const -1 :: integer
1398
+ %t2562 = const 100000000000.0 :: float
1399
+ %t2546 = load_field t2545["married_separate"] :: any
1400
+ %t2547 = load_field t2546["std"] :: float
1401
+ %t2548 = call core.sub(%t2512, %t2547) :: float
1402
+ %t2550 = make_tuple(%t2548, %t2549) :: tuple<float, integer>
1403
+ %t2551 = fold %t2550 fn="agg.max" :: float
1404
+ loop rates id=L47 in %t2526 as el=%t2527, idx=%t2528
1405
+ %t2555 = load_field t2527["lo"] :: float
1406
+ %t2568 = load_field t2527["hi"] :: float
1407
+ %t2580 = load_field t2527["rate"] :: float
1408
+ %t2561 = call core.eq(%t2568, %t2560) :: boolean
1409
+ %t2564 = select %t2561, %t2562, %t2568 :: float
1410
+ %t2542 = call core.sub(%t2564, %t2555) :: float
1411
+ %t2538 = call core.sub(%t2551, %t2555) :: float
1412
+ %t2543 = call core.clamp(%t2538, %t2549, %t2542) :: float
1413
+ %t2531 = call core.mul(%t2543, %t2580) :: float
1414
+ %acc2523 = acc_add agg.sum(%acc2523, %t2531) :: float
1415
+ end_loop
1416
+ %t2532 = acc_load %acc2523 :: float
1417
+ %t2588 = const 168600.0 :: float
1418
+ %t2589 = make_tuple(%t2512, %t2588) :: tuple<float>
1419
+ %t2590 = fold %t2589 fn="agg.min" :: float
1420
+ %t2591 = const 0.062 :: float
1421
+ %t2592 = call core.mul(%t2590, %t2591) :: float
1422
+ %t2595 = const 0.0145 :: float
1423
+ %t2596 = call core.mul(%t2512, %t2595) :: float
1424
+ %t2583 = call core.add(%t2592, %t2596) :: float
1425
+ %t2598 = const 125000.0 :: float
1426
+ %t2599 = call core.sub(%t2512, %t2598) :: float
1427
+ %t2601 = make_tuple(%t2599, %t2549) :: tuple<float, integer>
1428
+ %t2602 = fold %t2601 fn="agg.max" :: float
1429
+ %t2603 = const 0.009 :: float
1430
+ %t2604 = call core.mul(%t2602, %t2603) :: float
1431
+ %t2585 = call core.add(%t2583, %t2604) :: float
1432
+ %t2517 = call core.add(%t2532, %t2585) :: float
1433
+ %t2606 = load_input "state_rate" :: float
1434
+ %t2607 = call core.mul(%t2512, %t2606) :: float
1435
+ %t2519 = call core.add(%t2517, %t2607) :: float
1436
+ %t2609 = load_input "local_rate" :: float
1437
+ %t2610 = call core.mul(%t2512, %t2609) :: float
1438
+ %t2521 = call core.add(%t2519, %t2610) :: float
1439
+ %t2514 = call core.sub(%t2512, %t2521) :: float
1440
+ %t407 = load_input "retirement_contrib" :: float
1441
+ %t408 = call core.sub(%t2514, %t407) :: float
1442
+ yield %t408
1443
+ )
1444
+ (Declaration taxable_hoh
1445
+ %t409 = load_input "income" :: float
1446
+ %t410 = load_input "fed" :: any
1447
+ %t411 = load_field t410["head_of_household"] :: any
1448
+ %t412 = load_field t411["std"] :: float
1449
+ %t413 = call core.sub(%t409, %t412) :: float
1450
+ %t414 = const 0 :: integer
1451
+ %t415 = make_tuple(%t413, %t414) :: tuple<float, integer>
1452
+ %t416 = fold %t415 fn="agg.max" :: float
1453
+ yield %t416
1454
+ )
1455
+ (Declaration lo_h
1456
+ %t417 = load_input "fed" :: array
1457
+ %t418 = load_field t417["head_of_household"] :: any
1458
+ %t419 = load_field t418["rates"] :: any
1459
+ loop rates id=L25 in %t419 as el=%rates_el_420, idx=%rates_i_421
1460
+ %t422 = load_field rates_el_420["lo"] :: float
1461
+ yield %t422
1462
+ end_loop
1463
+ )
1464
+ (Declaration hi_h
1465
+ %t423 = load_input "fed" :: array
1466
+ %t424 = load_field t423["head_of_household"] :: any
1467
+ %t425 = load_field t424["rates"] :: any
1468
+ loop rates id=L26 in %t425 as el=%rates_el_426, idx=%rates_i_427
1469
+ %t428 = load_field rates_el_426["hi"] :: float
1470
+ yield %t428
1471
+ end_loop
1472
+ )
1473
+ (Declaration rate_h
1474
+ %t429 = load_input "fed" :: array
1475
+ %t430 = load_field t429["head_of_household"] :: any
1476
+ %t431 = load_field t430["rates"] :: any
1477
+ loop rates id=L27 in %t431 as el=%rates_el_432, idx=%rates_i_433
1478
+ %t434 = load_field rates_el_432["rate"] :: float
1479
+ yield %t434
1480
+ end_loop
1481
+ )
1482
+ (Declaration hi_h_eff
1483
+ %t435 = load_input "fed" :: array
1484
+ %t436 = load_field t435["head_of_household"] :: any
1485
+ %t437 = load_field t436["rates"] :: any
1486
+ %t441 = const -1 :: integer
1487
+ %t443 = const 100000000000.0 :: float
1488
+ loop rates id=L28 in %t437 as el=%rates_el_438, idx=%rates_i_439
1489
+ %t2614 = load_field rates_el_438["hi"] :: float
1490
+ %t442 = call core.eq(%t2614, %t441) :: boolean
1491
+ %t445 = select %t442, %t443, %t2614 :: float
1492
+ yield %t445
1493
+ end_loop
1494
+ )
1495
+ (Declaration amt_h
1496
+ %t446 = load_input "fed" :: array
1497
+ %t447 = load_field t446["head_of_household"] :: any
1498
+ %t448 = load_field t447["rates"] :: any
1499
+ %t2624 = const 0 :: integer
1500
+ %t2635 = const -1 :: integer
1501
+ %t2637 = const 100000000000.0 :: float
1502
+ loop rates id=L29 in %t448 as el=%rates_el_449, idx=%rates_i_450
1503
+ %t2630 = load_field rates_el_449["lo"] :: float
1504
+ %t2643 = load_field rates_el_449["hi"] :: float
1505
+ %t453 = call core.sub(%t451, %t2630) :: float
1506
+ %t2636 = call core.eq(%t2643, %t2635) :: boolean
1507
+ %t2639 = select %t2636, %t2637, %t2643 :: float
1508
+ %t457 = call core.sub(%t2639, %t2630) :: float
1509
+ %t458 = call core.clamp(%t453, %t2624, %t457) :: float
1510
+ yield %t458
1511
+ end_loop
1512
+ )
1513
+ (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
+ %t2663 = load_input "income" :: float
1519
+ %t2664 = load_input "fed" :: any
1520
+ %t2668 = const 0 :: integer
1521
+ %t2679 = const -1 :: integer
1522
+ %t2681 = const 100000000000.0 :: float
1523
+ %t2665 = load_field t2664["head_of_household"] :: any
1524
+ %t2666 = load_field t2665["std"] :: float
1525
+ %t2667 = call core.sub(%t2663, %t2666) :: float
1526
+ %t2669 = make_tuple(%t2667, %t2668) :: tuple<float, integer>
1527
+ %t2670 = fold %t2669 fn="agg.max" :: float
1528
+ loop rates id=L30 in %t462 as el=%rates_el_463, idx=%rates_i_464
1529
+ %t2674 = load_field rates_el_463["lo"] :: float
1530
+ %t2687 = load_field rates_el_463["hi"] :: float
1531
+ %t2699 = load_field rates_el_463["rate"] :: float
1532
+ %t2680 = call core.eq(%t2687, %t2679) :: boolean
1533
+ %t2683 = select %t2680, %t2681, %t2687 :: float
1534
+ %t2661 = call core.sub(%t2683, %t2674) :: float
1535
+ %t2657 = call core.sub(%t2670, %t2674) :: float
1536
+ %t2662 = call core.clamp(%t2657, %t2668, %t2661) :: float
1537
+ %t467 = call core.mul(%t2662, %t2699) :: float
1538
+ %acc_459 = acc_add agg.sum(%acc_459, %t467) :: float
1539
+ end_loop
1540
+ %t468 = acc_load %acc_459 :: float
1541
+ yield %t468
1542
+ )
1543
+ (Declaration in_br_h
1544
+ %t469 = load_input "fed" :: array
1545
+ %t470 = load_field t469["head_of_household"] :: any
1546
+ %t471 = load_field t470["rates"] :: any
1547
+ %t2724 = const -1 :: integer
1548
+ %t2726 = const 100000000000.0 :: float
1549
+ loop rates id=L31 in %t471 as el=%rates_el_472, idx=%rates_i_473
1550
+ %t2719 = load_field rates_el_472["lo"] :: float
1551
+ %t2732 = load_field rates_el_472["hi"] :: float
1552
+ %t476 = call core.gte(%t474, %t2719) :: boolean
1553
+ %t2725 = call core.eq(%t2732, %t2724) :: boolean
1554
+ %t2728 = select %t2725, %t2726, %t2732 :: float
1555
+ %t479 = call core.lt(%t477, %t2728) :: boolean
1556
+ %t480 = call core.and(%t476, %t479) :: boolean
1557
+ yield %t480
1558
+ end_loop
1559
+ )
1560
+ (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
+ %t2747 = load_input "income" :: float
1566
+ %t2748 = load_input "fed" :: any
1567
+ %t2752 = const 0 :: integer
1568
+ %t2771 = const -1 :: integer
1569
+ %t2773 = const 100000000000.0 :: float
1570
+ %t2749 = load_field t2748["head_of_household"] :: any
1571
+ %t2750 = load_field t2749["std"] :: float
1572
+ %t2751 = call core.sub(%t2747, %t2750) :: float
1573
+ %t2753 = make_tuple(%t2751, %t2752) :: tuple<float, integer>
1574
+ %t2754 = fold %t2753 fn="agg.max" :: float
1575
+ loop rates id=L32 in %t484 as el=%rates_el_485, idx=%rates_i_486
1576
+ %t2766 = load_field rates_el_485["lo"] :: float
1577
+ %t2779 = load_field rates_el_485["hi"] :: float
1578
+ %t2787 = load_field rates_el_485["rate"] :: float
1579
+ %t2772 = call core.eq(%t2779, %t2771) :: boolean
1580
+ %t2775 = select %t2772, %t2773, %t2779 :: float
1581
+ %t2743 = call core.gte(%t2754, %t2766) :: boolean
1582
+ %t2745 = call core.lt(%t2754, %t2775) :: boolean
1583
+ %t2746 = call core.and(%t2743, %t2745) :: boolean
1584
+ %t490 = select %t2746, %t2787, %t2752 :: float
1585
+ %acc_481 = acc_add agg.sum(%acc_481, %t490) :: float
1586
+ end_loop
1587
+ %t491 = acc_load %acc_481 :: float
1588
+ yield %t491
1589
+ )
1590
+ (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
+ %t2810 = load_input "income" :: float
1596
+ %t2811 = load_input "fed" :: any
1597
+ %t2815 = const 0 :: integer
1598
+ %t2826 = const -1 :: integer
1599
+ %t2828 = const 100000000000.0 :: float
1600
+ %t2812 = load_field t2811["head_of_household"] :: any
1601
+ %t2813 = load_field t2812["std"] :: float
1602
+ %t2814 = call core.sub(%t2810, %t2813) :: float
1603
+ %t2816 = make_tuple(%t2814, %t2815) :: tuple<float, integer>
1604
+ %t2817 = fold %t2816 fn="agg.max" :: float
1605
+ loop rates id=L48 in %t2792 as el=%t2793, idx=%t2794
1606
+ %t2821 = load_field t2793["lo"] :: float
1607
+ %t2834 = load_field t2793["hi"] :: float
1608
+ %t2846 = load_field t2793["rate"] :: float
1609
+ %t2827 = call core.eq(%t2834, %t2826) :: boolean
1610
+ %t2830 = select %t2827, %t2828, %t2834 :: float
1611
+ %t2808 = call core.sub(%t2830, %t2821) :: float
1612
+ %t2804 = call core.sub(%t2817, %t2821) :: float
1613
+ %t2809 = call core.clamp(%t2804, %t2815, %t2808) :: float
1614
+ %t2797 = call core.mul(%t2809, %t2846) :: float
1615
+ %acc2789 = acc_add agg.sum(%acc2789, %t2797) :: float
1616
+ end_loop
1617
+ %t2798 = acc_load %acc2789 :: float
1618
+ %t494 = const 1.0 :: float
1619
+ %t495 = make_tuple(%t2810, %t494) :: tuple<float>
1620
+ %t496 = fold %t495 fn="agg.max" :: float
1621
+ %t497 = call core.div(%t2798, %t496) :: float
1622
+ yield %t497
1623
+ )
1624
+ (Declaration ss_tax_h
1625
+ %t2847 = load_input "income" :: float
1626
+ %t2848 = const 168600.0 :: float
1627
+ %t2849 = make_tuple(%t2847, %t2848) :: tuple<float>
1628
+ %t2850 = fold %t2849 fn="agg.min" :: float
1629
+ %t2851 = const 0.062 :: float
1630
+ %t2852 = call core.mul(%t2850, %t2851) :: float
1631
+ yield %t2852
1632
+ )
1633
+ (Declaration med_tax_h
1634
+ %t2853 = load_input "income" :: float
1635
+ %t2854 = const 0.0145 :: float
1636
+ %t2855 = call core.mul(%t2853, %t2854) :: float
1637
+ yield %t2855
1638
+ )
1639
+ (Declaration addl_threshold_hoh
1640
+ %t500 = const 200000.0 :: float
1641
+ yield %t500
1642
+ )
1643
+ (Declaration addl_med_tax_h
1644
+ %t501 = load_input "income" :: float
1645
+ %t502 = const 200000.0 :: float
1646
+ %t503 = call core.sub(%t501, %t502) :: float
1647
+ %t504 = const 0 :: integer
1648
+ %t505 = make_tuple(%t503, %t504) :: tuple<float, integer>
1649
+ %t506 = fold %t505 fn="agg.max" :: float
1650
+ %t507 = const 0.009 :: float
1651
+ %t508 = call core.mul(%t506, %t507) :: float
1652
+ yield %t508
1653
+ )
1654
+ (Declaration fica_tax_hoh
1655
+ %t2857 = load_input "income" :: float
1656
+ %t2858 = const 168600.0 :: float
1657
+ %t2859 = make_tuple(%t2857, %t2858) :: tuple<float>
1658
+ %t2860 = fold %t2859 fn="agg.min" :: float
1659
+ %t2861 = const 0.062 :: float
1660
+ %t2862 = call core.mul(%t2860, %t2861) :: float
1661
+ %t2865 = const 0.0145 :: float
1662
+ %t2866 = call core.mul(%t2857, %t2865) :: float
1663
+ %t511 = call core.add(%t2862, %t2866) :: float
1664
+ %t2868 = const 200000.0 :: float
1665
+ %t2869 = call core.sub(%t2857, %t2868) :: float
1666
+ %t2870 = const 0 :: integer
1667
+ %t2871 = make_tuple(%t2869, %t2870) :: tuple<float, integer>
1668
+ %t2872 = fold %t2871 fn="agg.max" :: float
1669
+ %t2873 = const 0.009 :: float
1670
+ %t2874 = call core.mul(%t2872, %t2873) :: float
1671
+ %t513 = call core.add(%t511, %t2874) :: float
1672
+ yield %t513
1673
+ )
1674
+ (Declaration fica_eff_hoh
1675
+ %t2881 = load_input "income" :: float
1676
+ %t2882 = const 168600.0 :: float
1677
+ %t2883 = make_tuple(%t2881, %t2882) :: tuple<float>
1678
+ %t2884 = fold %t2883 fn="agg.min" :: float
1679
+ %t2885 = const 0.062 :: float
1680
+ %t2886 = call core.mul(%t2884, %t2885) :: float
1681
+ %t2889 = const 0.0145 :: float
1682
+ %t2890 = call core.mul(%t2881, %t2889) :: float
1683
+ %t2877 = call core.add(%t2886, %t2890) :: float
1684
+ %t2892 = const 200000.0 :: float
1685
+ %t2893 = call core.sub(%t2881, %t2892) :: float
1686
+ %t2894 = const 0 :: integer
1687
+ %t2895 = make_tuple(%t2893, %t2894) :: tuple<float, integer>
1688
+ %t2896 = fold %t2895 fn="agg.max" :: float
1689
+ %t2897 = const 0.009 :: float
1690
+ %t2898 = call core.mul(%t2896, %t2897) :: float
1691
+ %t2879 = call core.add(%t2877, %t2898) :: float
1692
+ %t516 = const 1.0 :: float
1693
+ %t517 = make_tuple(%t2881, %t516) :: tuple<float>
1694
+ %t518 = fold %t517 fn="agg.max" :: float
1695
+ %t519 = call core.div(%t2879, %t518) :: float
1696
+ yield %t519
1697
+ )
1698
+ (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
+ %t2921 = load_input "income" :: float
1704
+ %t2922 = load_input "fed" :: any
1705
+ %t2926 = const 0 :: integer
1706
+ %t2937 = const -1 :: integer
1707
+ %t2939 = const 100000000000.0 :: float
1708
+ %t2923 = load_field t2922["head_of_household"] :: any
1709
+ %t2924 = load_field t2923["std"] :: float
1710
+ %t2925 = call core.sub(%t2921, %t2924) :: float
1711
+ %t2927 = make_tuple(%t2925, %t2926) :: tuple<float, integer>
1712
+ %t2928 = fold %t2927 fn="agg.max" :: float
1713
+ loop rates id=L49 in %t2903 as el=%t2904, idx=%t2905
1714
+ %t2932 = load_field t2904["lo"] :: float
1715
+ %t2945 = load_field t2904["hi"] :: float
1716
+ %t2957 = load_field t2904["rate"] :: float
1717
+ %t2938 = call core.eq(%t2945, %t2937) :: boolean
1718
+ %t2941 = select %t2938, %t2939, %t2945 :: float
1719
+ %t2919 = call core.sub(%t2941, %t2932) :: float
1720
+ %t2915 = call core.sub(%t2928, %t2932) :: float
1721
+ %t2920 = call core.clamp(%t2915, %t2926, %t2919) :: float
1722
+ %t2908 = call core.mul(%t2920, %t2957) :: float
1723
+ %acc2900 = acc_add agg.sum(%acc2900, %t2908) :: float
1724
+ end_loop
1725
+ %t2909 = acc_load %acc2900 :: float
1726
+ %t2965 = const 168600.0 :: float
1727
+ %t2966 = make_tuple(%t2921, %t2965) :: tuple<float>
1728
+ %t2967 = fold %t2966 fn="agg.min" :: float
1729
+ %t2968 = const 0.062 :: float
1730
+ %t2969 = call core.mul(%t2967, %t2968) :: float
1731
+ %t2972 = const 0.0145 :: float
1732
+ %t2973 = call core.mul(%t2921, %t2972) :: float
1733
+ %t2960 = call core.add(%t2969, %t2973) :: float
1734
+ %t2975 = const 200000.0 :: float
1735
+ %t2976 = call core.sub(%t2921, %t2975) :: float
1736
+ %t2978 = make_tuple(%t2976, %t2926) :: tuple<float, integer>
1737
+ %t2979 = fold %t2978 fn="agg.max" :: float
1738
+ %t2980 = const 0.009 :: float
1739
+ %t2981 = call core.mul(%t2979, %t2980) :: float
1740
+ %t2962 = call core.add(%t2960, %t2981) :: float
1741
+ %t522 = call core.add(%t2909, %t2962) :: float
1742
+ %t2983 = load_input "state_rate" :: float
1743
+ %t2984 = call core.mul(%t2921, %t2983) :: float
1744
+ %t524 = call core.add(%t522, %t2984) :: float
1745
+ %t2986 = load_input "local_rate" :: float
1746
+ %t2987 = call core.mul(%t2921, %t2986) :: float
1747
+ %t526 = call core.add(%t524, %t2987) :: float
1748
+ yield %t526
1749
+ )
1750
+ (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
+ %t3017 = load_input "income" :: float
1756
+ %t3018 = load_input "fed" :: any
1757
+ %t3022 = const 0 :: integer
1758
+ %t3033 = const -1 :: integer
1759
+ %t3035 = const 100000000000.0 :: float
1760
+ %t3019 = load_field t3018["head_of_household"] :: any
1761
+ %t3020 = load_field t3019["std"] :: float
1762
+ %t3021 = call core.sub(%t3017, %t3020) :: float
1763
+ %t3023 = make_tuple(%t3021, %t3022) :: tuple<float, integer>
1764
+ %t3024 = fold %t3023 fn="agg.max" :: float
1765
+ loop rates id=L50 in %t2999 as el=%t3000, idx=%t3001
1766
+ %t3028 = load_field t3000["lo"] :: float
1767
+ %t3041 = load_field t3000["hi"] :: float
1768
+ %t3053 = load_field t3000["rate"] :: float
1769
+ %t3034 = call core.eq(%t3041, %t3033) :: boolean
1770
+ %t3037 = select %t3034, %t3035, %t3041 :: float
1771
+ %t3015 = call core.sub(%t3037, %t3028) :: float
1772
+ %t3011 = call core.sub(%t3024, %t3028) :: float
1773
+ %t3016 = call core.clamp(%t3011, %t3022, %t3015) :: float
1774
+ %t3004 = call core.mul(%t3016, %t3053) :: float
1775
+ %acc2996 = acc_add agg.sum(%acc2996, %t3004) :: float
1776
+ end_loop
1777
+ %t3005 = acc_load %acc2996 :: float
1778
+ %t3061 = const 168600.0 :: float
1779
+ %t3062 = make_tuple(%t3017, %t3061) :: tuple<float>
1780
+ %t3063 = fold %t3062 fn="agg.min" :: float
1781
+ %t3064 = const 0.062 :: float
1782
+ %t3065 = call core.mul(%t3063, %t3064) :: float
1783
+ %t3068 = const 0.0145 :: float
1784
+ %t3069 = call core.mul(%t3017, %t3068) :: float
1785
+ %t3056 = call core.add(%t3065, %t3069) :: float
1786
+ %t3071 = const 200000.0 :: float
1787
+ %t3072 = call core.sub(%t3017, %t3071) :: float
1788
+ %t3074 = make_tuple(%t3072, %t3022) :: tuple<float, integer>
1789
+ %t3075 = fold %t3074 fn="agg.max" :: float
1790
+ %t3076 = const 0.009 :: float
1791
+ %t3077 = call core.mul(%t3075, %t3076) :: float
1792
+ %t3058 = call core.add(%t3056, %t3077) :: float
1793
+ %t2990 = call core.add(%t3005, %t3058) :: float
1794
+ %t3079 = load_input "state_rate" :: float
1795
+ %t3080 = call core.mul(%t3017, %t3079) :: float
1796
+ %t2992 = call core.add(%t2990, %t3080) :: float
1797
+ %t3082 = load_input "local_rate" :: float
1798
+ %t3083 = call core.mul(%t3017, %t3082) :: float
1799
+ %t2994 = call core.add(%t2992, %t3083) :: float
1800
+ %t529 = const 1.0 :: float
1801
+ %t530 = make_tuple(%t3017, %t529) :: tuple<float>
1802
+ %t531 = fold %t530 fn="agg.max" :: float
1803
+ %t532 = call core.div(%t2994, %t531) :: float
1804
+ yield %t532
1805
+ )
1806
+ (Declaration after_tax_hoh
1807
+ %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
+ %t3114 = load_input "fed" :: any
1813
+ %t3118 = const 0 :: integer
1814
+ %t3129 = const -1 :: integer
1815
+ %t3131 = const 100000000000.0 :: float
1816
+ %t3115 = load_field t3114["head_of_household"] :: any
1817
+ %t3116 = load_field t3115["std"] :: float
1818
+ %t3117 = call core.sub(%t533, %t3116) :: float
1819
+ %t3119 = make_tuple(%t3117, %t3118) :: tuple<float, integer>
1820
+ %t3120 = fold %t3119 fn="agg.max" :: float
1821
+ loop rates id=L51 in %t3095 as el=%t3096, idx=%t3097
1822
+ %t3124 = load_field t3096["lo"] :: float
1823
+ %t3137 = load_field t3096["hi"] :: float
1824
+ %t3149 = load_field t3096["rate"] :: float
1825
+ %t3130 = call core.eq(%t3137, %t3129) :: boolean
1826
+ %t3133 = select %t3130, %t3131, %t3137 :: float
1827
+ %t3111 = call core.sub(%t3133, %t3124) :: float
1828
+ %t3107 = call core.sub(%t3120, %t3124) :: float
1829
+ %t3112 = call core.clamp(%t3107, %t3118, %t3111) :: float
1830
+ %t3100 = call core.mul(%t3112, %t3149) :: float
1831
+ %acc3092 = acc_add agg.sum(%acc3092, %t3100) :: float
1832
+ end_loop
1833
+ %t3101 = acc_load %acc3092 :: float
1834
+ %t3157 = const 168600.0 :: float
1835
+ %t3158 = make_tuple(%t533, %t3157) :: tuple<float>
1836
+ %t3159 = fold %t3158 fn="agg.min" :: float
1837
+ %t3160 = const 0.062 :: float
1838
+ %t3161 = call core.mul(%t3159, %t3160) :: float
1839
+ %t3164 = const 0.0145 :: float
1840
+ %t3165 = call core.mul(%t533, %t3164) :: float
1841
+ %t3152 = call core.add(%t3161, %t3165) :: float
1842
+ %t3167 = const 200000.0 :: float
1843
+ %t3168 = call core.sub(%t533, %t3167) :: float
1844
+ %t3170 = make_tuple(%t3168, %t3118) :: tuple<float, integer>
1845
+ %t3171 = fold %t3170 fn="agg.max" :: float
1846
+ %t3172 = const 0.009 :: float
1847
+ %t3173 = call core.mul(%t3171, %t3172) :: float
1848
+ %t3154 = call core.add(%t3152, %t3173) :: float
1849
+ %t3086 = call core.add(%t3101, %t3154) :: float
1850
+ %t3175 = load_input "state_rate" :: float
1851
+ %t3176 = call core.mul(%t533, %t3175) :: float
1852
+ %t3088 = call core.add(%t3086, %t3176) :: float
1853
+ %t3178 = load_input "local_rate" :: float
1854
+ %t3179 = call core.mul(%t533, %t3178) :: float
1855
+ %t3090 = call core.add(%t3088, %t3179) :: float
1856
+ %t535 = call core.sub(%t533, %t3090) :: float
1857
+ yield %t535
1858
+ )
1859
+ (Declaration take_home_hoh
1860
+ %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
+ %t3213 = load_input "fed" :: any
1866
+ %t3217 = const 0 :: integer
1867
+ %t3228 = const -1 :: integer
1868
+ %t3230 = const 100000000000.0 :: float
1869
+ %t3214 = load_field t3213["head_of_household"] :: any
1870
+ %t3215 = load_field t3214["std"] :: float
1871
+ %t3216 = call core.sub(%t3180, %t3215) :: float
1872
+ %t3218 = make_tuple(%t3216, %t3217) :: tuple<float, integer>
1873
+ %t3219 = fold %t3218 fn="agg.max" :: float
1874
+ loop rates id=L52 in %t3194 as el=%t3195, idx=%t3196
1875
+ %t3223 = load_field t3195["lo"] :: float
1876
+ %t3236 = load_field t3195["hi"] :: float
1877
+ %t3248 = load_field t3195["rate"] :: float
1878
+ %t3229 = call core.eq(%t3236, %t3228) :: boolean
1879
+ %t3232 = select %t3229, %t3230, %t3236 :: float
1880
+ %t3210 = call core.sub(%t3232, %t3223) :: float
1881
+ %t3206 = call core.sub(%t3219, %t3223) :: float
1882
+ %t3211 = call core.clamp(%t3206, %t3217, %t3210) :: float
1883
+ %t3199 = call core.mul(%t3211, %t3248) :: float
1884
+ %acc3191 = acc_add agg.sum(%acc3191, %t3199) :: float
1885
+ end_loop
1886
+ %t3200 = acc_load %acc3191 :: float
1887
+ %t3256 = const 168600.0 :: float
1888
+ %t3257 = make_tuple(%t3180, %t3256) :: tuple<float>
1889
+ %t3258 = fold %t3257 fn="agg.min" :: float
1890
+ %t3259 = const 0.062 :: float
1891
+ %t3260 = call core.mul(%t3258, %t3259) :: float
1892
+ %t3263 = const 0.0145 :: float
1893
+ %t3264 = call core.mul(%t3180, %t3263) :: float
1894
+ %t3251 = call core.add(%t3260, %t3264) :: float
1895
+ %t3266 = const 200000.0 :: float
1896
+ %t3267 = call core.sub(%t3180, %t3266) :: float
1897
+ %t3269 = make_tuple(%t3267, %t3217) :: tuple<float, integer>
1898
+ %t3270 = fold %t3269 fn="agg.max" :: float
1899
+ %t3271 = const 0.009 :: float
1900
+ %t3272 = call core.mul(%t3270, %t3271) :: float
1901
+ %t3253 = call core.add(%t3251, %t3272) :: float
1902
+ %t3185 = call core.add(%t3200, %t3253) :: float
1903
+ %t3274 = load_input "state_rate" :: float
1904
+ %t3275 = call core.mul(%t3180, %t3274) :: float
1905
+ %t3187 = call core.add(%t3185, %t3275) :: float
1906
+ %t3277 = load_input "local_rate" :: float
1907
+ %t3278 = call core.mul(%t3180, %t3277) :: float
1908
+ %t3189 = call core.add(%t3187, %t3278) :: float
1909
+ %t3182 = call core.sub(%t3180, %t3189) :: float
1910
+ %t537 = load_input "retirement_contrib" :: float
1911
+ %t538 = call core.sub(%t3182, %t537) :: float
1912
+ yield %t538
1913
+ )
1914
+ (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
+ %t3301 = load_input "income" :: float
1921
+ %t3302 = load_input "fed" :: any
1922
+ %t3306 = const 0 :: integer
1923
+ %t3325 = const -1 :: integer
1924
+ %t3327 = const 100000000000.0 :: float
1925
+ %t3303 = load_field t3302["single"] :: any
1926
+ %t3304 = load_field t3303["std"] :: float
1927
+ %t3305 = call core.sub(%t3301, %t3304) :: float
1928
+ %t3307 = make_tuple(%t3305, %t3306) :: tuple<float, integer>
1929
+ %t3308 = fold %t3307 fn="agg.max" :: float
1930
+ loop rates id=L53 in %t3283 as el=%t3284, idx=%t3285
1931
+ %t3320 = load_field t3284["lo"] :: float
1932
+ %t3333 = load_field t3284["hi"] :: float
1933
+ %t3341 = load_field t3284["rate"] :: float
1934
+ %t3326 = call core.eq(%t3333, %t3325) :: boolean
1935
+ %t3329 = select %t3326, %t3327, %t3333 :: float
1936
+ %t3297 = call core.gte(%t3308, %t3320) :: boolean
1937
+ %t3299 = call core.lt(%t3308, %t3329) :: boolean
1938
+ %t3300 = call core.and(%t3297, %t3299) :: boolean
1939
+ %t3289 = select %t3300, %t3341, %t3306 :: float
1940
+ %acc3280 = acc_add agg.sum(%acc3280, %t3289) :: float
1941
+ %t3364 = call core.sub(%t3308, %t3320) :: float
1942
+ %t3368 = call core.sub(%t3329, %t3320) :: float
1943
+ %t3369 = call core.clamp(%t3364, %t3306, %t3368) :: float
1944
+ %t3357 = call core.mul(%t3369, %t3341) :: float
1945
+ %acc3349 = acc_add agg.sum(%acc3349, %t3357) :: float
1946
+ end_loop
1947
+ %t3290 = acc_load %acc3280 :: float
1948
+ %t3358 = acc_load %acc3349 :: float
1949
+ %t3344 = const 1.0 :: float
1950
+ %t3345 = make_tuple(%t3301, %t3344) :: tuple<float>
1951
+ %t3346 = fold %t3345 fn="agg.max" :: float
1952
+ %t3347 = call core.div(%t3358, %t3346) :: float
1953
+ %acc3408 = decl_acc :: float
1954
+ loop rates id=L55 in %t3283 as el=%t3412, idx=%t3413
1955
+ %t3440 = load_field t3412["lo"] :: float
1956
+ %t3453 = load_field t3412["hi"] :: float
1957
+ %t3465 = load_field t3412["rate"] :: float
1958
+ %t3423 = call core.sub(%t3308, %t3440) :: float
1959
+ %t3446 = call core.eq(%t3453, %t3325) :: boolean
1960
+ %t3449 = select %t3446, %t3327, %t3453 :: float
1961
+ %t3427 = call core.sub(%t3449, %t3440) :: float
1962
+ %t3428 = call core.clamp(%t3423, %t3306, %t3427) :: float
1963
+ %t3416 = call core.mul(%t3428, %t3465) :: float
1964
+ %acc3408 = acc_add agg.sum(%acc3408, %t3416) :: float
1965
+ end_loop
1966
+ %t3417 = acc_load %acc3408 :: float
1967
+ %t542 = make_object{marginal: %t3290, effective: %t3347, tax: %t3417} :: object
1968
+ %t3478 = const 168600.0 :: float
1969
+ %t3479 = make_tuple(%t3301, %t3478) :: tuple<float>
1970
+ %t3480 = fold %t3479 fn="agg.min" :: float
1971
+ %t3481 = const 0.062 :: float
1972
+ %t3482 = call core.mul(%t3480, %t3481) :: float
1973
+ %t3484 = const 0.0145 :: float
1974
+ %t3485 = call core.mul(%t3301, %t3484) :: float
1975
+ %t3474 = call core.add(%t3482, %t3485) :: float
1976
+ %t3487 = const 200000.0 :: float
1977
+ %t3488 = call core.sub(%t3301, %t3487) :: float
1978
+ %t3490 = make_tuple(%t3488, %t3306) :: tuple<float, integer>
1979
+ %t3491 = fold %t3490 fn="agg.max" :: float
1980
+ %t3492 = const 0.009 :: float
1981
+ %t3493 = call core.mul(%t3491, %t3492) :: float
1982
+ %t3476 = call core.add(%t3474, %t3493) :: float
1983
+ %t3471 = call core.div(%t3476, %t3346) :: float
1984
+ %t545 = make_object{effective: %t3471, tax: %t3476} :: object
1985
+ %t546 = load_input "state_rate" :: float
1986
+ %t3518 = call core.mul(%t3301, %t546) :: float
1987
+ %t549 = make_object{marginal: %t546, effective: %t546, tax: %t3518} :: object
1988
+ %t550 = load_input "local_rate" :: float
1989
+ %t3521 = call core.mul(%t3301, %t550) :: float
1990
+ %t553 = make_object{marginal: %t550, effective: %t550, tax: %t3521} :: object
1991
+ %acc3536 = decl_acc :: float
1992
+ loop rates id=L56 in %t3283 as el=%t3540, idx=%t3541
1993
+ %t3568 = load_field t3540["lo"] :: float
1994
+ %t3581 = load_field t3540["hi"] :: float
1995
+ %t3593 = load_field t3540["rate"] :: float
1996
+ %t3551 = call core.sub(%t3308, %t3568) :: float
1997
+ %t3574 = call core.eq(%t3581, %t3325) :: boolean
1998
+ %t3577 = select %t3574, %t3327, %t3581 :: float
1999
+ %t3555 = call core.sub(%t3577, %t3568) :: float
2000
+ %t3556 = call core.clamp(%t3551, %t3306, %t3555) :: float
2001
+ %t3544 = call core.mul(%t3556, %t3593) :: float
2002
+ %acc3536 = acc_add agg.sum(%acc3536, %t3544) :: float
2003
+ end_loop
2004
+ %t3545 = acc_load %acc3536 :: float
2005
+ %t3530 = call core.add(%t3545, %t3476) :: float
2006
+ %t3532 = call core.add(%t3530, %t3518) :: float
2007
+ %t3534 = call core.add(%t3532, %t3521) :: float
2008
+ %t3527 = call core.div(%t3534, %t3346) :: float
2009
+ %acc3630 = decl_acc :: float
2010
+ loop rates id=L57 in %t3283 as el=%t3634, idx=%t3635
2011
+ %t3662 = load_field t3634["lo"] :: float
2012
+ %t3675 = load_field t3634["hi"] :: float
2013
+ %t3687 = load_field t3634["rate"] :: float
2014
+ %t3645 = call core.sub(%t3308, %t3662) :: float
2015
+ %t3668 = call core.eq(%t3675, %t3325) :: boolean
2016
+ %t3671 = select %t3668, %t3327, %t3675 :: float
2017
+ %t3649 = call core.sub(%t3671, %t3662) :: float
2018
+ %t3650 = call core.clamp(%t3645, %t3306, %t3649) :: float
2019
+ %t3638 = call core.mul(%t3650, %t3687) :: float
2020
+ %acc3630 = acc_add agg.sum(%acc3630, %t3638) :: float
2021
+ end_loop
2022
+ %t3639 = acc_load %acc3630 :: float
2023
+ %t3624 = call core.add(%t3639, %t3476) :: float
2024
+ %t3626 = call core.add(%t3624, %t3518) :: float
2025
+ %t3628 = call core.add(%t3626, %t3521) :: float
2026
+ %t556 = make_object{effective: %t3527, tax: %t3628} :: object
2027
+ %acc3727 = decl_acc :: float
2028
+ loop rates id=L58 in %t3283 as el=%t3731, idx=%t3732
2029
+ %t3759 = load_field t3731["lo"] :: float
2030
+ %t3772 = load_field t3731["hi"] :: float
2031
+ %t3784 = load_field t3731["rate"] :: float
2032
+ %t3742 = call core.sub(%t3308, %t3759) :: float
2033
+ %t3765 = call core.eq(%t3772, %t3325) :: boolean
2034
+ %t3768 = select %t3765, %t3327, %t3772 :: float
2035
+ %t3746 = call core.sub(%t3768, %t3759) :: float
2036
+ %t3747 = call core.clamp(%t3742, %t3306, %t3746) :: float
2037
+ %t3735 = call core.mul(%t3747, %t3784) :: float
2038
+ %acc3727 = acc_add agg.sum(%acc3727, %t3735) :: float
2039
+ end_loop
2040
+ %t3736 = acc_load %acc3727 :: float
2041
+ %t3721 = call core.add(%t3736, %t3476) :: float
2042
+ %t3723 = call core.add(%t3721, %t3518) :: float
2043
+ %t3725 = call core.add(%t3723, %t3521) :: float
2044
+ %t3718 = call core.sub(%t3301, %t3725) :: float
2045
+ %t558 = load_input "retirement_contrib" :: float
2046
+ %acc3827 = decl_acc :: float
2047
+ loop rates id=L59 in %t3283 as el=%t3831, idx=%t3832
2048
+ %t3859 = load_field t3831["lo"] :: float
2049
+ %t3872 = load_field t3831["hi"] :: float
2050
+ %t3884 = load_field t3831["rate"] :: float
2051
+ %t3842 = call core.sub(%t3308, %t3859) :: float
2052
+ %t3865 = call core.eq(%t3872, %t3325) :: boolean
2053
+ %t3868 = select %t3865, %t3327, %t3872 :: float
2054
+ %t3846 = call core.sub(%t3868, %t3859) :: float
2055
+ %t3847 = call core.clamp(%t3842, %t3306, %t3846) :: float
2056
+ %t3835 = call core.mul(%t3847, %t3884) :: float
2057
+ %acc3827 = acc_add agg.sum(%acc3827, %t3835) :: float
2058
+ end_loop
2059
+ %t3836 = acc_load %acc3827 :: float
2060
+ %t3821 = call core.add(%t3836, %t3476) :: float
2061
+ %t3823 = call core.add(%t3821, %t3518) :: float
2062
+ %t3825 = call core.add(%t3823, %t3521) :: float
2063
+ %t3818 = call core.sub(%t3301, %t3825) :: float
2064
+ %t3815 = call core.sub(%t3818, %t558) :: float
2065
+ %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
+ %t3937 = load_field t3302["married_joint"] :: any
2071
+ %t3938 = load_field t3937["std"] :: float
2072
+ %t3939 = call core.sub(%t3301, %t3938) :: float
2073
+ %t3941 = make_tuple(%t3939, %t3306) :: tuple<float, integer>
2074
+ %t3942 = fold %t3941 fn="agg.max" :: float
2075
+ loop rates id=L60 in %t3917 as el=%t3918, idx=%t3919
2076
+ %t3954 = load_field t3918["lo"] :: float
2077
+ %t3967 = load_field t3918["hi"] :: float
2078
+ %t3975 = load_field t3918["rate"] :: float
2079
+ %t3960 = call core.eq(%t3967, %t3325) :: boolean
2080
+ %t3963 = select %t3960, %t3327, %t3967 :: float
2081
+ %t3931 = call core.gte(%t3942, %t3954) :: boolean
2082
+ %t3933 = call core.lt(%t3942, %t3963) :: boolean
2083
+ %t3934 = call core.and(%t3931, %t3933) :: boolean
2084
+ %t3923 = select %t3934, %t3975, %t3306 :: float
2085
+ %acc3914 = acc_add agg.sum(%acc3914, %t3923) :: float
2086
+ %t3998 = call core.sub(%t3942, %t3954) :: float
2087
+ %t4002 = call core.sub(%t3963, %t3954) :: float
2088
+ %t4003 = call core.clamp(%t3998, %t3306, %t4002) :: float
2089
+ %t3991 = call core.mul(%t4003, %t3975) :: float
2090
+ %acc3983 = acc_add agg.sum(%acc3983, %t3991) :: float
2091
+ end_loop
2092
+ %t3924 = acc_load %acc3914 :: float
2093
+ %t3992 = acc_load %acc3983 :: float
2094
+ %t3981 = call core.div(%t3992, %t3346) :: float
2095
+ %acc4042 = decl_acc :: float
2096
+ loop rates id=L62 in %t3917 as el=%t4046, idx=%t4047
2097
+ %t4074 = load_field t4046["lo"] :: float
2098
+ %t4087 = load_field t4046["hi"] :: float
2099
+ %t4099 = load_field t4046["rate"] :: float
2100
+ %t4057 = call core.sub(%t3942, %t4074) :: float
2101
+ %t4080 = call core.eq(%t4087, %t3325) :: boolean
2102
+ %t4083 = select %t4080, %t3327, %t4087 :: float
2103
+ %t4061 = call core.sub(%t4083, %t4074) :: float
2104
+ %t4062 = call core.clamp(%t4057, %t3306, %t4061) :: float
2105
+ %t4050 = call core.mul(%t4062, %t4099) :: float
2106
+ %acc4042 = acc_add agg.sum(%acc4042, %t4050) :: float
2107
+ end_loop
2108
+ %t4051 = acc_load %acc4042 :: float
2109
+ %t564 = make_object{marginal: %t3924, effective: %t3981, tax: %t4051} :: object
2110
+ %t4123 = const 250000.0 :: float
2111
+ %t4124 = call core.sub(%t3301, %t4123) :: float
2112
+ %t4126 = make_tuple(%t4124, %t3306) :: tuple<float, integer>
2113
+ %t4127 = fold %t4126 fn="agg.max" :: float
2114
+ %t4129 = call core.mul(%t4127, %t3492) :: float
2115
+ %t4110 = call core.add(%t3474, %t4129) :: float
2116
+ %t4105 = call core.div(%t4110, %t3346) :: float
2117
+ %t567 = make_object{effective: %t4105, tax: %t4110} :: object
2118
+ %acc4174 = decl_acc :: float
2119
+ loop rates id=L63 in %t3917 as el=%t4178, idx=%t4179
2120
+ %t4206 = load_field t4178["lo"] :: float
2121
+ %t4219 = load_field t4178["hi"] :: float
2122
+ %t4231 = load_field t4178["rate"] :: float
2123
+ %t4189 = call core.sub(%t3942, %t4206) :: float
2124
+ %t4212 = call core.eq(%t4219, %t3325) :: boolean
2125
+ %t4215 = select %t4212, %t3327, %t4219 :: float
2126
+ %t4193 = call core.sub(%t4215, %t4206) :: float
2127
+ %t4194 = call core.clamp(%t4189, %t3306, %t4193) :: float
2128
+ %t4182 = call core.mul(%t4194, %t4231) :: float
2129
+ %acc4174 = acc_add agg.sum(%acc4174, %t4182) :: float
2130
+ end_loop
2131
+ %t4183 = acc_load %acc4174 :: float
2132
+ %t4168 = call core.add(%t4183, %t4110) :: float
2133
+ %t4170 = call core.add(%t4168, %t3518) :: float
2134
+ %t4172 = call core.add(%t4170, %t3521) :: float
2135
+ %t4165 = call core.div(%t4172, %t3346) :: float
2136
+ %acc4270 = decl_acc :: float
2137
+ loop rates id=L64 in %t3917 as el=%t4274, idx=%t4275
2138
+ %t4302 = load_field t4274["lo"] :: float
2139
+ %t4315 = load_field t4274["hi"] :: float
2140
+ %t4327 = load_field t4274["rate"] :: float
2141
+ %t4285 = call core.sub(%t3942, %t4302) :: float
2142
+ %t4308 = call core.eq(%t4315, %t3325) :: boolean
2143
+ %t4311 = select %t4308, %t3327, %t4315 :: float
2144
+ %t4289 = call core.sub(%t4311, %t4302) :: float
2145
+ %t4290 = call core.clamp(%t4285, %t3306, %t4289) :: float
2146
+ %t4278 = call core.mul(%t4290, %t4327) :: float
2147
+ %acc4270 = acc_add agg.sum(%acc4270, %t4278) :: float
2148
+ end_loop
2149
+ %t4279 = acc_load %acc4270 :: float
2150
+ %t4264 = call core.add(%t4279, %t4110) :: float
2151
+ %t4266 = call core.add(%t4264, %t3518) :: float
2152
+ %t4268 = call core.add(%t4266, %t3521) :: float
2153
+ %t578 = make_object{effective: %t4165, tax: %t4268} :: object
2154
+ %acc4369 = decl_acc :: float
2155
+ loop rates id=L65 in %t3917 as el=%t4373, idx=%t4374
2156
+ %t4401 = load_field t4373["lo"] :: float
2157
+ %t4414 = load_field t4373["hi"] :: float
2158
+ %t4426 = load_field t4373["rate"] :: float
2159
+ %t4384 = call core.sub(%t3942, %t4401) :: float
2160
+ %t4407 = call core.eq(%t4414, %t3325) :: boolean
2161
+ %t4410 = select %t4407, %t3327, %t4414 :: float
2162
+ %t4388 = call core.sub(%t4410, %t4401) :: float
2163
+ %t4389 = call core.clamp(%t4384, %t3306, %t4388) :: float
2164
+ %t4377 = call core.mul(%t4389, %t4426) :: float
2165
+ %acc4369 = acc_add agg.sum(%acc4369, %t4377) :: float
2166
+ end_loop
2167
+ %t4378 = acc_load %acc4369 :: float
2168
+ %t4363 = call core.add(%t4378, %t4110) :: float
2169
+ %t4365 = call core.add(%t4363, %t3518) :: float
2170
+ %t4367 = call core.add(%t4365, %t3521) :: float
2171
+ %t4360 = call core.sub(%t3301, %t4367) :: float
2172
+ %acc4471 = decl_acc :: float
2173
+ loop rates id=L66 in %t3917 as el=%t4475, idx=%t4476
2174
+ %t4503 = load_field t4475["lo"] :: float
2175
+ %t4516 = load_field t4475["hi"] :: float
2176
+ %t4528 = load_field t4475["rate"] :: float
2177
+ %t4486 = call core.sub(%t3942, %t4503) :: float
2178
+ %t4509 = call core.eq(%t4516, %t3325) :: boolean
2179
+ %t4512 = select %t4509, %t3327, %t4516 :: float
2180
+ %t4490 = call core.sub(%t4512, %t4503) :: float
2181
+ %t4491 = call core.clamp(%t4486, %t3306, %t4490) :: float
2182
+ %t4479 = call core.mul(%t4491, %t4528) :: float
2183
+ %acc4471 = acc_add agg.sum(%acc4471, %t4479) :: float
2184
+ end_loop
2185
+ %t4480 = acc_load %acc4471 :: float
2186
+ %t4465 = call core.add(%t4480, %t4110) :: float
2187
+ %t4467 = call core.add(%t4465, %t3518) :: float
2188
+ %t4469 = call core.add(%t4467, %t3521) :: float
2189
+ %t4462 = call core.sub(%t3301, %t4469) :: float
2190
+ %t4459 = call core.sub(%t4462, %t558) :: float
2191
+ %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
+ %t4583 = load_field t3302["married_separate"] :: any
2197
+ %t4584 = load_field t4583["std"] :: float
2198
+ %t4585 = call core.sub(%t3301, %t4584) :: float
2199
+ %t4587 = make_tuple(%t4585, %t3306) :: tuple<float, integer>
2200
+ %t4588 = fold %t4587 fn="agg.max" :: float
2201
+ loop rates id=L67 in %t4563 as el=%t4564, idx=%t4565
2202
+ %t4600 = load_field t4564["lo"] :: float
2203
+ %t4613 = load_field t4564["hi"] :: float
2204
+ %t4621 = load_field t4564["rate"] :: float
2205
+ %t4606 = call core.eq(%t4613, %t3325) :: boolean
2206
+ %t4609 = select %t4606, %t3327, %t4613 :: float
2207
+ %t4577 = call core.gte(%t4588, %t4600) :: boolean
2208
+ %t4579 = call core.lt(%t4588, %t4609) :: boolean
2209
+ %t4580 = call core.and(%t4577, %t4579) :: boolean
2210
+ %t4569 = select %t4580, %t4621, %t3306 :: float
2211
+ %acc4560 = acc_add agg.sum(%acc4560, %t4569) :: float
2212
+ %t4644 = call core.sub(%t4588, %t4600) :: float
2213
+ %t4648 = call core.sub(%t4609, %t4600) :: float
2214
+ %t4649 = call core.clamp(%t4644, %t3306, %t4648) :: float
2215
+ %t4637 = call core.mul(%t4649, %t4621) :: float
2216
+ %acc4629 = acc_add agg.sum(%acc4629, %t4637) :: float
2217
+ end_loop
2218
+ %t4570 = acc_load %acc4560 :: float
2219
+ %t4638 = acc_load %acc4629 :: float
2220
+ %t4627 = call core.div(%t4638, %t3346) :: float
2221
+ %acc4688 = decl_acc :: float
2222
+ loop rates id=L69 in %t4563 as el=%t4692, idx=%t4693
2223
+ %t4720 = load_field t4692["lo"] :: float
2224
+ %t4733 = load_field t4692["hi"] :: float
2225
+ %t4745 = load_field t4692["rate"] :: float
2226
+ %t4703 = call core.sub(%t4588, %t4720) :: float
2227
+ %t4726 = call core.eq(%t4733, %t3325) :: boolean
2228
+ %t4729 = select %t4726, %t3327, %t4733 :: float
2229
+ %t4707 = call core.sub(%t4729, %t4720) :: float
2230
+ %t4708 = call core.clamp(%t4703, %t3306, %t4707) :: float
2231
+ %t4696 = call core.mul(%t4708, %t4745) :: float
2232
+ %acc4688 = acc_add agg.sum(%acc4688, %t4696) :: float
2233
+ end_loop
2234
+ %t4697 = acc_load %acc4688 :: float
2235
+ %t586 = make_object{marginal: %t4570, effective: %t4627, tax: %t4697} :: object
2236
+ %t4769 = const 125000.0 :: float
2237
+ %t4770 = call core.sub(%t3301, %t4769) :: float
2238
+ %t4772 = make_tuple(%t4770, %t3306) :: tuple<float, integer>
2239
+ %t4773 = fold %t4772 fn="agg.max" :: float
2240
+ %t4775 = call core.mul(%t4773, %t3492) :: float
2241
+ %t4756 = call core.add(%t3474, %t4775) :: float
2242
+ %t4751 = call core.div(%t4756, %t3346) :: float
2243
+ %t589 = make_object{effective: %t4751, tax: %t4756} :: object
2244
+ %acc4820 = decl_acc :: float
2245
+ loop rates id=L70 in %t4563 as el=%t4824, idx=%t4825
2246
+ %t4852 = load_field t4824["lo"] :: float
2247
+ %t4865 = load_field t4824["hi"] :: float
2248
+ %t4877 = load_field t4824["rate"] :: float
2249
+ %t4835 = call core.sub(%t4588, %t4852) :: float
2250
+ %t4858 = call core.eq(%t4865, %t3325) :: boolean
2251
+ %t4861 = select %t4858, %t3327, %t4865 :: float
2252
+ %t4839 = call core.sub(%t4861, %t4852) :: float
2253
+ %t4840 = call core.clamp(%t4835, %t3306, %t4839) :: float
2254
+ %t4828 = call core.mul(%t4840, %t4877) :: float
2255
+ %acc4820 = acc_add agg.sum(%acc4820, %t4828) :: float
2256
+ end_loop
2257
+ %t4829 = acc_load %acc4820 :: float
2258
+ %t4814 = call core.add(%t4829, %t4756) :: float
2259
+ %t4816 = call core.add(%t4814, %t3518) :: float
2260
+ %t4818 = call core.add(%t4816, %t3521) :: float
2261
+ %t4811 = call core.div(%t4818, %t3346) :: float
2262
+ %acc4916 = decl_acc :: float
2263
+ loop rates id=L71 in %t4563 as el=%t4920, idx=%t4921
2264
+ %t4948 = load_field t4920["lo"] :: float
2265
+ %t4961 = load_field t4920["hi"] :: float
2266
+ %t4973 = load_field t4920["rate"] :: float
2267
+ %t4931 = call core.sub(%t4588, %t4948) :: float
2268
+ %t4954 = call core.eq(%t4961, %t3325) :: boolean
2269
+ %t4957 = select %t4954, %t3327, %t4961 :: float
2270
+ %t4935 = call core.sub(%t4957, %t4948) :: float
2271
+ %t4936 = call core.clamp(%t4931, %t3306, %t4935) :: float
2272
+ %t4924 = call core.mul(%t4936, %t4973) :: float
2273
+ %acc4916 = acc_add agg.sum(%acc4916, %t4924) :: float
2274
+ end_loop
2275
+ %t4925 = acc_load %acc4916 :: float
2276
+ %t4910 = call core.add(%t4925, %t4756) :: float
2277
+ %t4912 = call core.add(%t4910, %t3518) :: float
2278
+ %t4914 = call core.add(%t4912, %t3521) :: float
2279
+ %t600 = make_object{effective: %t4811, tax: %t4914} :: object
2280
+ %acc5015 = decl_acc :: float
2281
+ loop rates id=L72 in %t4563 as el=%t5019, idx=%t5020
2282
+ %t5047 = load_field t5019["lo"] :: float
2283
+ %t5060 = load_field t5019["hi"] :: float
2284
+ %t5072 = load_field t5019["rate"] :: float
2285
+ %t5030 = call core.sub(%t4588, %t5047) :: float
2286
+ %t5053 = call core.eq(%t5060, %t3325) :: boolean
2287
+ %t5056 = select %t5053, %t3327, %t5060 :: float
2288
+ %t5034 = call core.sub(%t5056, %t5047) :: float
2289
+ %t5035 = call core.clamp(%t5030, %t3306, %t5034) :: float
2290
+ %t5023 = call core.mul(%t5035, %t5072) :: float
2291
+ %acc5015 = acc_add agg.sum(%acc5015, %t5023) :: float
2292
+ end_loop
2293
+ %t5024 = acc_load %acc5015 :: float
2294
+ %t5009 = call core.add(%t5024, %t4756) :: float
2295
+ %t5011 = call core.add(%t5009, %t3518) :: float
2296
+ %t5013 = call core.add(%t5011, %t3521) :: float
2297
+ %t5006 = call core.sub(%t3301, %t5013) :: float
2298
+ %acc5117 = decl_acc :: float
2299
+ loop rates id=L73 in %t4563 as el=%t5121, idx=%t5122
2300
+ %t5149 = load_field t5121["lo"] :: float
2301
+ %t5162 = load_field t5121["hi"] :: float
2302
+ %t5174 = load_field t5121["rate"] :: float
2303
+ %t5132 = call core.sub(%t4588, %t5149) :: float
2304
+ %t5155 = call core.eq(%t5162, %t3325) :: boolean
2305
+ %t5158 = select %t5155, %t3327, %t5162 :: float
2306
+ %t5136 = call core.sub(%t5158, %t5149) :: float
2307
+ %t5137 = call core.clamp(%t5132, %t3306, %t5136) :: float
2308
+ %t5125 = call core.mul(%t5137, %t5174) :: float
2309
+ %acc5117 = acc_add agg.sum(%acc5117, %t5125) :: float
2310
+ end_loop
2311
+ %t5126 = acc_load %acc5117 :: float
2312
+ %t5111 = call core.add(%t5126, %t4756) :: float
2313
+ %t5113 = call core.add(%t5111, %t3518) :: float
2314
+ %t5115 = call core.add(%t5113, %t3521) :: float
2315
+ %t5108 = call core.sub(%t3301, %t5115) :: float
2316
+ %t5105 = call core.sub(%t5108, %t558) :: float
2317
+ %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
+ %t5229 = load_field t3302["head_of_household"] :: any
2323
+ %t5230 = load_field t5229["std"] :: float
2324
+ %t5231 = call core.sub(%t3301, %t5230) :: float
2325
+ %t5233 = make_tuple(%t5231, %t3306) :: tuple<float, integer>
2326
+ %t5234 = fold %t5233 fn="agg.max" :: float
2327
+ loop rates id=L74 in %t5209 as el=%t5210, idx=%t5211
2328
+ %t5246 = load_field t5210["lo"] :: float
2329
+ %t5259 = load_field t5210["hi"] :: float
2330
+ %t5267 = load_field t5210["rate"] :: float
2331
+ %t5252 = call core.eq(%t5259, %t3325) :: boolean
2332
+ %t5255 = select %t5252, %t3327, %t5259 :: float
2333
+ %t5223 = call core.gte(%t5234, %t5246) :: boolean
2334
+ %t5225 = call core.lt(%t5234, %t5255) :: boolean
2335
+ %t5226 = call core.and(%t5223, %t5225) :: boolean
2336
+ %t5215 = select %t5226, %t5267, %t3306 :: float
2337
+ %acc5206 = acc_add agg.sum(%acc5206, %t5215) :: float
2338
+ %t5290 = call core.sub(%t5234, %t5246) :: float
2339
+ %t5294 = call core.sub(%t5255, %t5246) :: float
2340
+ %t5295 = call core.clamp(%t5290, %t3306, %t5294) :: float
2341
+ %t5283 = call core.mul(%t5295, %t5267) :: float
2342
+ %acc5275 = acc_add agg.sum(%acc5275, %t5283) :: float
2343
+ end_loop
2344
+ %t5216 = acc_load %acc5206 :: float
2345
+ %t5284 = acc_load %acc5275 :: float
2346
+ %t5273 = call core.div(%t5284, %t3346) :: float
2347
+ %acc5334 = decl_acc :: float
2348
+ loop rates id=L76 in %t5209 as el=%t5338, idx=%t5339
2349
+ %t5366 = load_field t5338["lo"] :: float
2350
+ %t5379 = load_field t5338["hi"] :: float
2351
+ %t5391 = load_field t5338["rate"] :: float
2352
+ %t5349 = call core.sub(%t5234, %t5366) :: float
2353
+ %t5372 = call core.eq(%t5379, %t3325) :: boolean
2354
+ %t5375 = select %t5372, %t3327, %t5379 :: float
2355
+ %t5353 = call core.sub(%t5375, %t5366) :: float
2356
+ %t5354 = call core.clamp(%t5349, %t3306, %t5353) :: float
2357
+ %t5342 = call core.mul(%t5354, %t5391) :: float
2358
+ %acc5334 = acc_add agg.sum(%acc5334, %t5342) :: float
2359
+ end_loop
2360
+ %t5343 = acc_load %acc5334 :: float
2361
+ %t608 = make_object{marginal: %t5216, effective: %t5273, tax: %t5343} :: object
2362
+ %acc5466 = decl_acc :: float
2363
+ loop rates id=L77 in %t5209 as el=%t5470, idx=%t5471
2364
+ %t5498 = load_field t5470["lo"] :: float
2365
+ %t5511 = load_field t5470["hi"] :: float
2366
+ %t5523 = load_field t5470["rate"] :: float
2367
+ %t5481 = call core.sub(%t5234, %t5498) :: float
2368
+ %t5504 = call core.eq(%t5511, %t3325) :: boolean
2369
+ %t5507 = select %t5504, %t3327, %t5511 :: float
2370
+ %t5485 = call core.sub(%t5507, %t5498) :: float
2371
+ %t5486 = call core.clamp(%t5481, %t3306, %t5485) :: float
2372
+ %t5474 = call core.mul(%t5486, %t5523) :: float
2373
+ %acc5466 = acc_add agg.sum(%acc5466, %t5474) :: float
2374
+ end_loop
2375
+ %t5475 = acc_load %acc5466 :: float
2376
+ %t5460 = call core.add(%t5475, %t3476) :: float
2377
+ %t5462 = call core.add(%t5460, %t3518) :: float
2378
+ %t5464 = call core.add(%t5462, %t3521) :: float
2379
+ %t5457 = call core.div(%t5464, %t3346) :: float
2380
+ %acc5562 = decl_acc :: float
2381
+ loop rates id=L78 in %t5209 as el=%t5566, idx=%t5567
2382
+ %t5594 = load_field t5566["lo"] :: float
2383
+ %t5607 = load_field t5566["hi"] :: float
2384
+ %t5619 = load_field t5566["rate"] :: float
2385
+ %t5577 = call core.sub(%t5234, %t5594) :: float
2386
+ %t5600 = call core.eq(%t5607, %t3325) :: boolean
2387
+ %t5603 = select %t5600, %t3327, %t5607 :: float
2388
+ %t5581 = call core.sub(%t5603, %t5594) :: float
2389
+ %t5582 = call core.clamp(%t5577, %t3306, %t5581) :: float
2390
+ %t5570 = call core.mul(%t5582, %t5619) :: float
2391
+ %acc5562 = acc_add agg.sum(%acc5562, %t5570) :: float
2392
+ end_loop
2393
+ %t5571 = acc_load %acc5562 :: float
2394
+ %t5556 = call core.add(%t5571, %t3476) :: float
2395
+ %t5558 = call core.add(%t5556, %t3518) :: float
2396
+ %t5560 = call core.add(%t5558, %t3521) :: float
2397
+ %t622 = make_object{effective: %t5457, tax: %t5560} :: object
2398
+ %acc5661 = decl_acc :: float
2399
+ loop rates id=L79 in %t5209 as el=%t5665, idx=%t5666
2400
+ %t5693 = load_field t5665["lo"] :: float
2401
+ %t5706 = load_field t5665["hi"] :: float
2402
+ %t5718 = load_field t5665["rate"] :: float
2403
+ %t5676 = call core.sub(%t5234, %t5693) :: float
2404
+ %t5699 = call core.eq(%t5706, %t3325) :: boolean
2405
+ %t5702 = select %t5699, %t3327, %t5706 :: float
2406
+ %t5680 = call core.sub(%t5702, %t5693) :: float
2407
+ %t5681 = call core.clamp(%t5676, %t3306, %t5680) :: float
2408
+ %t5669 = call core.mul(%t5681, %t5718) :: float
2409
+ %acc5661 = acc_add agg.sum(%acc5661, %t5669) :: float
2410
+ end_loop
2411
+ %t5670 = acc_load %acc5661 :: float
2412
+ %t5655 = call core.add(%t5670, %t3476) :: float
2413
+ %t5657 = call core.add(%t5655, %t3518) :: float
2414
+ %t5659 = call core.add(%t5657, %t3521) :: float
2415
+ %t5652 = call core.sub(%t3301, %t5659) :: float
2416
+ %acc5763 = decl_acc :: float
2417
+ loop rates id=L80 in %t5209 as el=%t5767, idx=%t5768
2418
+ %t5795 = load_field t5767["lo"] :: float
2419
+ %t5808 = load_field t5767["hi"] :: float
2420
+ %t5820 = load_field t5767["rate"] :: float
2421
+ %t5778 = call core.sub(%t5234, %t5795) :: float
2422
+ %t5801 = call core.eq(%t5808, %t3325) :: boolean
2423
+ %t5804 = select %t5801, %t3327, %t5808 :: float
2424
+ %t5782 = call core.sub(%t5804, %t5795) :: float
2425
+ %t5783 = call core.clamp(%t5778, %t3306, %t5782) :: float
2426
+ %t5771 = call core.mul(%t5783, %t5820) :: float
2427
+ %acc5763 = acc_add agg.sum(%acc5763, %t5771) :: float
2428
+ end_loop
2429
+ %t5772 = acc_load %acc5763 :: float
2430
+ %t5757 = call core.add(%t5772, %t3476) :: float
2431
+ %t5759 = call core.add(%t5757, %t3518) :: float
2432
+ %t5761 = call core.add(%t5759, %t3521) :: float
2433
+ %t5754 = call core.sub(%t3301, %t5761) :: float
2434
+ %t5751 = call core.sub(%t5754, %t558) :: float
2435
+ %t626 = make_object{federal: %t608, fica: %t545, state: %t549, local: %t553, total: %t622, after_tax: %t5652, retirement_contrib: %t558, take_home: %t5751} :: object
2436
+ %t627 = make_object{single: %t560, married_joint: %t582, married_separate: %t604, head_of_household: %t626} :: object
2437
+ yield %t627
2438
+ )
2439
+ )