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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pimath",
3
- "version": "0.2.7",
3
+ "version": "0.2.8",
4
4
  "description": "A math library for teacher :)",
5
5
  "type": "module",
6
6
  "main": "dist/pimath.js",
@@ -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
- if (f.polynom.degree().isZero()) {
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(f.polynom.monoms[0].coefficient)
686
+ k_numerator.multiply(value)
655
687
  } else {
656
- k_denominator.multiply(f.polynom.monoms[0].coefficient)
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;IAkBrD,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
+ {"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;IAgBd,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAWzB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAmC3B,IAAI,IAAI,IAAI;IAKZ,QAAQ,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI;IAIvC,YAAY,IAAI,yBAAyB;IAiFhD,IAAW,SAAS,IAAI,MAAM,EAAE,CAG/B;IAEM,IAAI,IAAI,IAAI;CAwBtB"}
1
+ {"version":3,"file":"polyFactor.d.ts","sourceRoot":"","sources":["../../src/algebra/polyFactor.ts"],"names":[],"mappings":"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"}