pimath 0.2.7 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pimath.js +297 -280
- package/dist/pimath.js.map +1 -1
- package/package.json +1 -1
- package/src/algebra/factor.ts +11 -0
- package/src/algebra/polyFactor.ts +37 -5
- package/types/algebra/factor.d.ts.map +1 -1
- package/types/algebra/polyFactor.d.ts.map +1 -1
package/package.json
CHANGED
package/src/algebra/factor.ts
CHANGED
|
@@ -216,6 +216,17 @@ export class Factor implements IPiMathObject<Factor>,
|
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
public multiply(value: InputAlgebra<Factor | Polynom>): this {
|
|
219
|
+
const F = new Factor(value)
|
|
220
|
+
|
|
221
|
+
// Case if this and value are monoms of degree one.
|
|
222
|
+
if(this.polynom.monoms.length===1 && this.power.isOne()
|
|
223
|
+
&&
|
|
224
|
+
F.polynom.monoms.length===1 && this.power.isOne()
|
|
225
|
+
){
|
|
226
|
+
this.polynom.multiply(F.polynom)
|
|
227
|
+
return this
|
|
228
|
+
}
|
|
229
|
+
|
|
219
230
|
if (value instanceof Factor) {
|
|
220
231
|
if (this.isSameAs(value)) {
|
|
221
232
|
this.power.add(value.power)
|
|
@@ -468,10 +468,29 @@ export class PolyFactor implements IPiMathObject<PolyFactor>,
|
|
|
468
468
|
.map(f => {
|
|
469
469
|
const base = f[0].polynom
|
|
470
470
|
const power = f.reduce((acc, f) => acc.add(f.power), new Fraction('0'))
|
|
471
|
+
|
|
471
472
|
return new Factor(base, power.reduce())
|
|
472
473
|
})
|
|
473
474
|
.filter(f => !f.power.isZero())
|
|
474
475
|
|
|
476
|
+
// Everything is reduced - merge all monomial factors together.
|
|
477
|
+
const numfactor = new Factor(1)
|
|
478
|
+
const denfactor = new Factor(1)
|
|
479
|
+
const monomials = this.#factors.filter(x=>x.polynom.monoms.length===1 && x.power.isRelative())
|
|
480
|
+
if(monomials.length>0){
|
|
481
|
+
monomials.forEach(m=> {
|
|
482
|
+
if(m.power.isPositive()){
|
|
483
|
+
numfactor.multiply(new Factor(m.polynom.clone().pow(m.power.value)))
|
|
484
|
+
}else{
|
|
485
|
+
denfactor.multiply(new Factor(m.polynom.clone().pow(-m.power.value)))
|
|
486
|
+
}
|
|
487
|
+
})
|
|
488
|
+
|
|
489
|
+
this.#factors = this.#factors.filter(x=>!(x.polynom.monoms.length===1 && x.power.isRelative()))
|
|
490
|
+
if (!denfactor.polynom.isOne()){this.#factors.push(denfactor.inverse())}
|
|
491
|
+
if (!numfactor.polynom.isOne()){this.#factors.push(numfactor)}
|
|
492
|
+
}
|
|
493
|
+
|
|
475
494
|
return this
|
|
476
495
|
}
|
|
477
496
|
|
|
@@ -487,6 +506,9 @@ export class PolyFactor implements IPiMathObject<PolyFactor>,
|
|
|
487
506
|
* 3. power of polyfactor
|
|
488
507
|
*/
|
|
489
508
|
public sort(letter?: string): this {
|
|
509
|
+
// Sort each polynom
|
|
510
|
+
this.#factors.forEach(f=>f.polynom.reorder(letter))
|
|
511
|
+
|
|
490
512
|
this.#factors.sort((a, b) => {
|
|
491
513
|
// If the compare powers are opposite, the negative power goes to the end.
|
|
492
514
|
const aPower = a.power.value
|
|
@@ -495,7 +517,6 @@ export class PolyFactor implements IPiMathObject<PolyFactor>,
|
|
|
495
517
|
return -aPower
|
|
496
518
|
}
|
|
497
519
|
|
|
498
|
-
|
|
499
520
|
// Monom length
|
|
500
521
|
const aLength = a.polynom.monoms.length
|
|
501
522
|
const bLength = b.polynom.monoms.length
|
|
@@ -515,6 +536,14 @@ export class PolyFactor implements IPiMathObject<PolyFactor>,
|
|
|
515
536
|
return aPower - bPower
|
|
516
537
|
}
|
|
517
538
|
|
|
539
|
+
// It the monoms length are two AND of degree one, sort by the zero.
|
|
540
|
+
if(a.polynom.degree(letter).isOne() && b.polynom.degree(letter).isOne()){
|
|
541
|
+
const aSol = a.polynom.monoms[1].coefficient.clone().opposite().divide(a.polynom.monoms[0].coefficient).value
|
|
542
|
+
const bSol = b.polynom.monoms[1].coefficient.clone().opposite().divide(b.polynom.monoms[0].coefficient).value
|
|
543
|
+
|
|
544
|
+
return aSol - bSol
|
|
545
|
+
}
|
|
546
|
+
|
|
518
547
|
return a.degree().isLeq(b.degree()) ? -1 : 1
|
|
519
548
|
})
|
|
520
549
|
|
|
@@ -648,12 +677,15 @@ function keyFactors(value: PolyFactor): Record<string, Factor[]> {
|
|
|
648
677
|
|
|
649
678
|
const kF = value.factors
|
|
650
679
|
.reduce((acc: Record<string, Factor[]>, f) => {
|
|
651
|
-
// It's only a value
|
|
652
|
-
|
|
680
|
+
// It's only a value (without roots
|
|
681
|
+
// TODO: implement reduce root numeric.
|
|
682
|
+
if (f.polynom.degree().isZero() && f.power.isRelative()) {
|
|
683
|
+
const value = f.polynom.monoms[0].coefficient.pow(f.power.clone().abs())
|
|
684
|
+
|
|
653
685
|
if (f.power.isPositive()) {
|
|
654
|
-
k_numerator.multiply(
|
|
686
|
+
k_numerator.multiply(value)
|
|
655
687
|
} else {
|
|
656
|
-
k_denominator.multiply(
|
|
688
|
+
k_denominator.multiply(value)
|
|
657
689
|
}
|
|
658
690
|
|
|
659
691
|
return acc
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factor.d.ts","sourceRoot":"","sources":["../../src/algebra/factor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,qBAAa,MAAO,YAAW,aAAa,CAAC,MAAM,CAAC,EAChD,WAAW,CAAC,MAAM,CAAC,EACnB,QAAQ,CAAC,MAAM,CAAC;;gBAMJ,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;IAsBzE,KAAK,IAAiC,MAAM;IAI5C,KAAK,IAAI,MAAM;IAItB,IAAW,GAAG,IAAI,MAAM,CAyBvB;IAED,IAAW,OAAO,IAAI,MAAM,CAyB3B;IAEM,GAAG,IAAI,MAAM;IAIpB,IAAW,QAAQ,IAAI,IAAI,CAG1B;IAEM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ;IAIjC,UAAU,IAAI,MAAM,EAAE;IAoBtB,OAAO,IAAI,OAAO;IAQlB,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAkBnD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ;IAS/G,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI;IAM/C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIpC,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAO/B,KAAK,IAAI,OAAO;IAIhB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC;IAc9C,MAAM,IAAI,OAAO;IAIjB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"factor.d.ts","sourceRoot":"","sources":["../../src/algebra/factor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,qBAAa,MAAO,YAAW,aAAa,CAAC,MAAM,CAAC,EAChD,WAAW,CAAC,MAAM,CAAC,EACnB,QAAQ,CAAC,MAAM,CAAC;;gBAMJ,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;IAsBzE,KAAK,IAAiC,MAAM;IAI5C,KAAK,IAAI,MAAM;IAItB,IAAW,GAAG,IAAI,MAAM,CAyBvB;IAED,IAAW,OAAO,IAAI,MAAM,CAyB3B;IAEM,GAAG,IAAI,MAAM;IAIpB,IAAW,QAAQ,IAAI,IAAI,CAG1B;IAEM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ;IAIjC,UAAU,IAAI,MAAM,EAAE;IAoBtB,OAAO,IAAI,OAAO;IAQlB,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAkBnD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ;IAS/G,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI;IAM/C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIpC,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAO/B,KAAK,IAAI,OAAO;IAIhB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC;IAc9C,MAAM,IAAI,OAAO;IAIjB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IA6BrD,GAAG,IAAI,IAAI;IAMX,QAAQ,IAAI,MAAM;IAIzB,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAEhC;IAEM,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAK1C,IAAW,KAAK,IAAI,QAAQ,CAE3B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,EAE3C;IAEM,SAAS,IAAI,MAAM;IAInB,MAAM,IAAI,MAAM;IAIhB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,IAAI,IAAI,IAAI;IAIZ,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,cAAc;IAwBrC,IAAW,SAAS,IAAI,MAAM,EAAE,CAE/B;IAED,IAAW,SAAS,IAAI,IAAI,CAG3B;IAED,IAAW,QAAQ,IAAI,IAAI,CAG1B;IAEM,IAAI,IAAI,IAAI;IAMnB,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAYhD,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,UAAO,GAAG,MAAM,EAAE;CA8BxE;AAED,oBAAY,cAAc;IACtB,IAAI,IAAA;IACJ,KAAK,IAAA;CACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyFactor.d.ts","sourceRoot":"","sources":["../../src/algebra/polyFactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,yBAAyB,EAE5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAC,MAAM,EAAiB,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAA;AAKxC,qBAAa,UAAW,YAAW,aAAa,CAAC,UAAU,CAAC,EACxD,WAAW,CAAC,UAAU,CAAC,EACvB,QAAQ,CAAC,UAAU,CAAC;;gBAKR,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE;IAK/D,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE,GAAG,IAAI;IAoBvE,KAAK,IAAI,UAAU;IAI1B,IAAW,GAAG,IAAI,MAAM,CAiBvB;IAED,IAAW,OAAO,IAAI,MAAM,CAmB3B;WA+Ca,GAAG,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU;WAmBxC,GAAG,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU;IAc/C,GAAG,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI;IAiDzC,IAAI,OAAO,IAAI,IAAI,CAGlB;IAED,IAAI,MAAM,IAAI,IAAI,CAGjB;IAEM,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ;IAIxC,IAAI,WAAW,IAAI,UAAU,CAK5B;IAEM,UAAU,IAAI,IAAI;IA6BlB,OAAO,IAAI,UAAU;IAerB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAK/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ;IAU/G,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU;IAsB7C,IAAW,OAAO,IAAI,MAAM,EAAE,CAE7B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAEjC;IAEM,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAiBxF,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA0B/B,QAAQ,IAAI,QAAQ,EAAE;IAItB,SAAS,IAAI,QAAQ,EAAE;IAiBvB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIpC,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IASnC,KAAK,IAAI,OAAO;IAIhB,MAAM,IAAI,OAAO;IAIjB,QAAQ,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI;IAQ9C,IAAI,SAAS,IAAI,UAAU,CAE1B;IAEM,GAAG,IAAI,IAAI;IAKX,QAAQ,IAAI,IAAI;IAahB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAKnC,SAAS,IAAI,UAAU;IAIvB,MAAM,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"polyFactor.d.ts","sourceRoot":"","sources":["../../src/algebra/polyFactor.ts"],"names":[],"mappings":"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"}
|