Day2-3 Itanium: T S Oracle Rdb 2006 4 4 2006 4 6 2005-2006, Oracle Corporation
VAX/Alpha IEEE Rdb IEEE SQL SQL SQL 2
: 12340000 = 1.234 x 10 7 ( ) -1.234 x 10 7-1.234 x 10 7-1.234 x 10 7 (10-2 = 1/100) SQL REAL FLOAT DOUBLE PRECISION 3
2 VAX Alpha Itanium IEEE 754 4
! 32 1.0*10 8 + 1.0 = 1.0*10 8 0.1 2 1.1001100 *2-4 1.0 1.0*10 8 10 8 1.0*10 8 1.0*10 8 + (1.0*10 8 x 1.0) 2.0*10 8 5
VAX/Alpha IEEE ( ) F 32 (8, 23) VAX Alpha S 32 (8, 24) Alpha Itanium D G T 64 (8, 55*) VAX Alpha* 64 (11, 53) VAX Alpha 64 (11, 54) Alpha Itanium.29*10-38 6 1.7*10 38 1.18*10-38 6 3.40*10 38 ( ) 0.29*10-38 16 * 1.7*10 38 0.56*10-308 15 0.90*10 308 2.23*10-308 15 1.80*10 308 6
OpenVMS VAX Alpha Itanium VAX VAX IEEE VAX IEEE IEEE IEEE VAX 7
Rdb 7.2 IEEE Rdb F/G S/T F/G Alpha F/G Itanium S/T - REAL FLOAT DOUBLE PRECISION Computed columns MSP /MPS FP (AVG STDDEV ) 8
Rdb 7.2 IEEE ( ) SQL> create table SALES_BY_SALESMAN ( cont> SALESMAN_ID char(5), cont> SALE_AMOUNT integer(2), cont> SALE_DATE date ) cont> ; SQL> create table SALESMAN_STATS ( cont> SALESMAN_ID char(5), cont> PERIOD_START date, cont> PERIOD_END date, cont> SALE_AVERAGE float, cont> BONUS computed by (SALE_AVERAGE * 2.0) ) cont> ; 9
Rdb 7.2 IEEE ( ) SQL> create module PROCESS_SALES language SQL cont> procedure COMP_SALES_AVE ( cont> :START_DATE date, :END_DATE date ); cont> begin cont> for :SM as each row of cont> read only table cursor SM_CURS for cont> select SALESMAN_ID, AVG(SALE_AMOUNT) SMA cont> from SALES_BY_SALESMAN cont> where (SALE_DATE >= :START_DATE and cont> SALE_DATE < :END_DATE) group by SALESMAN_ID cont> do cont> insert into SALESMAN_STATS values ( cont> :SM.SALESMAN_ID, :START_DATE cont> :END_DATE, SM.SMA); cont> end for; end; end module; 10
Rdb 7.2 IEEE ( ) SQL$PRE SQL$MOD IEEE Rdb 7.1.0.2 Alpha Itanium /FLOAT /FLOAT={D_FLOAT,G_FLOAT,IEEE_FLOAT} Itanium IEEE_FLOAT /(NO)G_FLOAT DSRI IEEE DSRI SQL RDO IEEE DSRI 11
Rdb 7.2 IEEE ( ) SQL Rdb IEEE VAX VAX DSRI IEEE VAX Itanium Rdb IEEE SQL DSRI Rdb VAX IEEE 12
Rdb 7.2 IEEE ( ) CDD IEEE CDD VAX RDML RDBPRE IEEE VAX DBMS IEEE VAX Itanium /FLOAT=G_FLOAT 13
IEEE (NaN) IEEE 754 NULL SQRT(-1.0) NaN NULL IEEE 754 ( ) 0 NaN F/G /IEEE_MODE=FAST 14
IEEE ( ) VAX/IEEE IEEE / F G IEEE VAX Round Even VAX FP Round Up IEEE Round Even Itanium IEEE 754 15
Round Up Round Even $ TYPE X.BAS declare decimal(7,3) pp declare integer pn pn = 116 pp = pn/10 print "pp1 = "; pp pn = 331 pp = pn/10 print "pp2 = "; pp 16
Round Up Round to Even ( ) VAX $ BASIC X $ LINK X $ RUN X pp1 = 11.6 pp2 = 33.099 Alpha (VAX float) $ BASIC X /REAL=SINGLE $ LINK X $ RUN X pp1 = 11.6 pp2 = 33.099 Alpha (IEEE float) $ BASIC X /REAL=SFLOAT $ LINK X $ RUN X pp1 = 11.599 pp2 = 33.1 Itanium $ BASIC X /REAL={any} $ LINK X $ RUN X pp1 = 11.599 pp2 = 33.1 17
/FLOAT /(NO)G_FLOAT SQL$MOD SQL$PRE Alpha Itanium IEEE IEEE /IEEE_MODE=FAST /FAST /MATH_LIBRARY=FAST 18
( ) Alpha OpenVMS 7.3-1 HP F/G Float OpenVMS 7.3-2 ( MTH$SQRT MTH$SQRT_F MTH$SQRT_G MTH$SQRT_S MTH$SQRT_T) HP OpenVMS Rdb 7.1.0.2 Alpha IEEE 19
BASIC BASIC SQL$PRE ( ) BASIC GFLOAT SFLOAT TFLOAT REAL SINGLE DOUBLE /REAL_SIZE - GFLOAT SFLOAT TFLOAT /SINGLE /DOUBLE REAL /REAL_SIZE 20
C C float 32 double 64 CC /FLOAT SQL$MOD SQL$PRE /FLOAT /IEEE_MODE=FAST 21
COBOL COBOL COMP-1 32 COMP-2 64 COBOL /FLOAT SQL$MOD SQL$PRE /FLOAT /IEEE_MODE FAST IEEE 754 22
FORTRAN FORTRAN real real*4 32 double precision real*8 64 C /FLOAT SQL$MOD SQL$PRE /FLOAT /IEEE_MODE=FAST /MATH_LIBRARY=FAST /FAST /IEEE 23
Pascal Pascal F_FLOAT D_FLOAT G_FLOAT S_FLOAT T_FLOAT REAL SINGLE 32 DOUBLE 64 /FLOAT Pascal FLOAT /IEEE_MODE 24
Rdb 7.2 SQL http://docs.hp.com/en/b3906-90005/ch02s02.html http://cch.loria.fr/documentation/ieee754/ http://cch.loria.fr/documentation/ieee754/acm/goldberg.pdf http://www.hp.com/products1/evolution/alpha_retaintrust/dow nload/i64-floating-pt-wp.pdf ( 2 CD ) www.oracle.com/rdb metalink.oracle.com http://h71000.www7.hp.com/ (OpenVMS ) john.howard@oracle.com 25
www.oracle.com/rdb