MCPcopy Create free account
hub / github.com/cortex-js/compute-engine / poolForDomain

Function poolForDomain

scripts/fungrim/sample.ts:86–166  ·  view source on GitHub ↗
(dom: Json)

Source from the content-addressed store, hash-verified

84 * absent or not recognized.
85 */
86export function poolForDomain(dom: Json): Json[] {
87 if (dom === undefined || dom === null) return POOLS.complex;
88 if (typeof dom === 'string') {
89 switch (dom) {
90 case 'Integers':
91 return POOLS.integer;
92 case 'NonNegativeIntegers':
93 return POOLS.nonnegativeInteger;
94 case 'PositiveIntegers':
95 return POOLS.positiveInteger;
96 case 'NonPositiveIntegers':
97 return POOLS.nonpositiveInteger;
98 case 'NegativeIntegers':
99 return POOLS.negativeInteger;
100 case 'Primes':
101 return POOLS.prime;
102 case 'RationalNumbers':
103 return POOLS.rational;
104 case 'RealNumbers':
105 return POOLS.real;
106 case 'HH':
107 return POOLS.upperHalfPlane;
108 default:
109 return POOLS.complex;
110 }
111 }
112 if (Array.isArray(dom)) {
113 const h = dom[0];
114 if (h === 'Range') {
115 const lo = typeof dom[1] === 'number' ? dom[1] : undefined;
116 const hi = typeof dom[2] === 'number' ? dom[2] : undefined;
117 if (lo !== undefined && hi !== undefined) {
118 const out: Json[] = [];
119 for (let k = lo; k <= Math.min(hi, lo + 9); k++) out.push(k);
120 return out;
121 }
122 if (lo !== undefined) return [lo, lo + 1, lo + 2, lo + 3, lo + 5];
123 if (hi !== undefined) return [hi, hi - 1, hi - 2, hi - 3];
124 return POOLS.integer;
125 }
126 if (h === 'Interval') {
127 // Sample exact rationals strictly inside the interval when the
128 // endpoints are simple literals; otherwise fall back to the real pool
129 // (the assumption filter rejects out-of-domain picks when CE can
130 // decide membership).
131 const num = (x: Json): number | undefined => {
132 let v = x;
133 if (Array.isArray(v) && v[0] === 'Open') v = v[1];
134 if (typeof v === 'number') return v;
135 if (v === 'PositiveInfinity') return Infinity;
136 if (v === 'NegativeInfinity') return -Infinity;
137 if (v === 'Pi') return Math.PI;
138 if (Array.isArray(v) && v[0] === 'Negate') {
139 const inner = num(v[1]);
140 return inner === undefined ? undefined : -inner;
141 }
142 return undefined;
143 };

Callers 1

generateAssignmentsFunction · 0.85

Calls 3

numFunction · 0.70
mapMethod · 0.65
sliceMethod · 0.65

Tested by

no test coverage detected