mirror of
https://github.com/josdejong/mathjs.git
synced 2026-01-18 14:59:29 +00:00
Add simplify rule (#2365)
* Add simplify rule (Fix #2156) * Add some tests * Add more tests * Fix simplify rule
This commit is contained in:
parent
677be84b8a
commit
43e705e7f6
@ -327,7 +327,9 @@ export const createSimplify = /* #__PURE__ */ factory(name, dependencies, (
|
||||
|
||||
{ l: '1*n', r: 'n' }, // this pattern can be produced by simplifyConstant
|
||||
|
||||
{ l: 'n1/(n2/n3)', r: '(n1*n3)/n2' }
|
||||
{ l: 'n1/(n2/n3)', r: '(n1*n3)/n2' },
|
||||
|
||||
{ l: 'n1/(-n2)', r: '-n1/n2' }
|
||||
|
||||
]
|
||||
|
||||
|
||||
@ -388,4 +388,44 @@ describe('simplify', function () {
|
||||
simplifyAndCompareEval('log(3,5)', 'log(3,5)')
|
||||
simplifyAndCompareEval('log(e,9)', 'log(e,9)')
|
||||
})
|
||||
|
||||
describe('should simplify fraction where denominator has a minus', function () {
|
||||
it('unary numerator and unary denominator', function () {
|
||||
simplifyAndCompare('1/(-y)', '-(1/y)')
|
||||
simplifyAndCompare('x/(-y)', '-(x/y)')
|
||||
simplifyAndCompare('(-1)/(-y)', '1/y')
|
||||
simplifyAndCompare('(-x)/(-y)', 'x/y')
|
||||
})
|
||||
|
||||
it('binary numerator and unary denominator', function () {
|
||||
simplifyAndCompare('(1+x)/(-y)', '-((x+1)/y)')
|
||||
simplifyAndCompare('(w+x)/(-y)', '-((w+x)/y)')
|
||||
simplifyAndCompare('(1-x)/(-y)', '(x-1)/y')
|
||||
simplifyAndCompare('(w-x)/(-y)', '(x-w)/y')
|
||||
})
|
||||
|
||||
it('unary numerator and binary denominator', function () {
|
||||
simplifyAndCompare('1/(-(y+z))', '-(1/(y+z))')
|
||||
simplifyAndCompare('x/(-(y+z))', '-(x/(y+z))')
|
||||
simplifyAndCompare('(-1)/(-(y+z))', '1/(y+z)')
|
||||
simplifyAndCompare('(-x)/(-(y+z))', 'x/(y+z)')
|
||||
|
||||
simplifyAndCompare('1/(-(y-z))', '1/(z-y)')
|
||||
simplifyAndCompare('x/(-(y-z))', 'x/(z-y)')
|
||||
simplifyAndCompare('(-1)/(-(y-z))', '-(1/(z-y))')
|
||||
simplifyAndCompare('(-x)/(-(y-z))', '-(x/(z-y))')
|
||||
})
|
||||
|
||||
it('binary numerator and binary denominator', function () {
|
||||
simplifyAndCompare('(1+x)/(-(y+z))', '-((x+1)/(y+z))')
|
||||
simplifyAndCompare('(w+x)/(-(y+z))', '-((w+x)/(y+z))')
|
||||
simplifyAndCompare('(1-x)/(-(y+z))', '(x-1)/(y+z)')
|
||||
simplifyAndCompare('(w-x)/(-(y+z))', '(x-w)/(y+z)')
|
||||
|
||||
simplifyAndCompare('(1+x)/(-(y-z))', '(x+1)/(z-y)')
|
||||
simplifyAndCompare('(w+x)/(-(y-z))', '(w+x)/(z-y)')
|
||||
simplifyAndCompare('(1-x)/(-(y-z))', '(1-x)/(z-y)')
|
||||
simplifyAndCompare('(w-x)/(-(y-z))', '(w-x)/(z-y)')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user