• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2019 Google LLC
2//
3// This source code is licensed under the BSD-style license found in the
4// LICENSE file in the root directory of this source tree.
5
6display=hexadecimal !;
7print("log2(e) =", round(log2(exp(1)), single, RN));
8minus_ln2_hi = round(-log(2), single, RN);
9minus_ln2_lo = round(-log(2) - minus_ln2_hi, single, RN);
10print("-log(2):hi =", minus_ln2_hi);
11print("-log(2):lo =", minus_ln2_lo);
12
13print("log2(e) * 8 =", round(log2(exp(1)) * 8, single, RN));
14minus_ln2_o8_hi = round(-log(2)/8, single, RN);
15minus_ln2_o8_lo = round(-log(2)/8 - minus_ln2_o8_hi, single, RN);
16print("-log(2):hi / 8 =", minus_ln2_o8_hi);
17print("-log(2):lo / 8 =", minus_ln2_o8_lo);
18
19lb = round(-log(2)/2, single, RN);
20ub = round(log(2)/2, single, RN);
21print("-log(2)/2 = ", lb);
22print("+log(2)/2 =", ub);
23P = fpminimax(exp(x), [|1,2,3,4,5|], [|SG...|], [lb; ub], relative, 1);
24print("Degree-5 P[exp(x)] with 1 constraint on [-log(2)/2, log(2)/2] =", horner(P));
25print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
26
27lb = round(-log(2)/2, single, RN);
28ub = round(log(2)/2, single, RN);
29print("-log(2)/2 = ", lb);
30print("+log(2)/2 =", ub);
31P = fpminimax(exp(x), [|2,3,4,5|], [|SG...|], [lb; ub], relative, 1+x);
32print("Degree-5 P[exp(x)] with 1+x constraint on [-log(2)/2, log(2)/2] =", horner(P));
33print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
34
35lb = round(-log(2)/8, single, RN);
36ub = round(log(2)/8, single, RN);
37print("-log(2)/8 =", lb);
38print("+log(2)/8 =", ub);
39P = fpminimax(exp(x), [|2,3,4|], [|SG...|], [lb; ub], relative, 1+x);
40print("Degree-4 P[exp(x)] with 1+x constraint on [-log(2)/8, log(2)/8] =", horner(P));
41print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
42
43lb = round(-log(2)/16, single, RN);
44ub = round(log(2)/16, single, RN);
45print("-log(2)/16 =", lb);
46print("+log(2)/16 =", ub);
47P = fpminimax(exp(x), [|1,2,3,4|], [|SG...|], [lb; ub], relative, 1);
48print("Degree-4 P[exp(x)] with 1 constraint on [-log(2)/16, log(2)/16] =", horner(P));
49print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
50
51lb = round(-log(2)/16, single, RN);
52ub = round(log(2)/16, single, RN);
53print("-log(2)/16 =", lb);
54print("+log(2)/16 =", ub);
55P = fpminimax(exp(x), [|2,3,4|], [|SG...|], [lb; ub], relative, 1+x);
56print("Degree-4 P[exp(x)] with 1+x constraint on [-log(2)/16, log(2)/16] =", horner(P));
57print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
58
59lb = round(-log(2)/16, single, RN);
60ub = round(log(2)/16, single, RN);
61print("-log(2)/16 =", lb);
62print("+log(2)/16 =", ub);
63P = fpminimax(exp(x), [|1,2,3|], [|SG...|], [lb; ub], relative, 1);
64print("Degree-3 P[exp(x)] with 1 constraint on [-log(2)/16, log(2)/16] =", horner(P));
65print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
66
67lb = round(-log(2)/16, single, RN);
68ub = round(log(2)/16, single, RN);
69print("-log(2)/16 =", lb);
70print("+log(2)/16 =", ub);
71P = fpminimax(exp(x), [|2,3|], [|SG...|], [lb; ub], relative, 1+x);
72print("Degree-3 P[exp(x)] with 1+x constraint on [-log(2)/16, log(2)/16] =", horner(P));
73print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
74
75lb = round(-log(2)/32, single, RN);
76ub = round(log(2)/32, single, RN);
77print("-log(2)/32 =", lb);
78print("+log(2)/32 =", ub);
79P = fpminimax(exp(x), [|2,3|], [|SG...|], [lb; ub], relative, 1+x);
80print("Degree-3 P[exp(x)] with 1+x constraint on [-log(2)/32, log(2)/32] =", horner(P));
81print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
82
83lb = round(-log(2)/64, single, RN);
84ub = round(log(2)/64, single, RN);
85print("-log(2)/64 =", lb);
86print("+log(2)/64 =", ub);
87P = fpminimax(exp(x), [|1,2|], [|SG...|], [lb; ub], relative, 1);
88print("Degree-2 P[exp(x)] with 1+x constraint on [-log(2)/64, log(2)/64] =", horner(P));
89print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
90
91lb = round(-log(2)/128, single, RN);
92ub = round(log(2)/128, single, RN);
93print("-log(2)/128 =", lb);
94print("+log(2)/128 =", ub);
95P = fpminimax(exp(x), [|1,2|], [|SG...|], [lb; ub], relative, 1);
96print("Degree-2 P[exp(x)] with 1 constraint on [-log(2)/128, log(2)/128] =", horner(P));
97print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
98
99lb = round(-log(2)/128, single, RN);
100ub = round(log(2)/128, single, RN);
101print("-log(2)/128 =", lb);
102print("+log(2)/128 =", ub);
103P = fpminimax(exp(x), [|2|], [|SG...|], [lb; ub], relative, 1+x);
104print("Degree-2 P[exp(x)] with 1+x constraint on [-log(2)/128, log(2)/128] =", horner(P));
105print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
106
107lb = round(-log(2)/2048, single, RN);
108ub = round(log(2)/2048, single, RN);
109print("-log(2)/2048 =", lb);
110print("+log(2)/2048 =", ub);
111P = fpminimax(exp(x), [|0,1|], [|SG...|], [lb; ub], relative);
112print("Degree-1 P[exp(x)] with 1 constraint on [-log(2)/2048, log(2)/2048] =", horner(P));
113print("relative error =", round(dirtyinfnorm(P / exp(x) - 1, [lb; ub]), single, RU));
114