Consistently use "superuser" instead of "super user"
[pgsql.git] / src / test / regress / expected / float8.out
blobfc4212b32dc527d97f411c1d5d6318a4e3a1f2cb
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 ERROR:  "10e-400" is out of range for type double precision
21 LINE 1: SELECT '10e-400'::float8;
22                ^
23 SELECT '-10e-400'::float8;
24 ERROR:  "-10e-400" is out of range for type double precision
25 LINE 1: SELECT '-10e-400'::float8;
26                ^
27 -- test smallest normalized input
28 SELECT float8send('2.2250738585072014E-308'::float8);
29      float8send     
30 --------------------
31  \x0010000000000000
32 (1 row)
34 -- bad input
35 INSERT INTO FLOAT8_TBL(f1) VALUES ('');
36 ERROR:  invalid input syntax for type double precision: ""
37 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('');
38                                            ^
39 INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
40 ERROR:  invalid input syntax for type double precision: "     "
41 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
42                                            ^
43 INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
44 ERROR:  invalid input syntax for type double precision: "xyz"
45 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
46                                            ^
47 INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
48 ERROR:  invalid input syntax for type double precision: "5.0.0"
49 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
50                                            ^
51 INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
52 ERROR:  invalid input syntax for type double precision: "5 . 0"
53 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
54                                            ^
55 INSERT INTO FLOAT8_TBL(f1) VALUES ('5.   0');
56 ERROR:  invalid input syntax for type double precision: "5.   0"
57 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('5.   0');
58                                            ^
59 INSERT INTO FLOAT8_TBL(f1) VALUES ('    - 3');
60 ERROR:  invalid input syntax for type double precision: "    - 3"
61 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('    - 3');
62                                            ^
63 INSERT INTO FLOAT8_TBL(f1) VALUES ('123           5');
64 ERROR:  invalid input syntax for type double precision: "123           5"
65 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('123           5');
66                                            ^
67 -- special inputs
68 SELECT 'NaN'::float8;
69  float8 
70 --------
71     NaN
72 (1 row)
74 SELECT 'nan'::float8;
75  float8 
76 --------
77     NaN
78 (1 row)
80 SELECT '   NAN  '::float8;
81  float8 
82 --------
83     NaN
84 (1 row)
86 SELECT 'infinity'::float8;
87   float8  
88 ----------
89  Infinity
90 (1 row)
92 SELECT '          -INFINiTY   '::float8;
93   float8   
94 -----------
95  -Infinity
96 (1 row)
98 -- bad special inputs
99 SELECT 'N A N'::float8;
100 ERROR:  invalid input syntax for type double precision: "N A N"
101 LINE 1: SELECT 'N A N'::float8;
102                ^
103 SELECT 'NaN x'::float8;
104 ERROR:  invalid input syntax for type double precision: "NaN x"
105 LINE 1: SELECT 'NaN x'::float8;
106                ^
107 SELECT ' INFINITY    x'::float8;
108 ERROR:  invalid input syntax for type double precision: " INFINITY    x"
109 LINE 1: SELECT ' INFINITY    x'::float8;
110                ^
111 SELECT 'Infinity'::float8 + 100.0;
112  ?column? 
113 ----------
114  Infinity
115 (1 row)
117 SELECT 'Infinity'::float8 / 'Infinity'::float8;
118  ?column? 
119 ----------
120       NaN
121 (1 row)
123 SELECT '42'::float8 / 'Infinity'::float8;
124  ?column? 
125 ----------
126         0
127 (1 row)
129 SELECT 'nan'::float8 / 'nan'::float8;
130  ?column? 
131 ----------
132       NaN
133 (1 row)
135 SELECT 'nan'::float8 / '0'::float8;
136  ?column? 
137 ----------
138       NaN
139 (1 row)
141 SELECT 'nan'::numeric::float8;
142  float8 
143 --------
144     NaN
145 (1 row)
147 SELECT * FROM FLOAT8_TBL;
148           f1          
149 ----------------------
150                     0
151                1004.3
152                -34.84
153  1.2345678901234e+200
154  1.2345678901234e-200
155 (5 rows)
157 SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
158           f1          
159 ----------------------
160                     0
161                -34.84
162  1.2345678901234e+200
163  1.2345678901234e-200
164 (4 rows)
166 SELECT f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
167    f1   
168 --------
169  1004.3
170 (1 row)
172 SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1;
173           f1          
174 ----------------------
175                     0
176                -34.84
177  1.2345678901234e-200
178 (3 rows)
180 SELECT f.* FROM FLOAT8_TBL f WHERE  f.f1 < '1004.3';
181           f1          
182 ----------------------
183                     0
184                -34.84
185  1.2345678901234e-200
186 (3 rows)
188 SELECT f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
189           f1          
190 ----------------------
191                     0
192                1004.3
193                -34.84
194  1.2345678901234e-200
195 (4 rows)
197 SELECT f.* FROM FLOAT8_TBL f WHERE  f.f1 <= '1004.3';
198           f1          
199 ----------------------
200                     0
201                1004.3
202                -34.84
203  1.2345678901234e-200
204 (4 rows)
206 SELECT f.f1, f.f1 * '-10' AS x
207    FROM FLOAT8_TBL f
208    WHERE f.f1 > '0.0';
209           f1          |           x           
210 ----------------------+-----------------------
211                1004.3 |                -10043
212  1.2345678901234e+200 | -1.2345678901234e+201
213  1.2345678901234e-200 | -1.2345678901234e-199
214 (3 rows)
216 SELECT f.f1, f.f1 + '-10' AS x
217    FROM FLOAT8_TBL f
218    WHERE f.f1 > '0.0';
219           f1          |          x           
220 ----------------------+----------------------
221                1004.3 |                994.3
222  1.2345678901234e+200 | 1.2345678901234e+200
223  1.2345678901234e-200 |                  -10
224 (3 rows)
226 SELECT f.f1, f.f1 / '-10' AS x
227    FROM FLOAT8_TBL f
228    WHERE f.f1 > '0.0';
229           f1          |           x           
230 ----------------------+-----------------------
231                1004.3 |   -100.42999999999999
232  1.2345678901234e+200 | -1.2345678901234e+199
233  1.2345678901234e-200 | -1.2345678901234e-201
234 (3 rows)
236 SELECT f.f1, f.f1 - '-10' AS x
237    FROM FLOAT8_TBL f
238    WHERE f.f1 > '0.0';
239           f1          |          x           
240 ----------------------+----------------------
241                1004.3 |               1014.3
242  1.2345678901234e+200 | 1.2345678901234e+200
243  1.2345678901234e-200 |                   10
244 (3 rows)
246 SELECT f.f1 ^ '2.0' AS square_f1
247    FROM FLOAT8_TBL f where f.f1 = '1004.3';
248      square_f1      
249 --------------------
250  1008618.4899999999
251 (1 row)
253 -- absolute value
254 SELECT f.f1, @f.f1 AS abs_f1
255    FROM FLOAT8_TBL f;
256           f1          |        abs_f1        
257 ----------------------+----------------------
258                     0 |                    0
259                1004.3 |               1004.3
260                -34.84 |                34.84
261  1.2345678901234e+200 | 1.2345678901234e+200
262  1.2345678901234e-200 | 1.2345678901234e-200
263 (5 rows)
265 -- truncate
266 SELECT f.f1, trunc(f.f1) AS trunc_f1
267    FROM FLOAT8_TBL f;
268           f1          |       trunc_f1       
269 ----------------------+----------------------
270                     0 |                    0
271                1004.3 |                 1004
272                -34.84 |                  -34
273  1.2345678901234e+200 | 1.2345678901234e+200
274  1.2345678901234e-200 |                    0
275 (5 rows)
277 -- round
278 SELECT f.f1, round(f.f1) AS round_f1
279    FROM FLOAT8_TBL f;
280           f1          |       round_f1       
281 ----------------------+----------------------
282                     0 |                    0
283                1004.3 |                 1004
284                -34.84 |                  -35
285  1.2345678901234e+200 | 1.2345678901234e+200
286  1.2345678901234e-200 |                    0
287 (5 rows)
289 -- ceil / ceiling
290 select ceil(f1) as ceil_f1 from float8_tbl f;
291        ceil_f1        
292 ----------------------
293                     0
294                  1005
295                   -34
296  1.2345678901234e+200
297                     1
298 (5 rows)
300 select ceiling(f1) as ceiling_f1 from float8_tbl f;
301       ceiling_f1      
302 ----------------------
303                     0
304                  1005
305                   -34
306  1.2345678901234e+200
307                     1
308 (5 rows)
310 -- floor
311 select floor(f1) as floor_f1 from float8_tbl f;
312        floor_f1       
313 ----------------------
314                     0
315                  1004
316                   -35
317  1.2345678901234e+200
318                     0
319 (5 rows)
321 -- sign
322 select sign(f1) as sign_f1 from float8_tbl f;
323  sign_f1 
324 ---------
325        0
326        1
327       -1
328        1
329        1
330 (5 rows)
332 -- avoid bit-exact output here because operations may not be bit-exact.
333 SET extra_float_digits = 0;
334 -- square root
335 SELECT sqrt(float8 '64') AS eight;
336  eight 
337 -------
338      8
339 (1 row)
341 SELECT |/ float8 '64' AS eight;
342  eight 
343 -------
344      8
345 (1 row)
347 SELECT f.f1, |/f.f1 AS sqrt_f1
348    FROM FLOAT8_TBL f
349    WHERE f.f1 > '0.0';
350           f1          |        sqrt_f1        
351 ----------------------+-----------------------
352                1004.3 |      31.6906926399535
353  1.2345678901234e+200 | 1.11111110611109e+100
354  1.2345678901234e-200 | 1.11111110611109e-100
355 (3 rows)
357 -- power
358 SELECT power(float8 '144', float8 '0.5');
359  power 
360 -------
361     12
362 (1 row)
364 SELECT power(float8 'NaN', float8 '0.5');
365  power 
366 -------
367    NaN
368 (1 row)
370 SELECT power(float8 '144', float8 'NaN');
371  power 
372 -------
373    NaN
374 (1 row)
376 SELECT power(float8 'NaN', float8 'NaN');
377  power 
378 -------
379    NaN
380 (1 row)
382 SELECT power(float8 '-1', float8 'NaN');
383  power 
384 -------
385    NaN
386 (1 row)
388 SELECT power(float8 '1', float8 'NaN');
389  power 
390 -------
391      1
392 (1 row)
394 SELECT power(float8 'NaN', float8 '0');
395  power 
396 -------
397      1
398 (1 row)
400 SELECT power(float8 'inf', float8 '0');
401  power 
402 -------
403      1
404 (1 row)
406 SELECT power(float8 '-inf', float8 '0');
407  power 
408 -------
409      1
410 (1 row)
412 SELECT power(float8 '0', float8 'inf');
413  power 
414 -------
415      0
416 (1 row)
418 SELECT power(float8 '0', float8 '-inf');
419 ERROR:  zero raised to a negative power is undefined
420 SELECT power(float8 '1', float8 'inf');
421  power 
422 -------
423      1
424 (1 row)
426 SELECT power(float8 '1', float8 '-inf');
427  power 
428 -------
429      1
430 (1 row)
432 SELECT power(float8 '-1', float8 'inf');
433  power 
434 -------
435      1
436 (1 row)
438 SELECT power(float8 '-1', float8 '-inf');
439  power 
440 -------
441      1
442 (1 row)
444 SELECT power(float8 '0.1', float8 'inf');
445  power 
446 -------
447      0
448 (1 row)
450 SELECT power(float8 '-0.1', float8 'inf');
451  power 
452 -------
453      0
454 (1 row)
456 SELECT power(float8 '1.1', float8 'inf');
457   power   
458 ----------
459  Infinity
460 (1 row)
462 SELECT power(float8 '-1.1', float8 'inf');
463   power   
464 ----------
465  Infinity
466 (1 row)
468 SELECT power(float8 '0.1', float8 '-inf');
469   power   
470 ----------
471  Infinity
472 (1 row)
474 SELECT power(float8 '-0.1', float8 '-inf');
475   power   
476 ----------
477  Infinity
478 (1 row)
480 SELECT power(float8 '1.1', float8 '-inf');
481  power 
482 -------
483      0
484 (1 row)
486 SELECT power(float8 '-1.1', float8 '-inf');
487  power 
488 -------
489      0
490 (1 row)
492 SELECT power(float8 'inf', float8 '-2');
493  power 
494 -------
495      0
496 (1 row)
498 SELECT power(float8 'inf', float8 '2');
499   power   
500 ----------
501  Infinity
502 (1 row)
504 SELECT power(float8 'inf', float8 'inf');
505   power   
506 ----------
507  Infinity
508 (1 row)
510 SELECT power(float8 'inf', float8 '-inf');
511  power 
512 -------
513      0
514 (1 row)
516 -- Intel's icc misoptimizes the code that controls the sign of this result,
517 -- even with -mp1.  Pending a fix for that, only test for "is it zero".
518 SELECT power(float8 '-inf', float8 '-2') = '0';
519  ?column? 
520 ----------
522 (1 row)
524 SELECT power(float8 '-inf', float8 '-3');
525  power 
526 -------
527     -0
528 (1 row)
530 SELECT power(float8 '-inf', float8 '2');
531   power   
532 ----------
533  Infinity
534 (1 row)
536 SELECT power(float8 '-inf', float8 '3');
537    power   
538 -----------
539  -Infinity
540 (1 row)
542 SELECT power(float8 '-inf', float8 '3.5');
543 ERROR:  a negative number raised to a non-integer power yields a complex result
544 SELECT power(float8 '-inf', float8 'inf');
545   power   
546 ----------
547  Infinity
548 (1 row)
550 SELECT power(float8 '-inf', float8 '-inf');
551  power 
552 -------
553      0
554 (1 row)
556 -- take exp of ln(f.f1)
557 SELECT f.f1, exp(ln(f.f1)) AS exp_ln_f1
558    FROM FLOAT8_TBL f
559    WHERE f.f1 > '0.0';
560           f1          |       exp_ln_f1       
561 ----------------------+-----------------------
562                1004.3 |                1004.3
563  1.2345678901234e+200 | 1.23456789012338e+200
564  1.2345678901234e-200 | 1.23456789012339e-200
565 (3 rows)
567 -- check edge cases for exp
568 SELECT exp('inf'::float8), exp('-inf'::float8), exp('nan'::float8);
569    exp    | exp | exp 
570 ----------+-----+-----
571  Infinity |   0 | NaN
572 (1 row)
574 -- cube root
575 SELECT ||/ float8 '27' AS three;
576  three 
577 -------
578      3
579 (1 row)
581 SELECT f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
582           f1          |       cbrt_f1        
583 ----------------------+----------------------
584                     0 |                    0
585                1004.3 |      10.014312837827
586                -34.84 |    -3.26607421344208
587  1.2345678901234e+200 | 4.97933859234765e+66
588  1.2345678901234e-200 |  2.3112042409018e-67
589 (5 rows)
591 SELECT * FROM FLOAT8_TBL;
592           f1          
593 ----------------------
594                     0
595                1004.3
596                -34.84
597  1.2345678901234e+200
598  1.2345678901234e-200
599 (5 rows)
601 UPDATE FLOAT8_TBL
602    SET f1 = FLOAT8_TBL.f1 * '-1'
603    WHERE FLOAT8_TBL.f1 > '0.0';
604 SELECT f.f1 * '1e200' from FLOAT8_TBL f;
605 ERROR:  value out of range: overflow
606 SELECT f.f1 ^ '1e200' from FLOAT8_TBL f;
607 ERROR:  value out of range: overflow
608 SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5;
609  ?column? 
610 ----------
611         2
612 (1 row)
614 SELECT ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ;
615 ERROR:  cannot take logarithm of zero
616 SELECT ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ;
617 ERROR:  cannot take logarithm of a negative number
618 SELECT exp(f.f1) from FLOAT8_TBL f;
619 ERROR:  value out of range: underflow
620 SELECT f.f1 / '0.0' from FLOAT8_TBL f;
621 ERROR:  division by zero
622 SELECT * FROM FLOAT8_TBL;
623           f1           
624 -----------------------
625                      0
626                 -34.84
627                -1004.3
628  -1.2345678901234e+200
629  -1.2345678901234e-200
630 (5 rows)
632 -- hyperbolic functions
633 -- we run these with extra_float_digits = 0 too, since different platforms
634 -- tend to produce results that vary in the last place.
635 SELECT sinh(float8 '1');
636       sinh       
637 -----------------
638  1.1752011936438
639 (1 row)
641 SELECT cosh(float8 '1');
642        cosh       
643 ------------------
644  1.54308063481524
645 (1 row)
647 SELECT tanh(float8 '1');
648        tanh        
649 -------------------
650  0.761594155955765
651 (1 row)
653 SELECT asinh(float8 '1');
654        asinh       
655 -------------------
656  0.881373587019543
657 (1 row)
659 SELECT acosh(float8 '2');
660       acosh       
661 ------------------
662  1.31695789692482
663 (1 row)
665 SELECT atanh(float8 '0.5');
666        atanh       
667 -------------------
668  0.549306144334055
669 (1 row)
671 -- test Inf/NaN cases for hyperbolic functions
672 SELECT sinh(float8 'infinity');
673    sinh   
674 ----------
675  Infinity
676 (1 row)
678 SELECT sinh(float8 '-infinity');
679    sinh    
680 -----------
681  -Infinity
682 (1 row)
684 SELECT sinh(float8 'nan');
685  sinh 
686 ------
687   NaN
688 (1 row)
690 SELECT cosh(float8 'infinity');
691    cosh   
692 ----------
693  Infinity
694 (1 row)
696 SELECT cosh(float8 '-infinity');
697    cosh   
698 ----------
699  Infinity
700 (1 row)
702 SELECT cosh(float8 'nan');
703  cosh 
704 ------
705   NaN
706 (1 row)
708 SELECT tanh(float8 'infinity');
709  tanh 
710 ------
711     1
712 (1 row)
714 SELECT tanh(float8 '-infinity');
715  tanh 
716 ------
717    -1
718 (1 row)
720 SELECT tanh(float8 'nan');
721  tanh 
722 ------
723   NaN
724 (1 row)
726 SELECT asinh(float8 'infinity');
727   asinh   
728 ----------
729  Infinity
730 (1 row)
732 SELECT asinh(float8 '-infinity');
733    asinh   
734 -----------
735  -Infinity
736 (1 row)
738 SELECT asinh(float8 'nan');
739  asinh 
740 -------
741    NaN
742 (1 row)
744 -- acosh(Inf) should be Inf, but some mingw versions produce NaN, so skip test
745 -- SELECT acosh(float8 'infinity');
746 SELECT acosh(float8 '-infinity');
747 ERROR:  input is out of range
748 SELECT acosh(float8 'nan');
749  acosh 
750 -------
751    NaN
752 (1 row)
754 SELECT atanh(float8 'infinity');
755 ERROR:  input is out of range
756 SELECT atanh(float8 '-infinity');
757 ERROR:  input is out of range
758 SELECT atanh(float8 'nan');
759  atanh 
760 -------
761    NaN
762 (1 row)
764 RESET extra_float_digits;
765 -- test for over- and underflow
766 INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
767 ERROR:  "10e400" is out of range for type double precision
768 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
769                                            ^
770 INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
771 ERROR:  "-10e400" is out of range for type double precision
772 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
773                                            ^
774 INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
775 ERROR:  "10e-400" is out of range for type double precision
776 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
777                                            ^
778 INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
779 ERROR:  "-10e-400" is out of range for type double precision
780 LINE 1: INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
781                                            ^
782 -- maintain external table consistency across platforms
783 -- delete all values and reinsert well-behaved ones
784 DELETE FROM FLOAT8_TBL;
785 INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
786 INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
787 INSERT INTO FLOAT8_TBL(f1) VALUES ('-1004.30');
788 INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e+200');
789 INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200');
790 SELECT * FROM FLOAT8_TBL;
791           f1           
792 -----------------------
793                      0
794                 -34.84
795                -1004.3
796  -1.2345678901234e+200
797  -1.2345678901234e-200
798 (5 rows)
800 -- test edge-case coercions to integer
801 SELECT '32767.4'::float8::int2;
802  int2  
803 -------
804  32767
805 (1 row)
807 SELECT '32767.6'::float8::int2;
808 ERROR:  smallint out of range
809 SELECT '-32768.4'::float8::int2;
810   int2  
811 --------
812  -32768
813 (1 row)
815 SELECT '-32768.6'::float8::int2;
816 ERROR:  smallint out of range
817 SELECT '2147483647.4'::float8::int4;
818     int4    
819 ------------
820  2147483647
821 (1 row)
823 SELECT '2147483647.6'::float8::int4;
824 ERROR:  integer out of range
825 SELECT '-2147483648.4'::float8::int4;
826     int4     
827 -------------
828  -2147483648
829 (1 row)
831 SELECT '-2147483648.6'::float8::int4;
832 ERROR:  integer out of range
833 SELECT '9223372036854773760'::float8::int8;
834         int8         
835 ---------------------
836  9223372036854773760
837 (1 row)
839 SELECT '9223372036854775807'::float8::int8;
840 ERROR:  bigint out of range
841 SELECT '-9223372036854775808.5'::float8::int8;
842          int8         
843 ----------------------
844  -9223372036854775808
845 (1 row)
847 SELECT '-9223372036854780000'::float8::int8;
848 ERROR:  bigint out of range
849 -- test exact cases for trigonometric functions in degrees
850 SELECT x,
851        sind(x),
852        sind(x) IN (-1,-0.5,0,0.5,1) AS sind_exact
853 FROM (VALUES (0), (30), (90), (150), (180),
854       (210), (270), (330), (360)) AS t(x);
855   x  | sind | sind_exact 
856 -----+------+------------
857    0 |    0 | t
858   30 |  0.5 | t
859   90 |    1 | t
860  150 |  0.5 | t
861  180 |    0 | t
862  210 | -0.5 | t
863  270 |   -1 | t
864  330 | -0.5 | t
865  360 |    0 | t
866 (9 rows)
868 SELECT x,
869        cosd(x),
870        cosd(x) IN (-1,-0.5,0,0.5,1) AS cosd_exact
871 FROM (VALUES (0), (60), (90), (120), (180),
872       (240), (270), (300), (360)) AS t(x);
873   x  | cosd | cosd_exact 
874 -----+------+------------
875    0 |    1 | t
876   60 |  0.5 | t
877   90 |    0 | t
878  120 | -0.5 | t
879  180 |   -1 | t
880  240 | -0.5 | t
881  270 |    0 | t
882  300 |  0.5 | t
883  360 |    1 | t
884 (9 rows)
886 SELECT x,
887        tand(x),
888        tand(x) IN ('-Infinity'::float8,-1,0,
889                    1,'Infinity'::float8) AS tand_exact,
890        cotd(x),
891        cotd(x) IN ('-Infinity'::float8,-1,0,
892                    1,'Infinity'::float8) AS cotd_exact
893 FROM (VALUES (0), (45), (90), (135), (180),
894       (225), (270), (315), (360)) AS t(x);
895   x  |   tand    | tand_exact |   cotd    | cotd_exact 
896 -----+-----------+------------+-----------+------------
897    0 |         0 | t          |  Infinity | t
898   45 |         1 | t          |         1 | t
899   90 |  Infinity | t          |         0 | t
900  135 |        -1 | t          |        -1 | t
901  180 |         0 | t          | -Infinity | t
902  225 |         1 | t          |         1 | t
903  270 | -Infinity | t          |         0 | t
904  315 |        -1 | t          |        -1 | t
905  360 |         0 | t          |  Infinity | t
906 (9 rows)
908 SELECT x,
909        asind(x),
910        asind(x) IN (-90,-30,0,30,90) AS asind_exact,
911        acosd(x),
912        acosd(x) IN (0,60,90,120,180) AS acosd_exact
913 FROM (VALUES (-1), (-0.5), (0), (0.5), (1)) AS t(x);
914   x   | asind | asind_exact | acosd | acosd_exact 
915 ------+-------+-------------+-------+-------------
916    -1 |   -90 | t           |   180 | t
917  -0.5 |   -30 | t           |   120 | t
918     0 |     0 | t           |    90 | t
919   0.5 |    30 | t           |    60 | t
920     1 |    90 | t           |     0 | t
921 (5 rows)
923 SELECT x,
924        atand(x),
925        atand(x) IN (-90,-45,0,45,90) AS atand_exact
926 FROM (VALUES ('-Infinity'::float8), (-1), (0), (1),
927       ('Infinity'::float8)) AS t(x);
928      x     | atand | atand_exact 
929 -----------+-------+-------------
930  -Infinity |   -90 | t
931         -1 |   -45 | t
932          0 |     0 | t
933          1 |    45 | t
934   Infinity |    90 | t
935 (5 rows)
937 SELECT x, y,
938        atan2d(y, x),
939        atan2d(y, x) IN (-90,0,90,180) AS atan2d_exact
940 FROM (SELECT 10*cosd(a), 10*sind(a)
941       FROM generate_series(0, 360, 90) AS t(a)) AS t(x,y);
942   x  |  y  | atan2d | atan2d_exact 
943 -----+-----+--------+--------------
944   10 |   0 |      0 | t
945    0 |  10 |     90 | t
946  -10 |   0 |    180 | t
947    0 | -10 |    -90 | t
948   10 |   0 |      0 | t
949 (5 rows)
952 -- test output (and round-trip safety) of various values.
953 -- To ensure we're testing what we think we're testing, start with
954 -- float values specified by bit patterns (as a useful side effect,
955 -- this means we'll fail on non-IEEE platforms).
956 create type xfloat8;
957 create function xfloat8in(cstring) returns xfloat8 immutable strict
958   language internal as 'int8in';
959 NOTICE:  return type xfloat8 is only a shell
960 create function xfloat8out(xfloat8) returns cstring immutable strict
961   language internal as 'int8out';
962 NOTICE:  argument type xfloat8 is only a shell
963 create type xfloat8 (input = xfloat8in, output = xfloat8out, like = float8);
964 create cast (xfloat8 as float8) without function;
965 create cast (float8 as xfloat8) without function;
966 create cast (xfloat8 as bigint) without function;
967 create cast (bigint as xfloat8) without function;
968 -- float8: seeeeeee eeeeeeee eeeeeeee mmmmmmmm mmmmmmmm(x4)
969 -- we don't care to assume the platform's strtod() handles subnormals
970 -- correctly; those are "use at your own risk". However we do test
971 -- subnormal outputs, since those are under our control.
972 with testdata(bits) as (values
973   -- small subnormals
974   (x'0000000000000001'),
975   (x'0000000000000002'), (x'0000000000000003'),
976   (x'0000000000001000'), (x'0000000100000000'),
977   (x'0000010000000000'), (x'0000010100000000'),
978   (x'0000400000000000'), (x'0000400100000000'),
979   (x'0000800000000000'), (x'0000800000000001'),
980   -- these values taken from upstream testsuite
981   (x'00000000000f4240'),
982   (x'00000000016e3600'),
983   (x'0000008cdcdea440'),
984   -- borderline between subnormal and normal
985   (x'000ffffffffffff0'), (x'000ffffffffffff1'),
986   (x'000ffffffffffffe'), (x'000fffffffffffff'))
987 select float8send(flt) as ibits,
988        flt
989   from (select bits::bigint::xfloat8::float8 as flt
990           from testdata
991         offset 0) s;
992        ibits        |           flt           
993 --------------------+-------------------------
994  \x0000000000000001 |                  5e-324
995  \x0000000000000002 |                  1e-323
996  \x0000000000000003 |                1.5e-323
997  \x0000000000001000 |             2.0237e-320
998  \x0000000100000000 |        2.121995791e-314
999  \x0000010000000000 |      5.43230922487e-312
1000  \x0000010100000000 |      5.45352918278e-312
1001  \x0000400000000000 |    3.4766779039175e-310
1002  \x0000400100000000 |    3.4768901034966e-310
1003  \x0000800000000000 |     6.953355807835e-310
1004  \x0000800000000001 |   6.95335580783505e-310
1005  \x00000000000f4240 |           4.940656e-318
1006  \x00000000016e3600 |         1.18575755e-316
1007  \x0000008cdcdea440 |     2.989102097996e-312
1008  \x000ffffffffffff0 | 2.2250738585071935e-308
1009  \x000ffffffffffff1 |  2.225073858507194e-308
1010  \x000ffffffffffffe | 2.2250738585072004e-308
1011  \x000fffffffffffff |  2.225073858507201e-308
1012 (18 rows)
1014 -- round-trip tests
1015 with testdata(bits) as (values
1016   (x'0000000000000000'),
1017   -- smallest normal values
1018   (x'0010000000000000'), (x'0010000000000001'),
1019   (x'0010000000000002'), (x'0018000000000000'),
1020   --
1021   (x'3ddb7cdfd9d7bdba'), (x'3ddb7cdfd9d7bdbb'), (x'3ddb7cdfd9d7bdbc'),
1022   (x'3e112e0be826d694'), (x'3e112e0be826d695'), (x'3e112e0be826d696'),
1023   (x'3e45798ee2308c39'), (x'3e45798ee2308c3a'), (x'3e45798ee2308c3b'),
1024   (x'3e7ad7f29abcaf47'), (x'3e7ad7f29abcaf48'), (x'3e7ad7f29abcaf49'),
1025   (x'3eb0c6f7a0b5ed8c'), (x'3eb0c6f7a0b5ed8d'), (x'3eb0c6f7a0b5ed8e'),
1026   (x'3ee4f8b588e368ef'), (x'3ee4f8b588e368f0'), (x'3ee4f8b588e368f1'),
1027   (x'3f1a36e2eb1c432c'), (x'3f1a36e2eb1c432d'), (x'3f1a36e2eb1c432e'),
1028   (x'3f50624dd2f1a9fb'), (x'3f50624dd2f1a9fc'), (x'3f50624dd2f1a9fd'),
1029   (x'3f847ae147ae147a'), (x'3f847ae147ae147b'), (x'3f847ae147ae147c'),
1030   (x'3fb9999999999999'), (x'3fb999999999999a'), (x'3fb999999999999b'),
1031   -- values very close to 1
1032   (x'3feffffffffffff0'), (x'3feffffffffffff1'), (x'3feffffffffffff2'),
1033   (x'3feffffffffffff3'), (x'3feffffffffffff4'), (x'3feffffffffffff5'),
1034   (x'3feffffffffffff6'), (x'3feffffffffffff7'), (x'3feffffffffffff8'),
1035   (x'3feffffffffffff9'), (x'3feffffffffffffa'), (x'3feffffffffffffb'),
1036   (x'3feffffffffffffc'), (x'3feffffffffffffd'), (x'3feffffffffffffe'),
1037   (x'3fefffffffffffff'),
1038   (x'3ff0000000000000'),
1039   (x'3ff0000000000001'), (x'3ff0000000000002'), (x'3ff0000000000003'),
1040   (x'3ff0000000000004'), (x'3ff0000000000005'), (x'3ff0000000000006'),
1041   (x'3ff0000000000007'), (x'3ff0000000000008'), (x'3ff0000000000009'),
1042   --
1043   (x'3ff921fb54442d18'),
1044   (x'4005bf0a8b14576a'),
1045   (x'400921fb54442d18'),
1046   --
1047   (x'4023ffffffffffff'), (x'4024000000000000'), (x'4024000000000001'),
1048   (x'4058ffffffffffff'), (x'4059000000000000'), (x'4059000000000001'),
1049   (x'408f3fffffffffff'), (x'408f400000000000'), (x'408f400000000001'),
1050   (x'40c387ffffffffff'), (x'40c3880000000000'), (x'40c3880000000001'),
1051   (x'40f869ffffffffff'), (x'40f86a0000000000'), (x'40f86a0000000001'),
1052   (x'412e847fffffffff'), (x'412e848000000000'), (x'412e848000000001'),
1053   (x'416312cfffffffff'), (x'416312d000000000'), (x'416312d000000001'),
1054   (x'4197d783ffffffff'), (x'4197d78400000000'), (x'4197d78400000001'),
1055   (x'41cdcd64ffffffff'), (x'41cdcd6500000000'), (x'41cdcd6500000001'),
1056   (x'4202a05f1fffffff'), (x'4202a05f20000000'), (x'4202a05f20000001'),
1057   (x'42374876e7ffffff'), (x'42374876e8000000'), (x'42374876e8000001'),
1058   (x'426d1a94a1ffffff'), (x'426d1a94a2000000'), (x'426d1a94a2000001'),
1059   (x'42a2309ce53fffff'), (x'42a2309ce5400000'), (x'42a2309ce5400001'),
1060   (x'42d6bcc41e8fffff'), (x'42d6bcc41e900000'), (x'42d6bcc41e900001'),
1061   (x'430c6bf52633ffff'), (x'430c6bf526340000'), (x'430c6bf526340001'),
1062   (x'4341c37937e07fff'), (x'4341c37937e08000'), (x'4341c37937e08001'),
1063   (x'4376345785d89fff'), (x'4376345785d8a000'), (x'4376345785d8a001'),
1064   (x'43abc16d674ec7ff'), (x'43abc16d674ec800'), (x'43abc16d674ec801'),
1065   (x'43e158e460913cff'), (x'43e158e460913d00'), (x'43e158e460913d01'),
1066   (x'4415af1d78b58c3f'), (x'4415af1d78b58c40'), (x'4415af1d78b58c41'),
1067   (x'444b1ae4d6e2ef4f'), (x'444b1ae4d6e2ef50'), (x'444b1ae4d6e2ef51'),
1068   (x'4480f0cf064dd591'), (x'4480f0cf064dd592'), (x'4480f0cf064dd593'),
1069   (x'44b52d02c7e14af5'), (x'44b52d02c7e14af6'), (x'44b52d02c7e14af7'),
1070   (x'44ea784379d99db3'), (x'44ea784379d99db4'), (x'44ea784379d99db5'),
1071   (x'45208b2a2c280290'), (x'45208b2a2c280291'), (x'45208b2a2c280292'),
1072   --
1073   (x'7feffffffffffffe'), (x'7fefffffffffffff'),
1074   -- round to even tests (+ve)
1075   (x'4350000000000002'),
1076   (x'4350000000002e06'),
1077   (x'4352000000000003'),
1078   (x'4352000000000004'),
1079   (x'4358000000000003'),
1080   (x'4358000000000004'),
1081   (x'435f000000000020'),
1082   -- round to even tests (-ve)
1083   (x'c350000000000002'),
1084   (x'c350000000002e06'),
1085   (x'c352000000000003'),
1086   (x'c352000000000004'),
1087   (x'c358000000000003'),
1088   (x'c358000000000004'),
1089   (x'c35f000000000020'),
1090   -- exercise fixed-point memmoves
1091   (x'42dc12218377de66'),
1092   (x'42a674e79c5fe51f'),
1093   (x'4271f71fb04cb74c'),
1094   (x'423cbe991a145879'),
1095   (x'4206fee0e1a9e061'),
1096   (x'41d26580b487e6b4'),
1097   (x'419d6f34540ca453'),
1098   (x'41678c29dcd6e9dc'),
1099   (x'4132d687e3df217d'),
1100   (x'40fe240c9fcb68c8'),
1101   (x'40c81cd6e63c53d3'),
1102   (x'40934a4584fd0fdc'),
1103   (x'405edd3c07fb4c93'),
1104   (x'4028b0fcd32f7076'),
1105   (x'3ff3c0ca428c59f8'),
1106   -- these cases come from the upstream's testsuite
1107   -- LotsOfTrailingZeros)
1108   (x'3e60000000000000'),
1109   -- Regression
1110   (x'c352bd2668e077c4'),
1111   (x'434018601510c000'),
1112   (x'43d055dc36f24000'),
1113   (x'43e052961c6f8000'),
1114   (x'3ff3c0ca2a5b1d5d'),
1115   -- LooksLikePow5
1116   (x'4830f0cf064dd592'),
1117   (x'4840f0cf064dd592'),
1118   (x'4850f0cf064dd592'),
1119   -- OutputLength
1120   (x'3ff3333333333333'),
1121   (x'3ff3ae147ae147ae'),
1122   (x'3ff3be76c8b43958'),
1123   (x'3ff3c083126e978d'),
1124   (x'3ff3c0c1fc8f3238'),
1125   (x'3ff3c0c9539b8887'),
1126   (x'3ff3c0ca2a5b1d5d'),
1127   (x'3ff3c0ca4283de1b'),
1128   (x'3ff3c0ca43db770a'),
1129   (x'3ff3c0ca428abd53'),
1130   (x'3ff3c0ca428c1d2b'),
1131   (x'3ff3c0ca428c51f2'),
1132   (x'3ff3c0ca428c58fc'),
1133   (x'3ff3c0ca428c59dd'),
1134   (x'3ff3c0ca428c59f8'),
1135   (x'3ff3c0ca428c59fb'),
1136   -- 32-bit chunking
1137   (x'40112e0be8047a7d'),
1138   (x'40112e0be815a889'),
1139   (x'40112e0be826d695'),
1140   (x'40112e0be83804a1'),
1141   (x'40112e0be84932ad'),
1142   -- MinMaxShift
1143   (x'0040000000000000'),
1144   (x'007fffffffffffff'),
1145   (x'0290000000000000'),
1146   (x'029fffffffffffff'),
1147   (x'4350000000000000'),
1148   (x'435fffffffffffff'),
1149   (x'1330000000000000'),
1150   (x'133fffffffffffff'),
1151   (x'3a6fa7161a4d6e0c')
1153 select float8send(flt) as ibits,
1154        flt,
1155        flt::text::float8 as r_flt,
1156        float8send(flt::text::float8) as obits,
1157        float8send(flt::text::float8) = float8send(flt) as correct
1158   from (select bits::bigint::xfloat8::float8 as flt
1159           from testdata
1160         offset 0) s;
1161        ibits        |           flt           |          r_flt          |       obits        | correct 
1162 --------------------+-------------------------+-------------------------+--------------------+---------
1163  \x0000000000000000 |                       0 |                       0 | \x0000000000000000 | t
1164  \x0010000000000000 | 2.2250738585072014e-308 | 2.2250738585072014e-308 | \x0010000000000000 | t
1165  \x0010000000000001 |  2.225073858507202e-308 |  2.225073858507202e-308 | \x0010000000000001 | t
1166  \x0010000000000002 | 2.2250738585072024e-308 | 2.2250738585072024e-308 | \x0010000000000002 | t
1167  \x0018000000000000 |  3.337610787760802e-308 |  3.337610787760802e-308 | \x0018000000000000 | t
1168  \x3ddb7cdfd9d7bdba |   9.999999999999999e-11 |   9.999999999999999e-11 | \x3ddb7cdfd9d7bdba | t
1169  \x3ddb7cdfd9d7bdbb |                   1e-10 |                   1e-10 | \x3ddb7cdfd9d7bdbb | t
1170  \x3ddb7cdfd9d7bdbc |  1.0000000000000002e-10 |  1.0000000000000002e-10 | \x3ddb7cdfd9d7bdbc | t
1171  \x3e112e0be826d694 |   9.999999999999999e-10 |   9.999999999999999e-10 | \x3e112e0be826d694 | t
1172  \x3e112e0be826d695 |                   1e-09 |                   1e-09 | \x3e112e0be826d695 | t
1173  \x3e112e0be826d696 |  1.0000000000000003e-09 |  1.0000000000000003e-09 | \x3e112e0be826d696 | t
1174  \x3e45798ee2308c39 |   9.999999999999999e-09 |   9.999999999999999e-09 | \x3e45798ee2308c39 | t
1175  \x3e45798ee2308c3a |                   1e-08 |                   1e-08 | \x3e45798ee2308c3a | t
1176  \x3e45798ee2308c3b |  1.0000000000000002e-08 |  1.0000000000000002e-08 | \x3e45798ee2308c3b | t
1177  \x3e7ad7f29abcaf47 |   9.999999999999998e-08 |   9.999999999999998e-08 | \x3e7ad7f29abcaf47 | t
1178  \x3e7ad7f29abcaf48 |                   1e-07 |                   1e-07 | \x3e7ad7f29abcaf48 | t
1179  \x3e7ad7f29abcaf49 |  1.0000000000000001e-07 |  1.0000000000000001e-07 | \x3e7ad7f29abcaf49 | t
1180  \x3eb0c6f7a0b5ed8c |   9.999999999999997e-07 |   9.999999999999997e-07 | \x3eb0c6f7a0b5ed8c | t
1181  \x3eb0c6f7a0b5ed8d |                   1e-06 |                   1e-06 | \x3eb0c6f7a0b5ed8d | t
1182  \x3eb0c6f7a0b5ed8e |  1.0000000000000002e-06 |  1.0000000000000002e-06 | \x3eb0c6f7a0b5ed8e | t
1183  \x3ee4f8b588e368ef |   9.999999999999997e-06 |   9.999999999999997e-06 | \x3ee4f8b588e368ef | t
1184  \x3ee4f8b588e368f0 |   9.999999999999999e-06 |   9.999999999999999e-06 | \x3ee4f8b588e368f0 | t
1185  \x3ee4f8b588e368f1 |                   1e-05 |                   1e-05 | \x3ee4f8b588e368f1 | t
1186  \x3f1a36e2eb1c432c |   9.999999999999999e-05 |   9.999999999999999e-05 | \x3f1a36e2eb1c432c | t
1187  \x3f1a36e2eb1c432d |                  0.0001 |                  0.0001 | \x3f1a36e2eb1c432d | t
1188  \x3f1a36e2eb1c432e |  0.00010000000000000002 |  0.00010000000000000002 | \x3f1a36e2eb1c432e | t
1189  \x3f50624dd2f1a9fb |   0.0009999999999999998 |   0.0009999999999999998 | \x3f50624dd2f1a9fb | t
1190  \x3f50624dd2f1a9fc |                   0.001 |                   0.001 | \x3f50624dd2f1a9fc | t
1191  \x3f50624dd2f1a9fd |   0.0010000000000000002 |   0.0010000000000000002 | \x3f50624dd2f1a9fd | t
1192  \x3f847ae147ae147a |    0.009999999999999998 |    0.009999999999999998 | \x3f847ae147ae147a | t
1193  \x3f847ae147ae147b |                    0.01 |                    0.01 | \x3f847ae147ae147b | t
1194  \x3f847ae147ae147c |    0.010000000000000002 |    0.010000000000000002 | \x3f847ae147ae147c | t
1195  \x3fb9999999999999 |     0.09999999999999999 |     0.09999999999999999 | \x3fb9999999999999 | t
1196  \x3fb999999999999a |                     0.1 |                     0.1 | \x3fb999999999999a | t
1197  \x3fb999999999999b |     0.10000000000000002 |     0.10000000000000002 | \x3fb999999999999b | t
1198  \x3feffffffffffff0 |      0.9999999999999982 |      0.9999999999999982 | \x3feffffffffffff0 | t
1199  \x3feffffffffffff1 |      0.9999999999999983 |      0.9999999999999983 | \x3feffffffffffff1 | t
1200  \x3feffffffffffff2 |      0.9999999999999984 |      0.9999999999999984 | \x3feffffffffffff2 | t
1201  \x3feffffffffffff3 |      0.9999999999999986 |      0.9999999999999986 | \x3feffffffffffff3 | t
1202  \x3feffffffffffff4 |      0.9999999999999987 |      0.9999999999999987 | \x3feffffffffffff4 | t
1203  \x3feffffffffffff5 |      0.9999999999999988 |      0.9999999999999988 | \x3feffffffffffff5 | t
1204  \x3feffffffffffff6 |      0.9999999999999989 |      0.9999999999999989 | \x3feffffffffffff6 | t
1205  \x3feffffffffffff7 |       0.999999999999999 |       0.999999999999999 | \x3feffffffffffff7 | t
1206  \x3feffffffffffff8 |      0.9999999999999991 |      0.9999999999999991 | \x3feffffffffffff8 | t
1207  \x3feffffffffffff9 |      0.9999999999999992 |      0.9999999999999992 | \x3feffffffffffff9 | t
1208  \x3feffffffffffffa |      0.9999999999999993 |      0.9999999999999993 | \x3feffffffffffffa | t
1209  \x3feffffffffffffb |      0.9999999999999994 |      0.9999999999999994 | \x3feffffffffffffb | t
1210  \x3feffffffffffffc |      0.9999999999999996 |      0.9999999999999996 | \x3feffffffffffffc | t
1211  \x3feffffffffffffd |      0.9999999999999997 |      0.9999999999999997 | \x3feffffffffffffd | t
1212  \x3feffffffffffffe |      0.9999999999999998 |      0.9999999999999998 | \x3feffffffffffffe | t
1213  \x3fefffffffffffff |      0.9999999999999999 |      0.9999999999999999 | \x3fefffffffffffff | t
1214  \x3ff0000000000000 |                       1 |                       1 | \x3ff0000000000000 | t
1215  \x3ff0000000000001 |      1.0000000000000002 |      1.0000000000000002 | \x3ff0000000000001 | t
1216  \x3ff0000000000002 |      1.0000000000000004 |      1.0000000000000004 | \x3ff0000000000002 | t
1217  \x3ff0000000000003 |      1.0000000000000007 |      1.0000000000000007 | \x3ff0000000000003 | t
1218  \x3ff0000000000004 |      1.0000000000000009 |      1.0000000000000009 | \x3ff0000000000004 | t
1219  \x3ff0000000000005 |       1.000000000000001 |       1.000000000000001 | \x3ff0000000000005 | t
1220  \x3ff0000000000006 |      1.0000000000000013 |      1.0000000000000013 | \x3ff0000000000006 | t
1221  \x3ff0000000000007 |      1.0000000000000016 |      1.0000000000000016 | \x3ff0000000000007 | t
1222  \x3ff0000000000008 |      1.0000000000000018 |      1.0000000000000018 | \x3ff0000000000008 | t
1223  \x3ff0000000000009 |       1.000000000000002 |       1.000000000000002 | \x3ff0000000000009 | t
1224  \x3ff921fb54442d18 |      1.5707963267948966 |      1.5707963267948966 | \x3ff921fb54442d18 | t
1225  \x4005bf0a8b14576a |      2.7182818284590455 |      2.7182818284590455 | \x4005bf0a8b14576a | t
1226  \x400921fb54442d18 |       3.141592653589793 |       3.141592653589793 | \x400921fb54442d18 | t
1227  \x4023ffffffffffff |       9.999999999999998 |       9.999999999999998 | \x4023ffffffffffff | t
1228  \x4024000000000000 |                      10 |                      10 | \x4024000000000000 | t
1229  \x4024000000000001 |      10.000000000000002 |      10.000000000000002 | \x4024000000000001 | t
1230  \x4058ffffffffffff |       99.99999999999999 |       99.99999999999999 | \x4058ffffffffffff | t
1231  \x4059000000000000 |                     100 |                     100 | \x4059000000000000 | t
1232  \x4059000000000001 |      100.00000000000001 |      100.00000000000001 | \x4059000000000001 | t
1233  \x408f3fffffffffff |       999.9999999999999 |       999.9999999999999 | \x408f3fffffffffff | t
1234  \x408f400000000000 |                    1000 |                    1000 | \x408f400000000000 | t
1235  \x408f400000000001 |      1000.0000000000001 |      1000.0000000000001 | \x408f400000000001 | t
1236  \x40c387ffffffffff |       9999.999999999998 |       9999.999999999998 | \x40c387ffffffffff | t
1237  \x40c3880000000000 |                   10000 |                   10000 | \x40c3880000000000 | t
1238  \x40c3880000000001 |      10000.000000000002 |      10000.000000000002 | \x40c3880000000001 | t
1239  \x40f869ffffffffff |       99999.99999999999 |       99999.99999999999 | \x40f869ffffffffff | t
1240  \x40f86a0000000000 |                  100000 |                  100000 | \x40f86a0000000000 | t
1241  \x40f86a0000000001 |      100000.00000000001 |      100000.00000000001 | \x40f86a0000000001 | t
1242  \x412e847fffffffff |       999999.9999999999 |       999999.9999999999 | \x412e847fffffffff | t
1243  \x412e848000000000 |                 1000000 |                 1000000 | \x412e848000000000 | t
1244  \x412e848000000001 |      1000000.0000000001 |      1000000.0000000001 | \x412e848000000001 | t
1245  \x416312cfffffffff |       9999999.999999998 |       9999999.999999998 | \x416312cfffffffff | t
1246  \x416312d000000000 |                10000000 |                10000000 | \x416312d000000000 | t
1247  \x416312d000000001 |      10000000.000000002 |      10000000.000000002 | \x416312d000000001 | t
1248  \x4197d783ffffffff |       99999999.99999999 |       99999999.99999999 | \x4197d783ffffffff | t
1249  \x4197d78400000000 |               100000000 |               100000000 | \x4197d78400000000 | t
1250  \x4197d78400000001 |      100000000.00000001 |      100000000.00000001 | \x4197d78400000001 | t
1251  \x41cdcd64ffffffff |       999999999.9999999 |       999999999.9999999 | \x41cdcd64ffffffff | t
1252  \x41cdcd6500000000 |              1000000000 |              1000000000 | \x41cdcd6500000000 | t
1253  \x41cdcd6500000001 |      1000000000.0000001 |      1000000000.0000001 | \x41cdcd6500000001 | t
1254  \x4202a05f1fffffff |       9999999999.999998 |       9999999999.999998 | \x4202a05f1fffffff | t
1255  \x4202a05f20000000 |             10000000000 |             10000000000 | \x4202a05f20000000 | t
1256  \x4202a05f20000001 |      10000000000.000002 |      10000000000.000002 | \x4202a05f20000001 | t
1257  \x42374876e7ffffff |       99999999999.99998 |       99999999999.99998 | \x42374876e7ffffff | t
1258  \x42374876e8000000 |            100000000000 |            100000000000 | \x42374876e8000000 | t
1259  \x42374876e8000001 |      100000000000.00002 |      100000000000.00002 | \x42374876e8000001 | t
1260  \x426d1a94a1ffffff |       999999999999.9999 |       999999999999.9999 | \x426d1a94a1ffffff | t
1261  \x426d1a94a2000000 |           1000000000000 |           1000000000000 | \x426d1a94a2000000 | t
1262  \x426d1a94a2000001 |      1000000000000.0001 |      1000000000000.0001 | \x426d1a94a2000001 | t
1263  \x42a2309ce53fffff |       9999999999999.998 |       9999999999999.998 | \x42a2309ce53fffff | t
1264  \x42a2309ce5400000 |          10000000000000 |          10000000000000 | \x42a2309ce5400000 | t
1265  \x42a2309ce5400001 |      10000000000000.002 |      10000000000000.002 | \x42a2309ce5400001 | t
1266  \x42d6bcc41e8fffff |       99999999999999.98 |       99999999999999.98 | \x42d6bcc41e8fffff | t
1267  \x42d6bcc41e900000 |         100000000000000 |         100000000000000 | \x42d6bcc41e900000 | t
1268  \x42d6bcc41e900001 |      100000000000000.02 |      100000000000000.02 | \x42d6bcc41e900001 | t
1269  \x430c6bf52633ffff |       999999999999999.9 |       999999999999999.9 | \x430c6bf52633ffff | t
1270  \x430c6bf526340000 |                   1e+15 |                   1e+15 | \x430c6bf526340000 | t
1271  \x430c6bf526340001 |  1.0000000000000001e+15 |  1.0000000000000001e+15 | \x430c6bf526340001 | t
1272  \x4341c37937e07fff |   9.999999999999998e+15 |   9.999999999999998e+15 | \x4341c37937e07fff | t
1273  \x4341c37937e08000 |                   1e+16 |                   1e+16 | \x4341c37937e08000 | t
1274  \x4341c37937e08001 |  1.0000000000000002e+16 |  1.0000000000000002e+16 | \x4341c37937e08001 | t
1275  \x4376345785d89fff |   9.999999999999998e+16 |   9.999999999999998e+16 | \x4376345785d89fff | t
1276  \x4376345785d8a000 |                   1e+17 |                   1e+17 | \x4376345785d8a000 | t
1277  \x4376345785d8a001 |  1.0000000000000002e+17 |  1.0000000000000002e+17 | \x4376345785d8a001 | t
1278  \x43abc16d674ec7ff |   9.999999999999999e+17 |   9.999999999999999e+17 | \x43abc16d674ec7ff | t
1279  \x43abc16d674ec800 |                   1e+18 |                   1e+18 | \x43abc16d674ec800 | t
1280  \x43abc16d674ec801 |  1.0000000000000001e+18 |  1.0000000000000001e+18 | \x43abc16d674ec801 | t
1281  \x43e158e460913cff |   9.999999999999998e+18 |   9.999999999999998e+18 | \x43e158e460913cff | t
1282  \x43e158e460913d00 |                   1e+19 |                   1e+19 | \x43e158e460913d00 | t
1283  \x43e158e460913d01 |  1.0000000000000002e+19 |  1.0000000000000002e+19 | \x43e158e460913d01 | t
1284  \x4415af1d78b58c3f |   9.999999999999998e+19 |   9.999999999999998e+19 | \x4415af1d78b58c3f | t
1285  \x4415af1d78b58c40 |                   1e+20 |                   1e+20 | \x4415af1d78b58c40 | t
1286  \x4415af1d78b58c41 |  1.0000000000000002e+20 |  1.0000000000000002e+20 | \x4415af1d78b58c41 | t
1287  \x444b1ae4d6e2ef4f |   9.999999999999999e+20 |   9.999999999999999e+20 | \x444b1ae4d6e2ef4f | t
1288  \x444b1ae4d6e2ef50 |                   1e+21 |                   1e+21 | \x444b1ae4d6e2ef50 | t
1289  \x444b1ae4d6e2ef51 |  1.0000000000000001e+21 |  1.0000000000000001e+21 | \x444b1ae4d6e2ef51 | t
1290  \x4480f0cf064dd591 |   9.999999999999998e+21 |   9.999999999999998e+21 | \x4480f0cf064dd591 | t
1291  \x4480f0cf064dd592 |                   1e+22 |                   1e+22 | \x4480f0cf064dd592 | t
1292  \x4480f0cf064dd593 |  1.0000000000000002e+22 |  1.0000000000000002e+22 | \x4480f0cf064dd593 | t
1293  \x44b52d02c7e14af5 |   9.999999999999997e+22 |   9.999999999999997e+22 | \x44b52d02c7e14af5 | t
1294  \x44b52d02c7e14af6 |   9.999999999999999e+22 |   9.999999999999999e+22 | \x44b52d02c7e14af6 | t
1295  \x44b52d02c7e14af7 |  1.0000000000000001e+23 |  1.0000000000000001e+23 | \x44b52d02c7e14af7 | t
1296  \x44ea784379d99db3 |   9.999999999999998e+23 |   9.999999999999998e+23 | \x44ea784379d99db3 | t
1297  \x44ea784379d99db4 |                   1e+24 |                   1e+24 | \x44ea784379d99db4 | t
1298  \x44ea784379d99db5 |  1.0000000000000001e+24 |  1.0000000000000001e+24 | \x44ea784379d99db5 | t
1299  \x45208b2a2c280290 |   9.999999999999999e+24 |   9.999999999999999e+24 | \x45208b2a2c280290 | t
1300  \x45208b2a2c280291 |                   1e+25 |                   1e+25 | \x45208b2a2c280291 | t
1301  \x45208b2a2c280292 |  1.0000000000000003e+25 |  1.0000000000000003e+25 | \x45208b2a2c280292 | t
1302  \x7feffffffffffffe | 1.7976931348623155e+308 | 1.7976931348623155e+308 | \x7feffffffffffffe | t
1303  \x7fefffffffffffff | 1.7976931348623157e+308 | 1.7976931348623157e+308 | \x7fefffffffffffff | t
1304  \x4350000000000002 |  1.8014398509481992e+16 |  1.8014398509481992e+16 | \x4350000000000002 | t
1305  \x4350000000002e06 |  1.8014398509529112e+16 |  1.8014398509529112e+16 | \x4350000000002e06 | t
1306  \x4352000000000003 |  2.0266198323167244e+16 |  2.0266198323167244e+16 | \x4352000000000003 | t
1307  \x4352000000000004 |  2.0266198323167248e+16 |  2.0266198323167248e+16 | \x4352000000000004 | t
1308  \x4358000000000003 |  2.7021597764222988e+16 |  2.7021597764222988e+16 | \x4358000000000003 | t
1309  \x4358000000000004 |  2.7021597764222992e+16 |  2.7021597764222992e+16 | \x4358000000000004 | t
1310  \x435f000000000020 |  3.4902897112121472e+16 |  3.4902897112121472e+16 | \x435f000000000020 | t
1311  \xc350000000000002 | -1.8014398509481992e+16 | -1.8014398509481992e+16 | \xc350000000000002 | t
1312  \xc350000000002e06 | -1.8014398509529112e+16 | -1.8014398509529112e+16 | \xc350000000002e06 | t
1313  \xc352000000000003 | -2.0266198323167244e+16 | -2.0266198323167244e+16 | \xc352000000000003 | t
1314  \xc352000000000004 | -2.0266198323167248e+16 | -2.0266198323167248e+16 | \xc352000000000004 | t
1315  \xc358000000000003 | -2.7021597764222988e+16 | -2.7021597764222988e+16 | \xc358000000000003 | t
1316  \xc358000000000004 | -2.7021597764222992e+16 | -2.7021597764222992e+16 | \xc358000000000004 | t
1317  \xc35f000000000020 | -3.4902897112121472e+16 | -3.4902897112121472e+16 | \xc35f000000000020 | t
1318  \x42dc12218377de66 |       123456789012345.6 |       123456789012345.6 | \x42dc12218377de66 | t
1319  \x42a674e79c5fe51f |       12345678901234.56 |       12345678901234.56 | \x42a674e79c5fe51f | t
1320  \x4271f71fb04cb74c |       1234567890123.456 |       1234567890123.456 | \x4271f71fb04cb74c | t
1321  \x423cbe991a145879 |       123456789012.3456 |       123456789012.3456 | \x423cbe991a145879 | t
1322  \x4206fee0e1a9e061 |       12345678901.23456 |       12345678901.23456 | \x4206fee0e1a9e061 | t
1323  \x41d26580b487e6b4 |       1234567890.123456 |       1234567890.123456 | \x41d26580b487e6b4 | t
1324  \x419d6f34540ca453 |       123456789.0123456 |       123456789.0123456 | \x419d6f34540ca453 | t
1325  \x41678c29dcd6e9dc |       12345678.90123456 |       12345678.90123456 | \x41678c29dcd6e9dc | t
1326  \x4132d687e3df217d |       1234567.890123456 |       1234567.890123456 | \x4132d687e3df217d | t
1327  \x40fe240c9fcb68c8 |       123456.7890123456 |       123456.7890123456 | \x40fe240c9fcb68c8 | t
1328  \x40c81cd6e63c53d3 |       12345.67890123456 |       12345.67890123456 | \x40c81cd6e63c53d3 | t
1329  \x40934a4584fd0fdc |       1234.567890123456 |       1234.567890123456 | \x40934a4584fd0fdc | t
1330  \x405edd3c07fb4c93 |       123.4567890123456 |       123.4567890123456 | \x405edd3c07fb4c93 | t
1331  \x4028b0fcd32f7076 |       12.34567890123456 |       12.34567890123456 | \x4028b0fcd32f7076 | t
1332  \x3ff3c0ca428c59f8 |       1.234567890123456 |       1.234567890123456 | \x3ff3c0ca428c59f8 | t
1333  \x3e60000000000000 |  2.9802322387695312e-08 |  2.9802322387695312e-08 | \x3e60000000000000 | t
1334  \xc352bd2668e077c4 | -2.1098088986959632e+16 | -2.1098088986959632e+16 | \xc352bd2668e077c4 | t
1335  \x434018601510c000 |     9.0608011534336e+15 |     9.0608011534336e+15 | \x434018601510c000 | t
1336  \x43d055dc36f24000 |   4.708356024711512e+18 |   4.708356024711512e+18 | \x43d055dc36f24000 | t
1337  \x43e052961c6f8000 |   9.409340012568248e+18 |   9.409340012568248e+18 | \x43e052961c6f8000 | t
1338  \x3ff3c0ca2a5b1d5d |               1.2345678 |               1.2345678 | \x3ff3c0ca2a5b1d5d | t
1339  \x4830f0cf064dd592 |   5.764607523034235e+39 |   5.764607523034235e+39 | \x4830f0cf064dd592 | t
1340  \x4840f0cf064dd592 |   1.152921504606847e+40 |   1.152921504606847e+40 | \x4840f0cf064dd592 | t
1341  \x4850f0cf064dd592 |   2.305843009213694e+40 |   2.305843009213694e+40 | \x4850f0cf064dd592 | t
1342  \x3ff3333333333333 |                     1.2 |                     1.2 | \x3ff3333333333333 | t
1343  \x3ff3ae147ae147ae |                    1.23 |                    1.23 | \x3ff3ae147ae147ae | t
1344  \x3ff3be76c8b43958 |                   1.234 |                   1.234 | \x3ff3be76c8b43958 | t
1345  \x3ff3c083126e978d |                  1.2345 |                  1.2345 | \x3ff3c083126e978d | t
1346  \x3ff3c0c1fc8f3238 |                 1.23456 |                 1.23456 | \x3ff3c0c1fc8f3238 | t
1347  \x3ff3c0c9539b8887 |                1.234567 |                1.234567 | \x3ff3c0c9539b8887 | t
1348  \x3ff3c0ca2a5b1d5d |               1.2345678 |               1.2345678 | \x3ff3c0ca2a5b1d5d | t
1349  \x3ff3c0ca4283de1b |              1.23456789 |              1.23456789 | \x3ff3c0ca4283de1b | t
1350  \x3ff3c0ca43db770a |             1.234567895 |             1.234567895 | \x3ff3c0ca43db770a | t
1351  \x3ff3c0ca428abd53 |            1.2345678901 |            1.2345678901 | \x3ff3c0ca428abd53 | t
1352  \x3ff3c0ca428c1d2b |           1.23456789012 |           1.23456789012 | \x3ff3c0ca428c1d2b | t
1353  \x3ff3c0ca428c51f2 |          1.234567890123 |          1.234567890123 | \x3ff3c0ca428c51f2 | t
1354  \x3ff3c0ca428c58fc |         1.2345678901234 |         1.2345678901234 | \x3ff3c0ca428c58fc | t
1355  \x3ff3c0ca428c59dd |        1.23456789012345 |        1.23456789012345 | \x3ff3c0ca428c59dd | t
1356  \x3ff3c0ca428c59f8 |       1.234567890123456 |       1.234567890123456 | \x3ff3c0ca428c59f8 | t
1357  \x3ff3c0ca428c59fb |      1.2345678901234567 |      1.2345678901234567 | \x3ff3c0ca428c59fb | t
1358  \x40112e0be8047a7d |             4.294967294 |             4.294967294 | \x40112e0be8047a7d | t
1359  \x40112e0be815a889 |             4.294967295 |             4.294967295 | \x40112e0be815a889 | t
1360  \x40112e0be826d695 |             4.294967296 |             4.294967296 | \x40112e0be826d695 | t
1361  \x40112e0be83804a1 |             4.294967297 |             4.294967297 | \x40112e0be83804a1 | t
1362  \x40112e0be84932ad |             4.294967298 |             4.294967298 | \x40112e0be84932ad | t
1363  \x0040000000000000 | 1.7800590868057611e-307 | 1.7800590868057611e-307 | \x0040000000000000 | t
1364  \x007fffffffffffff | 2.8480945388892175e-306 | 2.8480945388892175e-306 | \x007fffffffffffff | t
1365  \x0290000000000000 |  2.446494580089078e-296 |  2.446494580089078e-296 | \x0290000000000000 | t
1366  \x029fffffffffffff | 4.8929891601781557e-296 | 4.8929891601781557e-296 | \x029fffffffffffff | t
1367  \x4350000000000000 |  1.8014398509481984e+16 |  1.8014398509481984e+16 | \x4350000000000000 | t
1368  \x435fffffffffffff |  3.6028797018963964e+16 |  3.6028797018963964e+16 | \x435fffffffffffff | t
1369  \x1330000000000000 |  2.900835519859558e-216 |  2.900835519859558e-216 | \x1330000000000000 | t
1370  \x133fffffffffffff |  5.801671039719115e-216 |  5.801671039719115e-216 | \x133fffffffffffff | t
1371  \x3a6fa7161a4d6e0c |   3.196104012172126e-27 |   3.196104012172126e-27 | \x3a6fa7161a4d6e0c | t
1372 (209 rows)
1374 -- clean up, lest opr_sanity complain
1375 drop type xfloat8 cascade;
1376 NOTICE:  drop cascades to 6 other objects
1377 DETAIL:  drop cascades to function xfloat8in(cstring)
1378 drop cascades to function xfloat8out(xfloat8)
1379 drop cascades to cast from xfloat8 to double precision
1380 drop cascades to cast from double precision to xfloat8
1381 drop cascades to cast from xfloat8 to bigint
1382 drop cascades to cast from bigint to xfloat8