PSMath.ts 1011 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**
  2. * Some useful Maths methods.
  3. */
  4. export class PSMath {
  5. public static log(base: number, x: number): number {
  6. return Math.log(x) / Math.log(base);
  7. }
  8. public static log10(x: number): number {
  9. return PSMath.log(10, x);
  10. }
  11. public static meanSimple(values: number[]): number {
  12. let sum: number = 0;
  13. for (let i: number = 0; i < values.length; i++) {
  14. sum += values[i];
  15. }
  16. return sum / values.length;
  17. }
  18. public static meanWeighted(values: number[], weights: number[]): number {
  19. if (values.length !== weights.length || values.length === 0) {
  20. return 0;
  21. }
  22. let sumWeigtedValues: number = 0;
  23. let sumWeights: number = 0;
  24. for (let i: number = 0; i < values.length; i++) {
  25. const weight: number = weights[i];
  26. sumWeigtedValues += values[i] * weight;
  27. sumWeights += weight;
  28. }
  29. return <number>(sumWeigtedValues / sumWeights);
  30. }
  31. }