Skip to content

Commit 524df8d

Browse files
authored
math: add zpl stuff (#14543)
1 parent 473d26c commit 524df8d

File tree

3 files changed

+43
-15
lines changed

3 files changed

+43
-15
lines changed

vlib/math/const.v

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,30 @@
44
module math
55

66
pub const (
7-
e = 2.71828182845904523536028747135266249775724709369995957496696763
8-
pi = 3.14159265358979323846264338327950288419716939937510582097494459
9-
pi_2 = pi / 2.0
10-
pi_4 = pi / 4.0
11-
phi = 1.61803398874989484820458683436563811772030917980576286213544862
12-
tau = 6.28318530717958647692528676655900576839433879875021164194988918
13-
sqrt2 = 1.41421356237309504880168872420969807856967187537694807317667974
14-
sqrt_e = 1.64872127070012814684865078781416357165377610071014801157507931
15-
sqrt_pi = 1.77245385090551602729816748334114518279754945612238712821380779
16-
sqrt_tau = 2.50662827463100050241576528481104525300698674060993831662992357
17-
sqrt_phi = 1.27201964951406896425242246173749149171560804184009624861664038
18-
ln2 = 0.693147180559945309417232121458176568075500134360255254120680009
19-
log2_e = 1.0 / ln2
20-
ln10 = 2.30258509299404568401799145468436420760110148862877297603332790
21-
log10_e = 1.0 / ln10
7+
epsilon = 2.2204460492503130808472633361816E-16
8+
e = 2.71828182845904523536028747135266249775724709369995957496696763
9+
pi = 3.14159265358979323846264338327950288419716939937510582097494459
10+
pi_2 = pi / 2.0
11+
pi_4 = pi / 4.0
12+
phi = 1.61803398874989484820458683436563811772030917980576286213544862
13+
tau = 6.28318530717958647692528676655900576839433879875021164194988918
14+
one_over_tau = 1.0 / tau
15+
one_over_pi = 1.0 / pi
16+
tau_over2 = tau / 2.0
17+
tau_over4 = tau / 4.0
18+
tau_over8 = tau / 8.0
19+
sqrt2 = 1.41421356237309504880168872420969807856967187537694807317667974
20+
sqrt_3 = 1.73205080756887729352744634150587236694280525381038062805580697
21+
sqrt_5 = 2.23606797749978969640917366873127623544061835961152572427089724
22+
sqrt_e = 1.64872127070012814684865078781416357165377610071014801157507931
23+
sqrt_pi = 1.77245385090551602729816748334114518279754945612238712821380779
24+
sqrt_tau = 2.50662827463100050241576528481104525300698674060993831662992357
25+
sqrt_phi = 1.27201964951406896425242246173749149171560804184009624861664038
26+
ln2 = 0.693147180559945309417232121458176568075500134360255254120680009
27+
log2_e = 1.0 / ln2
28+
ln10 = 2.30258509299404568401799145468436420760110148862877297603332790
29+
log10_e = 1.0 / ln10
30+
two_thirds = 0.66666666666666666666666666666666666666666666666666666666666667
2231
)
2332

2433
// Floating-point limit values

vlib/math/math.v

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@ pub fn degrees(radians f64) f64 {
4242
return radians * (180.0 / pi)
4343
}
4444

45+
// angle_diff calculates the difference between angles in radians
46+
[inline]
47+
pub fn angle_diff(radian_a f64, radian_b f64) f64 {
48+
mut delta := fmod(radian_b - radian_a, tau)
49+
delta = fmod(delta + 1.5 * tau, tau)
50+
delta -= .5 * tau
51+
return delta
52+
}
53+
4554
[params]
4655
pub struct DigitParams {
4756
base int = 10

vlib/math/math_test.v

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,16 @@ fn test_nan() {
222222
assert nan_f32 != nan_f32
223223
}
224224

225+
fn test_angle_diff() {
226+
for pair in [
227+
[pi, pi_2, -pi_2],
228+
[pi_2 * 3.0, pi_2, -pi],
229+
[pi / 6.0, two_thirds * pi, pi_2],
230+
] {
231+
assert angle_diff(pair[0], pair[1]) == pair[2]
232+
}
233+
}
234+
225235
fn test_acos() {
226236
for i := 0; i < math.vf_.len; i++ {
227237
a := math.vf_[i] / 10

0 commit comments

Comments
 (0)