commit 0297888791bca3593376d11d38520139a1eb49b8
parent 75c195ba2af70d9262d86570a865a0745f4519d3
Author: fen123456 <fenwthompson@gmail.com>
Date: Fri, 14 Aug 2026 16:47:02 +0100
Fix fraction simplification again
Diffstat:
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
}