kumi 0.0.24 → 0.0.26

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 (234) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/README.md +70 -71
  4. data/data/functions/agg/boolean.yaml +6 -2
  5. data/data/functions/agg/numeric.yaml +32 -16
  6. data/data/functions/agg/string.yaml +4 -3
  7. data/data/functions/core/arithmetic.yaml +62 -14
  8. data/data/functions/core/boolean.yaml +12 -6
  9. data/data/functions/core/comparison.yaml +25 -13
  10. data/data/functions/core/constructor.yaml +16 -8
  11. data/data/functions/core/select.yaml +3 -1
  12. data/data/functions/core/stencil.yaml +14 -5
  13. data/data/functions/core/string.yaml +9 -4
  14. data/data/kernels/ruby/agg/numeric.yaml +1 -1
  15. data/docs/UNSAT_DETECTION.md +83 -0
  16. data/golden/array_element/expected/nast.txt +1 -1
  17. data/golden/array_element/expected/schema_ruby.rb +1 -1
  18. data/golden/array_index/expected/nast.txt +7 -7
  19. data/golden/array_index/expected/schema_ruby.rb +1 -1
  20. data/golden/array_operations/expected/nast.txt +2 -2
  21. data/golden/array_operations/expected/schema_ruby.rb +1 -1
  22. data/golden/array_operations/expected/snast.txt +3 -3
  23. data/golden/cascade_logic/expected/lir_02_inlined.txt +8 -8
  24. data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
  25. data/golden/cascade_logic/expected/snast.txt +2 -2
  26. data/golden/chained_fusion/expected/lir_02_inlined.txt +36 -36
  27. data/golden/chained_fusion/expected/lir_03_cse.txt +23 -23
  28. data/golden/chained_fusion/expected/lir_04_1_loop_fusion.txt +25 -25
  29. data/golden/chained_fusion/expected/lir_04_loop_invcm.txt +23 -23
  30. data/golden/chained_fusion/expected/lir_06_const_prop.txt +23 -23
  31. data/golden/chained_fusion/expected/nast.txt +2 -2
  32. data/golden/chained_fusion/expected/schema_javascript.mjs +23 -23
  33. data/golden/chained_fusion/expected/schema_ruby.rb +28 -28
  34. data/golden/element_arrays/expected/nast.txt +2 -2
  35. data/golden/element_arrays/expected/schema_ruby.rb +1 -1
  36. data/golden/element_arrays/expected/snast.txt +1 -1
  37. data/golden/empty_and_null_inputs/expected/lir_02_inlined.txt +18 -18
  38. data/golden/empty_and_null_inputs/expected/lir_03_cse.txt +17 -17
  39. data/golden/empty_and_null_inputs/expected/lir_04_1_loop_fusion.txt +17 -17
  40. data/golden/empty_and_null_inputs/expected/lir_04_loop_invcm.txt +17 -17
  41. data/golden/empty_and_null_inputs/expected/lir_06_const_prop.txt +17 -17
  42. data/golden/empty_and_null_inputs/expected/nast.txt +3 -3
  43. data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +13 -13
  44. data/golden/empty_and_null_inputs/expected/schema_ruby.rb +18 -18
  45. data/golden/function_overload/expected/ast.txt +29 -0
  46. data/golden/function_overload/expected/input_plan.txt +4 -0
  47. data/golden/function_overload/expected/lir_00_unoptimized.txt +18 -0
  48. data/golden/function_overload/expected/lir_01_hoist_scalar_references.txt +18 -0
  49. data/golden/function_overload/expected/lir_02_inlined.txt +20 -0
  50. data/golden/function_overload/expected/lir_03_cse.txt +20 -0
  51. data/golden/function_overload/expected/lir_04_1_loop_fusion.txt +20 -0
  52. data/golden/function_overload/expected/lir_04_loop_invcm.txt +20 -0
  53. data/golden/function_overload/expected/lir_06_const_prop.txt +20 -0
  54. data/golden/function_overload/expected/nast.txt +22 -0
  55. data/golden/function_overload/expected/schema_javascript.mjs +12 -0
  56. data/golden/function_overload/expected/schema_ruby.rb +39 -0
  57. data/golden/function_overload/expected/snast.txt +22 -0
  58. data/golden/function_overload/input.json +8 -0
  59. data/golden/function_overload/schema.kumi +19 -0
  60. data/golden/game_of_life/expected/lir_00_unoptimized.txt +4 -4
  61. data/golden/game_of_life/expected/lir_01_hoist_scalar_references.txt +4 -4
  62. data/golden/game_of_life/expected/lir_02_inlined.txt +1294 -1294
  63. data/golden/game_of_life/expected/lir_03_cse.txt +403 -399
  64. data/golden/game_of_life/expected/lir_04_1_loop_fusion.txt +403 -399
  65. data/golden/game_of_life/expected/lir_04_loop_invcm.txt +403 -399
  66. data/golden/game_of_life/expected/lir_06_const_prop.txt +403 -399
  67. data/golden/game_of_life/expected/nast.txt +4 -4
  68. data/golden/game_of_life/expected/schema_javascript.mjs +87 -85
  69. data/golden/game_of_life/expected/schema_ruby.rb +88 -86
  70. data/golden/game_of_life/expected/snast.txt +10 -10
  71. data/golden/hash_keys/expected/schema_ruby.rb +1 -1
  72. data/golden/hash_value/expected/nast.txt +1 -1
  73. data/golden/hash_value/expected/schema_ruby.rb +1 -1
  74. data/golden/hash_value/expected/snast.txt +1 -1
  75. data/golden/hierarchical_complex/expected/lir_02_inlined.txt +15 -15
  76. data/golden/hierarchical_complex/expected/lir_03_cse.txt +1 -1
  77. data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +1 -1
  78. data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +1 -1
  79. data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +1 -1
  80. data/golden/hierarchical_complex/expected/nast.txt +3 -3
  81. data/golden/hierarchical_complex/expected/schema_javascript.mjs +1 -1
  82. data/golden/hierarchical_complex/expected/schema_ruby.rb +2 -2
  83. data/golden/hierarchical_complex/expected/snast.txt +3 -3
  84. data/golden/inline_rename_scope_leak/expected/nast.txt +3 -3
  85. data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
  86. data/golden/input_reference/expected/nast.txt +2 -2
  87. data/golden/input_reference/expected/schema_ruby.rb +1 -1
  88. data/golden/interleaved_fusion/expected/lir_02_inlined.txt +35 -35
  89. data/golden/interleaved_fusion/expected/lir_03_cse.txt +26 -26
  90. data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +27 -26
  91. data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +26 -26
  92. data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +26 -26
  93. data/golden/interleaved_fusion/expected/nast.txt +2 -2
  94. data/golden/interleaved_fusion/expected/schema_javascript.mjs +23 -23
  95. data/golden/interleaved_fusion/expected/schema_ruby.rb +29 -29
  96. data/golden/let_inline/expected/nast.txt +4 -4
  97. data/golden/let_inline/expected/schema_ruby.rb +1 -1
  98. data/golden/loop_fusion/expected/lir_02_inlined.txt +17 -17
  99. data/golden/loop_fusion/expected/lir_03_cse.txt +14 -14
  100. data/golden/loop_fusion/expected/lir_04_1_loop_fusion.txt +14 -14
  101. data/golden/loop_fusion/expected/lir_04_loop_invcm.txt +14 -14
  102. data/golden/loop_fusion/expected/lir_06_const_prop.txt +14 -14
  103. data/golden/loop_fusion/expected/nast.txt +1 -1
  104. data/golden/loop_fusion/expected/schema_javascript.mjs +12 -12
  105. data/golden/loop_fusion/expected/schema_ruby.rb +16 -16
  106. data/golden/min_reduce_scope/expected/nast.txt +3 -3
  107. data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
  108. data/golden/min_reduce_scope/expected/snast.txt +1 -1
  109. data/golden/mixed_dimensions/expected/lir_02_inlined.txt +5 -5
  110. data/golden/mixed_dimensions/expected/lir_03_cse.txt +5 -5
  111. data/golden/mixed_dimensions/expected/lir_04_1_loop_fusion.txt +5 -5
  112. data/golden/mixed_dimensions/expected/lir_04_loop_invcm.txt +5 -5
  113. data/golden/mixed_dimensions/expected/lir_06_const_prop.txt +5 -5
  114. data/golden/mixed_dimensions/expected/nast.txt +2 -2
  115. data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -3
  116. data/golden/mixed_dimensions/expected/schema_ruby.rb +6 -6
  117. data/golden/multirank_hoisting/expected/lir_02_inlined.txt +48 -48
  118. data/golden/multirank_hoisting/expected/lir_03_cse.txt +35 -35
  119. data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +35 -35
  120. data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +35 -35
  121. data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +35 -35
  122. data/golden/multirank_hoisting/expected/nast.txt +7 -7
  123. data/golden/multirank_hoisting/expected/schema_javascript.mjs +34 -34
  124. data/golden/multirank_hoisting/expected/schema_ruby.rb +36 -36
  125. data/golden/nested_hash/expected/nast.txt +1 -1
  126. data/golden/nested_hash/expected/schema_ruby.rb +1 -1
  127. data/golden/reduction_broadcast/expected/lir_02_inlined.txt +30 -30
  128. data/golden/reduction_broadcast/expected/lir_03_cse.txt +22 -22
  129. data/golden/reduction_broadcast/expected/lir_04_1_loop_fusion.txt +22 -22
  130. data/golden/reduction_broadcast/expected/lir_04_loop_invcm.txt +22 -22
  131. data/golden/reduction_broadcast/expected/lir_06_const_prop.txt +22 -22
  132. data/golden/reduction_broadcast/expected/nast.txt +3 -3
  133. data/golden/reduction_broadcast/expected/schema_javascript.mjs +18 -18
  134. data/golden/reduction_broadcast/expected/schema_ruby.rb +23 -23
  135. data/golden/reduction_broadcast/expected/snast.txt +1 -1
  136. data/golden/roll/expected/schema_ruby.rb +1 -1
  137. data/golden/shift/expected/schema_ruby.rb +1 -1
  138. data/golden/shift_2d/expected/schema_ruby.rb +1 -1
  139. data/golden/simple_math/expected/lir_00_unoptimized.txt +1 -1
  140. data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +1 -1
  141. data/golden/simple_math/expected/lir_02_inlined.txt +1 -1
  142. data/golden/simple_math/expected/lir_03_cse.txt +1 -1
  143. data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +1 -1
  144. data/golden/simple_math/expected/lir_04_loop_invcm.txt +1 -1
  145. data/golden/simple_math/expected/lir_06_const_prop.txt +1 -1
  146. data/golden/simple_math/expected/nast.txt +5 -5
  147. data/golden/simple_math/expected/schema_ruby.rb +1 -1
  148. data/golden/simple_math/expected/snast.txt +2 -2
  149. data/golden/streaming_basics/expected/lir_02_inlined.txt +25 -25
  150. data/golden/streaming_basics/expected/lir_03_cse.txt +13 -13
  151. data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +13 -13
  152. data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +13 -13
  153. data/golden/streaming_basics/expected/lir_06_const_prop.txt +13 -13
  154. data/golden/streaming_basics/expected/nast.txt +8 -8
  155. data/golden/streaming_basics/expected/schema_javascript.mjs +13 -13
  156. data/golden/streaming_basics/expected/schema_ruby.rb +14 -14
  157. data/golden/streaming_basics/expected/snast.txt +1 -1
  158. data/golden/tuples/expected/lir_00_unoptimized.txt +5 -5
  159. data/golden/tuples/expected/lir_01_hoist_scalar_references.txt +5 -5
  160. data/golden/tuples/expected/lir_02_inlined.txt +5 -5
  161. data/golden/tuples/expected/lir_03_cse.txt +5 -5
  162. data/golden/tuples/expected/lir_04_1_loop_fusion.txt +5 -5
  163. data/golden/tuples/expected/lir_04_loop_invcm.txt +5 -5
  164. data/golden/tuples/expected/lir_06_const_prop.txt +5 -5
  165. data/golden/tuples/expected/nast.txt +4 -4
  166. data/golden/tuples/expected/schema_ruby.rb +1 -1
  167. data/golden/tuples/expected/snast.txt +6 -6
  168. data/golden/tuples_and_arrays/expected/lir_00_unoptimized.txt +1 -1
  169. data/golden/tuples_and_arrays/expected/lir_01_hoist_scalar_references.txt +1 -1
  170. data/golden/tuples_and_arrays/expected/lir_02_inlined.txt +17 -17
  171. data/golden/tuples_and_arrays/expected/lir_03_cse.txt +13 -13
  172. data/golden/tuples_and_arrays/expected/lir_04_1_loop_fusion.txt +13 -13
  173. data/golden/tuples_and_arrays/expected/lir_04_loop_invcm.txt +13 -13
  174. data/golden/tuples_and_arrays/expected/lir_06_const_prop.txt +13 -13
  175. data/golden/tuples_and_arrays/expected/nast.txt +3 -3
  176. data/golden/tuples_and_arrays/expected/schema_javascript.mjs +13 -13
  177. data/golden/tuples_and_arrays/expected/schema_ruby.rb +14 -14
  178. data/golden/tuples_and_arrays/expected/snast.txt +2 -2
  179. data/golden/us_tax_2024/expected/ast.txt +63 -670
  180. data/golden/us_tax_2024/expected/input_plan.txt +8 -45
  181. data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +253 -863
  182. data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +253 -863
  183. data/golden/us_tax_2024/expected/lir_02_inlined.txt +1215 -5139
  184. data/golden/us_tax_2024/expected/lir_03_cse.txt +587 -2460
  185. data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +632 -2480
  186. data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +587 -2400
  187. data/golden/us_tax_2024/expected/lir_06_const_prop.txt +587 -2400
  188. data/golden/us_tax_2024/expected/nast.txt +123 -826
  189. data/golden/us_tax_2024/expected/schema_javascript.mjs +127 -581
  190. data/golden/us_tax_2024/expected/schema_ruby.rb +135 -610
  191. data/golden/us_tax_2024/expected/snast.txt +155 -858
  192. data/golden/us_tax_2024/expected.json +120 -1
  193. data/golden/us_tax_2024/input.json +18 -9
  194. data/golden/us_tax_2024/schema.kumi +48 -178
  195. data/golden/with_constants/expected/lir_00_unoptimized.txt +1 -1
  196. data/golden/with_constants/expected/lir_01_hoist_scalar_references.txt +1 -1
  197. data/golden/with_constants/expected/lir_02_inlined.txt +1 -1
  198. data/golden/with_constants/expected/lir_03_cse.txt +1 -1
  199. data/golden/with_constants/expected/lir_04_1_loop_fusion.txt +1 -1
  200. data/golden/with_constants/expected/lir_04_loop_invcm.txt +1 -1
  201. data/golden/with_constants/expected/lir_06_const_prop.txt +1 -1
  202. data/golden/with_constants/expected/nast.txt +2 -2
  203. data/golden/with_constants/expected/schema_ruby.rb +1 -1
  204. data/golden/with_constants/expected/snast.txt +2 -2
  205. data/lib/kumi/analyzer.rb +12 -12
  206. data/lib/kumi/core/analyzer/passes/formal_constraint_propagator.rb +236 -0
  207. data/lib/kumi/core/analyzer/passes/input_collector.rb +22 -4
  208. data/lib/kumi/core/analyzer/passes/lir/inline_declarations_pass.rb +118 -74
  209. data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +64 -18
  210. data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +9 -4
  211. data/lib/kumi/core/analyzer/passes/snast_pass.rb +3 -1
  212. data/lib/kumi/core/analyzer/passes/unsat_detector.rb +172 -198
  213. data/lib/kumi/core/error_reporter.rb +36 -1
  214. data/lib/kumi/core/errors.rb +33 -1
  215. data/lib/kumi/core/functions/function_spec.rb +5 -4
  216. data/lib/kumi/core/functions/loader.rb +17 -1
  217. data/lib/kumi/core/functions/overload_resolver.rb +164 -0
  218. data/lib/kumi/core/functions/type_error_reporter.rb +118 -0
  219. data/lib/kumi/core/functions/type_rules.rb +155 -35
  220. data/lib/kumi/core/types/inference.rb +29 -22
  221. data/lib/kumi/core/types/normalizer.rb +29 -45
  222. data/lib/kumi/core/types/validator.rb +16 -27
  223. data/lib/kumi/core/types/value_objects.rb +116 -0
  224. data/lib/kumi/core/types.rb +45 -37
  225. data/lib/kumi/registry_v2/loader.rb +90 -0
  226. data/lib/kumi/registry_v2.rb +18 -1
  227. data/lib/kumi/version.rb +1 -1
  228. metadata +21 -7
  229. data/lib/kumi/core/analyzer/unsat_constant_evaluator.rb +0 -59
  230. data/lib/kumi/core/atom_unsat_solver.rb +0 -396
  231. data/lib/kumi/core/constraint_relationship_solver.rb +0 -641
  232. data/lib/kumi/core/types/builder.rb +0 -23
  233. data/lib/kumi/core/types/compatibility.rb +0 -96
  234. data/lib/kumi/core/types/formatter.rb +0 -26
