Skip to content

Commit 2f6b852

Browse files
committed
feat: Add trigonometric conversion functions for degrees and radians
1 parent 1a9a173 commit 2f6b852

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

src/core/utils/Maths.ts

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,39 @@
1-
export function toDegrees(radians: number): number { return ((radians * 180) / Math.PI + 360) % 360;}export function toRadians(degrees: number): number { return (degrees * Math.PI) / 180;}export function isDivisibleBy(value: number, divisor: number): boolean { return value % divisor === 0;}export function isEven(value: number): boolean { return isDivisibleBy(value, 2);}export function isOdd(value: number): boolean { return !isDivisibleBy(value, 2);}export function isPowerOf(value: number, base: number): boolean { if (value === 0) return false; const exponent = Math.log(value) / Math.log(base); return Math.ceil(exponent) === Math.floor(exponent);}export function isPrime(value: number): boolean { if (value <= 1) return false; for (let i = 2; i < value; i++) { if (isDivisibleBy(value, i)) { return false; } } return true;}export function isPerfectSquare(value: number): boolean { const side = Math.floor(Math.sqrt(value)); return side * side === value;}export function isFibonacci(value: number): boolean { return isPerfectSquare(5 * value * value + 4) || isPerfectSquare(5 * value * value - 4);}
1+
export function isDivisibleBy(value: number, divisor: number): boolean {
2+
return value % divisor === 0;
3+
}
4+
5+
export function isEven(value: number): boolean {
6+
return isDivisibleBy(value, 2);
7+
}
8+
9+
export function isOdd(value: number): boolean {
10+
return !isDivisibleBy(value, 2);
11+
}
12+
13+
export function isPowerOf(value: number, base: number): boolean {
14+
if (value === 0) return false;
15+
16+
const exponent = Math.log(value) / Math.log(base);
17+
return Math.ceil(exponent) === Math.floor(exponent);
18+
}
19+
20+
export function isPrime(value: number): boolean {
21+
if (value <= 1) return false;
22+
23+
for (let i = 2; i < value; i++) {
24+
if (isDivisibleBy(value, i)) {
25+
return false;
26+
}
27+
}
28+
29+
return true;
30+
}
31+
32+
export function isPerfectSquare(value: number): boolean {
33+
const side = Math.floor(Math.sqrt(value));
34+
return side * side === value;
35+
}
36+
37+
export function isFibonacci(value: number): boolean {
38+
return isPerfectSquare(5 * value * value + 4) || isPerfectSquare(5 * value * value - 4);
39+
}

0 commit comments

Comments
 (0)