formulab 0.12.1 → 0.13.0
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.
- package/CHANGELOG.md +14 -0
- package/dist/machining/effectiveDiameter.d.ts +12 -3
- package/dist/machining/effectiveDiameter.d.ts.map +1 -1
- package/dist/machining/effectiveDiameter.js +35 -7
- package/dist/machining/effectiveDiameter.js.map +1 -1
- package/dist/machining/types.d.ts +3 -1
- package/dist/machining/types.d.ts.map +1 -1
- package/dist/quality/lineBalancing.js +5 -4
- package/dist/quality/lineBalancing.js.map +1 -1
- package/dist/utility/assignment.d.ts +3 -2
- package/dist/utility/assignment.d.ts.map +1 -1
- package/dist/utility/assignment.js +5 -3
- package/dist/utility/assignment.js.map +1 -1
- package/dist/utility/bilinearInterpolation.d.ts +9 -1
- package/dist/utility/bilinearInterpolation.d.ts.map +1 -1
- package/dist/utility/bilinearInterpolation.js +20 -6
- package/dist/utility/bilinearInterpolation.js.map +1 -1
- package/dist/utility/correlation.d.ts +8 -1
- package/dist/utility/correlation.d.ts.map +1 -1
- package/dist/utility/correlation.js +13 -2
- package/dist/utility/correlation.js.map +1 -1
- package/dist/utility/depreciation.d.ts +9 -1
- package/dist/utility/depreciation.d.ts.map +1 -1
- package/dist/utility/depreciation.js +18 -5
- package/dist/utility/depreciation.js.map +1 -1
- package/dist/utility/histogram.d.ts +8 -1
- package/dist/utility/histogram.d.ts.map +1 -1
- package/dist/utility/histogram.js +13 -4
- package/dist/utility/histogram.js.map +1 -1
- package/dist/utility/lcc.d.ts +9 -1
- package/dist/utility/lcc.d.ts.map +1 -1
- package/dist/utility/lcc.js +17 -4
- package/dist/utility/lcc.js.map +1 -1
- package/dist/utility/linearInterpolation.d.ts +9 -1
- package/dist/utility/linearInterpolation.d.ts.map +1 -1
- package/dist/utility/linearInterpolation.js +17 -2
- package/dist/utility/linearInterpolation.js.map +1 -1
- package/dist/utility/movingAverage.d.ts +9 -1
- package/dist/utility/movingAverage.d.ts.map +1 -1
- package/dist/utility/movingAverage.js +18 -3
- package/dist/utility/movingAverage.js.map +1 -1
- package/dist/utility/normalize.d.ts +8 -1
- package/dist/utility/normalize.d.ts.map +1 -1
- package/dist/utility/normalize.js +11 -3
- package/dist/utility/normalize.js.map +1 -1
- package/dist/utility/npv.d.ts +9 -1
- package/dist/utility/npv.d.ts.map +1 -1
- package/dist/utility/npv.js +17 -4
- package/dist/utility/npv.js.map +1 -1
- package/dist/utility/percentile.d.ts +8 -1
- package/dist/utility/percentile.d.ts.map +1 -1
- package/dist/utility/percentile.js +13 -4
- package/dist/utility/percentile.js.map +1 -1
- package/dist/utility/regression.d.ts +9 -1
- package/dist/utility/regression.d.ts.map +1 -1
- package/dist/utility/regression.js +20 -4
- package/dist/utility/regression.js.map +1 -1
- package/dist/utility/roi.d.ts +8 -1
- package/dist/utility/roi.d.ts.map +1 -1
- package/dist/utility/roi.js +16 -2
- package/dist/utility/roi.js.map +1 -1
- package/dist/utility/statistics.d.ts +8 -1
- package/dist/utility/statistics.d.ts.map +1 -1
- package/dist/utility/statistics.js +10 -2
- package/dist/utility/statistics.js.map +1 -1
- package/dist/utility/unit.d.ts +4 -2
- package/dist/utility/unit.d.ts.map +1 -1
- package/dist/utility/unit.js +12 -5
- package/dist/utility/unit.js.map +1 -1
- package/dist/utility/weightedScore.d.ts +10 -1
- package/dist/utility/weightedScore.d.ts.map +1 -1
- package/dist/utility/weightedScore.js +30 -12
- package/dist/utility/weightedScore.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.13.0] - 2026-06-11
|
|
9
|
+
|
|
10
|
+
### Changed (breaking within 0.x)
|
|
11
|
+
|
|
12
|
+
- **`utility` domain: `Result | null` signatures migrated to the standard error policy** — 16 functions (`assignment`, `bilinearInterpolation`, `correlation`, `depreciation`, `histogram`, `lcc`, `linearInterpolation`, `movingAverage`, `normalize`, `npv`, `percentile`, `regression`, `roi`, `statistics`, `unit`, `weightedScore`) now **throw `RangeError`** with a descriptive, per-constraint message instead of returning `null` on invalid input, matching every other domain and ERRORS.md. Return types are now non-nullable. `NpvResult.irr: number | null` is intentionally kept — IRR non-convergence is a domain answer, not invalid input. Consumers that branched on `null` should catch `RangeError` instead (reported by online-tools: ISSUE-20260610-formulab-utility-null-returns).
|
|
13
|
+
- **`effectiveDiameter()` (machining): placeholder `effectiveRpm: 0` removed** — the result no longer hard-codes a zero RPM (reported by online-tools: ISSUE-20260610-formulab-effectivediameter-rpm-placeholder). The function now returns:
|
|
14
|
+
- `rpmCorrectionFactor` (= D / Deff, always present) — multiply nominal RPM by this to keep the programmed surface speed at depth;
|
|
15
|
+
- `effectiveRpm?` — computed as `(Vc × 1000) / (π × Deff)` only when the new optional `cuttingSpeed` (m/min) input is provided; omitted otherwise (never 0-filled).
|
|
16
|
+
Also adds input validation (`RangeError` on non-positive D/ap, ap > D, non-positive Vc) and clamps `Deff = D` beyond the equator (ap > D/2) where the previous formula incorrectly decreased.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **`lineBalancing()` (quality): successors can now share a station with their predecessors** — the RPW assignment marked a task "completed" only when its station closed, which forced every successor into a later station and inflated the station count to the precedence-chain depth (e.g. a 5-task chain with a generous cycle time produced 4 stations and 5% line efficiency instead of 1 station / 20%). Standard RPW (Helgeson & Birnie) allows same-station placement because the within-station sequence preserves precedence. Reported by online-tools: ISSUE-20260611-formulab-linebalancing-same-station-precedence.
|
|
21
|
+
|
|
8
22
|
## [0.12.1] - 2026-06-09
|
|
9
23
|
|
|
10
24
|
### Added
|
|
@@ -3,15 +3,24 @@ import type { EffectiveDiameterInput, EffectiveDiameterResult } from './types.js
|
|
|
3
3
|
* Calculate the effective cutting diameter of a ball end mill at a given depth of cut.
|
|
4
4
|
*
|
|
5
5
|
* @formula
|
|
6
|
-
* Deff = 2 × √(ap × (D − ap))
|
|
6
|
+
* Deff = 2 × √(ap × (D − ap)) for ap ≤ D/2
|
|
7
|
+
* Deff = D for ap > D/2 (cut reaches the cylindrical shank)
|
|
8
|
+
* rpmCorrectionFactor = D / Deff
|
|
9
|
+
* effectiveRpm = (Vc × 1000) / (π × Deff) when cuttingSpeed (Vc) is provided
|
|
7
10
|
*
|
|
8
11
|
* The effective diameter determines the actual cutting speed at the depth of cut,
|
|
9
|
-
* which is smaller than the nominal diameter unless cutting at the equator.
|
|
12
|
+
* which is smaller than the nominal diameter unless cutting at or beyond the equator.
|
|
13
|
+
* Multiply the nominal spindle RPM by `rpmCorrectionFactor` to restore the programmed
|
|
14
|
+
* surface speed at the engaged diameter.
|
|
10
15
|
*
|
|
11
16
|
* @reference Sandvik Coromant — Ball nose end mill effective cutting diameter.
|
|
12
17
|
*
|
|
18
|
+
* @units toolDiameter, axialDepthOfCut: mm; cuttingSpeed: m/min; effectiveRpm: RPM
|
|
19
|
+
* @validation toolDiameter > 0; 0 < axialDepthOfCut ≤ toolDiameter; cuttingSpeed > 0 when provided
|
|
20
|
+
* @throws RangeError when toolDiameter ≤ 0, axialDepthOfCut is outside (0, toolDiameter], or cuttingSpeed ≤ 0
|
|
21
|
+
*
|
|
13
22
|
* @param input - Effective diameter parameters
|
|
14
|
-
* @returns EffectiveDiameterResult with effective diameter
|
|
23
|
+
* @returns EffectiveDiameterResult with effective diameter, RPM correction factor, and effective RPM when Vc is given
|
|
15
24
|
*/
|
|
16
25
|
export declare function effectiveDiameter(input: EffectiveDiameterInput): EffectiveDiameterResult;
|
|
17
26
|
//# sourceMappingURL=effectiveDiameter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effectiveDiameter.d.ts","sourceRoot":"","sources":["../../src/machining/effectiveDiameter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAElF
|
|
1
|
+
{"version":3,"file":"effectiveDiameter.d.ts","sourceRoot":"","sources":["../../src/machining/effectiveDiameter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,CAiCxF"}
|
|
@@ -3,22 +3,50 @@ import { roundTo } from '../utils.js';
|
|
|
3
3
|
* Calculate the effective cutting diameter of a ball end mill at a given depth of cut.
|
|
4
4
|
*
|
|
5
5
|
* @formula
|
|
6
|
-
* Deff = 2 × √(ap × (D − ap))
|
|
6
|
+
* Deff = 2 × √(ap × (D − ap)) for ap ≤ D/2
|
|
7
|
+
* Deff = D for ap > D/2 (cut reaches the cylindrical shank)
|
|
8
|
+
* rpmCorrectionFactor = D / Deff
|
|
9
|
+
* effectiveRpm = (Vc × 1000) / (π × Deff) when cuttingSpeed (Vc) is provided
|
|
7
10
|
*
|
|
8
11
|
* The effective diameter determines the actual cutting speed at the depth of cut,
|
|
9
|
-
* which is smaller than the nominal diameter unless cutting at the equator.
|
|
12
|
+
* which is smaller than the nominal diameter unless cutting at or beyond the equator.
|
|
13
|
+
* Multiply the nominal spindle RPM by `rpmCorrectionFactor` to restore the programmed
|
|
14
|
+
* surface speed at the engaged diameter.
|
|
10
15
|
*
|
|
11
16
|
* @reference Sandvik Coromant — Ball nose end mill effective cutting diameter.
|
|
12
17
|
*
|
|
18
|
+
* @units toolDiameter, axialDepthOfCut: mm; cuttingSpeed: m/min; effectiveRpm: RPM
|
|
19
|
+
* @validation toolDiameter > 0; 0 < axialDepthOfCut ≤ toolDiameter; cuttingSpeed > 0 when provided
|
|
20
|
+
* @throws RangeError when toolDiameter ≤ 0, axialDepthOfCut is outside (0, toolDiameter], or cuttingSpeed ≤ 0
|
|
21
|
+
*
|
|
13
22
|
* @param input - Effective diameter parameters
|
|
14
|
-
* @returns EffectiveDiameterResult with effective diameter
|
|
23
|
+
* @returns EffectiveDiameterResult with effective diameter, RPM correction factor, and effective RPM when Vc is given
|
|
15
24
|
*/
|
|
16
25
|
export function effectiveDiameter(input) {
|
|
17
|
-
const { toolDiameter, axialDepthOfCut } = input;
|
|
18
|
-
|
|
19
|
-
|
|
26
|
+
const { toolDiameter, axialDepthOfCut, cuttingSpeed } = input;
|
|
27
|
+
if (toolDiameter <= 0) {
|
|
28
|
+
throw new RangeError(`toolDiameter must be > 0, got ${toolDiameter}`);
|
|
29
|
+
}
|
|
30
|
+
if (axialDepthOfCut <= 0) {
|
|
31
|
+
throw new RangeError(`axialDepthOfCut must be > 0, got ${axialDepthOfCut}`);
|
|
32
|
+
}
|
|
33
|
+
if (axialDepthOfCut > toolDiameter) {
|
|
34
|
+
throw new RangeError(`axialDepthOfCut must not exceed toolDiameter (${axialDepthOfCut} > ${toolDiameter})`);
|
|
35
|
+
}
|
|
36
|
+
if (cuttingSpeed !== undefined && cuttingSpeed <= 0) {
|
|
37
|
+
throw new RangeError(`cuttingSpeed must be > 0 when provided, got ${cuttingSpeed}`);
|
|
38
|
+
}
|
|
39
|
+
// Beyond the equator the ball section is fully engaged and Deff equals the nominal diameter.
|
|
40
|
+
const dEff = axialDepthOfCut >= toolDiameter / 2
|
|
41
|
+
? toolDiameter
|
|
42
|
+
: 2 * Math.sqrt(axialDepthOfCut * (toolDiameter - axialDepthOfCut));
|
|
43
|
+
const result = {
|
|
20
44
|
effectiveDiameter: roundTo(dEff, 4),
|
|
21
|
-
|
|
45
|
+
rpmCorrectionFactor: roundTo(toolDiameter / dEff, 4),
|
|
22
46
|
};
|
|
47
|
+
if (cuttingSpeed !== undefined) {
|
|
48
|
+
result.effectiveRpm = roundTo((cuttingSpeed * 1000) / (Math.PI * dEff), 1);
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
23
51
|
}
|
|
24
52
|
//# sourceMappingURL=effectiveDiameter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effectiveDiameter.js","sourceRoot":"","sources":["../../src/machining/effectiveDiameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC
|
|
1
|
+
{"version":3,"file":"effectiveDiameter.js","sourceRoot":"","sources":["../../src/machining/effectiveDiameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE9D,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAAC,oCAAoC,eAAe,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,eAAe,GAAG,YAAY,EAAE,CAAC;QACnC,MAAM,IAAI,UAAU,CAClB,iDAAiD,eAAe,MAAM,YAAY,GAAG,CACtF,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,UAAU,CAAC,+CAA+C,YAAY,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,6FAA6F;IAC7F,MAAM,IAAI,GAAG,eAAe,IAAI,YAAY,GAAG,CAAC;QAC9C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC;IAEtE,MAAM,MAAM,GAA4B;QACtC,iBAAiB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,mBAAmB,EAAE,OAAO,CAAC,YAAY,GAAG,IAAI,EAAE,CAAC,CAAC;KACrD,CAAC;IAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -99,10 +99,12 @@ export interface CuspHeightResult {
|
|
|
99
99
|
export interface EffectiveDiameterInput {
|
|
100
100
|
toolDiameter: number;
|
|
101
101
|
axialDepthOfCut: number;
|
|
102
|
+
cuttingSpeed?: number;
|
|
102
103
|
}
|
|
103
104
|
export interface EffectiveDiameterResult {
|
|
104
105
|
effectiveDiameter: number;
|
|
105
|
-
|
|
106
|
+
rpmCorrectionFactor: number;
|
|
107
|
+
effectiveRpm?: number;
|
|
106
108
|
}
|
|
107
109
|
/**
|
|
108
110
|
* Boring Bar Deflection Types
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/machining/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/machining/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -148,12 +148,13 @@ export function lineBalancing(input) {
|
|
|
148
148
|
station.totalTime += task.time;
|
|
149
149
|
remainingTime -= task.time;
|
|
150
150
|
assigned.add(task.id);
|
|
151
|
+
// Mark completed immediately: a successor may share this station, since the
|
|
152
|
+
// within-station sequence (assignment order) preserves precedence. Deferring
|
|
153
|
+
// this to station close forced every successor into a later station, inflating
|
|
154
|
+
// the station count to the precedence-chain depth (standard RPW allows same-station).
|
|
155
|
+
completedPreds.add(task.id);
|
|
151
156
|
}
|
|
152
157
|
station.idleTime = cycleTime - station.totalTime;
|
|
153
|
-
// Mark all assigned tasks as completed for next station
|
|
154
|
-
for (const t of station.tasks) {
|
|
155
|
-
completedPreds.add(t.id);
|
|
156
|
-
}
|
|
157
158
|
stations.push(station);
|
|
158
159
|
}
|
|
159
160
|
const totalTaskTime = tasks.reduce((s, t) => s + t.time, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lineBalancing.js","sourceRoot":"","sources":["../../src/quality/lineBalancing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lineBalancing.js","sourceRoot":"","sources":["../../src/quality/lineBalancing.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,8 @@ import type { AssignmentInput, AssignmentResult } from './types.js';
|
|
|
5
5
|
* Handles rectangular matrices by padding with zeros.
|
|
6
6
|
*
|
|
7
7
|
* @param input - Assignment problem input with cost matrix and labels
|
|
8
|
-
* @returns Assignment result with optimal assignments
|
|
8
|
+
* @returns Assignment result with optimal assignments
|
|
9
|
+
* @throws RangeError if matrix is empty or has an empty first row
|
|
9
10
|
*/
|
|
10
|
-
export declare function solveAssignment(input: AssignmentInput): AssignmentResult
|
|
11
|
+
export declare function solveAssignment(input: AssignmentInput): AssignmentResult;
|
|
11
12
|
//# sourceMappingURL=assignment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assignment.d.ts","sourceRoot":"","sources":["../../src/utility/assignment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAEpF
|
|
1
|
+
{"version":3,"file":"assignment.d.ts","sourceRoot":"","sources":["../../src/utility/assignment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAEpF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAiHxE"}
|
|
@@ -5,12 +5,14 @@ import { roundTo } from '../utils.js';
|
|
|
5
5
|
* Handles rectangular matrices by padding with zeros.
|
|
6
6
|
*
|
|
7
7
|
* @param input - Assignment problem input with cost matrix and labels
|
|
8
|
-
* @returns Assignment result with optimal assignments
|
|
8
|
+
* @returns Assignment result with optimal assignments
|
|
9
|
+
* @throws RangeError if matrix is empty or has an empty first row
|
|
9
10
|
*/
|
|
10
11
|
export function solveAssignment(input) {
|
|
11
12
|
const { matrix, rowLabels, colLabels, objective } = input;
|
|
12
|
-
if (matrix.length === 0 || matrix[0].length === 0)
|
|
13
|
-
|
|
13
|
+
if (matrix.length === 0 || matrix[0].length === 0) {
|
|
14
|
+
throw new RangeError(`matrix must have at least one row and one column, got ${matrix.length}x${matrix.length === 0 ? 0 : matrix[0].length}`);
|
|
15
|
+
}
|
|
14
16
|
const nRows = matrix.length;
|
|
15
17
|
const nCols = matrix[0].length;
|
|
16
18
|
const n = Math.max(nRows, nCols);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assignment.js","sourceRoot":"","sources":["../../src/utility/assignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC
|
|
1
|
+
{"version":3,"file":"assignment.js","sourceRoot":"","sources":["../../src/utility/assignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import type { BilinearInterpolationInput, BilinearInterpolationResult } from './types.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Bilinear interpolation on a 2D grid z[xIndex][yIndex].
|
|
4
|
+
*
|
|
5
|
+
* @param input - Grid axes (x, y), values (z), and target point
|
|
6
|
+
* @returns Interpolated value and extrapolation flag
|
|
7
|
+
* @throws RangeError if x or y has fewer than 2 points, if z row count does not match x length,
|
|
8
|
+
* or if any z row length does not match y length
|
|
9
|
+
*/
|
|
10
|
+
export declare function bilinearInterpolation(input: BilinearInterpolationInput): BilinearInterpolationResult;
|
|
3
11
|
//# sourceMappingURL=bilinearInterpolation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bilinearInterpolation.d.ts","sourceRoot":"","sources":["../../src/utility/bilinearInterpolation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE1F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,2BAA2B,
|
|
1
|
+
{"version":3,"file":"bilinearInterpolation.d.ts","sourceRoot":"","sources":["../../src/utility/bilinearInterpolation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE1F;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,2BAA2B,CA+CpG"}
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Bilinear interpolation on a 2D grid z[xIndex][yIndex].
|
|
4
|
+
*
|
|
5
|
+
* @param input - Grid axes (x, y), values (z), and target point
|
|
6
|
+
* @returns Interpolated value and extrapolation flag
|
|
7
|
+
* @throws RangeError if x or y has fewer than 2 points, if z row count does not match x length,
|
|
8
|
+
* or if any z row length does not match y length
|
|
9
|
+
*/
|
|
2
10
|
export function bilinearInterpolation(input) {
|
|
3
11
|
const { x, y, z, targetX, targetY } = input;
|
|
4
|
-
if (!x ||
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
if (!x || x.length < 2) {
|
|
13
|
+
throw new RangeError(`x must contain at least 2 points, got ${x?.length ?? 0}`);
|
|
14
|
+
}
|
|
15
|
+
if (!y || y.length < 2) {
|
|
16
|
+
throw new RangeError(`y must contain at least 2 points, got ${y?.length ?? 0}`);
|
|
17
|
+
}
|
|
18
|
+
if (!z || z.length !== x.length) {
|
|
19
|
+
throw new RangeError(`z must have ${x.length} rows to match x, got ${z?.length ?? 0}`);
|
|
20
|
+
}
|
|
8
21
|
for (const row of z) {
|
|
9
|
-
if (row.length !== y.length)
|
|
10
|
-
|
|
22
|
+
if (row.length !== y.length) {
|
|
23
|
+
throw new RangeError(`each z row must have ${y.length} columns to match y, got ${row.length}`);
|
|
24
|
+
}
|
|
11
25
|
}
|
|
12
26
|
const xi = findBracket(x, targetX);
|
|
13
27
|
const yi = findBracket(y, targetY);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bilinearInterpolation.js","sourceRoot":"","sources":["../../src/utility/bilinearInterpolation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC5C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"bilinearInterpolation.js","sourceRoot":"","sources":["../../src/utility/bilinearInterpolation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import type { CorrelationInput, CorrelationResult } from './types.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Pearson correlation coefficient between two equal-length samples.
|
|
4
|
+
*
|
|
5
|
+
* @param input - Paired samples x and y
|
|
6
|
+
* @returns Correlation coefficient r, r-squared, and sample size n
|
|
7
|
+
* @throws RangeError if x and y lengths differ or contain fewer than 2 points
|
|
8
|
+
*/
|
|
9
|
+
export declare function correlation(input: CorrelationInput): CorrelationResult;
|
|
3
10
|
//# sourceMappingURL=correlation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"correlation.d.ts","sourceRoot":"","sources":["../../src/utility/correlation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"correlation.d.ts","sourceRoot":"","sources":["../../src/utility/correlation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAmCtE"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Pearson correlation coefficient between two equal-length samples.
|
|
4
|
+
*
|
|
5
|
+
* @param input - Paired samples x and y
|
|
6
|
+
* @returns Correlation coefficient r, r-squared, and sample size n
|
|
7
|
+
* @throws RangeError if x and y lengths differ or contain fewer than 2 points
|
|
8
|
+
*/
|
|
2
9
|
export function correlation(input) {
|
|
3
10
|
const { x, y } = input;
|
|
4
|
-
if (!x || !y || x.length !== y.length
|
|
5
|
-
|
|
11
|
+
if (!x || !y || x.length !== y.length) {
|
|
12
|
+
throw new RangeError(`x and y must have the same length, got ${x?.length ?? 0} and ${y?.length ?? 0}`);
|
|
13
|
+
}
|
|
14
|
+
if (x.length < 2) {
|
|
15
|
+
throw new RangeError(`x and y must contain at least 2 points, got ${x.length}`);
|
|
16
|
+
}
|
|
6
17
|
const n = x.length;
|
|
7
18
|
const meanX = x.reduce((a, v) => a + v, 0) / n;
|
|
8
19
|
const meanY = y.reduce((a, v) => a + v, 0) / n;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"correlation.js","sourceRoot":"","sources":["../../src/utility/correlation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"correlation.js","sourceRoot":"","sources":["../../src/utility/correlation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAE/C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACxB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAE3C,MAAM,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IAExB,OAAO;QACL,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import type { DepreciationInput, DepreciationResult } from './types.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Depreciation schedule by straight-line or declining-balance method.
|
|
4
|
+
*
|
|
5
|
+
* @param input - Asset cost, salvage value, useful life, and method
|
|
6
|
+
* @returns Annual depreciation, year-by-year schedule, and total depreciation
|
|
7
|
+
* @throws RangeError if assetCost <= 0, salvageValue < 0, usefulLife <= 0,
|
|
8
|
+
* salvageValue >= assetCost, or method is unknown
|
|
9
|
+
*/
|
|
10
|
+
export declare function depreciation(input: DepreciationInput): DepreciationResult;
|
|
3
11
|
//# sourceMappingURL=depreciation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depreciation.d.ts","sourceRoot":"","sources":["../../src/utility/depreciation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAyB,MAAM,YAAY,CAAC;AAE/F,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"depreciation.d.ts","sourceRoot":"","sources":["../../src/utility/depreciation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAyB,MAAM,YAAY,CAAC;AAE/F;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CAgBzE"}
|
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Depreciation schedule by straight-line or declining-balance method.
|
|
4
|
+
*
|
|
5
|
+
* @param input - Asset cost, salvage value, useful life, and method
|
|
6
|
+
* @returns Annual depreciation, year-by-year schedule, and total depreciation
|
|
7
|
+
* @throws RangeError if assetCost <= 0, salvageValue < 0, usefulLife <= 0,
|
|
8
|
+
* salvageValue >= assetCost, or method is unknown
|
|
9
|
+
*/
|
|
2
10
|
export function depreciation(input) {
|
|
3
11
|
const { assetCost, salvageValue, usefulLife, method } = input;
|
|
4
|
-
if (assetCost <= 0
|
|
5
|
-
|
|
6
|
-
if (salvageValue
|
|
7
|
-
|
|
12
|
+
if (assetCost <= 0)
|
|
13
|
+
throw new RangeError(`assetCost must be > 0, got ${assetCost}`);
|
|
14
|
+
if (salvageValue < 0)
|
|
15
|
+
throw new RangeError(`salvageValue must be >= 0, got ${salvageValue}`);
|
|
16
|
+
if (usefulLife <= 0)
|
|
17
|
+
throw new RangeError(`usefulLife must be > 0, got ${usefulLife}`);
|
|
18
|
+
if (salvageValue >= assetCost) {
|
|
19
|
+
throw new RangeError(`salvageValue must be less than assetCost, got salvageValue=${salvageValue}, assetCost=${assetCost}`);
|
|
20
|
+
}
|
|
8
21
|
if (method === 'straight-line') {
|
|
9
22
|
return straightLine(assetCost, salvageValue, usefulLife);
|
|
10
23
|
}
|
|
11
24
|
if (method === 'declining-balance') {
|
|
12
25
|
return decliningBalance(assetCost, salvageValue, usefulLife);
|
|
13
26
|
}
|
|
14
|
-
|
|
27
|
+
throw new RangeError(`method must be 'straight-line' or 'declining-balance', got ${String(method)}`);
|
|
15
28
|
}
|
|
16
29
|
function straightLine(cost, salvage, life) {
|
|
17
30
|
const annual = (cost - salvage) / life;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depreciation.js","sourceRoot":"","sources":["../../src/utility/depreciation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC9D,IAAI,SAAS,IAAI,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,UAAU,IAAI,CAAC;QAAE,
|
|
1
|
+
{"version":3,"file":"depreciation.js","sourceRoot":"","sources":["../../src/utility/depreciation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import type { HistogramInput, HistogramResult } from './types.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Histogram binning with optional explicit bin count (Sturges' rule by default) and range.
|
|
4
|
+
*
|
|
5
|
+
* @param input - Data values, optional bin count, optional [min, max] range
|
|
6
|
+
* @returns Bins with counts/frequencies, bin width, and total count
|
|
7
|
+
* @throws RangeError if data is empty or bins < 1
|
|
8
|
+
*/
|
|
9
|
+
export declare function histogram(input: HistogramInput): HistogramResult;
|
|
3
10
|
//# sourceMappingURL=histogram.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"histogram.d.ts","sourceRoot":"","sources":["../../src/utility/histogram.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAgB,MAAM,YAAY,CAAC;AAEhF,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"histogram.d.ts","sourceRoot":"","sources":["../../src/utility/histogram.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAgB,MAAM,YAAY,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAwDhE"}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Histogram binning with optional explicit bin count (Sturges' rule by default) and range.
|
|
4
|
+
*
|
|
5
|
+
* @param input - Data values, optional bin count, optional [min, max] range
|
|
6
|
+
* @returns Bins with counts/frequencies, bin width, and total count
|
|
7
|
+
* @throws RangeError if data is empty or bins < 1
|
|
8
|
+
*/
|
|
2
9
|
export function histogram(input) {
|
|
3
10
|
const { data } = input;
|
|
4
|
-
if (!data || data.length === 0)
|
|
5
|
-
|
|
11
|
+
if (!data || data.length === 0) {
|
|
12
|
+
throw new RangeError('data must contain at least one value');
|
|
13
|
+
}
|
|
6
14
|
const n = data.length;
|
|
7
15
|
// Sturges' rule for default bin count
|
|
8
16
|
const numBins = input.bins ?? Math.max(1, Math.ceil(Math.log2(n) + 1));
|
|
9
|
-
if (numBins < 1)
|
|
10
|
-
|
|
17
|
+
if (numBins < 1) {
|
|
18
|
+
throw new RangeError(`bins must be >= 1, got ${numBins}`);
|
|
19
|
+
}
|
|
11
20
|
// Use explicit range when provided and valid; fall back to data-derived min/max
|
|
12
21
|
let min;
|
|
13
22
|
let max;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"histogram.js","sourceRoot":"","sources":["../../src/utility/histogram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"histogram.js","sourceRoot":"","sources":["../../src/utility/histogram.ts"],"names":[],"mappings":"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"}
|
package/dist/utility/lcc.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import type { LccInput, LccResult } from './types.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Calculate life cycle cost (LCC) with present-value discounting
|
|
4
|
+
*
|
|
5
|
+
* @param input - LCC input parameters
|
|
6
|
+
* @returns LCC result with total cost, present values, and annual equivalent cost
|
|
7
|
+
* @throws RangeError if initialCost is negative, lifespan is not positive,
|
|
8
|
+
* or discountRate is outside [0, 1)
|
|
9
|
+
*/
|
|
10
|
+
export declare function lcc(input: LccInput): LccResult;
|
|
3
11
|
//# sourceMappingURL=lcc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lcc.d.ts","sourceRoot":"","sources":["../../src/utility/lcc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"lcc.d.ts","sourceRoot":"","sources":["../../src/utility/lcc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAiC9C"}
|
package/dist/utility/lcc.js
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate life cycle cost (LCC) with present-value discounting
|
|
4
|
+
*
|
|
5
|
+
* @param input - LCC input parameters
|
|
6
|
+
* @returns LCC result with total cost, present values, and annual equivalent cost
|
|
7
|
+
* @throws RangeError if initialCost is negative, lifespan is not positive,
|
|
8
|
+
* or discountRate is outside [0, 1)
|
|
9
|
+
*/
|
|
2
10
|
export function lcc(input) {
|
|
3
11
|
const { initialCost, annualOperatingCost, annualMaintenanceCost, disposalCost, lifespan, discountRate } = input;
|
|
4
|
-
if (initialCost < 0
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
if (initialCost < 0) {
|
|
13
|
+
throw new RangeError(`initialCost must be >= 0, got ${initialCost}`);
|
|
14
|
+
}
|
|
15
|
+
if (lifespan <= 0) {
|
|
16
|
+
throw new RangeError(`lifespan must be > 0, got ${lifespan}`);
|
|
17
|
+
}
|
|
18
|
+
if (discountRate < 0 || discountRate >= 1) {
|
|
19
|
+
throw new RangeError(`discountRate must be in [0, 1), got ${discountRate}`);
|
|
20
|
+
}
|
|
8
21
|
// Present value of annuity factor: (1 - (1+r)^-n) / r
|
|
9
22
|
const pvFactor = discountRate === 0
|
|
10
23
|
? lifespan
|
package/dist/utility/lcc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lcc.js","sourceRoot":"","sources":["../../src/utility/lcc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAChH,IAAI,WAAW,GAAG,CAAC,IAAI,QAAQ,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"lcc.js","sourceRoot":"","sources":["../../src/utility/lcc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAChH,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,iCAAiC,WAAW,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,sDAAsD;IACtD,MAAM,QAAQ,GAAG,YAAY,KAAK,CAAC;QACjC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;IAEzD,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,QAAQ,CAAC;IAC7D,MAAM,uBAAuB,GAAG,qBAAqB,GAAG,QAAQ,CAAC;IACjE,MAAM,oBAAoB,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,QAAQ,CAAC;IAE3E,MAAM,QAAQ,GAAG,WAAW,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;IAEtG,yBAAyB;IACzB,MAAM,oBAAoB,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAE7E,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9B,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACxD,uBAAuB,EAAE,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC5D,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACtD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import type { LinearInterpolationInput, LinearInterpolationResult } from './types.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Linear interpolation (and extrapolation) over a tabulated x/y series
|
|
4
|
+
*
|
|
5
|
+
* @param input - x/y table and target x value
|
|
6
|
+
* @returns Interpolated value with bracketing indices and extrapolation flag
|
|
7
|
+
* @throws RangeError if x or y is missing, x and y lengths differ,
|
|
8
|
+
* or fewer than 2 points are provided
|
|
9
|
+
*/
|
|
10
|
+
export declare function linearInterpolation(input: LinearInterpolationInput): LinearInterpolationResult;
|
|
3
11
|
//# sourceMappingURL=linearInterpolation.d.ts.map
|