@@ -1,5 +1,5 @@
1
1
  # Autogenerated by Kumi Codegen
2
- module Kumi::Compiled::KUMI_579630ac2e4efb73c2ff1d43016b1220da91788dd8ebe96021285d536e08ec39
2
+ module Kumi::Compiled::KUMI_c9608112fc116466a01eeee25616ed8f4e011b48728f579b0bff1761f145e9ba
3
3
  def self.from(input_data = nil)
4
4
  instance = Object.new
5
5
  instance.extend(self)
@@ -26,614 +26,139 @@ module Kumi::Compiled::KUMI_579630ac2e4efb73c2ff1d43016b1220da91788dd8ebe9602128
26
26
  end
27
27
 
28
28
  def _summary(input = @input)
29
- acc3280 = 0.0
30
- t3281 = input["fed"] || input[:fed]
31
- t3282 = t3281["single"] || t3281[:single]
32
- t3283 = t3282["rates"] || t3282[:rates]
33
- acc3349 = 0.0
34
- t3301 = input["income"] || input[:income]
35
- t3302 = input["fed"] || input[:fed]
36
- t3306 = 0
37
- t3325 = -1
38
- t3327 = 100000000000.0
39
- t3303 = t3302["single"] || t3302[:single]
40
- t3304 = t3303["std"] || t3303[:std]
41
- t3305 = t3301 - t3304
42
- t3307 = [t3305, t3306]
43
- t3308 = t3307.max
44
- t3283.each_with_index do |t3284, t3285|
45
- t3320 = t3284["lo"] || t3284[:lo]
46
- t3333 = t3284["hi"] || t3284[:hi]
47
- t3341 = t3284["rate"] || t3284[:rate]
48
- t3326 = t3333 == t3325
49
- t3329 = t3326 ? t3327 : t3333
50
- t3297 = t3308 >= t3320
51
- t3299 = t3308 < t3329
52
- t3300 = t3297 && t3299
53
- t3289 = t3300 ? t3341 : t3306
54
- acc3280 += t3289
55
- t3364 = t3308 - t3320
56
- t3368 = t3329 - t3320
57
- t3369 = [[ t3364, t3306 ].max, t3368 ].min
58
- t3357 = t3369 * t3341
59
- acc3349 += t3357
60
- end
61
- t3290 = acc3280
62
- t3358 = acc3349
63
- t3344 = 1.0
64
- t3345 = [t3301, t3344]
65
- t3346 = t3345.max
66
- t3347 = t3358 / t3346.to_f
67
- acc3408 = 0.0
68
- t3283.each_with_index do |t3412, t3413|
69
- t3440 = t3412["lo"] || t3412[:lo]
70
- t3453 = t3412["hi"] || t3412[:hi]
71
- t3465 = t3412["rate"] || t3412[:rate]
72
- t3423 = t3308 - t3440
73
- t3446 = t3453 == t3325
74
- t3449 = t3446 ? t3327 : t3453
75
- t3427 = t3449 - t3440
76
- t3428 = [[ t3423, t3306 ].max, t3427 ].min
77
- t3416 = t3428 * t3465
78
- acc3408 += t3416
79
- end
80
- t3417 = acc3408
81
- t542 = {
82
- "marginal" => t3290,
83
- "effective" => t3347,
84
- "tax" => t3417
85
- }
86
- t3478 = 168600.0
87
- t3479 = [t3301, t3478]
88
- t3480 = t3479.min
89
- t3481 = 0.062
90
- t3482 = t3480 * t3481
91
- t3484 = 0.0145
92
- t3485 = t3301 * t3484
93
- t3474 = t3482 + t3485
94
- t3487 = 200000.0
95
- t3488 = t3301 - t3487
96
- t3490 = [t3488, t3306]
97
- t3491 = t3490.max
98
- t3492 = 0.009
99
- t3493 = t3491 * t3492
100
- t3476 = t3474 + t3493
101
- t3471 = t3476 / t3346.to_f
102
- t545 = {
103
- "effective" => t3471,
104
- "tax" => t3476
105
- }
106
- t546 = input["state_rate"] || input[:state_rate]
107
- t3518 = t3301 * t546
108
- t549 = {
109
- "marginal" => t546,
110
- "effective" => t546,
111
- "tax" => t3518
112
- }
113
- t550 = input["local_rate"] || input[:local_rate]
114
- t3521 = t3301 * t550
115
- t553 = {
116
- "marginal" => t550,
117
- "effective" => t550,
118
- "tax" => t3521
119
- }
120
- acc3536 = 0.0
121
- t3283.each_with_index do |t3540, t3541|
122
- t3568 = t3540["lo"] || t3540[:lo]
123
- t3581 = t3540["hi"] || t3540[:hi]
124
- t3593 = t3540["rate"] || t3540[:rate]
125
- t3551 = t3308 - t3568
126
- t3574 = t3581 == t3325
127
- t3577 = t3574 ? t3327 : t3581
128
- t3555 = t3577 - t3568
129
- t3556 = [[ t3551, t3306 ].max, t3555 ].min
130
- t3544 = t3556 * t3593
131
- acc3536 += t3544
132
- end
133
- t3545 = acc3536
134
- t3530 = t3545 + t3476
135
- t3532 = t3530 + t3518
136
- t3534 = t3532 + t3521
137
- t3527 = t3534 / t3346.to_f
138
- acc3630 = 0.0
139
- t3283.each_with_index do |t3634, t3635|
140
- t3662 = t3634["lo"] || t3634[:lo]
141
- t3675 = t3634["hi"] || t3634[:hi]
142
- t3687 = t3634["rate"] || t3634[:rate]
143
- t3645 = t3308 - t3662
144
- t3668 = t3675 == t3325
145
- t3671 = t3668 ? t3327 : t3675
146
- t3649 = t3671 - t3662
147
- t3650 = [[ t3645, t3306 ].max, t3649 ].min
148
- t3638 = t3650 * t3687
149
- acc3630 += t3638
150
- end
151
- t3639 = acc3630
152
- t3624 = t3639 + t3476
153
- t3626 = t3624 + t3518
154
- t3628 = t3626 + t3521
155
- t556 = {
156
- "effective" => t3527,
157
- "tax" => t3628
158
- }
159
- acc3727 = 0.0
160
- t3283.each_with_index do |t3731, t3732|
161
- t3759 = t3731["lo"] || t3731[:lo]
162
- t3772 = t3731["hi"] || t3731[:hi]
163
- t3784 = t3731["rate"] || t3731[:rate]
164
- t3742 = t3308 - t3759
165
- t3765 = t3772 == t3325
166
- t3768 = t3765 ? t3327 : t3772
167
- t3746 = t3768 - t3759
168
- t3747 = [[ t3742, t3306 ].max, t3746 ].min
169
- t3735 = t3747 * t3784
170
- acc3727 += t3735
171
- end
172
- t3736 = acc3727
173
- t3721 = t3736 + t3476
174
- t3723 = t3721 + t3518
175
- t3725 = t3723 + t3521
176
- t3718 = t3301 - t3725
177
- t558 = input["retirement_contrib"] || input[:retirement_contrib]
178
- acc3827 = 0.0
179
- t3283.each_with_index do |t3831, t3832|
180
- t3859 = t3831["lo"] || t3831[:lo]
181
- t3872 = t3831["hi"] || t3831[:hi]
182
- t3884 = t3831["rate"] || t3831[:rate]
183
- t3842 = t3308 - t3859
184
- t3865 = t3872 == t3325
185
- t3868 = t3865 ? t3327 : t3872
186
- t3846 = t3868 - t3859
187
- t3847 = [[ t3842, t3306 ].max, t3846 ].min
188
- t3835 = t3847 * t3884
189
- acc3827 += t3835
190
- end
191
- t3836 = acc3827
192
- t3821 = t3836 + t3476
193
- t3823 = t3821 + t3518
194
- t3825 = t3823 + t3521
195
- t3818 = t3301 - t3825
196
- t3815 = t3818 - t558
197
- t560 = {
198
- "federal" => t542,
199
- "fica" => t545,
200
- "state" => t549,
201
- "local" => t553,
202
- "total" => t556,
203
- "after_tax" => t3718,
204
- "retirement_contrib" => t558,
205
- "take_home" => t3815
206
- }
207
- acc3914 = 0.0
208
- t3916 = t3281["married_joint"] || t3281[:married_joint]
209
- t3917 = t3916["rates"] || t3916[:rates]
210
- acc3983 = 0.0
211
- t3937 = t3302["married_joint"] || t3302[:married_joint]
212
- t3938 = t3937["std"] || t3937[:std]
213
- t3939 = t3301 - t3938
214
- t3941 = [t3939, t3306]
215
- t3942 = t3941.max
216
- t3917.each_with_index do |t3918, t3919|
217
- t3954 = t3918["lo"] || t3918[:lo]
218
- t3967 = t3918["hi"] || t3918[:hi]
219
- t3975 = t3918["rate"] || t3918[:rate]
220
- t3960 = t3967 == t3325
221
- t3963 = t3960 ? t3327 : t3967
222
- t3931 = t3942 >= t3954
223
- t3933 = t3942 < t3963
224
- t3934 = t3931 && t3933
225
- t3923 = t3934 ? t3975 : t3306
226
- acc3914 += t3923
227
- t3998 = t3942 - t3954
228
- t4002 = t3963 - t3954
229
- t4003 = [[ t3998, t3306 ].max, t4002 ].min
230
- t3991 = t4003 * t3975
231
- acc3983 += t3991
232
- end
233
- t3924 = acc3914
234
- t3992 = acc3983
235
- t3981 = t3992 / t3346.to_f
236
- acc4042 = 0.0
237
- t3917.each_with_index do |t4046, t4047|
238
- t4074 = t4046["lo"] || t4046[:lo]
239
- t4087 = t4046["hi"] || t4046[:hi]
240
- t4099 = t4046["rate"] || t4046[:rate]
241
- t4057 = t3942 - t4074
242
- t4080 = t4087 == t3325
243
- t4083 = t4080 ? t3327 : t4087
244
- t4061 = t4083 - t4074
245
- t4062 = [[ t4057, t3306 ].max, t4061 ].min
246
- t4050 = t4062 * t4099
247
- acc4042 += t4050
248
- end
249
- t4051 = acc4042
250
- t564 = {
251
- "marginal" => t3924,
252
- "effective" => t3981,
253
- "tax" => t4051
254
- }
255
- t4123 = 250000.0
256
- t4124 = t3301 - t4123
257
- t4126 = [t4124, t3306]
258
- t4127 = t4126.max
259
- t4129 = t4127 * t3492
260
- t4110 = t3474 + t4129
261
- t4105 = t4110 / t3346.to_f
262
- t567 = {
263
- "effective" => t4105,
264
- "tax" => t4110
265
- }
266
- acc4174 = 0.0
267
- t3917.each_with_index do |t4178, t4179|
268
- t4206 = t4178["lo"] || t4178[:lo]
269
- t4219 = t4178["hi"] || t4178[:hi]
270
- t4231 = t4178["rate"] || t4178[:rate]
271
- t4189 = t3942 - t4206
272
- t4212 = t4219 == t3325
273
- t4215 = t4212 ? t3327 : t4219
274
- t4193 = t4215 - t4206
275
- t4194 = [[ t4189, t3306 ].max, t4193 ].min
276
- t4182 = t4194 * t4231
277
- acc4174 += t4182
278
- end
279
- t4183 = acc4174
280
- t4168 = t4183 + t4110
281
- t4170 = t4168 + t3518
282
- t4172 = t4170 + t3521
283
- t4165 = t4172 / t3346.to_f
284
- acc4270 = 0.0
285
- t3917.each_with_index do |t4274, t4275|
286
- t4302 = t4274["lo"] || t4274[:lo]
287
- t4315 = t4274["hi"] || t4274[:hi]
288
- t4327 = t4274["rate"] || t4274[:rate]
289
- t4285 = t3942 - t4302
290
- t4308 = t4315 == t3325
291
- t4311 = t4308 ? t3327 : t4315
292
- t4289 = t4311 - t4302
293
- t4290 = [[ t4285, t3306 ].max, t4289 ].min
294
- t4278 = t4290 * t4327
295
- acc4270 += t4278
296
- end
297
- t4279 = acc4270
298
- t4264 = t4279 + t4110
299
- t4266 = t4264 + t3518
300
- t4268 = t4266 + t3521
301
- t578 = {
302
- "effective" => t4165,
303
- "tax" => t4268
304
- }
305
- acc4369 = 0.0
306
- t3917.each_with_index do |t4373, t4374|
307
- t4401 = t4373["lo"] || t4373[:lo]
308
- t4414 = t4373["hi"] || t4373[:hi]
309
- t4426 = t4373["rate"] || t4373[:rate]
310
- t4384 = t3942 - t4401
311
- t4407 = t4414 == t3325
312
- t4410 = t4407 ? t3327 : t4414
313
- t4388 = t4410 - t4401
314
- t4389 = [[ t4384, t3306 ].max, t4388 ].min
315
- t4377 = t4389 * t4426
316
- acc4369 += t4377
317
- end
318
- t4378 = acc4369
319
- t4363 = t4378 + t4110
320
- t4365 = t4363 + t3518
321
- t4367 = t4365 + t3521
322
- t4360 = t3301 - t4367
323
- acc4471 = 0.0
324
- t3917.each_with_index do |t4475, t4476|
325
- t4503 = t4475["lo"] || t4475[:lo]
326
- t4516 = t4475["hi"] || t4475[:hi]
327
- t4528 = t4475["rate"] || t4475[:rate]
328
- t4486 = t3942 - t4503
329
- t4509 = t4516 == t3325
330
- t4512 = t4509 ? t3327 : t4516
331
- t4490 = t4512 - t4503
332
- t4491 = [[ t4486, t3306 ].max, t4490 ].min
333
- t4479 = t4491 * t4528
334
- acc4471 += t4479
335
- end
336
- t4480 = acc4471
337
- t4465 = t4480 + t4110
338
- t4467 = t4465 + t3518
339
- t4469 = t4467 + t3521
340
- t4462 = t3301 - t4469
341
- t4459 = t4462 - t558
342
- t582 = {
343
- "federal" => t564,
344
- "fica" => t567,
345
- "state" => t549,
346
- "local" => t553,
347
- "total" => t578,
348
- "after_tax" => t4360,
349
- "retirement_contrib" => t558,
350
- "take_home" => t4459
351
- }
352
- acc4560 = 0.0
353
- t4562 = t3281["married_separate"] || t3281[:married_separate]
354
- t4563 = t4562["rates"] || t4562[:rates]
355
- acc4629 = 0.0
356
- t4583 = t3302["married_separate"] || t3302[:married_separate]
357
- t4584 = t4583["std"] || t4583[:std]
358
- t4585 = t3301 - t4584
359
- t4587 = [t4585, t3306]
360
- t4588 = t4587.max
361
- t4563.each_with_index do |t4564, t4565|
362
- t4600 = t4564["lo"] || t4564[:lo]
363
- t4613 = t4564["hi"] || t4564[:hi]
364
- t4621 = t4564["rate"] || t4564[:rate]
365
- t4606 = t4613 == t3325
366
- t4609 = t4606 ? t3327 : t4613
367
- t4577 = t4588 >= t4600
368
- t4579 = t4588 < t4609
369
- t4580 = t4577 && t4579
370
- t4569 = t4580 ? t4621 : t3306
371
- acc4560 += t4569
372
- t4644 = t4588 - t4600
373
- t4648 = t4609 - t4600
374
- t4649 = [[ t4644, t3306 ].max, t4648 ].min
375
- t4637 = t4649 * t4621
376
- acc4629 += t4637
377
- end
378
- t4570 = acc4560
379
- t4638 = acc4629
380
- t4627 = t4638 / t3346.to_f
381
- acc4688 = 0.0
382
- t4563.each_with_index do |t4692, t4693|
383
- t4720 = t4692["lo"] || t4692[:lo]
384
- t4733 = t4692["hi"] || t4692[:hi]
385
- t4745 = t4692["rate"] || t4692[:rate]
386
- t4703 = t4588 - t4720
387
- t4726 = t4733 == t3325
388
- t4729 = t4726 ? t3327 : t4733
389
- t4707 = t4729 - t4720
390
- t4708 = [[ t4703, t3306 ].max, t4707 ].min
391
- t4696 = t4708 * t4745
392
- acc4688 += t4696
393
- end
394
- t4697 = acc4688
395
- t586 = {
396
- "marginal" => t4570,
397
- "effective" => t4627,
398
- "tax" => t4697
399
- }
400
- t4769 = 125000.0
401
- t4770 = t3301 - t4769
402
- t4772 = [t4770, t3306]
403
- t4773 = t4772.max
404
- t4775 = t4773 * t3492
405
- t4756 = t3474 + t4775
406
- t4751 = t4756 / t3346.to_f
407
- t589 = {
408
- "effective" => t4751,
409
- "tax" => t4756
410
- }
411
- acc4820 = 0.0
412
- t4563.each_with_index do |t4824, t4825|
413
- t4852 = t4824["lo"] || t4824[:lo]
414
- t4865 = t4824["hi"] || t4824[:hi]
415
- t4877 = t4824["rate"] || t4824[:rate]
416
- t4835 = t4588 - t4852
417
- t4858 = t4865 == t3325
418
- t4861 = t4858 ? t3327 : t4865
419
- t4839 = t4861 - t4852
420
- t4840 = [[ t4835, t3306 ].max, t4839 ].min
421
- t4828 = t4840 * t4877
422
- acc4820 += t4828
423
- end
424
- t4829 = acc4820
425
- t4814 = t4829 + t4756
426
- t4816 = t4814 + t3518
427
- t4818 = t4816 + t3521
428
- t4811 = t4818 / t3346.to_f
429
- acc4916 = 0.0
430
- t4563.each_with_index do |t4920, t4921|
431
- t4948 = t4920["lo"] || t4920[:lo]
432
- t4961 = t4920["hi"] || t4920[:hi]
433
- t4973 = t4920["rate"] || t4920[:rate]
434
- t4931 = t4588 - t4948
435
- t4954 = t4961 == t3325
436
- t4957 = t4954 ? t3327 : t4961
437
- t4935 = t4957 - t4948
438
- t4936 = [[ t4931, t3306 ].max, t4935 ].min
439
- t4924 = t4936 * t4973
440
- acc4916 += t4924
441
- end
442
- t4925 = acc4916
443
- t4910 = t4925 + t4756
444
- t4912 = t4910 + t3518
445
- t4914 = t4912 + t3521
446
- t600 = {
447
- "effective" => t4811,
448
- "tax" => t4914
449
- }
450
- acc5015 = 0.0
451
- t4563.each_with_index do |t5019, t5020|
452
- t5047 = t5019["lo"] || t5019[:lo]
453
- t5060 = t5019["hi"] || t5019[:hi]
454
- t5072 = t5019["rate"] || t5019[:rate]
455
- t5030 = t4588 - t5047
456
- t5053 = t5060 == t3325
457
- t5056 = t5053 ? t3327 : t5060
458
- t5034 = t5056 - t5047
459
- t5035 = [[ t5030, t3306 ].max, t5034 ].min
460
- t5023 = t5035 * t5072
461
- acc5015 += t5023
462
- end
463
- t5024 = acc5015
464
- t5009 = t5024 + t4756
465
- t5011 = t5009 + t3518
466
- t5013 = t5011 + t3521
467
- t5006 = t3301 - t5013
468
- acc5117 = 0.0
469
- t4563.each_with_index do |t5121, t5122|
470
- t5149 = t5121["lo"] || t5121[:lo]
471
- t5162 = t5121["hi"] || t5121[:hi]
472
- t5174 = t5121["rate"] || t5121[:rate]
473
- t5132 = t4588 - t5149
474
- t5155 = t5162 == t3325
475
- t5158 = t5155 ? t3327 : t5162
476
- t5136 = t5158 - t5149
477
- t5137 = [[ t5132, t3306 ].max, t5136 ].min
478
- t5125 = t5137 * t5174
479
- acc5117 += t5125
480
- end
481
- t5126 = acc5117
482
- t5111 = t5126 + t4756
483
- t5113 = t5111 + t3518
484
- t5115 = t5113 + t3521
485
- t5108 = t3301 - t5115
486
- t5105 = t5108 - t558
487
- t604 = {
488
- "federal" => t586,
489
- "fica" => t589,
490
- "state" => t549,
491
- "local" => t553,
492
- "total" => t600,
493
- "after_tax" => t5006,
494
- "retirement_contrib" => t558,
495
- "take_home" => t5105
496
- }
497
- acc5206 = 0.0
498
- t5208 = t3281["head_of_household"] || t3281[:head_of_household]
499
- t5209 = t5208["rates"] || t5208[:rates]
500
- acc5275 = 0.0
501
- t5229 = t3302["head_of_household"] || t3302[:head_of_household]
502
- t5230 = t5229["std"] || t5229[:std]
503
- t5231 = t3301 - t5230
504
- t5233 = [t5231, t3306]
505
- t5234 = t5233.max
506
- t5209.each_with_index do |t5210, t5211|
507
- t5246 = t5210["lo"] || t5210[:lo]
508
- t5259 = t5210["hi"] || t5210[:hi]
509
- t5267 = t5210["rate"] || t5210[:rate]
510
- t5252 = t5259 == t3325
511
- t5255 = t5252 ? t3327 : t5259
512
- t5223 = t5234 >= t5246
513
- t5225 = t5234 < t5255
514
- t5226 = t5223 && t5225
515
- t5215 = t5226 ? t5267 : t3306
516
- acc5206 += t5215
517
- t5290 = t5234 - t5246
518
- t5294 = t5255 - t5246
519
- t5295 = [[ t5290, t3306 ].max, t5294 ].min
520
- t5283 = t5295 * t5267
521
- acc5275 += t5283
522
- end
523
- t5216 = acc5206
524
- t5284 = acc5275
525
- t5273 = t5284 / t3346.to_f
526
- acc5334 = 0.0
527
- t5209.each_with_index do |t5338, t5339|
528
- t5366 = t5338["lo"] || t5338[:lo]
529
- t5379 = t5338["hi"] || t5338[:hi]
530
- t5391 = t5338["rate"] || t5338[:rate]
531
- t5349 = t5234 - t5366
532
- t5372 = t5379 == t3325
533
- t5375 = t5372 ? t3327 : t5379
534
- t5353 = t5375 - t5366
535
- t5354 = [[ t5349, t3306 ].max, t5353 ].min
536
- t5342 = t5354 * t5391
537
- acc5334 += t5342
538
- end
539
- t5343 = acc5334
540
- t608 = {
541
- "marginal" => t5216,
542
- "effective" => t5273,
543
- "tax" => t5343
544
- }
545
- acc5466 = 0.0
546
- t5209.each_with_index do |t5470, t5471|
547
- t5498 = t5470["lo"] || t5470[:lo]
548
- t5511 = t5470["hi"] || t5470[:hi]
549
- t5523 = t5470["rate"] || t5470[:rate]
550
- t5481 = t5234 - t5498
551
- t5504 = t5511 == t3325
552
- t5507 = t5504 ? t3327 : t5511
553
- t5485 = t5507 - t5498
554
- t5486 = [[ t5481, t3306 ].max, t5485 ].min
555
- t5474 = t5486 * t5523
556
- acc5466 += t5474
557
- end
558
- t5475 = acc5466
559
- t5460 = t5475 + t3476
560
- t5462 = t5460 + t3518
561
- t5464 = t5462 + t3521
562
- t5457 = t5464 / t3346.to_f
563
- acc5562 = 0.0
564
- t5209.each_with_index do |t5566, t5567|
565
- t5594 = t5566["lo"] || t5566[:lo]
566
- t5607 = t5566["hi"] || t5566[:hi]
567
- t5619 = t5566["rate"] || t5566[:rate]
568
- t5577 = t5234 - t5594
569
- t5600 = t5607 == t3325
570
- t5603 = t5600 ? t3327 : t5607
571
- t5581 = t5603 - t5594
572
- t5582 = [[ t5577, t3306 ].max, t5581 ].min
573
- t5570 = t5582 * t5619
574
- acc5562 += t5570
575
- end
576
- t5571 = acc5562
577
- t5556 = t5571 + t3476
578
- t5558 = t5556 + t3518
579
- t5560 = t5558 + t3521
580
- t622 = {
581
- "effective" => t5457,
582
- "tax" => t5560
583
- }
584
- acc5661 = 0.0
585
- t5209.each_with_index do |t5665, t5666|
586
- t5693 = t5665["lo"] || t5665[:lo]
587
- t5706 = t5665["hi"] || t5665[:hi]
588
- t5718 = t5665["rate"] || t5665[:rate]
589
- t5676 = t5234 - t5693
590
- t5699 = t5706 == t3325
591
- t5702 = t5699 ? t3327 : t5706
592
- t5680 = t5702 - t5693
593
- t5681 = [[ t5676, t3306 ].max, t5680 ].min
594
- t5669 = t5681 * t5718
595
- acc5661 += t5669
596
- end
597
- t5670 = acc5661
598
- t5655 = t5670 + t3476
599
- t5657 = t5655 + t3518
600
- t5659 = t5657 + t3521
601
- t5652 = t3301 - t5659
602
- acc5763 = 0.0
603
- t5209.each_with_index do |t5767, t5768|
604
- t5795 = t5767["lo"] || t5767[:lo]
605
- t5808 = t5767["hi"] || t5767[:hi]
606
- t5820 = t5767["rate"] || t5767[:rate]
607
- t5778 = t5234 - t5795
608
- t5801 = t5808 == t3325
609
- t5804 = t5801 ? t3327 : t5808
610
- t5782 = t5804 - t5795
611
- t5783 = [[ t5778, t3306 ].max, t5782 ].min
612
- t5771 = t5783 * t5820
613
- acc5763 += t5771
614
- end
615
- t5772 = acc5763
616
- t5757 = t5772 + t3476
617
- t5759 = t5757 + t3518
618
- t5761 = t5759 + t3521
619
- t5754 = t3301 - t5761
620
- t5751 = t5754 - t558
621
- t626 = {
622
- "federal" => t608,
623
- "fica" => t545,
624
- "state" => t549,
625
- "local" => t553,
626
- "total" => t622,
627
- "after_tax" => t5652,
628
- "retirement_contrib" => t558,
629
- "take_home" => t5751
630
- }
631
- t627 = {
632
- "single" => t560,
633
- "married_joint" => t582,
634
- "married_separate" => t604,
635
- "head_of_household" => t626
636
- }
637
- t627
29
+ out = []
30
+ t974 = input["income"] || input[:income]
31
+ t975 = 168600.0
32
+ t976 = [t974, t975]
33
+ t977 = t976.min
34
+ t978 = 0.062
35
+ t979 = t977 * t978
36
+ t981 = 0.0145
37
+ t982 = t974 * t981
38
+ t1032 = input["state_rate"] || input[:state_rate]
39
+ t1033 = t974 * t1032
40
+ t1035 = input["local_rate"] || input[:local_rate]
41
+ t1036 = t974 * t1035
42
+ t181 = input["statuses"] || input[:statuses]
43
+ t824 = 0
44
+ t857 = 1.0
45
+ t971 = t979 + t982
46
+ t990 = 0.009
47
+ t195 = {
48
+ "marginal" => t1032,
49
+ "effective" => t1032,
50
+ "tax" => t1033
51
+ }
52
+ t199 = {
53
+ "marginal" => t1035,
54
+ "effective" => t1035,
55
+ "tax" => t1036
56
+ }
57
+ t204 = input["retirement_contrib"] || input[:retirement_contrib]
58
+ t840 = -1
59
+ t842 = 100000000000.0
60
+ t858 = [t974, t857]
61
+ t859 = t858.max
62
+ t181.each_with_index do |statuses_el_182, statuses_i_183|
63
+ t184 = statuses_el_182["name"] || statuses_el_182[:name]
64
+ t822 = statuses_el_182["std"] || statuses_el_182[:std]
65
+ acc802 = 0.0
66
+ t803 = statuses_el_182["rates"] || statuses_el_182[:rates]
67
+ acc863 = 0.0
68
+ acc913 = 0.0
69
+ t985 = statuses_el_182["addl_threshold"] || statuses_el_182[:addl_threshold]
70
+ acc1039 = 0.0
71
+ acc1127 = 0.0
72
+ acc1219 = 0.0
73
+ acc1315 = 0.0
74
+ t823 = t974 - t822
75
+ t986 = t974 - t985
76
+ t825 = [t823, t824]
77
+ t988 = [t986, t824]
78
+ t826 = t825.max
79
+ t989 = t988.max
80
+ t803.each_with_index do |t804, t805|
81
+ t829 = t804["lo"] || t804[:lo]
82
+ t815 = t826 >= t829
83
+ t847 = t804["hi"] || t804[:hi]
84
+ t841 = t847 == t840
85
+ t844 = t841 ? t842 : t847
86
+ t818 = t826 < t844
87
+ t819 = t815 && t818
88
+ t853 = t804["rate"] || t804[:rate]
89
+ t809 = t819 ? t853 : t824
90
+ acc802 += t809
91
+ end
92
+ t991 = t989 * t990
93
+ t810 = acc802
94
+ t803.each_with_index do |t865, t866|
95
+ t890 = t865["lo"] || t865[:lo]
96
+ t875 = t826 - t890
97
+ t901 = t865["hi"] || t865[:hi]
98
+ t895 = t901 == t840
99
+ t898 = t895 ? t842 : t901
100
+ t879 = t898 - t890
101
+ t880 = [[ t875, t824 ].max, t879 ].min
102
+ t910 = t865["rate"] || t865[:rate]
103
+ t869 = t880 * t910
104
+ acc863 += t869
105
+ acc913 += t869
106
+ acc1039 += t869
107
+ acc1127 += t869
108
+ acc1219 += t869
109
+ acc1315 += t869
110
+ end
111
+ t973 = t971 + t991
112
+ t870 = acc863
113
+ t920 = acc913
114
+ t1046 = acc1039
115
+ t1134 = acc1127
116
+ t1226 = acc1219
117
+ t1322 = acc1315
118
+ t967 = t973 / t859.to_f
119
+ t860 = t870 / t859.to_f
120
+ t1028 = t1046 + t973
121
+ t1116 = t1134 + t973
122
+ t1208 = t1226 + t973
123
+ t1304 = t1322 + t973
124
+ t191 = {
125
+ "effective" => t967,
126
+ "tax" => t973
127
+ }
128
+ t188 = {
129
+ "marginal" => t810,
130
+ "effective" => t860,
131
+ "tax" => t920
132
+ }
133
+ t1029 = t1028 + t1033
134
+ t1117 = t1116 + t1033
135
+ t1209 = t1208 + t1033
136
+ t1305 = t1304 + t1033
137
+ t1030 = t1029 + t1036
138
+ t1118 = t1117 + t1036
139
+ t1210 = t1209 + t1036
140
+ t1306 = t1305 + t1036
141
+ t1022 = t1030 / t859.to_f
142
+ t1202 = t974 - t1210
143
+ t1298 = t974 - t1306
144
+ t202 = {
145
+ "effective" => t1022,
146
+ "tax" => t1118
147
+ }
148
+ t1294 = t1298 - t204
149
+ t206 = {
150
+ "filing_status" => t184,
151
+ "federal" => t188,
152
+ "fica" => t191,
153
+ "state" => t195,
154
+ "local" => t199,
155
+ "total" => t202,
156
+ "after_tax" => t1202,
157
+ "retirement_contrib" => t204,
158
+ "take_home" => t1294
159
+ }
160
+ out << t206
161
+ end
162
+ out
638
163
  end
639
164
  end