1--
2--  Test seg datatype
3--
4CREATE EXTENSION seg;
5--
6-- testing the input and output functions
7--
8-- Any number
9SELECT '1'::seg AS seg;
10 seg
11-----
12 1
13(1 row)
14
15SELECT '-1'::seg AS seg;
16 seg
17-----
18 -1
19(1 row)
20
21SELECT '1.0'::seg AS seg;
22 seg
23-----
24 1.0
25(1 row)
26
27SELECT '-1.0'::seg AS seg;
28 seg
29------
30 -1.0
31(1 row)
32
33SELECT '1e7'::seg AS seg;
34  seg
35--------
36 1e+007
37(1 row)
38
39SELECT '-1e7'::seg AS seg;
40   seg
41---------
42 -1e+007
43(1 row)
44
45SELECT '1.0e7'::seg AS seg;
46   seg
47----------
48 1.0e+007
49(1 row)
50
51SELECT '-1.0e7'::seg AS seg;
52    seg
53-----------
54 -1.0e+007
55(1 row)
56
57SELECT '1e+7'::seg AS seg;
58  seg
59--------
60 1e+007
61(1 row)
62
63SELECT '-1e+7'::seg AS seg;
64   seg
65---------
66 -1e+007
67(1 row)
68
69SELECT '1.0e+7'::seg AS seg;
70   seg
71----------
72 1.0e+007
73(1 row)
74
75SELECT '-1.0e+7'::seg AS seg;
76    seg
77-----------
78 -1.0e+007
79(1 row)
80
81SELECT '1e-7'::seg AS seg;
82  seg
83--------
84 1e-007
85(1 row)
86
87SELECT '-1e-7'::seg AS seg;
88   seg
89---------
90 -1e-007
91(1 row)
92
93SELECT '1.0e-7'::seg AS seg;
94   seg
95----------
96 1.0e-007
97(1 row)
98
99SELECT '-1.0e-7'::seg AS seg;
100    seg
101-----------
102 -1.0e-007
103(1 row)
104
105SELECT '2e-6'::seg AS seg;
106  seg
107--------
108 2e-006
109(1 row)
110
111SELECT '2e-5'::seg AS seg;
112  seg
113--------
114 2e-005
115(1 row)
116
117SELECT '2e-4'::seg AS seg;
118  seg
119--------
120 0.0002
121(1 row)
122
123SELECT '2e-3'::seg AS seg;
124  seg
125-------
126 0.002
127(1 row)
128
129SELECT '2e-2'::seg AS seg;
130 seg
131------
132 0.02
133(1 row)
134
135SELECT '2e-1'::seg AS seg;
136 seg
137-----
138 0.2
139(1 row)
140
141SELECT '2e-0'::seg AS seg;
142 seg
143-----
144 2
145(1 row)
146
147SELECT '2e+0'::seg AS seg;
148 seg
149-----
150 2
151(1 row)
152
153SELECT '2e+1'::seg AS seg;
154 seg
155-----
156 2e1
157(1 row)
158
159SELECT '2e+2'::seg AS seg;
160 seg
161-----
162 2e2
163(1 row)
164
165SELECT '2e+3'::seg AS seg;
166 seg
167-----
168 2e3
169(1 row)
170
171SELECT '2e+4'::seg AS seg;
172 seg
173-----
174 2e4
175(1 row)
176
177SELECT '2e+5'::seg AS seg;
178  seg
179--------
180 2e+005
181(1 row)
182
183SELECT '2e+6'::seg AS seg;
184  seg
185--------
186 2e+006
187(1 row)
188
189-- Significant digits preserved
190SELECT '1'::seg AS seg;
191 seg
192-----
193 1
194(1 row)
195
196SELECT '1.0'::seg AS seg;
197 seg
198-----
199 1.0
200(1 row)
201
202SELECT '1.00'::seg AS seg;
203 seg
204------
205 1.00
206(1 row)
207
208SELECT '1.000'::seg AS seg;
209  seg
210-------
211 1.000
212(1 row)
213
214SELECT '1.0000'::seg AS seg;
215  seg
216--------
217 1.0000
218(1 row)
219
220SELECT '1.00000'::seg AS seg;
221   seg
222---------
223 1.00000
224(1 row)
225
226SELECT '1.000000'::seg AS seg;
227   seg
228---------
229 1.00000
230(1 row)
231
232SELECT '0.000000120'::seg AS seg;
233    seg
234-----------
235 1.20e-007
236(1 row)
237
238SELECT '3.400e5'::seg AS seg;
239    seg
240------------
241 3.400e+005
242(1 row)
243
244-- Digits truncated
245SELECT '12.34567890123456'::seg AS seg;
246   seg
247---------
248 12.3457
249(1 row)
250
251-- Numbers with certainty indicators
252SELECT '~6.5'::seg AS seg;
253 seg
254------
255 ~6.5
256(1 row)
257
258SELECT '<6.5'::seg AS seg;
259 seg
260------
261 <6.5
262(1 row)
263
264SELECT '>6.5'::seg AS seg;
265 seg
266------
267 >6.5
268(1 row)
269
270SELECT '~ 6.5'::seg AS seg;
271 seg
272------
273 ~6.5
274(1 row)
275
276SELECT '< 6.5'::seg AS seg;
277 seg
278------
279 <6.5
280(1 row)
281
282SELECT '> 6.5'::seg AS seg;
283 seg
284------
285 >6.5
286(1 row)
287
288-- Open intervals
289SELECT '0..'::seg AS seg;
290 seg
291------
292 0 ..
293(1 row)
294
295SELECT '0...'::seg AS seg;
296 seg
297------
298 0 ..
299(1 row)
300
301SELECT '0 ..'::seg AS seg;
302 seg
303------
304 0 ..
305(1 row)
306
307SELECT '0 ...'::seg AS seg;
308 seg
309------
310 0 ..
311(1 row)
312
313SELECT '..0'::seg AS seg;
314 seg
315------
316 .. 0
317(1 row)
318
319SELECT '...0'::seg AS seg;
320 seg
321------
322 .. 0
323(1 row)
324
325SELECT '.. 0'::seg AS seg;
326 seg
327------
328 .. 0
329(1 row)
330
331SELECT '... 0'::seg AS seg;
332 seg
333------
334 .. 0
335(1 row)
336
337-- Finite intervals
338SELECT '0 .. 1'::seg AS seg;
339  seg
340--------
341 0 .. 1
342(1 row)
343
344SELECT '-1 .. 0'::seg AS seg;
345   seg
346---------
347 -1 .. 0
348(1 row)
349
350SELECT '-1 .. 1'::seg AS seg;
351   seg
352---------
353 -1 .. 1
354(1 row)
355
356-- (+/-) intervals
357SELECT '0(+-)1'::seg AS seg;
358   seg
359---------
360 -1 .. 1
361(1 row)
362
363SELECT '0(+-)1.0'::seg AS seg;
364     seg
365-------------
366 -1.0 .. 1.0
367(1 row)
368
369SELECT '1.0(+-)0.005'::seg AS seg;
370      seg
371----------------
372 0.995 .. 1.005
373(1 row)
374
375SELECT '101(+-)1'::seg AS seg;
376       seg
377------------------
378 1.00e2 .. 1.02e2
379(1 row)
380
381-- incorrect number of significant digits in 99.0:
382SELECT '100(+-)1'::seg AS seg;
383      seg
384----------------
385 99.0 .. 1.01e2
386(1 row)
387
388-- invalid input
389SELECT ''::seg AS seg;
390ERROR:  bad seg representation
391LINE 1: SELECT ''::seg AS seg;
392               ^
393DETAIL:  syntax error at end of input
394SELECT 'ABC'::seg AS seg;
395ERROR:  bad seg representation
396LINE 1: SELECT 'ABC'::seg AS seg;
397               ^
398DETAIL:  syntax error at or near "A"
399SELECT '1ABC'::seg AS seg;
400ERROR:  bad seg representation
401LINE 1: SELECT '1ABC'::seg AS seg;
402               ^
403DETAIL:  syntax error at or near "A"
404SELECT '1.'::seg AS seg;
405ERROR:  bad seg representation
406LINE 1: SELECT '1.'::seg AS seg;
407               ^
408DETAIL:  syntax error at or near "."
409SELECT '1.....'::seg AS seg;
410ERROR:  bad seg representation
411LINE 1: SELECT '1.....'::seg AS seg;
412               ^
413DETAIL:  syntax error at or near ".."
414SELECT '.1'::seg AS seg;
415ERROR:  bad seg representation
416LINE 1: SELECT '.1'::seg AS seg;
417               ^
418DETAIL:  syntax error at or near "."
419SELECT '1..2.'::seg AS seg;
420ERROR:  bad seg representation
421LINE 1: SELECT '1..2.'::seg AS seg;
422               ^
423DETAIL:  syntax error at or near "."
424SELECT '1 e7'::seg AS seg;
425ERROR:  bad seg representation
426LINE 1: SELECT '1 e7'::seg AS seg;
427               ^
428DETAIL:  syntax error at or near "e"
429SELECT '1e700'::seg AS seg;
430ERROR:  "1e700" is out of range for type real
431LINE 1: SELECT '1e700'::seg AS seg;
432               ^
433--
434-- testing the  operators
435--
436-- equality/inequality:
437--
438SELECT '24 .. 33.20'::seg = '24 .. 33.20'::seg AS bool;
439 bool
440------
441 t
442(1 row)
443
444SELECT '24 .. 33.20'::seg = '24 .. 33.21'::seg AS bool;
445 bool
446------
447 f
448(1 row)
449
450SELECT '24 .. 33.20'::seg != '24 .. 33.20'::seg AS bool;
451 bool
452------
453 f
454(1 row)
455
456SELECT '24 .. 33.20'::seg != '24 .. 33.21'::seg AS bool;
457 bool
458------
459 t
460(1 row)
461
462-- overlap
463--
464SELECT '1'::seg && '1'::seg AS bool;
465 bool
466------
467 t
468(1 row)
469
470SELECT '1'::seg && '2'::seg AS bool;
471 bool
472------
473 f
474(1 row)
475
476SELECT '0 ..'::seg && '0 ..'::seg AS bool;
477 bool
478------
479 t
480(1 row)
481
482SELECT '0 .. 1'::seg && '0 .. 1'::seg AS bool;
483 bool
484------
485 t
486(1 row)
487
488SELECT '..0'::seg && '0..'::seg AS bool;
489 bool
490------
491 t
492(1 row)
493
494SELECT '-1 .. 0.1'::seg && '0 .. 1'::seg AS bool;
495 bool
496------
497 t
498(1 row)
499
500SELECT '-1 .. 0'::seg && '0 .. 1'::seg AS bool;
501 bool
502------
503 t
504(1 row)
505
506SELECT '-1 .. -0.0001'::seg && '0 .. 1'::seg AS bool;
507 bool
508------
509 f
510(1 row)
511
512SELECT '0 ..'::seg && '1'::seg AS bool;
513 bool
514------
515 t
516(1 row)
517
518SELECT '0 .. 1'::seg && '1'::seg AS bool;
519 bool
520------
521 t
522(1 row)
523
524SELECT '0 .. 1'::seg && '2'::seg AS bool;
525 bool
526------
527 f
528(1 row)
529
530SELECT '0 .. 2'::seg && '1'::seg AS bool;
531 bool
532------
533 t
534(1 row)
535
536SELECT '1'::seg && '0 .. 1'::seg AS bool;
537 bool
538------
539 t
540(1 row)
541
542SELECT '2'::seg && '0 .. 1'::seg AS bool;
543 bool
544------
545 f
546(1 row)
547
548SELECT '1'::seg && '0 .. 2'::seg AS bool;
549 bool
550------
551 t
552(1 row)
553
554-- overlap on the left
555--
556SELECT '1'::seg &< '0'::seg AS bool;
557 bool
558------
559 f
560(1 row)
561
562SELECT '1'::seg &< '1'::seg AS bool;
563 bool
564------
565 t
566(1 row)
567
568SELECT '1'::seg &< '2'::seg AS bool;
569 bool
570------
571 t
572(1 row)
573
574SELECT '0 .. 1'::seg &< '0'::seg AS bool;
575 bool
576------
577 f
578(1 row)
579
580SELECT '0 .. 1'::seg &< '1'::seg AS bool;
581 bool
582------
583 t
584(1 row)
585
586SELECT '0 .. 1'::seg &< '2'::seg AS bool;
587 bool
588------
589 t
590(1 row)
591
592SELECT '0 .. 1'::seg &< '0 .. 0.5'::seg AS bool;
593 bool
594------
595 f
596(1 row)
597
598SELECT '0 .. 1'::seg &< '0 .. 1'::seg AS bool;
599 bool
600------
601 t
602(1 row)
603
604SELECT '0 .. 1'::seg &< '0 .. 2'::seg AS bool;
605 bool
606------
607 t
608(1 row)
609
610SELECT '0 .. 1'::seg &< '1 .. 2'::seg AS bool;
611 bool
612------
613 t
614(1 row)
615
616SELECT '0 .. 1'::seg &< '2 .. 3'::seg AS bool;
617 bool
618------
619 t
620(1 row)
621
622-- overlap on the right
623--
624SELECT '0'::seg &> '1'::seg AS bool;
625 bool
626------
627 f
628(1 row)
629
630SELECT '1'::seg &> '1'::seg AS bool;
631 bool
632------
633 t
634(1 row)
635
636SELECT '2'::seg &> '1'::seg AS bool;
637 bool
638------
639 t
640(1 row)
641
642SELECT '0'::seg &> '0 .. 1'::seg AS bool;
643 bool
644------
645 t
646(1 row)
647
648SELECT '1'::seg &> '0 .. 1'::seg AS bool;
649 bool
650------
651 t
652(1 row)
653
654SELECT '2'::seg &> '0 .. 1'::seg AS bool;
655 bool
656------
657 t
658(1 row)
659
660SELECT '0 .. 0.5'::seg &> '0 .. 1'::seg AS bool;
661 bool
662------
663 t
664(1 row)
665
666SELECT '0 .. 1'::seg &> '0 .. 1'::seg AS bool;
667 bool
668------
669 t
670(1 row)
671
672SELECT '0 .. 2'::seg &> '0 .. 2'::seg AS bool;
673 bool
674------
675 t
676(1 row)
677
678SELECT '1 .. 2'::seg &> '0 .. 1'::seg AS bool;
679 bool
680------
681 t
682(1 row)
683
684SELECT '2 .. 3'::seg &> '0 .. 1'::seg AS bool;
685 bool
686------
687 t
688(1 row)
689
690-- left
691--
692SELECT '1'::seg << '0'::seg AS bool;
693 bool
694------
695 f
696(1 row)
697
698SELECT '1'::seg << '1'::seg AS bool;
699 bool
700------
701 f
702(1 row)
703
704SELECT '1'::seg << '2'::seg AS bool;
705 bool
706------
707 t
708(1 row)
709
710SELECT '0 .. 1'::seg << '0'::seg AS bool;
711 bool
712------
713 f
714(1 row)
715
716SELECT '0 .. 1'::seg << '1'::seg AS bool;
717 bool
718------
719 f
720(1 row)
721
722SELECT '0 .. 1'::seg << '2'::seg AS bool;
723 bool
724------
725 t
726(1 row)
727
728SELECT '0 .. 1'::seg << '0 .. 0.5'::seg AS bool;
729 bool
730------
731 f
732(1 row)
733
734SELECT '0 .. 1'::seg << '0 .. 1'::seg AS bool;
735 bool
736------
737 f
738(1 row)
739
740SELECT '0 .. 1'::seg << '0 .. 2'::seg AS bool;
741 bool
742------
743 f
744(1 row)
745
746SELECT '0 .. 1'::seg << '1 .. 2'::seg AS bool;
747 bool
748------
749 f
750(1 row)
751
752SELECT '0 .. 1'::seg << '2 .. 3'::seg AS bool;
753 bool
754------
755 t
756(1 row)
757
758-- right
759--
760SELECT '0'::seg >> '1'::seg AS bool;
761 bool
762------
763 f
764(1 row)
765
766SELECT '1'::seg >> '1'::seg AS bool;
767 bool
768------
769 f
770(1 row)
771
772SELECT '2'::seg >> '1'::seg AS bool;
773 bool
774------
775 t
776(1 row)
777
778SELECT '0'::seg >> '0 .. 1'::seg AS bool;
779 bool
780------
781 f
782(1 row)
783
784SELECT '1'::seg >> '0 .. 1'::seg AS bool;
785 bool
786------
787 f
788(1 row)
789
790SELECT '2'::seg >> '0 .. 1'::seg AS bool;
791 bool
792------
793 t
794(1 row)
795
796SELECT '0 .. 0.5'::seg >> '0 .. 1'::seg AS bool;
797 bool
798------
799 f
800(1 row)
801
802SELECT '0 .. 1'::seg >> '0 .. 1'::seg AS bool;
803 bool
804------
805 f
806(1 row)
807
808SELECT '0 .. 2'::seg >> '0 .. 2'::seg AS bool;
809 bool
810------
811 f
812(1 row)
813
814SELECT '1 .. 2'::seg >> '0 .. 1'::seg AS bool;
815 bool
816------
817 f
818(1 row)
819
820SELECT '2 .. 3'::seg >> '0 .. 1'::seg AS bool;
821 bool
822------
823 t
824(1 row)
825
826-- "contained in" (the left value belongs within the interval specified in the right value):
827--
828SELECT '0'::seg        <@ '0'::seg AS bool;
829 bool
830------
831 t
832(1 row)
833
834SELECT '0'::seg        <@ '0 ..'::seg AS bool;
835 bool
836------
837 t
838(1 row)
839
840SELECT '0'::seg        <@ '.. 0'::seg AS bool;
841 bool
842------
843 t
844(1 row)
845
846SELECT '0'::seg        <@ '-1 .. 1'::seg AS bool;
847 bool
848------
849 t
850(1 row)
851
852SELECT '0'::seg        <@ '-1 .. 1'::seg AS bool;
853 bool
854------
855 t
856(1 row)
857
858SELECT '-1'::seg       <@ '-1 .. 1'::seg AS bool;
859 bool
860------
861 t
862(1 row)
863
864SELECT '1'::seg        <@ '-1 .. 1'::seg AS bool;
865 bool
866------
867 t
868(1 row)
869
870SELECT '-1 .. 1'::seg  <@ '-1 .. 1'::seg AS bool;
871 bool
872------
873 t
874(1 row)
875
876-- "contains" (the left value contains the interval specified in the right value):
877--
878SELECT '0'::seg @> '0'::seg AS bool;
879 bool
880------
881 t
882(1 row)
883
884SELECT '0 .. '::seg <@ '0'::seg AS bool;
885 bool
886------
887 f
888(1 row)
889
890SELECT '.. 0'::seg <@ '0'::seg AS bool;
891 bool
892------
893 f
894(1 row)
895
896SELECT '-1 .. 1'::seg <@ '0'::seg AS bool;
897 bool
898------
899 f
900(1 row)
901
902SELECT '0'::seg <@ '-1 .. 1'::seg AS bool;
903 bool
904------
905 t
906(1 row)
907
908SELECT '-1'::seg <@ '-1 .. 1'::seg AS bool;
909 bool
910------
911 t
912(1 row)
913
914SELECT '1'::seg <@ '-1 .. 1'::seg AS bool;
915 bool
916------
917 t
918(1 row)
919
920-- Load some example data and build the index
921--
922CREATE TABLE test_seg (s seg);
923\copy test_seg from 'data/test_seg.data'
924CREATE INDEX test_seg_ix ON test_seg USING gist (s);
925SELECT count(*) FROM test_seg WHERE s @> '11..11.3';
926 count
927-------
928   143
929(1 row)
930
931-- Test sorting
932SELECT * FROM test_seg WHERE s @> '11..11.3' GROUP BY s;
933        s
934-----------------
935 .. 4.0e1
936 .. >8.2e1
937 .. 9.0e1
938 <1.0 .. >13.0
939 1.3 .. 12.0
940 2.0 .. 11.5
941 2.1 .. 11.8
942 <2.3 ..
943 >2.3 ..
944 2.4 .. 11.3
945 2.5 .. 11.5
946 2.5 .. 11.8
947 2.6 ..
948 2.7 .. 12.0
949 <3.0 ..
950 3 .. 5.8e1
951 3.1 .. 11.5
952 3.5 .. 11.5
953 3.5 .. 12.2
954 <4.0 .. >1.2e1
955 <4.0 ..
956 4 .. 1.2e1
957 4.0 .. 11.7
958 4.0 .. 12.5
959 4.0 .. 13.0
960 4.0 .. 6.0e1
961 4.0 ..
962 4.2 .. 11.5
963 4.2 .. 11.7
964 <4.5 .. >1.2e1
965 4.5 .. 11.5
966 4.5 .. <1.2e1
967 4.5 .. >1.2e1
968 4.5 .. 12.5
969 4.5 .. 1.15e2
970 4.7 .. 11.8
971 4.8 .. 11.5
972 4.8 .. 11.6
973 4.8 .. 12.5
974 4.8 ..
975 4.9 .. >1.2e1
976 4.9 ..
977 5 .. 11.5
978 5 .. 1.2e1
979 5 .. 3.0e1
980 5.0 .. 11.4
981 5.0 .. 11.5
982 5.0 .. 11.6
983 5.0 .. 11.7
984 5.0 .. 12.0
985 5.0 .. >12.0
986 5.0 .. >1.2e1
987 5.2 .. 11.5
988 5.2 .. >1.2e1
989 5.25 .. >1.2e1
990 5.3 .. 11.5
991 5.3 .. 1.3e1
992 5.3 .. >9.0e1
993 5.3 ..
994 5.4 ..
995 5.5 .. 11.5
996 5.5 .. 11.7
997 5.5 .. 1.2e1
998 5.5 .. >1.2e1
999 5.5 .. 12.5
1000 5.5 .. 13.5
1001 5.5 ..
1002 >5.5 ..
1003 5.7 ..
1004 5.9 ..
1005 6 .. 11.5
1006 6 .. >1.2e1
1007 6.0 .. 11.5
1008 6.0 .. 1.3e1
1009 >6.0 .. <11.5
1010 6.1 .. >1.2e1
1011 6.1 ..
1012 6.2 .. >11.5
1013 6.3 ..
1014 6.5 .. 11.5
1015 6.5 .. 12.0
1016 6.5 .. >12.0
1017 6.5 ..
1018 6.6 ..
1019 6.7 .. 11.5
1020 6.7 ..
1021 6.75 ..
1022 6.8 ..
1023 6.9 .. 12.2
1024 6.9 .. >9.0e1
1025 6.9 ..
1026 <7.0 .. >11.5
1027 7.0 .. 11.5
1028 7.0 .. >11.5
1029 7.0 ..
1030 >7.15 ..
1031 7.2 .. 13.5
1032 7.3 .. >9.0e1
1033 7.3 ..
1034 >7.3 ..
1035 7.4 .. 12.1
1036 7.4 ..
1037 7.5 .. 11.5
1038 7.5 .. 12.0
1039 7.5 ..
1040 7.7 .. 11.5
1041 7.7 ..
1042 7.75 ..
1043 8.0 .. 11.7
1044 8.0 .. 12.0
1045 8.0 .. >13.0
1046 8.2 ..
1047 8.3 ..
1048 8.5 .. >11.5
1049 8.5 .. 12.5
1050 8.5 ..
1051 8.6 .. >9.9e1
1052 8.7 .. 11.3
1053 8.7 .. 11.7
1054 8.9 .. 11.5
1055 9 .. >1.2e1
1056 9.0 .. 11.3
1057 9.0 .. 11.5
1058 9.0 .. 1.2e1
1059 9.0 ..
1060 9.2 .. 1.2e1
1061 9.4 .. 12.2
1062 <9.5 .. 1.2e1
1063 <9.5 .. >12.2
1064 9.5 ..
1065 9.6 .. 11.5
1066 9.7 .. 11.5
1067 9.7 .. >1.2e1
1068 9.8 .. >12.5
1069 <1.0e1 .. >11.6
1070 10.0 .. 11.5
1071 10.0 .. 12.5
1072 10.0 .. >12.5
1073 10.2 .. 11.8
1074 <10.5 .. 11.5
1075 10.5 .. 11.5
1076 10.5 .. <13.5
1077 10.7 .. 12.3
1078(143 rows)
1079
1080-- Test functions
1081SELECT seg_lower(s), seg_center(s), seg_upper(s)
1082FROM test_seg WHERE s @> '11.2..11.3' OR s IS NULL ORDER BY s;
1083 seg_lower | seg_center | seg_upper
1084-----------+------------+-----------
1085 -Infinity |  -Infinity |        40
1086 -Infinity |  -Infinity |        82
1087 -Infinity |  -Infinity |        90
1088         1 |          7 |        13
1089       1.3 |       6.65 |        12
1090         2 |       6.75 |      11.5
1091       2.1 |       6.95 |      11.8
1092       2.3 |   Infinity |  Infinity
1093       2.3 |   Infinity |  Infinity
1094       2.4 |       6.85 |      11.3
1095       2.5 |          7 |      11.5
1096       2.5 |       7.15 |      11.8
1097       2.6 |   Infinity |  Infinity
1098       2.7 |       7.35 |        12
1099         3 |   Infinity |  Infinity
1100         3 |       30.5 |        58
1101       3.1 |        7.3 |      11.5
1102       3.5 |        7.5 |      11.5
1103       3.5 |       7.85 |      12.2
1104         4 |          8 |        12
1105         4 |   Infinity |  Infinity
1106         4 |          8 |        12
1107         4 |       7.85 |      11.7
1108         4 |       8.25 |      12.5
1109         4 |        8.5 |        13
1110         4 |         32 |        60
1111         4 |   Infinity |  Infinity
1112       4.2 |       7.85 |      11.5
1113       4.2 |       7.95 |      11.7
1114       4.5 |       8.25 |        12
1115       4.5 |          8 |      11.5
1116       4.5 |       8.25 |        12
1117       4.5 |       8.25 |        12
1118       4.5 |        8.5 |      12.5
1119       4.5 |      59.75 |       115
1120       4.7 |       8.25 |      11.8
1121       4.8 |       8.15 |      11.5
1122       4.8 |        8.2 |      11.6
1123       4.8 |       8.65 |      12.5
1124       4.8 |   Infinity |  Infinity
1125       4.9 |       8.45 |        12
1126       4.9 |   Infinity |  Infinity
1127         5 |       8.25 |      11.5
1128         5 |        8.5 |        12
1129         5 |       17.5 |        30
1130         5 |        8.2 |      11.4
1131         5 |       8.25 |      11.5
1132         5 |        8.3 |      11.6
1133         5 |       8.35 |      11.7
1134         5 |        8.5 |        12
1135         5 |        8.5 |        12
1136         5 |        8.5 |        12
1137       5.2 |       8.35 |      11.5
1138       5.2 |        8.6 |        12
1139      5.25 |      8.625 |        12
1140       5.3 |        8.4 |      11.5
1141       5.3 |       9.15 |        13
1142       5.3 |      47.65 |        90
1143       5.3 |   Infinity |  Infinity
1144       5.4 |   Infinity |  Infinity
1145       5.5 |        8.5 |      11.5
1146       5.5 |        8.6 |      11.7
1147       5.5 |       8.75 |        12
1148       5.5 |       8.75 |        12
1149       5.5 |          9 |      12.5
1150       5.5 |        9.5 |      13.5
1151       5.5 |   Infinity |  Infinity
1152       5.5 |   Infinity |  Infinity
1153       5.7 |   Infinity |  Infinity
1154       5.9 |   Infinity |  Infinity
1155         6 |       8.75 |      11.5
1156         6 |          9 |        12
1157         6 |       8.75 |      11.5
1158         6 |        9.5 |        13
1159         6 |       8.75 |      11.5
1160       6.1 |       9.05 |        12
1161       6.1 |   Infinity |  Infinity
1162       6.2 |       8.85 |      11.5
1163       6.3 |   Infinity |  Infinity
1164       6.5 |          9 |      11.5
1165       6.5 |       9.25 |        12
1166       6.5 |       9.25 |        12
1167       6.5 |   Infinity |  Infinity
1168       6.6 |   Infinity |  Infinity
1169       6.7 |        9.1 |      11.5
1170       6.7 |   Infinity |  Infinity
1171      6.75 |   Infinity |  Infinity
1172       6.8 |   Infinity |  Infinity
1173       6.9 |       9.55 |      12.2
1174       6.9 |      48.45 |        90
1175       6.9 |   Infinity |  Infinity
1176         7 |       9.25 |      11.5
1177         7 |       9.25 |      11.5
1178         7 |       9.25 |      11.5
1179         7 |   Infinity |  Infinity
1180      7.15 |   Infinity |  Infinity
1181       7.2 |      10.35 |      13.5
1182       7.3 |      48.65 |        90
1183       7.3 |   Infinity |  Infinity
1184       7.3 |   Infinity |  Infinity
1185       7.4 |       9.75 |      12.1
1186       7.4 |   Infinity |  Infinity
1187       7.5 |        9.5 |      11.5
1188       7.5 |       9.75 |        12
1189       7.5 |   Infinity |  Infinity
1190       7.7 |        9.6 |      11.5
1191       7.7 |   Infinity |  Infinity
1192      7.75 |   Infinity |  Infinity
1193         8 |       9.85 |      11.7
1194         8 |         10 |        12
1195         8 |       10.5 |        13
1196       8.2 |   Infinity |  Infinity
1197       8.3 |   Infinity |  Infinity
1198       8.5 |         10 |      11.5
1199       8.5 |       10.5 |      12.5
1200       8.5 |   Infinity |  Infinity
1201       8.6 |       53.8 |        99
1202       8.7 |         10 |      11.3
1203       8.7 |       10.2 |      11.7
1204       8.9 |       10.2 |      11.5
1205         9 |       10.5 |        12
1206         9 |      10.15 |      11.3
1207         9 |      10.25 |      11.5
1208         9 |       10.5 |        12
1209         9 |   Infinity |  Infinity
1210       9.2 |       10.6 |        12
1211       9.4 |       10.8 |      12.2
1212       9.5 |      10.75 |        12
1213       9.5 |      10.85 |      12.2
1214       9.5 |   Infinity |  Infinity
1215       9.6 |      10.55 |      11.5
1216       9.7 |       10.6 |      11.5
1217       9.7 |      10.85 |        12
1218       9.8 |      11.15 |      12.5
1219        10 |       10.8 |      11.6
1220        10 |      10.75 |      11.5
1221        10 |      11.25 |      12.5
1222        10 |      11.25 |      12.5
1223      10.2 |         11 |      11.8
1224      10.5 |         11 |      11.5
1225      10.5 |         11 |      11.5
1226      10.5 |         12 |      13.5
1227      10.7 |       11.5 |      12.3
1228           |            |
1229(144 rows)
1230
1231