UNPKG

mathsteps-experimental-fork

Version:

Step by step math solutions. Experimental Fork

36 lines (32 loc) 1.49 kB
'use strict'; const ChangeTypes = require('../../types/changeType/ChangeTypes.js'); const simplifyCore = require('../simplifyCore.js'); const poolOfRules = [ // Logarithm from one. { l: 'logXY(n, 1)', r: '0', id: ChangeTypes.ChangeTypes.KEMU_LOG_XY_FROM_ONE }, // Example: logXY(10, 10) => 1 { l: 'logXY(n, n)', r: '1', id: ChangeTypes.ChangeTypes.KEMU_LOG_XY_FROM_BASE }, { l: 'logXY(c, -c)', r: '-1', id: ChangeTypes.ChangeTypes.KEMU_LOG_XY_FROM_BASE }, { l: 'logXY(n, -n)', r: '-1', id: ChangeTypes.ChangeTypes.KEMU_LOG_XY_FROM_BASE }, // Convert sqrt to power under logarithm. // Example: log10(sqrt(10)) => log10(10^1/2) => 1/2 { l: 'logXY(n1, sqrt(n2))', r: 'logXY(n1, n2^(1/2))', id: ChangeTypes.ChangeTypes.KEMU_CONVERT_ROOT_TO_POWER }, { l: 'logXY(n1, nthRoot(n2, n3))', r: 'logXY(n1, n2^(1/n3))', id: ChangeTypes.ChangeTypes.KEMU_CONVERT_ROOT_TO_POWER }, // Logarithm from power. // Example: logXY(10, x^3) => 3 logXY(10, x) { l: 'logXY(n1, n2^n3)', r: 'n3 logXY(n1, n2)', id: ChangeTypes.ChangeTypes.KEMU_LOG_XY_FROM_POWER }, ]; function commonFunctionsLogXY(node) { let rv = null; // Possible improvement: catch many steps at once. const steps = simplifyCore(node, poolOfRules, null, { stopOnFirstStep: true }); if (steps.length > 0) { const oneStep = steps[0]; rv = { changeType: oneStep.ruleApplied.id, rootNode: oneStep.nodeAfter, }; } return rv } module.exports = commonFunctionsLogXY;