1
2 """
3 Format numbers nicely for printing.
4
5 format_uncertainty_pm uses value +/- uncertainty
6
7 format_uncertainty_compact uses value(uncertainty)
8
9 format_uncertainty uses the default style, which is format_uncertainty_compact.
10 """
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 import math
36 import numpy
37 __all__ = ['format_uncertainty', 'format_uncertainty_pm',
38 'format_uncertainty_compact']
39
72
133
134
135 format_uncertainty = format_uncertainty_compact
136
138
139 value_str = format_uncertainty
140
141
142 assert value_str(1235670,766000) == "1.24(77)e6"
143 assert value_str(123567.,76600) == "124(77)e3"
144 assert value_str(12356.7,7660) == "12.4(77)e3"
145 assert value_str(1235.67,766) == "1.24(77)e3"
146 assert value_str(123.567,76.6) == "124(77)"
147 assert value_str(12.3567,7.66) == "12.4(77)"
148 assert value_str(1.23567,.766) == "1.24(77)"
149 assert value_str(.123567,.0766) == "0.124(77)"
150 assert value_str(.0123567,.00766) == "0.0124(77)"
151 assert value_str(.00123567,.000766) == "0.00124(77)"
152 assert value_str(.000123567,.0000766) == "124(77)e-6"
153 assert value_str(.0000123567,.00000766) == "12.4(77)e-6"
154 assert value_str(.00000123567,.000000766) == "1.24(77)e-6"
155 assert value_str(.000000123567,.0000000766) == "124(77)e-9"
156 assert value_str(.00000123567,.0000000766) == "1.236(77)e-6"
157 assert value_str(.0000123567,.0000000766) == "12.357(77)e-6"
158 assert value_str(.000123567,.0000000766) == "123.567(77)e-6"
159 assert value_str(.00123567,.000000766) == "0.00123567(77)"
160 assert value_str(.0123567,.00000766) == "0.0123567(77)"
161 assert value_str(.123567,.0000766) == "0.123567(77)"
162 assert value_str(1.23567,.000766) == "1.23567(77)"
163 assert value_str(12.3567,.00766) == "12.3567(77)"
164 assert value_str(123.567,.0764) == "123.567(76)"
165 assert value_str(1235.67,.764) == "1235.67(76)"
166 assert value_str(12356.7,7.64) == "12356.7(76)"
167 assert value_str(123567,76.4) == "123567(76)"
168 assert value_str(1235670,764) == "1.23567(76)e6"
169 assert value_str(12356700,764) == "12.3567(76)e6"
170 assert value_str(123567000,7640) == "123.567(76)e6"
171 assert value_str(1235670000,76400) == "1.23567(76)e9"
172
173
174 assert value_str(123567,764000) == "0.12(76)e6"
175 assert value_str(12356.7,76400) == "12(76)e3"
176 assert value_str(1235.67,7640) == "1.2(76)e3"
177 assert value_str(123.567,764) == "0.12(76)e3"
178 assert value_str(12.3567,76.4) == "12(76)"
179 assert value_str(1.23567,7.64) == "1.2(76)"
180 assert value_str(.123567,.764) == "0.12(76)"
181 assert value_str(.0123567,.0764) == "12(76)e-3"
182 assert value_str(.00123567,.00764) == "1.2(76)e-3"
183 assert value_str(.000123567,.000764) == "0.12(76)e-3"
184
185
186 assert value_str(123567,7640000) == "0.1(76)e6"
187 assert value_str(12356.7,764000) == "0.01(76)e6"
188 assert value_str(1235.67,76400) == "0.001(76)e6"
189 assert value_str(123.567,7640) == "0.1(76)e3"
190 assert value_str(12.3567,764) == "0.01(76)e3"
191 assert value_str(1.23567,76.4) == "0.001(76)e3"
192 assert value_str(.123567,7.64) == "0.1(76)"
193 assert value_str(.0123567,.764) == "0.01(76)"
194 assert value_str(.00123567,.0764) == "0.001(76)"
195 assert value_str(.000123567,.00764) == "0.1(76)e-3"
196
197
198 assert value_str(12356700,7640000000) == "0.0(76)e9"
199 assert value_str(1235670,764000000) == "0.00(76)e9"
200 assert value_str(123567,76400000) == "0.000(76)e9"
201 assert value_str(12356,7640000) == "0.0(76)e6"
202 assert value_str(1235,764000) == "0.00(76)e6"
203 assert value_str(123,76400) == "0.000(76)e6"
204 assert value_str(12,7640) == "0.0(76)e3"
205 assert value_str(1,764) == "0.00(76)e3"
206 assert value_str(0.1,76.4) == "0.000(76)e3"
207 assert value_str(0.01,7.64) == "0.0(76)"
208 assert value_str(0.001,0.764) == "0.00(76)"
209 assert value_str(0.0001,0.0764) == "0.000(76)"
210 assert value_str(0.00001,0.00764) == "0.0(76)e-3"
211
212
213 assert value_str(12356700,76400000000) == "0.000(76)e12"
214 assert value_str(1235670,7640000000) == "0.0(76)e9"
215 assert value_str(123567,764000000) == "0.00(76)e9"
216 assert value_str(12356,76400000) == "0.000(76)e9"
217 assert value_str(1235,7640000) == "0.0(76)e6"
218 assert value_str(123,764000) == "0.00(76)e6"
219 assert value_str(12,76400) == "0.000(76)e6"
220 assert value_str(1,7640) == "0.0(76)e3"
221 assert value_str(0.1,764) == "0.00(76)e3"
222 assert value_str(0.01,76.4) == "0.000(76)e3"
223 assert value_str(0.001,7.64) == "0.0(76)"
224 assert value_str(0.0001,0.764) == "0.00(76)"
225 assert value_str(0.00001,0.0764) == "0.000(76)"
226 assert value_str(0.000001,0.00764) == "0.0(76)e-3"
227
228
229 assert value_str(-1235670,765000) == "-1.24(77)e6"
230 assert value_str(-1.23567,.765) == "-1.24(77)"
231 assert value_str(-.00000123567,.0000000765) == "-1.236(77)e-6"
232 assert value_str(-12356.7,7.64) == "-12356.7(76)"
233 assert value_str(-123.567,764) == "-0.12(76)e3"
234 assert value_str(-1235.67,76400) == "-0.001(76)e6"
235 assert value_str(-.000123567,.00764) == "-0.1(76)e-3"
236 assert value_str(-12356,7640000) == "-0.0(76)e6"
237 assert value_str(-12,76400) == "-0.000(76)e6"
238 assert value_str(-0.0001,0.764) == "-0.00(76)"
239
240
241 assert value_str(-numpy.inf,None) == "-inf"
242 assert value_str(numpy.inf,None) == "inf"
243 assert value_str(numpy.NaN,None) == "NaN"
244
245
246 assert format_uncertainty_pm(-1.23567,0.765) == "-1.24 +/- 0.77"
247 assert format_uncertainty_compact(-1.23567,0.765) == "-1.24(77)"
248 assert format_uncertainty(-1.23567,0.765) == "-1.24(77)"
249
250
251 assert format_uncertainty_pm(-1.23567,numpy.NaN) == "-1.23567"
252 assert format_uncertainty_pm(-1.23567,-numpy.inf) == "-1.23567"
253 assert format_uncertainty_pm(-1.23567,-0.1) == "-1.23567"
254 assert format_uncertainty_compact(-1.23567,numpy.NaN) == "-1.23567"
255 assert format_uncertainty_compact(-1.23567,-numpy.inf) == "-1.23567"
256 assert format_uncertainty_compact(-1.23567,-0.1) == "-1.23567"
257
258
259 assert format_uncertainty_pm(-1.23567,0) == "-1.23567"
260 assert format_uncertainty_compact(-1.23567,0) == "-1.23567"
261 assert format_uncertainty_pm(-1.23567,None) == "-1.23567"
262 assert format_uncertainty_compact(-1.23567,None) == "-1.23567"
263
264
265 assert format_uncertainty_pm(-1.23567,numpy.inf) == "-1.23567 +/- inf"
266 assert format_uncertainty_compact(-1.23567,numpy.inf) == "-1.23567(inf)"
267
268 if __name__ == "__main__": test()
269