exprify 1.0.3 → 1.0.6
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/HISTORY.md +49 -0
- package/README.md +113 -160
- package/SECURITY.md +18 -0
- package/bin/cli.mjs +234 -0
- package/dist/exprify.cjs.cjs +5341 -0
- package/dist/exprify.cjs.cjs.map +1 -0
- package/dist/exprify.esm.js +3558 -1220
- package/dist/exprify.esm.js.map +1 -1
- package/dist/exprify.js +3560 -1222
- package/dist/exprify.js.map +1 -1
- package/dist/exprify.min.js +2 -2
- package/dist/exprify.min.js.map +1 -1
- package/package.json +55 -19
- package/src/core/context.js +35 -27
- package/src/core/exprify.js +880 -0
- package/src/function/executor.js +29 -20
- package/src/function/internal.js +1150 -153
- package/src/function/registry.js +23 -16
- package/src/index.js +1 -1
- package/src/math/bignumber.js +31 -0
- package/src/math/fraction.js +112 -0
- package/src/math/operations.js +38 -24
- package/src/parser/astBuild.js +276 -214
- package/src/parser/evaluator.js +431 -171
- package/src/parser/tokenizer.js +179 -146
- package/src/utils/decimal.js +264 -0
- package/src/utils/globalUnits.js +43 -35
- package/src/utils/matrix.js +14 -14
- package/src/utils/store.js +69 -47
- package/src/variables/store.js +18 -15
- package/dist/exprify.cjs.js +0 -3003
- package/dist/exprify.cjs.js.map +0 -1
- package/src/assets/capture.jpg +0 -0
- package/src/core/Exprify.js +0 -369
package/dist/exprify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exprify.js","sources":["../src/parser/tokenizer.js","../src/utils/matrix.js","../src/parser/evaluator.js","../src/core/context.js","../src/math/operations.js","../src/utils/store.js","../src/utils/globalUnits.js","../src/variables/store.js","../src/function/registry.js","../src/function/internal.js","../src/parser/astBuild.js","../src/core/Exprify.js"],"sourcesContent":["export function tokenize(expr, context = {}) {\n const tokens = [];\n let current = \"\";\n let quote = \"\";\n\n const operators = [\"+\", \"-\", \"*\", \"/\", \"%\", \"^\", \"=\", \">\", \"<\", \"!\", \"&\", \"|\"];\n const multiOps = [\n \"==\", \">=\", \"<=\", \"&&\", \"||\",\n \"+=\", \"-=\", \"*=\", \"/=\", \"%=\",\n \"?.\", \"??\", \"|>\"\n ];\n\n const parentheses = \"()\";\n const comma = \",\";\n const semicolon = \";\";\n const keywords = [\"to\", \"in\"];\n // const functions = context.functions?.getAllFunctionsName?.() || [];\n const units = context.units?.getAllUnitsFlat?.() || [];\n\n const isIdentifier = (s) => /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s);\n\n function getContext(str, charIndex) {\n // 1. Extract all alphanumeric words into an array\n const words = str.match(/[a-z0-9]+/gi) || [];\n \n // 2. Identify the current character and the one immediately before it\n const currentChar = str[charIndex] || null;\n const prevChar = charIndex > 0 ? str[charIndex - 1] : null;\n \n // 3. Find the word that contains the current charIndex\n let start = charIndex;\n // Move pointer back to the start of the current word\n while (start > 0 && /[a-z0-9]/i.test(str[start - 1])) start--;\n \n let end = charIndex;\n // Move pointer forward to the end of the current word\n while (end < str.length && /[a-z0-9]/i.test(str[end])) end++;\n \n const currentWord = str.substring(start, end);\n\n // 4. Find the word that appears before the currentWord in the sequence\n const currentWordIdx = words.indexOf(currentWord);\n const prevWord = currentWordIdx > 0 ? words[currentWordIdx - 1] : null;\n\n // 5. Find the word that appears after the currentWord\n const nextWord = (currentWordIdx !== -1 && currentWordIdx < words.length - 1) \n ? words[currentWordIdx + 1] \n : null;\n\n return {\n prevWord: prevWord,\n prevChar: prevChar,\n currentWord: currentWord,\n currentChar: currentChar,\n nextWord: nextWord\n };\n }\n\n const isUnaryContext = (prev) =>\n !prev ||\n prev.type === \"Operator\" ||\n prev.type === \"UnaryOperator\" ||\n (prev.type === \"Parenthesis\" && prev.value !== \")\") ||\n prev.type === \"ArrayStart\" ||\n prev.type === \"Semicolon\" ||\n prev.type === \"Comma\" ||\n prev.type === \"Ternary\";\n\n const flushCurrent = (nextChar, index) => {\n if (!current) return;\n\n // BOOLEAN\n if (/^(true|false)$/i.test(current)) {\n tokens.push({ type: \"Boolean\", value: current.toLowerCase() === \"true\" });\n current = \"\";\n return;\n }\n\n // KEYWORD\n if (keywords.includes(current)) {\n tokens.push({ type: \"Keyword\", value: current, pos: index });\n current = \"\";\n return;\n }\n\n // BIGINT\n if (/^\\d+n$/.test(current)) {\n tokens.push({ type: \"BigInt\", value: BigInt(current.slice(0, -1)), pos: index });\n current = \"\";\n return;\n }\n\n // HEX\n if (/^0x[0-9a-fA-F]+$/.test(current)) {\n tokens.push({ type: \"Number\", value: parseInt(current, 16), pos: index });\n current = \"\";\n return;\n }\n\n // BINARY\n if (/^0b[01]+$/.test(current)) {\n tokens.push({ type: \"Number\", value: parseInt(current, 2), pos: index });\n current = \"\";\n return;\n }\n\n // NUMBER (including scientific)\n if (/^[+-]?(\\d+(\\.\\d+)?|\\.\\d+)(e[+-]?\\d+)?$/i.test(current)) {\n tokens.push({ type: \"Number\", value: parseFloat(current), pos: index });\n current = \"\";\n return;\n }\n\n // IMAGINARY NUMBER\n if (/^[+-]?(\\d+(\\.\\d+)?|\\.\\d+)(e[+-]?\\d+)?i$/i.test(current)) {\n tokens.push({\n type: \"ImaginaryLiteral\",\n value: parseFloat(current.slice(0, -1)),\n pos: index\n });\n current = \"\";\n return;\n }\n\n // IMAGINARY UNIT\n if (/^[+-]?i$/i.test(current)) {\n const sign = current[0] === \"-\" ? -1 : 1;\n tokens.push({\n type: \"ImaginaryLiteral\",\n value: sign,\n pos: index\n });\n current = \"\";\n return;\n }\n\n // NUMBER + UNIT\n const numUnit = current.match(/^([+-]?\\d+(\\.\\d+)?)([a-zA-Z]+)$/);\n if (numUnit) {\n const value = parseFloat(numUnit[1]);\n const unit = numUnit[3];\n\n tokens.push({\n type: units.includes(unit) ? \"NumberWithUnit\" : \"UnknownUnit\",\n value,\n unit,\n pos: index\n });\n\n current = \"\";\n return;\n }\n\n // UNIT\n if (units.includes(current)) {\n const {prevWord} = getContext(expr, index);\n if (nextChar !== \"(\") {\n if (prevWord){\n if (!isNaN(parseFloat(prevWord)) || prevWord === \"to\" || prevWord === \"in\") {\n // console.log(\"Context for unit detection:\", {current, prevWord, nextChar});\n\n tokens.push({ type: \"Unit\", value: current, pos: index });\n current = \"\";\n return;\n }\n }\n }\n }\n\n // IDENTIFIER\n if (isIdentifier(current)) {\n if (nextChar === \"(\") {\n tokens.push({\n type: \"Function\",\n name: current,\n pos: index\n });\n } else {\n tokens.push({\n type: \"Identifier\",\n name: current,\n pos: index\n });\n }\n\n current = \"\";\n return;\n }\n\n throw new Error(`Invalid token \"${current}\" at index ${index}`);\n };\n \n\n for (let i = 0; i < expr.length; i++) {\n let char = expr[i];\n let next = expr[i + 1];\n\n // comments\n if (char === \"/\" && next === \"/\") {\n while (i < expr.length && expr[i] !== \"\\n\") i++;\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n i += 2;\n while (i < expr.length && !(expr[i] === \"*\" && expr[i + 1] === \"/\")) i++;\n i++;\n continue;\n }\n\n // string\n if (`\"'`.includes(char)) {\n if (!quote) {\n quote = char;\n current += char;\n } else if (quote === char) {\n current += char;\n tokens.push({\n type: \"String\",\n value: current.slice(1, -1),\n pos: i\n });\n current = \"\";\n quote = \"\";\n } else {\n current += char;\n }\n continue;\n }\n\n if (quote) {\n if (char === \"\\\\\") {\n current += char + expr[++i];\n } else {\n current += char;\n }\n continue;\n }\n\n // multi operators\n const twoChar = char + next;\n if (multiOps.includes(twoChar)) {\n flushCurrent(char, i);\n tokens.push({ type: \"Operator\", value: twoChar, pos: i });\n i++;\n continue;\n }\n\n if (char === \"?\") {\n tokens.push({ type: \"Ternary\", value: \"?\" });\n continue;\n }\n\n // only treat ':' as ternary IF previous token was '?'\n if (char === \":\") {\n flushCurrent(char, i);\n const prev = tokens[tokens.length - 1];\n\n if (prev && prev.type === \"Ternary\") {\n tokens.push({ type: \"Ternary\", value: \":\" });\n } else {\n tokens.push({ type: \"Colon\" });\n }\n continue;\n }\n\n // dot\n if (char === \".\" && /\\d/.test(current) && /\\d/.test(next)) {\n current += char;\n continue;\n }\n\n if (char === \".\") {\n flushCurrent(char, i);\n tokens.push({ type: \"Dot\", pos: i });\n continue;\n }\n\n // operators\n if (operators.includes(char)) {\n flushCurrent(char, i);\n\n const prev = tokens[tokens.length - 1];\n if ((char === \"-\" || char === \"!\") && isUnaryContext(prev)) {\n tokens.push({ type: \"UnaryOperator\", value: char, pos: i });\n } else {\n tokens.push({ type: \"Operator\", value: char, pos: i });\n }\n continue;\n }\n\n // parenthesis\n if (parentheses.includes(char)) {\n flushCurrent(char, i);\n tokens.push({ type: \"Parenthesis\", value: char, pos: i });\n continue;\n }\n\n // array\n if (char === \"[\") {\n flushCurrent(char, i);\n tokens.push({ type: \"ArrayStart\", pos: i });\n continue;\n }\n\n if (char === \"]\") {\n flushCurrent(char, i);\n tokens.push({ type: \"ArrayEnd\", pos: i });\n continue;\n }\n\n // OBJECT START\n if (char === \"{\") {\n flushCurrent(char, i);\n tokens.push({ type: \"BlockStart\", pos: i });\n continue;\n }\n\n // OBJECT END\n if (char === \"}\") {\n flushCurrent(char, i);\n tokens.push({ type: \"BlockEnd\", pos: i });\n continue;\n }\n\n // comma\n if (char === comma) {\n flushCurrent(char, i);\n tokens.push({ type: \"Comma\", pos: i });\n continue;\n }\n\n // semicolon\n if (char === semicolon) {\n flushCurrent(char, i);\n tokens.push({ type: \"Semicolon\", pos: i });\n continue;\n }\n\n // space\n if (char === \" \") {\n flushCurrent(next, i);\n continue;\n }\n\n // build token\n current += char;\n\n if (i === expr.length - 1) {\n flushCurrent(null, i);\n }\n }\n\n if (quote) throw new Error(\"Unclosed string literal\");\n\n // merge number + unit\n const merged = [];\n for (let i = 0; i < tokens.length; i++) {\n const t = tokens[i];\n const next = tokens[i + 1];\n\n if (t?.type === \"Number\" && next?.type === \"Unit\") {\n merged.push({\n type: \"NumberWithUnit\",\n value: t.value,\n unit: next.value,\n pos: t.pos\n });\n i++;\n continue;\n }\n\n merged.push(t);\n }\n\n // implicit multiplication\n const final = [];\n for (let i = 0; i < merged.length; i++) {\n const a = merged[i];\n const b = merged[i + 1];\n\n final.push(a);\n\n if (\n a && b &&\n (\n ([\"Number\", \"Identifier\"].includes(a.type) ||\n (a.type === \"Parenthesis\" && a.value === \")\") ||\n a.type === \"ArrayEnd\") &&\n ([\"Identifier\", \"Function\"].includes(b.type) ||\n (b.type === \"Parenthesis\" && b.value === \"(\"))\n )\n ) {\n final.push({ type: \"Operator\", value: \"*\", implicit: true });\n }\n }\n\n return final;\n}\n","export const isDenseMatrixWrapper = (value) =>\n value &&\n typeof value === \"object\" &&\n value.exprify === \"DenseMatrix\" &&\n \"data\" in value &&\n \"size\" in value;\n\nexport const cloneMatrixData = (value) => {\n if (Array.isArray(value)) {\n return value.map(cloneMatrixData);\n }\n\n return value;\n};\n\nexport const getMatrixSize = (data) => {\n if (Array.isArray(data) && data.every(Array.isArray)) {\n return [data.length, data[0]?.length || 0];\n }\n\n if (Array.isArray(data)) {\n return [data.length];\n }\n\n throw new Error(\"Matrix data must be an array\");\n};\n\nexport const wrapDenseMatrix = (data) => ({\n exprify: \"DenseMatrix\",\n data: cloneMatrixData(data),\n size: getMatrixSize(data)\n});\n\nexport const unwrapDenseMatrix = (value) =>\n isDenseMatrixWrapper(value) ? cloneMatrixData(value.data) : value;\n\nexport const serializeExprifyValue = (value) => {\n if (isDenseMatrixWrapper(value)) {\n return JSON.stringify(value);\n }\n\n if (Array.isArray(value) || (value && typeof value === \"object\")) {\n return JSON.stringify(value, (_, current) => {\n if (isDenseMatrixWrapper(current)) {\n return current;\n }\n\n return current;\n });\n }\n\n return value;\n};\n","import { unwrapDenseMatrix, wrapDenseMatrix } from \"../utils/matrix.js\";\n\nexport function evaluateAST(node, context = {}) {\n\n const vars = context.variables;\n const fns = context.functions;\n const units = context.units;\n\n\n const isUnitObj = (v) =>\n v && typeof v === \"object\" && \"value\" in v && \"unit\" in v;\n\n const isComplex = (v) =>\n v && typeof v === \"object\" && \"re\" in v && \"im\" in v;\n\n const isSliceNode = (v) =>\n v && typeof v === \"object\" && v.type === \"SliceExpression\";\n\n const isMatrix = (v) =>\n Array.isArray(v) && v.length > 0 && v.every(Array.isArray);\n\n const cloneValue = (value) => {\n if (Array.isArray(value)) {\n return value.map(cloneValue);\n }\n\n if (value && typeof value === \"object\") {\n return { ...value };\n }\n\n return value;\n };\n\n const normalizeMatrix = (value) => {\n value = unwrapDenseMatrix(value);\n if (isMatrix(value)) return value.map((row) => [...row]);\n if (Array.isArray(value)) return [value];\n throw new Error(\"Expected matrix-compatible value\");\n };\n\n const toOneBasedIndex = (value) => {\n if (typeof value !== \"number\" || !Number.isInteger(value) || value < 1) {\n throw new Error(\"Matrix indices must be positive integers\");\n }\n\n return value - 1;\n };\n\n const resolveSelector = (selector, contextLength) => {\n if (isSliceNode(selector)) {\n const startValue = selector.start == null ? 1 : evaluateAST(selector.start, context);\n const endValue = selector.end == null ? contextLength : evaluateAST(selector.end, context);\n const start = toOneBasedIndex(startValue);\n const end = toOneBasedIndex(endValue);\n\n if (end < start) {\n return [];\n }\n\n const result = [];\n for (let index = start; index <= end; index++) {\n result.push(index);\n }\n return result;\n }\n\n return [toOneBasedIndex(evaluateAST(selector, context))];\n };\n\n const indexMatrix = (matrix, selectors) => {\n const target = normalizeMatrix(matrix);\n\n if (selectors.length === 1) {\n const rowIndexes = resolveSelector(selectors[0], target.length);\n const rows = rowIndexes.map((rowIndex) => {\n if (rowIndex >= target.length) {\n throw new Error(\"Row index out of range\");\n }\n return [...target[rowIndex]];\n });\n\n return rows.length === 1 ? rows[0] : rows;\n }\n\n const rowIndexes = resolveSelector(selectors[0], target.length);\n const colIndexes = resolveSelector(selectors[1], target[0]?.length || 0);\n\n const values = rowIndexes.map((rowIndex) => {\n if (rowIndex >= target.length) {\n throw new Error(\"Row index out of range\");\n }\n\n return colIndexes.map((colIndex) => {\n if (colIndex >= target[rowIndex].length) {\n throw new Error(\"Column index out of range\");\n }\n return target[rowIndex][colIndex];\n });\n });\n\n if (rowIndexes.length === 1 && colIndexes.length === 1) {\n return values[0][0];\n }\n\n if (rowIndexes.length === 1) {\n return values[0];\n }\n\n if (colIndexes.length === 1) {\n return values.map((row) => [row[0]]);\n }\n\n return values;\n };\n\n const assignMatrixIndex = (matrix, selectors, value) => {\n const target = isMatrix(matrix)\n ? matrix.map((row) => [...row])\n : Array.isArray(matrix)\n ? [matrix.slice()]\n : [];\n\n const rowSelector = selectors[0];\n const colSelector = selectors[1];\n\n if (!rowSelector) {\n throw new Error(\"Matrix assignment requires at least one index\");\n }\n\n const rowContextLength = Math.max(target.length, 1);\n const rowIndexes = resolveSelector(rowSelector, rowContextLength);\n\n if (selectors.length === 1) {\n const rowsValue = isMatrix(value) ? value : normalizeMatrix(value);\n\n if (rowsValue.length !== rowIndexes.length) {\n throw new Error(\"Assigned row count does not match slice\");\n }\n\n rowIndexes.forEach((rowIndex, index) => {\n target[rowIndex] = [...rowsValue[index]];\n });\n\n return {\n updatedMatrix: target,\n selectionResult: rowIndexes.length === 1 ? [target[rowIndexes[0]]] : rowIndexes.map((rowIndex) => [target[rowIndex]])\n };\n }\n\n const maxCols = Math.max(...target.map((row) => row.length), 0, 1);\n const colIndexes = resolveSelector(colSelector, maxCols);\n const normalizedValue = normalizeMatrix(value);\n\n if (normalizedValue.length !== rowIndexes.length) {\n throw new Error(\"Assigned row count does not match matrix slice\");\n }\n\n normalizedValue.forEach((row, rowOffset) => {\n if (row.length !== colIndexes.length) {\n throw new Error(\"Assigned column count does not match matrix slice\");\n }\n });\n\n rowIndexes.forEach((rowIndex, rowOffset) => {\n if (!target[rowIndex]) {\n target[rowIndex] = [];\n }\n\n colIndexes.forEach((colIndex, colOffset) => {\n target[rowIndex][colIndex] = normalizedValue[rowOffset][colOffset];\n });\n });\n\n return {\n updatedMatrix: target,\n selectionResult: rowIndexes.length === 1\n ? [colIndexes.map((colIndex) => target[rowIndexes[0]][colIndex])]\n : rowIndexes.map((rowIndex) => colIndexes.map((colIndex) => target[rowIndex][colIndex]))\n };\n };\n\n const multiplyMatrices = (left, right) => {\n const a = normalizeMatrix(left);\n const b = normalizeMatrix(right);\n\n if (a[0].length !== b.length) {\n throw new Error(\"Matrix dimensions do not allow multiplication\");\n }\n\n return a.map((row) =>\n b[0].map((_, colIndex) =>\n row.reduce((sum, value, rowIndex) => sum + (value * b[rowIndex][colIndex]), 0)\n )\n );\n };\n\n const toComplex = (value) => {\n if (isComplex(value)) return value;\n if (typeof value === \"number\") return { re: value, im: 0 };\n throw new Error(\"Complex arithmetic only supports numbers\");\n };\n\n const fromImaginary = (value) => ({ re: 0, im: value });\n\n const simplifyComplex = (value) =>\n value.im === 0 ? value.re : value;\n\n const createFunctionScope = (params, args) => {\n const scopedValues = {};\n\n params.forEach((param, index) => {\n scopedValues[param] = args[index];\n });\n\n return scopedValues;\n };\n\n const evalComplexBinary = (operator, left, right) => {\n const a = toComplex(left);\n const b = toComplex(right);\n\n switch (operator) {\n case \"+\":\n return simplifyComplex({ re: a.re + b.re, im: a.im + b.im });\n case \"-\":\n return simplifyComplex({ re: a.re - b.re, im: a.im - b.im });\n case \"*\":\n return simplifyComplex({\n re: (a.re * b.re) - (a.im * b.im),\n im: (a.re * b.im) + (a.im * b.re)\n });\n case \"/\": {\n const denominator = (b.re ** 2) + (b.im ** 2);\n\n if (denominator === 0) {\n throw new Error(\"Division by zero\");\n }\n\n return simplifyComplex({\n re: ((a.re * b.re) + (a.im * b.im)) / denominator,\n im: ((a.im * b.re) - (a.re * b.im)) / denominator\n });\n }\n default:\n throw new Error(`Operator ${operator} is not supported for complex numbers`);\n }\n };\n\n /* ================= EVALUATOR ================= */\n\n switch (node.type) {\n\n /* ===== LITERAL ===== */\n case \"Literal\":\n return node.value;\n\n case \"ImaginaryLiteral\":\n return fromImaginary(node.value);\n\n case \"UnitLiteral\":\n return { value: node.value, unit: node.unit };\n\n /* ===== VARIABLE ===== */\n case \"Identifier\":\n return vars.get(node.name);\n\n /* ===== ASSIGNMENT ===== */\n case \"AssignmentExpression\": {\n const value = evaluateAST(node.right, context);\n\n if (node.left.type === \"Identifier\") {\n vars.set(node.left.name, value);\n if (node.right.type === \"ArrayExpression\") {\n return wrapDenseMatrix(unwrapDenseMatrix(value));\n }\n return value;\n }\n\n if (node.left.type === \"IndexExpression\" && node.left.object.type === \"Identifier\") {\n const currentValue = vars.get(node.left.object.name);\n const assigned = assignMatrixIndex(currentValue, node.left.selectors, value);\n vars.set(node.left.object.name, assigned.updatedMatrix);\n return assigned.selectionResult;\n }\n\n throw new Error(\"Invalid assignment target\");\n }\n\n case \"FunctionAssignmentExpression\": {\n if (node.operator !== \"=\") {\n throw new Error(`Operator ${node.operator} is not supported for function definitions`);\n }\n\n const fn = (...args) => {\n const scopedContext = context.withScope(createFunctionScope(node.params, args));\n return evaluateAST(node.right, scopedContext);\n };\n\n fns.register(node.left.name, fn);\n return fn;\n }\n\n /* ===== UNARY ===== */\n case \"UnaryExpression\": {\n const val = evaluateAST(node.argument, context);\n\n switch (node.operator) {\n case \"-\":\n return isComplex(val)\n ? simplifyComplex({ re: -val.re, im: -val.im })\n : -val;\n case \"!\": return !val;\n }\n\n throw new Error(`Unknown unary operator ${node.operator}`);\n }\n\n /* ===== BINARY ===== */\n case \"BinaryExpression\": {\n let left = evaluateAST(node.left, context);\n let right = evaluateAST(node.right, context);\n\n // UNIT handling\n if (isUnitObj(left) || isUnitObj(right)) {\n\n if (!units) throw new Error(\"Unit system not available\");\n\n return units.compute(node.operator, left, right);\n }\n\n if (node.operator === \"*\" && (Array.isArray(left) || Array.isArray(right))) {\n return multiplyMatrices(left, right);\n }\n\n if (isComplex(left) || isComplex(right)) {\n return evalComplexBinary(node.operator, left, right);\n }\n\n switch (node.operator) {\n case \"+\": return left + right;\n case \"-\": return left - right;\n case \"*\": return left * right;\n case \"/\": return left / right;\n case \"%\": return left % right;\n case \"^\": return left ** right;\n\n case \">\": return left > right;\n case \"<\": return left < right;\n case \">=\": return left >= right;\n case \"<=\": return left <= right;\n case \"==\": return left === right;\n }\n\n throw new Error(`Unknown operator ${node.operator}`);\n }\n\n /* ===== LOGICAL ===== */\n case \"LogicalExpression\": {\n const left = evaluateAST(node.left, context);\n\n if (node.operator === \"&&\") {\n return left && evaluateAST(node.right, context);\n }\n\n if (node.operator === \"||\") {\n return left || evaluateAST(node.right, context);\n }\n\n if (node.operator === \"??\") {\n return left ?? evaluateAST(node.right, context);\n }\n\n throw new Error(`Unknown logical operator ${node.operator}`);\n }\n\n /* ===== FUNCTION CALL ===== */\n case \"CallExpression\": {\n const fnName = node.callee.name;\n const fn = fns.get(fnName);\n\n const args = node.arguments.map(arg =>\n evaluateAST(arg, context)\n );\n\n return fn(...args);\n }\n\n /* ===== PIPELINE ===== */\n case \"PipelineExpression\": {\n const leftVal = evaluateAST(node.left, context);\n\n // right must be function\n if (node.right.type === \"CallExpression\") {\n const fnName = node.right.callee.name;\n const fn = fns.get(fnName);\n\n const args = [\n leftVal,\n ...node.right.arguments.map(arg =>\n evaluateAST(arg, context)\n )\n ];\n\n return fn(...args);\n }\n\n if (node.right.type === \"Identifier\") {\n const fn = fns.get(node.right.name);\n return fn(leftVal);\n }\n\n throw new Error(\"Invalid pipeline target\");\n }\n\n /* ===== UNIT CONVERSION ===== */\n case \"UnitConversion\": {\n const from = evaluateAST(node.from, context);\n\n if (!isUnitObj(from)) {\n throw new Error(\"Left side must be a unit value\");\n }\n\n if (!units) {\n throw new Error(\"Unit system not available\");\n }\n\n return units.convert(from.value, from.unit, node.to);\n }\n\n /* ===== ARRAY ===== */\n case \"ArrayExpression\":\n return node.elements.map(el => evaluateAST(el, context));\n\n case \"IndexExpression\": {\n const target = evaluateAST(node.object, context);\n return indexMatrix(target, node.selectors);\n }\n\n /* ===== OBJECT ===== */\n case \"ObjectExpression\": {\n const obj = {};\n for (let p of node.properties) {\n obj[p.key] = evaluateAST(p.value, context);\n }\n return obj;\n }\n\n /* ===== MEMBER ===== */\n case \"MemberExpression\": {\n const obj = evaluateAST(node.object, context);\n\n if (node.optional && obj == null) return undefined;\n\n return obj[node.property.name];\n }\n\n default:\n throw new Error(`Unknown AST node type: ${node.type}`);\n }\n}\n","export function createContext({ variables, functions, units, evaluate}) {\n if (!variables) throw new Error(\"Variable store missing\");\n if (!functions) throw new Error(\"Function registry missing\");\n if (!units) throw new Error(\"Units list missing\");\n if (!evaluate) throw new Error(\"evaluate function missing\");\n\n return {\n variables: variables,\n functions: functions,\n units: units,\n evaluate,\n withScope(scope = {}) {\n const tempVars = {\n ...variables.all?.(),\n ...scope\n };\n return createContext({\n functions: functions,\n evaluate,\n units,\n variables: {\n get: (k) => tempVars[k],\n set: (k, v) => (tempVars[k] = v),\n all: () => tempVars\n }\n });\n\n }\n };\n}","const isValidNumberPair = (a, b) =>\n (typeof a === typeof b) &&\n (typeof a === 'number' || typeof a === 'bigint');\n\nexport const mathOperations = Object.freeze({\n power: function(a, b) {\n if (isValidNumberPair(a, b)) return a ** b;\n throw new Error(\"Invalid types for ^\");\n },\n\n multiply: function(a, b) {\n if (isValidNumberPair(a, b)) return a * b;\n throw new Error(\"Invalid types for *\");\n },\n\n divide: function(a, b) {\n if (isValidNumberPair(a, b)) {\n if (b === 0) throw new Error(\"Division by zero\");\n return a / b;\n }\n throw new Error(\"Invalid types for /\");\n },\n\n add: function(a, b) {\n if (isValidNumberPair(a, b)) return a + b;\n if (typeof a === 'string' && typeof b === 'string') return a + b;\n throw new Error(\"Invalid types for +\");\n },\n subtract: function(a, b) {\n if (isValidNumberPair(a, b)) return a - b;\n throw new Error(\"Invalid types for -\");\n },\n\n modulus: function(a, b) {\n if (isValidNumberPair(a, b)) return a % b;\n throw new Error(\"Invalid types for %\");\n }\n});","export function createUnitsStore(initial = {}) {\n let units = { ...initial};\n\n // ---------- Helpers ----------\n\n function getAllUnitsFlat() {\n const result = new Set();\n\n for (const type in units) {\n for (const key in units[type]) {\n const u = units[type][key];\n\n const keyLower = key.toLowerCase();\n result.add(keyLower);\n\n // Unit name\n if (u.unit) {\n const unitLower = u.unit.toLowerCase();\n\n // Avoid duplicate like \"m\" vs \"meter\"\n if (unitLower !== keyLower) {\n // Optional: only single-word units\n if (unitLower.split(/\\s+/).length === 1) {\n result.add(unitLower);\n }\n }\n }\n\n // Symbol\n if (u.symbol) {\n const symbolLower = u.symbol.toLowerCase();\n\n // Avoid duplicate with unit name\n if (!u.unit || symbolLower !== u.unit.toLowerCase()) {\n result.add(symbolLower);\n }\n }\n }\n }\n\n return Array.from(result);\n }\n\n function findUnit(input) {\n input = input.toLowerCase();\n\n for (const type in units) {\n for (const key in units[type]) {\n const u = units[type][key];\n\n if (\n key.toLowerCase() === input ||\n u.unit?.toLowerCase() === input ||\n u.symbol?.toLowerCase() === input\n ) {\n return { type, key , data: u};\n }\n }\n }\n\n return null;\n }\n\n // ---------- Core Convert ----------\n\n function convert(value, fromUnit, toUnit) {\n const from = findUnit(fromUnit);\n const to = findUnit(toUnit);\n\n if (!from) throw new Error(`Unknown unit: ${fromUnit}`);\n if (!to) throw new Error(`Unknown unit: ${toUnit}`);\n\n if (from.type !== to.type) {\n throw new Error(`Cannot convert ${fromUnit} to ${toUnit} (${to.data.unit || to.key}). ${from.data.unit || from.key} conversion units like ${Object.keys(units[from.type]).join(\", \")}`);\n }\n\n const result = value * (from.data.value / to.data.value);\n\n return { value: result, unit: to.key };\n }\n\n // ---------- Public API ----------\n\n return {\n // Get all units\n getUnits: () => units,\n\n // Replace all units\n setUnits: (newUnits) => {\n units = { ...newUnits };\n },\n\n // Update single type\n updateType: (type, data) => {\n units[type] = { ...units[type], ...data };\n },\n\n // Add new unit\n addUnit: (type, key, unitObj) => {\n if (!units[type]) units[type] = {};\n units[type][key] = unitObj;\n },\n compute(op, left, right) {\n\n const isUnit = (v) =>\n v && typeof v === \"object\" && \"value\" in v && \"unit\" in v;\n\n const apply = (a, b) => {\n switch (op) {\n case \"+\": return a + b;\n case \"-\": return a - b;\n case \"*\": return a * b;\n case \"/\": return a / b;\n case \"%\": return a % b;\n case \"^\": return Math.pow(a, b);\n }\n };\n\n // BOTH UNIT\n if (isUnit(left) && isUnit(right)) {\n\n const from = this.findUnit(right.unit);\n const to = this.findUnit(left.unit);\n\n if (from.type !== to.type) {\n throw new Error(`Cannot operate on different unit types`);\n }\n\n // convert right → left unit\n const r = right.value * (from.data.value / to.data.value);\n\n const result = apply(left.value, r);\n\n // multiplication/division produce compound units\n if (op === \"*\") {\n return { value: result, unit: left.unit };\n }\n\n if (op === \"/\") {\n return { value: result, unit: left.unit };\n }\n\n if (op === \"^\") {\n return { value: result, unit: left.unit };\n }\n\n return { value: result, unit: left.unit };\n }\n\n // ================= LEFT UNIT =================\n if (isUnit(left) && !isUnit(right)) {\n const result = apply(left.value, right);\n\n return { value: result, unit: left.unit };\n }\n\n // ================= RIGHT UNIT =================\n if (!isUnit(left) && isUnit(right)) {\n const result = apply(left, right.value);\n\n if (op === \"/\") {\n return { value: result, unit: right.unit };\n }\n\n return { value: result, unit: right.unit };\n }\n\n // ================= NORMAL =================\n return apply(left, right);\n },\n // Convert\n convert,\n\n // Search helpers\n getAllUnitsFlat,\n findUnit\n };\n}\n","export const globalUnits = {\n // Length\n length: {\n m: { value: 1, unit: 'meter', symbol: 'm' },\n cm: { value: 0.01, unit: 'centimeter', symbol: 'cm' },\n mm: { value: 0.001, unit: 'millimeter', symbol: 'mm' },\n km: { value: 1000, unit: 'kilometer', symbol: 'km' },\n um: { value: 0.000001, unit: 'micrometer', symbol: 'um', note: 'also called micron' },\n nm: { value: 0.000000001, unit: 'nanometer', symbol: 'nm' },\n px: { value: 0.000264583, unit: 'pixel', symbol: 'px', note: '96dpi standard' },\n em: { value: 0.000264583 * 16, unit: 'em', symbol: 'em', note: '1em = 16px by default' },\n rem: { value: 0.000264583 * 16, unit: 'rem', symbol: 'rem', note: 'root em = 16px by default' },\n pt: { value: 0.000352778, unit: 'point', symbol: 'pt', note: '1pt = 1/72 inch' },\n pc: { value: 0.00423333, unit: 'pica', symbol: 'pc', note: '1pc = 12pt' },\n inch: { value: 0.0254, unit: 'inch', symbol: 'in' },\n ft: { value: 0.3048, unit: 'foot', symbol: 'ft' },\n yd: { value: 0.9144, unit: 'yard', symbol: 'yd' },\n mi: { value: 1609.344, unit: 'mile', symbol: 'mi' },\n thou: { value: 0.0000254, unit: 'mil', symbol: 'thou', note: 'thousandth of an inch' },\n furlong: { value: 201.168, unit: 'furlong', symbol: 'fur', note: '220 yards' },\n nmi: { value: 1852, unit: 'nautical mile', symbol: 'nmi' },\n fathom: { value: 1.8288, unit: 'fathom', symbol: 'fathom' },\n au: { value: 1.496e11, unit: 'astronomical unit', symbol: 'AU' },\n ly: { value: 9.4607e15, unit: 'light year', symbol: 'ly' },\n pc: { value: 3.0857e16, unit: 'parsec', symbol: 'pc' }\n },\n\n // Weight / Mass\n weight: {\n mg: { value: 1e-6, unit: 'milligram', symbol: 'mg' },\n g: { value: 0.001, unit: 'gram', symbol: 'g' },\n kg: { value: 1, unit: 'kilogram', symbol: 'kg' },\n t: { value: 1000, unit: 'tonne', symbol: 't', note: 'metric ton' },\n lb: { value: 0.453592, unit: 'pound', symbol: 'lb' },\n oz: { value: 0.0283495, unit: 'ounce', symbol: 'oz' },\n stone: { value: 6.35029, unit: 'stone', symbol: 'st', note: '1 stone = 14 lb' }\n },\n\n // Time\n time: {\n s: { value: 1, unit: 'second', symbol: 's' },\n min: { value: 60, unit: 'minute', symbol: 'min' },\n h: { value: 3600, unit: 'hour', symbol: 'h' },\n day: { value: 86400, unit: 'day', symbol: 'd' },\n week: { value: 604800, unit: 'week', symbol: 'wk' },\n month: { value: 2629800, unit: 'month', symbol: 'mo', note: 'average month = 30.44 days' },\n year: { value: 31557600, unit: 'year', symbol: 'yr', note: 'average year = 365.25 days' }\n },\n\n // Voltage\n voltage: {\n V: { value: 1, unit: 'volt', symbol: 'V' },\n mV: { value: 0.001, unit: 'millivolt', symbol: 'mV' },\n kV: { value: 1000, unit: 'kilovolt', symbol: 'kV' },\n MV: { value: 1e6, unit: 'megavolt', symbol: 'MV' },\n GV: { value: 1e9, unit: 'gigavolt', symbol: 'GV' },\n statV: { value: 299.792458, unit: 'statvolt', symbol: 'statV', note: 'CGS unit' },\n abV: { value: 1e-8, unit: 'abvolt', symbol: 'abV', note: 'CGS electromagnetic unit' }\n },\n\n // Frequency\n frequency: {\n Hz: { value: 1, unit: 'hertz', symbol: 'Hz', note: '1 cycle per second' },\n kHz: { value: 1e3, unit: 'kilohertz', symbol: 'kHz' },\n MHz: { value: 1e6, unit: 'megahertz', symbol: 'MHz' },\n GHz: { value: 1e9, unit: 'gigahertz', symbol: 'GHz' },\n THz: { value: 1e12, unit: 'terahertz', symbol: 'THz' }\n },\n\n // Power\n power: {\n W: { value: 1, unit: 'watt', symbol: 'W', note: '1 joule per second' },\n mW: { value: 0.001, unit: 'milliwatt', symbol: 'mW' },\n kW: { value: 1000, unit: 'kilowatt', symbol: 'kW' },\n MW: { value: 1e6, unit: 'megawatt', symbol: 'MW' },\n GW: { value: 1e9, unit: 'gigawatt', symbol: 'GW' },\n HP: { value: 745.7, unit: 'horsepower', symbol: 'HP', note: 'mechanical HP = 745.7 W' },\n kcal_per_h: { value: 1.163, unit: 'kilocalorie per hour', symbol: 'kcal/h', note: '= 1.163 W' },\n BTU_per_h: { value: 0.29307107, unit: 'BTU per hour', symbol: 'BTU/h', note: '= 0.293 W' }\n },\n\n // Sound\n sound: {\n dB: { value: 1, unit: 'decibel', symbol: 'dB', note: 'logarithmic unit of sound intensity' },\n dBA: { value: 1, unit: 'A-weighted decibel', symbol: 'dBA', note: 'Adjusted for human hearing' },\n dBC: { value: 1, unit: 'C-weighted decibel', symbol: 'dBC', note: 'Flat weighting for high-level sounds' }\n },\n\n // Temperature\n temperature: {\n K: { value: 1, unit: 'kelvin', symbol: 'K' },\n C: { value: 1, unit: 'Celsius', symbol: '°C', note: '°C → K: add 273.15' },\n F: { value: 1, unit: 'Fahrenheit', symbol: '°F', note: '°F → K: (°F - 32) * 5/9 + 273.15' }\n },\n\n // Pressure\n pressure: {\n Pa: { value: 1, unit: 'pascal', symbol: 'Pa' },\n kPa: { value: 1000, unit: 'kilopascal', symbol: 'kPa' },\n MPa: { value: 1e6, unit: 'megapascal', symbol: 'MPa' },\n bar: { value: 1e5, unit: 'bar', symbol: 'bar' },\n atm: { value: 101325, unit: 'atmosphere', symbol: 'atm' },\n psi: { value: 6894.757, unit: 'pound per square inch', symbol: 'psi' },\n mmHg:{ value: 133.322, unit: 'millimeter of mercury', symbol: 'mmHg' }\n },\n\n // Energy\n energy: {\n J: { value: 1, unit: 'joule', symbol: 'J' },\n kJ: { value: 1000, unit: 'kilojoule', symbol: 'kJ' },\n cal: { value: 4.184, unit: 'calorie', symbol: 'cal' },\n kcal:{ value: 4184, unit: 'kilocalorie', symbol: 'kcal' },\n eV: { value: 1.60218e-19, unit: 'electronvolt', symbol: 'eV' },\n BTU: { value: 1055.06, unit: 'BTU', symbol: 'BTU' }\n },\n\n // Force\n force: {\n N: { value: 1, unit: 'newton', symbol: 'N' },\n kN: { value: 1000, unit: 'kilonewton', symbol: 'kN' },\n lbf: { value: 4.44822, unit: 'pound-force', symbol: 'lbf' },\n kgf: { value: 9.80665, unit: 'kilogram-force', symbol: 'kgf' },\n dyne:{ value: 1e-5, unit: 'dyne', symbol: 'dyn' }\n },\n\n // Area\n area: {\n m2: { value: 1, unit: 'square meter', symbol: 'm²' },\n cm2: { value: 0.0001, unit: 'square centimeter', symbol: 'cm²' },\n km2: { value: 1e6, unit: 'square kilometer', symbol: 'km²' },\n acre: { value: 4046.856, unit: 'acre', symbol: 'acre' },\n hectare:{ value: 10000, unit: 'hectare', symbol: 'ha' },\n ft2: { value: 0.092903, unit: 'square foot', symbol: 'ft²' },\n yd2: { value: 0.836127, unit: 'square yard', symbol: 'yd²' }\n },\n\n // Volume\n volume: {\n m3: { value: 1, unit: 'cubic meter', symbol: 'm³' },\n L: { value: 0.001, unit: 'liter', symbol: 'L' },\n mL: { value: 1e-6, unit: 'milliliter', symbol: 'mL' },\n gallon:{ value: 0.00378541, unit: 'US gallon', symbol: 'gal' },\n pint: { value: 0.000473176, unit: 'US pint', symbol: 'pt' },\n floz: { value: 2.9574e-5, unit: 'US fluid ounce', symbol: 'fl oz' }\n },\n\n // Electrical Current\n current: {\n A: { value: 1, unit: 'ampere', symbol: 'A' },\n mA: { value: 0.001, unit: 'milliampere', symbol: 'mA' },\n uA: { value: 0.000001, unit: 'microampere', symbol: 'uA' },\n kA: { value: 1000, unit: 'kiloampere', symbol: 'kA' }\n },\n\n // Resistance / Conductance\n resistance: {\n ohm: { value: 1, unit: 'ohm' },\n kohm: { value: 1000, unit: 'kiloohm'},\n megaohm: { value: 1e6, unit: 'megaohm'},\n S: { value: 1, unit: 'siemens', symbol: 'S', note: 'conductance' }\n },\n\n // Capacitance / Inductance\n capacitance: {\n F: { value: 1, unit: 'farad', symbol: 'F' },\n mF: { value: 0.001, unit: 'millifarad'},\n uF: { value: 0.000001, unit: 'microfarad' }\n },\n inductance: {\n H: { value: 1, unit: 'henry', symbol: 'H' },\n mH: { value: 0.001, unit: 'millihenry', symbol: 'mH' },\n uH: { value: 0.000001, unit: 'microhenry', symbol: 'uH' }\n },\n\n // Luminous Intensity / Illuminance\n light: {\n cd: { value: 1, unit: 'candela', symbol: 'cd' },\n lm: { value: 1, unit: 'lumen', symbol: 'lm' },\n lx: { value: 1, unit: 'lux', symbol: 'lx' }\n },\n\n // Data / Digital Storage\n data: {\n bit: { value: 1, unit: 'bit', symbol: 'bit' },\n B: { value: 8, unit: 'byte', symbol: 'B' },\n KB: { value: 8e3, unit: 'kilobyte', symbol: 'KB' },\n MB: { value: 8e6, unit: 'megabyte', symbol: 'MB' },\n GB: { value: 8e9, unit: 'gigabyte', symbol: 'GB' },\n TB: { value: 8e12, unit: 'terabyte', symbol: 'TB' }\n },\n\n // Angle\n angle: {\n deg: { value: 1, unit: 'degree', symbol: '°' },\n rad: { value: 57.2958, unit: 'radian', symbol: 'rad', note: '1 rad = 57.2958°' },\n grad:{ value: 0.9, unit: 'grad', symbol: 'grad', note: '1 grad = 0.9°' }\n },\n radiation: {\n // Absorbed Dose\n Gy: { value: 1, unit: 'gray', symbol: 'Gy', note: 'Absorbed dose: 1 Gy = 1 J/kg' },\n mGy: { value: 0.001, unit: 'milligray', symbol: 'mGy' },\n rad: { value: 0.01, unit: 'rad', symbol: 'rad', note: '1 rad = 0.01 Gy' },\n\n // Dose Equivalent\n Sv: { value: 1, unit: 'sievert', symbol: 'Sv', note: 'Biological effect dose equivalent' },\n mSv: { value: 0.001, unit: 'millisievert', symbol: 'mSv' },\n rem: { value: 0.01, unit: 'rem', symbol: 'rem', note: '1 rem = 0.01 Sv' },\n\n // Radioactivity\n Bq: { value: 1, unit: 'becquerel', symbol: 'Bq', note: '1 decay per second' },\n kBq: { value: 1e3, unit: 'kilobecquerel', symbol: 'kBq' },\n MBq: { value: 1e6, unit: 'megabecquerel', symbol: 'MBq' },\n GBq: { value: 1e9, unit: 'gigabecquerel', symbol: 'GBq' },\n Ci: { value: 3.7e10, unit: 'curie', symbol: 'Ci', note: '1 Ci = 3.7 x 10¹⁰ decays per second' },\n mCi: { value: 3.7e7, unit: 'millicurie', symbol: 'mCi' }\n }\n};","const validVarName = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\n\nexport function createVarStore(initial = {}) {\n let store = Object.create(null);\n \n\n for (const key in initial) {\n store[key] = initial[key];\n }\n\n return {\n set(name, value, { override = true } = {}) {\n\n // Name validation\n if (typeof name !== \"string\" || !name) {\n throw new Error(\"Variable name must be a non-empty string\");\n }\n\n if (!validVarName.test(name)) {\n throw new Error(`Variable Name Error: '${name}' is not a valid variable name`);\n }\n\n // Value validation\n if (value === undefined) {\n throw new Error(`Variable Value Error: '${name}' cannot be undefined`);\n }\n\n // Prevent overwrite (optional)\n if (!override && name in variablesDB) {\n throw new Error(`Variable '${name}' already exists`);\n }\n\n store[name] = value;\n },\n\n //get variable\n get(name) {\n return store[name];\n },\n\n // check existence\n has(name) {\n return Object.prototype.hasOwnProperty.call(store, name);\n },\n\n // remove variable\n remove(name) {\n delete store[name];\n },\n\n // get all variables (snapshot)\n all() {\n return { ...store };\n },\n\n // clear all\n clear() {\n store = Object.create(null);\n },\n\n // merge multiple variables\n merge(obj = {}) {\n for (const key in obj) {\n store[key] = obj[key];\n }\n },\n\n // clone store (for scoped instances) \n clone() {\n return createVarStore(store);\n }\n };\n}\n\nexport default { createVarStore };","export function createFunctionRegistry(initial = {}) {\n const store = Object.create(null);\n\n for (const key in initial) {\n if (typeof initial[key] === \"function\") {\n store[key] = initial[key];\n }\n }\n\n return {\n getAllFunctionsName() {\n return Object.keys(store);\n },\n // register new formula\n register(name, fn) {\n if (typeof name !== \"string\" || !name) {\n throw new Error(\"Formula name must be a non-empty string\");\n }\n\n if (typeof fn !== \"function\") {\n throw new Error(`Formula \"${name}\" must be callable`);\n }\n\n store[name] = fn;\n },\n\n // get formula\n get(name) {\n return store[name];\n },\n\n // check existence\n has(name) {\n return Object.prototype.hasOwnProperty.call(store, name);\n },\n\n // remove formula\n remove(name) {\n delete store[name];\n },\n\n // list all\n all() {\n return { ...store };\n },\n\n // clear registry\n clear() {\n for (const key in store) {\n delete store[key];\n }\n },\n\n // extend multiple\n extend(formulas = {}) {\n for (const name in formulas) {\n if (typeof formulas[name] === \"function\") {\n store[name] = formulas[name];\n }\n }\n },\n\n // clone (for scoped instances)\n clone() {\n return createFormulaRegistry(store);\n }\n };\n}","import { unwrapDenseMatrix, wrapDenseMatrix } from \"../utils/matrix.js\";\n\nfunction validateSquareMatrix(matrix) {\n matrix = unwrapDenseMatrix(matrix);\n if (!Array.isArray(matrix) || matrix.length === 0) {\n throw new Error(\"det() expects a non-empty matrix\");\n }\n\n if (!matrix.every(Array.isArray)) {\n throw new Error(\"det() expects a 2D matrix\");\n }\n\n const size = matrix.length;\n if (!matrix.every((row) => row.length === size)) {\n throw new Error(\"det() expects a square matrix\");\n }\n\n for (const row of matrix) {\n for (const value of row) {\n if (typeof value !== \"number\" && typeof value !== \"bigint\") {\n throw new Error(\"det() matrix values must be numeric\");\n }\n }\n }\n}\n\nfunction determinant(matrix) {\n matrix = unwrapDenseMatrix(matrix);\n validateSquareMatrix(matrix);\n\n if (matrix.length === 1) {\n return matrix[0][0];\n }\n\n if (matrix.length === 2) {\n return (matrix[0][0] * matrix[1][1]) - (matrix[0][1] * matrix[1][0]);\n }\n\n return matrix[0].reduce((sum, value, columnIndex) => {\n const minor = matrix.slice(1).map((row) =>\n row.filter((_, index) => index !== columnIndex)\n );\n const cofactor = columnIndex % 2 === 0 ? value : -value;\n return sum + (cofactor * determinant(minor));\n }, 0);\n}\n\nfunction toLinearArray(value) {\n const unwrapped = unwrapDenseMatrix(value);\n return Array.isArray(unwrapped) ? unwrapped : value;\n}\n\nfunction asMatrixData(value) {\n const data = unwrapDenseMatrix(value);\n if (!Array.isArray(data)) {\n throw new Error(\"Expected matrix data\");\n }\n return data;\n}\n\nfunction solveLinearSystem(coefficients, constants) {\n const n = coefficients.length;\n const augmented = coefficients.map((row, rowIndex) => [...row, constants[rowIndex]]);\n\n for (let pivot = 0; pivot < n; pivot++) {\n let maxRow = pivot;\n let maxValue = Math.abs(augmented[pivot][pivot]);\n\n for (let row = pivot + 1; row < n; row++) {\n const current = Math.abs(augmented[row][pivot]);\n if (current > maxValue) {\n maxValue = current;\n maxRow = row;\n }\n }\n\n if (maxValue === 0) {\n throw new Error(\"Linear system is singular\");\n }\n\n if (maxRow !== pivot) {\n [augmented[pivot], augmented[maxRow]] = [augmented[maxRow], augmented[pivot]];\n }\n\n const pivotValue = augmented[pivot][pivot];\n for (let col = pivot; col <= n; col++) {\n augmented[pivot][col] /= pivotValue;\n }\n\n for (let row = 0; row < n; row++) {\n if (row === pivot) continue;\n const factor = augmented[row][pivot];\n for (let col = pivot; col <= n; col++) {\n augmented[row][col] -= factor * augmented[pivot][col];\n }\n }\n }\n\n return augmented.map((row) => row[n]);\n}\n\nfunction lupDecomposition(input) {\n const matrix = asMatrixData(input).map((row) => [...row]);\n validateSquareMatrix(matrix);\n\n const n = matrix.length;\n const permutation = Array.from({ length: n }, (_, index) => index);\n\n for (let pivot = 0; pivot < n; pivot++) {\n let maxRow = pivot;\n let maxValue = Math.abs(matrix[pivot][pivot]);\n\n for (let row = pivot + 1; row < n; row++) {\n const current = Math.abs(matrix[row][pivot]);\n if (current > maxValue) {\n maxValue = current;\n maxRow = row;\n }\n }\n\n if (maxValue === 0) {\n throw new Error(\"Matrix is singular\");\n }\n\n if (maxRow !== pivot) {\n [matrix[pivot], matrix[maxRow]] = [matrix[maxRow], matrix[pivot]];\n [permutation[pivot], permutation[maxRow]] = [permutation[maxRow], permutation[pivot]];\n }\n\n for (let row = pivot + 1; row < n; row++) {\n matrix[row][pivot] /= matrix[pivot][pivot];\n for (let col = pivot + 1; col < n; col++) {\n matrix[row][col] -= matrix[row][pivot] * matrix[pivot][col];\n }\n }\n }\n\n const L = matrix.map((row, rowIndex) =>\n row.map((value, colIndex) => {\n if (rowIndex === colIndex) return 1;\n if (rowIndex > colIndex) return value;\n return 0;\n })\n );\n\n const U = matrix.map((row, rowIndex) =>\n row.map((value, colIndex) => (rowIndex <= colIndex ? value : 0))\n );\n\n return {\n L: wrapDenseMatrix(L),\n U: wrapDenseMatrix(U),\n p: permutation\n };\n}\n\nfunction linearSolve(aInput, bInput) {\n const { L, U, p } = lupDecomposition(aInput);\n const a = asMatrixData(aInput);\n const bData = asMatrixData(bInput);\n const bVector = Array.isArray(bData[0]) ? bData.map((row) => row[0]) : bData;\n\n if (a.length !== bVector.length) {\n throw new Error(\"Right-hand side dimension mismatch\");\n }\n\n const permutedB = p.map((index) => bVector[index]);\n const y = new Array(a.length).fill(0);\n\n for (let row = 0; row < a.length; row++) {\n y[row] = permutedB[row];\n for (let col = 0; col < row; col++) {\n y[row] -= L.data[row][col] * y[col];\n }\n }\n\n const x = new Array(a.length).fill(0);\n for (let row = a.length - 1; row >= 0; row--) {\n x[row] = y[row];\n for (let col = row + 1; col < a.length; col++) {\n x[row] -= U.data[row][col] * x[col];\n }\n x[row] /= U.data[row][row];\n }\n\n return wrapDenseMatrix(x.map((value) => [value]));\n}\n\nfunction solveLyapunov(aInput, qInput) {\n const A = asMatrixData(aInput).map((row) => [...row]);\n const Q = asMatrixData(qInput).map((row) => [...row]);\n validateSquareMatrix(A);\n validateSquareMatrix(Q);\n\n const n = A.length;\n if (Q.length !== n) {\n throw new Error(\"A and Q must have the same dimensions\");\n }\n\n const coefficients = [];\n const constants = [];\n\n for (let row = 0; row < n; row++) {\n for (let col = 0; col < n; col++) {\n const equation = new Array(n * n).fill(0);\n\n for (let k = 0; k < n; k++) {\n equation[k * n + col] += A[row][k];\n equation[row * n + k] += A[col][k];\n }\n\n coefficients.push(equation);\n constants.push(-Q[row][col]);\n }\n }\n\n const solution = solveLinearSystem(coefficients, constants);\n const X = [];\n\n for (let row = 0; row < n; row++) {\n X.push(solution.slice(row * n, (row + 1) * n));\n }\n\n return wrapDenseMatrix(X);\n}\n\nfunction evaluatePolynomial(coefficients, x) {\n return coefficients.reduce((sum, coefficient, index) => sum + (coefficient * (x ** index)), 0);\n}\n\nfunction syntheticDivide(coefficients, root) {\n const descending = [...coefficients].reverse();\n const quotient = [descending[0]];\n\n for (let index = 1; index < descending.length - 1; index++) {\n quotient.push(descending[index] + (quotient[index - 1] * root));\n }\n\n const remainder = descending[descending.length - 1] + (quotient[quotient.length - 1] * root);\n return {\n quotient: quotient.reverse(),\n remainder\n };\n}\n\nfunction solveQuadratic(coefficients) {\n const [c, b, a] = coefficients;\n const discriminant = (b ** 2) - (4 * a * c);\n if (discriminant < 0) {\n throw new Error(\"Only real roots are supported\");\n }\n\n const sqrtDisc = Math.sqrt(discriminant);\n return [\n (-b + sqrtDisc) / (2 * a),\n (-b - sqrtDisc) / (2 * a)\n ];\n}\n\nfunction polynomialRoots(...coefficients) {\n while (coefficients.length > 1 && coefficients[coefficients.length - 1] === 0) {\n coefficients.pop();\n }\n\n const degree = coefficients.length - 1;\n if (degree < 1) {\n throw new Error(\"polynomialRoot() expects at least a linear polynomial\");\n }\n\n if (degree === 1) {\n const [b, a] = coefficients;\n return [-b / a];\n }\n\n if (degree === 2) {\n return solveQuadratic(coefficients);\n }\n\n if (degree === 3) {\n const constant = coefficients[0];\n const leading = coefficients[3];\n const candidates = [];\n const limit = Math.abs(constant);\n\n for (let divisor = 1; divisor <= Math.max(1, limit); divisor++) {\n if (limit % divisor === 0) {\n candidates.push(divisor, -divisor);\n }\n }\n\n for (const candidate of candidates) {\n if (evaluatePolynomial(coefficients, candidate) === 0) {\n const reduced = syntheticDivide(coefficients, candidate);\n const remainingRoots = solveQuadratic(reduced.quotient);\n return [candidate, ...remainingRoots];\n }\n }\n }\n\n throw new Error(\"polynomialRoot() currently supports degree up to 3\");\n}\n\nfunction dotProduct(a, b) {\n return a.reduce((sum, value, index) => sum + (value * b[index]), 0);\n}\n\nfunction vectorNorm(vector) {\n return Math.sqrt(dotProduct(vector, vector));\n}\n\nfunction scaleVector(vector, scalar) {\n return vector.map((value) => value * scalar);\n}\n\nfunction subtractVectors(a, b) {\n return a.map((value, index) => value - b[index]);\n}\n\nfunction transpose(matrix) {\n return matrix[0].map((_, colIndex) => matrix.map((row) => row[colIndex]));\n}\n\nfunction qrDecomposition(input) {\n const A = asMatrixData(input).map((row) => [...row]);\n if (!A.length || !A.every((row) => row.length === A[0].length)) {\n throw new Error(\"qr() expects a rectangular matrix\");\n }\n\n const rowCount = A.length;\n const colCount = A[0].length;\n const columns = transpose(A);\n const qColumns = [];\n\n for (let col = 0; col < colCount; col++) {\n let vector = [...columns[col]];\n\n for (let existing = 0; existing < qColumns.length; existing++) {\n const projection = dotProduct(qColumns[existing], columns[col]);\n vector = subtractVectors(vector, scaleVector(qColumns[existing], projection));\n }\n\n const norm = vectorNorm(vector);\n if (norm === 0) {\n throw new Error(\"qr() requires linearly independent columns\");\n }\n\n qColumns.push(scaleVector(vector, 1 / norm));\n }\n\n for (let basisIndex = 0; qColumns.length < rowCount && basisIndex < rowCount; basisIndex++) {\n let candidate = Array.from({ length: rowCount }, (_, index) => (index === basisIndex ? 1 : 0));\n\n for (const column of qColumns) {\n const projection = dotProduct(column, candidate);\n candidate = subtractVectors(candidate, scaleVector(column, projection));\n }\n\n const norm = vectorNorm(candidate);\n if (norm > 1e-10) {\n qColumns.push(scaleVector(candidate, 1 / norm));\n }\n }\n\n const Q = Array.from({ length: rowCount }, (_, rowIndex) =>\n qColumns.map((column) => column[rowIndex])\n );\n\n const fullR = Array.from({ length: rowCount }, () => Array(colCount).fill(0));\n for (let row = 0; row < rowCount; row++) {\n for (let col = 0; col < colCount; col++) {\n fullR[row][col] = dotProduct(qColumns[row], columns[col]);\n }\n }\n\n return {\n Q: wrapDenseMatrix(Q),\n R: wrapDenseMatrix(fullR)\n };\n}\n\nfunction splitTerms(expression) {\n const normalized = expression.replace(/\\s+/g, \"\");\n if (!normalized) {\n return [];\n }\n\n return normalized\n .replace(/-/g, \"+-\")\n .split(\"+\")\n .filter(Boolean);\n}\n\nfunction parsePolynomial(expression, variable) {\n const terms = splitTerms(expression);\n const coefficients = new Map();\n\n for (const term of terms) {\n if (term.includes(variable)) {\n const [rawCoeff, rawPower] = term.split(variable);\n let coefficient;\n\n if (rawCoeff === \"\" || rawCoeff === \"+\") coefficient = 1;\n else if (rawCoeff === \"-\") coefficient = -1;\n else {\n const cleaned = rawCoeff.endsWith(\"*\") ? rawCoeff.slice(0, -1) : rawCoeff;\n coefficient = Number(cleaned);\n }\n\n if (!Number.isFinite(coefficient)) {\n throw new Error(\"Unsupported algebra term\");\n }\n\n let power = 1;\n if (rawPower) {\n if (!rawPower.startsWith(\"^\")) {\n throw new Error(\"Unsupported algebra term\");\n }\n\n power = Number(rawPower.slice(1));\n }\n\n if (!Number.isInteger(power) || power < 0) {\n throw new Error(\"Only non-negative integer powers are supported\");\n }\n\n coefficients.set(power, (coefficients.get(power) || 0) + coefficient);\n } else {\n const constant = Number(term);\n if (!Number.isFinite(constant)) {\n throw new Error(\"Unsupported algebra term\");\n }\n coefficients.set(0, (coefficients.get(0) || 0) + constant);\n }\n }\n\n return coefficients;\n}\n\nfunction formatPolynomial(coefficients, variable) {\n const ordered = [...coefficients.entries()]\n .filter(([, coefficient]) => coefficient !== 0)\n .sort((a, b) => b[0] - a[0]);\n\n if (!ordered.length) {\n return \"0\";\n }\n\n return ordered.map(([power, coefficient], index) => {\n const negative = coefficient < 0;\n const absCoeff = Math.abs(coefficient);\n let body;\n\n if (power === 0) {\n body = `${absCoeff}`;\n } else if (power === 1) {\n body = absCoeff === 1 ? variable : `${absCoeff} * ${variable}`;\n } else {\n body = absCoeff === 1\n ? `${variable}^${power}`\n : `${absCoeff} * ${variable}^${power}`;\n }\n\n if (index === 0) {\n return negative ? `-${body}` : body;\n }\n\n return negative ? `- ${body}` : `+ ${body}`;\n }).join(\" \");\n}\n\nfunction simplifyExpression(expression) {\n const compact = expression.replace(/\\s+/g, \"\");\n const variableMatch = compact.match(/[a-zA-Z]+/);\n const variable = variableMatch?.[0] || \"x\";\n const coefficients = parsePolynomial(expression, variable);\n return formatPolynomial(coefficients, variable);\n}\n\nfunction derivativeExpression(expression, variable) {\n const coefficients = parsePolynomial(expression, variable);\n const derived = new Map();\n\n for (const [power, coefficient] of coefficients.entries()) {\n if (power === 0) continue;\n derived.set(power - 1, (derived.get(power - 1) || 0) + (coefficient * power));\n }\n\n return formatPolynomial(derived, variable);\n}\n\nexport const internalFunctions = {\n max: (...args) => {\n if (!args.length) throw new Error(\"max() requires arguments\");\n return Math.max(...args);\n },\n\n min: (...args) => {\n if (!args.length) throw new Error(\"min() requires arguments\");\n return Math.min(...args);\n },\n\n abs: (x) => Math.abs(x),\n\n round: (x) => Math.round(x),\n\n floor: (x) => Math.floor(x),\n\n ceil: (x) => Math.ceil(x),\n\n sqrt: (x) => {\n if (x < 0) throw new Error(\"sqrt() domain error\");\n return Math.sqrt(x);\n },\n\n pow: (a, b) => a ** b,\n det: (matrix) => determinant(matrix),\n polynomialRoot: (...coefficients) => polynomialRoots(...coefficients),\n lsolve: (a, b) => linearSolve(a, b),\n lup: (matrix) => lupDecomposition(matrix),\n lyap: (a, q) => solveLyapunov(a, q),\n qr: (matrix) => qrDecomposition(matrix),\n simplify: (expression) => {\n if (typeof expression !== \"string\") {\n throw new Error(\"simplify() expects an expression string\");\n }\n return simplifyExpression(expression);\n },\n derivative: (expression, variable = \"x\") => {\n if (typeof expression !== \"string\" || typeof variable !== \"string\") {\n throw new Error(\"derivative() expects expression and variable strings\");\n }\n return derivativeExpression(expression, variable);\n },\n\n /* ================= TRIGONOMETRY ================= */\n\n sin: (x) => Math.sin(x),\n cos: (x) => Math.cos(x),\n tan: (x) => Math.tan(x),\n\n asin: (x) => Math.asin(x),\n acos: (x) => Math.acos(x),\n atan: (x) => Math.atan(x),\n\n /* ================= LOG / EXP ================= */\n\n log: (x) => {\n if (x <= 0) throw new Error(\"log() domain error\");\n return Math.log(x);\n },\n\n log10: (x) => {\n if (x <= 0) throw new Error(\"log10() domain error\");\n return Math.log10(x);\n },\n\n exp: (x) => Math.exp(x),\n\n /* ================= RANDOM ================= */\n\n random: () => Math.random(),\n\n /* ================= BOOLEAN / LOGIC ================= */\n\n and: (a, b) => Boolean(a && b),\n\n or: (a, b) => Boolean(a || b),\n\n not: (a) => !a,\n \"!\": (a) => !a,\n\n /* ================= COMPARISON ================= */\n\n eq: (a, b) => a === b,\n\n neq: (a, b) => a !== b,\n \"notEqual\": (a, b) => a !== b,\n\n gt: (a, b) => a > b,\n \"greaterThan\": (a, b) => a > b,\n\n lt: (a, b) => a < b,\n \"lessThan\": (a, b) => a < b,\n\n gte: (a, b) => a >= b,\n \"greaterThanOrEqual\": (a, b) => a >= b,\n\n lte: (a, b) => a <= b,\n \"lessThanOrEqual\": (a, b) => a <= b,\n\n /* ================= UTILITY ================= */\n\n clamp: (x, min, max) => {\n if (min > max) throw new Error(\"clamp(): min > max\");\n return Math.min(Math.max(x, min), max);\n },\n\n if: (condition, a, b) => (condition ? a : b),\n\n /* ================= TYPE ================= */\n\n typeof: (x) => typeof x,\n\n /* ================= STRING ================= */\n\n length: (x) => {\n if (typeof x === \"string\" || Array.isArray(x)) {\n return x.length;\n }\n throw new Error(\"length() expects string or array\");\n }\n};\n","export function buildAST(tokens) {\n let current = 0;\n\n const peek = () => tokens[current];\n const consume = () => tokens[current++];\n\n const match = (type, value) => {\n const t = peek();\n if (!t) return false;\n\n if (t.type !== type) return false;\n\n if (value !== undefined && t.value !== value) return false;\n\n current++;\n return true;\n };\n\n const parseSliceOrIndex = () => {\n let start = null;\n\n if (!(peek()?.type === \"Colon\" || peek()?.type === \"Comma\" || peek()?.type === \"ArrayEnd\")) {\n start = parseExpression();\n }\n\n if (match(\"Colon\")) {\n let end = null;\n\n if (!(peek()?.type === \"Comma\" || peek()?.type === \"ArrayEnd\")) {\n end = parseExpression();\n }\n\n return {\n type: \"SliceExpression\",\n start,\n end\n };\n }\n\n return start;\n };\n\n /* ================= PRIMARY ================= */\n function parsePrimary() {\n const token = consume();\n if (!token) throw new Error(\"Unexpected end of input\");\n\n switch (token.type) {\n case \"Number\":\n case \"BigInt\":\n case \"Boolean\":\n case \"String\":\n return { type: \"Literal\", value: token.value };\n\n case \"ImaginaryLiteral\":\n return { type: \"ImaginaryLiteral\", value: token.value };\n\n case \"NumberWithUnit\":\n return {\n type: \"UnitLiteral\",\n value: token.value,\n unit: token.unit\n };\n\n case \"Identifier\":\n return { type: \"Identifier\", name: token.name };\n \n case \"Function\":\n return {\n type: \"Identifier\",\n name: token.name\n };\n\n case \"Parenthesis\":\n if (token.value === \"(\") {\n const expr = parseExpression();\n\n if (!match(\"Parenthesis\", \")\")) {\n throw new Error(`Expected ')'`);\n }\n\n return expr;\n }\n \n case \"ArrayStart\": {\n const rows = [];\n let currentRow = [];\n\n if (!match(\"ArrayEnd\")) {\n while (true) {\n currentRow.push(parseExpression());\n\n if (match(\"Comma\")) {\n continue;\n }\n\n if (match(\"Semicolon\")) {\n rows.push(currentRow);\n currentRow = [];\n continue;\n }\n\n if (match(\"ArrayEnd\")) {\n rows.push(currentRow);\n break;\n }\n\n throw new Error(`Expected ',', ';', or ']' at ${current}`);\n }\n }\n\n if (!rows.length) {\n return { type: \"ArrayExpression\", elements: [] };\n }\n\n if (rows.length === 1) {\n return { type: \"ArrayExpression\", elements: rows[0] };\n }\n\n return {\n type: \"ArrayExpression\",\n elements: rows.map((elements) => ({\n type: \"ArrayExpression\",\n elements\n }))\n };\n }\n\n case \"BlockStart\": {\n const properties = [];\n\n if (!match(\"BlockEnd\")) {\n do {\n const keyToken = consume();\n\n if (\n keyToken.type !== \"Identifier\" &&\n keyToken.type !== \"String\"\n ) {\n throw new Error(\"Invalid object key\");\n }\n\n if (!match(\"Colon\")) {\n throw new Error(\"Expected ':' after key\");\n }\n\n const value = parseExpression();\n\n properties.push({\n key: keyToken.value,\n value\n });\n\n } while (match(\"Comma\"));\n\n if (!match(\"BlockEnd\")) {\n throw new Error(`Expected '}' at ${current}`);\n }\n }\n\n return { type: \"ObjectExpression\", properties };\n }\n }\n\n throw new Error(`Unexpected token: ${JSON.stringify(token)}`);\n }\n\n /* ================= MEMBER ================= */\n function parseMember() {\n let object = parsePrimary();\n\n while (true) {\n if (match(\"ArrayStart\")) {\n const selectors = [];\n\n if (!match(\"ArrayEnd\")) {\n do {\n selectors.push(parseSliceOrIndex());\n } while (match(\"Comma\"));\n\n if (!match(\"ArrayEnd\")) {\n throw new Error(`Expected ']' at ${current}`);\n }\n }\n\n object = {\n type: \"IndexExpression\",\n object,\n selectors\n };\n continue;\n }\n\n if (match(\"Dot\")) {\n const property = consume();\n\n if (property.type !== \"Identifier\") {\n throw new Error(\"Expected property after '.'\");\n }\n\n object = {\n type: \"MemberExpression\",\n object,\n property: { type: \"Identifier\", name: property.value },\n optional: false\n };\n continue;\n }\n\n if (match(\"Operator\", \"?.\")) {\n const property = consume();\n\n object = {\n type: \"MemberExpression\",\n object,\n property: { type: \"Identifier\", name: property.value },\n optional: true\n };\n continue;\n }\n\n break;\n }\n\n return object;\n }\n\n /* ================= CALL ================= */\n function parseCallChain() {\n let expr = parseMember();\n\n while (peek()?.type === \"Parenthesis\" && peek()?.value === \"(\") {\n consume(); // '('\n\n const args = [];\n\n if (!(peek()?.type === \"Parenthesis\" && peek()?.value === \")\")) {\n do {\n args.push(parseExpression());\n } while (match(\"Comma\"));\n }\n\n if (!match(\"Parenthesis\", \")\")) {\n throw new Error(`Expected ')' at ${current}`);\n }\n\n expr = {\n type: \"CallExpression\",\n callee: expr,\n arguments: args\n };\n }\n\n return expr;\n }\n\n /* ================= UNARY ================= */\n function parseUnary() {\n if (match(\"UnaryOperator\")) {\n const operator = tokens[current - 1].value;\n\n return {\n type: \"UnaryExpression\",\n operator,\n argument: parseUnary()\n };\n }\n\n return parseCallChain();\n }\n\n /* ================= POWER ================= */\n function parsePower() {\n let left = parseUnary();\n\n if (match(\"Operator\", \"^\")) {\n const right = parsePower();\n return {\n type: \"BinaryExpression\",\n operator: \"^\",\n left,\n right\n };\n }\n\n return left;\n }\n\n /* ================= MULT ================= */\n function parseMultiplication() {\n let left = parsePower();\n\n while (\n match(\"Operator\", \"*\") ||\n match(\"Operator\", \"/\") ||\n match(\"Operator\", \"%\")\n ) {\n const operator = tokens[current - 1].value;\n const right = parsePower();\n\n left = {\n type: \"BinaryExpression\",\n operator,\n left,\n right\n };\n }\n\n return left;\n }\n\n /* ================= ADD ================= */\n function parseAddition() {\n let left = parseMultiplication();\n\n while (match(\"Operator\", \"+\") || match(\"Operator\", \"-\")) {\n const operator = tokens[current - 1].value;\n const right = parseMultiplication();\n\n left = {\n type: \"BinaryExpression\",\n operator,\n left,\n right\n };\n }\n\n return left;\n }\n\n /* ================= UNIT CONVERSION ================= */\n function parseUnitConversion() {\n let left = parseAddition();\n\n const nextKeyword = peek();\n if (nextKeyword?.type === \"Keyword\" && [\"to\", \"in\"].includes(nextKeyword.value)) {\n consume();\n const next = consume();\n\n if (!next || next.type !== \"Unit\") {\n throw new Error(`Expected unit after '${nextKeyword.value}'`);\n }\n\n return {\n type: \"UnitConversion\",\n from: left,\n to: next.value\n };\n }\n\n return left;\n }\n\n /* ================= COMPARISON ================= */\n function parseComparison() {\n let left = parseUnitConversion();\n\n while (\n match(\"Operator\", \">\") ||\n match(\"Operator\", \"<\") ||\n match(\"Operator\", \">=\") ||\n match(\"Operator\", \"<=\") ||\n match(\"Operator\", \"==\")\n ) {\n const operator = tokens[current - 1].value;\n const right = parseUnitConversion();\n\n left = {\n type: \"BinaryExpression\",\n operator,\n left,\n right\n };\n }\n\n return left;\n }\n\n /* ================= LOGICAL ================= */\n function parseLogical() {\n let left = parseComparison();\n\n while (\n match(\"Operator\", \"&&\") ||\n match(\"Operator\", \"||\")\n ) {\n const operator = tokens[current - 1].value;\n const right = parseComparison();\n\n left = {\n type: \"LogicalExpression\",\n operator,\n left,\n right\n };\n }\n\n return left;\n }\n\n /* ================= NULLISH ================= */\n function parseNullish() {\n let left = parseLogical();\n\n while (match(\"Operator\", \"??\")) {\n const right = parseLogical();\n\n left = {\n type: \"LogicalExpression\",\n operator: \"??\",\n left,\n right\n };\n }\n\n return left;\n }\n\n /* ================= TERNARY ================= */\n function parseTernary() {\n let test = parseNullish();\n\n if (match(\"Ternary\", \"?\")) {\n const consequent = parseExpression();\n\n if (!match(\"Ternary\", \":\")) {\n throw new Error(\"Expected ':' in ternary\");\n }\n\n const alternate = parseExpression();\n\n return {\n type: \"ConditionalExpression\",\n test,\n consequent,\n alternate\n };\n }\n\n return test;\n }\n\n /* ================= PIPELINE ================= */\n function parsePipeline() {\n let left = parseTernary();\n\n while (match(\"Operator\", \"|>\")) {\n const right = parseTernary();\n\n left = {\n type: \"PipelineExpression\",\n left,\n right\n };\n }\n\n return left;\n }\n\n /* ================= ASSIGNMENT ================= */\n function parseAssignment() {\n let left = parsePipeline();\n\n if (\n match(\"Operator\", \"=\") ||\n match(\"Operator\", \"+=\") ||\n match(\"Operator\", \"-=\") ||\n match(\"Operator\", \"*=\") ||\n match(\"Operator\", \"/=\")\n ) {\n const operator = tokens[current - 1].value;\n\n if (left.type === \"CallExpression\") {\n const isFunctionTarget =\n left.callee?.type === \"Identifier\" &&\n left.arguments.every((arg) => arg.type === \"Identifier\");\n\n if (!isFunctionTarget) {\n throw new Error(\"Invalid function definition\");\n }\n\n const right = parseAssignment();\n\n return {\n type: \"FunctionAssignmentExpression\",\n operator,\n left: {\n type: \"Identifier\",\n name: left.callee.name\n },\n params: left.arguments.map((arg) => arg.name),\n right\n };\n }\n\n if (\n left.type !== \"Identifier\" &&\n left.type !== \"MemberExpression\" &&\n left.type !== \"IndexExpression\"\n ) {\n throw new Error(\"Invalid assignment target\");\n }\n\n const right = parseAssignment();\n\n return {\n type: \"AssignmentExpression\",\n operator,\n left,\n right\n };\n }\n\n return left;\n }\n\n /* ================= ENTRY ================= */\n function parseExpression() {\n return parseAssignment();\n }\n\n const ast = parseExpression();\n\n if (current < tokens.length) {\n throw new Error(\n `Unexpected token at end: ${JSON.stringify(peek())}`\n );\n }\n\n return ast;\n}\n","import { tokenize } from \"../parser/tokenizer.js\";\n// import { infixToPostfix } from \"../parser/infixToPostfix.js\";\nimport { evaluateAST } from \"../parser/evaluator.js\";\nimport { createContext } from \"./context.js\";\nimport { mathOperations } from \"../math/operations.js\";\n\nimport { createUnitsStore } from \"../utils/store.js\";\nimport { globalUnits } from \"../utils/globalUnits.js\";\n\nimport { createVarStore } from \"../variables/store.js\";\nimport { createFunctionRegistry } from \"../function/registry.js\";\nimport { internalFunctions } from \"../function/internal.js\";\nimport { isDenseMatrixWrapper, serializeExprifyValue, wrapDenseMatrix } from \"../utils/matrix.js\";\n\nimport { buildAST } from \"../parser/astBuild.js\";\n\n\n//\n\nconst isComplex = (value) =>\n value && typeof value === \"object\" && \"re\" in value && \"im\" in value;\n\nconst isUnitValue = (value) =>\n value && typeof value === \"object\" && \"value\" in value && \"unit\" in value;\n\nconst isMatrix = (value) =>\n Array.isArray(value) && value.length > 0 && value.every(Array.isArray);\n\nconst formatComplex = (value) => {\n if (!isComplex(value)) return value;\n\n const real = value.re;\n const imaginary = Math.abs(value.im);\n const sign = value.im < 0 ? \"-\" : \"+\";\n\n if (real === 0) {\n if (value.im === 1) return \"i\";\n if (value.im === -1) return \"-i\";\n return `${value.im}i`;\n }\n\n const imagPart = imaginary === 1 ? \"i\" : `${imaginary}i`;\n return `${real} ${sign} ${imagPart}`;\n};\n\nconst formatScalar = (value) => {\n if (typeof value !== \"number\") {\n return String(value);\n }\n\n if (Number.isInteger(value)) {\n return String(value);\n }\n\n return Number(value.toFixed(14)).toString();\n};\n\nconst formatResult = (value) => {\n if (isComplex(value)) {\n return formatComplex(value);\n }\n\n if (isUnitValue(value)) {\n return `${value.value} ${value.unit}`;\n }\n\n if (isDenseMatrixWrapper(value)) {\n return serializeExprifyValue(value);\n }\n\n if (isMatrix(value)) {\n return value.map((row) => row.map(formatScalar).join(\"\\t\")).join(\"\\n\");\n }\n\n if (Array.isArray(value)) {\n return JSON.stringify(value);\n }\n\n if (value && typeof value === \"object\") {\n return serializeExprifyValue(value);\n }\n\n return value;\n};\n\nclass exprify {\n constructor() {\n // Shared state\n this.math = mathOperations;\n this.units = createUnitsStore(globalUnits);\n this.functions = createFunctionRegistry(internalFunctions);\n this.variables = createVarStore();\n this._cache = new Map();\n this.variables.set(\"pi\", Math.PI);\n this.variables.set(\"e\", Math.E);\n this.addFunction(\"parse\", (expression) => {\n if (typeof expression !== \"string\") {\n throw new Error(\"parse() expects an expression string\");\n }\n return expression;\n });\n this.addFunction(\"leafCount\", (value) => {\n const countLeafTokens = (expression) => {\n const strippedKeys = expression.replace(/(^|[{,]\\s*)[a-zA-Z_][a-zA-Z0-9_]*\\s*:/g, \"$1\");\n const matches = strippedKeys.match(/\\d+(\\.\\d+)?(e[+-]?\\d+)?n?|[a-zA-Z_][a-zA-Z0-9_]*/gi);\n return matches ? matches.length : 0;\n };\n\n let ast = value;\n if (typeof value === \"string\") {\n try {\n ast = this.parse(value).ast;\n } catch {\n return countLeafTokens(value);\n }\n }\n\n const countLeaves = (node) => {\n if (!node || typeof node !== \"object\") return 0;\n\n switch (node.type) {\n case \"Literal\":\n case \"ImaginaryLiteral\":\n case \"UnitLiteral\":\n case \"Identifier\":\n return 1;\n default:\n return Object.values(node).reduce((sum, child) => {\n if (Array.isArray(child)) {\n return sum + child.reduce((inner, item) => inner + countLeaves(item), 0);\n }\n\n return sum + countLeaves(child);\n }, 0);\n }\n };\n\n return countLeaves(ast);\n });\n this.addFunction(\"matrix\", (value) => wrapDenseMatrix(value));\n this.addFunction(\"sparse\", (value) => wrapDenseMatrix(value));\n this.addFunction(\"rationalize\", (expression, withDetails = false) => {\n if (typeof expression !== \"string\") {\n throw new Error(\"rationalize() expects an expression string\");\n }\n\n const normalizedExpression = expression\n .replace(/\\s+/g, \"\")\n .replace(/(\\d)([a-zA-Z(])/g, \"$1*$2\")\n .replace(/([a-zA-Z)])(\\d)/g, \"$1*$2\");\n\n const polyKey = (powers) => JSON.stringify(Object.entries(powers).sort(([a], [b]) => a.localeCompare(b)));\n const keyToPowers = (key) => Object.fromEntries(JSON.parse(key));\n const makePoly = (terms = new Map()) => terms;\n const constPoly = (value) => new Map([[polyKey({}), value]]);\n const varPoly = (name) => new Map([[polyKey({ [name]: 1 }), 1]]);\n const cleanPoly = (poly) => new Map([...poly.entries()].filter(([, coeff]) => coeff !== 0));\n const addPoly = (a, b, sign = 1) => {\n const result = new Map(a);\n for (const [key, coeff] of b.entries()) {\n result.set(key, (result.get(key) || 0) + (sign * coeff));\n }\n return cleanPoly(result);\n };\n const multiplyPoly = (a, b) => {\n const result = new Map();\n for (const [keyA, coeffA] of a.entries()) {\n const powersA = keyToPowers(keyA);\n for (const [keyB, coeffB] of b.entries()) {\n const powersB = keyToPowers(keyB);\n const merged = { ...powersA };\n for (const [name, power] of Object.entries(powersB)) {\n merged[name] = (merged[name] || 0) + power;\n }\n const key = polyKey(merged);\n result.set(key, (result.get(key) || 0) + (coeffA * coeffB));\n }\n }\n return cleanPoly(result);\n };\n const powPoly = (poly, exponent) => {\n let result = constPoly(1);\n for (let index = 0; index < exponent; index++) {\n result = multiplyPoly(result, poly);\n }\n return result;\n };\n const rational = (num, den = constPoly(1)) => ({ num, den });\n const addRat = (a, b, sign = 1) => rational(\n addPoly(\n multiplyPoly(a.num, b.den),\n multiplyPoly(b.num, a.den),\n sign\n ),\n multiplyPoly(a.den, b.den)\n );\n const mulRat = (a, b) => rational(multiplyPoly(a.num, b.num), multiplyPoly(a.den, b.den));\n const divRat = (a, b) => rational(multiplyPoly(a.num, b.den), multiplyPoly(a.den, b.num));\n const negRat = (value) => rational(addPoly(new Map(), value.num, -1), value.den);\n const astToRat = (node) => {\n switch (node.type) {\n case \"Literal\":\n return rational(constPoly(node.value));\n case \"Identifier\":\n return rational(varPoly(node.name));\n case \"UnaryExpression\":\n if (node.operator === \"-\") return negRat(astToRat(node.argument));\n throw new Error(\"Unsupported unary operator\");\n case \"BinaryExpression\": {\n const left = astToRat(node.left);\n const right = astToRat(node.right);\n switch (node.operator) {\n case \"+\": return addRat(left, right);\n case \"-\": return addRat(left, right, -1);\n case \"*\": return mulRat(left, right);\n case \"/\": return divRat(left, right);\n case \"^\": {\n if (node.right.type !== \"Literal\" || !Number.isInteger(node.right.value) || node.right.value < 0) {\n throw new Error(\"Unsupported exponent\");\n }\n return rational(\n powPoly(left.num, node.right.value),\n powPoly(left.den, node.right.value)\n );\n }\n default:\n throw new Error(\"Unsupported operator in rationalize()\");\n }\n }\n default:\n throw new Error(\"Unsupported expression in rationalize()\");\n }\n };\n const formatPoly = (poly) => {\n const entries = [...poly.entries()]\n .filter(([, coeff]) => coeff !== 0)\n .sort(([keyA], [keyB]) => {\n const powersA = keyToPowers(keyA);\n const powersB = keyToPowers(keyB);\n const firstVarA = Object.keys(powersA).sort()[0] || \"\";\n const firstVarB = Object.keys(powersB).sort()[0] || \"\";\n\n if (firstVarA !== firstVarB) {\n return firstVarA.localeCompare(firstVarB);\n }\n\n const degreeA = Object.values(powersA).reduce((sum, value) => sum + value, 0);\n const degreeB = Object.values(powersB).reduce((sum, value) => sum + value, 0);\n return degreeB - degreeA;\n });\n\n if (!entries.length) return \"0\";\n\n return entries.map(([key, coeff], index) => {\n const powers = keyToPowers(key);\n const absCoeff = Math.abs(coeff);\n const variablePart = Object.entries(powers)\n .map(([name, power]) => power === 1 ? name : `${name} ^ ${power}`)\n .join(\" * \");\n let body = variablePart;\n\n if (!body) {\n body = `${absCoeff}`;\n } else if (absCoeff !== 1) {\n body = `${absCoeff} * ${body}`;\n }\n\n if (index === 0) {\n return coeff < 0 ? `- ${body}`.replace(\"- \", \"-\") : body;\n }\n\n return coeff < 0 ? `- ${body}` : `+ ${body}`;\n }).join(\" \");\n };\n\n const ast = this.parse(normalizedExpression).ast;\n const result = astToRat(ast);\n const numerator = formatPoly(result.num);\n const denominator = formatPoly(result.den);\n const variableSet = new Set();\n\n for (const poly of [result.num, result.den]) {\n for (const key of poly.keys()) {\n for (const name of Object.keys(keyToPowers(key))) {\n variableSet.add(name);\n }\n }\n }\n\n if (!withDetails) {\n return `(${numerator}) / (${denominator})`;\n }\n\n return {\n numerator,\n denominator,\n coefficients: [],\n variables: [...variableSet].sort(),\n expression: `(${numerator}) / (${denominator})`\n };\n });\n }\n\n setVariable(name, value) {\n this.variables.set(name, value);\n }\n\n getVariable(name) {\n return this.variables.get(name);\n }\n\n addFunction(name, fn) {\n this.functions.register(name, fn);\n }\n\n _createContext() {\n return createContext({\n functions: this.functions,\n variables: this.variables,\n units: this.units,\n evaluate: this.evaluate.bind(this)\n });\n }\n\n tokenize(expr) {\n if (typeof expr !== \"string\") {\n throw new Error(\"Expression must be a string\");\n }\n return tokenize(expr, this._createContext());\n }\n\n parse(expr) {\n const tokens = this.tokenize(expr);\n const ast = buildAST(tokens);\n return { tokens, ast };\n }\n\n evaluate(expr) {\n const { ast } = this.parse(expr);\n return formatResult(evaluateAST(\n ast,\n this._createContext()\n ));\n }\n\n compile(expr) {\n if (this._cache.has(expr)) {\n return this._cache.get(expr);\n }\n\n const { ast } = this.parse(expr);\n\n const compiledFn = (scope = {}) => {\n const baseContext = this._createContext();\n const scopedContext = baseContext.withScope(scope);\n return formatResult(evaluateAST(ast, scopedContext));\n };\n\n this._cache.set(expr, compiledFn);\n return compiledFn;\n }\n\n clearCache() {\n this._cache.clear();\n }\n\n}\n\nexport default exprify;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exprify.js","sources":["../src/parser/tokenizer.js","../src/utils/matrix.js","../src/math/fraction.js","../src/utils/decimal.js","../src/math/bignumber.js","../src/parser/evaluator.js","../src/core/context.js","../src/math/operations.js","../src/utils/store.js","../src/utils/globalUnits.js","../src/variables/store.js","../src/function/registry.js","../src/function/internal.js","../src/parser/astBuild.js","../src/core/exprify.js"],"sourcesContent":["/** @param {string | any[]} expr */\nexport function tokenize(expr, context = {}) {\n const tokens = [];\n let current = '';\n let quote = '';\n\n const operators = ['+', '-', '*', '/', '%', '^', '=', '>', '<', '!', '&', '|'];\n // Two-char operators checked before single-char to avoid ambiguity (e.g., == vs =)\n const multiOps = [\n '==',\n '>=',\n '<=',\n '&&',\n '||',\n '+=',\n '-=',\n '*=',\n '/=',\n '%=',\n '?.',\n '??',\n '|>',\n '->',\n ];\n\n const parentheses = '()';\n const comma = ',';\n const semicolon = ';';\n const keywords = ['to', 'in'];\n\n const units = context.units?.getAllUnitsFlat?.() || [];\n const isIdentifier = (/** @type {string} */ s) => /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s);\n\n /**\n * @param {any} str\n * @param {number} charIndex\n */\n function getContext(str, charIndex) {\n const words = str.match(/[a-z0-9]+/gi) || [];\n\n // 2. Identify the current character and the one immediately before it\n const currentChar = str[charIndex] || null;\n const prevChar = charIndex > 0 ? str[charIndex - 1] : null;\n\n // 3. Find the word that contains the current charIndex\n let start = charIndex;\n\n while (start > 0 && /[a-z0-9]/i.test(str[start - 1])) {\n start--;\n }\n\n let end = charIndex;\n\n while (end < str.length && /[a-z0-9]/i.test(str[end])) {\n end++;\n }\n\n const currentWord = str.substring(start, end);\n\n // 4. Find the word that appears before the currentWord in the sequence\n const currentWordIdx = words.indexOf(currentWord);\n const prevWord = currentWordIdx > 0 ? words[currentWordIdx - 1] : null;\n\n // 5. Find the word that appears after the currentWord\n const nextWord =\n currentWordIdx !== -1 && currentWordIdx < words.length - 1 ? words[currentWordIdx + 1] : null;\n\n return {\n prevWord: prevWord,\n prevChar: prevChar,\n currentWord: currentWord,\n currentChar: currentChar,\n nextWord: nextWord,\n };\n }\n\n const isUnaryContext = (\n /** @type {{ type: string; value: any; pos: number; } | { type: string; value: string; pos?: undefined; } | { type: string; value?: undefined; pos?: undefined; } | { type: string; pos: number; value?: undefined; }} */ prev\n ) =>\n !prev ||\n prev.type === 'Operator' ||\n prev.type === 'UnaryOperator' ||\n (prev.type === 'Parenthesis' && prev.value !== ')') ||\n prev.type === 'ArrayStart' ||\n prev.type === 'Semicolon' ||\n prev.type === 'Comma' ||\n prev.type === 'Ternary';\n\n const flushCurrent = (/** @type {string | null} */ nextChar, /** @type {number} */ index) => {\n if (!current) {\n return;\n }\n\n // BOOLEAN\n if (/^(true|false)$/i.test(current)) {\n tokens.push({ type: 'Boolean', value: current.toLowerCase() === 'true' });\n current = '';\n return;\n }\n\n // KEYWORD\n if (keywords.includes(current)) {\n tokens.push({ type: 'Keyword', value: current, pos: index });\n current = '';\n return;\n }\n\n // BIGINT\n if (/^\\d+n$/.test(current)) {\n tokens.push({ type: 'BigInt', value: BigInt(current.slice(0, -1)), pos: index });\n current = '';\n return;\n }\n\n // HEX\n if (/^0x[0-9a-fA-F]+$/.test(current)) {\n tokens.push({ type: 'Number', value: parseInt(current, 16), pos: index });\n current = '';\n return;\n }\n\n // BINARY\n if (/^0b[01]+$/.test(current)) {\n tokens.push({ type: 'Number', value: parseInt(current, 2), pos: index });\n current = '';\n return;\n }\n\n // NUMBER (including scientific)\n if (/^[+-]?(\\d+(\\.\\d+)?|\\.\\d+)(e[+-]?\\d+)?$/i.test(current)) {\n tokens.push({ type: 'Number', value: parseFloat(current), pos: index });\n current = '';\n return;\n }\n\n // IMAGINARY NUMBER\n if (/^[+-]?(\\d+(\\.\\d+)?|\\.\\d+)(e[+-]?\\d+)?i$/i.test(current)) {\n tokens.push({\n type: 'ImaginaryLiteral',\n value: parseFloat(current.slice(0, -1)),\n pos: index,\n });\n current = '';\n return;\n }\n\n // IMAGINARY UNIT\n if (/^[+-]?i$/i.test(current)) {\n const sign = current[0] === '-' ? -1 : 1;\n tokens.push({\n type: 'ImaginaryLiteral',\n value: sign,\n pos: index,\n });\n current = '';\n return;\n }\n\n // NUMBER + UNIT\n const numUnit = current.match(/^([+-]?\\d+(\\.\\d+)?)([a-zA-Z]+)$/);\n if (numUnit) {\n const value = parseFloat(numUnit[1]);\n const unit = numUnit[3];\n\n tokens.push({\n type: units.includes(unit) ? 'NumberWithUnit' : 'UnknownUnit',\n value,\n unit,\n pos: index,\n });\n\n current = '';\n return;\n }\n\n // UNIT\n if (units.includes(current)) {\n const { prevWord } = getContext(expr, index);\n if (nextChar !== '(') {\n if (prevWord) {\n if (!isNaN(parseFloat(prevWord)) || prevWord === 'to' || prevWord === 'in') {\n // console.log(\"Context for unit detection:\", {current, prevWord, nextChar});\n\n tokens.push({ type: 'Unit', value: current, pos: index });\n current = '';\n return;\n }\n }\n }\n }\n\n // IDENTIFIER\n if (isIdentifier(current)) {\n if (nextChar === '(') {\n tokens.push({\n type: 'Function',\n name: current,\n pos: index,\n });\n } else {\n tokens.push({\n type: 'Identifier',\n name: current,\n pos: index,\n });\n }\n\n current = '';\n return;\n }\n\n throw new Error(`Invalid token \"${current}\" at index ${index}`);\n };\n\n for (let i = 0; i < expr.length; i++) {\n const char = expr[i];\n const next = expr[i + 1];\n\n // comments\n if (char === '/' && next === '/') {\n while (i < expr.length && expr[i] !== '\\n') {\n i++;\n }\n continue;\n }\n\n if (char === '/' && next === '*') {\n i += 2;\n while (i < expr.length && !(expr[i] === '*' && expr[i + 1] === '/')) {\n i++;\n }\n i++;\n continue;\n }\n\n // string\n if (`\"'`.includes(char)) {\n if (!quote) {\n quote = char;\n current += char;\n } else if (quote === char) {\n current += char;\n tokens.push({\n type: 'String',\n value: current.slice(1, -1),\n pos: i,\n });\n current = '';\n quote = '';\n } else {\n current += char;\n }\n continue;\n }\n\n if (quote) {\n if (char === '\\\\') {\n current += char + expr[++i];\n } else {\n current += char;\n }\n continue;\n }\n\n // multi operators\n const twoChar = char + next;\n if (multiOps.includes(twoChar)) {\n flushCurrent(char, i);\n tokens.push({ type: 'Operator', value: twoChar, pos: i });\n i++;\n continue;\n }\n\n if (char === '?') {\n tokens.push({ type: 'Ternary', value: '?' });\n continue;\n }\n\n // Colon after '?' is ternary separator; otherwise standalone (range, object key)\n if (char === ':') {\n flushCurrent(char, i);\n const prev = tokens[tokens.length - 1];\n\n if (prev && prev.type === 'Ternary') {\n tokens.push({ type: 'Ternary', value: ':' });\n } else {\n tokens.push({ type: 'Colon' });\n }\n continue;\n }\n\n // Three dots form the spread operator (...)\n if (char === '.' && next === '.' && expr[i + 2] === '.') {\n flushCurrent(char, i);\n tokens.push({ type: 'Spread', pos: i });\n i += 2;\n continue;\n }\n\n // Dot between digits is a decimal separator, not property access\n if (char === '.' && /\\d/.test(current) && /\\d/.test(next)) {\n current += char;\n continue;\n }\n\n if (char === '.') {\n flushCurrent(char, i);\n tokens.push({ type: 'Dot', pos: i });\n continue;\n }\n\n // operators\n if (operators.includes(char)) {\n flushCurrent(char, i);\n\n const prev = tokens[tokens.length - 1];\n if ((char === '-' || char === '!') && isUnaryContext(prev)) {\n tokens.push({ type: 'UnaryOperator', value: char, pos: i });\n } else {\n tokens.push({ type: 'Operator', value: char, pos: i });\n }\n continue;\n }\n\n // parenthesis\n if (parentheses.includes(char)) {\n flushCurrent(char, i);\n tokens.push({ type: 'Parenthesis', value: char, pos: i });\n continue;\n }\n\n // array\n if (char === '[') {\n flushCurrent(char, i);\n tokens.push({ type: 'ArrayStart', pos: i });\n continue;\n }\n\n if (char === ']') {\n flushCurrent(char, i);\n tokens.push({ type: 'ArrayEnd', pos: i });\n continue;\n }\n\n // OBJECT START\n if (char === '{') {\n flushCurrent(char, i);\n tokens.push({ type: 'BlockStart', pos: i });\n continue;\n }\n\n // OBJECT END\n if (char === '}') {\n flushCurrent(char, i);\n tokens.push({ type: 'BlockEnd', pos: i });\n continue;\n }\n\n // comma\n if (char === comma) {\n flushCurrent(char, i);\n tokens.push({ type: 'Comma', pos: i });\n continue;\n }\n\n // semicolon\n if (char === semicolon) {\n flushCurrent(char, i);\n tokens.push({ type: 'Semicolon', pos: i });\n continue;\n }\n\n // space\n if (char === ' ') {\n flushCurrent(next, i);\n continue;\n }\n\n // build token\n current += char;\n\n if (i === expr.length - 1) {\n flushCurrent(null, i);\n }\n }\n\n if (quote) {\n throw new Error('Unclosed string literal');\n }\n\n // merge number + unit\n const merged = [];\n for (let i = 0; i < tokens.length; i++) {\n const t = tokens[i];\n const next = tokens[i + 1];\n\n if (t?.type === 'Number' && next?.type === 'Unit') {\n merged.push({\n type: 'NumberWithUnit',\n value: t.value,\n unit: next.value,\n pos: t.pos,\n });\n i++;\n continue;\n }\n\n merged.push(t);\n }\n\n // Insert implicit * between tokens where multiplication is implied (e.g., \"2x\" -> \"2*x\", \")(a)\" -> \")*(a)\")\n const final = [];\n for (let i = 0; i < merged.length; i++) {\n const a = merged[i];\n const b = merged[i + 1];\n\n final.push(a);\n\n if (\n a &&\n b &&\n (['Number', 'Identifier'].includes(a.type) ||\n (a.type === 'Parenthesis' && a.value === ')') ||\n a.type === 'ArrayEnd') &&\n (['Identifier', 'Function'].includes(b.type) || (b.type === 'Parenthesis' && b.value === '('))\n ) {\n final.push({ type: 'Operator', value: '*', implicit: true });\n }\n }\n\n return final;\n}\n","export const isDenseMatrixWrapper = (/** @type {any} */ value) =>\n value &&\n typeof value === 'object' &&\n value.exprify === 'DenseMatrix' &&\n 'data' in value &&\n 'size' in value;\n\nexport const cloneMatrixData = (/** @type {any[]} */ value) => {\n if (Array.isArray(value)) {\n return value.map(cloneMatrixData);\n }\n\n return value;\n};\n\nexport const getMatrixSize = (/** @type {any[]} */ data) => {\n if (Array.isArray(data) && data.every(Array.isArray)) {\n return [data.length, data[0]?.length || 0];\n }\n\n if (Array.isArray(data)) {\n return [data.length];\n }\n\n throw new Error('Matrix data must be an array');\n};\n\nexport const wrapDenseMatrix = (/** @type {any[][]} */ data) => ({\n exprify: 'DenseMatrix',\n data: cloneMatrixData(data),\n size: getMatrixSize(data),\n});\n\nexport const unwrapDenseMatrix = (/** @type {any} */ value) =>\n isDenseMatrixWrapper(value) ? cloneMatrixData(value.data) : value;\n\nexport const serializeExprifyValue = (/** @type {any} */ value) => {\n if (isDenseMatrixWrapper(value)) {\n return JSON.stringify(value);\n }\n\n if (Array.isArray(value) || (value && typeof value === 'object')) {\n return JSON.stringify(value, (_, current) => {\n if (isDenseMatrixWrapper(current)) {\n return current;\n }\n\n return current;\n });\n }\n\n return value;\n};\n","const gcd = (/** @type {number} */ a, /** @type {number} */ b) => {\n a = Math.abs(a);\n b = Math.abs(b);\n while (b) {\n [a, b] = [b, a % b];\n }\n return a;\n};\n\n/**\n * @param {any} n\n */\nexport function fraction(n, d = 1) {\n if (typeof n !== 'number' || typeof d !== 'number') {\n throw new Error('Fraction requires numeric arguments');\n }\n if (!Number.isInteger(n) || !Number.isInteger(d)) {\n throw new Error('Fraction requires integer arguments');\n }\n if (d === 0) {\n throw new Error('Fraction denominator cannot be zero');\n }\n if (d < 0) {\n n = -n;\n d = -d;\n }\n const g = gcd(n, d);\n return { n: n / g, d: d / g };\n}\n\n/**\n * @param {any} v\n */\nexport function isFraction(v) {\n return v && typeof v === 'object' && 'n' in v && 'd' in v && !('re' in v) && !('unit' in v);\n}\n\n/**\n * @param {{ n: number; d: number; }} a\n * @param {{ d: number; n: number; }} b\n */\nexport function addFrac(a, b) {\n return fraction(a.n * b.d + b.n * a.d, a.d * b.d);\n}\n\n/**\n * @param {{ n: number; d: number; }} a\n * @param {{ d: number; n: number; }} b\n */\nexport function subFrac(a, b) {\n return fraction(a.n * b.d - b.n * a.d, a.d * b.d);\n}\n\n/**\n * @param {{ n: number; d: number; }} a\n * @param {{ n: number; d: number; }} b\n */\nexport function mulFrac(a, b) {\n return fraction(a.n * b.n, a.d * b.d);\n}\n\n/**\n * @param {{ n: number; d: number; }} a\n * @param {{ d: number; n: number; }} b\n */\nexport function divFrac(a, b) {\n return fraction(a.n * b.d, a.d * b.n);\n}\n\n/**\n * @param {{ n: number; d: number; }} a\n * @param {any} exp\n */\nexport function powFrac(a, exp) {\n if (!Number.isInteger(exp) || exp < 0) {\n return null;\n }\n return fraction(a.n ** exp, a.d ** exp);\n}\n\n/**\n * @param {{ n: any; }} v\n */\nexport function numer(v) {\n if (!isFraction(v)) {\n throw new Error('numer() expects a fraction');\n }\n return v.n;\n}\n\n/**\n * @param {{ d: any; }} v\n */\nexport function denom(v) {\n if (!isFraction(v)) {\n throw new Error('denom() expects a fraction');\n }\n return v.d;\n}\n\n/**\n * @param {{ d: number; n: any; }} v\n */\nexport function formatFraction(v) {\n if (!isFraction(v)) {\n return String(v);\n }\n if (v.d === 1) {\n return String(v.n);\n }\n return `${v.n}/${v.d}`;\n}\n","const MAX_SAFE_DP = 100;\n\nexport class ExprDecimal {\n static DP = 20;\n\n #sign;\n #int;\n #dp;\n\n constructor(value) {\n if (value instanceof ExprDecimal) {\n this.#sign = value.#sign;\n this.#int = value.#int;\n this.#dp = value.#dp;\n return;\n }\n\n if (typeof value === 'bigint') {\n this.#sign = value >= 0n ? 1 : -1;\n this.#int = value >= 0n ? value : -value;\n this.#dp = 0;\n return;\n }\n\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n throw new Error(`Cannot create ExprDecimal from ${value}`);\n }\n value = String(value);\n }\n\n if (typeof value !== 'string') {\n throw new Error('ExprDecimal expects a number, string, bigint, or ExprDecimal');\n }\n\n let s = value.trim();\n if (s === '') {\n throw new Error('Cannot create ExprDecimal from empty string');\n }\n\n this.#sign = 1;\n if (s[0] === '-') {\n this.#sign = -1;\n s = s.slice(1);\n } else if (s[0] === '+') {\n s = s.slice(1);\n }\n\n let exp = 0;\n const eIdx = s.search(/[eE]/);\n if (eIdx !== -1) {\n exp = parseInt(s.slice(eIdx + 1), 10);\n s = s.slice(0, eIdx);\n }\n\n const dotIdx = s.indexOf('.');\n if (dotIdx === -1) {\n this.#int = BigInt(s || '0');\n this.#dp = 0;\n } else {\n const intPart = s.slice(0, dotIdx) || '0';\n const fracPart = s.slice(dotIdx + 1);\n const combined = intPart + fracPart;\n this.#int = BigInt(combined || '0');\n this.#dp = fracPart.length;\n }\n\n this.#dp -= exp;\n if (this.#dp < 0) {\n this.#int *= 10n ** BigInt(-this.#dp);\n this.#dp = 0;\n }\n\n this.#normalize();\n }\n\n #normalize() {\n while (this.#dp > 0 && this.#int % 10n === 0n) {\n this.#int /= 10n;\n this.#dp--;\n }\n if (this.#int === 0n) {\n this.#sign = 1;\n this.#dp = 0;\n }\n }\n\n #align(other) {\n if (this.#dp === other.#dp) {\n return [this.#int * BigInt(this.#sign), other.#int * BigInt(other.#sign), this.#dp];\n }\n if (this.#dp < other.#dp) {\n const factor = 10n ** BigInt(other.#dp - this.#dp);\n return [this.#int * factor * BigInt(this.#sign), other.#int * BigInt(other.#sign), other.#dp];\n }\n const factor = 10n ** BigInt(this.#dp - other.#dp);\n return [this.#int * BigInt(this.#sign), other.#int * factor * BigInt(other.#sign), this.#dp];\n }\n\n #fromParts(sign, int, dp) {\n const d = new ExprDecimal(0);\n d.#sign = sign;\n d.#int = int < 0n ? -int : int;\n if (int < 0n) {\n d.#sign = -sign;\n }\n d.#dp = dp;\n d.#normalize();\n return d;\n }\n\n plus(other) {\n other = other instanceof ExprDecimal ? other : new ExprDecimal(other);\n const [a, b, dp] = this.#align(other);\n return this.#fromParts(1, a + b, dp);\n }\n\n minus(other) {\n other = other instanceof ExprDecimal ? other : new ExprDecimal(other);\n const [a, b, dp] = this.#align(other);\n return this.#fromParts(1, a - b, dp);\n }\n\n times(other) {\n other = other instanceof ExprDecimal ? other : new ExprDecimal(other);\n const int = this.#int * other.#int;\n const dp = this.#dp + other.#dp;\n return this.#fromParts(this.#sign * other.#sign, int, dp);\n }\n\n div(other) {\n other = other instanceof ExprDecimal ? other : new ExprDecimal(other);\n if (other.#int === 0n) {\n throw new Error('Division by zero');\n }\n const targetDp = Math.min(ExprDecimal.DP, MAX_SAFE_DP);\n const scale = 10n ** BigInt(targetDp + other.#dp);\n const dividend = this.#int * scale;\n const quotient = dividend / other.#int;\n const sign = this.#sign * other.#sign;\n if (quotient === 0n) {\n return new ExprDecimal(0);\n }\n return this.#fromParts(sign, quotient, targetDp);\n }\n\n mod(other) {\n other = other instanceof ExprDecimal ? other : new ExprDecimal(other);\n const quotient = this.div(other);\n const truncated = quotient.#fromParts(\n quotient.#sign,\n quotient.#int - (quotient.#int % 10n ** BigInt(quotient.#dp > 0 ? 1 : 0)),\n 0\n );\n return this.minus(truncated.times(other));\n }\n\n pow(other) {\n other = other instanceof ExprDecimal ? other : new ExprDecimal(other);\n if (other.#dp > 0 || other.#sign !== 1) {\n throw new Error('ExprDecimal pow() supports non-negative integer exponents only');\n }\n const exp = Number(other.#int);\n if (exp > 100) {\n throw new Error('ExprDecimal pow() exponent too large');\n }\n let result = new ExprDecimal(1);\n for (let i = 0; i < exp; i++) {\n result = result.times(this);\n }\n return result;\n }\n\n negated() {\n const d = new ExprDecimal(this);\n d.#sign = -d.#sign;\n if (d.#int === 0n) {\n d.#sign = 1;\n }\n return d;\n }\n\n eq(other) {\n other = other instanceof ExprDecimal ? other : new ExprDecimal(other);\n const [a, b] = this.#align(other);\n return a === b;\n }\n\n gt(other) {\n other = other instanceof ExprDecimal ? other : new ExprDecimal(other);\n const [a, b] = this.#align(other);\n return a > b;\n }\n\n lt(other) {\n other = other instanceof ExprDecimal ? other : new ExprDecimal(other);\n const [a, b] = this.#align(other);\n return a < b;\n }\n\n gte(other) {\n return this.gt(other) || this.eq(other);\n }\n\n lte(other) {\n return this.lt(other) || this.eq(other);\n }\n\n toString() {\n let s = this.#int.toString();\n const edp = this.#dp;\n\n const toScientific = (intStr, exponent) => {\n const coeffInt = intStr[0];\n const coeffFrac = intStr.slice(1).replace(/0+$/, '');\n let r = coeffInt;\n if (coeffFrac) {\n r += `.${coeffFrac}`;\n }\n r += 'e';\n r += exponent >= 0 ? '+' : '';\n r += exponent;\n return this.#sign === -1 ? `-${r}` : r;\n };\n\n if (edp === 0) {\n if (s.length > 15) {\n return toScientific(s, s.length - 1);\n }\n return this.#sign === -1 ? `-${s}` : s;\n }\n\n while (s.length <= edp) {\n s = `0${s}`;\n }\n const dotPos = s.length - edp;\n const intPartRaw = s.slice(0, dotPos);\n const intTrimmed = intPartRaw.replace(/^0+/, '') || '0';\n const fracRaw = s.slice(dotPos);\n\n if (intTrimmed.length > 15 || (intTrimmed === '0' && fracRaw.replace(/0+$/, '').length > 15)) {\n const normalized = s.replace(/^0+/, '') || '0';\n const leadZeros = s.length - normalized.length;\n return toScientific(normalized, dotPos - leadZeros - 1);\n }\n\n const intPart = intPartRaw || '0';\n const fracPart = fracRaw.replace(/0+$/, '');\n if (fracPart === '') {\n return this.#sign === -1 ? `-${intPart}` : intPart;\n }\n return `${this.#sign === -1 ? '-' : ''}${intPart}.${fracPart}`;\n }\n\n toNumber() {\n return Number(this.toString());\n }\n\n static isDecimal(value) {\n return value instanceof ExprDecimal;\n }\n}\n\nexport default ExprDecimal;\n","import { ExprDecimal } from '../utils/decimal.js';\n\n/**\n * @param {any} value\n */\nexport function bigNumber(value) {\n if (ExprDecimal.isDecimal(value)) {\n return value;\n }\n if (typeof value === 'number' || typeof value === 'string' || typeof value === 'bigint') {\n return new ExprDecimal(value);\n }\n throw new Error('bignumber() expects a number, string, or bigint');\n}\n\n/**\n * @param {unknown} v\n */\nexport function isBigNumber(v) {\n return ExprDecimal.isDecimal(v);\n}\n\n/**\n * @param {ExprDecimal} v\n */\nexport function formatBigNumber(v) {\n if (!ExprDecimal.isDecimal(v)) {\n return String(v);\n }\n return v.toString();\n}\n","import { unwrapDenseMatrix, wrapDenseMatrix, isDenseMatrixWrapper } from '../utils/matrix.js';\nimport {\n isFraction,\n fraction as createFrac,\n addFrac,\n subFrac,\n mulFrac,\n divFrac,\n powFrac,\n} from '../math/fraction.js';\nimport { isBigNumber, bigNumber as createBN } from '../math/bignumber.js';\n\n/** @param {any } node*/\nexport function evaluateAST(node, context = {}) {\n const vars = context.variables;\n const fns = context.functions;\n const units = context.units;\n\n const isUnitObj = (/** @type {any} */ v) =>\n v && typeof v === 'object' && 'value' in v && 'unit' in v;\n const isComplex = (/** @type {any} */ v) => v && typeof v === 'object' && 're' in v && 'im' in v;\n const isSliceNode = (/** @type {any} */ v) =>\n v && typeof v === 'object' && v.type === 'SliceExpression';\n const isMatrix = (/** @type {any[]} */ v) =>\n Array.isArray(v) && v.length > 0 && v.every(Array.isArray);\n const isMatrixLike = (/** @type {any} */ v) => isMatrix(v) || isDenseMatrixWrapper(v);\n\n const normalizeMatrix = (/** @type {any[]} */ value) => {\n value = unwrapDenseMatrix(value);\n if (isMatrix(value)) {\n return value.map((/** @type {any} */ row) => [...row]);\n }\n if (Array.isArray(value)) {\n return [value];\n }\n throw new Error('Expected matrix-compatible value');\n };\n\n const nodeError = (/** @type {string} */ msg) => {\n const pos = node && node.pos !== undefined ? ` at position ${node.pos}` : '';\n return new Error(`${msg}${pos}`);\n };\n\n const toOneBasedIndex = (/** @type {unknown} */ value) => {\n if (typeof value !== 'number' || !Number.isInteger(value) || value < 1) {\n throw new Error('Matrix indices must be positive integers');\n }\n\n return value - 1;\n };\n\n const resolveSelector = (\n /** @type {{ start: null | undefined; end: null | undefined; }} */ selector,\n /** @type {number} */ contextLength\n ) => {\n if (isSliceNode(selector)) {\n const startValue =\n selector.start === null || selector.start === undefined\n ? 1\n : evaluateAST(selector.start, context);\n const endValue =\n selector.end === null || selector.end === undefined\n ? contextLength\n : evaluateAST(selector.end, context);\n const start = toOneBasedIndex(startValue);\n const end = toOneBasedIndex(endValue);\n\n if (end < start) {\n return [];\n }\n\n const result = [];\n for (let index = start; index <= end; index++) {\n result.push(index);\n }\n return result;\n }\n\n return [toOneBasedIndex(evaluateAST(selector, context))];\n };\n\n const indexMatrix = (/** @type {any} */ matrix, /** @type {string | any[]} */ selectors) => {\n const target = normalizeMatrix(matrix);\n\n if (selectors.length === 1) {\n const rowIndexes = resolveSelector(selectors[0], target.length);\n const rows = rowIndexes.map((/** @type {number} */ rowIndex) => {\n if (rowIndex >= target.length) {\n throw new Error('Row index out of range');\n }\n return [...target[rowIndex]];\n });\n\n return rows.length === 1 ? rows[0] : rows;\n }\n\n const rowIndexes = resolveSelector(selectors[0], target.length);\n const colIndexes = resolveSelector(selectors[1], target[0]?.length || 0);\n\n const values = rowIndexes.map((/** @type {number} */ rowIndex) => {\n if (rowIndex >= target.length) {\n throw new Error('Row index out of range');\n }\n\n return colIndexes.map((/** @type {number} */ colIndex) => {\n if (colIndex >= target[rowIndex].length) {\n throw new Error('Column index out of range');\n }\n return target[rowIndex][colIndex];\n });\n });\n\n if (rowIndexes.length === 1 && colIndexes.length === 1) {\n return values[0][0];\n }\n\n if (rowIndexes.length === 1) {\n return values[0];\n }\n\n if (colIndexes.length === 1) {\n return values.map((/** @type {any[]} */ row) => [row[0]]);\n }\n\n return values;\n };\n\n const assignMatrixIndex = (\n /** @type {any[]} */ matrix,\n /** @type {string | any[]} */ selectors,\n /** @type {any} */ value\n ) => {\n const target = isMatrix(matrix)\n ? matrix.map((/** @type {any} */ row) => [...row])\n : Array.isArray(matrix)\n ? [matrix.slice()]\n : [];\n\n const rowSelector = selectors[0];\n const colSelector = selectors[1];\n\n if (!rowSelector) {\n throw new Error('Matrix assignment requires at least one index');\n }\n\n const rowContextLength = Math.max(target.length, 1);\n const rowIndexes = resolveSelector(rowSelector, rowContextLength);\n\n if (selectors.length === 1) {\n const rowsValue = isMatrix(value) ? value : normalizeMatrix(value);\n\n if (rowsValue.length !== rowIndexes.length) {\n throw new Error('Assigned row count does not match slice');\n }\n\n rowIndexes.forEach(\n (/** @type {string | number} */ rowIndex, /** @type {string | number} */ index) => {\n target[rowIndex] = [...rowsValue[index]];\n }\n );\n\n return {\n updatedMatrix: target,\n selectionResult:\n rowIndexes.length === 1\n ? [target[rowIndexes[0]]]\n : rowIndexes.map((/** @type {string | number} */ rowIndex) => [target[rowIndex]]),\n };\n }\n\n const maxCols = Math.max(\n ...target.map((/** @type {string | any[]} */ row) => row.length),\n 0,\n 1\n );\n const colIndexes = resolveSelector(colSelector, maxCols);\n const normalizedValue = normalizeMatrix(value);\n\n if (normalizedValue.length !== rowIndexes.length) {\n throw new Error('Assigned row count does not match matrix slice');\n }\n\n normalizedValue.forEach((/** @type {string | any[]} */ row, /** @type {any} */ _rowOffset) => {\n if (row.length !== colIndexes.length) {\n throw new Error('Assigned column count does not match matrix slice');\n }\n });\n\n rowIndexes.forEach(\n (/** @type {string | number} */ rowIndex, /** @type {string | number} */ rowOffset) => {\n if (!target[rowIndex]) {\n target[rowIndex] = [];\n }\n\n colIndexes.forEach(\n (/** @type {string | number} */ colIndex, /** @type {string | number} */ colOffset) => {\n target[rowIndex][colIndex] = normalizedValue[rowOffset][colOffset];\n }\n );\n }\n );\n\n return {\n updatedMatrix: target,\n selectionResult:\n rowIndexes.length === 1\n ? [\n colIndexes.map(\n (/** @type {string | number} */ colIndex) => target[rowIndexes[0]][colIndex]\n ),\n ]\n : rowIndexes.map((/** @type {string | number} */ rowIndex) =>\n colIndexes.map(\n (/** @type {string | number} */ colIndex) => target[rowIndex][colIndex]\n )\n ),\n };\n };\n\n const isScalar = (/** @type {any} */ v) => typeof v === 'number' || typeof v === 'bigint';\n\n const multiplyMatrices = (/** @type {any} */ left, /** @type {any} */ right) => {\n if (isScalar(left)) {\n const b = normalizeMatrix(right);\n return b.map((/** @type {any[]} */ row) =>\n row.map((/** @type {number} */ v) => Number(left) * v)\n );\n }\n if (isScalar(right)) {\n const a = normalizeMatrix(left);\n return a.map((/** @type {any[]} */ row) =>\n row.map((/** @type {number} */ v) => v * Number(right))\n );\n }\n const a = normalizeMatrix(left);\n const b = normalizeMatrix(right);\n\n if (a[0].length !== b.length) {\n throw new Error('Matrix dimensions do not allow multiplication');\n }\n\n return a.map((/** @type {any[]} */ row) =>\n b[0].map((/** @type {any} */ _, /** @type {string | number} */ colIndex) =>\n row.reduce(\n (\n /** @type {number} */ sum,\n /** @type {number} */ value,\n /** @type {string | number} */ rowIndex\n ) => sum + value * b[rowIndex][colIndex],\n 0\n )\n )\n );\n };\n\n const addMatrices = (/** @type {any} */ left, /** @type {any} */ right) => {\n const a = normalizeMatrix(left);\n const b = normalizeMatrix(right);\n if (a.length !== b.length || a[0].length !== b[0].length) {\n throw new Error('Matrix dimensions must match for addition');\n }\n return a.map((/** @type {any[]} */ row, /** @type {string | number} */ i) =>\n row.map((/** @type {any} */ v, /** @type {string | number} */ j) => v + b[i][j])\n );\n };\n\n const subtractMatrices = (/** @type {any} */ left, /** @type {any} */ right) => {\n const a = normalizeMatrix(left);\n const b = normalizeMatrix(right);\n if (a.length !== b.length || a[0].length !== b[0].length) {\n throw new Error('Matrix dimensions must match for subtraction');\n }\n return a.map((/** @type {any[]} */ row, /** @type {string | number} */ i) =>\n row.map((/** @type {number} */ v, /** @type {string | number} */ j) => v - b[i][j])\n );\n };\n\n const identityMatrix = (/** @type {any} */ n) =>\n Array.from({ length: n }, (_, i) => Array.from({ length: n }, (_, j) => (i === j ? 1 : 0)));\n\n const powerMatrix = (/** @type {any} */ left, /** @type {any} */ right) => {\n const a = normalizeMatrix(left);\n if (a.length !== a[0].length) {\n throw new Error('Matrix power requires a square matrix');\n }\n if (!Number.isInteger(right) || right < 0) {\n throw new Error('Matrix power requires a non-negative integer exponent');\n }\n if (right === 0) {\n return identityMatrix(a.length);\n }\n let result = a;\n for (let i = 1; i < right; i++) {\n result = multiplyMatrices(result, a);\n }\n return result;\n };\n\n const toComplex = (/** @type {any} */ value) => {\n if (isComplex(value)) {\n return value;\n }\n if (typeof value === 'number') {\n return { re: value, im: 0 };\n }\n throw new Error('Complex arithmetic only supports numbers');\n };\n\n const fromImaginary = (/** @type {any} */ value) => ({ re: 0, im: value });\n\n const simplifyComplex = (/** @type {{ re: any; im: any; }} */ value) =>\n value.im === 0 ? value.re : value;\n\n const createFunctionScope = (/** @type {any[]} */ params, /** @type {any[]} */ args) => {\n const scopedValues = {};\n\n params.forEach((/** @type {string | number} */ param, /** @type {string | number} */ index) => {\n scopedValues[param] = args[index];\n });\n\n return scopedValues;\n };\n\n const evalComplexBinary = (\n /** @type {any} */ operator,\n /** @type {any} */ left,\n /** @type {any} */ right\n ) => {\n const a = toComplex(left);\n const b = toComplex(right);\n\n switch (operator) {\n case '+':\n return simplifyComplex({ re: a.re + b.re, im: a.im + b.im });\n case '-':\n return simplifyComplex({ re: a.re - b.re, im: a.im - b.im });\n case '*':\n return simplifyComplex({\n re: a.re * b.re - a.im * b.im,\n im: a.re * b.im + a.im * b.re,\n });\n case '/': {\n const denominator = b.re ** 2 + b.im ** 2;\n\n if (denominator === 0) {\n throw new Error('Division by zero');\n }\n\n return simplifyComplex({\n re: (a.re * b.re + a.im * b.im) / denominator,\n im: (a.im * b.re - a.re * b.im) / denominator,\n });\n }\n default:\n throw new Error(`Operator ${operator} is not supported for complex numbers`);\n }\n };\n\n // EVALUATOR\n switch (node.type) {\n case 'Literal':\n return node.value;\n\n case 'ImaginaryLiteral':\n return fromImaginary(node.value);\n\n case 'UnitLiteral':\n return { value: node.value, unit: node.unit };\n\n // VARIABLE\n case 'Identifier':\n return vars.get(node.name);\n\n // Assignment with optional compound operator (+=, -=, *=, /=): read current, apply, write\n case 'AssignmentExpression': {\n let value;\n if (node.operator !== '=') {\n const current = vars.get(node.left.name);\n const right = evaluateAST(node.right, context);\n const op = node.operator.slice(0, -1);\n switch (op) {\n case '+':\n value = current + right;\n break;\n case '-':\n value = current - right;\n break;\n case '*':\n value = current * right;\n break;\n case '/':\n value = current / right;\n break;\n case '%':\n value = current % right;\n break;\n default:\n throw nodeError(`Unknown compound operator ${node.operator}`);\n }\n } else {\n value = evaluateAST(node.right, context);\n }\n\n if (node.left.type === 'Identifier') {\n vars.set(node.left.name, value);\n if (node.right.type === 'ArrayExpression') {\n return wrapDenseMatrix(unwrapDenseMatrix(value));\n }\n return value;\n }\n\n if (node.left.type === 'IndexExpression' && node.left.object.type === 'Identifier') {\n const currentValue = vars.get(node.left.object.name);\n const assigned = assignMatrixIndex(currentValue, node.left.selectors, value);\n vars.set(node.left.object.name, assigned.updatedMatrix);\n return assigned.selectionResult;\n }\n\n throw nodeError('Invalid assignment target');\n }\n\n // User-defined function via f(a,b)=expr: closure evaluates body in a new scope with params bound\n case 'FunctionAssignmentExpression': {\n if (node.operator !== '=') {\n throw nodeError(`Operator ${node.operator} is not supported for function definitions`);\n }\n\n const fn = (/** @type {any} */ ...args) => {\n const scopedContext = context.withScope(createFunctionScope(node.params, args));\n return evaluateAST(node.right, scopedContext);\n };\n\n fns.register(node.left.name, fn);\n return fn;\n }\n\n // UNARY\n case 'UnaryExpression': {\n const val = evaluateAST(node.argument, context);\n\n switch (node.operator) {\n case '-':\n if (isBigNumber(val)) {\n return val.negated();\n }\n if (isComplex(val)) {\n return simplifyComplex({ re: -val.re, im: -val.im });\n }\n return -val;\n case '!':\n return !val;\n }\n\n throw nodeError(`Unknown unary operator ${node.operator}`);\n }\n\n // Dispatch order: unit arithmetic -> matrix arithmetic -> complex arithmetic -> scalar arithmetic\n case 'BinaryExpression': {\n const left = evaluateAST(node.left, context);\n const right = evaluateAST(node.right, context);\n\n // UNIT handling\n if (isUnitObj(left) || isUnitObj(right)) {\n if (!units) {\n throw new Error('Unit system not available');\n }\n\n return units.compute(node.operator, left, right);\n }\n\n if (\n isMatrixLike(left) ||\n isMatrixLike(right) ||\n (node.operator === '*' && (Array.isArray(left) || Array.isArray(right)))\n ) {\n switch (node.operator) {\n case '+':\n return addMatrices(left, right);\n case '-':\n return subtractMatrices(left, right);\n case '*':\n return multiplyMatrices(left, right);\n case '^':\n return powerMatrix(left, right);\n default:\n throw nodeError(`Operator ${node.operator} not supported for matrices`);\n }\n }\n\n if (isFraction(left) || isFraction(right)) {\n const a = isFraction(left) ? left : createFrac(left, 1);\n const b = isFraction(right) ? right : createFrac(right, 1);\n switch (node.operator) {\n case '+':\n return addFrac(a, b);\n case '-':\n return subFrac(a, b);\n case '*':\n return mulFrac(a, b);\n case '/':\n return divFrac(a, b);\n case '^': {\n const p = powFrac(a, right);\n if (p) {\n return p;\n }\n throw nodeError('Fraction power requires non-negative integer exponent');\n }\n default:\n throw nodeError(`Operator ${node.operator} not supported for fractions`);\n }\n }\n\n if (isBigNumber(left) || isBigNumber(right)) {\n const a = isBigNumber(left) ? left : createBN(left);\n const b = isBigNumber(right) ? right : createBN(right);\n switch (node.operator) {\n case '+':\n return a.plus(b);\n case '-':\n return a.minus(b);\n case '*':\n return a.times(b);\n case '/':\n return a.div(b);\n case '%':\n return a.mod(b);\n case '^':\n return a.pow(b);\n case '>':\n return a.gt(b);\n case '<':\n return a.lt(b);\n case '>=':\n return a.gte(b);\n case '<=':\n return a.lte(b);\n case '==':\n return a.eq(b);\n default:\n throw nodeError(`Operator ${node.operator} not supported for BigNumber`);\n }\n }\n\n if (isComplex(left) || isComplex(right)) {\n return evalComplexBinary(node.operator, left, right);\n }\n\n switch (node.operator) {\n case '+':\n return left + right;\n case '-':\n return left - right;\n case '*':\n return left * right;\n case '/':\n return left / right;\n case '%':\n return left % right;\n case '^':\n return left ** right;\n\n case '>':\n return left > right;\n case '<':\n return left < right;\n case '>=':\n return left >= right;\n case '<=':\n return left <= right;\n case '==':\n return left === right;\n }\n\n throw nodeError(`Unknown operator ${node.operator}`);\n }\n\n // Short-circuit: && returns first falsy, || returns first truthy, ?? returns first non-nullish\n case 'LogicalExpression': {\n const left = evaluateAST(node.left, context);\n\n if (node.operator === '&&') {\n return left && evaluateAST(node.right, context);\n }\n\n if (node.operator === '||') {\n return left || evaluateAST(node.right, context);\n }\n\n if (node.operator === '??') {\n return left ?? evaluateAST(node.right, context);\n }\n\n throw nodeError(`Unknown logical operator ${node.operator}`);\n }\n\n // Range [start..end] inclusive: returns array of integers from floor(start) to floor(end)\n case 'RangeExpression': {\n const start = evaluateAST(node.start, context);\n const end = evaluateAST(node.end, context);\n if (typeof start !== 'number' || typeof end !== 'number') {\n throw nodeError('Range requires numeric bounds');\n }\n const result = [];\n for (let i = Math.floor(start); i <= Math.floor(end); i++) {\n result.push(i);\n }\n return result;\n }\n\n // Lambda: return a callable function evaluating the body with params bound in a new scope\n case 'ArrowFunctionExpression': {\n const fn = (/** @type {any[]} */ ...args) => {\n const scopedContext = context.withScope(createFunctionScope(node.params, args));\n return evaluateAST(node.body, scopedContext);\n };\n return fn;\n }\n\n // Function call: flatten spread (...array) arguments, then invoke\n case 'CallExpression': {\n const fnName = node.callee.name;\n const fn = fns.get(fnName);\n\n const rawArgs = node.arguments.map((/** @type {{ type: string; argument: any; }} */ arg) => {\n if (arg.type === 'SpreadElement') {\n const val = evaluateAST(arg.argument, context);\n if (!Array.isArray(val)) {\n throw new Error('Spread operator requires an array');\n }\n return { spread: true, values: val };\n }\n return { spread: false, value: evaluateAST(arg, context) };\n });\n const args = [];\n for (const arg of rawArgs) {\n if (arg.spread) {\n args.push(...arg.values);\n } else {\n args.push(arg.value);\n }\n }\n\n return fn(...args);\n }\n\n // Pipeline: left value is passed as first argument to the right function/expression\n case 'PipelineExpression': {\n const leftVal = evaluateAST(node.left, context);\n\n // right must be function\n if (node.right.type === 'CallExpression') {\n const fnName = node.right.callee.name;\n const fn = fns.get(fnName);\n\n const args = [\n leftVal,\n ...node.right.arguments.map((/** @type {any} */ arg) => evaluateAST(arg, context)),\n ];\n\n return fn(...args);\n }\n\n if (node.right.type === 'Identifier') {\n const fn = fns.get(node.right.name);\n return fn(leftVal);\n }\n\n throw nodeError('Invalid pipeline target');\n }\n\n // Unit conversion: value fromUnit -> toUnit\n case 'UnitConversion': {\n const from = evaluateAST(node.from, context);\n\n if (!isUnitObj(from)) {\n throw nodeError('Left side must be a unit value');\n }\n\n if (!units) {\n throw nodeError('Unit system not available');\n }\n\n return units.convert(from.value, from.unit, node.to);\n }\n\n // ARRAY\n case 'ArrayExpression':\n return node.elements.map((/** @type {any} */ el) => evaluateAST(el, context));\n\n // Matrix/array indexing: target[selector1, selector2] with 1-based and slice support\n case 'IndexExpression': {\n const target = evaluateAST(node.object, context);\n return indexMatrix(target, node.selectors);\n }\n\n // OBJECT\n case 'ObjectExpression': {\n const obj = {};\n for (const p of node.properties) {\n obj[p.key] = evaluateAST(p.value, context);\n }\n return obj;\n }\n\n // Property access: obj.prop; optional chaining (?.) returns undefined if obj is null/undefined\n case 'MemberExpression': {\n const obj = evaluateAST(node.object, context);\n\n if (node.optional && (obj === null || obj === undefined)) {\n return undefined;\n }\n\n return obj[node.property.name];\n }\n\n default:\n throw nodeError(`Unknown AST node type: ${node.type}`);\n }\n}\n","export function createContext({ variables, functions, units, evaluate }) {\n if (!variables) {\n throw new Error('Variable store missing');\n }\n if (!functions) {\n throw new Error('Function registry missing');\n }\n if (!units) {\n throw new Error('Units list missing');\n }\n if (!evaluate) {\n throw new Error('evaluate function missing');\n }\n\n return {\n variables: variables,\n functions: functions,\n units: units,\n evaluate,\n\n withScope(scope = {}) {\n const tempVars = {\n ...variables.all?.(),\n ...scope,\n };\n return createContext({\n functions: functions,\n evaluate,\n units,\n variables: {\n get: (/** @type {string | number} */ k) => tempVars[k],\n set: (/** @type {string | number} */ k, /** @type {any} */ v) => (tempVars[k] = v),\n all: () => tempVars,\n },\n });\n },\n };\n}\n","const isValidNumberPair = (/** @type {any} */ a, /** @type {any} */ b) =>\n typeof a === typeof b && (typeof a === 'number' || typeof a === 'bigint');\n\nexport const mathOperations = Object.freeze({\n power: function (/** @type {number} */ a, /** @type {number} */ b) {\n if (isValidNumberPair(a, b)) {\n return a ** b;\n }\n throw new Error('Invalid types for ^');\n },\n\n multiply: function (/** @type {number} */ a, /** @type {number} */ b) {\n if (isValidNumberPair(a, b)) {\n return a * b;\n }\n throw new Error('Invalid types for *');\n },\n\n divide: function (/** @type {number} */ a, /** @type {number} */ b) {\n if (isValidNumberPair(a, b)) {\n if (b === 0) {\n throw new Error('Division by zero');\n }\n return a / b;\n }\n throw new Error('Invalid types for /');\n },\n\n add: function (/** @type {string} */ a, /** @type {string} */ b) {\n if (isValidNumberPair(a, b)) {\n return a + b;\n }\n if (typeof a === 'string' && typeof b === 'string') {\n return a + b;\n }\n throw new Error('Invalid types for +');\n },\n\n subtract: function (/** @type {number} */ a, /** @type {number} */ b) {\n if (isValidNumberPair(a, b)) {\n return a - b;\n }\n throw new Error('Invalid types for -');\n },\n\n modulus: function (/** @type {number} */ a, /** @type {number} */ b) {\n if (isValidNumberPair(a, b)) {\n return a % b;\n }\n throw new Error('Invalid types for %');\n },\n});\n","export function createUnitsStore(initial = {}) {\n let units = { ...initial };\n\n // Helpers\n function getAllUnitsFlat() {\n const result = new Set();\n\n for (const type in units) {\n for (const key in units[type]) {\n const u = units[type][key];\n\n const keyLower = key.toLowerCase();\n result.add(keyLower);\n\n // Unit name\n if (u.unit) {\n const unitLower = u.unit.toLowerCase();\n\n // Avoid duplicate like \"m\" vs \"meter\"\n if (unitLower !== keyLower) {\n if (unitLower.split(/\\s+/).length === 1) {\n result.add(unitLower);\n }\n }\n }\n\n // Symbol\n if (u.symbol) {\n const symbolLower = u.symbol.toLowerCase();\n\n // Avoid duplicate with unit name\n if (!u.unit || symbolLower !== u.unit.toLowerCase()) {\n result.add(symbolLower);\n }\n }\n }\n }\n\n return Array.from(result);\n }\n\n /**\n * @param {string} input\n */\n function findUnit(input) {\n input = input.toLowerCase();\n\n for (const type in units) {\n for (const key in units[type]) {\n const u = units[type][key];\n\n if (\n key.toLowerCase() === input ||\n u.unit?.toLowerCase() === input ||\n u.symbol?.toLowerCase() === input\n ) {\n return { type, key, data: u };\n }\n }\n }\n\n return null;\n }\n\n /**\n * @param {number} value\n * @param {any} fromUnit\n * @param {any} toUnit\n */\n function convert(value, fromUnit, toUnit) {\n const from = findUnit(fromUnit);\n const to = findUnit(toUnit);\n\n if (!from) {\n throw new Error(`Unknown unit: ${fromUnit}`);\n }\n if (!to) {\n throw new Error(`Unknown unit: ${toUnit}`);\n }\n\n if (from.type !== to.type) {\n throw new Error(\n `Cannot convert ${fromUnit} to ${toUnit} (${to.data.unit || to.key}). ${from.data.unit || from.key} conversion units like ${Object.keys(units[from.type]).join(', ')}`\n );\n }\n\n const result = value * (from.data.value / to.data.value);\n\n return { value: result, unit: to.key };\n }\n\n // Public API\n return {\n // Get all units\n getUnits: () => units,\n\n setUnits: (/** @type {{}} */ newUnits) => {\n units = { ...newUnits };\n },\n\n updateType: (/** @type {string | number} */ type, /** @type {any} */ data) => {\n units[type] = { ...units[type], ...data };\n },\n\n addUnit: (\n /** @type {string | number} */ type,\n /** @type {string | number} */ key,\n /** @type {any} */ unitObj\n ) => {\n if (!units[type]) {\n units[type] = {};\n }\n units[type][key] = unitObj;\n },\n // Unit-aware arithmetic: unify operands to same unit type, then apply operator\n /**\n * @param {string} op\n * @param {{ unit: any; value: any; }} left\n * @param {{ unit: any; value: number; }} right\n */\n compute(op, left, right) {\n const isUnit = (/** @type {any} */ v) =>\n v && typeof v === 'object' && 'value' in v && 'unit' in v;\n\n const apply = (/** @type {any} */ a, /** @type {any} */ b) => {\n switch (op) {\n case '+':\n return a + b;\n case '-':\n return a - b;\n case '*':\n return a * b;\n case '/':\n return a / b;\n case '%':\n return a % b;\n case '^':\n return Math.pow(a, b);\n }\n };\n\n // BOTH UNIT\n if (isUnit(left) && isUnit(right)) {\n const from = this.findUnit(right.unit);\n const to = this.findUnit(left.unit);\n\n if (!from || !to || from.type !== to.type) {\n throw new Error(`Cannot operate on different unit types`);\n }\n\n // convert right → left unit\n const r = right.value * (from.data.value / to.data.value);\n\n const result = apply(left.value, r);\n\n // multiplication/division produce compound units\n if (op === '*') {\n return { value: result, unit: left.unit };\n }\n\n if (op === '/') {\n return { value: result, unit: left.unit };\n }\n\n if (op === '^') {\n return { value: result, unit: left.unit };\n }\n\n return { value: result, unit: left.unit };\n }\n\n // LEFT UNIT\n if (isUnit(left) && !isUnit(right)) {\n const result = apply(left.value, right);\n\n return { value: result, unit: left.unit };\n }\n\n // RIGHT UNIT\n if (!isUnit(left) && isUnit(right)) {\n const result = apply(left, right.value);\n\n if (op === '/') {\n return { value: result, unit: right.unit };\n }\n\n return { value: result, unit: right.unit };\n }\n\n // NORMAL\n return apply(left, right);\n },\n\n convert,\n\n // Search helpers\n getAllUnitsFlat,\n findUnit,\n };\n}\n","export const globalUnits = {\n length: {\n m: { value: 1, unit: 'meter', symbol: 'm' },\n cm: { value: 0.01, unit: 'centimeter', symbol: 'cm' },\n mm: { value: 0.001, unit: 'millimeter', symbol: 'mm' },\n km: { value: 1000, unit: 'kilometer', symbol: 'km' },\n um: { value: 0.000001, unit: 'micrometer', symbol: 'um', note: 'also called micron' },\n nm: { value: 0.000000001, unit: 'nanometer', symbol: 'nm' },\n px: { value: 0.000264583, unit: 'pixel', symbol: 'px', note: '96dpi standard' },\n em: { value: 0.000264583 * 16, unit: 'em', symbol: 'em', note: '1em = 16px by default' },\n rem: { value: 0.000264583 * 16, unit: 'rem', symbol: 'rem', note: 'root em = 16px by default' },\n pt: { value: 0.000352778, unit: 'point', symbol: 'pt', note: '1pt = 1/72 inch' },\n pica: { value: 0.00423333, unit: 'pica', symbol: 'pc', note: '1pc = 12pt' },\n inch: { value: 0.0254, unit: 'inch', symbol: 'in' },\n ft: { value: 0.3048, unit: 'foot', symbol: 'ft' },\n yd: { value: 0.9144, unit: 'yard', symbol: 'yd' },\n mi: { value: 1609.344, unit: 'mile', symbol: 'mi' },\n thou: { value: 0.0000254, unit: 'mil', symbol: 'thou', note: 'thousandth of an inch' },\n furlong: { value: 201.168, unit: 'furlong', symbol: 'fur', note: '220 yards' },\n nmi: { value: 1852, unit: 'nautical mile', symbol: 'nmi' },\n fathom: { value: 1.8288, unit: 'fathom', symbol: 'fathom' },\n au: { value: 1.496e11, unit: 'astronomical unit', symbol: 'AU' },\n ly: { value: 9.4607e15, unit: 'light year', symbol: 'ly' },\n pc: { value: 3.0857e16, unit: 'parsec', symbol: 'pc' },\n },\n\n // Weight / Mass\n weight: {\n mg: { value: 1e-6, unit: 'milligram', symbol: 'mg' },\n g: { value: 0.001, unit: 'gram', symbol: 'g' },\n kg: { value: 1, unit: 'kilogram', symbol: 'kg' },\n t: { value: 1000, unit: 'tonne', symbol: 't', note: 'metric ton' },\n lb: { value: 0.453592, unit: 'pound', symbol: 'lb' },\n oz: { value: 0.0283495, unit: 'ounce', symbol: 'oz' },\n stone: { value: 6.35029, unit: 'stone', symbol: 'st', note: '1 stone = 14 lb' },\n },\n\n // Time\n time: {\n s: { value: 1, unit: 'second', symbol: 's' },\n min: { value: 60, unit: 'minute', symbol: 'min' },\n h: { value: 3600, unit: 'hour', symbol: 'h' },\n day: { value: 86400, unit: 'day', symbol: 'd' },\n week: { value: 604800, unit: 'week', symbol: 'wk' },\n month: { value: 2629800, unit: 'month', symbol: 'mo', note: 'average month = 30.44 days' },\n year: { value: 31557600, unit: 'year', symbol: 'yr', note: 'average year = 365.25 days' },\n },\n\n // Voltage\n voltage: {\n V: { value: 1, unit: 'volt', symbol: 'V' },\n mV: { value: 0.001, unit: 'millivolt', symbol: 'mV' },\n kV: { value: 1000, unit: 'kilovolt', symbol: 'kV' },\n MV: { value: 1e6, unit: 'megavolt', symbol: 'MV' },\n GV: { value: 1e9, unit: 'gigavolt', symbol: 'GV' },\n statV: { value: 299.792458, unit: 'statvolt', symbol: 'statV', note: 'CGS unit' },\n abV: { value: 1e-8, unit: 'abvolt', symbol: 'abV', note: 'CGS electromagnetic unit' },\n },\n\n // Frequency\n frequency: {\n Hz: { value: 1, unit: 'hertz', symbol: 'Hz', note: '1 cycle per second' },\n kHz: { value: 1e3, unit: 'kilohertz', symbol: 'kHz' },\n MHz: { value: 1e6, unit: 'megahertz', symbol: 'MHz' },\n GHz: { value: 1e9, unit: 'gigahertz', symbol: 'GHz' },\n THz: { value: 1e12, unit: 'terahertz', symbol: 'THz' },\n },\n\n // Power\n power: {\n W: { value: 1, unit: 'watt', symbol: 'W', note: '1 joule per second' },\n mW: { value: 0.001, unit: 'milliwatt', symbol: 'mW' },\n kW: { value: 1000, unit: 'kilowatt', symbol: 'kW' },\n MW: { value: 1e6, unit: 'megawatt', symbol: 'MW' },\n GW: { value: 1e9, unit: 'gigawatt', symbol: 'GW' },\n HP: { value: 745.7, unit: 'horsepower', symbol: 'HP', note: 'mechanical HP = 745.7 W' },\n 'kcal/h': { value: 1.163, unit: 'kilocalorie per hour', symbol: 'kcal/h', note: '= 1.163 W' },\n 'BTU/h': { value: 0.29307107, unit: 'BTU per hour', symbol: 'BTU/h', note: '= 0.293 W' },\n },\n\n // Sound\n sound: {\n dB: { value: 1, unit: 'decibel', symbol: 'dB', note: 'logarithmic unit of sound intensity' },\n dBA: {\n value: 1,\n unit: 'A-weighted decibel',\n symbol: 'dBA',\n note: 'Adjusted for human hearing',\n },\n dBC: {\n value: 1,\n unit: 'C-weighted decibel',\n symbol: 'dBC',\n note: 'Flat weighting for high-level sounds',\n },\n },\n\n // Temperature\n temperature: {\n K: { value: 1, unit: 'kelvin', symbol: 'K' },\n C: { value: 1, unit: 'Celsius', symbol: '°C', note: '°C → K: add 273.15' },\n F: { value: 1, unit: 'Fahrenheit', symbol: '°F', note: '°F → K: (°F - 32) * 5/9 + 273.15' },\n },\n\n // Pressure\n pressure: {\n Pa: { value: 1, unit: 'pascal', symbol: 'Pa' },\n kPa: { value: 1000, unit: 'kilopascal', symbol: 'kPa' },\n MPa: { value: 1e6, unit: 'megapascal', symbol: 'MPa' },\n bar: { value: 1e5, unit: 'bar', symbol: 'bar' },\n atm: { value: 101325, unit: 'atmosphere', symbol: 'atm' },\n psi: { value: 6894.757, unit: 'pound per square inch', symbol: 'psi' },\n mmHg: { value: 133.322, unit: 'millimeter of mercury', symbol: 'mmHg' },\n },\n\n // Energy\n energy: {\n J: { value: 1, unit: 'joule', symbol: 'J' },\n kJ: { value: 1000, unit: 'kilojoule', symbol: 'kJ' },\n cal: { value: 4.184, unit: 'calorie', symbol: 'cal' },\n kcal: { value: 4184, unit: 'kilocalorie', symbol: 'kcal' },\n eV: { value: 1.60218e-19, unit: 'electronvolt', symbol: 'eV' },\n BTU: { value: 1055.06, unit: 'BTU', symbol: 'BTU' },\n },\n\n // Force\n force: {\n N: { value: 1, unit: 'newton', symbol: 'N' },\n kN: { value: 1000, unit: 'kilonewton', symbol: 'kN' },\n lbf: { value: 4.44822, unit: 'pound-force', symbol: 'lbf' },\n kgf: { value: 9.80665, unit: 'kilogram-force', symbol: 'kgf' },\n dyne: { value: 1e-5, unit: 'dyne', symbol: 'dyn' },\n },\n\n // Area\n area: {\n m2: { value: 1, unit: 'square meter', symbol: 'm²' },\n cm2: { value: 0.0001, unit: 'square centimeter', symbol: 'cm²' },\n km2: { value: 1e6, unit: 'square kilometer', symbol: 'km²' },\n acre: { value: 4046.856, unit: 'acre', symbol: 'acre' },\n hectare: { value: 10000, unit: 'hectare', symbol: 'ha' },\n ft2: { value: 0.092903, unit: 'square foot', symbol: 'ft²' },\n yd2: { value: 0.836127, unit: 'square yard', symbol: 'yd²' },\n },\n\n // Volume\n volume: {\n m3: { value: 1, unit: 'cubic meter', symbol: 'm³' },\n L: { value: 0.001, unit: 'liter', symbol: 'L' },\n mL: { value: 1e-6, unit: 'milliliter', symbol: 'mL' },\n gallon: { value: 0.00378541, unit: 'US gallon', symbol: 'gal' },\n pint: { value: 0.000473176, unit: 'US pint', symbol: 'pt' },\n floz: { value: 2.9574e-5, unit: 'US fluid ounce', symbol: 'fl oz' },\n },\n\n // Electrical Current\n current: {\n A: { value: 1, unit: 'ampere', symbol: 'A' },\n mA: { value: 0.001, unit: 'milliampere', symbol: 'mA' },\n uA: { value: 0.000001, unit: 'microampere', symbol: 'uA' },\n kA: { value: 1000, unit: 'kiloampere', symbol: 'kA' },\n },\n\n // Resistance / Conductance\n resistance: {\n ohm: { value: 1, unit: 'ohm' },\n kohm: { value: 1000, unit: 'kiloohm' },\n megaohm: { value: 1e6, unit: 'megaohm' },\n S: { value: 1, unit: 'siemens', symbol: 'S', note: 'conductance' },\n },\n\n // Capacitance / Inductance\n capacitance: {\n F: { value: 1, unit: 'farad', symbol: 'F' },\n mF: { value: 0.001, unit: 'millifarad' },\n uF: { value: 0.000001, unit: 'microfarad' },\n },\n inductance: {\n H: { value: 1, unit: 'henry', symbol: 'H' },\n mH: { value: 0.001, unit: 'millihenry', symbol: 'mH' },\n uH: { value: 0.000001, unit: 'microhenry', symbol: 'uH' },\n },\n\n // Luminous Intensity / Illuminance\n light: {\n cd: { value: 1, unit: 'candela', symbol: 'cd' },\n lm: { value: 1, unit: 'lumen', symbol: 'lm' },\n lx: { value: 1, unit: 'lux', symbol: 'lx' },\n },\n\n // Data / Digital Storage\n data: {\n bit: { value: 1, unit: 'bit', symbol: 'bit' },\n B: { value: 8, unit: 'byte', symbol: 'B' },\n KB: { value: 8e3, unit: 'kilobyte', symbol: 'KB' },\n MB: { value: 8e6, unit: 'megabyte', symbol: 'MB' },\n GB: { value: 8e9, unit: 'gigabyte', symbol: 'GB' },\n TB: { value: 8e12, unit: 'terabyte', symbol: 'TB' },\n },\n\n // Angle\n angle: {\n deg: { value: 1, unit: 'degree', symbol: '°' },\n rad: { value: 57.2958, unit: 'radian', symbol: 'rad', note: '1 rad = 57.2958°' },\n grad: { value: 0.9, unit: 'grad', symbol: 'grad', note: '1 grad = 0.9°' },\n },\n radiation: {\n Gy: { value: 1, unit: 'gray', symbol: 'Gy', note: 'Absorbed dose: 1 Gy = 1 J/kg' },\n mGy: { value: 0.001, unit: 'milligray', symbol: 'mGy' },\n rad: { value: 0.01, unit: 'rad', symbol: 'rad', note: '1 rad = 0.01 Gy' },\n\n // Dose Equivalent\n Sv: { value: 1, unit: 'sievert', symbol: 'Sv', note: 'Biological effect dose equivalent' },\n mSv: { value: 0.001, unit: 'millisievert', symbol: 'mSv' },\n rem: { value: 0.01, unit: 'rem', symbol: 'rem', note: '1 rem = 0.01 Sv' },\n\n // Radioactivity\n Bq: { value: 1, unit: 'becquerel', symbol: 'Bq', note: '1 decay per second' },\n kBq: { value: 1e3, unit: 'kilobecquerel', symbol: 'kBq' },\n MBq: { value: 1e6, unit: 'megabecquerel', symbol: 'MBq' },\n GBq: { value: 1e9, unit: 'gigabecquerel', symbol: 'GBq' },\n Ci: { value: 3.7e10, unit: 'curie', symbol: 'Ci', note: '1 Ci = 3.7 x 10¹⁰ decays per second' },\n mCi: { value: 3.7e7, unit: 'millicurie', symbol: 'mCi' },\n },\n};\n","const validVarName = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\n\nexport function createVarStore(initial = {}) {\n let store = Object.create(null);\n\n for (const key in initial) {\n store[key] = initial[key];\n }\n\n return {\n /**\n * @param {string} name\n * @param {number | undefined} value\n */\n set(name, value, { override = true } = {}) {\n if (typeof name !== 'string' || !name) {\n throw new Error('Variable name must be a non-empty string');\n }\n\n if (!validVarName.test(name)) {\n throw new Error(`Variable Name Error: '${name}' is not a valid variable name`);\n }\n\n // Value validation\n if (value === undefined) {\n throw new Error(`Variable Value Error: '${name}' cannot be undefined`);\n }\n\n // Prevent overwrite (optional)\n if (!override && name in store) {\n throw new Error(`Variable '${name}' already exists`);\n }\n\n store[name] = value;\n },\n\n /**\n * @param {string | number} name\n */\n get(name) {\n return store[name];\n },\n\n /**\n * @param {any} name\n */\n has(name) {\n return Object.prototype.hasOwnProperty.call(store, name);\n },\n\n /**\n * @param {string | number} name\n */\n remove(name) {\n delete store[name];\n },\n\n all() {\n return { ...store };\n },\n\n clear() {\n store = Object.create(null);\n },\n\n merge(obj = {}) {\n for (const key in obj) {\n store[key] = obj[key];\n }\n },\n\n clone() {\n return createVarStore(store);\n },\n };\n}\n\nexport default { createVarStore };\n","export function createFunctionRegistry(initial = {}) {\n // Object.create(null) avoids prototype pollution (no inherited properties)\n const store = Object.create(null);\n\n for (const key in initial) {\n if (typeof initial[key] === 'function') {\n store[key] = initial[key];\n }\n }\n\n return {\n getAllFunctionsName() {\n return Object.keys(store);\n },\n\n /**\n * @param {string} name\n * @param {any} fn\n */\n register(name, fn) {\n if (typeof name !== 'string' || !name) {\n throw new Error('Formula name must be a non-empty string');\n }\n\n if (typeof fn !== 'function') {\n throw new Error(`Formula \"${name}\" must be callable`);\n }\n\n store[name] = fn;\n },\n\n /**\n * @param {string} name\n */\n get(name) {\n return store[name];\n },\n\n /**\n * @param {any} name\n */\n has(name) {\n return Object.prototype.hasOwnProperty.call(store, name);\n },\n\n /**\n * @param {string | number} name\n */\n remove(name) {\n delete store[name];\n },\n\n all() {\n return { ...store };\n },\n\n clear() {\n for (const key in store) {\n delete store[key];\n }\n },\n\n extend(formulas = {}) {\n for (const name in formulas) {\n if (typeof formulas[name] === 'function') {\n store[name] = formulas[name];\n }\n }\n },\n\n clone() {\n return createFunctionRegistry(store);\n },\n };\n}\n","import { unwrapDenseMatrix, wrapDenseMatrix } from '../utils/matrix.js';\nimport { fraction as makeFrac, isFraction, numer, denom } from '../math/fraction.js';\nimport { bigNumber as makeBN, isBigNumber } from '../math/bignumber.js';\n\n/** @param {any[]} matrix */\nfunction validateSquareMatrix(matrix) {\n matrix = unwrapDenseMatrix(matrix);\n if (!Array.isArray(matrix) || matrix.length === 0) {\n throw new Error('det() expects a non-empty matrix');\n }\n\n if (!matrix.every(Array.isArray)) {\n throw new Error('det() expects a 2D matrix');\n }\n\n const size = matrix.length;\n if (!matrix.every((row) => row.length === size)) {\n throw new Error('det() expects a square matrix');\n }\n\n for (const row of matrix) {\n for (const value of row) {\n if (typeof value !== 'number' && typeof value !== 'bigint') {\n throw new Error('det() matrix values must be numeric');\n }\n }\n }\n}\n\n/** @param {any[]} matrix */\nfunction determinant(matrix) {\n matrix = unwrapDenseMatrix(matrix);\n validateSquareMatrix(matrix);\n\n if (matrix.length === 1) {\n return matrix[0][0];\n }\n\n if (matrix.length === 2) {\n return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0];\n }\n\n // Laplace expansion: sum of (-1)^col * M[0][col] * det(minor)\n return matrix[0].reduce(\n (/** @type {number} */ sum, /** @type {number} */ value, /** @type {number} */ columnIndex) => {\n const minor = matrix\n .slice(1)\n .map((row) =>\n row.filter((/** @type {any} */ _, /** @type {number} */ index) => index !== columnIndex)\n );\n const cofactor = columnIndex % 2 === 0 ? value : -value;\n return sum + cofactor * determinant(minor);\n },\n 0\n );\n}\n\n/** @param {any} value */\nfunction asMatrixData(value) {\n const data = unwrapDenseMatrix(value);\n if (!Array.isArray(data)) {\n throw new Error('Expected matrix data');\n }\n return data;\n}\n\n/**\n * @param {any[]} coefficients\n * @param {number[]} constants\n */\nfunction solveLinearSystem(coefficients, constants) {\n const n = coefficients.length;\n const augmented = coefficients.map((row, rowIndex) => [...row, constants[rowIndex]]);\n\n for (let pivot = 0; pivot < n; pivot++) {\n let maxRow = pivot;\n let maxValue = Math.abs(augmented[pivot][pivot]);\n\n for (let row = pivot + 1; row < n; row++) {\n const current = Math.abs(augmented[row][pivot]);\n if (current > maxValue) {\n maxValue = current;\n maxRow = row;\n }\n }\n\n if (maxValue === 0) {\n throw new Error('Linear system is singular');\n }\n\n if (maxRow !== pivot) {\n [augmented[pivot], augmented[maxRow]] = [augmented[maxRow], augmented[pivot]];\n }\n\n const pivotValue = augmented[pivot][pivot];\n for (let col = pivot; col <= n; col++) {\n augmented[pivot][col] /= pivotValue;\n }\n\n for (let row = 0; row < n; row++) {\n if (row === pivot) {\n continue;\n }\n const factor = augmented[row][pivot];\n for (let col = pivot; col <= n; col++) {\n augmented[row][col] -= factor * augmented[pivot][col];\n }\n }\n }\n\n return augmented.map((row) => row[n]);\n}\n\n/** @param {any} input */\nfunction lupDecomposition(input) {\n const matrix = asMatrixData(input).map((row) => [...row]);\n validateSquareMatrix(matrix);\n\n const n = matrix.length;\n const permutation = Array.from({ length: n }, (_, index) => index);\n\n for (let pivot = 0; pivot < n; pivot++) {\n let maxRow = pivot;\n let maxValue = Math.abs(matrix[pivot][pivot]);\n\n for (let row = pivot + 1; row < n; row++) {\n const current = Math.abs(matrix[row][pivot]);\n if (current > maxValue) {\n maxValue = current;\n maxRow = row;\n }\n }\n\n if (maxValue === 0) {\n throw new Error('Matrix is singular');\n }\n\n if (maxRow !== pivot) {\n [matrix[pivot], matrix[maxRow]] = [matrix[maxRow], matrix[pivot]];\n [permutation[pivot], permutation[maxRow]] = [permutation[maxRow], permutation[pivot]];\n }\n\n for (let row = pivot + 1; row < n; row++) {\n matrix[row][pivot] /= matrix[pivot][pivot];\n for (let col = pivot + 1; col < n; col++) {\n matrix[row][col] -= matrix[row][pivot] * matrix[pivot][col];\n }\n }\n }\n\n const L = matrix.map((row, rowIndex) =>\n row.map((value, colIndex) => {\n if (rowIndex === colIndex) {\n return 1;\n }\n if (rowIndex > colIndex) {\n return value;\n }\n return 0;\n })\n );\n\n const U = matrix.map((row, rowIndex) =>\n row.map((value, colIndex) => (rowIndex <= colIndex ? value : 0))\n );\n\n return {\n L: wrapDenseMatrix(L),\n U: wrapDenseMatrix(U),\n p: permutation,\n };\n}\n\n/**\n * @param {any} aInput\n * @param {{ exprify: string; data: any; size: number[]; }} bInput\n */\nfunction linearSolve(aInput, bInput) {\n const { L, U, p } = lupDecomposition(aInput);\n const a = asMatrixData(aInput);\n const bData = asMatrixData(bInput);\n const bVector = Array.isArray(bData[0]) ? bData.map((row) => row[0]) : bData;\n\n if (a.length !== bVector.length) {\n throw new Error('Right-hand side dimension mismatch');\n }\n\n const permutedB = p.map((index) => bVector[index]);\n const y = new Array(a.length).fill(0);\n\n for (let row = 0; row < a.length; row++) {\n y[row] = permutedB[row];\n for (let col = 0; col < row; col++) {\n y[row] -= L.data[row][col] * y[col];\n }\n }\n\n const x = new Array(a.length).fill(0);\n for (let row = a.length - 1; row >= 0; row--) {\n x[row] = y[row];\n for (let col = row + 1; col < a.length; col++) {\n x[row] -= U.data[row][col] * x[col];\n }\n x[row] /= U.data[row][row];\n }\n\n return wrapDenseMatrix(x.map((value) => [value]));\n}\n\n/**\n * @param {any} aInput\n * @param {any} qInput\n */\nfunction solveLyapunov(aInput, qInput) {\n const A = asMatrixData(aInput).map((row) => [...row]);\n const Q = asMatrixData(qInput).map((row) => [...row]);\n validateSquareMatrix(A);\n validateSquareMatrix(Q);\n\n const n = A.length;\n if (Q.length !== n) {\n throw new Error('A and Q must have the same dimensions');\n }\n\n const coefficients = [];\n const constants = [];\n\n for (let row = 0; row < n; row++) {\n for (let col = 0; col < n; col++) {\n const equation = new Array(n * n).fill(0);\n\n for (let k = 0; k < n; k++) {\n equation[k * n + col] += A[row][k];\n equation[row * n + k] += A[col][k];\n }\n\n coefficients.push(equation);\n constants.push(-Q[row][col]);\n }\n }\n\n const solution = solveLinearSystem(coefficients, constants);\n const X = [];\n\n for (let row = 0; row < n; row++) {\n X.push(solution.slice(row * n, (row + 1) * n));\n }\n\n return wrapDenseMatrix(X);\n}\n\n/**\n * @param {any[]} coefficients\n * @param {number} x\n */\nfunction evaluatePolynomial(coefficients, x) {\n return coefficients.reduce((sum, coefficient, index) => sum + coefficient * x ** index, 0);\n}\n\n/**\n * @param {any[]} coefficients\n * @param {number} root\n */\nfunction syntheticDivide(coefficients, root) {\n const descending = [...coefficients].reverse();\n const quotient = [descending[0]];\n\n for (let index = 1; index < descending.length - 1; index++) {\n quotient.push(descending[index] + quotient[index - 1] * root);\n }\n\n const remainder = descending[descending.length - 1] + quotient[quotient.length - 1] * root;\n return {\n quotient: quotient.reverse(),\n remainder,\n };\n}\n\n/**\n * @param {any[]} coefficients\n */\nfunction solveQuadratic(coefficients) {\n const [c, b, a] = coefficients;\n const discriminant = b ** 2 - 4 * a * c;\n if (discriminant < 0) {\n throw new Error('Only real roots are supported');\n }\n\n const sqrtDisc = Math.sqrt(discriminant);\n return [(-b + sqrtDisc) / (2 * a), (-b - sqrtDisc) / (2 * a)];\n}\n\n/**\n * @param {any[]} coefficients\n */\nfunction polynomialRoots(...coefficients) {\n while (coefficients.length > 1 && coefficients[coefficients.length - 1] === 0) {\n coefficients.pop();\n }\n\n const degree = coefficients.length - 1;\n if (degree < 1) {\n throw new Error('polynomialRoot() expects at least a linear polynomial');\n }\n\n if (degree === 1) {\n const [b, a] = coefficients;\n return [-b / a];\n }\n\n if (degree === 2) {\n return solveQuadratic(coefficients);\n }\n\n // Rational root theorem: possible roots are divisors of the constant term\n if (degree === 3) {\n const constant = coefficients[0];\n const candidates = [];\n const limit = Math.abs(constant);\n\n for (let divisor = 1; divisor <= Math.max(1, limit); divisor++) {\n if (limit % divisor === 0) {\n candidates.push(divisor, -divisor);\n }\n }\n\n for (const candidate of candidates) {\n if (evaluatePolynomial(coefficients, candidate) === 0) {\n const reduced = syntheticDivide(coefficients, candidate);\n const remainingRoots = solveQuadratic(reduced.quotient);\n return [candidate, ...remainingRoots];\n }\n }\n }\n\n throw new Error('polynomialRoot() currently supports degree up to 3');\n}\n\n/**\n * @param {any[]} a\n * @param {any[]} b\n */\nfunction dotProduct(a, b) {\n return a.reduce((sum, value, index) => sum + value * b[index], 0);\n}\n\n/**\n * @param {any[]} vector\n */\nfunction vectorNorm(vector) {\n return Math.sqrt(dotProduct(vector, vector));\n}\n\n/**\n * @param {any[]} vector\n * @param {number} scalar\n */\nfunction scaleVector(vector, scalar) {\n return vector.map((value) => value * scalar);\n}\n\n/**\n * @param {any} a\n * @param {any} b\n */\nfunction subtractVectors(a, b) {\n return a.map(\n (/** @type {number} */ value, /** @type {string | number} */ index) => value - b[index]\n );\n}\n\n/**\n * @param {any[]} matrix\n */\nfunction transpose(matrix) {\n return matrix[0].map((/** @type {any} */ _, /** @type {string | number} */ colIndex) =>\n matrix.map((row) => row[colIndex])\n );\n}\n\n/**\n * @param {any} input\n */\nfunction qrDecomposition(input) {\n const A = asMatrixData(input).map((row) => [...row]);\n if (!A.length || !A.every((row) => row.length === A[0].length)) {\n throw new Error('qr() expects a rectangular matrix');\n }\n\n const rowCount = A.length;\n const colCount = A[0].length;\n const columns = transpose(A);\n const qColumns = [];\n\n for (let col = 0; col < colCount; col++) {\n let vector = [...columns[col]];\n\n for (let existing = 0; existing < qColumns.length; existing++) {\n const projection = dotProduct(qColumns[existing], columns[col]);\n vector = subtractVectors(vector, scaleVector(qColumns[existing], projection));\n }\n\n const norm = vectorNorm(vector);\n if (norm === 0) {\n throw new Error('qr() requires linearly independent columns');\n }\n\n qColumns.push(scaleVector(vector, 1 / norm));\n }\n\n for (let basisIndex = 0; qColumns.length < rowCount && basisIndex < rowCount; basisIndex++) {\n let candidate = Array.from({ length: rowCount }, (_, index) => (index === basisIndex ? 1 : 0));\n\n for (const column of qColumns) {\n const projection = dotProduct(column, candidate);\n candidate = subtractVectors(candidate, scaleVector(column, projection));\n }\n\n const norm = vectorNorm(candidate);\n if (norm > 1e-10) {\n qColumns.push(scaleVector(candidate, 1 / norm));\n }\n }\n\n const Q = Array.from({ length: rowCount }, (_, rowIndex) =>\n qColumns.map((column) => column[rowIndex])\n );\n\n const fullR = Array.from({ length: rowCount }, () => Array(colCount).fill(0));\n for (let row = 0; row < rowCount; row++) {\n for (let col = 0; col < colCount; col++) {\n fullR[row][col] = dotProduct(qColumns[row], columns[col]);\n }\n }\n\n return {\n Q: wrapDenseMatrix(Q),\n R: wrapDenseMatrix(fullR),\n };\n}\n\n/**\n * @param {string} expression\n */\nfunction splitTerms(expression) {\n const normalized = expression.replace(/\\s+/g, '');\n if (!normalized) {\n return [];\n }\n\n return normalized.replace(/-/g, '+-').split('+').filter(Boolean);\n}\n\n/**\n * @param {string} expression\n * @param {string} variable\n */\nfunction parsePolynomial(expression, variable) {\n const terms = splitTerms(expression);\n const coefficients = new Map();\n\n for (const term of terms) {\n if (term.includes(variable)) {\n const [rawCoeff, rawPower] = term.split(variable);\n let coefficient;\n\n if (rawCoeff === '' || rawCoeff === '+') {\n coefficient = 1;\n } else if (rawCoeff === '-') {\n coefficient = -1;\n } else {\n const cleaned = rawCoeff.endsWith('*') ? rawCoeff.slice(0, -1) : rawCoeff;\n coefficient = Number(cleaned);\n }\n\n if (!Number.isFinite(coefficient)) {\n throw new Error('Unsupported algebra term');\n }\n\n let power = 1;\n if (rawPower) {\n if (!rawPower.startsWith('^')) {\n throw new Error('Unsupported algebra term');\n }\n\n power = Number(rawPower.slice(1));\n }\n\n if (!Number.isInteger(power) || power < 0) {\n throw new Error('Only non-negative integer powers are supported');\n }\n\n coefficients.set(power, (coefficients.get(power) || 0) + coefficient);\n } else {\n const constant = Number(term);\n if (!Number.isFinite(constant)) {\n throw new Error('Unsupported algebra term');\n }\n coefficients.set(0, (coefficients.get(0) || 0) + constant);\n }\n }\n\n return coefficients;\n}\n\n/**\n * @param {any[] | Map<any, any>} coefficients\n * @param {string} variable\n */\nfunction formatPolynomial(coefficients, variable) {\n const ordered = [...coefficients.entries()]\n .filter(([, coefficient]) => coefficient !== 0)\n .sort((a, b) => b[0] - a[0]);\n\n if (!ordered.length) {\n return '0';\n }\n\n return ordered\n .map(([power, coefficient], index) => {\n const negative = coefficient < 0;\n const absCoeff = Math.abs(coefficient);\n let body;\n\n if (power === 0) {\n body = `${absCoeff}`;\n } else if (power === 1) {\n body = absCoeff === 1 ? variable : `${absCoeff} * ${variable}`;\n } else {\n body = absCoeff === 1 ? `${variable}^${power}` : `${absCoeff} * ${variable}^${power}`;\n }\n\n if (index === 0) {\n return negative ? `-${body}` : body;\n }\n\n return negative ? `- ${body}` : `+ ${body}`;\n })\n .join(' ');\n}\n\n/**\n * @param {string} expression\n */\nfunction simplifyExpression(expression) {\n const compact = expression.replace(/\\s+/g, '');\n const variableMatch = compact.match(/[a-zA-Z]+/);\n const variable = variableMatch?.[0] || 'x';\n const coefficients = parsePolynomial(expression, variable);\n return formatPolynomial(coefficients, variable);\n}\n\n/**\n * @param {string} expression\n * @param {string} variable\n */\nfunction derivativeExpression(expression, variable) {\n const coefficients = parsePolynomial(expression, variable);\n const derived = new Map();\n\n for (const [power, coefficient] of coefficients.entries()) {\n if (power === 0) {\n continue;\n }\n derived.set(power - 1, (derived.get(power - 1) || 0) + coefficient * power);\n }\n\n return formatPolynomial(derived, variable);\n}\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction _gcd(a, b) {\n a = Math.abs(a);\n b = Math.abs(b);\n while (b) {\n [a, b] = [b, a % b];\n }\n return a;\n}\n\n/**\n * @param {any} n\n */\nfunction _gamma(n) {\n if (n === 0) {\n throw new Error('gamma(0) is undefined');\n }\n if (Number.isInteger(n) && n < 0) {\n throw new Error('gamma() undefined for negative integers');\n }\n if (Number.isInteger(n) && n > 0) {\n let r = 1;\n for (let i = 2; i < n; i++) {\n r *= i;\n }\n return r;\n }\n const g = 7;\n const c = [\n 0.99999999999980993, 676.5203681218851, -1259.1392167224028, 771.32342877765313,\n -176.61502916214059, 12.507343278686905, -0.13857109526572012, 9.9843695780195716e-6,\n 1.5056327351493116e-7,\n ];\n // Euler's reflection formula: Gamma(z) = pi / (sin(pi*z) * Gamma(1-z))\n if (n < 0.5) {\n return Math.PI / (Math.sin(Math.PI * n) * _gamma(1 - n));\n }\n n -= 1;\n let x = c[0];\n for (let i = 1; i < g + 2; i++) {\n x += c[i] / (n + i);\n }\n const t = n + g + 0.5;\n return Math.sqrt(2 * Math.PI) * t ** (n + 0.5) * Math.exp(-t) * x;\n}\n\n/**\n * @param {any} n\n */\nfunction _identity(n) {\n return Array.from({ length: n }, (_, i) =>\n Array.from({ length: n }, (_, j) => (i === j ? 1 : 0))\n );\n}\n\n/**\n * @param {any[]} matrix\n */\nfunction _inverse(matrix) {\n const data = unwrapDenseMatrix(matrix);\n validateSquareMatrix(matrix);\n const n = data.length;\n\n if (n === 2) {\n const det = data[0][0] * data[1][1] - data[0][1] * data[1][0];\n if (det === 0) {\n throw new Error('Matrix is singular');\n }\n return wrapDenseMatrix([\n [data[1][1] / det, -data[0][1] / det],\n [-data[1][0] / det, data[0][0] / det],\n ]);\n }\n\n const result = Array.from({ length: n }, () => Array(n).fill(0));\n for (let col = 0; col < n; col++) {\n const b = Array.from({ length: n }, (_, i) => (i === col ? 1 : 0));\n const x = linearSolve(data, wrapDenseMatrix(b.map((v) => [v])));\n const xData = unwrapDenseMatrix(x);\n for (let row = 0; row < n; row++) {\n result[row][col] = xData[row][0];\n }\n }\n return wrapDenseMatrix(result);\n}\n\n/**\n * @param {any} matrix\n */\nfunction _rref(matrix) {\n const data = unwrapDenseMatrix(matrix).map((/** @type {any} */ row) => [...row]);\n let lead = 0;\n const rowCount = data.length;\n const colCount = data[0].length;\n\n for (let r = 0; r < rowCount; r++) {\n if (lead >= colCount) {\n break;\n }\n let i = r;\n while (Math.abs(data[i][lead]) < 1e-12) {\n i++;\n if (i === rowCount) {\n i = r;\n lead++;\n if (lead >= colCount) {\n break;\n }\n }\n }\n if (lead >= colCount) {\n break;\n }\n [data[r], data[i]] = [data[i], data[r]];\n const pivot = data[r][lead];\n for (let j = 0; j < colCount; j++) {\n data[r][j] /= pivot;\n }\n for (let i = 0; i < rowCount; i++) {\n if (i !== r) {\n const factor = data[i][lead];\n for (let j = 0; j < colCount; j++) {\n data[i][j] -= factor * data[r][j];\n }\n }\n }\n lead++;\n }\n return wrapDenseMatrix(data);\n}\n\n/**\n * @param {any[]} a\n * @param {any[]} b\n */\nfunction _cross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n/**\n * @param {any} matrix\n */\nfunction _eig2x2(matrix) {\n const data = unwrapDenseMatrix(matrix);\n validateSquareMatrix(matrix);\n const [[a, b], [c, d]] = data;\n const trace = a + d;\n const det = a * d - b * c;\n const disc = trace * trace - 4 * det;\n if (disc < 0) {\n throw new Error('Complex eigenvalues not supported');\n }\n const sqrtDisc = Math.sqrt(disc);\n const lambda1 = (trace + sqrtDisc) / 2;\n const lambda2 = (trace - sqrtDisc) / 2;\n\n // Solve (A - lambda*I)v = 0: pick non-zero row to solve for v1:v2 ratio\n const eigenvec = (/** @type {number} */ lambda) => {\n if (Math.abs(b) > 1e-12) {\n return [1, (lambda - a) / b];\n }\n if (Math.abs(c) > 1e-12) {\n return [(lambda - d) / c, 1];\n }\n return [1, 0];\n };\n\n const v1 = eigenvec(lambda1);\n const norm1 = Math.sqrt(v1[0] * v1[0] + v1[1] * v1[1]);\n const v2 = eigenvec(lambda2);\n const norm2 = Math.sqrt(v2[0] * v2[0] + v2[1] * v2[1]);\n\n return {\n values: [lambda1, lambda2],\n vectors: wrapDenseMatrix([\n [v1[0] / norm1, v2[0] / norm2],\n [v1[1] / norm1, v2[1] / norm2],\n ]),\n };\n}\n\n/**\n * @param {any[]} matrix\n */\nfunction _cholesky(matrix) {\n const data = unwrapDenseMatrix(matrix);\n validateSquareMatrix(matrix);\n const n = data.length;\n const L = Array.from({ length: n }, () => Array(n).fill(0));\n\n for (let j = 0; j < n; j++) {\n let sum = 0;\n for (let k = 0; k < j; k++) {\n sum += L[j][k] * L[j][k];\n }\n const val = data[j][j] - sum;\n if (val <= 0) {\n throw new Error('Matrix is not positive definite');\n }\n L[j][j] = Math.sqrt(val);\n for (let i = j + 1; i < n; i++) {\n sum = 0;\n for (let k = 0; k < j; k++) {\n sum += L[i][k] * L[j][k];\n }\n L[i][j] = (data[i][j] - sum) / L[j][j];\n }\n }\n return wrapDenseMatrix(L);\n}\n\n/**\n * @param {any} matrix\n */\nfunction _svd(matrix) {\n const data = unwrapDenseMatrix(matrix);\n const m = data.length;\n const n = data[0].length;\n\n if (m !== 2 || n !== 2) {\n throw new Error('svd() currently supports 2x2 matrices only');\n }\n\n const ata = [\n [\n data[0][0] * data[0][0] + data[1][0] * data[1][0],\n data[0][0] * data[0][1] + data[1][0] * data[1][1],\n ],\n [\n data[0][1] * data[0][0] + data[1][1] * data[1][0],\n data[0][1] * data[0][1] + data[1][1] * data[1][1],\n ],\n ];\n\n const eigResult = _eig2x2(wrapDenseMatrix(ata));\n const S = [\n Math.sqrt(Math.max(0, eigResult.values[0])),\n Math.sqrt(Math.max(0, eigResult.values[1])),\n ];\n const vecData = unwrapDenseMatrix(eigResult.vectors);\n const V = vecData;\n\n const U = [\n [\n (data[0][0] * V[0][0] + data[0][1] * V[1][0]) / (S[0] || 1),\n (data[0][0] * V[0][1] + data[0][1] * V[1][1]) / (S[1] || 1),\n ],\n [\n (data[1][0] * V[0][0] + data[1][1] * V[1][0]) / (S[0] || 1),\n (data[1][0] * V[0][1] + data[1][1] * V[1][1]) / (S[1] || 1),\n ],\n ];\n\n return {\n U: wrapDenseMatrix(U),\n S: wrapDenseMatrix([\n [S[0], 0],\n [0, S[1]],\n ]),\n V: wrapDenseMatrix(V),\n };\n}\n\nexport const internalFunctions = {\n fraction: (/** @type {number} */ n, /** @type {number} */ d) => makeFrac(n, d),\n\n numer: (/** @type {any} */ v) => numer(v),\n\n denom: (/** @type {any} */ v) => denom(v),\n\n isFraction: (/** @type {any} */ v) => isFraction(v),\n\n bignumber: (/** @type {any} */ n) => makeBN(n),\n\n isBigNumber: (/** @type {any} */ v) => isBigNumber(v),\n\n max: (/** @type {any[]} */ ...args) => {\n if (!args.length) {\n throw new Error('max() requires arguments');\n }\n return Math.max(...args);\n },\n\n min: (/** @type {any[]} */ ...args) => {\n if (!args.length) {\n throw new Error('min() requires arguments');\n }\n return Math.min(...args);\n },\n\n abs: (/** @type {number} */ x) => Math.abs(x),\n\n round: (/** @type {number} */ x) => Math.round(x),\n\n floor: (/** @type {number} */ x) => Math.floor(x),\n\n ceil: (/** @type {number} */ x) => Math.ceil(x),\n\n sqrt: (/** @type {number} */ x) => {\n if (x < 0) {\n throw new Error('sqrt() domain error');\n }\n return Math.sqrt(x);\n },\n\n pow: (/** @type {number} */ a, /** @type {number} */ b) => a ** b,\n\n det: (/** @type {any[]} */ matrix) => determinant(matrix),\n\n polynomialRoot: (/** @type {any} */ ...coefficients) => polynomialRoots(...coefficients),\n\n lsolve: (\n /** @type {any} */ a,\n /** @type {{ exprify: string; data: any; size: number[]; }} */ b\n ) => linearSolve(a, b),\n\n lup: (/** @type {any} */ matrix) => lupDecomposition(matrix),\n\n lyap: (/** @type {any} */ a, /** @type {any} */ q) => solveLyapunov(a, q),\n\n qr: (/** @type {any} */ matrix) => qrDecomposition(matrix),\n\n transpose: (/** @type {any} */ matrix) => wrapDenseMatrix(transpose(unwrapDenseMatrix(matrix))),\n\n inverse: (/** @type {any[]} */ matrix) => _inverse(matrix),\n\n trace: (/** @type {any[]} */ matrix) => {\n const data = unwrapDenseMatrix(matrix);\n validateSquareMatrix(matrix);\n return data.reduce(\n (\n /** @type {any} */ sum,\n /** @type {{ [x: string]: any; }} */ row,\n /** @type {string | number} */ i\n ) => sum + row[i],\n 0\n );\n },\n\n rank: (/** @type {any} */ matrix) => {\n const rrefData = unwrapDenseMatrix(_rref(matrix));\n return rrefData.filter((/** @type {any[]} */ row) => row.some((v) => Math.abs(v) > 1e-10))\n .length;\n },\n\n rref: (/** @type {any} */ matrix) => _rref(matrix),\n\n minor: (/** @type {any[]} */ matrix, /** @type {any} */ i, /** @type {any} */ j) => {\n const data = unwrapDenseMatrix(matrix);\n validateSquareMatrix(matrix);\n const sub = data\n .filter((/** @type {any} */ _, /** @type {any} */ ri) => ri !== i)\n .map((/** @type {any[]} */ row) => row.filter((_, cj) => cj !== j));\n return determinant(sub);\n },\n\n cofactor: (/** @type {any} */ matrix, /** @type {any} */ i, /** @type {any} */ j) => {\n const data = unwrapDenseMatrix(matrix);\n const sub = data\n .filter((/** @type {any} */ _, /** @type {any} */ ri) => ri !== i)\n .map((/** @type {any[]} */ row) =>\n row.filter((/** @type {any} */ _, /** @type {any} */ cj) => cj !== j)\n );\n return ((i + j) % 2 === 0 ? 1 : -1) * determinant(sub);\n },\n\n cross: (/** @type {any} */ a, /** @type {any} */ b) => {\n const v1 = unwrapDenseMatrix(a);\n const v2 = unwrapDenseMatrix(b);\n if (!Array.isArray(v1) || !Array.isArray(v2) || v1.length !== 3 || v2.length !== 3) {\n throw new Error('cross() requires two 3D vectors');\n }\n return _cross(v1, v2);\n },\n\n normalize: (/** @type {any} */ v) => {\n const data = unwrapDenseMatrix(v);\n if (!Array.isArray(data)) {\n throw new Error('normalize() expects a vector');\n }\n const norm = vectorNorm(data);\n if (norm === 0) {\n throw new Error('Cannot normalize zero vector');\n }\n return scaleVector(data, 1 / norm);\n },\n\n angle: (/** @type {any} */ a, /** @type {any} */ b) => {\n const v1 = unwrapDenseMatrix(a);\n const v2 = unwrapDenseMatrix(b);\n if (!Array.isArray(v1) || !Array.isArray(v2)) {\n throw new Error('angle() expects vectors');\n }\n const dot = dotProduct(v1, v2);\n const norms = vectorNorm(v1) * vectorNorm(v2);\n if (norms === 0) {\n throw new Error('Zero vector angle is undefined');\n }\n return Math.acos(Math.max(-1, Math.min(1, dot / norms)));\n },\n\n projection: (/** @type {any} */ a, /** @type {any} */ b) => {\n const v1 = unwrapDenseMatrix(a);\n const v2 = unwrapDenseMatrix(b);\n if (!Array.isArray(v1) || !Array.isArray(v2)) {\n throw new Error('projection() expects vectors');\n }\n const dot = dotProduct(v1, v2);\n const normB = vectorNorm(v2);\n if (normB === 0) {\n throw new Error('Zero vector projection undefined');\n }\n return dot / normB;\n },\n\n identity: (/** @type {any} */ n) => wrapDenseMatrix(_identity(n)),\n\n eye: (/** @type {any} */ n) => wrapDenseMatrix(_identity(n)),\n\n zeros: (/** @type {any} */ n, /** @type {undefined} */ m) => {\n if (m === undefined) {\n m = n;\n }\n return wrapDenseMatrix(Array.from({ length: n }, () => Array(m).fill(0)));\n },\n\n ones: (/** @type {any} */ n, /** @type {undefined} */ m) => {\n if (m === undefined) {\n m = n;\n }\n return wrapDenseMatrix(Array.from({ length: n }, () => Array(m).fill(1)));\n },\n\n diag: (/** @type {any} */ x) => {\n const arr = unwrapDenseMatrix(x);\n if (!Array.isArray(arr)) {\n throw new Error('diag() expects an array');\n }\n return wrapDenseMatrix(\n Array.from({ length: arr.length }, (_, i) =>\n Array.from({ length: arr.length }, (_, j) => (i === j ? arr[i] : 0))\n )\n );\n },\n\n cholesky: (/** @type {any[]} */ matrix) => _cholesky(matrix),\n\n eig: (/** @type {any[]} */ matrix) => _eig2x2(matrix),\n\n svd: (/** @type {any} */ matrix) => _svd(matrix),\n\n simplify: (/** @type {string} */ expression) => {\n if (typeof expression !== 'string') {\n throw new Error('simplify() expects an expression string');\n }\n return simplifyExpression(expression);\n },\n\n derivative: (/** @type {string} */ expression, variable = 'x') => {\n if (typeof expression !== 'string' || typeof variable !== 'string') {\n throw new Error('derivative() expects expression and variable strings');\n }\n return derivativeExpression(expression, variable);\n },\n\n sin: (/** @type {number} */ x) => Math.sin(x),\n\n cos: (/** @type {number} */ x) => Math.cos(x),\n\n tan: (/** @type {number} */ x) => Math.tan(x),\n\n sind: (/** @type {number} */ x) => Math.sin((x * Math.PI) / 180),\n\n cosd: (/** @type {number} */ x) => Math.cos((x * Math.PI) / 180),\n\n tand: (/** @type {number} */ x) => Math.tan((x * Math.PI) / 180),\n\n asind: (/** @type {number} */ x) => (Math.asin(x) * 180) / Math.PI,\n\n acosd: (/** @type {number} */ x) => (Math.acos(x) * 180) / Math.PI,\n\n atand: (/** @type {number} */ x) => (Math.atan(x) * 180) / Math.PI,\n\n atand2: (/** @type {number} */ y, /** @type {number} */ x) => (Math.atan2(y, x) * 180) / Math.PI,\n\n asin: (/** @type {number} */ x) => Math.asin(x),\n\n acos: (/** @type {number} */ x) => Math.acos(x),\n\n atan: (/** @type {number} */ x) => Math.atan(x),\n\n log: (/** @type {number} */ x) => {\n if (x <= 0) {\n throw new Error('log() domain error');\n }\n return Math.log(x);\n },\n\n log10: (/** @type {number} */ x) => {\n if (x <= 0) {\n throw new Error('log10() domain error');\n }\n return Math.log10(x);\n },\n\n exp: (/** @type {number} */ x) => Math.exp(x),\n\n random: () => Math.random(),\n\n and: (/** @type {any} */ a, /** @type {any} */ b) => Boolean(a && b),\n\n or: (/** @type {any} */ a, /** @type {any} */ b) => Boolean(a || b),\n\n not: (/** @type {any} */ a) => !a,\n '!': (/** @type {any} */ a) => !a,\n\n eq: (/** @type {any} */ a, /** @type {any} */ b) => a === b,\n\n neq: (/** @type {any} */ a, /** @type {any} */ b) => a !== b,\n notEqual: (/** @type {any} */ a, /** @type {any} */ b) => a !== b,\n\n gt: (/** @type {number} */ a, /** @type {number} */ b) => a > b,\n greaterThan: (/** @type {number} */ a, /** @type {number} */ b) => a > b,\n\n lt: (/** @type {number} */ a, /** @type {number} */ b) => a < b,\n lessThan: (/** @type {number} */ a, /** @type {number} */ b) => a < b,\n\n gte: (/** @type {number} */ a, /** @type {number} */ b) => a >= b,\n greaterThanOrEqual: (/** @type {number} */ a, /** @type {number} */ b) => a >= b,\n\n lte: (/** @type {number} */ a, /** @type {number} */ b) => a <= b,\n lessThanOrEqual: (/** @type {number} */ a, /** @type {number} */ b) => a <= b,\n\n clamp: (/** @type {number} */ x, /** @type {number} */ min, /** @type {number} */ max) => {\n if (min > max) {\n throw new Error('clamp(): min > max');\n }\n return Math.min(Math.max(x, min), max);\n },\n\n if: (/** @type {any} */ condition, /** @type {any} */ a, /** @type {any} */ b) =>\n condition ? a : b,\n\n typeof: (/** @type {any} */ x) => typeof x,\n\n length: (/** @type {string | any[]} */ x) => {\n if (typeof x === 'string' || Array.isArray(x)) {\n return x.length;\n }\n throw new Error('length() expects string or array');\n },\n\n sum: (/** @type {any[]} */ ...args) => {\n if (!args.length) {\n throw new Error('sum() requires at least one argument');\n }\n return args.reduce((a, b) => a + b, 0);\n },\n\n prod: (/** @type {any[]} */ ...args) => {\n if (!args.length) {\n throw new Error('prod() requires at least one argument');\n }\n return args.reduce((a, b) => a * b, 1);\n },\n\n mean: (/** @type {any[]} */ ...args) => {\n if (!args.length) {\n throw new Error('mean() requires at least one argument');\n }\n return args.reduce((a, b) => a + b, 0) / args.length;\n },\n\n median: (/** @type {any[]} */ ...args) => {\n if (!args.length) {\n throw new Error('median() requires at least one argument');\n }\n const sorted = [...args].sort((a, b) => a - b);\n const mid = Math.floor(sorted.length / 2);\n return sorted.length % 2 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2;\n },\n\n mode: (/** @type {any[]} */ ...args) => {\n if (!args.length) {\n throw new Error('mode() requires at least one argument');\n }\n const freq = new Map();\n args.forEach((v) => freq.set(v, (freq.get(v) || 0) + 1));\n let maxCount = 0;\n let result = args[0];\n for (const [val, count] of freq) {\n if (count > maxCount) {\n maxCount = count;\n result = val;\n }\n }\n return result;\n },\n\n std: (/** @type {any[]} */ ...args) => {\n if (args.length < 2) {\n throw new Error('std() requires at least two values');\n }\n const m = args.reduce((a, b) => a + b, 0) / args.length;\n return Math.sqrt(args.reduce((sum, v) => sum + (v - m) ** 2, 0) / (args.length - 1));\n },\n\n variance: (/** @type {any[]} */ ...args) => {\n if (args.length < 2) {\n throw new Error('variance() requires at least two values');\n }\n const m = args.reduce((a, b) => a + b, 0) / args.length;\n return args.reduce((sum, v) => sum + (v - m) ** 2, 0) / (args.length - 1);\n },\n\n range: (/** @type {any[]} */ ...args) => {\n if (!args.length) {\n throw new Error('range() requires at least one argument');\n }\n return Math.max(...args) - Math.min(...args);\n },\n\n gcd: (/** @type {number} */ a, /** @type {number} */ b) => _gcd(a, b),\n\n lcm: (/** @type {number} */ a, /** @type {number} */ b) => {\n if (a === 0 || b === 0) {\n return 0;\n }\n return Math.abs((a / _gcd(a, b)) * b);\n },\n\n factorial: (/** @type {any} */ n) => {\n if (!Number.isInteger(n) || n < 0) {\n throw new Error('factorial() requires a non-negative integer');\n }\n if (n === 0 || n === 1) {\n return 1;\n }\n let r = 1;\n for (let i = 2; i <= n; i++) {\n r *= i;\n }\n return r;\n },\n\n isPrime: (/** @type {any} */ n) => {\n if (!Number.isInteger(n) || n < 2) {\n return false;\n }\n if (n === 2) {\n return true;\n }\n if (n % 2 === 0) {\n return false;\n }\n for (let i = 3; i * i <= n; i += 2) {\n if (n % i === 0) {\n return false;\n }\n }\n return true;\n },\n\n primeFactors: (/** @type {any} */ n) => {\n if (!Number.isInteger(n) || n < 2) {\n throw new Error('primeFactors() requires an integer >= 2');\n }\n const factors = [];\n let m = n;\n for (let i = 2; i * i <= m; i++) {\n while (m % i === 0) {\n factors.push(i);\n m /= i;\n }\n }\n if (m > 1) {\n factors.push(m);\n }\n return factors;\n },\n\n fibonacci: (/** @type {any} */ n) => {\n if (!Number.isInteger(n) || n < 0) {\n throw new Error('fibonacci() requires a non-negative integer');\n }\n if (n <= 1) {\n return n;\n }\n let a = 0;\n let b = 1;\n for (let i = 2; i <= n; i++) {\n const t = a + b;\n a = b;\n b = t;\n }\n return b;\n },\n\n nCr: (/** @type {any} */ n, /** @type {any} */ r) => {\n if (!Number.isInteger(n) || !Number.isInteger(r) || n < 0 || r < 0) {\n throw new Error('nCr() requires non-negative integers');\n }\n if (r > n) {\n return 0;\n }\n if (r === 0 || r === n) {\n return 1;\n }\n r = Math.min(r, n - r);\n let result = 1;\n for (let i = 1; i <= r; i++) {\n result = (result * (n - r + i)) / i;\n }\n return result;\n },\n\n nPr: (/** @type {any} */ n, /** @type {any} */ r) => {\n if (!Number.isInteger(n) || !Number.isInteger(r) || n < 0 || r < 0) {\n throw new Error('nPr() requires non-negative integers');\n }\n if (r > n) {\n return 0;\n }\n let result = 1;\n for (let i = 0; i < r; i++) {\n result *= n - i;\n }\n return result;\n },\n\n gamma: (/** @type {any} */ n) => _gamma(n),\n\n sinh: (/** @type {number} */ x) => Math.sinh(x),\n\n cosh: (/** @type {number} */ x) => Math.cosh(x),\n\n tanh: (/** @type {number} */ x) => Math.tanh(x),\n\n asinh: (/** @type {number} */ x) => Math.asinh(x),\n\n acosh: (/** @type {number} */ x) => Math.acosh(x),\n\n atanh: (/** @type {number} */ x) => Math.atanh(x),\n\n sec: (/** @type {number} */ x) => {\n const c = Math.cos(x);\n if (Math.abs(c) < 1e-15) {\n throw new Error('sec() undefined for this input');\n }\n return 1 / c;\n },\n\n csc: (/** @type {number} */ x) => {\n const s = Math.sin(x);\n if (Math.abs(s) < 1e-15) {\n throw new Error('csc() undefined for this input');\n }\n return 1 / s;\n },\n\n cot: (/** @type {number} */ x) => {\n const s = Math.sin(x);\n if (Math.abs(s) < 1e-15) {\n throw new Error('cot() undefined for this input');\n }\n return Math.cos(x) / s;\n },\n\n trunc: (/** @type {number} */ x) => Math.trunc(x),\n\n sign: (/** @type {number} */ x) => Math.sign(x),\n\n frac: (/** @type {number} */ x) => x - Math.trunc(x),\n\n split: (\n /** @type {string} */ str,\n /** @type {{ [Symbol.split](string: string, limit?: number): string[]; }} */ sep\n ) => {\n if (typeof str !== 'string') {\n throw new Error('split() expects a string');\n }\n return str.split(sep);\n },\n\n join: (/** @type {any[]} */ arr, /** @type {string | undefined} */ sep) => {\n if (!Array.isArray(arr)) {\n throw new Error('join() expects an array');\n }\n return arr.join(sep);\n },\n\n upper: (/** @type {string} */ str) => {\n if (typeof str !== 'string') {\n throw new Error('upper() expects a string');\n }\n return str.toUpperCase();\n },\n\n lower: (/** @type {string} */ str) => {\n if (typeof str !== 'string') {\n throw new Error('lower() expects a string');\n }\n return str.toLowerCase();\n },\n\n trim: (/** @type {string} */ str) => {\n if (typeof str !== 'string') {\n throw new Error('trim() expects a string');\n }\n return str.trim();\n },\n\n replace: (\n /** @type {string} */ str,\n /** @type {{ [Symbol.replace](string: string, replaceValue: string): string; }} */ pattern,\n /** @type {string} */ replacement\n ) => {\n if (typeof str !== 'string') {\n throw new Error('replace() expects a string');\n }\n return str.replace(pattern, replacement);\n },\n\n substring: (\n /** @type {string} */ str,\n /** @type {number} */ start,\n /** @type {number | undefined} */ end\n ) => {\n if (typeof str !== 'string') {\n throw new Error('substring() expects a string');\n }\n return str.substring(start, end);\n },\n\n // ---- Reciprocal trig ----\n acot: (/** @type {number} */ x) => {\n if (x === 0) {\n return Math.PI / 2;\n }\n return Math.atan(1 / x);\n },\n\n asec: (/** @type {number} */ x) => {\n if (x < 1 && x > -1) {\n throw new Error('asec() domain error');\n }\n return Math.acos(1 / x);\n },\n\n acsc: (/** @type {number} */ x) => {\n if (x < 1 && x > -1) {\n throw new Error('acsc() domain error');\n }\n return Math.asin(1 / x);\n },\n\n acoth: (/** @type {number} */ x) => {\n if (Math.abs(x) <= 1) {\n throw new Error('acoth() domain error');\n }\n return Math.atanh(1 / x);\n },\n\n asech: (/** @type {number} */ x) => {\n if (x <= 0 || x > 1) {\n throw new Error('asech() domain error');\n }\n return Math.acosh(1 / x);\n },\n\n acsch: (/** @type {number} */ x) => {\n if (x === 0) {\n throw new Error('acsch() domain error');\n }\n return Math.asinh(1 / x);\n },\n\n // ---- Stats ----\n quantile: (/** @type {any[]} */ arr, /** @type {number} */ p) => {\n if (!Array.isArray(arr) || arr.length === 0) {\n throw new Error('quantile() expects a non-empty array');\n }\n if (p < 0 || p > 1) {\n throw new Error('quantile() p must be between 0 and 1');\n }\n const sorted = [...arr].sort((a, b) => a - b);\n const idx = p * (sorted.length - 1);\n const lo = Math.floor(idx);\n const hi = Math.ceil(idx);\n return lo === hi ? sorted[lo] : sorted[lo] + (idx - lo) * (sorted[hi] - sorted[lo]);\n },\n\n percentile: (/** @type {any[]} */ arr, /** @type {number} */ p) => {\n if (p < 0 || p > 100) {\n throw new Error('percentile() p must be between 0 and 100');\n }\n return internalFunctions.quantile(arr, p / 100);\n },\n\n covariance: (/** @type {number[]} */ x, /** @type {number[]} */ y) => {\n if (!Array.isArray(x) || !Array.isArray(y) || x.length < 2 || x.length !== y.length) {\n throw new Error('covariance() expects two arrays of equal length >= 2');\n }\n const mx = x.reduce((s, v) => s + v, 0) / x.length;\n const my = y.reduce((s, v) => s + v, 0) / y.length;\n return x.reduce((s, v, i) => s + (v - mx) * (y[i] - my), 0) / (x.length - 1);\n },\n\n corr: (/** @type {number[]} */ x, /** @type {number[]} */ y) => {\n const cov = internalFunctions.covariance(x, y);\n const sx = Math.sqrt(internalFunctions.covariance(x, x));\n const sy = Math.sqrt(internalFunctions.covariance(y, y));\n if (sx === 0 || sy === 0) {\n throw new Error('corr() zero variance');\n }\n return cov / (sx * sy);\n },\n\n randomInt: (/** @type {number} */ min, /** @type {number} */ max) => {\n if (!Number.isInteger(min) || !Number.isInteger(max)) {\n throw new Error('randomInt() expects integers');\n }\n return Math.floor(Math.random() * (max - min + 1)) + min;\n },\n\n randomNormal: (/** @type {number} */ mean, /** @type {number} */ std) => {\n if (std <= 0) {\n throw new Error('randomNormal() std must be > 0');\n }\n let u = 0;\n let v = 0;\n while (u === 0) {\n u = Math.random();\n }\n while (v === 0) {\n v = Math.random();\n }\n return mean + std * Math.sqrt(-2 * Math.log(u)) * Math.cos(2 * Math.PI * v);\n },\n\n // ---- Special functions ----\n erf: (/** @type {number} */ x) => {\n if (x === 0) {\n return 0;\n }\n // Abramowitz & Stegun approximation (max error 1.5e-7)\n const t = 1 / (1 + 0.3275911 * Math.abs(x));\n const a = [0.254829592, -0.284496736, 1.421413741, -1.453152027, 1.061405429];\n let p = a[4] * t + a[3];\n p = p * t + a[2];\n p = p * t + a[1];\n p = p * t + a[0];\n p = p * t;\n const result = 1 - p * Math.exp(-x * x);\n return x >= 0 ? result : -result;\n },\n\n lgamma: (/** @type {number} */ x) => {\n if (x <= 0) {\n throw new Error('lgamma() domain error (x > 0 required)');\n }\n // Stirling's approximation\n if (x < 12) {\n // Use recurrence: lgamma(x) = lgamma(x+1) - ln(x)\n let v = x;\n let r = 0;\n while (v < 12) {\n r -= Math.log(v);\n v += 1;\n }\n return r + internalFunctions.lgamma(v);\n }\n const inv = 1 / x;\n const s = (1 / 12 - (inv * inv) / 360 + (inv * inv * inv * inv) / 1260) * inv;\n return (x - 0.5) * Math.log(x) - x + 0.9189385332046727 + s;\n },\n\n beta: (/** @type {number} */ a, /** @type {number} */ b) => {\n if (a <= 0 || b <= 0) {\n throw new Error('beta() domain error');\n }\n return Math.exp(\n internalFunctions.lgamma(a) + internalFunctions.lgamma(b) - internalFunctions.lgamma(a + b)\n );\n },\n\n // ---- Numeric helpers ----\n hypot: (.../** @type {number[]} */ args) => Math.hypot(...args),\n\n cbrt: (/** @type {number} */ x) => Math.cbrt(x),\n\n log2: (/** @type {number} */ x) => {\n if (x <= 0) {\n throw new Error('log2() domain error');\n }\n return Math.log2(x);\n },\n\n log1p: (/** @type {number} */ x) => {\n if (x <= -1) {\n throw new Error('log1p() domain error');\n }\n return Math.log1p(x);\n },\n\n expm1: (/** @type {number} */ x) => Math.expm1(x),\n\n // ---- Bitwise ----\n bitAnd: (/** @type {number} */ a, /** @type {number} */ b) => {\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n throw new Error('bitAnd() expects integers');\n }\n return a & b;\n },\n\n bitOr: (/** @type {number} */ a, /** @type {number} */ b) => {\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n throw new Error('bitOr() expects integers');\n }\n return a | b;\n },\n\n bitXor: (/** @type {number} */ a, /** @type {number} */ b) => {\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n throw new Error('bitXor() expects integers');\n }\n return a ^ b;\n },\n\n bitNot: (/** @type {number} */ a) => {\n if (!Number.isInteger(a)) {\n throw new Error('bitNot() expects an integer');\n }\n return ~a;\n },\n};\n","/** @param {string | any[]} tokens */\nexport function buildAST(tokens) {\n let current = 0;\n\n const peek = () => tokens[current];\n const consume = () => tokens[current++];\n const lastPos = () => {\n const t = current > 0 ? tokens[current - 1] : null;\n return t && t.pos !== undefined ? t.pos : -1;\n };\n const tokenPos = () => {\n const t = peek();\n return t && t.pos !== undefined ? t.pos : -1;\n };\n\n const nodeAt = (/** @type {any} */ node) => {\n const pos = lastPos();\n if (pos >= 0) {\n node.pos = pos;\n }\n return node;\n };\n\n const syntaxError = (/** @type {string} */ msg) => {\n const pos = tokenPos() >= 0 ? tokenPos() : lastPos();\n const at = pos >= 0 ? ` at position ${pos}` : '';\n throw new Error(`${msg}${at}`);\n };\n\n const match = (/** @type {string} */ type, /** @type {string | undefined} */ value) => {\n const t = peek();\n if (!t) {\n return false;\n }\n\n if (t.type !== type) {\n return false;\n }\n\n if (value !== undefined && t.value !== value) {\n return false;\n }\n\n current++;\n return true;\n };\n\n const parseSliceOrIndex = () => {\n let start = null;\n\n if (!(peek()?.type === 'Colon' || peek()?.type === 'Comma' || peek()?.type === 'ArrayEnd')) {\n start = parseExpression();\n }\n\n if (match('Colon', undefined)) {\n let end = null;\n\n if (!(peek()?.type === 'Comma' || peek()?.type === 'ArrayEnd')) {\n end = parseExpression();\n }\n\n return {\n type: 'SliceExpression',\n start,\n end,\n };\n }\n\n return start;\n };\n\n function parsePrimary() {\n const token = consume();\n if (!token) {\n syntaxError('Unexpected end of input');\n }\n\n const withPos = (/** @type {any} */ node) => {\n if (token.pos !== undefined) {\n node.pos = token.pos;\n }\n return node;\n };\n\n switch (token.type) {\n case 'Number':\n case 'BigInt':\n case 'Boolean':\n case 'String':\n return withPos({ type: 'Literal', value: token.value });\n\n case 'ImaginaryLiteral':\n return withPos({ type: 'ImaginaryLiteral', value: token.value });\n\n case 'NumberWithUnit':\n return withPos({\n type: 'UnitLiteral',\n value: token.value,\n unit: token.unit,\n });\n\n case 'Identifier':\n return withPos({ type: 'Identifier', name: token.name });\n\n case 'Function':\n return withPos({\n type: 'Identifier',\n name: token.name,\n });\n\n case 'Parenthesis':\n if (token.value === '(') {\n const expr = parseExpression();\n\n if (!match('Parenthesis', ')')) {\n syntaxError(\"Expected ')'\");\n }\n\n return expr;\n }\n\n // falls through\n\n case 'ArrayStart': {\n const rows = [];\n let currentRow = [];\n\n if (!match('ArrayEnd', undefined)) {\n while (true) {\n currentRow.push(parseExpression());\n\n if (match('Comma', undefined)) {\n continue;\n }\n\n if (match('Semicolon', undefined)) {\n rows.push(currentRow);\n currentRow = [];\n continue;\n }\n\n if (match('ArrayEnd', undefined)) {\n rows.push(currentRow);\n break;\n }\n\n syntaxError(\"Expected ',', ';', or ']'\");\n }\n }\n\n if (!rows.length) {\n return withPos({ type: 'ArrayExpression', elements: [] });\n }\n\n if (rows.length === 1) {\n return withPos({ type: 'ArrayExpression', elements: rows[0] });\n }\n\n return withPos({\n type: 'ArrayExpression',\n elements: rows.map((elements) => ({\n type: 'ArrayExpression',\n elements,\n })),\n });\n }\n\n case 'BlockStart': {\n const properties = [];\n\n if (!match('BlockEnd', undefined)) {\n do {\n const keyToken = consume();\n\n if (keyToken.type !== 'Identifier' && keyToken.type !== 'String') {\n syntaxError('Invalid object key');\n }\n\n if (!match('Colon', undefined)) {\n syntaxError(\"Expected ':' after key\");\n }\n\n const value = parseExpression();\n\n properties.push({\n key: keyToken.value,\n value,\n });\n } while (match('Comma', undefined));\n\n if (!match('BlockEnd', undefined)) {\n syntaxError(\"Expected '}'\");\n }\n }\n\n return withPos({ type: 'ObjectExpression', properties });\n }\n }\n\n syntaxError(`Unexpected token: ${JSON.stringify(token.value || token.name || token.type)}`);\n }\n\n function parseMember() {\n let object = parsePrimary();\n\n while (true) {\n if (match('ArrayStart', undefined)) {\n const selectors = [];\n\n if (!match('ArrayEnd', undefined)) {\n do {\n selectors.push(parseSliceOrIndex());\n } while (match('Comma', undefined));\n\n if (!match('ArrayEnd', undefined)) {\n syntaxError(\"Expected ']'\");\n }\n }\n\n object = nodeAt({\n type: 'IndexExpression',\n object,\n selectors,\n });\n continue;\n }\n\n if (match('Dot', undefined)) {\n const property = consume();\n\n if (property.type !== 'Identifier') {\n syntaxError(\"Expected property after '.'\");\n }\n\n object = nodeAt({\n type: 'MemberExpression',\n object,\n property: { type: 'Identifier', name: property.value },\n optional: false,\n });\n continue;\n }\n\n if (match('Operator', '?.')) {\n const property = consume();\n\n object = nodeAt({\n type: 'MemberExpression',\n object,\n property: { type: 'Identifier', name: property.value },\n optional: true,\n });\n continue;\n }\n\n break;\n }\n\n return object;\n }\n\n function parseCallChain() {\n let expr = parseMember();\n\n while (peek()?.type === 'Parenthesis' && peek()?.value === '(') {\n consume();\n\n const args = [];\n\n if (!(peek()?.type === 'Parenthesis' && peek()?.value === ')')) {\n do {\n if (match('Spread', undefined)) {\n const arg = parseExpression();\n args.push({ type: 'SpreadElement', argument: arg });\n } else {\n args.push(parseExpression());\n }\n } while (match('Comma', undefined));\n }\n\n if (!match('Parenthesis', ')')) {\n syntaxError(\"Expected ')'\");\n }\n\n expr = nodeAt({\n type: 'CallExpression',\n callee: expr,\n arguments: args,\n });\n }\n\n return expr;\n }\n\n function parseUnary() {\n if (match('UnaryOperator', undefined)) {\n const operator = tokens[current - 1].value;\n\n return nodeAt({\n type: 'UnaryExpression',\n operator,\n argument: parseUnary(),\n });\n }\n\n return parseCallChain();\n }\n\n function parsePower() {\n const left = parseUnary();\n\n if (match('Operator', '^')) {\n const right = parsePower();\n return nodeAt({\n type: 'BinaryExpression',\n operator: '^',\n left,\n right,\n });\n }\n\n return left;\n }\n\n function parseMultiplication() {\n let left = parsePower();\n\n while (match('Operator', '*') || match('Operator', '/') || match('Operator', '%')) {\n const operator = tokens[current - 1].value;\n const right = parsePower();\n\n left = nodeAt({\n type: 'BinaryExpression',\n operator,\n left,\n right,\n });\n }\n\n return left;\n }\n\n function parseAddition() {\n let left = parseMultiplication();\n\n while (match('Operator', '+') || match('Operator', '-')) {\n const operator = tokens[current - 1].value;\n const right = parseMultiplication();\n\n left = nodeAt({\n type: 'BinaryExpression',\n operator,\n left,\n right,\n });\n }\n\n return left;\n }\n\n function parseUnitConversion() {\n const left = parseAddition();\n\n const nextKeyword = peek();\n if (nextKeyword?.type === 'Keyword' && ['to', 'in'].includes(nextKeyword.value)) {\n consume();\n const next = consume();\n\n if (!next || next.type !== 'Unit') {\n syntaxError(`Expected unit after '${nextKeyword.value}'`);\n }\n\n return nodeAt({\n type: 'UnitConversion',\n from: left,\n to: next.value,\n });\n }\n\n return left;\n }\n\n function parseComparison() {\n let left = parseUnitConversion();\n\n while (\n match('Operator', '>') ||\n match('Operator', '<') ||\n match('Operator', '>=') ||\n match('Operator', '<=') ||\n match('Operator', '==')\n ) {\n const operator = tokens[current - 1].value;\n const right = parseUnitConversion();\n\n left = nodeAt({\n type: 'BinaryExpression',\n operator,\n left,\n right,\n });\n }\n\n return left;\n }\n\n function parseLogical() {\n let left = parseComparison();\n\n while (match('Operator', '&&') || match('Operator', '||')) {\n const operator = tokens[current - 1].value;\n const right = parseComparison();\n\n left = nodeAt({\n type: 'LogicalExpression',\n operator,\n left,\n right,\n });\n }\n\n return left;\n }\n\n function parseNullish() {\n let left = parseLogical();\n\n while (match('Operator', '??')) {\n const right = parseLogical();\n\n left = nodeAt({\n type: 'LogicalExpression',\n operator: '??',\n left,\n right,\n });\n }\n\n return left;\n }\n\n function parseTernary() {\n const test = parseNullish();\n\n if (match('Ternary', '?')) {\n const consequent = parseExpression();\n\n if (!match('Ternary', ':')) {\n syntaxError(\"Expected ':' in ternary\");\n }\n\n const alternate = parseExpression();\n\n return nodeAt({\n type: 'ConditionalExpression',\n test,\n consequent,\n alternate,\n });\n }\n\n if (match('Colon', undefined)) {\n const end = parseNullish();\n\n return nodeAt({\n type: 'RangeExpression',\n start: test,\n end,\n });\n }\n\n return test;\n }\n\n function parseLambda() {\n const left = parsePipeline();\n\n if (match('Operator', '->')) {\n let params;\n if (left.type === 'Identifier') {\n params = [left.name];\n } else if (left.type === 'ArrayExpression') {\n params = left.elements.map((/** @type {{ type: string; name: any; }} */ el) => {\n if (el.type !== 'Identifier') {\n syntaxError('Lambda parameter must be an identifier');\n }\n return el.name;\n });\n } else {\n syntaxError('Invalid lambda parameter');\n }\n\n const body = parseLambda();\n\n return nodeAt({\n type: 'ArrowFunctionExpression',\n params,\n body,\n });\n }\n\n return left;\n }\n\n function parsePipeline() {\n let left = parseTernary();\n\n while (match('Operator', '|>')) {\n const right = parseTernary();\n\n left = nodeAt({\n type: 'PipelineExpression',\n left,\n right,\n });\n }\n\n return left;\n }\n\n function parseAssignment() {\n const left = parseLambda();\n\n if (\n match('Operator', '=') ||\n match('Operator', '+=') ||\n match('Operator', '-=') ||\n match('Operator', '*=') ||\n match('Operator', '/=')\n ) {\n const operator = tokens[current - 1].value;\n\n // f(a,b) = expr: treat as function definition, not assignment\n if (left.type === 'CallExpression') {\n const isFunctionTarget =\n left.callee?.type === 'Identifier' &&\n left.arguments.every((/** @type {{ type: string; }} */ arg) => arg.type === 'Identifier');\n\n if (!isFunctionTarget) {\n syntaxError('Invalid function definition');\n }\n\n const right = parseAssignment();\n\n return nodeAt({\n type: 'FunctionAssignmentExpression',\n operator,\n left: {\n type: 'Identifier',\n name: left.callee.name,\n },\n params: left.arguments.map((/** @type {{ name: any; }} */ arg) => arg.name),\n right,\n });\n }\n\n if (\n left.type !== 'Identifier' &&\n left.type !== 'MemberExpression' &&\n left.type !== 'IndexExpression'\n ) {\n syntaxError('Invalid assignment target');\n }\n\n const right = parseAssignment();\n\n return nodeAt({\n type: 'AssignmentExpression',\n operator,\n left,\n right,\n });\n }\n\n return left;\n }\n\n function parseExpression() {\n return parseAssignment();\n }\n\n const ast = parseExpression();\n\n if (current < tokens.length) {\n const t = peek();\n const pos = t && t.pos !== undefined ? ` at position ${t.pos}` : '';\n throw new Error(\n `Unexpected token \"${t ? JSON.stringify(t.value || t.name || t.type) : '?'}\"${pos}`\n );\n }\n\n return ast;\n}\n","import { tokenize } from '../parser/tokenizer.js';\nimport { evaluateAST } from '../parser/evaluator.js';\nimport { createContext } from './context.js';\nimport { mathOperations } from '../math/operations.js';\nimport { createUnitsStore } from '../utils/store.js';\nimport { globalUnits } from '../utils/globalUnits.js';\nimport { createVarStore } from '../variables/store.js';\nimport { createFunctionRegistry } from '../function/registry.js';\nimport { internalFunctions } from '../function/internal.js';\nimport { isDenseMatrixWrapper, serializeExprifyValue, wrapDenseMatrix } from '../utils/matrix.js';\nimport { buildAST } from '../parser/astBuild.js';\nimport { isFraction, formatFraction } from '../math/fraction.js';\nimport { isBigNumber, formatBigNumber } from '../math/bignumber.js';\n\nconst isComplex = (/** @type {any} */ value) =>\n value && typeof value === 'object' && 're' in value && 'im' in value;\n\nconst isUnitValue = (/** @type {any} */ value) =>\n value && typeof value === 'object' && 'value' in value && 'unit' in value;\n\nconst isMatrix = (/** @type {any[]} */ value) =>\n Array.isArray(value) && value.length > 0 && value.every(Array.isArray);\n\nconst formatComplex = (/** @type {{ re: any; im: number; }} */ value) => {\n if (!isComplex(value)) {\n return value;\n }\n\n const real = value.re;\n const imaginary = Math.abs(value.im);\n const sign = value.im < 0 ? '-' : '+';\n\n if (real === 0) {\n if (value.im === 1) {\n return 'i';\n }\n if (value.im === -1) {\n return '-i';\n }\n return `${value.im}i`;\n }\n\n const imagPart = imaginary === 1 ? 'i' : `${imaginary}i`;\n return `${real} ${sign} ${imagPart}`;\n};\n\nconst formatScalar = (/** @type {unknown} */ value) => {\n if (isBigNumber(value)) {\n return formatBigNumber(value);\n }\n if (typeof value !== 'number') {\n return String(value);\n }\n\n if (Number.isInteger(value)) {\n return String(value);\n }\n\n return Number(value.toFixed(14)).toString();\n};\n\nconst formatResult = (/** @type {any} */ value) => {\n if (isFraction(value)) {\n return formatFraction(value);\n }\n\n if (isBigNumber(value)) {\n return formatBigNumber(value);\n }\n\n if (isComplex(value)) {\n return formatComplex(value);\n }\n\n if (isUnitValue(value)) {\n return `${value.value} ${value.unit}`;\n }\n\n if (isDenseMatrixWrapper(value)) {\n return serializeExprifyValue(value);\n }\n\n if (isMatrix(value)) {\n return value.map((/** @type {unknown[]} */ row) => row.map(formatScalar).join('\\t')).join('\\n');\n }\n\n if (Array.isArray(value)) {\n return JSON.stringify(value);\n }\n\n if (value && typeof value === 'object') {\n return serializeExprifyValue(value);\n }\n\n return value;\n};\n\nclass exprify {\n constructor() {\n this.math = mathOperations;\n this.units = createUnitsStore(globalUnits);\n this.functions = createFunctionRegistry(internalFunctions);\n this.variables = createVarStore();\n this._cache = new Map();\n this.variables.set('pi', Math.PI);\n this.variables.set('e', Math.E);\n this.variables.set('PHI', (1 + Math.sqrt(5)) / 2);\n this.variables.set('TAU', 2 * Math.PI);\n this.variables.set('INFINITY', Infinity);\n this.variables.set('NaN', NaN);\n this.addFunction('parse', (/** @type {any} */ expression) => {\n if (typeof expression !== 'string') {\n throw new Error('parse() expects an expression string');\n }\n return expression;\n });\n this.addFunction('leafCount', (/** @type {string} */ value) => {\n const countLeafTokens = (/** @type {string} */ expression) => {\n const strippedKeys = expression.replace(/(^|[{,]\\s*)[a-zA-Z_][a-zA-Z0-9_]*\\s*:/g, '$1');\n const matches = strippedKeys.match(/\\d+(\\.\\d+)?(e[+-]?\\d+)?n?|[a-zA-Z_][a-zA-Z0-9_]*/gi);\n return matches ? matches.length : 0;\n };\n\n let ast = value;\n if (typeof value === 'string') {\n try {\n ast = this.parse(value).ast;\n } catch {\n return countLeafTokens(value);\n }\n }\n\n const countLeaves = (/** @type {any} */ node) => {\n if (!node || typeof node !== 'object') {\n return 0;\n }\n\n switch (node.type) {\n case 'Literal':\n case 'ImaginaryLiteral':\n case 'UnitLiteral':\n case 'Identifier':\n return 1;\n default:\n return Object.values(node).reduce((sum, child) => {\n if (Array.isArray(child)) {\n return sum + child.reduce((inner, item) => inner + countLeaves(item), 0);\n }\n\n return sum + countLeaves(child);\n }, 0);\n }\n };\n\n return countLeaves(ast);\n });\n this.addFunction('matrix', (/** @type {any} */ value) => wrapDenseMatrix(value));\n this.addFunction('sparse', (/** @type {any} */ value) => wrapDenseMatrix(value));\n\n // --- rationalize(): polynomial/rational arithmetic using Map<JSON-power-tuple, coefficient> ---\n this.addFunction('rationalize', (/** @type {string} */ expression, withDetails = false) => {\n if (typeof expression !== 'string') {\n throw new Error('rationalize() expects an expression string');\n }\n\n const normalizedExpression = expression\n .replace(/\\s+/g, '')\n .replace(/(\\d)([a-zA-Z(])/g, '$1*$2')\n .replace(/([a-zA-Z)])(\\d)/g, '$1*$2');\n\n const polyKey = (powers) =>\n JSON.stringify(Object.entries(powers).sort(([a], [b]) => a.localeCompare(b)));\n const keyToPowers = (/** @type {string} */ key) => Object.fromEntries(JSON.parse(key));\n const constPoly = (/** @type {number} */ value) => new Map([[polyKey({}), value]]);\n const varPoly = (/** @type {any} */ name) => new Map([[polyKey({ [name]: 1 }), 1]]);\n const cleanPoly = (/** @type {any[] | Map<any, any>} */ poly) =>\n new Map([...poly.entries()].filter(([, coeff]) => coeff !== 0));\n const addPoly = (\n /** @type {Iterable<readonly [any, any]> | null | undefined} */ a,\n /** @type {any[] | Map<any, any>} */ b,\n sign = 1\n ) => {\n const result = new Map(a);\n for (const [key, coeff] of b.entries()) {\n result.set(key, (result.get(key) || 0) + sign * coeff);\n }\n return cleanPoly(result);\n };\n const multiplyPoly = (/** @type {any} */ a, /** @type {any} */ b) => {\n const result = new Map();\n for (const [keyA, coeffA] of a.entries()) {\n const powersA = keyToPowers(keyA);\n for (const [keyB, coeffB] of b.entries()) {\n const powersB = keyToPowers(keyB);\n const merged = { ...powersA };\n for (const [name, power] of Object.entries(powersB)) {\n merged[name] = (merged[name] || 0) + power;\n }\n const key = polyKey(merged);\n result.set(key, (result.get(key) || 0) + coeffA * coeffB);\n }\n }\n return cleanPoly(result);\n };\n const powPoly = (/** @type {any} */ poly, /** @type {number} */ exponent) => {\n let result = constPoly(1);\n for (let index = 0; index < exponent; index++) {\n result = multiplyPoly(result, poly);\n }\n return result;\n };\n const rational = (/** @type {Map<any, any>} */ num, den = constPoly(1)) => ({ num, den });\n const addRat = (\n /** @type {{ num: any; den: any; }} */ a,\n /** @type {{ den: any; num: any; }} */ b,\n sign = 1\n ) =>\n rational(\n addPoly(multiplyPoly(a.num, b.den), multiplyPoly(b.num, a.den), sign),\n multiplyPoly(a.den, b.den)\n );\n const mulRat = (\n /** @type {{ num: any; den: any; }} */ a,\n /** @type {{ num: any; den: any; }} */ b\n ) => rational(multiplyPoly(a.num, b.num), multiplyPoly(a.den, b.den));\n const divRat = (\n /** @type {{ num: any; den: any; }} */ a,\n /** @type {{ den: any; num: any; }} */ b\n ) => rational(multiplyPoly(a.num, b.den), multiplyPoly(a.den, b.num));\n const negRat = (\n /** @type {{ num: any[] | Map<any, any>; den: Map<string, number> | undefined; }} */ value\n ) => rational(addPoly(new Map(), value.num, -1), value.den);\n const astToRat = (/** @type {any} */ node) => {\n switch (node.type) {\n case 'Literal':\n return rational(constPoly(node.value));\n case 'Identifier':\n return rational(varPoly(node.name));\n case 'UnaryExpression':\n if (node.operator === '-') {\n return negRat(astToRat(node.argument));\n }\n throw new Error('Unsupported unary operator');\n case 'BinaryExpression': {\n const left = astToRat(node.left);\n const right = astToRat(node.right);\n switch (node.operator) {\n case '+':\n return addRat(left, right);\n case '-':\n return addRat(left, right, -1);\n case '*':\n return mulRat(left, right);\n case '/':\n return divRat(left, right);\n case '^': {\n if (\n node.right.type !== 'Literal' ||\n !Number.isInteger(node.right.value) ||\n node.right.value < 0\n ) {\n throw new Error('Unsupported exponent');\n }\n return rational(\n powPoly(left.num, node.right.value),\n powPoly(left.den, node.right.value)\n );\n }\n default:\n throw new Error('Unsupported operator in rationalize()');\n }\n }\n default:\n throw new Error('Unsupported expression in rationalize()');\n }\n };\n const formatPoly = (/** @type {any} */ poly) => {\n const entries = [...poly.entries()]\n .filter(([, coeff]) => coeff !== 0)\n .sort(([keyA], [keyB]) => {\n const powersA = keyToPowers(keyA);\n const powersB = keyToPowers(keyB);\n const firstVarA = Object.keys(powersA).sort()[0] || '';\n const firstVarB = Object.keys(powersB).sort()[0] || '';\n\n if (firstVarA !== firstVarB) {\n return firstVarA.localeCompare(firstVarB);\n }\n\n const degreeA = Object.values(powersA).reduce((sum, value) => sum + value, 0);\n const degreeB = Object.values(powersB).reduce((sum, value) => sum + value, 0);\n return degreeB - degreeA;\n });\n\n if (!entries.length) {\n return '0';\n }\n\n return entries\n .map(([key, coeff], index) => {\n const powers = keyToPowers(key);\n const absCoeff = Math.abs(coeff);\n const variablePart = Object.entries(powers)\n .map(([name, power]) => (power === 1 ? name : `${name} ^ ${power}`))\n .join(' * ');\n let body = variablePart;\n\n if (!body) {\n body = `${absCoeff}`;\n } else if (absCoeff !== 1) {\n body = `${absCoeff} * ${body}`;\n }\n\n if (index === 0) {\n return coeff < 0 ? `- ${body}`.replace('- ', '-') : body;\n }\n\n return coeff < 0 ? `- ${body}` : `+ ${body}`;\n })\n .join(' ');\n };\n\n const ast = this.parse(normalizedExpression).ast;\n const result = astToRat(ast);\n const numerator = formatPoly(result.num);\n const denominator = formatPoly(result.den);\n const variableSet = new Set();\n\n for (const poly of [result.num, result.den]) {\n for (const key of poly.keys()) {\n for (const name of Object.keys(keyToPowers(key))) {\n variableSet.add(name);\n }\n }\n }\n\n if (!withDetails) {\n return `(${numerator}) / (${denominator})`;\n }\n\n return {\n numerator,\n denominator,\n coefficients: [],\n variables: [...variableSet].sort(),\n expression: `(${numerator}) / (${denominator})`,\n };\n });\n\n this.addFunction('map', (/** @type {any[]} */ arr, /** @type {any} */ fnOrName) => {\n if (!Array.isArray(arr)) {\n throw new Error('map() expects an array');\n }\n const fn = typeof fnOrName === 'string' ? this.functions.get(fnOrName) : fnOrName;\n if (typeof fn !== 'function') {\n throw new Error('map() requires a function or function name');\n }\n return arr.map((x) => fn(x));\n });\n\n this.addFunction('filter', (/** @type {any[]} */ arr, /** @type {any} */ fnOrName) => {\n if (!Array.isArray(arr)) {\n throw new Error('filter() expects an array');\n }\n const fn = typeof fnOrName === 'string' ? this.functions.get(fnOrName) : fnOrName;\n if (typeof fn !== 'function') {\n throw new Error('filter() requires a function or function name');\n }\n return arr.filter((x) => fn(x));\n });\n\n // Numeric integration via Simpson's 1/3 rule with 100 subintervals\n this.addFunction(\n 'integral',\n (/** @type {any} */ expr, /** @type {number} */ a, /** @type {number} */ b) => {\n if (typeof expr !== 'string') {\n throw new Error('integral() expects an expression string');\n }\n const compiled = this.compile(expr);\n const n = 100;\n const h = (b - a) / n;\n let sum = compiled({ x: a }) + compiled({ x: b });\n for (let i = 1; i < n; i++) {\n const x = a + i * h;\n const f = compiled({ x });\n sum += i % 2 === 0 ? 2 * f : 4 * f;\n }\n return (h / 3) * sum;\n }\n );\n\n // Summation: evaluate expr for variable = start..end\n this.addFunction(\n 'sigma',\n (\n /** @type {any} */ variable,\n /** @type {any} */ start,\n /** @type {number} */ end,\n /** @type {any} */ expr\n ) => {\n if (typeof expr !== 'string') {\n throw new Error('sigma() expects an expression string');\n }\n const compiled = this.compile(expr);\n let total = 0;\n for (let i = start; i <= end; i++) {\n total += compiled({ [variable]: i });\n }\n return total;\n }\n );\n\n // Product: multiply expr for variable = start..end\n this.addFunction(\n 'pi',\n (\n /** @type {any} */ variable,\n /** @type {any} */ start,\n /** @type {number} */ end,\n /** @type {any} */ expr\n ) => {\n if (typeof expr !== 'string') {\n throw new Error('pi() expects an expression string');\n }\n const compiled = this.compile(expr);\n let total = 1;\n for (let i = start; i <= end; i++) {\n total *= compiled({ [variable]: i });\n }\n return total;\n }\n );\n\n this.addFunction(\n 'substitute',\n (/** @type {any} */ expr, /** @type {any} */ variable, /** @type {any} */ value) => {\n if (typeof expr !== 'string') {\n throw new Error('substitute() expects an expression string');\n }\n const compiled = this.compile(expr);\n return compiled({ [variable]: value });\n }\n );\n\n // Numeric limit: evaluate at progressively smaller epsilon until convergence\n this.addFunction(\n 'limit',\n (\n /** @type {any} */ expr,\n /** @type {any} */ variable,\n /** @type {number} */ approach,\n /** @type {string} */ direction\n ) => {\n if (typeof expr !== 'string') {\n throw new Error('limit() expects an expression string');\n }\n const compiled = this.compile(expr);\n const epsilons = [1e-1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 1e-7, 1e-8, 1e-9, 1e-10];\n let lastVal = NaN;\n for (const eps of epsilons) {\n let x;\n if (direction === 'right') {\n x = approach + eps;\n } else if (direction === 'left') {\n x = approach - eps;\n } else {\n x = approach + eps;\n }\n const val = compiled({ [variable]: x });\n if (isFinite(val)) {\n lastVal = val;\n }\n }\n return lastVal;\n }\n );\n\n // --- expand(): detect polynomial degree via forward differences, solve Vandermonde system for coefficients ---\n this.addFunction('expand', (/** @type {string} */ expr) => {\n if (typeof expr !== 'string') {\n throw new Error('expand() expects an expression string');\n }\n const variableMatch = expr.match(/[a-zA-Z_][a-zA-Z0-9_]*/);\n if (!variableMatch) {\n throw new Error('expand() could not identify variable');\n }\n const v = variableMatch[0];\n const cleaned = expr.replace(/\\s+/g, '').replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n const addStar = (/** @type {string} */ s) => s.replace(/(\\d)([a-zA-Z_])/g, '$1*$2');\n const evalAt = (/** @type {number} */ x) =>\n this.evaluate(`substitute(\"${addStar(cleaned)}\", \"${v}\", ${x})`);\n\n const maxDegree = 10;\n const vals = [];\n for (let i = 0; i <= maxDegree; i++) {\n vals.push(evalAt(i));\n }\n\n let degree = 0;\n let diffs = [...vals];\n for (let d = 0; d <= maxDegree; d++) {\n if (Math.abs(diffs[0]) > 1e-10) {\n degree = d;\n }\n const next = [];\n for (let i = 0; i < diffs.length - 1; i++) {\n next.push(diffs[i + 1] - diffs[i]);\n }\n diffs = next;\n if (diffs.every((x) => Math.abs(x) < 1e-10)) {\n break;\n }\n }\n\n const n = degree + 1;\n const m = Array.from({ length: n }, (_, i) => {\n const row = Array.from({ length: n }, (_, j) => i ** j);\n row.push(vals[i]);\n return row;\n });\n for (let col = 0; col < n; col++) {\n let pivot = col;\n while (pivot < n && Math.abs(m[pivot][col]) < 1e-12) {\n pivot++;\n }\n if (pivot === n) {\n continue;\n }\n [m[col], m[pivot]] = [m[pivot], m[col]];\n const pv = m[col][col];\n for (let j = col; j <= n; j++) {\n m[col][j] /= pv;\n }\n for (let row = 0; row < n; row++) {\n if (row !== col) {\n const f = m[row][col];\n for (let j = col; j <= n; j++) {\n m[row][j] -= f * m[col][j];\n }\n }\n }\n }\n const coeffs = m.map((row) => (Math.abs(row[n]) < 1e-10 ? 0 : row[n]));\n const terms = [];\n for (let i = degree; i >= 0; i--) {\n const c = coeffs[i];\n if (Math.abs(c) < 1e-10) {\n continue;\n }\n const sign = terms.length === 0 ? (c < 0 ? '-' : '') : c < 0 ? ' - ' : ' + ';\n const absC = Math.abs(c);\n const cStr = i === 0 ? `${absC}` : absC === 1 ? '' : `${absC}`;\n const pStr = i === 0 ? '' : i === 1 ? v : `${v}^${i}`;\n terms.push(`${sign}${cStr}${pStr}`);\n }\n return terms.join('') || '0';\n });\n\n // --- factor(): detect degree, solve coefficients, apply rational root theorem + synthetic division ---\n this.addFunction('factor', (/** @type {string} */ poly) => {\n if (typeof poly !== 'string') {\n throw new Error('factor() expects an expression string');\n }\n const cleaned = poly.replace(/\\s+/g, '');\n const variableMatch = cleaned.match(/[a-zA-Z_][a-zA-Z0-9_]*/);\n if (!variableMatch) {\n throw new Error('factor() could not identify variable');\n }\n const variable = variableMatch[0];\n const addStar = (/** @type {string} */ s) =>\n s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/(\\d)([a-zA-Z_])/g, '$1*$2');\n const cleanedExpr = addStar(cleaned);\n const maxPower = 6;\n const vals = [];\n for (let power = 0; power <= maxPower; power++) {\n vals.push(this.evaluate(`substitute(\"${cleanedExpr}\", \"${variable}\", ${power})`));\n }\n let diff = vals.slice();\n let degree = 0;\n for (let d = 0; d <= maxPower; d++) {\n if (diff.every((x) => Math.abs(x) < 1e-10)) {\n degree = Math.max(0, d - 1);\n break;\n }\n if (d < maxPower) {\n const next = [];\n for (let i = 0; i < diff.length - 1; i++) {\n next.push(diff[i + 1] - diff[i]);\n }\n diff = next;\n }\n }\n if (degree === 0) {\n return `(${poly})`;\n }\n const n = degree + 1;\n const m = Array.from({ length: n }, (_, i) => {\n const row = Array.from({ length: n }, (_, j) => i ** j);\n row.push(vals[i]);\n return row;\n });\n for (let col = 0; col < n; col++) {\n let pivot = col;\n while (pivot < n && Math.abs(m[pivot][col]) < 1e-12) {\n pivot++;\n }\n if (pivot === n) {\n continue;\n }\n [m[col], m[pivot]] = [m[pivot], m[col]];\n const pv = m[col][col];\n for (let j = col; j <= n; j++) {\n m[col][j] /= pv;\n }\n for (let row = 0; row < n; row++) {\n if (row !== col) {\n const f = m[row][col];\n for (let j = col; j <= n; j++) {\n m[row][j] -= f * m[col][j];\n }\n }\n }\n }\n const coeffs = m.map((r) => (Math.abs(r[n]) < 1e-10 ? 0 : r[n]));\n if (degree >= 1 && degree <= 3) {\n const polyRootFn = this.functions.get('polynomialRoot');\n const rootArr = polyRootFn(...coeffs);\n const rootArrFlat = Array.isArray(rootArr) ? rootArr : [rootArr];\n const unique = [\n ...new Set(\n rootArrFlat.map((r) => (Number.isInteger(r) ? r : Math.round(r * 1e10) / 1e10))\n ),\n ].sort((a, b) => a - b);\n if (unique.length === degree) {\n const lead = coeffs[degree];\n const leadStr =\n Math.abs(lead - 1) > 1e-10 ? (Math.abs(lead + 1) < 1e-10 ? '-' : `${lead}`) : '';\n const factors = unique.map((r) => {\n if (Math.abs(r) < 1e-10) {\n return variable;\n }\n return r > 0 ? `(${variable} - ${r})` : `(${variable} + ${Math.abs(r)})`;\n });\n return `${leadStr}${factors.join('')}`;\n }\n }\n return `(${poly})`;\n });\n\n // --- solve(): split on '=', form f(x)=0, detect polynomial degree, find roots ---\n this.addFunction('solve', (/** @type {string} */ eqn, /** @type {string} */ variable) => {\n if (typeof eqn !== 'string') {\n throw new Error('solve() expects an equation string');\n }\n const parts = eqn.split('=');\n if (parts.length !== 2) {\n throw new Error('solve() expects an equation with =');\n }\n const lhs = parts[0].trim();\n const rhs = parts[1].trim();\n const expr = `(${lhs}) - (${rhs})`;\n const cleaned = expr.replace(/\\s+/g, '');\n const variableMatch = cleaned.match(/[a-zA-Z_][a-zA-Z0-9_]*/);\n const v = variable || (variableMatch ? variableMatch[0] : 'x');\n const addStar = (/** @type {string} */ s) =>\n s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/(\\d)([a-zA-Z_])/g, '$1*$2');\n const cleanedExpr = addStar(cleaned);\n const maxPower = 6;\n const vals = [];\n for (let power = 0; power <= maxPower; power++) {\n vals.push(this.evaluate(`substitute(\"${cleanedExpr}\", \"${v}\", ${power})`));\n }\n let diff = vals.slice();\n let degree = 0;\n for (let d = 0; d <= maxPower; d++) {\n if (diff.every((x) => Math.abs(x) < 1e-10)) {\n degree = Math.max(0, d - 1);\n break;\n }\n if (d < maxPower) {\n const next = [];\n for (let i = 0; i < diff.length - 1; i++) {\n next.push(diff[i + 1] - diff[i]);\n }\n diff = next;\n }\n }\n if (degree === 0) {\n throw new Error('No solution found');\n }\n const n = degree + 1;\n const m = Array.from({ length: n }, (_, i) => {\n const row = Array.from({ length: n }, (_, j) => i ** j);\n row.push(vals[i]);\n return row;\n });\n for (let col = 0; col < n; col++) {\n let pivot = col;\n while (pivot < n && Math.abs(m[pivot][col]) < 1e-12) {\n pivot++;\n }\n if (pivot === n) {\n continue;\n }\n [m[col], m[pivot]] = [m[pivot], m[col]];\n const pv = m[col][col];\n for (let j = col; j <= n; j++) {\n m[col][j] /= pv;\n }\n for (let row = 0; row < n; row++) {\n if (row !== col) {\n const f = m[row][col];\n for (let j = col; j <= n; j++) {\n m[row][j] -= f * m[col][j];\n }\n }\n }\n }\n const coeffs = m.map((r) => (Math.abs(r[n]) < 1e-10 ? 0 : r[n]));\n if (degree >= 1 && degree <= 3) {\n const polyRootFn = this.functions.get('polynomialRoot');\n const rootArr = polyRootFn(...coeffs);\n const rootArrFlat = Array.isArray(rootArr) ? rootArr : [rootArr];\n return rootArrFlat.sort((a, b) => a - b);\n }\n throw new Error('solve() currently supports degree up to 3');\n });\n }\n\n /**\n * @param {any} name\n * @param {any} value\n */\n setVariable(name, value) {\n this.variables.set(name, value);\n }\n\n /**\n * @param {any} name\n */\n getVariable(name) {\n return this.variables.get(name);\n }\n\n /**\n * @param {string} name\n * @param {any} fn\n */\n addFunction(name, fn) {\n this.functions.register(name, fn);\n }\n\n _createContext() {\n return createContext({\n functions: this.functions,\n variables: this.variables,\n units: this.units,\n evaluate: this.evaluate.bind(this),\n });\n }\n\n /**\n * @param {any} expr\n */\n tokenize(expr) {\n if (typeof expr !== 'string') {\n throw new Error('Expression must be a string');\n }\n return tokenize(expr, this._createContext());\n }\n\n /**\n * @param {string} expr\n */\n parse(expr) {\n const tokens = this.tokenize(expr);\n const ast = buildAST(tokens);\n return { tokens, ast };\n }\n\n /**\n * @param {string} expr\n * @param {object} [scope]\n */\n evaluate(expr, scope = {}) {\n return formatResult(this._evaluateRaw(expr, scope));\n }\n\n /**\n * @param {string} expr\n * @param {object} [scope]\n */\n _evaluateRaw(expr, scope = {}) {\n const { ast } = this.parse(expr);\n const ctx = this._createContext();\n const mergedCtx = Object.keys(scope).length > 0 ? ctx.withScope(scope) : ctx;\n return evaluateAST(ast, mergedCtx);\n }\n\n /**\n * @param {string} expr\n */\n compile(expr) {\n if (this._cache.has(expr)) {\n return this._cache.get(expr);\n }\n\n const { ast } = this.parse(expr);\n\n const compiledFn = (scope = {}) => {\n const baseContext = this._createContext();\n const scopedContext = baseContext.withScope(scope);\n return formatResult(evaluateAST(ast, scopedContext));\n };\n\n this._cache.set(expr, compiledFn);\n return compiledFn;\n }\n\n clearCache() {\n this._cache.clear();\n }\n\n exportState() {\n return {\n variables: this.variables.all(),\n functions: this.functions.getAllFunctionsName(),\n units: this.units.getUnits(),\n };\n }\n\n importState(state) {\n if (state.variables) {\n this.variables.merge(state.variables);\n }\n if (state.units) {\n this.units.setUnits(state.units);\n }\n if (state.functions) {\n for (const name of state.functions) {\n if (!this.functions.has(name)) {\n // warn: function could not be restored (built-in only)\n }\n }\n }\n return this;\n }\n\n chain() {\n return new Chain(this);\n }\n}\n\nclass Chain {\n /** @param {exprify} exprifyInstance */\n constructor(exprifyInstance) {\n this._expr = exprifyInstance;\n this._rawResult = undefined;\n }\n\n evaluate(expr, scope = {}) {\n this._rawResult = this._expr._evaluateRaw(expr, { ...scope, ans: this._rawResult });\n return this;\n }\n\n setVariable(name, value) {\n this._expr.setVariable(name, value);\n return this;\n }\n\n compile(expr) {\n return this._expr.compile(expr);\n }\n\n done() {\n return formatResult(this._rawResult);\n }\n}\n\nexport default exprify;\n"],"names":["createFrac","createBN","makeFrac","makeBN"],"mappings":"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"}
|