*** ./expected/float8-small-is-zero.out Fri Sep 26 00:16:34 2003 --- ./results/float8.out Thu Mar 18 11:26:20 2004 *************** *** 7,12 **** --- 7,86 ---- INSERT INTO FLOAT8_TBL(f1) VALUES (' -34.84'); INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200'); INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200'); + -- test for underflow and overflow + INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); + ERROR: "10e400" is out of range for type double precision + INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400'); + ERROR: "-10e400" is out of range for type double precision + INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400'); + INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400'); + -- bad input + INSERT INTO FLOAT8_TBL(f1) VALUES (' '); + ERROR: invalid input syntax for type double precision: " " + INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz'); + ERROR: invalid input syntax for type double precision: "xyz" + INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0'); + ERROR: invalid input syntax for type double precision: "5.0.0" + INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0'); + ERROR: invalid input syntax for type double precision: "5 . 0" + INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0'); + ERROR: invalid input syntax for type double precision: "5. 0" + INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3'); + ERROR: invalid input syntax for type double precision: " - 3" + INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5'); + ERROR: invalid input syntax for type double precision: "123 5" + -- special inputs + SELECT 'NaN'::float8; + float8 + -------- + NaN + (1 row) + + SELECT 'nan'::float8; + float8 + -------- + NaN + (1 row) + + SELECT ' NAN '::float8; + float8 + -------- + NaN + (1 row) + + SELECT 'infinity'::float8; + float8 + ---------- + Infinity + (1 row) + + SELECT ' -INFINiTY '::float8; + float8 + ----------- + -Infinity + (1 row) + + -- bad special inputs + SELECT 'N A N'::float8; + ERROR: invalid input syntax for type double precision: "N A N" + SELECT 'NaN x'::float8; + ERROR: invalid input syntax for type double precision: "NaN x" + SELECT ' INFINITY x'::float8; + ERROR: invalid input syntax for type double precision: " INFINITY x" + SELECT 'Infinity'::float8 + 100.0; + ERROR: type "double precision" value out of range: overflow + SELECT 'Infinity'::float8 / 'Infinity'::float8; + ?column? + ---------- + NaN + (1 row) + + SELECT 'nan'::float8 / 'nan'::float8; + ?column? + ---------- + NaN + (1 row) + SELECT '' AS five, FLOAT8_TBL.*; five | f1 ------+---------------------- *************** *** 15,21 **** | -34.84 | 1.2345678901234e+200 | 1.2345678901234e-200 ! (5 rows) SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3'; four | f1 --- 89,97 ---- | -34.84 | 1.2345678901234e+200 | 1.2345678901234e-200 ! | 0 ! | -0 ! (7 rows) SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3'; four | f1 *************** *** 24,30 **** | -34.84 | 1.2345678901234e+200 | 1.2345678901234e-200 ! (4 rows) SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3'; one | f1 --- 100,108 ---- | -34.84 | 1.2345678901234e+200 | 1.2345678901234e-200 ! | 0 ! | -0 ! (6 rows) SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3'; one | f1 *************** *** 38,44 **** | 0 | -34.84 | 1.2345678901234e-200 ! (3 rows) SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3'; three | f1 --- 116,124 ---- | 0 | -34.84 | 1.2345678901234e-200 ! | 0 ! | -0 ! (5 rows) SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3'; three | f1 *************** *** 46,52 **** | 0 | -34.84 | 1.2345678901234e-200 ! (3 rows) SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1; four | f1 --- 126,134 ---- | 0 | -34.84 | 1.2345678901234e-200 ! | 0 ! | -0 ! (5 rows) SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1; four | f1 *************** *** 55,61 **** | 1004.3 | -34.84 | 1.2345678901234e-200 ! (4 rows) SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3'; four | f1 --- 137,145 ---- | 1004.3 | -34.84 | 1.2345678901234e-200 ! | 0 ! | -0 ! (6 rows) SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3'; four | f1 *************** *** 64,70 **** | 1004.3 | -34.84 | 1.2345678901234e-200 ! (4 rows) SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT8_TBL f --- 148,156 ---- | 1004.3 | -34.84 | 1.2345678901234e-200 ! | 0 ! | -0 ! (6 rows) SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT8_TBL f *************** *** 123,129 **** | -34.84 | 34.84 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 1.2345678901234e-200 ! (5 rows) -- truncate SELECT '' AS five, f.f1, %f.f1 AS trunc_f1 --- 209,217 ---- | -34.84 | 34.84 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 1.2345678901234e-200 ! | 0 | 0 ! | -0 | 0 ! (7 rows) -- truncate SELECT '' AS five, f.f1, %f.f1 AS trunc_f1 *************** *** 135,141 **** | -34.84 | -34 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 0 ! (5 rows) -- round SELECT '' AS five, f.f1, f.f1 % AS round_f1 --- 223,231 ---- | -34.84 | -34 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 0 ! | 0 | 0 ! | -0 | -0 ! (7 rows) -- round SELECT '' AS five, f.f1, f.f1 % AS round_f1 *************** *** 147,153 **** | -34.84 | -35 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 0 ! (5 rows) -- ceil select ceil(f1) as ceil_f1 from float8_tbl f; --- 237,245 ---- | -34.84 | -35 | 1.2345678901234e+200 | 1.2345678901234e+200 | 1.2345678901234e-200 | 0 ! | 0 | 0 ! | -0 | -0 ! (7 rows) -- ceil select ceil(f1) as ceil_f1 from float8_tbl f; *************** *** 158,164 **** -34 1.2345678901234e+200 1 ! (5 rows) -- floor select floor(f1) as floor_f1 from float8_tbl f; --- 250,258 ---- -34 1.2345678901234e+200 1 ! 0 ! -0 ! (7 rows) -- floor select floor(f1) as floor_f1 from float8_tbl f; *************** *** 169,175 **** -35 1.2345678901234e+200 0 ! (5 rows) -- sign select sign(f1) as sign_f1 from float8_tbl f; --- 263,271 ---- -35 1.2345678901234e+200 0 ! 0 ! -0 ! (7 rows) -- sign select sign(f1) as sign_f1 from float8_tbl f; *************** *** 180,186 **** -1 1 1 ! (5 rows) -- square root SELECT sqrt(float8 '64') AS eight; --- 276,284 ---- -1 1 1 ! 0 ! 0 ! (7 rows) -- square root SELECT sqrt(float8 '64') AS eight; *************** *** 231,237 **** | -34.84 | -3.26607421344208 | 1.2345678901234e+200 | 4.97933859234765e+66 | 1.2345678901234e-200 | 2.3112042409018e-67 ! (5 rows) SELECT '' AS five, FLOAT8_TBL.*; five | f1 --- 329,337 ---- | -34.84 | -3.26607421344208 | 1.2345678901234e+200 | 4.97933859234765e+66 | 1.2345678901234e-200 | 2.3112042409018e-67 ! | 0 | 0 ! | -0 | -0 ! (7 rows) SELECT '' AS five, FLOAT8_TBL.*; five | f1 *************** *** 241,247 **** | -34.84 | 1.2345678901234e+200 | 1.2345678901234e-200 ! (5 rows) UPDATE FLOAT8_TBL SET f1 = FLOAT8_TBL.f1 * '-1' --- 341,349 ---- | -34.84 | 1.2345678901234e+200 | 1.2345678901234e-200 ! | 0 ! | -0 ! (7 rows) UPDATE FLOAT8_TBL SET f1 = FLOAT8_TBL.f1 * '-1' *************** *** 263,272 **** ------+----------------------- | 0 | -34.84 | -1004.3 | -1.2345678901234e+200 | -1.2345678901234e-200 ! (5 rows) -- test for over- and underflow INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); --- 365,376 ---- ------+----------------------- | 0 | -34.84 + | 0 + | -0 | -1004.3 | -1.2345678901234e+200 | -1.2345678901234e-200 ! (7 rows) -- test for over- and underflow INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); ======================================================================