math-utils-simple 1.0.0 → 1.2.0
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 +8 -3
- package/src/arithmetic/abs.js +3 -0
- package/src/arithmetic/cube.js +3 -0
- package/src/arithmetic/cubeRoot.js +3 -0
- package/src/arithmetic/decrement.js +3 -0
- package/src/arithmetic/increment.js +3 -0
- package/src/arithmetic/mod.js +4 -0
- package/src/arithmetic/negate.js +3 -0
- package/src/arithmetic/nthRoot.js +4 -0
- package/src/arithmetic/reciprocal.js +4 -0
- package/src/arithmetic/square.js +3 -0
- package/src/index.js +44 -10
- package/src/number/digitCount.js +5 -0
- package/src/number/digitalRoot.js +12 -0
- package/src/number/divisors.js +5 -0
- package/src/number/factorial.js +13 -0
- package/src/number/factors.js +17 -0
- package/src/number/fibonacci.js +18 -0
- package/src/{gcd.js → number/gcd.js} +1 -1
- package/src/number/isArmstrongNumber.js +12 -0
- package/src/number/isEven.js +3 -0
- package/src/number/isLeapYear.js +6 -0
- package/src/number/isOdd.js +3 -0
- package/src/number/isPalindromeNumber.js +5 -0
- package/src/number/isPerfectCube.js +3 -0
- package/src/number/isPerfectNumber.js +17 -0
- package/src/number/isPerfectSquare.js +5 -0
- package/src/number/isPrime.js +12 -0
- package/src/{lcm.js → number/lcm.js} +1 -3
- package/src/number/nextPrime.js +11 -0
- package/src/number/nthFibonacci.js +19 -0
- package/src/number/previousPrime.js +12 -0
- package/src/number/primeFactors.js +23 -0
- package/src/number/reverseNumber.js +11 -0
- package/src/number/sumOfDigits.js +6 -0
- package/src/utils/validate.js +5 -0
- package/src/average.js +0 -11
- package/src/factorial.js +0 -14
- /package/src/{add.js → arithmetic/add.js} +0 -0
- /package/src/{divide.js → arithmetic/divide.js} +0 -0
- /package/src/{multiply.js → arithmetic/multiply.js} +0 -0
- /package/src/{power.js → arithmetic/power.js} +0 -0
- /package/src/{sqrt.js → arithmetic/sqrt.js} +0 -0
- /package/src/{subtract.js → arithmetic/subtract.js} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "math-utils-simple",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "A simple math utility library for npm",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.js",
|
|
@@ -10,7 +10,12 @@
|
|
|
10
10
|
"scripts": {
|
|
11
11
|
"test": "node --test"
|
|
12
12
|
},
|
|
13
|
-
"keywords": [
|
|
13
|
+
"keywords": [
|
|
14
|
+
"math",
|
|
15
|
+
"utils",
|
|
16
|
+
"npm",
|
|
17
|
+
"library"
|
|
18
|
+
],
|
|
14
19
|
"author": "Umar Farooq",
|
|
15
20
|
"license": "MIT"
|
|
16
|
-
}
|
|
21
|
+
}
|
package/src/index.js
CHANGED
|
@@ -1,10 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export { default as
|
|
4
|
-
export { default as
|
|
5
|
-
export { default as
|
|
6
|
-
export { default as
|
|
7
|
-
export { default as
|
|
8
|
-
export { default as
|
|
9
|
-
export { default as
|
|
10
|
-
export { default as
|
|
1
|
+
// ARITHMETIC
|
|
2
|
+
|
|
3
|
+
export { default as add } from "./arithmetic/add.js";
|
|
4
|
+
export { default as subtract } from "./arithmetic/subtract.js";
|
|
5
|
+
export { default as multiply } from "./arithmetic/multiply.js";
|
|
6
|
+
export { default as divide } from "./arithmetic/divide.js";
|
|
7
|
+
export { default as mod } from "./arithmetic/mod.js";
|
|
8
|
+
export { default as power } from "./arithmetic/power.js";
|
|
9
|
+
export { default as sqrt } from "./arithmetic/sqrt.js";
|
|
10
|
+
export { default as cubeRoot } from "./arithmetic/cubeRoot.js";
|
|
11
|
+
export { default as nthRoot } from "./arithmetic/nthRoot.js";
|
|
12
|
+
export { default as abs } from "./arithmetic/abs.js";
|
|
13
|
+
export { default as negate } from "./arithmetic/negate.js";
|
|
14
|
+
export { default as increment } from "./arithmetic/increment.js";
|
|
15
|
+
export { default as decrement } from "./arithmetic/decrement.js";
|
|
16
|
+
export { default as square } from "./arithmetic/square.js";
|
|
17
|
+
export { default as cube } from "./arithmetic/cube.js";
|
|
18
|
+
export { default as reciprocal } from "./arithmetic/reciprocal.js";
|
|
19
|
+
|
|
20
|
+
// NUMBER
|
|
21
|
+
|
|
22
|
+
export { default as digitalRoot } from "./number/digitalRoot.js";
|
|
23
|
+
export { default as digitCount } from "./number/digitCount.js";
|
|
24
|
+
export { default as divisors } from "./number/divisors.js";
|
|
25
|
+
export { default as factorial } from "./number/factorial.js";
|
|
26
|
+
export { default as factors } from "./number/factors.js";
|
|
27
|
+
export { default as fibonacci } from "./number/fibonacci.js";
|
|
28
|
+
export { default as gcd } from "./number/gcd.js";
|
|
29
|
+
export { default as isArmstrongNumber } from "./number/isArmstrongNumber.js";
|
|
30
|
+
export { default as isEven } from "./number/isEven.js";
|
|
31
|
+
export { default as isOdd } from "./number/isOdd.js";
|
|
32
|
+
export { default as isLeapYear } from "./number/isLeapYear.js";
|
|
33
|
+
export { default as isPalindromeNumber } from "./number/isPalindromeNumber.js";
|
|
34
|
+
export { default as isPerfectCube } from "./number/isPerfectCube.js";
|
|
35
|
+
export { default as isPerfectNumber } from "./number/isPerfectNumber.js";
|
|
36
|
+
export { default as isPerfectSquare } from "./number/isPerfectSquare.js";
|
|
37
|
+
export { default as isPrime } from "./number/isPrime.js";
|
|
38
|
+
export { default as lcm } from "./number/lcm.js";
|
|
39
|
+
export { default as nextPrime } from "./number/nextPrime.js";
|
|
40
|
+
export { default as nthFibonacci } from "./number/nthFibonacci.js";
|
|
41
|
+
export { default as previousPrime } from "./number/previousPrime.js";
|
|
42
|
+
export { default as primeFactors } from "./number/primeFactors.js";
|
|
43
|
+
export { default as reverseNumber } from "./number/reverseNumber.js";
|
|
44
|
+
export { default as sumOfDigits } from "./number/sumOfDigits.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export default function factorial(n) {
|
|
2
|
+
if (!Number.isInteger(n) || n < 0) {
|
|
3
|
+
throw new Error("Factorial is only defined for non-negative integers.");
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
let result = 1;
|
|
7
|
+
|
|
8
|
+
for (let i = 2; i <= n; i++) {
|
|
9
|
+
result *= i;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return result;
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export default function factors(n) {
|
|
2
|
+
if (n === 0) return [];
|
|
3
|
+
|
|
4
|
+
const result = [];
|
|
5
|
+
|
|
6
|
+
for (let i = 1; i <= Math.sqrt(Math.abs(n)); i++) {
|
|
7
|
+
if (n % i === 0) {
|
|
8
|
+
result.push(i);
|
|
9
|
+
|
|
10
|
+
if (i !== Math.abs(n) / i) {
|
|
11
|
+
result.push(Math.abs(n) / i);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return result.sort((a, b) => a - b);
|
|
17
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export default function fibonacci(count) {
|
|
2
|
+
if (!Number.isInteger(count) || count < 1) {
|
|
3
|
+
throw new Error("Count must be a positive integer.");
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
if (count === 1) return [0];
|
|
7
|
+
|
|
8
|
+
const sequence = [0, 1];
|
|
9
|
+
|
|
10
|
+
while (sequence.length < count) {
|
|
11
|
+
sequence.push(
|
|
12
|
+
sequence[sequence.length - 1] +
|
|
13
|
+
sequence[sequence.length - 2]
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return sequence;
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default function isArmstrongNumber(n) {
|
|
2
|
+
const digits = Math.abs(n).toString().split("");
|
|
3
|
+
|
|
4
|
+
const power = digits.length;
|
|
5
|
+
|
|
6
|
+
const sum = digits.reduce(
|
|
7
|
+
(acc, digit) => acc + Math.pow(Number(digit), power),
|
|
8
|
+
0
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
return sum === Math.abs(n);
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export default function isPerfectNumber(n) {
|
|
2
|
+
if (n <= 1) return false;
|
|
3
|
+
|
|
4
|
+
let sum = 1;
|
|
5
|
+
|
|
6
|
+
for (let i = 2; i <= Math.sqrt(n); i++) {
|
|
7
|
+
if (n % i === 0) {
|
|
8
|
+
sum += i;
|
|
9
|
+
|
|
10
|
+
if (i !== n / i) {
|
|
11
|
+
sum += n / i;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return sum === n;
|
|
17
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default function isPrime(n) {
|
|
2
|
+
if (!Number.isInteger(n) || n < 2) return false;
|
|
3
|
+
|
|
4
|
+
if (n === 2) return true;
|
|
5
|
+
if (n % 2 === 0) return false;
|
|
6
|
+
|
|
7
|
+
for (let i = 3; i <= Math.sqrt(n); i += 2) {
|
|
8
|
+
if (n % i === 0) return false;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default function nthFibonacci(n) {
|
|
2
|
+
if (!Number.isInteger(n) || n < 0) {
|
|
3
|
+
throw new Error("n must be a non-negative integer.");
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
if (n === 0) return 0;
|
|
7
|
+
if (n === 1) return 1;
|
|
8
|
+
|
|
9
|
+
let a = 0;
|
|
10
|
+
let b = 1;
|
|
11
|
+
|
|
12
|
+
for (let i = 2; i <= n; i++) {
|
|
13
|
+
const next = a + b;
|
|
14
|
+
a = b;
|
|
15
|
+
b = next;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return b;
|
|
19
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export default function primeFactors(n) {
|
|
2
|
+
const factors = [];
|
|
3
|
+
|
|
4
|
+
if (n < 2) return factors;
|
|
5
|
+
|
|
6
|
+
while (n % 2 === 0) {
|
|
7
|
+
factors.push(2);
|
|
8
|
+
n /= 2;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
for (let i = 3; i <= Math.sqrt(n); i += 2) {
|
|
12
|
+
while (n % i === 0) {
|
|
13
|
+
factors.push(i);
|
|
14
|
+
n /= i;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (n > 2) {
|
|
19
|
+
factors.push(n);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return factors;
|
|
23
|
+
}
|
package/src/average.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export default function average(numbers) {
|
|
2
|
-
if (!Array.isArray(numbers)) {
|
|
3
|
-
throw new Error("Input must be an array");
|
|
4
|
-
}
|
|
5
|
-
if (numbers.length === 0) {
|
|
6
|
-
throw new Error("Cannot calculate average of an empty array");
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const sum = numbers.reduce((acc, num) => acc + num, 0);
|
|
10
|
-
return sum / numbers.length;
|
|
11
|
-
}
|
package/src/factorial.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export default function factorial(n) {
|
|
2
|
-
if (n < 0) {
|
|
3
|
-
throw new Error("Factorial is not defined for negative numbers");
|
|
4
|
-
}
|
|
5
|
-
if (!Number.isInteger(n)) {
|
|
6
|
-
throw new Error("Factorial is only defined for integers");
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
let result = 1;
|
|
10
|
-
for (let i = 2; i <= n; i++) {
|
|
11
|
-
result *= i;
|
|
12
|
-
}
|
|
13
|
-
return result;
|
|
14
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|