text: --
  -- FLOAT4
  --
  
  CREATE TABLE FLOAT4_TBL (id int, f1  float4);
  
  INSERT INTO FLOAT4_TBL(f1) VALUES ('    0.0');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30   ');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('     -34.84    ');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20');
  
  -- test for over and under flow
  INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70');
  
  -- bad input
  INSERT INTO FLOAT4_TBL(f1) VALUES ('');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('       ');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('5.   0');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('     - 3.0');
  INSERT INTO FLOAT4_TBL(f1) VALUES ('123            5');
  
  -- special inputs
  SELECT 'NaN'::float4;
  SELECT 'nan'::float4;
  SELECT '   NAN  '::float4;
  SELECT 'infinity'::float4;
  SELECT '          -INFINiTY   '::float4;
  -- bad special inputs
  SELECT 'N A N'::float4;
  SELECT 'NaN x'::float4;
  SELECT ' INFINITY    x'::float4;
  
  SELECT 'Infinity'::float4 + 100.0;
  SELECT 'Infinity'::float4 / 'Infinity'::float4;
  SELECT 'nan'::float4 / 'nan'::float4;
  SELECT 'nan'::numeric::float4;
  
  SELECT '' AS five, f1 FROM FLOAT4_TBL ORDER BY f1;
  
  SELECT '' AS four, f.f1 FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3' ORDER BY f1;
  
  SELECT '' AS one, f.f1 FROM FLOAT4_TBL f WHERE f.f1 = '1004.3';
  
  SELECT '' AS three, f.f1 FROM FLOAT4_TBL f WHERE '1004.3' > f.f1 ORDER BY f1;
  
  SELECT '' AS three, f.f1 FROM FLOAT4_TBL f WHERE  f.f1 < '1004.3' ORDER BY f1;
  
  SELECT '' AS four, f.f1 FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1 ORDER BY f1;
  
  SELECT '' AS four, f.f1 FROM FLOAT4_TBL f WHERE  f.f1 <= '1004.3' ORDER BY f1;
  
  SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f
     WHERE f.f1 > '0.0' ORDER BY f1;
  
  SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f
     WHERE f.f1 > '0.0' ORDER BY f1;
  
  SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f
     WHERE f.f1 > '0.0' ORDER BY f1;
  
  SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f
     WHERE f.f1 > '0.0' ORDER BY f1;
  
  -- test divide by zero
  SELECT '' AS bad, f.f1 / '0.0' from FLOAT4_TBL f;
  
  SELECT '' AS five, f1 FROM FLOAT4_TBL ORDER BY f1;
  
  -- test the unary float4abs operator 
  SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f ORDER BY f1;
  
  UPDATE FLOAT4_TBL
     SET f1 = FLOAT4_TBL.f1 * '-1'
     WHERE FLOAT4_TBL.f1 > '0.0';
  
  SELECT '' AS five, f1 FROM FLOAT4_TBL ORDER BY f1;
  