Missing, Infinite, Invalid, and Unsupported-State Policies
Install and import#
npm install fintech-algorithmsimport { missingInfiniteInvalidAndUnsupportedStatePolicies } from "fintech-algorithms/foundations/statistical-computing-and-reproducibility/missing-infinite-invalid-and-unsupported-state-policies";Signature#
missingInfiniteInvalidAndUnsupportedStatePolicies(input)Screens a mixed raw list down to the entries that are genuinely finite numbers and reports how many were turned away.
Parameters#
| Name | Type | Notes |
|---|---|---|
input | D00Input | Reads rawValues, the unscreened list which may hold nulls, strings or non-finite numbers, and invalidPolicy, a label describing what the caller intends to do about them. A non-empty values list of finite numbers must also be present; it is validated but not screened. |
Returns#
D00Output
accepted holds the surviving finite numbers in their original order, rejectedCount how many were dropped, policy echoes invalidPolicy, and status is ok when anything survived and unsupported when nothing did.
Errors#
- When
valuesis absent, empty, or holds a non-finite number — throws RangeError
Complexity: time O(n),
space O(n).
Worked example#
verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.
Input#
{
"values": [1, 2, 3, 4, 5],
"floatingValue": 0.1,
"maxSafeMagnitude": 1.7976931348623157e+308,
"window": 3,
"rawValues": [1, null, 2, "bad", 3],
"invalidPolicy": "drop-and-report",
"seed": 42,
"sampleCount": 5,
"leftVector": [
{
"index": "A",
"value": 1
},
{
"index": "B",
"value": 2
}
],
"rightVector": [
{
"index": "B",
"value": 20
},
{
"index": "C",
"value": 30
}
],
"train": [10, 12, 14, 16],
"test": [18, 20],
"actual": [1, 2.0000001, 3],
"expected": [1, 2, 3]
}Showing 14 of 18 fields.
Call#
missingInfiniteInvalidAndUnsupportedStatePolicies(input)Returns#
object with 2 fields: accepted, rejectedCount
{
"accepted": [1, 2, 3],
"rejectedCount": 2
}Diagrams#
How it works#
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References#
- Floating-Point Arithmetic — IEEE 754-2019
- math.fsum — Python Documentation
- Random Sampling — NumPy Documentation
- Common Pitfalls and Recommended Practices — scikit-learn
- Historical-example decision