authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-08-20 05:43:17-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-08-20 05:43:40-04:00
logbe1603427531bab3b63b9fd2f01c0bb11bf1689a
tree3c46def104adc5b9026f24cc98d2ce6a993ad4d1
parentf248ef5f3f1c78d526e637f4ef08fa40c2ee15c3

std.math: remove constants that can be derived

from others at compile time

3 files changed, 26 insertions(+), 37 deletions(-)

std/math/atan.zig+4-4
...@@ -239,8 +239,8 @@ test "math.atan32.special" {...@@ -239,8 +239,8 @@ test "math.atan32.special" {
239239
240 assert(atan32(0.0) == 0.0);240 assert(atan32(0.0) == 0.0);
241 assert(atan32(-0.0) == -0.0);241 assert(atan32(-0.0) == -0.0);
242 assert(math.approxEq(f32, atan32(math.inf(f32)), math.pi_2, epsilon));242 assert(math.approxEq(f32, atan32(math.inf(f32)), math.pi / 2.0, epsilon));
243 assert(math.approxEq(f32, atan32(-math.inf(f32)), -math.pi_2, epsilon));243 assert(math.approxEq(f32, atan32(-math.inf(f32)), -math.pi / 2.0, epsilon));
244}244}
245245
246test "math.atan64.special" {246test "math.atan64.special" {
...@@ -248,6 +248,6 @@ test "math.atan64.special" {...@@ -248,6 +248,6 @@ test "math.atan64.special" {
248248
249 assert(atan64(0.0) == 0.0);249 assert(atan64(0.0) == 0.0);
250 assert(atan64(-0.0) == -0.0);250 assert(atan64(-0.0) == -0.0);
251 assert(math.approxEq(f64, atan64(math.inf(f64)), math.pi_2, epsilon));251 assert(math.approxEq(f64, atan64(math.inf(f64)), math.pi / 2.0, epsilon));
252 assert(math.approxEq(f64, atan64(-math.inf(f64)), -math.pi_2, epsilon));252 assert(math.approxEq(f64, atan64(-math.inf(f64)), -math.pi / 2.0, epsilon));
253}253}
std/math/atan2.zig+20-20
...@@ -245,19 +245,19 @@ test "math.atan2_32.special" {...@@ -245,19 +245,19 @@ test "math.atan2_32.special" {
245 assert(atan2_32(-0.0, 5.0) == -0.0);245 assert(atan2_32(-0.0, 5.0) == -0.0);
246 assert(math.approxEq(f32, atan2_32(0.0, -5.0), math.pi, epsilon));246 assert(math.approxEq(f32, atan2_32(0.0, -5.0), math.pi, epsilon));
247 assert(math.approxEq(f32, atan2_32(-0.0, -5.0), -math.pi, epsilon));247 assert(math.approxEq(f32, atan2_32(-0.0, -5.0), -math.pi, epsilon));
248 assert(math.approxEq(f32, atan2_32(1.0, 0.0), math.pi_2, epsilon));248 assert(math.approxEq(f32, atan2_32(1.0, 0.0), math.pi / 2.0, epsilon));
249 assert(math.approxEq(f32, atan2_32(1.0, -0.0), math.pi_2, epsilon));249 assert(math.approxEq(f32, atan2_32(1.0, -0.0), math.pi / 2.0, epsilon));
250 assert(math.approxEq(f32, atan2_32(-1.0, 0.0), -math.pi_2, epsilon));250 assert(math.approxEq(f32, atan2_32(-1.0, 0.0), -math.pi / 2.0, epsilon));
251 assert(math.approxEq(f32, atan2_32(-1.0, -0.0), -math.pi_2, epsilon));251 assert(math.approxEq(f32, atan2_32(-1.0, -0.0), -math.pi / 2.0, epsilon));
252 assert(math.approxEq(f32, atan2_32(math.inf(f32), math.inf(f32)), math.pi_4, epsilon));252 assert(math.approxEq(f32, atan2_32(math.inf(f32), math.inf(f32)), math.pi / 4.0, epsilon));
253 assert(math.approxEq(f32, atan2_32(-math.inf(f32), math.inf(f32)), -math.pi_4, epsilon));253 assert(math.approxEq(f32, atan2_32(-math.inf(f32), math.inf(f32)), -math.pi / 4.0, epsilon));
254 assert(math.approxEq(f32, atan2_32(math.inf(f32), -math.inf(f32)), 3.0 * math.pi_4, epsilon));254 assert(math.approxEq(f32, atan2_32(math.inf(f32), -math.inf(f32)), 3.0 * math.pi / 4.0, epsilon));
255 assert(math.approxEq(f32, atan2_32(-math.inf(f32), -math.inf(f32)), -3.0 * math.pi_4, epsilon));255 assert(math.approxEq(f32, atan2_32(-math.inf(f32), -math.inf(f32)), -3.0 * math.pi / 4.0, epsilon));
256 assert(atan2_32(1.0, math.inf(f32)) == 0.0);256 assert(atan2_32(1.0, math.inf(f32)) == 0.0);
257 assert(math.approxEq(f32, atan2_32(1.0, -math.inf(f32)), math.pi, epsilon));257 assert(math.approxEq(f32, atan2_32(1.0, -math.inf(f32)), math.pi, epsilon));
258 assert(math.approxEq(f32, atan2_32(-1.0, -math.inf(f32)), -math.pi, epsilon));258 assert(math.approxEq(f32, atan2_32(-1.0, -math.inf(f32)), -math.pi, epsilon));
259 assert(math.approxEq(f32, atan2_32(math.inf(f32), 1.0), math.pi_2, epsilon));259 assert(math.approxEq(f32, atan2_32(math.inf(f32), 1.0), math.pi / 2.0, epsilon));
260 assert(math.approxEq(f32, atan2_32(-math.inf(f32), 1.0), -math.pi_2, epsilon));260 assert(math.approxEq(f32, atan2_32(-math.inf(f32), 1.0), -math.pi / 2.0, epsilon));
261}261}
262262
263test "math.atan2_64.special" {263test "math.atan2_64.special" {
...@@ -269,17 +269,17 @@ test "math.atan2_64.special" {...@@ -269,17 +269,17 @@ test "math.atan2_64.special" {
269 assert(atan2_64(-0.0, 5.0) == -0.0);269 assert(atan2_64(-0.0, 5.0) == -0.0);
270 assert(math.approxEq(f64, atan2_64(0.0, -5.0), math.pi, epsilon));270 assert(math.approxEq(f64, atan2_64(0.0, -5.0), math.pi, epsilon));
271 assert(math.approxEq(f64, atan2_64(-0.0, -5.0), -math.pi, epsilon));271 assert(math.approxEq(f64, atan2_64(-0.0, -5.0), -math.pi, epsilon));
272 assert(math.approxEq(f64, atan2_64(1.0, 0.0), math.pi_2, epsilon));272 assert(math.approxEq(f64, atan2_64(1.0, 0.0), math.pi / 2.0, epsilon));
273 assert(math.approxEq(f64, atan2_64(1.0, -0.0), math.pi_2, epsilon));273 assert(math.approxEq(f64, atan2_64(1.0, -0.0), math.pi / 2.0, epsilon));
274 assert(math.approxEq(f64, atan2_64(-1.0, 0.0), -math.pi_2, epsilon));274 assert(math.approxEq(f64, atan2_64(-1.0, 0.0), -math.pi / 2.0, epsilon));
275 assert(math.approxEq(f64, atan2_64(-1.0, -0.0), -math.pi_2, epsilon));275 assert(math.approxEq(f64, atan2_64(-1.0, -0.0), -math.pi / 2.0, epsilon));
276 assert(math.approxEq(f64, atan2_64(math.inf(f64), math.inf(f64)), math.pi_4, epsilon));276 assert(math.approxEq(f64, atan2_64(math.inf(f64), math.inf(f64)), math.pi / 4.0, epsilon));
277 assert(math.approxEq(f64, atan2_64(-math.inf(f64), math.inf(f64)), -math.pi_4, epsilon));277 assert(math.approxEq(f64, atan2_64(-math.inf(f64), math.inf(f64)), -math.pi / 4.0, epsilon));
278 assert(math.approxEq(f64, atan2_64(math.inf(f64), -math.inf(f64)), 3.0 * math.pi_4, epsilon));278 assert(math.approxEq(f64, atan2_64(math.inf(f64), -math.inf(f64)), 3.0 * math.pi / 4.0, epsilon));
279 assert(math.approxEq(f64, atan2_64(-math.inf(f64), -math.inf(f64)), -3.0 * math.pi_4, epsilon));279 assert(math.approxEq(f64, atan2_64(-math.inf(f64), -math.inf(f64)), -3.0 * math.pi / 4.0, epsilon));
280 assert(atan2_64(1.0, math.inf(f64)) == 0.0);280 assert(atan2_64(1.0, math.inf(f64)) == 0.0);
281 assert(math.approxEq(f64, atan2_64(1.0, -math.inf(f64)), math.pi, epsilon));281 assert(math.approxEq(f64, atan2_64(1.0, -math.inf(f64)), math.pi, epsilon));
282 assert(math.approxEq(f64, atan2_64(-1.0, -math.inf(f64)), -math.pi, epsilon));282 assert(math.approxEq(f64, atan2_64(-1.0, -math.inf(f64)), -math.pi, epsilon));
283 assert(math.approxEq(f64, atan2_64(math.inf(f64), 1.0), math.pi_2, epsilon));283 assert(math.approxEq(f64, atan2_64(math.inf(f64), 1.0), math.pi / 2.0, epsilon));
284 assert(math.approxEq(f64, atan2_64(-math.inf(f64), 1.0), -math.pi_2, epsilon));284 assert(math.approxEq(f64, atan2_64(-math.inf(f64), 1.0), -math.pi / 2.0, epsilon));
285}285}
std/math/index.zig+2-13
...@@ -2,19 +2,8 @@ const builtin = @import("builtin");...@@ -2,19 +2,8 @@ const builtin = @import("builtin");
2const TypeId = builtin.TypeId;2const TypeId = builtin.TypeId;
3const assert = @import("../debug.zig").assert;3const assert = @import("../debug.zig").assert;
44
5pub const e = 2.7182818284590452354; // e5pub const e = 2.71828182845904523536028747135266249775724709369995;
6pub const log2_e = 1.4426950408889634074; // log_2(e)6pub const pi = 3.14159265358979323846264338327950288419716939937510;
7pub const log10_e = 0.43429448190325182765; // log_10(e)
8pub const ln_2 = 0.69314718055994530942; // log_e(2)
9pub const ln_10 = 2.30258509299404568402; // log_e(10)
10pub const pi = 3.14159265358979323846; // pi
11pub const pi_2 = 1.57079632679489661923; // pi/2
12pub const pi_4 = 0.78539816339744830962; // pi/4
13pub const r1_pi = 0.31830988618379067154; // 1/pi
14pub const r2_pi = 0.63661977236758134308; // 2/pi
15pub const r2_sqrtpi = 1.12837916709551257390; // 2/sqrt(pi)
16pub const sqrt2 = 1.41421356237309504880; // sqrt(2)
17pub const r1_sqrt2 = 0.70710678118654752440; // 1/sqrt(2)
187
19// float.h details8// float.h details
20pub const f64_true_min = 4.94065645841246544177e-324;9pub const f64_true_min = 4.94065645841246544177e-324;