I don't think trying to bracket the hires time with lores
[p5sagit/p5-mst-13.2.git] / lib / bigfloat.t
CommitLineData
5d7098d5 1#!./perl
2
88587957 3BEGIN {
4 chdir 't' if -d 't';
5 @INC = '../lib';
6}
7
5d7098d5 8require "bigfloat.pl";
9
10$test = 0;
11$| = 1;
12print "1..355\n";
13while (<DATA>) {
14 chop;
15 if (/^&/) {
16 $f = $_;
17 } elsif (/^\$.*/) {
18 eval "$_;";
19 } else {
20 ++$test;
21 @args = split(/:/,$_,99);
22 $ans = pop(@args);
23 $try = "$f('" . join("','", @args) . "');";
24 if (($ans1 = eval($try)) eq $ans) {
25 print "ok $test\n";
26 } else {
27 print "not ok $test\n";
28 print "# '$try' expected: '$ans' got: '$ans1'\n";
29 }
30 }
31}
32__END__
33&fnorm
34abc:NaN
35 1 a:NaN
361bcd2:NaN
3711111b:NaN
38+1z:NaN
39-1z:NaN
400:+0E+0
41+0:+0E+0
42+00:+0E+0
43+0 0 0:+0E+0
44000000 0000000 00000:+0E+0
45-0:+0E+0
46-0000:+0E+0
47+1:+1E+0
48+01:+1E+0
49+001:+1E+0
50+00000100000:+1E+5
51123456789:+123456789E+0
52-1:-1E+0
53-01:-1E+0
54-001:-1E+0
55-123456789:-123456789E+0
56-00000100000:-1E+5
57123.456a:NaN
58123.456:+123456E-3
590.01:+1E-2
60.002:+2E-3
61-0.0003:-3E-4
62-.0000000004:-4E-10
63123456E2:+123456E+2
64123456E-2:+123456E-2
65-123456E2:-123456E+2
66-123456E-2:-123456E-2
671e1:+1E+1
682e-11:+2E-11
69-3e111:-3E+111
70-4e-1111:-4E-1111
71&fneg
72abd:NaN
73+0:+0E+0
74+1:-1E+0
75-1:+1E+0
76+123456789:-123456789E+0
77-123456789:+123456789E+0
78+123.456789:-123456789E-6
79-123456.789:+123456789E-3
80&fabs
81abc:NaN
82+0:+0E+0
83+1:+1E+0
84-1:+1E+0
85+123456789:+123456789E+0
86-123456789:+123456789E+0
87+123.456789:+123456789E-6
88-123456.789:+123456789E-3
89&fround
90$bigfloat::rnd_mode = 'trunc'
91+10123456789:5:+10123E+6
92-10123456789:5:-10123E+6
93+10123456789:9:+101234567E+2
94-10123456789:9:-101234567E+2
95+101234500:6:+101234E+3
96-101234500:6:-101234E+3
97$bigfloat::rnd_mode = 'zero'
98+20123456789:5:+20123E+6
99-20123456789:5:-20123E+6
100+20123456789:9:+201234568E+2
101-20123456789:9:-201234568E+2
102+201234500:6:+201234E+3
103-201234500:6:-201234E+3
104$bigfloat::rnd_mode = '+inf'
105+30123456789:5:+30123E+6
106-30123456789:5:-30123E+6
107+30123456789:9:+301234568E+2
108-30123456789:9:-301234568E+2
109+301234500:6:+301235E+3
110-301234500:6:-301234E+3
111$bigfloat::rnd_mode = '-inf'
112+40123456789:5:+40123E+6
113-40123456789:5:-40123E+6
114+40123456789:9:+401234568E+2
115-40123456789:9:-401234568E+2
116+401234500:6:+401234E+3
117-401234500:6:-401235E+3
118$bigfloat::rnd_mode = 'odd'
119+50123456789:5:+50123E+6
120-50123456789:5:-50123E+6
121+50123456789:9:+501234568E+2
122-50123456789:9:-501234568E+2
123+501234500:6:+501235E+3
124-501234500:6:-501235E+3
125$bigfloat::rnd_mode = 'even'
126+60123456789:5:+60123E+6
127-60123456789:5:-60123E+6
128+60123456789:9:+601234568E+2
129-60123456789:9:-601234568E+2
130+601234500:6:+601234E+3
131-601234500:6:-601234E+3
132&ffround
133$bigfloat::rnd_mode = 'trunc'
134+1.23:-1:+12E-1
135-1.23:-1:-12E-1
136+1.27:-1:+12E-1
137-1.27:-1:-12E-1
138+1.25:-1:+12E-1
139-1.25:-1:-12E-1
140+1.35:-1:+13E-1
141-1.35:-1:-13E-1
142-0.006:-1:+0E+0
143-0.006:-2:+0E+0
144$bigfloat::rnd_mode = 'zero'
145+2.23:-1:+22E-1
146-2.23:-1:-22E-1
147+2.27:-1:+23E-1
148-2.27:-1:-23E-1
149+2.25:-1:+22E-1
150-2.25:-1:-22E-1
151+2.35:-1:+23E-1
152-2.35:-1:-23E-1
153-0.0065:-1:+0E+0
154-0.0065:-2:-1E-2
155-0.0065:-3:-6E-3
156-0.0065:-4:-65E-4
157-0.0065:-5:-65E-4
158$bigfloat::rnd_mode = '+inf'
159+3.23:-1:+32E-1
160-3.23:-1:-32E-1
161+3.27:-1:+33E-1
162-3.27:-1:-33E-1
163+3.25:-1:+33E-1
164-3.25:-1:-32E-1
165+3.35:-1:+34E-1
166-3.35:-1:-33E-1
167-0.0065:-1:+0E+0
168-0.0065:-2:-1E-2
169-0.0065:-3:-6E-3
170-0.0065:-4:-65E-4
171-0.0065:-5:-65E-4
172$bigfloat::rnd_mode = '-inf'
173+4.23:-1:+42E-1
174-4.23:-1:-42E-1
175+4.27:-1:+43E-1
176-4.27:-1:-43E-1
177+4.25:-1:+42E-1
178-4.25:-1:-43E-1
179+4.35:-1:+43E-1
180-4.35:-1:-44E-1
181-0.0065:-1:+0E+0
182-0.0065:-2:-1E-2
183-0.0065:-3:-7E-3
184-0.0065:-4:-65E-4
185-0.0065:-5:-65E-4
186$bigfloat::rnd_mode = 'odd'
187+5.23:-1:+52E-1
188-5.23:-1:-52E-1
189+5.27:-1:+53E-1
190-5.27:-1:-53E-1
191+5.25:-1:+53E-1
192-5.25:-1:-53E-1
193+5.35:-1:+53E-1
194-5.35:-1:-53E-1
195-0.0065:-1:+0E+0
196-0.0065:-2:-1E-2
197-0.0065:-3:-7E-3
198-0.0065:-4:-65E-4
199-0.0065:-5:-65E-4
200$bigfloat::rnd_mode = 'even'
201+6.23:-1:+62E-1
202-6.23:-1:-62E-1
203+6.27:-1:+63E-1
204-6.27:-1:-63E-1
205+6.25:-1:+62E-1
206-6.25:-1:-62E-1
207+6.35:-1:+64E-1
208-6.35:-1:-64E-1
209-0.0065:-1:+0E+0
210-0.0065:-2:-1E-2
211-0.0065:-3:-6E-3
212-0.0065:-4:-65E-4
213-0.0065:-5:-65E-4
214&fcmp
215abc:abc:
216abc:+0:
217+0:abc:
218+0:+0:0
219-1:+0:-1
220+0:-1:1
221+1:+0:1
222+0:+1:-1
223-1:+1:-1
224+1:-1:1
225-1:-1:0
226+1:+1:0
227+123:+123:0
228+123:+12:1
229+12:+123:-1
230-123:-123:0
231-123:-12:-1
232-12:-123:1
233+123:+124:-1
234+124:+123:1
235-123:-124:1
236-124:-123:-1
237&fadd
238abc:abc:NaN
239abc:+0:NaN
240+0:abc:NaN
241+0:+0:+0E+0
242+1:+0:+1E+0
243+0:+1:+1E+0
244+1:+1:+2E+0
245-1:+0:-1E+0
246+0:-1:-1E+0
247-1:-1:-2E+0
248-1:+1:+0E+0
249+1:-1:+0E+0
250+9:+1:+1E+1
251+99:+1:+1E+2
252+999:+1:+1E+3
253+9999:+1:+1E+4
254+99999:+1:+1E+5
255+999999:+1:+1E+6
256+9999999:+1:+1E+7
257+99999999:+1:+1E+8
258+999999999:+1:+1E+9
259+9999999999:+1:+1E+10
260+99999999999:+1:+1E+11
261+10:-1:+9E+0
262+100:-1:+99E+0
263+1000:-1:+999E+0
264+10000:-1:+9999E+0
265+100000:-1:+99999E+0
266+1000000:-1:+999999E+0
267+10000000:-1:+9999999E+0
268+100000000:-1:+99999999E+0
269+1000000000:-1:+999999999E+0
270+10000000000:-1:+9999999999E+0
271+123456789:+987654321:+111111111E+1
272-123456789:+987654321:+864197532E+0
273-123456789:-987654321:-111111111E+1
274+123456789:-987654321:-864197532E+0
275&fsub
276abc:abc:NaN
277abc:+0:NaN
278+0:abc:NaN
279+0:+0:+0E+0
280+1:+0:+1E+0
281+0:+1:-1E+0
282+1:+1:+0E+0
283-1:+0:-1E+0
284+0:-1:+1E+0
285-1:-1:+0E+0
286-1:+1:-2E+0
287+1:-1:+2E+0
288+9:+1:+8E+0
289+99:+1:+98E+0
290+999:+1:+998E+0
291+9999:+1:+9998E+0
292+99999:+1:+99998E+0
293+999999:+1:+999998E+0
294+9999999:+1:+9999998E+0
295+99999999:+1:+99999998E+0
296+999999999:+1:+999999998E+0
297+9999999999:+1:+9999999998E+0
298+99999999999:+1:+99999999998E+0
299+10:-1:+11E+0
300+100:-1:+101E+0
301+1000:-1:+1001E+0
302+10000:-1:+10001E+0
303+100000:-1:+100001E+0
304+1000000:-1:+1000001E+0
305+10000000:-1:+10000001E+0
306+100000000:-1:+100000001E+0
307+1000000000:-1:+1000000001E+0
308+10000000000:-1:+10000000001E+0
309+123456789:+987654321:-864197532E+0
310-123456789:+987654321:-111111111E+1
311-123456789:-987654321:+864197532E+0
312+123456789:-987654321:+111111111E+1
313&fmul
314abc:abc:NaN
315abc:+0:NaN
316+0:abc:NaN
317+0:+0:+0E+0
318+0:+1:+0E+0
319+1:+0:+0E+0
320+0:-1:+0E+0
321-1:+0:+0E+0
322+123456789123456789:+0:+0E+0
323+0:+123456789123456789:+0E+0
324-1:-1:+1E+0
325-1:+1:-1E+0
326+1:-1:-1E+0
327+1:+1:+1E+0
328+2:+3:+6E+0
329-2:+3:-6E+0
330+2:-3:-6E+0
331-2:-3:+6E+0
332+111:+111:+12321E+0
333+10101:+10101:+102030201E+0
334+1001001:+1001001:+1002003002001E+0
335+100010001:+100010001:+10002000300020001E+0
336+10000100001:+10000100001:+100002000030000200001E+0
337+11111111111:+9:+99999999999E+0
338+22222222222:+9:+199999999998E+0
339+33333333333:+9:+299999999997E+0
340+44444444444:+9:+399999999996E+0
341+55555555555:+9:+499999999995E+0
342+66666666666:+9:+599999999994E+0
343+77777777777:+9:+699999999993E+0
344+88888888888:+9:+799999999992E+0
345+99999999999:+9:+899999999991E+0
346&fdiv
347abc:abc:NaN
348abc:+1:abc:NaN
349+1:abc:NaN
350+0:+0:NaN
351+0:+1:+0E+0
352+1:+0:NaN
353+0:-1:+0E+0
354-1:+0:NaN
355+1:+1:+1E+0
356-1:-1:+1E+0
357+1:-1:-1E+0
358-1:+1:-1E+0
359+1:+2:+5E-1
360+2:+1:+2E+0
361+10:+5:+2E+0
362+100:+4:+25E+0
363+1000:+8:+125E+0
364+10000:+16:+625E+0
365+10000:-16:-625E+0
366+999999999999:+9:+111111111111E+0
367+999999999999:+99:+10101010101E+0
368+999999999999:+999:+1001001001E+0
369+999999999999:+9999:+100010001E+0
370+999999999999999:+99999:+10000100001E+0
371+1000000000:+9:+1111111111111111111111111111111111111111E-31
372+2000000000:+9:+2222222222222222222222222222222222222222E-31
373+3000000000:+9:+3333333333333333333333333333333333333333E-31
374+4000000000:+9:+4444444444444444444444444444444444444444E-31
375+5000000000:+9:+5555555555555555555555555555555555555556E-31
376+6000000000:+9:+6666666666666666666666666666666666666667E-31
377+7000000000:+9:+7777777777777777777777777777777777777778E-31
378+8000000000:+9:+8888888888888888888888888888888888888889E-31
379+9000000000:+9:+1E+9
380+35500000:+113:+3141592920353982300884955752212389380531E-34
381+71000000:+226:+3141592920353982300884955752212389380531E-34
382+106500000:+339:+3141592920353982300884955752212389380531E-34
383+1000000000:+3:+3333333333333333333333333333333333333333E-31
384$bigfloat::div_scale = 20
385+1000000000:+9:+11111111111111111111E-11
386+2000000000:+9:+22222222222222222222E-11
387+3000000000:+9:+33333333333333333333E-11
388+4000000000:+9:+44444444444444444444E-11
389+5000000000:+9:+55555555555555555556E-11
390+6000000000:+9:+66666666666666666667E-11
391+7000000000:+9:+77777777777777777778E-11
392+8000000000:+9:+88888888888888888889E-11
393+9000000000:+9:+1E+9
394+35500000:+113:+314159292035398230088E-15
395+71000000:+226:+314159292035398230088E-15
396+106500000:+339:+31415929203539823009E-14
397+1000000000:+3:+33333333333333333333E-11
398$bigfloat::div_scale = 40
399&fsqrt
400+0:+0E+0
401-1:NaN
402-2:NaN
403-16:NaN
404-123.456:NaN
405+1:+1E+0
406+1.44:+12E-1
407+2:+141421356237309504880168872420969807857E-38
408+4:+2E+0
409+16:+4E+0
410+100:+1E+1
411+123.456:+1111107555549866648462149404118219234119E-38
412+15241.383936:+123456E-3