From ee03a6fe599c7ea42e019da661db4d8120312ebb Mon Sep 17 00:00:00 2001 From: carlacostea Date: Tue, 10 Dec 2024 15:55:10 +0200 Subject: [PATCH 1/3] wip and tests for PD-4410 --- .../faiil_cases_trailing_zerosPD-4410.ts | 78 +++++++++++++++++++ .../success_cases_trailing_zerosPD-4410.ts | 72 +++++++++++++++++ src/symbolic/index.ts | 12 ++- 3 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 src/fixtures/latex-equal/symbolic/faiil_cases_trailing_zerosPD-4410.ts create mode 100644 src/fixtures/latex-equal/symbolic/success_cases_trailing_zerosPD-4410.ts diff --git a/src/fixtures/latex-equal/symbolic/faiil_cases_trailing_zerosPD-4410.ts b/src/fixtures/latex-equal/symbolic/faiil_cases_trailing_zerosPD-4410.ts new file mode 100644 index 0000000..ce0c9ae --- /dev/null +++ b/src/fixtures/latex-equal/symbolic/faiil_cases_trailing_zerosPD-4410.ts @@ -0,0 +1,78 @@ +export default { + mode: "symbolic", + tests: [ + { + target: "12.35", + eq: [ + "12.350", "12.350000", + ], + }, + { + target: "10.2", + eq: [ + "10.20", + ], + }, + { + target: "5.05", + eq: [ + "5.050", + ], + }, + { + target: "5.4", + eq: [ + "5.40000", + ], + }, + { + target: "3.3", + eq: [ + "3.300", + ], + }, + { + target: "0.004", + eq: [ + "0.0040", + ], + }, + { + target: "5.7", + eq: [ + "5.70", + ], + }, + { + target: "23.598", + eq: [ + "23.5980", + ], + }, + { + target: "0.00278", + eq: [ + "0.002780", + ], + }, + { + target: "32.279", + eq: [ + "32.2790", + ], + }, + { + target: "0.65", + eq: [ + "0.650", + ], + }, + { + target: "45.3", + eq: [ + "45.300", + ], + }, + ], + }; + \ No newline at end of file diff --git a/src/fixtures/latex-equal/symbolic/success_cases_trailing_zerosPD-4410.ts b/src/fixtures/latex-equal/symbolic/success_cases_trailing_zerosPD-4410.ts new file mode 100644 index 0000000..7088b8b --- /dev/null +++ b/src/fixtures/latex-equal/symbolic/success_cases_trailing_zerosPD-4410.ts @@ -0,0 +1,72 @@ +export default { + mode: "symbolic", + tests: [ + { + target: "5.5", + eq: [ + "5.50", "5.50000", + ], + }, + { + target: "15", + eq: [ + "15.000", + ], + }, + { + target: "\\frac{5}{4}", + eq: [ + "1.25000", + ], + }, + { + target: "45", + eq: [ + "45.00", + ], + }, + { + target: "-45.3", + eq: [ + "-45.300", + ], + }, + { + target: "11.25", + eq: [ + "11.250", "11.2500", + ], + }, + { + target: "11.25x", + eq: [ + "11.2500x", + ], + }, + { + target: "0.75", + eq: [ + "0.750", + ], + }, + { + target: "16", + eq: [ + "16.00", + ], + }, + { + target: "1.30", + eq: [ + "1.300", + ], + }, + { + target: "8", + eq: [ + "8.0", + ], + }, + ], + }; + \ No newline at end of file diff --git a/src/symbolic/index.ts b/src/symbolic/index.ts index 7d504d0..16a8706 100644 --- a/src/symbolic/index.ts +++ b/src/symbolic/index.ts @@ -71,7 +71,15 @@ export const simplify = (v) => { }; const normalize = (a: string | MathNode | any) => { - let r: string | MathNode | any = a; + + let r: string | MathNode | any; + if (a.fn && a.fn.name == 'tzn'){ + r = a.args[0] + } else { + r = a; + } + + let onlyConstant = true; let containsFunctionNode = false; let containsArrayNode = false; @@ -130,7 +138,7 @@ const normalize = (a: string | MathNode | any) => { if (r.fn !== "equal") { try { onlyConstant = false; - r = rationalize(r, {}, true).expression; + r = rationalize(r, {}, true).expression; } catch {} } From 20e17250f3c7c591fda38c4b8bc637d9ef34eb59 Mon Sep 17 00:00:00 2001 From: carlacostea Date: Thu, 12 Dec 2024 11:24:11 +0200 Subject: [PATCH 2/3] fix(trailing-zeros): Skip LaTeX-to-AST and AST-to-MathJS conversions for numeric equality checks PD-4410 --- src/latex-equal.ts | 12 ++++++++++++ src/symbolic/index.ts | 12 ++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/latex-equal.ts b/src/latex-equal.ts index e0a41af..e5cb8a1 100644 --- a/src/latex-equal.ts +++ b/src/latex-equal.ts @@ -17,6 +17,8 @@ const lta = new LatexToAst(); const atm = new AstToMathJs(); export const latexEqual = (a: Latex, b: Latex, opts: Opts) => { + const isNumeric = (str: string): boolean => /^-?\d+(\.\d+)?$/.test(str); + if (!a || !b) { return false; } @@ -25,6 +27,16 @@ export const latexEqual = (a: Latex, b: Latex, opts: Opts) => { return true; } + if (opts.mode === "symbolic" && isNumeric(a) && isNumeric(b)) { + const numA = parseFloat(a); + const numB = parseFloat(b); + + if (numA === numB) { + console.log(numA, numB, "equals"); + return true; + } + } + const al = lta.convert(a); const bl = lta.convert(b); diff --git a/src/symbolic/index.ts b/src/symbolic/index.ts index 16a8706..7d504d0 100644 --- a/src/symbolic/index.ts +++ b/src/symbolic/index.ts @@ -71,15 +71,7 @@ export const simplify = (v) => { }; const normalize = (a: string | MathNode | any) => { - - let r: string | MathNode | any; - if (a.fn && a.fn.name == 'tzn'){ - r = a.args[0] - } else { - r = a; - } - - + let r: string | MathNode | any = a; let onlyConstant = true; let containsFunctionNode = false; let containsArrayNode = false; @@ -138,7 +130,7 @@ const normalize = (a: string | MathNode | any) => { if (r.fn !== "equal") { try { onlyConstant = false; - r = rationalize(r, {}, true).expression; + r = rationalize(r, {}, true).expression; } catch {} } From 439316960a5feb48707bbb7b59635f366ef38218 Mon Sep 17 00:00:00 2001 From: carlacostea Date: Thu, 12 Dec 2024 11:37:27 +0200 Subject: [PATCH 3/3] cleanup --- src/latex-equal.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/latex-equal.ts b/src/latex-equal.ts index e5cb8a1..a4dba3d 100644 --- a/src/latex-equal.ts +++ b/src/latex-equal.ts @@ -32,7 +32,7 @@ export const latexEqual = (a: Latex, b: Latex, opts: Opts) => { const numB = parseFloat(b); if (numA === numB) { - console.log(numA, numB, "equals"); + return true; } }