]> granicus.if.org Git - postgresql/blob - src/test/regress/expected/float8-small-is-zero_1.out
Remove useless whitespace at end of lines
[postgresql] / src / test / regress / expected / float8-small-is-zero_1.out
1 --
2 -- FLOAT8
3 --
4 CREATE TABLE FLOAT8_TBL(f1 float8);
5 INSERT INTO FLOAT8_TBL(f1) VALUES ('    0.0   ');
6 INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30  ');
7 INSERT INTO FLOAT8_TBL(f1) VALUES ('   -34.84');
8 INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
9 INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
10 -- test for underflow and overflow handling
11 SELECT '10e400'::float8;
12 ERROR:  "10e400" is out of range for type double precision
13 LINE 1: SELECT '10e400'::float8;
14                ^
15 SELECT '-10e400'::float8;
16 ERROR:  "-10e400" is out of range for type double precision
17 LINE 1: SELECT '-10e400'::float8;
18                ^
19 SELECT '10e-400'::float8;
20  float8 
21 --------
22       0
23 (1 row)
24
25 SELECT '-10e-400'::float8;
26  float8 
27 --------
28       0
29 (1 row)
30
31 -- bad input
32 INSERT INTO FLOAT8_TBL(f1) VALUES ('');
33 ERROR:  invalid input syntax for type double precision: ""
34 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('');
35                                            ^
36 INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
37 ERROR:  invalid input syntax for type double precision: "     "
38 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
39                                            ^
40 INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
41 ERROR:  invalid input syntax for type double precision: "xyz"
42 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
43                                            ^
44 INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
45 ERROR:  invalid input syntax for type double precision: "5.0.0"
46 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
47                                            ^
48 INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
49 ERROR:  invalid input syntax for type double precision: "5 . 0"
50 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
51                                            ^
52 INSERT INTO FLOAT8_TBL(f1) VALUES ('5.   0');
53 ERROR:  invalid input syntax for type double precision: "5.   0"
54 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5.   0');
55                                            ^
56 INSERT INTO FLOAT8_TBL(f1) VALUES ('    - 3');
57 ERROR:  invalid input syntax for type double precision: "    - 3"
58 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('    - 3');
59                                            ^
60 INSERT INTO FLOAT8_TBL(f1) VALUES ('123           5');
61 ERROR:  invalid input syntax for type double precision: "123           5"
62 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('123           5');
63                                            ^
64 -- special inputs
65 SELECT 'NaN'::float8;
66  float8 
67 --------
68     NaN
69 (1 row)
70
71 SELECT 'nan'::float8;
72  float8 
73 --------
74     NaN
75 (1 row)
76
77 SELECT '   NAN  '::float8;
78  float8 
79 --------
80     NaN
81 (1 row)
82
83 SELECT 'infinity'::float8;
84   float8  
85 ----------
86  Infinity
87 (1 row)
88
89 SELECT '          -INFINiTY   '::float8;
90   float8   
91 -----------
92  -Infinity
93 (1 row)
94
95 -- bad special inputs
96 SELECT 'N A N'::float8;
97 ERROR:  invalid input syntax for type double precision: "N A N"
98 LINE 1: SELECT 'N A N'::float8;
99                ^
100 SELECT 'NaN x'::float8;
101 ERROR:  invalid input syntax for type double precision: "NaN x"
102 LINE 1: SELECT 'NaN x'::float8;
103                ^
104 SELECT ' INFINITY    x'::float8;
105 ERROR:  invalid input syntax for type double precision: " INFINITY    x"
106 LINE 1: SELECT ' INFINITY    x'::float8;
107                ^
108 SELECT 'Infinity'::float8 + 100.0;
109  ?column? 
110 ----------
111  Infinity
112 (1 row)
113
114 SELECT 'Infinity'::float8 / 'Infinity'::float8;
115  ?column? 
116 ----------
117       NaN
118 (1 row)
119
120 SELECT 'nan'::float8 / 'nan'::float8;
121  ?column? 
122 ----------
123       NaN
124 (1 row)
125
126 SELECT 'nan'::numeric::float8;
127  float8 
128 --------
129     NaN
130 (1 row)
131
132 SELECT '' AS five, * FROM FLOAT8_TBL;
133  five |          f1          
134 ------+----------------------
135       |                    0
136       |               1004.3
137       |               -34.84
138       | 1.2345678901234e+200
139       | 1.2345678901234e-200
140 (5 rows)
141
142 SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
143  four |          f1          
144 ------+----------------------
145       |                    0
146       |               -34.84
147       | 1.2345678901234e+200
148       | 1.2345678901234e-200
149 (4 rows)
150
151 SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
152  one |   f1   
153 -----+--------
154      | 1004.3
155 (1 row)
156
157 SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1;
158  three |          f1          
159 -------+----------------------
160        |                    0
161        |               -34.84
162        | 1.2345678901234e-200
163 (3 rows)
164
165 SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE  f.f1 < '1004.3';
166  three |          f1          
167 -------+----------------------
168        |                    0
169        |               -34.84
170        | 1.2345678901234e-200
171 (3 rows)
172
173 SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
174  four |          f1          
175 ------+----------------------
176       |                    0
177       |               1004.3
178       |               -34.84
179       | 1.2345678901234e-200
180 (4 rows)
181
182 SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE  f.f1 <= '1004.3';
183  four |          f1          
184 ------+----------------------
185       |                    0
186       |               1004.3
187       |               -34.84
188       | 1.2345678901234e-200
189 (4 rows)
190
191 SELECT '' AS three, f.f1, f.f1 * '-10' AS x
192    FROM FLOAT8_TBL f
193    WHERE f.f1 > '0.0';
194  three |          f1          |           x           
195 -------+----------------------+-----------------------
196        |               1004.3 |                -10043
197        | 1.2345678901234e+200 | -1.2345678901234e+201
198        | 1.2345678901234e-200 | -1.2345678901234e-199
199 (3 rows)
200
201 SELECT '' AS three, f.f1, f.f1 + '-10' AS x
202    FROM FLOAT8_TBL f
203    WHERE f.f1 > '0.0';
204  three |          f1          |          x           
205 -------+----------------------+----------------------
206        |               1004.3 |                994.3
207        | 1.2345678901234e+200 | 1.2345678901234e+200
208        | 1.2345678901234e-200 |                  -10
209 (3 rows)
210
211 SELECT '' AS three, f.f1, f.f1 / '-10' AS x
212    FROM FLOAT8_TBL f
213    WHERE f.f1 > '0.0';
214  three |          f1          |           x           
215 -------+----------------------+-----------------------
216        |               1004.3 |               -100.43
217        | 1.2345678901234e+200 | -1.2345678901234e+199
218        | 1.2345678901234e-200 | -1.2345678901234e-201
219 (3 rows)
220
221 SELECT '' AS three, f.f1, f.f1 - '-10' AS x
222    FROM FLOAT8_TBL f
223    WHERE f.f1 > '0.0';
224  three |          f1          |          x           
225 -------+----------------------+----------------------
226        |               1004.3 |               1014.3
227        | 1.2345678901234e+200 | 1.2345678901234e+200
228        | 1.2345678901234e-200 |                   10
229 (3 rows)
230
231 SELECT '' AS one, f.f1 ^ '2.0' AS square_f1
232    FROM FLOAT8_TBL f where f.f1 = '1004.3';
233  one | square_f1  
234 -----+------------
235      | 1008618.49
236 (1 row)
237
238 -- absolute value
239 SELECT '' AS five, f.f1, @f.f1 AS abs_f1
240    FROM FLOAT8_TBL f;
241  five |          f1          |        abs_f1        
242 ------+----------------------+----------------------
243       |                    0 |                    0
244       |               1004.3 |               1004.3
245       |               -34.84 |                34.84
246       | 1.2345678901234e+200 | 1.2345678901234e+200
247       | 1.2345678901234e-200 | 1.2345678901234e-200
248 (5 rows)
249
250 -- truncate
251 SELECT '' AS five, f.f1, trunc(f.f1) AS trunc_f1
252    FROM FLOAT8_TBL f;
253  five |          f1          |       trunc_f1       
254 ------+----------------------+----------------------
255       |                    0 |                    0
256       |               1004.3 |                 1004
257       |               -34.84 |                  -34
258       | 1.2345678901234e+200 | 1.2345678901234e+200
259       | 1.2345678901234e-200 |                    0
260 (5 rows)
261
262 -- round
263 SELECT '' AS five, f.f1, round(f.f1) AS round_f1
264    FROM FLOAT8_TBL f;
265  five |          f1          |       round_f1       
266 ------+----------------------+----------------------
267       |                    0 |                    0
268       |               1004.3 |                 1004
269       |               -34.84 |                  -35
270       | 1.2345678901234e+200 | 1.2345678901234e+200
271       | 1.2345678901234e-200 |                    0
272 (5 rows)
273
274 -- ceil / ceiling
275 select ceil(f1) as ceil_f1 from float8_tbl f;
276        ceil_f1        
277 ----------------------
278                     0
279                  1005
280                   -34
281  1.2345678901234e+200
282                     1
283 (5 rows)
284
285 select ceiling(f1) as ceiling_f1 from float8_tbl f;
286       ceiling_f1      
287 ----------------------
288                     0
289                  1005
290                   -34
291  1.2345678901234e+200
292                     1
293 (5 rows)
294
295 -- floor
296 select floor(f1) as floor_f1 from float8_tbl f;
297        floor_f1       
298 ----------------------
299                     0
300                  1004
301                   -35
302  1.2345678901234e+200
303                     0
304 (5 rows)
305
306 -- sign
307 select sign(f1) as sign_f1 from float8_tbl f;
308  sign_f1 
309 ---------
310        0
311        1
312       -1
313        1
314        1
315 (5 rows)
316
317 -- square root
318 SELECT sqrt(float8 '64') AS eight;
319  eight 
320 -------
321      8
322 (1 row)
323
324 SELECT |/ float8 '64' AS eight;
325  eight 
326 -------
327      8
328 (1 row)
329
330 SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1
331    FROM FLOAT8_TBL f
332    WHERE f.f1 > '0.0';
333  three |          f1          |        sqrt_f1        
334 -------+----------------------+-----------------------
335        |               1004.3 |      31.6906926399535
336        | 1.2345678901234e+200 | 1.11111110611109e+100
337        | 1.2345678901234e-200 | 1.11111110611109e-100
338 (3 rows)
339
340 -- power
341 SELECT power(float8 '144', float8 '0.5');
342  power 
343 -------
344     12
345 (1 row)
346
347 -- take exp of ln(f.f1)
348 SELECT '' AS three, f.f1, exp(ln(f.f1)) AS exp_ln_f1
349    FROM FLOAT8_TBL f
350    WHERE f.f1 > '0.0';
351  three |          f1          |       exp_ln_f1       
352 -------+----------------------+-----------------------
353        |               1004.3 |                1004.3
354        | 1.2345678901234e+200 | 1.23456789012338e+200
355        | 1.2345678901234e-200 | 1.23456789012339e-200
356 (3 rows)
357
358 -- cube root
359 SELECT ||/ float8 '27' AS three;
360  three 
361 -------
362      3
363 (1 row)
364
365 SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
366  five |          f1          |       cbrt_f1        
367 ------+----------------------+----------------------
368       |                    0 |                    0
369       |               1004.3 |      10.014312837827
370       |               -34.84 |    -3.26607421344208
371       | 1.2345678901234e+200 | 4.97933859234765e+66
372       | 1.2345678901234e-200 |  2.3112042409018e-67
373 (5 rows)
374
375 SELECT '' AS five, * FROM FLOAT8_TBL;
376  five |          f1          
377 ------+----------------------
378       |                    0
379       |               1004.3
380       |               -34.84
381       | 1.2345678901234e+200
382       | 1.2345678901234e-200
383 (5 rows)
384
385 UPDATE FLOAT8_TBL
386    SET f1 = FLOAT8_TBL.f1 * '-1'
387    WHERE FLOAT8_TBL.f1 > '0.0';
388 SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f;
389 ERROR:  value out of range: overflow
390 SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f;
391 ERROR:  value out of range: overflow
392 SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5;
393  ?column? 
394 ----------
395         2
396 (1 row)
397
398 SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ;
399 ERROR:  cannot take logarithm of zero
400 SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ;
401 ERROR:  cannot take logarithm of a negative number
402 SELECT '' AS bad, exp(f.f1) from FLOAT8_TBL f;
403 ERROR:  value out of range: underflow
404 SELECT '' AS bad, f.f1 / '0.0' from FLOAT8_TBL f;
405 ERROR:  division by zero
406 SELECT '' AS five, * FROM FLOAT8_TBL;
407  five |          f1           
408 ------+-----------------------
409       |                     0
410       |                -34.84
411       |               -1004.3
412       | -1.2345678901234e+200
413       | -1.2345678901234e-200
414 (5 rows)
415
416 -- test for over- and underflow
417 INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
418 ERROR:  "10e400" is out of range for type double precision
419 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
420                                            ^
421 INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
422 ERROR:  "-10e400" is out of range for type double precision
423 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
424                                            ^
425 INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
426 INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
427 -- maintain external table consistency across platforms
428 -- delete all values and reinsert well-behaved ones
429 DELETE FROM FLOAT8_TBL;
430 INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
431 INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
432 INSERT INTO FLOAT8_TBL(f1) VALUES ('-1004.30');
433 INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e+200');
434 INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200');
435 SELECT '' AS five, * FROM FLOAT8_TBL;
436  five |          f1           
437 ------+-----------------------
438       |                     0
439       |                -34.84
440       |               -1004.3
441       | -1.2345678901234e+200
442       | -1.2345678901234e-200
443 (5 rows)
444