website

source code for the ttmaths.uk website
Log | Files | Refs | README

commit 0297888791bca3593376d11d38520139a1eb49b8
parent 75c195ba2af70d9262d86570a865a0745f4519d3
Author: fen123456 <fenwthompson@gmail.com>
Date:   Fri, 14 Aug 2026 16:47:02 +0100

Fix fraction simplification again

Diffstat:
Msrc/scripts/utils.js | 21+++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/scripts/utils.js b/src/scripts/utils.js @@ -36,25 +36,30 @@ export function simplifyFraction(num, denom) { } // this thing is probably begging for bugs from simplification and zeroes. -export function formatFraction(num, denom, parameters = { showPlus: false, showOne: true, showZero: false, simplify: false, suffix: '' }) { +export function formatFraction(num, denom, parameters = { showPlus: false, showOne: true, showZero: true, simplify: false, suffix: '' }) { if (!parameters.showZero && num == 0) { return ''; } - const plus = parameters.showPlus ? '+' : ''; - const sign = num / denom < 0 ? '-' : plus; + if (getHCF(num, denom) == denom && parameters.simplify) { return formatCoefficient(simplifyFraction(num, denom)[0], parameters)} + const [numOriginal, denomOriginal] = [num, denom] + const plus = parameters.showPlus ? '+' : '' + const sign = num / denom < 0 ? '-' : plus - [num, denom] = [Math.abs(num), Math.abs(denom)] + num = Math.abs(num) + denom = Math.abs(denom); [num, denom] = parameters.simplify ? simplifyFraction(num, denom) : [num, denom] parameters.suffix || (parameters.suffix = '') - if (denom == 1) { return sign + Math.abs(num) + parameters.suffix; } let x = `frac(${num}, ${denom})` parameters.showOne || num / denom == 1 && (x = ''); return sign + x + parameters.suffix } export function formatLine(line) { - if (line.b == 0) { return `x = ${formatFraction(line.c, line.a, { simplify: true })}` } - const mxTerm = formatFraction(-line.a, line.b, { simplify: true, suffix: 'x' }) - const cTerm = formatFraction(line.c, line.b, { showOne: true, simplify: true }) + if (line.b == 0) { return `x = ${formatFraction(line.c, line.a, { showPlus: false, showOne: true, showZero: true, simplify: true })}`; } + let mxTerm = formatFraction(-line.a, line.b, { showPlus: false, showOne: false, showZero: false, simplify: true, suffix: 'x' }) + const cTerm = formatFraction(line.c, line.b, { showPlus: false, showOne: true, showZero: false, simplify: true }) + if (!mxTerm && !cTerm) { + mxTerm = '0' + } return 'y = ' + mxTerm + cTerm }