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" {
239239
240240 assert(atan32(0.0) == 0.0);
241241 assert(atan32(-0.0) == -0.0);
242 assert(math.approxEq(f32, atan32(math.inf(f32)), math.pi_2, epsilon));
243 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.0, epsilon));
244244}
245245
246246test "math.atan64.special" {
......@@ -248,6 +248,6 @@ test "math.atan64.special" {
248248
249249 assert(atan64(0.0) == 0.0);
250250 assert(atan64(-0.0) == -0.0);
251 assert(math.approxEq(f64, atan64(math.inf(f64)), math.pi_2, epsilon));
252 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.0, epsilon));
253253}
std/math/atan2.zig+20-20
......@@ -245,19 +245,19 @@ test "math.atan2_32.special" {
245245 assert(atan2_32(-0.0, 5.0) == -0.0);
246246 assert(math.approxEq(f32, atan2_32(0.0, -5.0), math.pi, epsilon));
247247 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));
249 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, epsilon));
251 assert(math.approxEq(f32, atan2_32(-1.0, -0.0), -math.pi_2, epsilon));
252 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, epsilon));
254 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, 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.0, 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.0, 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.0, 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.0, epsilon));
256256 assert(atan2_32(1.0, math.inf(f32)) == 0.0);
257257 assert(math.approxEq(f32, atan2_32(1.0, -math.inf(f32)), math.pi, epsilon));
258258 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));
260 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.0, epsilon));
261261}
262262
263263test "math.atan2_64.special" {
......@@ -269,17 +269,17 @@ test "math.atan2_64.special" {
269269 assert(atan2_64(-0.0, 5.0) == -0.0);
270270 assert(math.approxEq(f64, atan2_64(0.0, -5.0), math.pi, epsilon));
271271 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));
273 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, epsilon));
275 assert(math.approxEq(f64, atan2_64(-1.0, -0.0), -math.pi_2, epsilon));
276 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, epsilon));
278 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, 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.0, 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.0, 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.0, 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.0, epsilon));
280280 assert(atan2_64(1.0, math.inf(f64)) == 0.0);
281281 assert(math.approxEq(f64, atan2_64(1.0, -math.inf(f64)), math.pi, epsilon));
282282 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));
284 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.0, epsilon));
285285}
std/math/index.zig+2-13
......@@ -2,19 +2,8 @@ const builtin = @import("builtin");
22const TypeId = builtin.TypeId;
33const assert = @import("../debug.zig").assert;
44
5pub const e = 2.7182818284590452354; // e
6pub const log2_e = 1.4426950408889634074; // log_2(e)
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)
5pub const e = 2.71828182845904523536028747135266249775724709369995;
6pub const pi = 3.14159265358979323846264338327950288419716939937510;
187
198// float.h details
209pub const f64_true_min = 4.94065645841246544177e-324;