kumi 0.0.26 → 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/CLAUDE.md +4 -0
- data/README.md +36 -12
- data/data/functions/core/arithmetic.yaml +28 -8
- data/data/functions/core/boolean.yaml +8 -3
- data/data/functions/core/comparison.yaml +12 -4
- data/data/functions/core/conversion.yaml +32 -0
- data/data/kernels/javascript/core/arithmetic.yaml +6 -2
- data/data/kernels/javascript/core/coercion.yaml +20 -0
- data/data/kernels/ruby/core/arithmetic.yaml +7 -2
- data/data/kernels/ruby/core/coercion.yaml +20 -0
- data/docs/ARCHITECTURE.md +277 -0
- data/docs/DEVELOPMENT.md +62 -0
- data/docs/FUNCTIONS.md +955 -0
- data/docs/SYNTAX.md +8 -0
- data/docs/VSCODE_EXTENSION.md +114 -0
- data/docs/functions-reference.json +1821 -0
- data/golden/array_element/expected/schema_ruby.rb +1 -1
- data/golden/array_index/expected/lir_00_unoptimized.txt +2 -2
- data/golden/array_index/expected/lir_01_hoist_scalar_references.txt +2 -2
- data/golden/array_index/expected/lir_02_inlined.txt +2 -2
- data/golden/array_index/expected/lir_03_cse.txt +2 -2
- data/golden/array_index/expected/lir_04_1_loop_fusion.txt +2 -2
- data/golden/array_index/expected/lir_04_loop_invcm.txt +2 -2
- data/golden/array_index/expected/lir_06_const_prop.txt +2 -2
- data/golden/array_index/expected/schema_ruby.rb +1 -1
- data/golden/array_index/expected/snast.txt +2 -2
- data/golden/array_operations/expected/lir_00_unoptimized.txt +2 -2
- data/golden/array_operations/expected/lir_01_hoist_scalar_references.txt +2 -2
- data/golden/array_operations/expected/lir_02_inlined.txt +2 -2
- data/golden/array_operations/expected/lir_03_cse.txt +2 -2
- data/golden/array_operations/expected/lir_04_1_loop_fusion.txt +2 -2
- data/golden/array_operations/expected/lir_04_loop_invcm.txt +2 -2
- data/golden/array_operations/expected/lir_06_const_prop.txt +2 -2
- data/golden/array_operations/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/expected/snast.txt +2 -2
- data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
- data/golden/chained_fusion/expected/schema_ruby.rb +1 -1
- data/golden/decimal_explicit/expected/ast.txt +38 -0
- data/golden/decimal_explicit/expected/input_plan.txt +3 -0
- data/golden/decimal_explicit/expected/lir_00_unoptimized.txt +30 -0
- data/golden/decimal_explicit/expected/lir_01_hoist_scalar_references.txt +30 -0
- data/golden/decimal_explicit/expected/lir_02_inlined.txt +44 -0
- data/golden/decimal_explicit/expected/lir_03_cse.txt +40 -0
- data/golden/decimal_explicit/expected/lir_04_1_loop_fusion.txt +40 -0
- data/golden/decimal_explicit/expected/lir_04_loop_invcm.txt +40 -0
- data/golden/decimal_explicit/expected/lir_06_const_prop.txt +40 -0
- data/golden/decimal_explicit/expected/nast.txt +30 -0
- data/golden/decimal_explicit/expected/schema_javascript.mjs +31 -0
- data/golden/decimal_explicit/expected/schema_ruby.rb +57 -0
- data/golden/decimal_explicit/expected/snast.txt +30 -0
- data/golden/decimal_explicit/expected.json +1 -0
- data/golden/decimal_explicit/input.json +5 -0
- data/golden/decimal_explicit/schema.kumi +14 -0
- data/golden/element_arrays/expected/schema_ruby.rb +1 -1
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +1 -1
- data/golden/function_overload/expected/schema_ruby.rb +1 -1
- data/golden/game_of_life/expected/schema_ruby.rb +1 -1
- data/golden/hash_keys/expected/schema_ruby.rb +1 -1
- data/golden/hash_value/expected/schema_ruby.rb +1 -1
- data/golden/hierarchical_complex/expected/lir_00_unoptimized.txt +3 -3
- data/golden/hierarchical_complex/expected/lir_01_hoist_scalar_references.txt +3 -3
- data/golden/hierarchical_complex/expected/lir_02_inlined.txt +3 -3
- data/golden/hierarchical_complex/expected/lir_03_cse.txt +3 -3
- data/golden/hierarchical_complex/expected/lir_04_1_loop_fusion.txt +3 -3
- data/golden/hierarchical_complex/expected/lir_04_loop_invcm.txt +3 -3
- data/golden/hierarchical_complex/expected/lir_06_const_prop.txt +3 -3
- data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -1
- data/golden/hierarchical_complex/expected/snast.txt +3 -3
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +1 -1
- data/golden/input_reference/expected/schema_ruby.rb +1 -1
- data/golden/interleaved_fusion/expected/lir_00_unoptimized.txt +1 -1
- data/golden/interleaved_fusion/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/interleaved_fusion/expected/lir_02_inlined.txt +2 -2
- data/golden/interleaved_fusion/expected/lir_03_cse.txt +2 -2
- data/golden/interleaved_fusion/expected/lir_04_1_loop_fusion.txt +2 -2
- data/golden/interleaved_fusion/expected/lir_04_loop_invcm.txt +2 -2
- data/golden/interleaved_fusion/expected/lir_06_const_prop.txt +2 -2
- data/golden/interleaved_fusion/expected/schema_ruby.rb +1 -1
- data/golden/interleaved_fusion/expected/snast.txt +1 -1
- data/golden/let_inline/expected/lir_00_unoptimized.txt +2 -2
- data/golden/let_inline/expected/lir_01_hoist_scalar_references.txt +2 -2
- data/golden/let_inline/expected/lir_02_inlined.txt +6 -6
- data/golden/let_inline/expected/lir_03_cse.txt +6 -6
- data/golden/let_inline/expected/lir_04_1_loop_fusion.txt +6 -6
- data/golden/let_inline/expected/lir_04_loop_invcm.txt +6 -6
- data/golden/let_inline/expected/lir_06_const_prop.txt +6 -6
- data/golden/let_inline/expected/schema_ruby.rb +1 -1
- data/golden/let_inline/expected/snast.txt +2 -2
- data/golden/loop_fusion/expected/schema_ruby.rb +1 -1
- data/golden/min_reduce_scope/expected/schema_ruby.rb +1 -1
- data/golden/mixed_dimensions/expected/schema_ruby.rb +1 -1
- data/golden/multirank_hoisting/expected/lir_00_unoptimized.txt +2 -2
- data/golden/multirank_hoisting/expected/lir_01_hoist_scalar_references.txt +2 -2
- data/golden/multirank_hoisting/expected/lir_02_inlined.txt +7 -7
- data/golden/multirank_hoisting/expected/lir_03_cse.txt +7 -7
- data/golden/multirank_hoisting/expected/lir_04_1_loop_fusion.txt +7 -7
- data/golden/multirank_hoisting/expected/lir_04_loop_invcm.txt +7 -7
- data/golden/multirank_hoisting/expected/lir_06_const_prop.txt +7 -7
- data/golden/multirank_hoisting/expected/schema_ruby.rb +1 -1
- data/golden/multirank_hoisting/expected/snast.txt +2 -2
- data/golden/nested_hash/expected/lir_00_unoptimized.txt +1 -1
- data/golden/nested_hash/expected/lir_01_hoist_scalar_references.txt +1 -1
- data/golden/nested_hash/expected/lir_02_inlined.txt +1 -1
- data/golden/nested_hash/expected/lir_03_cse.txt +1 -1
- data/golden/nested_hash/expected/lir_04_1_loop_fusion.txt +1 -1
- data/golden/nested_hash/expected/lir_04_loop_invcm.txt +1 -1
- data/golden/nested_hash/expected/lir_06_const_prop.txt +1 -1
- data/golden/nested_hash/expected/schema_ruby.rb +1 -1
- data/golden/nested_hash/expected/snast.txt +1 -1
- data/golden/reduction_broadcast/expected/schema_ruby.rb +1 -1
- data/golden/roll/expected/schema_ruby.rb +1 -1
- data/golden/shift/expected/schema_ruby.rb +1 -1
- data/golden/shift_2d/expected/schema_ruby.rb +1 -1
- data/golden/simple_math/expected/lir_00_unoptimized.txt +2 -2
- data/golden/simple_math/expected/lir_01_hoist_scalar_references.txt +2 -2
- data/golden/simple_math/expected/lir_02_inlined.txt +2 -2
- data/golden/simple_math/expected/lir_03_cse.txt +2 -2
- data/golden/simple_math/expected/lir_04_1_loop_fusion.txt +2 -2
- data/golden/simple_math/expected/lir_04_loop_invcm.txt +2 -2
- data/golden/simple_math/expected/lir_06_const_prop.txt +2 -2
- data/golden/simple_math/expected/schema_ruby.rb +1 -1
- data/golden/simple_math/expected/snast.txt +2 -2
- data/golden/streaming_basics/expected/lir_00_unoptimized.txt +3 -3
- data/golden/streaming_basics/expected/lir_01_hoist_scalar_references.txt +3 -3
- data/golden/streaming_basics/expected/lir_02_inlined.txt +9 -9
- data/golden/streaming_basics/expected/lir_03_cse.txt +7 -7
- data/golden/streaming_basics/expected/lir_04_1_loop_fusion.txt +7 -7
- data/golden/streaming_basics/expected/lir_04_loop_invcm.txt +7 -7
- data/golden/streaming_basics/expected/lir_06_const_prop.txt +7 -7
- data/golden/streaming_basics/expected/schema_ruby.rb +1 -1
- data/golden/streaming_basics/expected/snast.txt +3 -3
- data/golden/tuples/expected/schema_ruby.rb +1 -1
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +1 -1
- data/golden/us_tax_2024/expected/lir_00_unoptimized.txt +6 -6
- data/golden/us_tax_2024/expected/lir_01_hoist_scalar_references.txt +6 -6
- data/golden/us_tax_2024/expected/lir_02_inlined.txt +71 -71
- data/golden/us_tax_2024/expected/lir_03_cse.txt +43 -43
- data/golden/us_tax_2024/expected/lir_04_1_loop_fusion.txt +48 -48
- data/golden/us_tax_2024/expected/lir_04_loop_invcm.txt +43 -43
- data/golden/us_tax_2024/expected/lir_06_const_prop.txt +43 -43
- data/golden/us_tax_2024/expected/schema_ruby.rb +1 -1
- data/golden/us_tax_2024/expected/snast.txt +6 -6
- data/golden/with_constants/expected/schema_ruby.rb +1 -1
- data/lib/kumi/configuration.rb +6 -0
- data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +1 -1
- data/lib/kumi/core/error_reporter.rb +1 -1
- data/lib/kumi/core/errors.rb +1 -1
- data/lib/kumi/core/functions/overload_resolver.rb +57 -11
- data/lib/kumi/core/functions/type_categories.rb +44 -0
- data/lib/kumi/core/input/type_matcher.rb +8 -1
- data/lib/kumi/core/ruby_parser/input_builder.rb +2 -2
- data/lib/kumi/core/types/normalizer.rb +1 -0
- data/lib/kumi/core/types/validator.rb +2 -2
- data/lib/kumi/core/types.rb +2 -2
- data/lib/kumi/dev/golden/reporter.rb +9 -0
- data/lib/kumi/dev/golden/result.rb +3 -1
- data/lib/kumi/dev/golden/runtime_test.rb +25 -0
- data/lib/kumi/dev/golden/suite.rb +4 -4
- data/lib/kumi/dev/golden/value_normalizer.rb +80 -0
- data/lib/kumi/dev/golden.rb +21 -12
- data/lib/kumi/doc_generator/formatters/json.rb +39 -0
- data/lib/kumi/doc_generator/formatters/markdown.rb +175 -0
- data/lib/kumi/doc_generator/loader.rb +37 -0
- data/lib/kumi/doc_generator/merger.rb +54 -0
- data/lib/kumi/doc_generator.rb +4 -0
- data/lib/kumi/frontends/text.rb +33 -5
- data/lib/kumi/syntax/location.rb +5 -1
- data/lib/kumi/version.rb +1 -1
- data/vscode-extension/.gitignore +4 -0
- data/vscode-extension/README.md +59 -0
- data/vscode-extension/TESTING.md +151 -0
- data/vscode-extension/package.json +51 -0
- data/vscode-extension/src/extension.ts +295 -0
- data/vscode-extension/tsconfig.json +15 -0
- metadata +38 -1
@@ -2,13 +2,13 @@
|
|
2
2
|
(Declaration state_tax
|
3
3
|
%t1 = load_input "income" :: float
|
4
4
|
%t2 = load_input "state_rate" :: float
|
5
|
-
%t3 = call core.mul(%t1, %t2) :: float
|
5
|
+
%t3 = call core.mul:numeric(%t1, %t2) :: float
|
6
6
|
yield %t3
|
7
7
|
)
|
8
8
|
(Declaration local_tax
|
9
9
|
%t4 = load_input "income" :: float
|
10
10
|
%t5 = load_input "local_rate" :: float
|
11
|
-
%t6 = call core.mul(%t4, %t5) :: float
|
11
|
+
%t6 = call core.mul:numeric(%t4, %t5) :: float
|
12
12
|
yield %t6
|
13
13
|
)
|
14
14
|
(Declaration taxable
|
@@ -117,7 +117,7 @@
|
|
117
117
|
%t248 = call core.sub(%t267, %t259) :: float
|
118
118
|
%t249 = call core.clamp(%t244, %t254, %t248) :: float
|
119
119
|
%t279 = load_field rates_el_69["rate"] :: float
|
120
|
-
%t73 = call core.mul(%t249, %t279) :: float
|
120
|
+
%t73 = call core.mul:numeric(%t249, %t279) :: float
|
121
121
|
%acc_67 = acc_add agg.sum(%acc_67, %t73) :: float
|
122
122
|
end_loop
|
123
123
|
%t74 = acc_load %acc_67 :: float
|
@@ -202,7 +202,7 @@
|
|
202
202
|
%t372 = call core.sub(%t391, %t383) :: float
|
203
203
|
%t373 = call core.clamp(%t368, %t378, %t372) :: float
|
204
204
|
%t403 = load_field t358["rate"] :: float
|
205
|
-
%t362 = call core.mul(%t373, %t403) :: float
|
205
|
+
%t362 = call core.mul:numeric(%t373, %t403) :: float
|
206
206
|
%acc356 = acc_add agg.sum(%acc356, %t362) :: float
|
207
207
|
end_loop
|
208
208
|
%t363 = acc_load %acc356 :: float
|
@@ -224,7 +224,7 @@
|
|
224
224
|
%t113 = make_tuple(%t111, %t112) :: tuple<float, float>
|
225
225
|
%t114 = fold %t113 fn="agg.min" :: float
|
226
226
|
%t115 = const 0.062 :: float
|
227
|
-
%t116 = call core.mul(%t114, %t115) :: float
|
227
|
+
%t116 = call core.mul:numeric(%t114, %t115) :: float
|
228
228
|
yield %t116
|
229
229
|
)
|
230
230
|
(Declaration med_base_rate
|
@@ -234,7 +234,7 @@
|
|
234
234
|
(Declaration med_tax
|
235
235
|
%t118 = load_input "income" :: float
|
236
236
|
%t119 = const 0.0145 :: float
|
237
|
-
%t120 = call core.mul(%t118, %t119) :: float
|
237
|
+
%t120 = call core.mul:numeric(%t118, %t119) :: float
|
238
238
|
yield %t120
|
239
239
|
)
|
240
240
|
(Declaration addl_med_rate
|
@@ -251,7 +251,7 @@
|
|
251
251
|
%t127 = call core.sub(%t125, %t126) :: float
|
252
252
|
%t129 = make_tuple(%t127, %t128) :: tuple<float, integer>
|
253
253
|
%t130 = fold %t129 fn="agg.max" :: float
|
254
|
-
%t132 = call core.mul(%t130, %t131) :: float
|
254
|
+
%t132 = call core.mul:numeric(%t130, %t131) :: float
|
255
255
|
yield %t132
|
256
256
|
end_loop
|
257
257
|
)
|
@@ -262,9 +262,9 @@
|
|
262
262
|
%t406 = make_tuple(%t404, %t405) :: tuple<float, float>
|
263
263
|
%t407 = fold %t406 fn="agg.min" :: float
|
264
264
|
%t408 = const 0.062 :: float
|
265
|
-
%t409 = call core.mul(%t407, %t408) :: float
|
265
|
+
%t409 = call core.mul:numeric(%t407, %t408) :: float
|
266
266
|
%t411 = const 0.0145 :: float
|
267
|
-
%t412 = call core.mul(%t404, %t411) :: float
|
267
|
+
%t412 = call core.mul:numeric(%t404, %t411) :: float
|
268
268
|
%t138 = call core.add(%t409, %t412) :: float
|
269
269
|
%t417 = const 0 :: integer
|
270
270
|
%t420 = const 0.009 :: float
|
@@ -273,7 +273,7 @@
|
|
273
273
|
%t416 = call core.sub(%t404, %t415) :: float
|
274
274
|
%t418 = make_tuple(%t416, %t417) :: tuple<float, integer>
|
275
275
|
%t419 = fold %t418 fn="agg.max" :: float
|
276
|
-
%t421 = call core.mul(%t419, %t420) :: float
|
276
|
+
%t421 = call core.mul:numeric(%t419, %t420) :: float
|
277
277
|
%t140 = call core.add(%t138, %t421) :: float
|
278
278
|
yield %t140
|
279
279
|
end_loop
|
@@ -284,9 +284,9 @@
|
|
284
284
|
%t430 = make_tuple(%t428, %t429) :: tuple<float, float>
|
285
285
|
%t431 = fold %t430 fn="agg.min" :: float
|
286
286
|
%t432 = const 0.062 :: float
|
287
|
-
%t433 = call core.mul(%t431, %t432) :: float
|
287
|
+
%t433 = call core.mul:numeric(%t431, %t432) :: float
|
288
288
|
%t435 = const 0.0145 :: float
|
289
|
-
%t436 = call core.mul(%t428, %t435) :: float
|
289
|
+
%t436 = call core.mul:numeric(%t428, %t435) :: float
|
290
290
|
%t141 = load_input "statuses" :: array
|
291
291
|
%t425 = call core.add(%t433, %t436) :: float
|
292
292
|
%t441 = const 0 :: integer
|
@@ -299,7 +299,7 @@
|
|
299
299
|
%t440 = call core.sub(%t428, %t439) :: float
|
300
300
|
%t442 = make_tuple(%t440, %t441) :: tuple<float, integer>
|
301
301
|
%t443 = fold %t442 fn="agg.max" :: float
|
302
|
-
%t445 = call core.mul(%t443, %t444) :: float
|
302
|
+
%t445 = call core.mul:numeric(%t443, %t444) :: float
|
303
303
|
%t427 = call core.add(%t425, %t445) :: float
|
304
304
|
%t149 = call core.div(%t427, %t148) :: float
|
305
305
|
yield %t149
|
@@ -311,14 +311,14 @@
|
|
311
311
|
%t510 = make_tuple(%t508, %t509) :: tuple<float, float>
|
312
312
|
%t511 = fold %t510 fn="agg.min" :: float
|
313
313
|
%t512 = const 0.062 :: float
|
314
|
-
%t513 = call core.mul(%t511, %t512) :: float
|
314
|
+
%t513 = call core.mul:numeric(%t511, %t512) :: float
|
315
315
|
%t515 = const 0.0145 :: float
|
316
|
-
%t516 = call core.mul(%t508, %t515) :: float
|
316
|
+
%t516 = call core.mul:numeric(%t508, %t515) :: float
|
317
317
|
%t150 = load_input "statuses" :: array
|
318
318
|
%t447 = load_input "state_rate" :: float
|
319
|
-
%t448 = call core.mul(%t508, %t447) :: float
|
319
|
+
%t448 = call core.mul:numeric(%t508, %t447) :: float
|
320
320
|
%t450 = load_input "local_rate" :: float
|
321
|
-
%t451 = call core.mul(%t508, %t450) :: float
|
321
|
+
%t451 = call core.mul:numeric(%t508, %t450) :: float
|
322
322
|
%t476 = const 0 :: integer
|
323
323
|
%t505 = call core.add(%t513, %t516) :: float
|
324
324
|
%t524 = const 0.009 :: float
|
@@ -344,10 +344,10 @@
|
|
344
344
|
%t470 = call core.sub(%t489, %t481) :: float
|
345
345
|
%t471 = call core.clamp(%t466, %t476, %t470) :: float
|
346
346
|
%t501 = load_field t456["rate"] :: float
|
347
|
-
%t460 = call core.mul(%t471, %t501) :: float
|
347
|
+
%t460 = call core.mul:numeric(%t471, %t501) :: float
|
348
348
|
%acc454 = acc_add agg.sum(%acc454, %t460) :: float
|
349
349
|
end_loop
|
350
|
-
%t525 = call core.mul(%t523, %t524) :: float
|
350
|
+
%t525 = call core.mul:numeric(%t523, %t524) :: float
|
351
351
|
%t461 = acc_load %acc454 :: float
|
352
352
|
%t507 = call core.add(%t505, %t525) :: float
|
353
353
|
%t155 = call core.add(%t461, %t507) :: float
|
@@ -359,16 +359,16 @@
|
|
359
359
|
(Declaration total_eff
|
360
360
|
%t534 = load_input "income" :: float
|
361
361
|
%t535 = load_input "state_rate" :: float
|
362
|
-
%t536 = call core.mul(%t534, %t535) :: float
|
362
|
+
%t536 = call core.mul:numeric(%t534, %t535) :: float
|
363
363
|
%t538 = load_input "local_rate" :: float
|
364
|
-
%t539 = call core.mul(%t534, %t538) :: float
|
364
|
+
%t539 = call core.mul:numeric(%t534, %t538) :: float
|
365
365
|
%t597 = const 168600.0 :: float
|
366
366
|
%t598 = make_tuple(%t534, %t597) :: tuple<float, float>
|
367
367
|
%t599 = fold %t598 fn="agg.min" :: float
|
368
368
|
%t600 = const 0.062 :: float
|
369
|
-
%t601 = call core.mul(%t599, %t600) :: float
|
369
|
+
%t601 = call core.mul:numeric(%t599, %t600) :: float
|
370
370
|
%t603 = const 0.0145 :: float
|
371
|
-
%t604 = call core.mul(%t534, %t603) :: float
|
371
|
+
%t604 = call core.mul:numeric(%t534, %t603) :: float
|
372
372
|
%t160 = load_input "statuses" :: array
|
373
373
|
%t564 = const 0 :: integer
|
374
374
|
%t593 = call core.add(%t601, %t604) :: float
|
@@ -398,10 +398,10 @@
|
|
398
398
|
%t558 = call core.sub(%t577, %t569) :: float
|
399
399
|
%t559 = call core.clamp(%t554, %t564, %t558) :: float
|
400
400
|
%t589 = load_field t544["rate"] :: float
|
401
|
-
%t548 = call core.mul(%t559, %t589) :: float
|
401
|
+
%t548 = call core.mul:numeric(%t559, %t589) :: float
|
402
402
|
%acc542 = acc_add agg.sum(%acc542, %t548) :: float
|
403
403
|
end_loop
|
404
|
-
%t613 = call core.mul(%t611, %t612) :: float
|
404
|
+
%t613 = call core.mul:numeric(%t611, %t612) :: float
|
405
405
|
%t549 = acc_load %acc542 :: float
|
406
406
|
%t595 = call core.add(%t593, %t613) :: float
|
407
407
|
%t531 = call core.add(%t549, %t595) :: float
|
@@ -414,16 +414,16 @@
|
|
414
414
|
(Declaration after_tax
|
415
415
|
%t622 = load_input "income" :: float
|
416
416
|
%t623 = load_input "state_rate" :: float
|
417
|
-
%t624 = call core.mul(%t622, %t623) :: float
|
417
|
+
%t624 = call core.mul:numeric(%t622, %t623) :: float
|
418
418
|
%t626 = load_input "local_rate" :: float
|
419
|
-
%t627 = call core.mul(%t622, %t626) :: float
|
419
|
+
%t627 = call core.mul:numeric(%t622, %t626) :: float
|
420
420
|
%t685 = const 168600.0 :: float
|
421
421
|
%t686 = make_tuple(%t622, %t685) :: tuple<float, float>
|
422
422
|
%t687 = fold %t686 fn="agg.min" :: float
|
423
423
|
%t688 = const 0.062 :: float
|
424
|
-
%t689 = call core.mul(%t687, %t688) :: float
|
424
|
+
%t689 = call core.mul:numeric(%t687, %t688) :: float
|
425
425
|
%t691 = const 0.0145 :: float
|
426
|
-
%t692 = call core.mul(%t622, %t691) :: float
|
426
|
+
%t692 = call core.mul:numeric(%t622, %t691) :: float
|
427
427
|
%t169 = load_input "statuses" :: array
|
428
428
|
%t652 = const 0 :: integer
|
429
429
|
%t681 = call core.add(%t689, %t692) :: float
|
@@ -450,10 +450,10 @@
|
|
450
450
|
%t646 = call core.sub(%t665, %t657) :: float
|
451
451
|
%t647 = call core.clamp(%t642, %t652, %t646) :: float
|
452
452
|
%t677 = load_field t632["rate"] :: float
|
453
|
-
%t636 = call core.mul(%t647, %t677) :: float
|
453
|
+
%t636 = call core.mul:numeric(%t647, %t677) :: float
|
454
454
|
%acc630 = acc_add agg.sum(%acc630, %t636) :: float
|
455
455
|
end_loop
|
456
|
-
%t701 = call core.mul(%t699, %t700) :: float
|
456
|
+
%t701 = call core.mul:numeric(%t699, %t700) :: float
|
457
457
|
%t637 = acc_load %acc630 :: float
|
458
458
|
%t683 = call core.add(%t681, %t701) :: float
|
459
459
|
%t619 = call core.add(%t637, %t683) :: float
|
@@ -466,16 +466,16 @@
|
|
466
466
|
(Declaration take_home
|
467
467
|
%t714 = load_input "income" :: float
|
468
468
|
%t715 = load_input "state_rate" :: float
|
469
|
-
%t716 = call core.mul(%t714, %t715) :: float
|
469
|
+
%t716 = call core.mul:numeric(%t714, %t715) :: float
|
470
470
|
%t718 = load_input "local_rate" :: float
|
471
|
-
%t719 = call core.mul(%t714, %t718) :: float
|
471
|
+
%t719 = call core.mul:numeric(%t714, %t718) :: float
|
472
472
|
%t777 = const 168600.0 :: float
|
473
473
|
%t778 = make_tuple(%t714, %t777) :: tuple<float, float>
|
474
474
|
%t779 = fold %t778 fn="agg.min" :: float
|
475
475
|
%t780 = const 0.062 :: float
|
476
|
-
%t781 = call core.mul(%t779, %t780) :: float
|
476
|
+
%t781 = call core.mul:numeric(%t779, %t780) :: float
|
477
477
|
%t783 = const 0.0145 :: float
|
478
|
-
%t784 = call core.mul(%t714, %t783) :: float
|
478
|
+
%t784 = call core.mul:numeric(%t714, %t783) :: float
|
479
479
|
%t175 = load_input "statuses" :: array
|
480
480
|
%t744 = const 0 :: integer
|
481
481
|
%t773 = call core.add(%t781, %t784) :: float
|
@@ -503,10 +503,10 @@
|
|
503
503
|
%t738 = call core.sub(%t757, %t749) :: float
|
504
504
|
%t739 = call core.clamp(%t734, %t744, %t738) :: float
|
505
505
|
%t769 = load_field t724["rate"] :: float
|
506
|
-
%t728 = call core.mul(%t739, %t769) :: float
|
506
|
+
%t728 = call core.mul:numeric(%t739, %t769) :: float
|
507
507
|
%acc722 = acc_add agg.sum(%acc722, %t728) :: float
|
508
508
|
end_loop
|
509
|
-
%t793 = call core.mul(%t791, %t792) :: float
|
509
|
+
%t793 = call core.mul:numeric(%t791, %t792) :: float
|
510
510
|
%t729 = acc_load %acc722 :: float
|
511
511
|
%t775 = call core.add(%t773, %t793) :: float
|
512
512
|
%t711 = call core.add(%t729, %t775) :: float
|
@@ -523,13 +523,13 @@
|
|
523
523
|
%t976 = make_tuple(%t974, %t975) :: tuple<float, float>
|
524
524
|
%t977 = fold %t976 fn="agg.min" :: float
|
525
525
|
%t978 = const 0.062 :: float
|
526
|
-
%t979 = call core.mul(%t977, %t978) :: float
|
526
|
+
%t979 = call core.mul:numeric(%t977, %t978) :: float
|
527
527
|
%t981 = const 0.0145 :: float
|
528
|
-
%t982 = call core.mul(%t974, %t981) :: float
|
528
|
+
%t982 = call core.mul:numeric(%t974, %t981) :: float
|
529
529
|
%t1032 = load_input "state_rate" :: float
|
530
|
-
%t1033 = call core.mul(%t974, %t1032) :: float
|
530
|
+
%t1033 = call core.mul:numeric(%t974, %t1032) :: float
|
531
531
|
%t1035 = load_input "local_rate" :: float
|
532
|
-
%t1036 = call core.mul(%t974, %t1035) :: float
|
532
|
+
%t1036 = call core.mul:numeric(%t974, %t1035) :: float
|
533
533
|
%t181 = load_input "statuses" :: array
|
534
534
|
%t824 = const 0 :: integer
|
535
535
|
%t857 = const 1.0 :: float
|
@@ -572,7 +572,7 @@
|
|
572
572
|
%t809 = select %t819, %t853, %t824 :: float
|
573
573
|
%acc802 = acc_add agg.sum(%acc802, %t809) :: float
|
574
574
|
end_loop
|
575
|
-
%t991 = call core.mul(%t989, %t990) :: float
|
575
|
+
%t991 = call core.mul:numeric(%t989, %t990) :: float
|
576
576
|
%t810 = acc_load %acc802 :: float
|
577
577
|
loop rates id=L33 in %t803 as el=%t865, idx=%t866
|
578
578
|
%t890 = load_field t865["lo"] :: float
|
@@ -583,7 +583,7 @@
|
|
583
583
|
%t879 = call core.sub(%t898, %t890) :: float
|
584
584
|
%t880 = call core.clamp(%t875, %t824, %t879) :: float
|
585
585
|
%t910 = load_field t865["rate"] :: float
|
586
|
-
%t869 = call core.mul(%t880, %t910) :: float
|
586
|
+
%t869 = call core.mul:numeric(%t880, %t910) :: float
|
587
587
|
%acc863 = acc_add agg.sum(%acc863, %t869) :: float
|
588
588
|
%acc913 = acc_add agg.sum(%acc913, %t869) :: float
|
589
589
|
%acc1039 = acc_add agg.sum(%acc1039, %t869) :: float
|
@@ -2,13 +2,13 @@
|
|
2
2
|
(Declaration state_tax
|
3
3
|
%t1 = load_input "income" :: float
|
4
4
|
%t2 = load_input "state_rate" :: float
|
5
|
-
%t3 = call core.mul(%t1, %t2) :: float
|
5
|
+
%t3 = call core.mul:numeric(%t1, %t2) :: float
|
6
6
|
yield %t3
|
7
7
|
)
|
8
8
|
(Declaration local_tax
|
9
9
|
%t4 = load_input "income" :: float
|
10
10
|
%t5 = load_input "local_rate" :: float
|
11
|
-
%t6 = call core.mul(%t4, %t5) :: float
|
11
|
+
%t6 = call core.mul:numeric(%t4, %t5) :: float
|
12
12
|
yield %t6
|
13
13
|
)
|
14
14
|
(Declaration taxable
|
@@ -117,7 +117,7 @@
|
|
117
117
|
%t248 = call core.sub(%t267, %t259) :: float
|
118
118
|
%t249 = call core.clamp(%t244, %t254, %t248) :: float
|
119
119
|
%t279 = load_field rates_el_69["rate"] :: float
|
120
|
-
%t73 = call core.mul(%t249, %t279) :: float
|
120
|
+
%t73 = call core.mul:numeric(%t249, %t279) :: float
|
121
121
|
%acc_67 = acc_add agg.sum(%acc_67, %t73) :: float
|
122
122
|
end_loop
|
123
123
|
%t74 = acc_load %acc_67 :: float
|
@@ -202,7 +202,7 @@
|
|
202
202
|
%t372 = call core.sub(%t391, %t383) :: float
|
203
203
|
%t373 = call core.clamp(%t368, %t378, %t372) :: float
|
204
204
|
%t403 = load_field t358["rate"] :: float
|
205
|
-
%t362 = call core.mul(%t373, %t403) :: float
|
205
|
+
%t362 = call core.mul:numeric(%t373, %t403) :: float
|
206
206
|
%acc356 = acc_add agg.sum(%acc356, %t362) :: float
|
207
207
|
end_loop
|
208
208
|
%t363 = acc_load %acc356 :: float
|
@@ -224,7 +224,7 @@
|
|
224
224
|
%t113 = make_tuple(%t111, %t112) :: tuple<float, float>
|
225
225
|
%t114 = fold %t113 fn="agg.min" :: float
|
226
226
|
%t115 = const 0.062 :: float
|
227
|
-
%t116 = call core.mul(%t114, %t115) :: float
|
227
|
+
%t116 = call core.mul:numeric(%t114, %t115) :: float
|
228
228
|
yield %t116
|
229
229
|
)
|
230
230
|
(Declaration med_base_rate
|
@@ -234,7 +234,7 @@
|
|
234
234
|
(Declaration med_tax
|
235
235
|
%t118 = load_input "income" :: float
|
236
236
|
%t119 = const 0.0145 :: float
|
237
|
-
%t120 = call core.mul(%t118, %t119) :: float
|
237
|
+
%t120 = call core.mul:numeric(%t118, %t119) :: float
|
238
238
|
yield %t120
|
239
239
|
)
|
240
240
|
(Declaration addl_med_rate
|
@@ -251,7 +251,7 @@
|
|
251
251
|
%t127 = call core.sub(%t125, %t126) :: float
|
252
252
|
%t129 = make_tuple(%t127, %t128) :: tuple<float, integer>
|
253
253
|
%t130 = fold %t129 fn="agg.max" :: float
|
254
|
-
%t132 = call core.mul(%t130, %t131) :: float
|
254
|
+
%t132 = call core.mul:numeric(%t130, %t131) :: float
|
255
255
|
yield %t132
|
256
256
|
end_loop
|
257
257
|
)
|
@@ -262,9 +262,9 @@
|
|
262
262
|
%t406 = make_tuple(%t404, %t405) :: tuple<float, float>
|
263
263
|
%t407 = fold %t406 fn="agg.min" :: float
|
264
264
|
%t408 = const 0.062 :: float
|
265
|
-
%t409 = call core.mul(%t407, %t408) :: float
|
265
|
+
%t409 = call core.mul:numeric(%t407, %t408) :: float
|
266
266
|
%t411 = const 0.0145 :: float
|
267
|
-
%t412 = call core.mul(%t404, %t411) :: float
|
267
|
+
%t412 = call core.mul:numeric(%t404, %t411) :: float
|
268
268
|
%t138 = call core.add(%t409, %t412) :: float
|
269
269
|
%t417 = const 0 :: integer
|
270
270
|
%t420 = const 0.009 :: float
|
@@ -273,7 +273,7 @@
|
|
273
273
|
%t416 = call core.sub(%t404, %t415) :: float
|
274
274
|
%t418 = make_tuple(%t416, %t417) :: tuple<float, integer>
|
275
275
|
%t419 = fold %t418 fn="agg.max" :: float
|
276
|
-
%t421 = call core.mul(%t419, %t420) :: float
|
276
|
+
%t421 = call core.mul:numeric(%t419, %t420) :: float
|
277
277
|
%t140 = call core.add(%t138, %t421) :: float
|
278
278
|
yield %t140
|
279
279
|
end_loop
|
@@ -284,9 +284,9 @@
|
|
284
284
|
%t430 = make_tuple(%t428, %t429) :: tuple<float, float>
|
285
285
|
%t431 = fold %t430 fn="agg.min" :: float
|
286
286
|
%t432 = const 0.062 :: float
|
287
|
-
%t433 = call core.mul(%t431, %t432) :: float
|
287
|
+
%t433 = call core.mul:numeric(%t431, %t432) :: float
|
288
288
|
%t435 = const 0.0145 :: float
|
289
|
-
%t436 = call core.mul(%t428, %t435) :: float
|
289
|
+
%t436 = call core.mul:numeric(%t428, %t435) :: float
|
290
290
|
%t141 = load_input "statuses" :: array
|
291
291
|
%t425 = call core.add(%t433, %t436) :: float
|
292
292
|
%t441 = const 0 :: integer
|
@@ -299,7 +299,7 @@
|
|
299
299
|
%t440 = call core.sub(%t428, %t439) :: float
|
300
300
|
%t442 = make_tuple(%t440, %t441) :: tuple<float, integer>
|
301
301
|
%t443 = fold %t442 fn="agg.max" :: float
|
302
|
-
%t445 = call core.mul(%t443, %t444) :: float
|
302
|
+
%t445 = call core.mul:numeric(%t443, %t444) :: float
|
303
303
|
%t427 = call core.add(%t425, %t445) :: float
|
304
304
|
%t149 = call core.div(%t427, %t148) :: float
|
305
305
|
yield %t149
|
@@ -311,14 +311,14 @@
|
|
311
311
|
%t510 = make_tuple(%t508, %t509) :: tuple<float, float>
|
312
312
|
%t511 = fold %t510 fn="agg.min" :: float
|
313
313
|
%t512 = const 0.062 :: float
|
314
|
-
%t513 = call core.mul(%t511, %t512) :: float
|
314
|
+
%t513 = call core.mul:numeric(%t511, %t512) :: float
|
315
315
|
%t515 = const 0.0145 :: float
|
316
|
-
%t516 = call core.mul(%t508, %t515) :: float
|
316
|
+
%t516 = call core.mul:numeric(%t508, %t515) :: float
|
317
317
|
%t150 = load_input "statuses" :: array
|
318
318
|
%t447 = load_input "state_rate" :: float
|
319
|
-
%t448 = call core.mul(%t508, %t447) :: float
|
319
|
+
%t448 = call core.mul:numeric(%t508, %t447) :: float
|
320
320
|
%t450 = load_input "local_rate" :: float
|
321
|
-
%t451 = call core.mul(%t508, %t450) :: float
|
321
|
+
%t451 = call core.mul:numeric(%t508, %t450) :: float
|
322
322
|
%t476 = const 0 :: integer
|
323
323
|
%t505 = call core.add(%t513, %t516) :: float
|
324
324
|
%t524 = const 0.009 :: float
|
@@ -344,10 +344,10 @@
|
|
344
344
|
%t470 = call core.sub(%t489, %t481) :: float
|
345
345
|
%t471 = call core.clamp(%t466, %t476, %t470) :: float
|
346
346
|
%t501 = load_field t456["rate"] :: float
|
347
|
-
%t460 = call core.mul(%t471, %t501) :: float
|
347
|
+
%t460 = call core.mul:numeric(%t471, %t501) :: float
|
348
348
|
%acc454 = acc_add agg.sum(%acc454, %t460) :: float
|
349
349
|
end_loop
|
350
|
-
%t525 = call core.mul(%t523, %t524) :: float
|
350
|
+
%t525 = call core.mul:numeric(%t523, %t524) :: float
|
351
351
|
%t461 = acc_load %acc454 :: float
|
352
352
|
%t507 = call core.add(%t505, %t525) :: float
|
353
353
|
%t155 = call core.add(%t461, %t507) :: float
|
@@ -359,16 +359,16 @@
|
|
359
359
|
(Declaration total_eff
|
360
360
|
%t534 = load_input "income" :: float
|
361
361
|
%t535 = load_input "state_rate" :: float
|
362
|
-
%t536 = call core.mul(%t534, %t535) :: float
|
362
|
+
%t536 = call core.mul:numeric(%t534, %t535) :: float
|
363
363
|
%t538 = load_input "local_rate" :: float
|
364
|
-
%t539 = call core.mul(%t534, %t538) :: float
|
364
|
+
%t539 = call core.mul:numeric(%t534, %t538) :: float
|
365
365
|
%t597 = const 168600.0 :: float
|
366
366
|
%t598 = make_tuple(%t534, %t597) :: tuple<float, float>
|
367
367
|
%t599 = fold %t598 fn="agg.min" :: float
|
368
368
|
%t600 = const 0.062 :: float
|
369
|
-
%t601 = call core.mul(%t599, %t600) :: float
|
369
|
+
%t601 = call core.mul:numeric(%t599, %t600) :: float
|
370
370
|
%t603 = const 0.0145 :: float
|
371
|
-
%t604 = call core.mul(%t534, %t603) :: float
|
371
|
+
%t604 = call core.mul:numeric(%t534, %t603) :: float
|
372
372
|
%t160 = load_input "statuses" :: array
|
373
373
|
%t564 = const 0 :: integer
|
374
374
|
%t593 = call core.add(%t601, %t604) :: float
|
@@ -398,10 +398,10 @@
|
|
398
398
|
%t558 = call core.sub(%t577, %t569) :: float
|
399
399
|
%t559 = call core.clamp(%t554, %t564, %t558) :: float
|
400
400
|
%t589 = load_field t544["rate"] :: float
|
401
|
-
%t548 = call core.mul(%t559, %t589) :: float
|
401
|
+
%t548 = call core.mul:numeric(%t559, %t589) :: float
|
402
402
|
%acc542 = acc_add agg.sum(%acc542, %t548) :: float
|
403
403
|
end_loop
|
404
|
-
%t613 = call core.mul(%t611, %t612) :: float
|
404
|
+
%t613 = call core.mul:numeric(%t611, %t612) :: float
|
405
405
|
%t549 = acc_load %acc542 :: float
|
406
406
|
%t595 = call core.add(%t593, %t613) :: float
|
407
407
|
%t531 = call core.add(%t549, %t595) :: float
|
@@ -414,16 +414,16 @@
|
|
414
414
|
(Declaration after_tax
|
415
415
|
%t622 = load_input "income" :: float
|
416
416
|
%t623 = load_input "state_rate" :: float
|
417
|
-
%t624 = call core.mul(%t622, %t623) :: float
|
417
|
+
%t624 = call core.mul:numeric(%t622, %t623) :: float
|
418
418
|
%t626 = load_input "local_rate" :: float
|
419
|
-
%t627 = call core.mul(%t622, %t626) :: float
|
419
|
+
%t627 = call core.mul:numeric(%t622, %t626) :: float
|
420
420
|
%t685 = const 168600.0 :: float
|
421
421
|
%t686 = make_tuple(%t622, %t685) :: tuple<float, float>
|
422
422
|
%t687 = fold %t686 fn="agg.min" :: float
|
423
423
|
%t688 = const 0.062 :: float
|
424
|
-
%t689 = call core.mul(%t687, %t688) :: float
|
424
|
+
%t689 = call core.mul:numeric(%t687, %t688) :: float
|
425
425
|
%t691 = const 0.0145 :: float
|
426
|
-
%t692 = call core.mul(%t622, %t691) :: float
|
426
|
+
%t692 = call core.mul:numeric(%t622, %t691) :: float
|
427
427
|
%t169 = load_input "statuses" :: array
|
428
428
|
%t652 = const 0 :: integer
|
429
429
|
%t681 = call core.add(%t689, %t692) :: float
|
@@ -450,10 +450,10 @@
|
|
450
450
|
%t646 = call core.sub(%t665, %t657) :: float
|
451
451
|
%t647 = call core.clamp(%t642, %t652, %t646) :: float
|
452
452
|
%t677 = load_field t632["rate"] :: float
|
453
|
-
%t636 = call core.mul(%t647, %t677) :: float
|
453
|
+
%t636 = call core.mul:numeric(%t647, %t677) :: float
|
454
454
|
%acc630 = acc_add agg.sum(%acc630, %t636) :: float
|
455
455
|
end_loop
|
456
|
-
%t701 = call core.mul(%t699, %t700) :: float
|
456
|
+
%t701 = call core.mul:numeric(%t699, %t700) :: float
|
457
457
|
%t637 = acc_load %acc630 :: float
|
458
458
|
%t683 = call core.add(%t681, %t701) :: float
|
459
459
|
%t619 = call core.add(%t637, %t683) :: float
|
@@ -466,16 +466,16 @@
|
|
466
466
|
(Declaration take_home
|
467
467
|
%t714 = load_input "income" :: float
|
468
468
|
%t715 = load_input "state_rate" :: float
|
469
|
-
%t716 = call core.mul(%t714, %t715) :: float
|
469
|
+
%t716 = call core.mul:numeric(%t714, %t715) :: float
|
470
470
|
%t718 = load_input "local_rate" :: float
|
471
|
-
%t719 = call core.mul(%t714, %t718) :: float
|
471
|
+
%t719 = call core.mul:numeric(%t714, %t718) :: float
|
472
472
|
%t777 = const 168600.0 :: float
|
473
473
|
%t778 = make_tuple(%t714, %t777) :: tuple<float, float>
|
474
474
|
%t779 = fold %t778 fn="agg.min" :: float
|
475
475
|
%t780 = const 0.062 :: float
|
476
|
-
%t781 = call core.mul(%t779, %t780) :: float
|
476
|
+
%t781 = call core.mul:numeric(%t779, %t780) :: float
|
477
477
|
%t783 = const 0.0145 :: float
|
478
|
-
%t784 = call core.mul(%t714, %t783) :: float
|
478
|
+
%t784 = call core.mul:numeric(%t714, %t783) :: float
|
479
479
|
%t175 = load_input "statuses" :: array
|
480
480
|
%t744 = const 0 :: integer
|
481
481
|
%t773 = call core.add(%t781, %t784) :: float
|
@@ -503,10 +503,10 @@
|
|
503
503
|
%t738 = call core.sub(%t757, %t749) :: float
|
504
504
|
%t739 = call core.clamp(%t734, %t744, %t738) :: float
|
505
505
|
%t769 = load_field t724["rate"] :: float
|
506
|
-
%t728 = call core.mul(%t739, %t769) :: float
|
506
|
+
%t728 = call core.mul:numeric(%t739, %t769) :: float
|
507
507
|
%acc722 = acc_add agg.sum(%acc722, %t728) :: float
|
508
508
|
end_loop
|
509
|
-
%t793 = call core.mul(%t791, %t792) :: float
|
509
|
+
%t793 = call core.mul:numeric(%t791, %t792) :: float
|
510
510
|
%t729 = acc_load %acc722 :: float
|
511
511
|
%t775 = call core.add(%t773, %t793) :: float
|
512
512
|
%t711 = call core.add(%t729, %t775) :: float
|
@@ -523,13 +523,13 @@
|
|
523
523
|
%t976 = make_tuple(%t974, %t975) :: tuple<float, float>
|
524
524
|
%t977 = fold %t976 fn="agg.min" :: float
|
525
525
|
%t978 = const 0.062 :: float
|
526
|
-
%t979 = call core.mul(%t977, %t978) :: float
|
526
|
+
%t979 = call core.mul:numeric(%t977, %t978) :: float
|
527
527
|
%t981 = const 0.0145 :: float
|
528
|
-
%t982 = call core.mul(%t974, %t981) :: float
|
528
|
+
%t982 = call core.mul:numeric(%t974, %t981) :: float
|
529
529
|
%t1032 = load_input "state_rate" :: float
|
530
|
-
%t1033 = call core.mul(%t974, %t1032) :: float
|
530
|
+
%t1033 = call core.mul:numeric(%t974, %t1032) :: float
|
531
531
|
%t1035 = load_input "local_rate" :: float
|
532
|
-
%t1036 = call core.mul(%t974, %t1035) :: float
|
532
|
+
%t1036 = call core.mul:numeric(%t974, %t1035) :: float
|
533
533
|
%t181 = load_input "statuses" :: array
|
534
534
|
%t824 = const 0 :: integer
|
535
535
|
%t857 = const 1.0 :: float
|
@@ -572,7 +572,7 @@
|
|
572
572
|
%t809 = select %t819, %t853, %t824 :: float
|
573
573
|
%acc802 = acc_add agg.sum(%acc802, %t809) :: float
|
574
574
|
end_loop
|
575
|
-
%t991 = call core.mul(%t989, %t990) :: float
|
575
|
+
%t991 = call core.mul:numeric(%t989, %t990) :: float
|
576
576
|
%t810 = acc_load %acc802 :: float
|
577
577
|
loop rates id=L33 in %t803 as el=%t865, idx=%t866
|
578
578
|
%t890 = load_field t865["lo"] :: float
|
@@ -583,7 +583,7 @@
|
|
583
583
|
%t879 = call core.sub(%t898, %t890) :: float
|
584
584
|
%t880 = call core.clamp(%t875, %t824, %t879) :: float
|
585
585
|
%t910 = load_field t865["rate"] :: float
|
586
|
-
%t869 = call core.mul(%t880, %t910) :: float
|
586
|
+
%t869 = call core.mul:numeric(%t880, %t910) :: float
|
587
587
|
%acc863 = acc_add agg.sum(%acc863, %t869) :: float
|
588
588
|
%acc913 = acc_add agg.sum(%acc913, %t869) :: float
|
589
589
|
%acc1039 = acc_add agg.sum(%acc1039, %t869) :: float
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_6b3029186d9b3c61fe69d9ceb9fc1d33177f973d83d0fb228ab8b2088fcb7cf2
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
@@ -1,12 +1,12 @@
|
|
1
1
|
(SNAST
|
2
2
|
(VALUE state_tax
|
3
|
-
(Call :core.mul
|
3
|
+
(Call :core.mul:numeric
|
4
4
|
(InputRef income key_chain=[]) :: [] -> float
|
5
5
|
(InputRef state_rate key_chain=[]) :: [] -> float
|
6
6
|
) :: [] -> float
|
7
7
|
) :: [] -> float
|
8
8
|
(VALUE local_tax
|
9
|
-
(Call :core.mul
|
9
|
+
(Call :core.mul:numeric
|
10
10
|
(InputRef income key_chain=[]) :: [] -> float
|
11
11
|
(InputRef local_rate key_chain=[]) :: [] -> float
|
12
12
|
) :: [] -> float
|
@@ -59,7 +59,7 @@
|
|
59
59
|
) :: [statuses, rates] -> float
|
60
60
|
(VALUE fed_tax
|
61
61
|
(Reduce :agg.sum over [rates]
|
62
|
-
(Call :core.mul
|
62
|
+
(Call :core.mul:numeric
|
63
63
|
(Ref amt) :: [statuses, rates] -> float
|
64
64
|
(Ref rate) :: [statuses, rates] -> float
|
65
65
|
) :: [statuses, rates] -> float
|
@@ -104,7 +104,7 @@
|
|
104
104
|
(Const 0.062) :: [] -> float
|
105
105
|
) :: [] -> float
|
106
106
|
(VALUE ss_tax
|
107
|
-
(Call :core.mul
|
107
|
+
(Call :core.mul:numeric
|
108
108
|
(Fold :agg.min
|
109
109
|
(Tuple
|
110
110
|
(InputRef income key_chain=[]) :: [] -> float
|
@@ -118,7 +118,7 @@
|
|
118
118
|
(Const 0.0145) :: [] -> float
|
119
119
|
) :: [] -> float
|
120
120
|
(VALUE med_tax
|
121
|
-
(Call :core.mul
|
121
|
+
(Call :core.mul:numeric
|
122
122
|
(InputRef income key_chain=[]) :: [] -> float
|
123
123
|
(Const 0.0145) :: [] -> float
|
124
124
|
) :: [] -> float
|
@@ -127,7 +127,7 @@
|
|
127
127
|
(Const 0.009) :: [] -> float
|
128
128
|
) :: [] -> float
|
129
129
|
(VALUE addl_med_tax
|
130
|
-
(Call :core.mul
|
130
|
+
(Call :core.mul:numeric
|
131
131
|
(Fold :agg.max
|
132
132
|
(Tuple
|
133
133
|
(Call :core.sub
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Autogenerated by Kumi Codegen
|
2
|
-
module Kumi::Compiled::
|
2
|
+
module Kumi::Compiled::KUMI_7e3d95df01d361f5adc0bf6b1990b0d5cccfba056716e6870c570d205196a924
|
3
3
|
def self.from(input_data = nil)
|
4
4
|
instance = Object.new
|
5
5
|
instance.extend(self)
|
data/lib/kumi/configuration.rb
CHANGED
@@ -22,11 +22,17 @@ module Kumi
|
|
22
22
|
# Useful for debugging the compiler itself.
|
23
23
|
attr_accessor :force_recompile
|
24
24
|
|
25
|
+
# Decimal coercion behavior for inputs declared as `decimal` type.
|
26
|
+
# :automatic (default): Automatically coerce inputs to BigDecimal in Ruby
|
27
|
+
# :explicit: User must explicitly call to_decimal() in the schema
|
28
|
+
attr_accessor :decimal_coercion_mode
|
29
|
+
|
25
30
|
def initialize
|
26
31
|
# Set smart, environment-aware defaults.
|
27
32
|
@cache_path = default_cache_path
|
28
33
|
@compilation_mode = default_compilation_mode
|
29
34
|
@force_recompile = false
|
35
|
+
@decimal_coercion_mode = :automatic
|
30
36
|
end
|
31
37
|
|
32
38
|
private
|
@@ -110,7 +110,7 @@ module Kumi
|
|
110
110
|
arg_types: arg_types
|
111
111
|
}
|
112
112
|
)
|
113
|
-
raise Kumi::Core::Errors::TypeError,
|
113
|
+
raise Kumi::Core::Errors::TypeError.new(e.message, call.loc)
|
114
114
|
rescue StandardError => e
|
115
115
|
# Other function resolution errors
|
116
116
|
report_semantic_error(
|
data/lib/kumi/core/errors.rb
CHANGED