(cache)Add./Sub. Desgin

$BIbF0>.?tE@2C;;1i;;(B

$B%^%C%/%9=q$-$+$1!#(B

To Do After Bachelor Thesis

Tininess $B$N%]%j%7!<$r(B After Rounding $B$+$i(B Before Rounding $B$KJQ99$9$k!#(B $B$=$7$F!"%P%0


$BFC

$BB4O@D>A0$K$d$C$?$@$1$"$C$F!"JQ99$NI,MWL5$7!#(B

$B$3$3$GFCE*$K%"%5!<%H$5$l$k(B 4 $B%S%C%H$GF~NO$N>uBV$r7hDj$9$k!#F~NO%*%Z%i%s(B $B%I$O(B 2 $B$D$J$N$G!"$3$NItJ,$O(B 8 $B%S%C%H$G9=@.$5$l$k!#2C8:;;$N>l9g$O99$KM-(B $B8B?t$G$"$k(B 2 $B?t$N@dBPCM$,Ey$7$$M-8B?t$+$I$&$+$rH=CG$9$k%S%C%H(B 1 $B%S%C%H(B $B$rN)$F$F!"7W(B 9 $B%S%C%H$G9=@.$5$l$k!#3F(B 4 $B%S%C%H$K$D$$$F!"A4$F$N%S%C%H$,(B $BN)$C$F$$$J$1$l$P!"$=$l$ODL>o$NM-8B?t$r0UL#$9$k!#0J2<$N;EMM$K4p$E$$$F:n(B $B$k!#(B

$B7k2L(B / $BNc300lMw(B
$B1i;;$B7k2L(B$BNc30(B
SNaN $B!^(B SNaN
SNaN $B!^(B QNaN $B$H(B QNaN $B!^(B SNaN
SNaN $B!^(B 0 $B$H(B 0 $B!^(B SNaN
SNaN $B!^(B Inf $B$H(B Inf $B!^(B SNaN
SNaN $B!^(B W $B$H(B W $B!^(B SNaN
(+Inf) + (-Inf) $B$H(B (+Inf) - (+Inf)
(-Inf) + (+Inf) $B$H(B (-Inf) - (-Inf)
QNaNV
QNaN $B!^(B QNaN
QNaN $B!^(B 0 $B$H(B 0 $B!^(B QNaN
QNaN $B!^(B Inf $B$H(B Inf $B!^(B QNaN
QNaN $B!^(B W $B$H(B W $B!^(B QNaN
QNaN-
(+Inf) + (+Inf) $B$H(B (+Inf) - (-Inf)
(+Inf) + W $B$H(B (+Inf) - W
W + (+Inf) $B$H(B W - (-Inf)
(+Inf) + 0 $B$H(B (+Inf) - 0
0 + (+Inf) $B$H(B 0 - (-Inf)
+Inf -
(-Inf) - (+Inf) $B$H(B (-Inf) + (-Inf)
(-Inf) + W $B$H(B (-Inf) - W
W - (+Inf) $B$H(B W + (-Inf)
(-Inf) + 0 $B$H(B (-Inf) - 0
0 - (+Inf) $B$H(B 0 + (-Inf)
-Inf -
W + 0 $B$H(B W - 0
0 + W
( + ) W-
0 - W- W-
(+0) + (+0) $B$H(B (+0) - (-0) +0-
(+0) + (-0) $B$H(B (+0) - (+0)
(-0) + (+0) $B$H(B (-0) - (-0)
(+A) - (+A) $B$H(B (+A) + (-A)
(-A) - (-A) $B$H(B (-A) + (+A)
RN,RZ,RP $B$J$i(B +0
RM $B$J$i(B -0
-
(-0) + (-0) $B$H(B (-0) - (+0) -0-
(+A) + (+A) $B$H(B (+A) - (-A)
(-A) - (+A) $B$H(B (-A) + (-A)
W + Z $B$H(B W - Z
?(W,Inf,0)?(O,U,I)
V : Invalid Operation , O : Overflow , Z : Zero Divide , U : Underflow , I : Inexcact

W , Z$B$O!"$I$A$i$bHs%<%m$NM-8B$J!"@dBPCM$N0[$J$k(B ( $BId9fIU$-$N(B ) $BCM$H$9(B $B$k!#$^$?!"Hs%<%m$NM-8B?tCM$N@dBPCM$r(B A $B$H=q$$$F$$$k!#$=$7$F!"(B 2 $B$D$NM-(B $B8B?t$N%*%Z%i%s%I$N@dBPCM$,Ey$7$$$H$-$O!"(BW $B$d(B Z $B$G$O$J$/(B A $B$rMQ$$$FH=CG(B $B$r9T$$!"(BA $B$rMQ$$$k$H$-$OI,$:Id9f$r$D$1$F=q$$$F$$$k!#$d$d$3$7$$$N$GCm0U!#(B

$B$J$*!"9g@.7k2L$O(B 1707 $B%2!<%H$N(B 10.099 ns


fp_adder $B%H%C%W%l%Y%k3,AX$N%b%8%e!<%k(B

$BIbF0>.?tE@2C8:;;$N%H%C%W3,AX$O%b%8%e!<%k(B fp_adder $B$G$"$j!"$=$N9=@.%b%8%e!<(B $B%k$O0J2<$NDL$j!#(B

fadd_1 $B$r9=@.$9$k%b%8%e!<%k(B
$B%b%8%e!<%kL>(B$B%/%m%C%/(B$B2<0L3,AX(B $B%2!<%H?t(B $B%/%j%F%#%+%k%Q%9(B[ns]
fadd_1$BMW(B$BM-(B12,50118.069
fadd_2$BMW(B$BM-(B5,53017.090
fadd_3$BITMW(B$BM-(B2,785 7.705

$B$D$^$s$J$$!#3F%9%F!<%8Kh$K%b%8%e!<%k$r3d$C$F$"$k$@$1!#Bh(B3$B%9%F!<%8$@$1(B $B$O!"$3$N$^$^>e0L3,AX$N%^%k%A%W%l%/%5$rDL$7$F$+$i%i%C%A$r$+$1$k$?$a!"(B $BAH$_9g$o$;2sO)$K$J$C$F$$$k!#B>$O%i%C%A9~$_$N9g@.7k2L!#(B


fadd_1 $B3,AX$N%b%8%e!<%k(B

fadd_1 $B$r9=@.$9$k%b%8%e!<%k(B
$B%b%8%e!<%kL>(B$B%/%m%C%/(B$B2<0L3,AX(B $B%2!<%H?t(B $B%/%j%F%#%+%k%Q%9(B[ns]
fadd_split$BITMW(B$BL5(B 1981.866
fadd_exception$BITMW(B$BL5(B 158710.573
fadd_far_1$BMW(B$BM-(B 3458($B13(B)14.461($B13(B)
fadd_clo_1$BMW(B$BM-(B 354111.135


fadd_2 $B3,AX$N%b%8%e!<%k(B

fadd_2 $B$r9=@.$9$k%b%8%e!<%k(B
$B%b%8%e!<%kL>(B$B%/%m%C%/(B$B2<0L3,AX(B $B%2!<%H?t(B $B%/%j%F%#%+%k%Q%9(B[ns]
fadd_split$BITMW(B$BL5(B 1981.866
fadd_exception$BITMW(B$BL5(B 158710.573
fadd_far_1$BMW(B$BM-(B 3458($B13(B)14.461($B13(B)
fadd_clo_1$BMW(B$BM-(B 354111.135


fadd_3 $B3,AX$N%b%8%e!<%k(B

fadd_3 $B$r9=@.$9$k%b%8%e!<%k(B
$B%b%8%e!<%kL>(B$B%/%m%C%/(B$B2<0L3,AX(B $B%2!<%H?t(B $B%/%j%F%#%+%k%Q%9(B[ns]
fadd_split$BITMW(B$BL5(B 1981.866
fadd_exception$BITMW(B$BL5(B 158710.573
fadd_far_1$BMW(B$BM-(B 3458($B13(B)14.461($B13(B)
fadd_clo_1$BMW(B$BM-(B 354111.135

module add_expdiff(ea,eb,ls,df,be,eq);
        input [10:0] ea,eb;
        output ls; // less : ea < eb 
        output [10:0] df; // diff : abs(ea-eb)
        output [10:0] be; // larger exp of ea,eb 
        output eq; // equal : ea = eb

$BF~NO%*%Z%i%s%I$N;X?tIt(B ea , eb $B$rF~NO$H$7$F(B
  1. $B;X?t$NBg>.(B ( ea < eb $B$J$i(B ls $B!"(B ea = eb $B$J$i(B eq $B$rN)$F$k(B )
  2. $B;X?t$N:9$N@dBPCM(B ( diff )
  3. $BBg$-$$J}$N;X?t$NCM(B ( be )
$B$rJV$9!#(B

module add_unpack(allorea,alloreb,fa,fb,upfa,upfb);
        input allorea,alloreb;
        input [51:0] fa,fb;
        output [52:0] upfa,upfb; // unpacked fa/fb

$B%G%N!<%^%k$N:]!"IaDL$K%"%s%Q%C%/$r9T$&$H!"0lHV:8$K(B 0 $B$r(B 1 $B%S%C%HA^F~$9(B $B$k$,!"$3$3$G$O!"0lHV1&$K(B 0 $B$rA^F~$7$F$$$k!#8e$G%7%U%?$K$+$1$k:]!"$3$N(B $BItJ,$,$A$c$s$HD4@0$5$l$F=PNO$5$l$k!#(B


$B6a$$CMF1;N$N8:;;2sO)(B : CLOSE path

$B$^$:!"%G%N!<%^%k$N;~$N;X?t$NCM$O!"(BEmin - 1 ( = 0 ) $B$G$O$J$/!"(BEmin ( = 1 ) $B$H$7$F9M$($k$3$H$K$9$k!#(B
$B$=$7$F!"Nc30%Q%9$O$H$j$"$($:L5;k$7$F!"$3$N%Q%9$,

  • $B;X?t$N:9$,(B 0 $B$N$b$N(B ( $B$D$^$j%G%N!<%^%kF1;N$N8:;;$r4^$`(B )
  • $B;X?t$N:9$,(B 0 $B$G$J$/!"7eMn$A$,(B 2 $B%S%C%H0J>e$"$k8:;;(B $B$G$"$k!#$^$?!"8er7o$rK~$9$b$N$O!";X?t$N:9$,(B 1 $B$N$H$-$@$1$J$N$G(B ( = $B;X?t$N:9$,(B 2 $B0J>e$N>l9g!"7eMn$A$O(B 2 $B%S%C%H0J>e5/$3$i$J$$$N$G(B )
    • $B;X?t$N:9$,(B 1 $B$G!"7eMn$A$,(B 2 $B%S%C%H0J>e$"$k8:;;(B
    $B$H!"(B( $BEy2A$K(B ) $BCV$-49$($k$3$H$,$G$-$k!#(B $B$7$+$7!"$3$3$G>/$7>r7o$rJQ99$7$F(B
    • $B;X?t$N:9$,(B 1 $B$G!"7eMn$A$,(B 1 $B%S%C%H0J>e$"$k8:;;(B
    $B$H!"(BCLOSE $B$N%+%P!<$9$kHO0O$r9-$2$F$7$^$&$3$H$K$7$?!#$3$l$K$h$C$F!"(BFAR path $B$G$O!"8:;;$K$h$C$F!"@55,2=?t$+$i%G%N!<%^%k$KMn$A$k$H$$$&%1!<%9$r(B $B9M$($kI,MW$,L5$/$J$k!#(B
    ( $B;X?t$N:9$,(B 2 $B0J>e$N$H$-$O!"7eMn$A$,9b!9(B 1 $B%S%C%H$^$G$G!"Bg$-$$J}$N;X(B $B?t$r(B 1 $B$@$10z$$$?$H$3$m$G!":9$,(B 2 $B0J>e$"$k$N$G!"$=$NCM$O%G%N!<%^%k$K$O(B $B$J$i$J$$(B )

    $BC4Ev%Q!<%H(B ( $BNc30%Q%9$r=|$/(B )
    $B7eMn$A%S%C%H?t(B$B;X?t$N:9(B ( $B"((B )$B$BC4Ev(B
    -( don't care ) ADD ( 1 )FAR
    ( don't care )
    0
    2 $B0J>e(B
    1
    SUB ( 0 )FAR
    1$B0J>e(B
    ( don't care )
    1
    0
    SUB ( 0 )CLOSE
    $B"(%G%N!<%^%k$N;X?t$O(B Emin $B$H$7$?$H$-(B

    $B$A$J$_$K!"$3$N>r7o$NJQ99$K$h$C$F!"(BEmin $B$N@55,2=?t$H%G%N!<%^%k$N8:(B $B;;$G!"7eMn$A$r$9$k$b$N$b%+%P!<$9$kI,MW$,@8$8$?!#(B ( $B$"$?$j$^$((B )

    $B>r7oKh$K!"LdBjE@$r@v$C$F$_$k!#(B

    1. $B;X?t$N:9$,(B 0 $B$G!"$+$D@55,2=?tF1;N$N8:;;(B

      $B:#$N$H$3$mLdBjL5$7!#(B

    2. $B;X?t$N:9$,(B 0 $B$G!"$+$D%G%N!<%^%kF1;N$N8:;;(B

      $B$3$N;~E@$G$O!"%"%s%Q%C%/2sO)$r(B FAR path $B$N$=$l$HJ,N%$7$F!"C1=c$J2sO)$rAH$`$3$H$K(B $B%a%j%C%H$,$"$k!#(B ( $B$3$3$^$GC1=c$@$H$b$O$d%b%8%e!<%k$K$9$k2ACM$,$J$$(B )
      $B$D$^$j@55,2=?tF1;N$N;~$H!">.?tE@$N0LCV$rJQ99$7$J$$J}$,$$$$$h$&$J5$$,$9$k!#(B

    3. $B;X?t$N:9$,(B 1 $B$G!"$+$D@55,2=?tF1;N$N8:;;(B

      $B>.?tE@$r8GDj$9$l$P!"LdBjL5$$$h$&$K8+$($k!#(B

      $B$3$N8e!"H=CG$7$J$1$l$P$J$i$J$$$N$,!"7eMn$A$,$"$C$?$+$I$&$+$G$"$k!#$b$7(B $B$b7eMn$A$,5/$-$J$1$l$P!"4]$a$NI,MW@-$,@8$8$k$?$a!"(BCLOSE path $B$G$O

    4. $B;X?t$N:9$,(B 1 $B$G!"0lJ}$,:G>.;X?t$N@55,2=?t$G!"0lJ}$,%G%N!<%^%k$N;~(B

      $BLdBj$J$5$=$&!#$`$7$m$3$l$O;X?t$N:9$,(B 0 $B$N%+%F%4%j$KAH$_F~$l$k$Y(B $B$-$G$O$J$$$+!)(B ( = $B7k2L$K4X$o$i$:(B CLOSE path $B$r:NMQ$9$k(B )
      $B$H$$$&$N$O!"$3$N>l9g!">o$K4]$a$NI,MW$,L5$$$+$i$G$"$k!#(B

    $B$J$<$3$l$^$GG:$s$G$$$?$N$@$m$&!)$J$s$J$s$@$$$C$?$$(B

    $B3F%b%8%e!<%k$K$D$$$F(B

    • $B;X?t$N:9$+$i!"I,MW$J>pJs$r

      module add_clo_comparexp(ea,eb,eq,og,ol,be);
              input [10:0] ea,eb;
              output eq; // equal : ea2 = eb2
              output og; // one greater : ea2 = eb2 + 1 
              output ol; // one lesser  : eb2 = ea2 + 1
              output [10:0] be; // bigger exp of ea,eb
      

      $BF~NO$N;X?t(B EA , EB $B$+$i(B

      1. eq ( EQual ) : $BEy$7$$$+$I$&$+(B
      2. og ( One Greater ) : EA $B$,(B EB $B$h$j(B 1 $B$@$1Bg$-$$$+(B
      3. ol ( One Lesser ) : EB $B$,(B EA $B$h$j(B 1 $B$@$1>.$5$$$+(B
      4. be ( Bigger Exp ) : EA , EB $B$NFb!"Bg$-$$J}(B
      $B$rJV$9!#4{$K=q$$$?$h$&$K!"(BEA , EB $B$O%G%N!<%^%k$N$H$-!"(B 1 $B$H$_$J$7$FHf(B $B3S$r9T$C$F$$$k!#(B $B
      • $B;X?t$N:9$rM=A[$7$F!"JBNs$K8:;;$r9T$&(B ( add_clo_adder )

      module add_clo_adder(upfa,upfb,sa,ndga,ndgb,odga,odgb);
              input [52:0] upfa,upfb; // unpacked FA/FB
              input sa; // sign of FA
              output [54:0] ndga,ndgb,odga,odgb; 
              // No/One-Differnce, Greater-FA/FB  with sign ( MSB )
      

      $B%"%s%Q%C%/$7$?2>?t(B ( upfa , upfb ) $B$r85$K!"%S%C%H%7%U%H$NM-L5$H2>?t$N(B $B@dBPCM$NBg>.$rM=A[$7$F(B 4 $BDL$j$N8:;;=PNO$rJV$9!#6qBNE*$K$O(B

      • $B;X?t$K:9$,$J$/!"(BFA > FB $B$H2>Dj$7$?$H$-(B ( NDGA : No Difference , Greater fA )
      • $B;X?t$K:9$,$J$/!"(BFA < FB $B$H2>Dj$7$?$H$-(B ( NDGB : No Difference , Greater fB )
      • $B;X?t$K(B 1 $B%S%C%H$@$1:9$,$"$j!"(BFA > FB $B$H2>Dj$7$?$H$-(B ( ODGA : One Difference , Greater fA )
      • $B;X?t$K(B 1 $B%S%C%H$@$1:9$,$"$j!"(BFA < FB $B$H2>Dj$7$?$H$-(B ( ODGB : One Difference , Greater fB )
      $B$r7W;;$7$F!"8e$GA*Br$9$k!#$=$7$F$=$l$HF1;~$K!"(B 4 $BDL$j$N3F!9$K$D$$$FId(B $B9f$O0l0U$K7h$^$C$F$7$^$&$?$a!"$D$$$G$K=PNO$N(B MSB $B$rId9f%S%C%H$H$7$F$$(B $B$k!#(B

      $BId9f$K$D$$$F(B

      CLOSE $B$K$*$$$F!"JV$9Id9f$O0J2<$NDL$j!#(B

      MSBofNDGAeqogolSign
      ( don't care )001! SA
      ( don't care )010SA
      0
      1
      100SA
      ! SA

      MSBofNDGA $B$O!"7e$,F1$8$G!"(Bfa > fb $B$H2>Dj$7$?$H$-$N8:;;7k2L(B NDGA $B$N(B MSB $B$G!"(BSA $B$OF~NO(B A $B$NId9f$G$"$k!#(B

      $B$J$*!"8:;;$N7k2L$,(B 0 $B$K$J$C$F$7$^$C$?>l9g!"Id9f$O4]$a%b!<%IEy$b9MN8$7(B $B$?$b$N$K$J$j!">e5-$NI=$OE,MQ$5$l$J$$!#(B
      ( $B$3$N>l9g$O $B$3$3$GLdBj$,0l$DH/@8!#(B

      $B;X?t$,!":GDc$NCM$H%G%N!<%^%k$N>l9g!"$D$^$j$=$l$O(B Emin $B$H(B Emin - 1 ( $B=$(B $B@5$7$F(B Emin $B$H$J$k(B ) $B$N$H$-$J$N$@$,!"$=$N$H$->eI=$G$O$&$^$/$$$+$J$$!#(B
      ( $B:G>.;X?t$H%G%N!<%^%k$H$N8:;;$G!"7eMn$A$,L5$$>l9g$K@5$7$/$J$$(B )

      $B$$$m$$$mBP1~ $B??M}CMI=$K!"2>?t$N(B MSB $B$G$"$k(B MSBofFA $B$H(B MSBofFB $B$r2C$($F=$@5$9$k!#(B

      $B$D$$$G$K!"JBNs$K7W;;$7$?(B 4 $BDL$j$N8:;;$N7k2L$N$I$l$rA*Br$9$l$P$$$$$+$b(B $B=q$$$F$*$/!#(B

      MSBofNDGAMSBofFAMSBofFBeqogolSignSelect
      ( don't care )( don't care )( don't care )001! SAODGB
      ( don't care )( don't care )( don't care )010SAODGA
      ( don't care )10100SANDGA
      ( don't care )01100! SANDGB
      0
      1
      00100SA
      ! SA
      NDGA
      NDGB
      0
      1
      11100SA
      ! SA
      NDGA
      NDGB

      $B$3$3$G5$$E$/!#Id9f$NA*Br$H!"(B4 $B$D$N8:;;7k2LA*Br$O!"FHN)$K9T$&$Y$-$G$O$J$$!#(B 4 $BDL$j$N7W;;$r$7$?;~E@$G!"Id9f$,7h$^$C$F$$$k$N$G!"(B4 $BDL$j$N7W;;$r9T$C$?(B $B$H$-$KId9f%S%C%H$rDI2C$7$F!"7W;;$rA*Br$9$l$P!"Id9f$bF1;~$K7W;;$5$l$k!#(B

      $B2>Dj$7$?8:;;7k2L$HId9f$NBP1~$O0J2<$NDL$j!#$3$l$G7k2L$rA*Br$9$l$P@5$7$$(B $BId9f$b0l=o$KF@$k$3$H$,$G$-$k!#(B

      SubtractSign
      NDGASA
      NDGB~SA
      ODGASA
      ODGB~SA

      $B$D$^$j!"

    • $B;X?t$N:9$H2>?t$NBg>.$rM=B,$7$F!"(BNDGA , NDGB , ODGA , ODGB $B$N(B 4 $BDL$j$N8:;;$r$9$k!#0l=o$KId9f$b7W;;$9$k(B
    • $B$=$NN"$G!";X?t$N:9$r7W;;$7$F(B eq , og , ol $B$r5a$a$k(B
    • MSBofNDGA , MSBofFA , MSBofFB , eq , og , ol $B$r@)8f?.9f$H$7$F(B 4 $BDL$j$NEz$($N$&$A(B 1 $B$D$rA*Br$9$k!#$9$k$H@5$7$$Id9f$b$*$^$1$GA*Br$5$l$k(B $B$H$J$k!#>e5-(B 2 $BI=$K4p$E$$$F(B

      • $BJBNs$K7W;;$7$?(B 4 $BDL$j$N8:;;7k2L(B ( $BId9f$N>pJsIU$-(B ) $B$rA*Br$9$k(B ( add_clo_mux )

      module add_clo_mux(ndga,ndgb,odga,odgb,msbfa,msbfb,og,ol,sc,fc);
              input [54:0] ndga,ndgb,odga,odgb; // MSB is signbit
              input msbfa,msbfb; // MSBofFA , MSBofFB
              input og,ol; // equal is not needed by using don't care
              output sc; // sign of result
              output [53:0] fc; // mantissa of result
      

      $B$r@_7W$9$k!#F~NO$K;X?t$,F1$8$+$I$&$+$H$$$&?.9f(B eq $B$,L5$$$,!"$3$l$O!"(B og = ol = 0 $B$N$H$-$O(B eq $B$,N)$C$F$$$k$H2>Dj$7$F7W;;$7$F$$$k$?$a$G$"$k!#(B
      ( $BK\Ev$K(B eq $B$@$C$?$+$I$&$+$O!"

      • $B7W;;$7$?CM$,@5$7$$CM$+$I$&$+(B ( $B$3$N%Q%9$N7k2L$r:NMQ$9$k$+$I$&(B $B$+(B ) $B$r7hDj$9$k(B ( add_clo_valid )

      module add_clo_valid(msbfc,og,ol,eq,ecmd,valid);
              input msbfc; // MSB of FC
              input og,ol,eq; 
              input ecmd; //  effective command ( sub : 0 , add : 1 )
              output valid; // this calc is valid / invalid
      

      CLOSE path $B$,%+%P!<$9$k%*%Z%i%s%I$NHO0O$OA0=R$NDL$j$@$,!"(B add_clo_valid $B$O!"6qBNE*$K$=$l$rH=CG$9$k2sO)!#2~$a$F$=$N>r7o$r=q$1$P(B

      1. $B ( $B$"$?$j$^$($@$,8+F($9$HHa;4(B )

      2. add_clo_comparexp $B$N=PNO(B eq $B$,N)$C$F$$$k(B
        $B$b$7$/$O!"(B og , ol $B$N$I$A$i$+$,N)$C$F$$$F!"$=$N$H$-7eMn$A$,$"$C$?$H$-!#(B

        $B7eMn$A$,$"$k$H$$$&$3$H$O!"8:;;7k2L$N(B MSB ( MSBofFC ) $B$,(B 0 $B$H$$$&$3$H!#(B
        $B$J$*!"(B MSB $B$,(B 1 $B$G$b(B LSB $B$,(B 0 $B$J$i!"4]$a$r9T$&I,MW$,$J$/!"(B CLOSE $B%Q%9$G$b(B $B%+%P!<$O2DG=$G$"$k!#$b$7(B FAR $B$G2?$+$,5/$-$?$i;H$&$3$H$K$9$k$,!":#$N$H$3$m$O(B LSB $B$O;H$o$J$$$3$H$K$9$k!#(B
        ( $B$^$?!"(Beq $B$N$H$-$O!"(BMSBofFC = 1 $B$H$J$k$H$-$b$"$k(B ( $B%G%N!<%^%kMm$_(B ) $B$,!"$7$+$7(B LSBofFC $B$OI,$:(B 0 $B$K$J$k$3$H$KCm0U(B )

      $B$H$J$k!#??M}CMI=$O0J2<$NDL$j!#(B

      MSBofFCog | oleqecmd CloseValid
      ( don't care )( don't care )( don't care ) 1 0
      ( don't care )( don't care )1 0 1
      ( don't care ) 0 0 0 0
      0 1 0 0 1
      1 1 0 0 0
      ecmd $B$OM-8z1i;;$G!"(Bsub $B$J$i(B 0 $B$G!"(Badd $B$J$i(B 1

      • $B@55,2=%7%U%H$K2?%S%C%HI,MW$+$rD4$Y$k(B ( add_clo_encode )

      module add_clo_encode(in,encode);
              input [53:0] in;
              output [5:0] encode;
      

      $B$?$@$N%(%s%3!<%@!#$3$N=PNO$rMQ$$$F!"%G%N!<%^%k$KMn$A$?$H$-$b9MN8$7$?!"(B $B%7%U%H?t$r7W;;$9$k!#(B

      • $B;X?t$r%(%s%3!<%I=PNO$K4p$E$$$FD4@a$9$k(B ( add_clo_adjexp )

      module add_clo_adjexp(be,encode,ec,shift);
              input [10:0] be; // Bigger Exp
              input [5:0] encode; // encoded value
              output [10:0] ec; // result exp ( denormal -> ec = 0 )
              output [5:0] shift; // shift bit
      

      $B;X?t(B be ( Bigger Exp ) $B$H%b%8%e!<%k(B add_clo_encode $B$N=PNO(B encode $B$+$i!"(B $BD4@a$7$?;X?t(B ec $B$H:G=*CJ$G%7%U%H$9$Y$-%S%C%H?t(B shift $B$r7W;;$9$k!#(B $B$J$*!"=iCJ$N(B add_clo_comparexp $B$G!"%G%N!<%^%k$N$H$-$N;X?tIt$NCM$r(B Emin ( = 1 ) $B$K=$@5$7$?$,!"$3$3$G$^$?%G%N!<%^%k$N>l9g$O(B Emin - 1 ( = 0 ) $B$K(B $BLa$9!#(B
      be $B$H(B encode $B$N:9$GH=CG$9$k(B

      be - encodeecshift
      1 $B0J>e(B be - encode encode
      0 $B0J2<(B 0 be - 1

      • $B%7%U%H$r9T$&(B ( add_clo_shift )

      module add_clo_shift(in,shift,out);
              input [53:0] in;
              input [5:0] shift;
              output [53:0] out;
      

      $BF~NO(B 54 $B%S%C%H$N$&$A$,$-$A$s$H$7$F$$$J$$$H$3$3$G%P%0$k!#(B
      ( $B$b$C$H$b!"(BMSB $B$r(B underflow $B$NH=CG$K;H$C$F$$$k$,(B )

      $B$^$?!"(BCLOSE path $B$H$OD>@\4X78L5$$$,!"(BEXCEPTION path $B$H!"(BCLOSE path$B$N$I(B $B$A$i$N7k2L$r;HMQ$9$k$+$r$3$NCJ3,$G7hDj$7$F$7$^$&!#$3$NCJ3,$G9T$&:,5r$O(B

      EXCEPTION path $B$N $B$H$$$&2>Dj$K4p$E$$$F$$$k!#B($A!"$3$NCJ3,$G$O(B FAR path $B$N7W;;$O(B $B=*N;$7$F$$$J$$$H$$$&2>Dj$G$"$k!#(B

      • EXCEPTION path $B$H(B CLOSE path $B$N$I$A$i$+$rA*Br$9$k(B ( add_clo_excorclo )

      module add_clo_excorclo(
      excvalid,se,ee,fe,ive,ofe,ufe,iee,
      sc,ec,fc,ufc,
      so,eo,fo,ivo,ofo,ufo,ieo);
      
          input excvalid;
          input se;
          input [10:0] ee;
          input [51:0] fe; // economized expression
          input ive,ofe,ufe,iee;
          // invalid , pverflow , underflow , inexact flag
      
          input sc;
          input [10:0] ec;
          input [51:0] fc; // economized expression
          input ufc;
          // invalid , pverflow , underflow , inexact flag
      
          output so;
          output [10:0] eo;
          output [51:0] fo; // economized expression
          output ivo,ofo,ufo,ieo;
          // invalid , pverflow , underflow , inexact flag
      
      $B0J2<$NI=$K=>$&$h$&$K2r$NA*Br$r$9$k!#(BEXCEPTION path $B$,M-8z$+$I$&$+$r<((B $B$7$F$$$k%S%C%H(B ExcValid $B$O!":GM%@h8"$r;}$A!"B3$$$F(B CLOSE path $B$,M%@h8"(B $B$r;}$D!#$=$N$I$A$i$bL58z$G$"$C$?$H$-$K=i$a$F(B FAR path $B$,M-8z$HG'$a$k$3(B $B$H$,$G$-$k!#(B

      $B:G=*2r$NA*BrI=(B ( EXCEPTION or CLOSE )
      ExcValidCloValidSelected
      1( don't care )Exception path
      01CLOSE path
      00FAR path

      $B CLOSE path $B$N9g@.7k2L(B

      $B%b%8%e!<%kL>(Bcost prim.$B;~4V(B (ns)$BI,MW?t(B $B>.7W(B prim.
      add_clo_comparexp 481 5.9351 481
      add_clo_adder 2848 8.8881 2848
      add_clo_mux 370 2.3041 370
      ($B$3$3$^$G$N(B
      $BAH$_9g$o$;2sO)(B )
      3518 10.7141 3518
      add_clo_valid 4 0.9881 4
      add_clo_encode 371 7.2531 371
      add_clo_adjexp 247 5.9111 247
      add_clo_shift 804 4.7821 804
      ($B$3$3$^$G$N(B
      $BAH$_9g$o$;2sO)(B )
      5122 27.9151 5122
      add_clo_excorclo 2091.9931 209
      no clock, opt area -high, opt timing -high $B$K$F9g@.(B
      [ primitive cost $B!_(B $BI,MW?t(B ] $B$G!"(B
      $BI,MW$J(B primitive cost $B$,7W;;$G$-$k!#(B


      $B7e9g$o$;%7%U%H$,I,MW$J1i;;(B : FAR path

      $B$3$3$G$b!"%G%N!<%^%k$N;~$N;X?t$O(B Emin ( = 1 ) $B$H$7$F9M$($k!#(B

      $B%+%P!<$9$kHO0O$O!"(BCLOSE path $B0J30$N$b$NA4$F(B ( $BNc30%Q%9$bEvA3=|$/(B )$B!#(B $B6qBNE*$K$O(B

      • $BA4$F$N2C;;(B
      • $B;X?t$N:9$,(B 2 $B0J>e$N8:;;(B
      • $B;X?t$N:9$,(B 1 $B$G!"7eMn$A$,L5$$8:;;(B

      $B$G$"$k!#(B

      $B3F%b%8%e!<%k$K$D$$$F(B
      • $BF~NO$+$i!";X?t$N:9$K4X$9$k>pJs$rF@$k(B ( add_far_comparexp )
      module add_far_comparexp(ea,eb,be,df,ls);
              input [10:0] ea,eb;
              output [10:0] be; // bigger exp
              output [10:0] df; // difference : abs( ea - eb ) 
              output ls; // less : ea < eb 
      

      $BF~NO$G$"$k(B 2 $B$D$N;X?tIt$NCM(B ea , eb $B$+$i(B

      1. 2 $B$D$N$&$A!"Bg$-$$J}$NCM(B be ( Bigger Exponent field )
      2. $B:9$N@dBPCM(B df ( Difference )
      3. ea < eb $B$N$H$-$K(B 1 $B$rJV$9(B ls ( Less )
      $B$r7W;;$9$k!#(B( CLOSE path $B$H0c$C$F!"(Beq $B$OB?J,;H$o$J$$$H;W$&(B )
      CLOSE path $BF1MM!"%G%N!<%^%k$N$H$-$N;X?tIt$NCM$O(B Emin - 1 ( = 0 ) $B$G$O$J$/!"(B Emin ( = 1 ) $B$H$7$F07$$!"(Bbe $B$b!"$=$l$rJV$9!#(B

      $B$H;W$C$?$i!"LdBjH/@8(B

      $B%G%N!<%^%k$r40A4$K(B Emin $B$H$7$F07$&$H!"2>?t$NBg>.$,$O$C$-$j$7$F$$$k$K$b(B $B$+$+$o$i$:$o$+$i$J$/$J$C$F$7$^$&%1!<%9$,H/@8$9$k!#(B FAR path $B$N8:;;$O!"2>?t$N@dBPCM$NBg>.(B $B$,40A4$KJ]>Z$5$l$F$$$kI,MW$,$"$k$,!"F~NO$K(B Emin $B$H(B Emin - 1 $B$,F~$C$F$-(B $B$?$H$-$K!"?t$N%9%o%C%Q$G@5$7$5$,J]>Z$5$l$J$/$J$k!#(B
      ( $B$=$b$=$b!"(BEmin - 1 -> Emin $B$KpJsNL(B $B$,Mn$A$F$$$k(B )

      $B$3$l$KBP=h$9$k$?$a!"Hf3S:n6H(B ( ls $B$N7W;;(B ) $B$@$1$K$D$$$F$O!"%G%N!<%^%k(B $B$G$bJQ49$9$k$3$H$J$/Hf3S$r$7$F!"(B be $B$H(B df $B$K4X$7$F$O!"(BEmin - 1 $B$r(B Emin $B$KJQ49$7$?$H$_$J$7$F7W;;$9$k$3$H$K$9$k!#(B

      $B$H;W$C$?$i!"$d$C$Q$jI,MW$J$$(B

      $B$^$:$$ItJ,$O CLOSE path $B$N(B add_clo_comparexp $B$H!"A4$/F1$8F/$-$r$9$kF1L>$N?.9f$,$"$k(B $B$,!":#$N$H$3$mJL!9$K:n$C$F$$$k!#$"$^$j%a%j%C%H$OL5$$$,!"$a$s$I$/$5$$$N(B $B$GJ,$1$F$"$k!#3Z!#(B

      • $B;X?t$N:9$N>pJs$r85$K!"2>?t$r%9%o%C%W$9$k(B ( add_far_swapper )

      module add_far_swapper(upfa,upfb,ls,sa,ecmd,fx,fy,sc);
              input [52:0] upfa,upfb;
      	input ls; // less : ea < eb
              input sa; // sign of input A
      	input ecmd; 
              // effective command = sa^sb^cmd ( sub : 0 , add : 1 )
      	output [52:0] fx,fy;
      	output sc; // sign of result
      

      $B%b%8%e!<%k(B add_far_comparexp $B$N=PNO(B ls $B$rMQ$$$F!"%"%s%Q%C%/$7$?;X?t$r(B $B%9%o%C%W$9$k!#%9%o%C%W$5$l$?CM$O(B fx , fy $B$H$J$k!#(B

      $B$3$N(B fx $B$H(B fy $B$O!"%7%U%H8e$O!"@dBPCM$K$*$$$F(B fx > fy $B$rJ]>Z$9$k$b$N$G(B $B$"$k!#C"$7(B 1 $B$DNc30$,$"$C$F!";X?t%U%#!<%k%I$NCM$,F1$8>l9g$O$I$A$i$,Bg(B $B$-$$$N$+$o$+$i$J$$$N$G(B fx > fy $B$OJ]>Z$G$-$J$$!#$7$+$7@53N$JBg>.$,$o$+(B $B$i$J$$$^$^7W;;$rB3$1$k$H:$$k$N$O8:;;$N$_$G!"2C;;$K$D$$$F$O!"7e9g$o$;$5(B $B$($A$c$s$H$d$C$F$*$1$P$h$$!#$=$7$F8:;;$K$D$$$F$O!"$=$N$h$&$J;vBV(B ( $B;X(B $B?t$,F1$8$G(B fx > fy $B$,J]>Z$5$l$J$$(B : $B%O%^$k(B ) $B$K$J$k$N$O!" $B$^$?!"7k2L$NId9f(B sc $B$b$D$$$G$K=PNO$7!"0J2<$NI=$N$h$&$KF0:n$9$k!#(B

      ls ecmd sc
      ( don't care ) 1 sa
      0 0 sa
      1 0 ~sa

      • $B>.$5$$J}$N2>?t$r%7%U%H$9$k(B ( add_far_shift )

      module add_far_shift(fx,fy,df,ecmd,sfx,sfy,rob,stb);
              input [52:0] fx,fy; // fx , fy
              input [10:0] df; // exp difference 
              input ecmd; // effective command ( sub : 0 )
      
              output [53:0] sfx,sfy; // shifted fx , fy
              output rob;
              output stb;
      

      $B$?$@$N%7%U%?(B + $B%9%F%#%C%-!<%S%C%H$N8!=P!#?t$b

      $B1i;;4o$K$+$1$kA0$N!"2>?t$N=hM}$K$D$$$F(B

      FAR path $B$K$*$$$F$O(B

      1. $B7e>e$,$j$,(B 0 $B$+(B 1 $B$N2C;;(B ( $BA4It$N2C;;$,$3$l$KF~$k!#$"$?$j$^$((B )
      2. $B7eMn$A$,(B 0 $B$+(B 1 $B$N8:;;(B ( $B@53N$K$O!";X?t$N:9$,(B 1 $B$G7eMn$A$NL5$$8:(B $B;;$*$h$S;X?t$N:9$,(B 2 $B0J>e$NA4$F$N8:;;$G!"7eMn$A$,(B 1 $B$G$b;X?t$N:9$,(B 0 $B$d(B 1 $B$@$H$=$l$OC4Ev30$K$J$k(B )

      $B$,@5$7$/$G$-$l$P$h$$!#$3$l$rA4$F8GDj>.?tE@$G7W;;$5$;$k$N$O!"@8M}E*$KDq(B $B93$,$"$k!#$N$G!">l9gJ,$1$r$7$F!"2C8:;;4o$KEjF~$9$k:]!">/$72C9)$9$k!#(B

      $B$3$NJU$K!"@_7W$N$7$o$,A4It4s$C$F$7$^$C$F$$$k!#(B $B$d$O$j<:GT$+$b!#(B
      $B2C;;$H8:;;$N(B 2 $BDL$j$H$$$&Bg$^$+$J2C9)$r9T$$!"99$K:YJ,2=$7$?>l9gJ,$1Ey(B $B$O9M$($J$$!#(B

      1. $B8:;;(B

        FAR path $B$G$O!"7eMn$A$,:GBg(B 1 $B%S%C%H$N$b$N$^$G9M$($F$$$k!#2<0L$N7e$KJ](B $B8n%S%C%H$r(B 1 $B%S%C%HIU2C$7$F(B 54 $B%S%C%H$G7W;;$r9T$&!#$3$l$G(B 1 $B%S%C%H7eMn(B $B$A$7$?$H$-$K$b4]$a$N$?$a$N>pJs$,==J,F@$i$l$k(B

        • $B7eMn$A$,$"$k>l9g(B
          b , G , R , S $B$O7e9g$o$;%7%U%H:Q$N%S%C%HNs!#(Ba $B$N(B LSB $B$N$H$3$m$K(B 0 $B$r(B 1 $B%S%C%HIU2C$9$k!#FC$KLdBj$OL5$7!#8=CJ3,$G$O$H$j$"$($:(B R , S $B$O%9%k!<(B ( $B8e$G=$@5$,I,MW(B )

             5         4         3         2         1         0
          321098765432109876543210987654321098765432109876543210
        
          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0
        - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbG R S
          ------------------------------------------------------
           ccccccccccccccccccccccccccccccccccccccccccccccccccccc R S
        

        • $B7eMn$A$,L5$$>l9g(B
          $B8:;;4o$X$NEjF~$O7eMn$A$,$"$k>l9g$HA4$/F1$8!#7k2L$N%S%C%HA`:n$,0[$J$k!#(B $BJ]8n%S%C%H(B G $B$N7e$N%S%C%H$r?7$?$J4]$a%S%C%H(B R' $B$H$_$J$7$F!":#$^$G$N(B $B4]$a%S%C%H(B R $B$H%9%F%#%C%-!<%S%C%H(B S $B$N(B or $B$r$H$C$?$b$N$r(B S' $B$H$7$F4]$a(B $B$r9T$&!#(B

             5         4         3         2         1         0
          321098765432109876543210987654321098765432109876543210
        
          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0
        - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbG R S
          ------------------------------------------------------
          cccccccccccccccccccccccccccccccccccccccccccccccccccccR' S'
        

        $B$J$*!"%\%m!<(B ( $B8e=R(B ) $B$K$D$$$F$O8e$G9M$($k!#(B

      2. $B2C;;(B

        $B7e>e$,$j$3$=$9$l!"7eMn$A$9$k$3$H$,$J$$$?$a$KJ]8n%S%C%H$r$D$1$kI,MW$,$J(B $B$$!#$=$N$?$a!"(B 53 $B%S%C%H$G$$$$$N$@$,!"$I$&$;8:;;$,(B 54 $B%S%C%H;HMQ$9$k$N(B $B$G!"%"%s%Q%C%/$7$?2>?t$N(B MSB $B$K(B 0 $B$rIU2C$7$F(B 54 $B%S%C%H$K$7$F$7$^$&!#(B

        • $B7e>e$,$j$,L5$$>l9g(B
             5         4         3         2         1         0
          321098765432109876543210987654321098765432109876543210
        
          0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        + 0bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb R S
          ------------------------------------------------------
           ccccccccccccccccccccccccccccccccccccccccccccccccccccc R S
        

        • $B7e>e$,$j$,$"$k>l9g(B
          ( $B7W;;$7$?(B LSB $B$r?7$?$J4]$a%S%C%H(B R' $B$H$_$J$7$F!":#$^$G$N(B $B4]$a%S%C%H(B R $B$H%9%F%#%C%-!<%S%C%H(B S $B$N(B or $B$r$H$C$?$b$N$r(B S' $B$H$7$F4]$a$r9T$&!#(B

             5         4         3         2         1         0
          321098765432109876543210987654321098765432109876543210
        
          0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        + 0bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb R S
          ------------------------------------------------------
          cccccccccccccccccccccccccccccccccccccccccccccccccccccR' S'
        

      $B7k6I!"M-8z1i;;$,2C;;$G$"$k>l9g$K$O!"1&%7%U%H$r(B 1 $B%S%C%HM>J,$KF~$l$l$P(B $B$h$$!#$3$N$H$-$NLdBj$O!";X?t$N:9$,(B Emax + 1 ( $B%S%C%HNs$,%*!<%k(B 1 ) $B$N(B $B$H$-$N2C;;$G!"(B Emax + 1 + 1 $B%S%C%H%7%U%H$5$;$k$h$&$K%7%U%?$K;X<($9$k$N(B $B$@$,!"%S%C%HNs$,A4$F(B 1 $B$N$H$-$K(B 1 $B$r2C$($k$H7k2L$O(B 0 $B$K$J$j!"%7%U%?$K(B $B$O(B 0 $B%S%C%H%7%U%H$r$9$k$h$&$J;XNa$,$G$F$7$^$&!#$7$+$7$3$l$O!":9$,(B Emax + 1 $B$N$H$-$O!"!g$+(B NaN $B$J$N$G!"(BEXCEPTION path $B$KG$$;$F$7$^$C$F$$$k$N$G!"(B $B1F6A$OL5$$$O$:$G$"$k!#(B

      • ( $B%\%m!<$ND4@0$r4^$a$F(B ) $B2C8:;;$r

        module add_far_adder(x,y,roi,sti,ecmd,c0,c1,c2,roo,sto,br);
                input [53:0] x,y;
                input roi,sti; // roundbit in , stickybit in
                input ecmd;
                output [53:0] c0,c1,c2;
                output roo,sto; // roundbit out , stickybit out
                output br; // borrow bit
        

        $B2C8:;;%b%8%e!<%k!#$3$N$H$-JBNs$K(B 3 $B$D$N7W;;$r9T$&!#2C;;$J$i(B

        1. X + Y
        2. X + Y + 1
        3. X + Y + 2
        $B$r!"8:;;$J$i(B
        1. X + ~Y ( = X - Y - 1 )
        2. X + ~Y + 1 ( = X - Y )
        3. X + ~Y + 2 ( = X - Y + 1 )
        $B$r7W;;$7$F!"7eMn$A(B / $B7e>e$,$j!"4]$a$N7k2L$K1~$8$FA*Br$9$k!#(B

        $B4]$a$H$$$&A`:n$O!"@dBPCME*$K$OA}$($k$3$H$O$"$C$F$b8:$k$3$H$O$J$$$N$K!"(B $B8:;;$G(B ( X - Y - 1 ) $B$H$$$&(B 1 $B$@$1>/$J$$CM$r7W;;$5$;$F$$$k$N$O!"8:;;$K(B $B%\%m!<(B ( borrow ) $B$H$$$&35G0$rF3F~$7$F$$$k$+$i$G$"$k!#(B

        $B%\%m!<$K$D$$$F(B

        $B%\%m!<$H$O!"(B 54 $B%S%C%H$N8:;;4o$K0z$C$+$+$C$F$$$J$$4]$a%S%C%H$H%9%F%#%C(B $B%-!<%S%C%H$r9MN8$7$?$H$-$KI=$o$l$k$b$N$G$"$k!#(B

        $B4]$a%S%C%H$H%9%F%#%C%-!<%S%C%H$N$&$A!">/$J$/$H$b$I$A$i$+$N%S%C%H$,N)$C(B $B$F$$$k>l9g!"Ho8:;;?t$+$i(B 1 $B$r ( $B$I$A$i$N%S%C%H$bN)$C$F$$$J$$>l9g$O!"Ho1i;;?t$+$i$O!"2?$b $BNc$($P!"(B54 $B%S%C%H$N8:;;(B ( A - B = C ) $B$r9M$($k!#4]$a%S%C%H$H%9%F%#%C%-!<(B $B%S%C%H$r(B R , S $B$H=q$-!":#!"(B R $B$H(B S $B$rL5;k$7$F>e0L%S%C%H$N8:;;$r9T$$!"(BR , S $B$r%9%k!<$5$;$F7k2L$r=P$7$?$H$9$k$H(B

          aaa.....aa0 
        - bbb.....bbb R S
          -----------
          ccc.....ccc R S
        

        $B$H$J$k!#(B R = S = 0 $B$J$i$P!"1i;;7k2L$G$"$k(B c $B$N%S%C%HNs$K$O$J$s$i1F6A$O(B $B$J$$$,!"$b$7(B R = 0 , S = 1 $B$@$C$?$H$-$O!"e0L(B 54 $B%S%C%H$O!"$b$O$d(B C $B$H$O0c$&CM$N$O$:$G$"$k!#(B( $B$=$NCM(B $B$r2>$K(B D $B$H$9$k(B )

          aaa.....aa0 0 0
        - bbb.....bbb 0 1
          ----------- ---
          ddd.....ddd 1 1 
        

        $B$3$N$H$-!"(B54 $B%S%C%H8:;;4o$N(B LSB $B$N7e$G!V%\%m!.$5$$CM$K$J$C$F$$(B $B$k!#$=$7$F4]$a%S%C%H$H%9%F%#%C%-!<%S%C%H$b(B ( 0 , 1 ) $B$+$i(B ( 1 , 1 ) $B$K(B $BJQ2=$7$F$$$k!#$D$^$j(B A - B - 1 $B$,(B D $B$NEz$($G$"$k!#(B $B$3$l$,!"(B 3 $BDL$j$N(B $B8:;;$G!"(B X - Y - 1 $B$r7W;;$7$F$$$kM}M3$G$"$k!#(B

        $B7k6I!"%\%m!<$K4X$9$kA`:n$O(B

        1. $B%\%m!<$,$"$k$+$I$&$+(B
        2. $B%\%m!<$K$h$C$F!"4]$a%S%C%H$H%9%F%#%C%-!<%S%C%H$,$I$N$h$&$KJQ2=$7$?$+(B
        $B$rCN$l$P$h$$!#(B $B%\%m!<$,5/$-$?$+$I$&$+$rCN$k%\%m!<%S%C%H$O6qBNE*$K(B
        R | S
        $B$GI=8=$5$l$k!#(B

        $B4]$a%S%C%H$H%9%F%#%C%-!<%S%C%H$NJQ49$O(B

        RSR'S'
        0000
        0111
        1010
        1101

        $B$H$J$k!#$3$3$^$G$r2C8:;;4o(B add_far_adder $B$NFbIt$G!"(B54 $B%S%C%H2C8:;;$HJB(B $BNs$K9T$&!#EvA3!"%\%m!<$N=hM}$O!"M-8z1i;;$,8:;;$N$H$-$N$_9T$$!"2C;;$N$H$-$O!"(B $B$=$N$^$^%9%k!<$5$;$k!#(B

        • $B4]$a$NH=CG$r9T$&(B ( add_far_round )

        module add_far_round(fz_53,fz_1,fz_0,roin,stin,sib,rmode,pone,ie);
                input fz_53,fz_1,fz_0; // result of ADD/SUB [53],[1],[0]
                input roin,stin; // roundbit , stickybit
                input sib; // signbit of result
                input [1:0] rmode; // roundmode   00:RN , 01:RZ , 10:RP , 11:RM
                output pone; // plus one :  ROUND or NOT ROUND
        	output ie; // inexact flag
        
        $B$3$N%b%8%e!<%k$O!"(B X + Y $B$H(B X + Y + 1 $B$N(B 2 $BDL$j$NN>J}$K$D$$$F!"Ej5!E*(B $B$K4]$a$r9T$&$?$a$KMQ0U$5$l$F$$$k!#B($A$3$N%b%8%e!<%k$O(B 2 $B$DMQ0U$9$k!#(B

        $B$^$?!"$3$N%b%8%e!<%k$O!"4]$a$re$2(B ( $B $B$^$?!"IT@53N$NNc30%U%i%0(B InExact $B$b=PNO$9$k(B ( $B$3$l$b8e$N%b%8%e!<%k(B add_far_mux1 $B$GA*Br$5$l$k(B )

        $B$H$3$m$G!"$3$3$^$G$N%W%m%;%9$r9T$&$3$H$G!"(BA + B , A + B + 1 , A + B + 2 $B$N(B 3 $BDL$j$r7W;;$9$k$@$1$GK\Ev$K!"%\%m!<$H7eMn$A(B ( $B7e>e$,$j(B ) $B$H4]$a(B $B$r9MN8$7$?A4$F$NAH$_9g$o$;$rK~$?$7$F$$$k$+$I$&$+$K$D$$$F9M$($k!#(B

        $B2C;;$N>l9g$H8:;;$N>l9g$N(B 2 $B$D$KJ,$1$F9M$($k$,!"6&DL$NJ}?K$O0J2<$N(B 2 $BE@(B $B$G$"$k!#(B

        • 3 $B$D$N7W;;7k2L$N$&$A!"$I$N7k2L$K$D$$$F4]$a=hM}$r9T$C$?$i$h$$(B $B$+$rH=CG$9$k(B

          $BNc$($P!"2C;;$G$"$k$J$i$P!"(B A + B $B$K$D$$$F4]$aA`:n$r9T$&$Y$-$G$"$k$7!"(B $B8:;;$G$"$k$J$i$P!"(B A - B = A + ~B + 1 $B$K$D$$$F4]$aA`:n$r9T$&$Y$-$G$"$k(B

        • $B4]$a$N=hM}$r9T$&$N$O$I$N%S%C%H$+$rH=CG$9$k(B

          $B4]$a$r9T$&:]!">e0L(B 53 $B%S%C%H$,7k2L$H$J$k$h$&$K9M$($J$1$l$P$J$i$J$$!#>e(B $B0L(B 53 $B%S%C%H$,$I$N(B 53 $B%S%C%H$K$J$k$N$+$H$$$&$N$O!"1i;;7k2L$N7e>e$,$j$b(B $B$7$/$O7eMn$A$K0MB8$9$k(B

        1. $B8:;;$N>l9g(B

          $B8:;;$K$D$$$F$O!"%\%m!<$NM-L5$H7eMn$A$NM-L5(B,$B!"$=$7$F4]$a$K$h$k@Z>e$2$N(B $BM-L5$,A*Br$N4p=`$H$J$k!#(B

          $B%\%m!<$,L5$$>l9g$O!"4]$a$NH=CG$r9T$&2sO)$O(B A - B = A + ~B + 1 $B$G$"$k!#(B $BH?BP$K%\%m!<$,$"$k$H$-$N4]$a$O(B A - B - 1 = A + ~B $B$G9T$&I,MW$,$"$k!#$=(B $B$7$F99$K!"4]$a$K$h$k@Z>e$2$,$"$k$+$I$&$+$G:G=*E*$J2r$rA*Br$9$k!#(B

          • $B%\%m!<$,L5$/!"7eMn$A$,L5$$>l9g(B

            ( $BNc(B )

              aaa.....aa0 
            - bbb.....bbb 0 0
              ----------- (or)
              ccc.....ccR' 0
                       ^
                       LSB'
            

            $B%\%m!<$,L5$$$N$G!"4]$a$NH=CG$O(B A + ~B + 1 $B$G9T$&!#7eMn$A$,$J$$$N$G!"(B54 $B%S%C%H8:;;7k2L$N(B LSB $B$r?7$?$K4]$a%S%C%H(B R' $B$H$7!"=>Mh$N4]$a%S%C%H$H%9(B $B%F%#%C%-!<%S%C%H$N(B or $B$r$H$C$?$b$N$r?7$?$J%9%F%#%C%-!<%S%C%H(B S' $B$H$9$k!#(B ( $B$A$J$_$K!"%\%m!<$,L5$$$H$$$&$3$H$O!"(B S' = 0 $B$HEy2A$G$"$k(B )
            $B$=$7$F!"8:;;7k2L$N(B LSB $B$r?7$?$K(B R' $B$H$9$k$N$@$+$i!"(BLSB $B$N(B 1 $B$D>e0L$N%S%C(B $B%H$,4]$a$r9T$&:]$N?7$?$J(B LSB' $B$H$J$k!#(B $B4]$a$K$h$k@Z>e$2$,$J$1$l$P!"2r$O(B A + ~B + 1 $B$G$"$k!#(B

            $B$H$3$m$G!"4]$a$K$h$k@Z>e$2$,H/@8$9$k>u67$K$D$$$F9M$($F$_$k!#(B $B4]$a$K$h$k@Z>e$2$O!"4]$a%b!<%I$N/$J$/$H$b$I$A$i$+$,(B 1 $B$G$J$$$HH/@8$7$J$$!#(B
            ( $B$I$A$i$b(B 0 $B$G$"$k$H$$$&$3$H$O!"1i;;$N7k2L$,@53N$G4]$a$NI,MW$,$J$$$H(B $B$$$&$3$H$G$"$k!#$"$?$j$^$((B )
            $B$=$3$G!":#2s$N%1!<%9$r9M$($F$_$k$H!"(BS' = 0 $B$J$N$@$+$i!">/$J$/$H$b(B R' = 1 $B$G$J$$$H!"4]$a$K$h$k@Z>e$2$OH/@8$7$J$$!#$=$7$F4]$a$N@Z>e$2$,5/$-$?$H(B $B$-$O(B A - B + 2 = A + ~B + 3 $B$r7W;;$7$F(B LSB $B$r@Ze0L$N%S%C%H(B ) $B$K(B 1 $B$rB-$;$P$$(B $B$$!#$7$+$7!"4{$K=q$$$?$h$&$K!"(B R` ( $B5l(B LSB ) $B$,(B 1 $B$G$J$1$l$P4]$a$K$h$k(B $B@Z>e$2$O5/$3$i$J$$$?$a!"(B A - B + 1 = A + ~B + 2 $B$K(B 1 $B$rB-$7$F(B LSB $B$r@Z(B $B $B7k6I!"$3$N%1!<%9$G$O4]$a$K$h$k@Z>e$2$,L5$$$H$-$O!"(BA + ~B + 1 $B$rA*Br$7!"(B $B@Z>e$2$,$"$k$H$-$K$O!"(B A + ~B + 2 $B$rA*Br$9$l$P$h$$!#(B

          • $B%\%m!<$,L5$/!"7eMn$A$,$"$k>l9g(B

            ( $BNc(B )

              aaa.....aa0 
            - bbb.....bbb 0 0
              -----------
               cc.....ccc R'S'
                        ^
                        LSB' ( = LSB ) 
            

            $B%\%m!<$,$J$$$N$G!"(BA - B = A + ~B + 1 $B$r4]$a$NH=CG$KMQ$$$k!#$=$7$F7eMn(B $B$A$,$"$k$3$H$+$i!"$=$N$^$^(B LSB' = LSB , R' = R ( = 0 ) , S' = S ( = 0 ) $B$,@.$jN)$D!#$7$+$74{$K=R$Y$?$h$&$K!"(BR' = S' = 0 $B$H$$$&$3$H$O!"4]$a$K$h(B $B$k@Z>e$2$,H/@8$7$J$$$3$H$r<($7$F$$$k!#(B

            $B$D$^$j$3$N%1!<%9$G$O!"4]$a$O0l@Z9MN8$;$:$K!"L5>r7o$K(B A - B = A + ~B + 1 $B$rA*Br$9$l$P$h$$!#(B

          • $B%\%m!<$,$"$j!"7eMn$A$,L5$$>l9g(B

            ( $BNc(B )

              aaa.....aa0 
            - bbb.....bbb 0 1
              ----------- (or)
              ccc.....ccR' S'
                       ^
                       LSB'
            

            $B%\%m!<$,$"$k$N$G!"4]$a$NH=CG$K$O!"(B A - B - 1 = A + ~B $B$rMQ$$$k!#(B $B$^$?!"7eMn$A$,$J$$$N$G:#$^$GF1MM!"(BR' = LSB , S' = R or S $B$H$9$k!#(B

            $B$3$3$G4]$a$K$h$k@Z>e$2$,5/$-$?$H$-$K$O!"(BLSB' $B$K(B 1 $B$rB-$9I,MW$,$"$k!#(B $B$3$l$O!"5l(B LSB $B$+$i8+$l$P!"(B2 $B$rB-$9$3$H$KAjEv$7!"(B A - B - 1 + 2 = A - B + 1 = A + ~B + 2 $B$G7W;;$,2DG=$G$"$k!#(B

            $B7k6I!"4]$a$K$h$k@Z>e$2$,$J$1$l$P(B A - B - 1 = A + ~B $B$rA*Br$7$F!"(B $B@Z>e$2$,$"$l$P!"(B A - B -1 + 2 = A + ~B + 2 $B$rA*Br$9$l$P$h$$!#(B

          • $B%\%m!<$,$"$j!"7eMn$A$,$"$k>l9g(B

            ( $BNc(B )

              aaa.....aa0 
            - bbb.....bbb 0 1
              ----------- 
               cc.....ccc R'S'
                        ^
                        LSB' ( = LSB )
            

            $B%\%m!<$,$"$k$N$G!"4]$a$NH=CG$K$O!"(B A - B - 1 = A + ~B $B$rMQ$$$k!#(B $B$^$?!"7eMn$A$,$"$k$N$G!"(BLSB' = LSB , R' = R , S' = S $B$H$9$k!#(B

            $B4]$a$K$h$k@Z>e$2$,5/$-$?$H$-$K$O!"(BR' $B$r4]$a$F(B LSB' $B$N7e$G(B +1 $B$r9T$($P$h$$$+$i!"(B A - B - 1 + 1 = A + ~B + 1 $B$,2r$H$J$k!#(B

            $B$D$^$j!"$3$N>l9g$O4]$a$N@Z>e$2$,L5$1$l$P(B A - B - 1 = A + ~B $B$r!"(B $B@Z>e$2$,$"$k$J$i$P(B A - B - 1 + 1 = A + ~B + 1 $B$rA*Br$9$l$P$h$$!#(B

        2. $B2C;;$N>l9g(B

          $B2C;;$O8:;;$N>l9g$H0[$J$j!"%\%m!<$N$h$&$J4]$a$rH=CG$9$Y$-A*Br$r9T$&I,MW(B $B$,$J$/!"7e>e$,$j$NM-L5$H4]$a$K$h$k@Z>e$2$NM-L5$N(B 2 $B$D$N$_$,%Q%i%a!<%?(B $B$H$J$k!#(B

          $B4]$a$NH=CG$O!"A4$F(B A + B $B$N7k2L$rMQ$$$k!#(B

          • $B7e>e$,$j$,L5$$>l9g(B

            ( $BNc(B )

              0aa.....aaa 
            - 0bb.....bbb R S
              ----------- 
              0cc.....ccc R'S'
                        ^
                        LSB'
            

            $B7e>e$,$j$,$J$$$N$G!"(BLSB' = LSB , R' = R , S' = S $B$H$9$k!#(B

            $B4]$a$K$h$k@Z>e$2$,5/$-$?$H$-$O!"(BLSB' $B$N7e(B ( = $B5l(B LSB $B$N7e(B ) $B$G(B +1 $B$9$l(B $B$P$h$$$+$i!"7k2L$O(B A + B + 1 $B$H$J$k!#(B

            $BB($A!"4]$a$K$h$k@Z>e$2$,5/$-$J$+$C$?$i!"(BA + B $B$r!"(B $B4]$a$K$h$k@Z>e$2$,5/$-$?$J$i!"(BA + B + 1 $B$rA*Br$9$l$P$h$$!#(B

          • $B7e>e$,$j$,$"$k>l9g(B

            ( $BNc(B )

              0aa.....aaa 
            - 0bb.....bbb R S
              ----------- (or)
              ccc.....ccR' S'
                       ^
                       LSB'
            

            $B7e>e$,$j$,$"$k$N$G!"(B R' = LSB , S' = R or S $B$H$9$k!#(B

            $B4]$a$K$h$k@Z>e$2$,5/$-$?$H$-$O!"(BLSB' $B$N7e(B ( = $B5l(B LSB $B$N(B 1 $B$D>e0L$N7e(B ) $B$G(B +1 $B$9$l$P$h$$$+$i!"7k2L$O(B A + B + 2 $B$H$J$k!#(B

            $BB($A!"4]$a$K$h$k@Z>e$2$,5/$-$J$+$C$?$i!"(BA + B $B$r!"(B $B4]$a$K$h$k@Z>e$2$,5/$-$?$J$i!"(BA + B + 2 $B$rA*Br$9$l$P$h$$!#(B

          $B0J>e$K$h$j!"(BA + B , A + B + 1 , A + B + 2 $B$GA4$F$N>l9g$rJq3g$7$F$$$k$3(B $B$H$,@bL@$G$-$?!#$3$NA*Br:n6H$r

        • $BJBNs$K7W;;$7$?2C8:;;$NCM$rA*Br$9$k(B ( add_far_mux1 )

        module add_far_mux1(msbc0,msbc1,pone0,pone1,ie0,ie1,br,ecmd,c0e,c1e,c2e,ief);
                input msbc0,msbc1; // MSB of C0 , C1
                input pone0,pone1; // PlusOne of C0 , C1 ( result of Roundlogic )
        	input ie0,ie1; // inexact0,1
                input br; // borrow
                input ecmd; // sub : 0 , add : 1
                output c0e,c1e,c2e; // C0,1,2 Enable
        	output ief; // inexact FAR path
        

        3 $B$D$N2C8:;;7k2L(B C0 , C1 , C2 $B$NCf$+$i0J2<$NI=$K4p$E$$$F(B 1 $B$D$rA*$V$?(B $B$a$N(B ( $B>iD9$J(B ) $B?.9f$rEG$/!#3F!9$N?.9f(B C0E , C1E , C2E $B$O!"GSB>E*$K%"(B $B%5!<%H$5$l$k!#(B

        MSBofC0 PlusOne0MSBofC1PlusOne1 BorrowecmdSelect$BHw9M(B
        d 0 dd d1C0$B2C;;(B
        $B@Z
        0 1 dd d1C1$B2C;;(B
        $B@Z>e$2(B
        $B7e>eL5(B
        1 1 dd d1C2$B2C;;(B
        $B@Z>e$2(B
        $B7e>eM-(B
        d dd0 00C1$B8:;;(B
        $B$B@Z
        d d01 00( $BIT2DG=(B )$B8:;;(B
        $B$B@Z>e(B $B$2(B
        $B7eMnM-(B
        d d11 00C2$B8:;;(B
        $B$B@Z>e$2(B
        $B7eMnL5(B
        d 0dd 10C0$B8:;;(B
        $B$B@Z
        0 1dd 10C1$B8:;;(B
        $B$B@Z>e$2(B
        $B7eMnM-(B
        1 1dd 10C2$B8:;;(B
        $B$B@Z>e$2(B
        $B7eMnL5(B
        d $B$O(B ( don't care ) $B$N0U(B

        $B$^$?!"3F!9(B add_far_round $B$G7W;;$7$?IT@53N$N%U%i%0$bA*Br$9$k!#(B

        $BIT@53N%U%i%0$NA*Br(B
        BorrowECmdSelected
        x1InExact_0
        1
        0
        0InExaqct_0
        InExact_1

        $B%*!<%P!<%U%m!<$d%"%s%@!<%U%m!e$G$N;X?t$ND4@a$r9T$&$K$O!"(B $B$^$:%*!<%P!<%U%m!<$N:]$NJV$jCM$r!"4]$a%b!<%I$H7k2L$NId9f$+$iH=Dj$7$J$1(B $B$l$P$J$i$J$$!#(B

        • $B%*!<%P!<%U%m!<;~$NCM$r7hDj$9$k(B ( add_far_resultinfty )

        module add_far_resultinfty(rmode,sc,ovi);
                input [1:0] rmode; // roundmode
                input sc;  // sign of result
                output ovi;
        

        $B>h;;4o$G$bF1$8F0:n$r$9$k%b%8%e!<%k$rMQ$$$F$$$k!#7k2L$,%*!<%P%U%m!<$7$?(B $B$iB((B INF $B$rJV$9$H$$$&$o$1$G$O$J$/!"4]$a%b!<%I$K$h$C$F$OI=8=$G$-$kM-8B(B $B?t$NCf$G:GBgCM$rJV$9>l9g$b$"$k!#(B

        $B2C8:;;4o$KEjF~$9$kA0$N%9%o%C%W$N=PNO$G$"$k7k2L$NId9f(B sc $B$H4]$a%b!<%I$r(B $BMQ$$$F!"%*!<%P!<%U%m!<;~$K!"(BINF $B$r7k2L$H$9$k$+$I$&$+$rH=Dj$9$k%S%C%H(B OVI $B$rJV$9!#(B

        $B$3$NA`:n$O!"2C8:;;$HJBNs$K9T$&$3$H$,$G$-$k!#(B

        $B%*!<%P!<%U%m!<;~$K$*$1$k!"4]$a%b!<%I!"Id9f$HJV$jCM(B
        $B4]$a%b!<%I(BSCOVI
        RN ( 00 ) ( don't care ) 1
        RZ ( 01 ) ( don't care ) 0
        RP ( 10 )0
        1
        1
        0
        RM( 11 )0
        1
        0
        1

        • $B;X?t$NCM$rD4@0$9$k(B ( add_far_adjexp )

        module add_far_adjexp(be,ecmd,fc,ovi,ae,of,uf);
            input [10:0] be; // Bigger Exp ( from 
            input ecmd; // effective cmd. SUB:0 , ADD:1
            input [53:0] fc; //  FC = FA + FB
            input ovi; // output infinity as a result  if overflow
            output [10:0] ae; // adjusted exponent
            output [52:0] af; // uneconomized 53bit out
            output of,uf;
        

        $B4pK\E*$K$O!"IbF0>.?tE@2C8:;;1i;;7k2L$N;X?t$O(B 2 $B$D$NF~NO%*%Z%i%s%I$N$&(B $B$ABg$-$$J}$N;X?t$G$"$k$,!"7eMn$AEy$K$h$j!";X?t$ND4@a$,I,MW$H$J$k!#(B

        $B;X?t$rD4@a$7$J$1$l$P$J$i$J$$MW0x$O(B 5 $B$D$"$k!#(B

        1. $B2C;;1i;;$N7e>e$,$j$K$h$k;X?t$N%$%s%/%j%a%s%H(B
        2. $B2C;;1i;;$N7e>e$,$j(B ( $B%$%s%/%j%a%s%H(B ) $B$KH<$&%*!<%P!<%U%m!<$K$h$k;X(B $B?t$N(B Emax + 1 $B$X$N8GDj(B
        3. $B%G%N!<%^%kF1;N$N2C;;1i;;$K$*$$$F!"7e$,>e$,$i$J$$$3$H$K$h$k%"%s%@!<%U%m!<(B
        4. $B8:;;1i;;$N7eMn$A$K$h$k;X?t$N%G%/%j%a%s%H(B
        5. $B8:;;1i;;$N7eMn$A(B ( $B%G%/%j%a%s%H(B ) $B$KH<$&%"%s%@!<%U%m!<(B ( $B%G%N!<%^(B $B%k(B ) $B$K$h$k;X?t$N(B Emin - 1 $B$X$N8GDj(B

        $B99$K%*!<%P!<%U%m!<;~$K$O!"(BEmax + 1 $B$K;X?t$r8GDj$9$k$N$+(B Emax $B$K8GDj$9$k$N$+$r(B $B%b%8%e!<%k(B add_far_resultinfty $B$N=PNO(B OVI $B$+$iH=CG$9$kI,MW$,$"$k!#(B

        $B$J$*!":G8e$NMW0x$G$"$k%G%N!<%^%k$KMn$A$k$d$D$O!" 3 $BHVL\$N>r7o$O!"$9$C$+$jK:$l$F$$$?$b$N$G!";X?t$N=$@5$K$O!"2C;;7k2L$N(B MSB $B$@$1$G$O$J$/!"$b$&(B 1 $B%S%C%H$@$12<0L$N%S%C%H$,99$KI,MW$H$J$k!#$3$$(B $B$D$N$*$+$2$G$@$$$VI=$,1x$/$J$C$?!#(B

        $B7e>e$,$j!"%*!<%P!<%U%m! OVIMSBsFCECmdBEAdjustExp $BNc30(B 1
        01x1Emax Emax + 1 ( = BE + 1 )
        Emax ( = BE )OFlow x0x1Emax Emax ( = BE )- x1x
        0x1Emin + 1 $B!A(B
        Emax - 1BE + 1
        BE- x11
        101Emin Emin + 1 ( = BE + 1 )- x011Emin Emin ( BE )- x001Emin Emin - 1 ( BE - 1 )UFlow x1x
        0x0Emin + 1 $B!A(B
        EmaxBE
        BE - 1- x1x0EminEmin ( = BE ) - x0x0EminEmin - 1 ( BE - 1 )
        [CLOSE path]UFlow BE $B$O!"(B2 $B$D$NF~NO%*%Z%i%s%I$N;X?t$N$&$A!"Bg$-$$J}(B
        ( $BC"$7!"%G%N!<%^%k$N$H$-$O(B BE = Emin $B$H$J$k$h$&$KD4@a$7$F$"$k(B )

        CLOSE path $B$NC4Ev!"(BINF $B$rJV$9$H$3$m!"2C;;$N%G%N!<%^%k$r=|$$$F2C8:;;$N(B $BF0:n$O!"BP>N$K$J$C$F$$$k!#(B

        $B99$K$3$N;~E@$G!"%*!<%P!<%U%m!?t$NCM$r:NMQ$9$k$+$I$&$+$b(B $B7h$^$C$F$7$^$&$N$G!"$D$$$G$KA*Br$7$F$7$^$&!#(B ( AF $B$H$9$k(B )

        $B>eI=$H0c$C$F!"(BMSBofFC $B$N(B 1 $B%S%C%H$@$1$"$l$P$h$$$3$H$KCm0U!#(B

        $B%*!<%P!<%U%m!?t$NA*Br(B
        OVIMSBofFCECmdBEAdjustedF
        1
        0
        11EmaxALL 0
        ALL 1
        x11Emin $B!A(B
        Emax -1
        FC[53:1]
        x01xFC[52:0]
        x1
        0
        0Emin + 1 $B!A(B
        Emax
        FC[53:1]
        FC[52:0]
        xx0EminFC[53:1]
        FC $B$O?t$G!"(B54 $B%S%C%H(B

        • $B:G=*E*$JA*Br$r9T$&(B ( add_far_mux2 )

        module add_far_mux2(
        sc,ec,fc,ivc,ofc,ufc,iec,valec,
        sf,ef_0,ef_1,ef_2,c0,c1,c2,c0e,c1e,c2e,off_0,off_1,off_2,uff_0,uff_1,uff_2,ief,
        so,eo,fo,ivo,ofo,ufo,ieo);
        
                input sc; // sign of CLOSE
                input [10:0] ec; // exponenent of CLOSE path
                input [51:0] fc; // mantissa of CLOSE path
                input ivc,ofc,ufc,iec; // invalid , overflow , underflow , inexact
                input valec; // VALid EXCEPTION / CLOSE path
        
                input sf; // sign of FAR path
                input [10:0] ef_0,ef_1,ef_2; // exponenent of FAR path
                input [51:0] c0,c1,c2; 
                // mantissa of FAR path ( economize expression )
                input c0e,c1e,c2e;
                input off_0,off_1,off_2,uff_0,uff_1,uff_2,ief;
                // invalid , overflow , underflow and inexact(already determined)
        
                output so;
                output [10:0] eo;
                output [51:0] fo;
                output ivo,ofo,ufo,ieo;
        

        $B:G=*$N2>?t!";X?t!"%U%i%0$rA*Br$9$k!#(Badd_far_mux1 $B$O%$%M!<%V%k$N?.9f$@(B $B$1$@$C$?$,!"(Badd_far_mux2 $B$G$O $BNc30%Q%9$N?.9f$b$3$3$GA*Br$7$F$7$^$&$3$H$K$9$k!#A*Br$9$k?.9f$N

      • $BId9f(B ( 1b )
      • $B;X?t(B ( 11b )
      • $B2>?t(B ( economized , 52b )
      • $BNc30%U%i%0(B ( Zero Divide $B$r=|$$$?(B 4b ) $B$N(B 68 $B%S%C%H$G$"$k!#$3$l$r(B 1 $B%;%C%H$H$7$F!"(BEXCEPTION / CLOSE , FAR $B$N(B 2 $B%;%C(B $B%H$K$D$$$FA*Br$r9T$&!#(B

        $B:G=*2r$NA*BrI=(B ( $B:F7G(B )
        ExValidCloValidSelected
        1( don't care )Exception path
        01CLOSE path
        00FAR path

        EXCEPTIO path $B$+(B CLOSE path $B$+$N$I$A$i$+$H$$$&$3$H$K$D$$$F$O!"4{$KA*Br(B $B$5$l$F$$$k$b$N$H$9$k!#(B

        $B$=$NA0$NCJ3,$K$*$$$F!"99$K(B FAR path $B$NFbIt$N(B 3 $BDL$j$K7kCe$r$D$1$k$?$a(B $B$N!"2>?t$NA*Br$r9T$&!#(B

        FAR path $B$N2r$NA*Br(B
        C0EC1EC2EFarF
        100C0
        010C1
        001C2
        C0E , C1E , C2E $B$O!"%b%8%e!<%k(B add_far_mux1 $B$N=PNO(B

        $BKt!"3F%Q%9$G5/$3$jF@$kNc30$O0J2<$NDL$j!#(B

        $B;29M(B : $B2C8:;;1i;;$G$NNc30(B
        $B%Q%9(B$BNc30(B
        ExceptionIV , OF , OF with IEX , UF?
        CLOSEUF
        FAROF with IEX , UF , IEX
        EXCEPTION path $B$N%U%i%0$N$H$j$+$?$K$O8!F$$NM>CO$,$"$k(B
        ( or $B$N$H$j$+$?(B )

        $B7k2L$,(B 0 $B$N$H$-$K%"%s%@!<%U%m!<$O$@$9$N$+!)(B
        $B=P$9$C$]$$$N$G=P$7$F$*$/!#(B
        ( $B$7$+$7(B NonZero $B$H$+5,3J=q$K=q$$$F$"$C$?$h$&$J(B )

        FAR path $B$N%*!<%P!<%U%m!<$O!"I,$:(B InExact $B$K$J$k$h$&$K@_Dj$7$F$"$k!#(B

        FAR path $B$N9g@.7k2L(B

        $B%b%8%e!<%kL>(Bcost prim.$B;~4V(B (ns)$BI,MW(B $B?t(B $B>.7W(B prim.
        add_far_comparexp 460 6.1921 460
        add_far_swapper 336 2.9401 336
        add_far_shift 3223 6.4281 3223
        ($B$3$3$^$G$N(B
        $BAH$_9g$o$;2sO)(B)
        385212.62613852
        add_far_adder 2358 12.3961 2358
        add_far_round 20 1.3312 40
        add_far_mux1 16 1.2091 16
        add_far_resultinfty 4 0.7331 4
        add_far_adjexp 5124.3883 1536
        add_far_mux24393.0271 439
        no clock, opt area -high, opt timing -high $B$K$F9g@.(B
        [ primitive cost $B!_(B $BI,MW?t(B ] $B$G!"(B
        $BI,MW$J(B primitive cost $B$,7W;;$G$-$k!#(B


        $B=i4|$N@_7W(B ( $B$+$J$j;H$($J$$(B )

        $B7W;;$r(B 3 $B$D$N%Q%9$KJ,2r$9$k(B

        $B2C8:;;$r$9$k:]!"(B

        • $B7e9g$o$;$r9T$&:8%7%U%H(B
        • $B7eMn$A$N8e@55,2=$r9T$&1&%7%U%H(B
        • $B4]$a(B
        $B$N(B 3 $B$D$NMWAG$O!"FHN)$G$O$J$/!"8_$$$K?<$/4X78$7$F$$$k!#(B $B7e9g$o$;$H$O!"2C8:;;4o$KEjF~$9$k7e$,$:$l$k$N$@$+$i!"1i;;$N@:EY$r$"$2$J(B $B$/$F$O7W;;$,$G$-$J$$!#(B $B$=$l$r4]$a$G@:EY$rMn$H$9$H9M$($l$P!"7e9g$o$;$N:8%7%U%H$,L5$$$H$-$O!"4](B $B$a$r9T$&I,MW$,$J$$$N$G!":8%7%U%H$H4]$a$NI,MW@-$O!"%;%C%H$G(B( = $BA4$/F1$8(B $B$H$7$F(B )$B9M$($F$h$$!#(B
        $B$^$?!"7eMn$A$,Bg$-$/$J$k$N$O!"6a$$?tF1;N$N8:;;$H$$$&>r7o$,$"$k$N$OL@$i$+$G$"$k!#(B $B$=$7$F6a$$?t$H$$$&$N$O!"7e9g$o$;$N%7%U%H$,L5$$$H$$$&$3$H$H$@$$$?$$F1$8(B ($B$3$N[#Kf$5$,6Jr7o$O!"GSH?E*$G$"$k$H$$$($k!#(B

        $B$3$3$^$G$o$+$C$F$$$k$N$@$+$i!"$3$l$i(B 3 $B$D$rC`r7o$@$1$G$J$/!"L58BBg!&(BNaN$B!&%G%N!<%^%k$NLdBj$b$"$k$N$G!"0l(B $B8@$G!"$:$P$C$H%Q%9$NJ,3dDj5A$r8@$&$3$H$,$G$-$J$$!#G:$_$N
        $B%Q%9$NL>A0$,!"B>$NO@J8$r;29M$K$7$F$=$l$r$=$N$^$^;H$C$F$$$F!"(B $B$=$NL>A0$,:G6a%:%l$F$F:$$C$F$$$k!#(B
        • FAR path
          $B
          1. $BL58BBg!&(BNaN$B$r(B 1 $B$D$b4^$^$J$$A4$F$N2C;;(B
          2. $BL58BBg!&(BNaN$B$r(B 1 $B$D$b4^$^$:$+$D!"%G%N!<%^%kF1;N$G$J$$8:;;$G!"(B $B7eMn$A$,9b!9(B 1 $B%S%C%H$^$G$N$b$N(B

          $B$A$J$_$K!"7e9g$o$;%7%U%H$,(B 2 $B%S%C%H0J>e$N%7%U%H$N8:;;$O!"(B $B7eMn$A$O9b!9(B 1 $B%S%C%H$^$G$G$"$k$3$H$,J]>Z$5$l$F$$$k!#(B $B$=$N$?$a(B 2 $BHVL\$N>r7o$O!"(B

          1. $B7e9g$o$;%7%U%H$,(B 2 $B%S%C%H0J>e$NA4$F$N8:;;(B
          2. $B7e9g$o$;%7%U%H$,(B 1 $B%S%C%H$N!V7eMn$A$NL5$$!W8:;;(B
          3. $B7e9g$o$;%7%U%H$,(B 0 $B%S%C%H$G!"$+$D$=$l$O%G%N!<%^%kF1;N$G$J$$!"!V7eMn(B $B$A$NL5$$!W8:;;!#(B ($BDI5-(B: $B!V7eMn$A$NL5$$!W>l9g!"$3$N>r7o$rK~$?$91i;;$OB8:_$7$J$$(B)

          $B$H!"$$$$$+$($i$l$k!#(B($BEvA3!"L58BBg!&(BNaN$B$O4^$s$G$O$$$1$J$$(B)
          $B!V7eMn$A$NL5$$!W$H$$$&$N$O!"K\Ev$O!V7eMn$A$,9b!9(B 1 $B%S%C%H$^$G$N!W$J$N(B $B$@$,!"7eMn$A$,(B 1 $B%S%C%H$N;~$O!"(BCLOSE path$B$G$bBP1~$G$-$k$7!"FC$K7e9g$o(B $B$;%7%U%H$,(B 0 $B%S%C%H$N$H$-$O!"%9%o%C%W$,@5$7$/$J$$$?$a(B FAR $B$O;H$($:!"(B CLOSE$B$K$^$o$5$J$1$l$P$J$i$J$$!#(B

        • CLOSE path

          1. $BL58BBg!&(BNaN$B$r(B 1 $B$D$b4^$^$:$+$D!"%G%N!<%^%kF1;N$N8:;;$G!"7k2L$,(B 0 $B$K$J$i$J$$$b$N(B
          2. $BL58BBg!&(BNaN$B$r(B 1 $B$D$b4^$^$:$+$D!"%G%N!<%^%kF1;N$G$J$$!"7eMn$A$,(B 1 $B%S%C%H0J>e$"$k8:;;$G!"7k2L$,(B 0 $B$K$J$i$J$$$b$N(B

          $B$I$A$i$b!"7k2L$,(B 0 $B$K$J$k$b$N$O!"(BEXCEPTION path $B$,C4Ev$9$k!#(B e!W$H$O$J$C$F$$$k$,!"$*$=$i$/(BCLOSE path $B$G$b!"(B $B7eMn$A(B 1 $B%S%C%H$OJ]>Z$5$l$k!#(B>

        • EXCEPTION path
          $BMW$O!">e5-0J30A4$F$J$N$@$,!">e$,$^$@$h$/$+$?$^$C$F$$$J$$!#(B

          1. $B!g!&(BNaN$B$r(B 1 $B$D$G$b4^$`1i;;(B
          2. $B7k2L$,(B 0 $B$K$J$k1i;;(B
            $B$3$l$O99$K!"(B
            • $B%*%Z%i%s%I$,N>J}$H$b(B 0 $B$G$"$k>l9g$N1i;;(B
            • $B%*%Z%i%s%I$,N>J}$H$b(B 0 $B0J30$G$"$C$F$b!"7k2L$,(B 0 $B$K$J$k$b$N(B
            $B$KJ,$1$i$l$k!#(B
        http://sather.tutkie.tut.ac.jp/Doc-Ja/sather1_1/specification/ieee.html
        $B%*%Z%i%s%I$H$7$F$N2C8:;;$H!"
        $B1i;;BP>]$G$"$k%*%Z%i%s%I(B A , B $B$NBg>.$dId9f/:,2s$7$,0[$J$k$,!"$^$:!">o$K(B | A | > | B | $B!"(B A op B $B$N7W;;$r9T$&$H$-$N$3$H$r9M$($k!#(B

        A $B$NId9f(BB $B$NId9f(B$BL?Na(B$B
        ++ADDADD
        +-ADDSUB
        -+ADDSUB
        --ADDADD
        ++SUBSUB
        +-SUBADD
        -+SUBADD
        --SUBSUB

        $BI=$G8+$k$^$G$b$J$/!"0l8@$G8@$C$F$7$^$($P!"(B2 $B$D$N%*%Z%i%s%I$NId9f$,0[$J(B $B$l$P!"1i;;$N$9$k!#$D$^$j!"1i;;$N
        (effective command) = (command) xor (Sign A) xor (Sign B)

        $B$^$?!">e5-$N>l9g$O7k2L$NId9f$O(BA$B$NId9f$H$J$k$,!"EvA3!"I,$:Bh(B 1 $B%*%Z%i%s%I$NJ}$,Bg$-$$$H$$$&$o$1$G$O$J$$!#(B $BA0I=F1MM!"@dBPCM$NBg$-$J%*%Z%i%s%I$r(B A$B!">.$5$$%*%Z%i%s%I$r(B B $B$H$7!"1i;;$N5-9f$O(B $B
        $B1i;;(B$B7k2L$NId9f(B
        A + BSign A
        A - BSign A
        B + ASign B
        B - ASign ~B

        $B99$K!">o$K(B | A | > | B | $B$H$$$&>r7o$O!"e$NET9g$G!";X?t$NBg$-$5(B $B$,F1$8$H$-$K!"I,$:$7$b@.N)$7$J$$!#(B
        $B$^$@$H$A$e$&(B

        $BBg5,LO$J@55,2=%7%U%H$rI,MW$7$J$$1i;;(B (FAR path)

        $B0J2<$N$h$&$J%9%F%C%W$G1i;;$r9T$&!#(B
        1. $B$1$AI=8=$rE83+$9$k(B ( unpack52 )

          52$B%S%C%H$r(B53$B%S%C%H$K$U$/$i$^$9A`:n!#(B $B@55,2=?t$+!"%G%N!<%^%k$+$G!"$1$A$C$F$"$k:G>e0L%S%C%H$K(B 1 $B$r5M$a$k$+(B 0 $B$r5M$a$k$+$r7h$a$k!#IaDL$O$=$l$G$h$$$N$@$,!"7e9g$o$;1&%7%U%HEy$NET9g$G!"(B $B>/$7JQB'E*$J%"%s%Q%C%/$r9T$&!#(B $BDL>o$O(B
          	if(exp == 0)
          		return( { 1'b0, significand } );
          		          ~~~~~~~~~~~~~~~~~
          	else
          		return( { 1'b1, significand } );
          
          $B$J$N$@$,!" if(exp == 0) return( { significand, 1'b0 } ); ~~~~~~~~~~~~~~~~~ else return( { 1'b1, significand } ); $B%G%N!<%^%k$,%*%Z%i%s%I$KB8:_$9$k$H$-!"$=$N;X?t%U%#!<%k%I$O(B 0 $B$K$b$+$+(B $B$i$o$:!"J,$K1&%7%U%H$7$F$7$^$&$3$H$K$J$k!#$=$l$rKI;_$9$k(B $B$?$a$K!"$"$i$+$8$a(B 1 $B%S%C%H:8$K%7%U%H$5$;$F$"$k$N$,!">e5-$N%k!<%A%s$G(B $B$"$k!#$3$l$K$h$C$F!"M>J,$J(B 1 $B%S%C%H1&%7%U%H$r$=$N$^$^$K$7$F$*$$$F$b!"(B $B7k2LE*$KAj;&$9$k$3$H$,$G$-$k!#(B($B$=$l0J30$K$b!"%m%8%C%/$,4JC1$K$J$k$H$$(B $B$&M}M3$+$i!"$3$NJ}K!$r:NMQ$7$F$$$k!#3N$+!"%G%N!<%^%kF1;N$N2C;;$N;~$K!"0RNO$rH/4x$7$?$O$:!#(B)

        2. $B;X?t$N:9$r$H$k(B ( sub11 )

          $B$?$@$N8:;;4o$G$O$J$/(B
          • ea < eb $B$+$I$&$+(B ( less ) $B"*(B $B%9%o%C%W$9$k$+$I$&$+$KMQ$$$k(B
          • $B;X?t$N:9$N@dBPCM(B ( abs ) $B"*(B $B7e9g$o$;1&%7%U%H$N%7%U%H%S%C%H?t(B
          • $BBg$-$$J}$N;X?t%U%#!<%k%I(B ( largere ) $B"*(B $B$3$NCM$rE,Ev$KD4@0$7$F!";X?t%U%#!<%k%I$N2r$H$9$k!#(B
          • ea = eb $B$+$I$&$+(B ( equal ) $B"*(B CLOSE path $B$G;HMQ!#(B
          $B$rJV$9F/$-$r$9$k!#(B

        3. $BI,MW$J$i%9%o%C%W$9$k(B ( swap53 )

          $B;X?t$N:9$N7k2L(B ( less ) $B$K4p$E$$$F!"%9%o%C%W$r$9$k$+$I$&$+H=Dj$9$k!#(B $BC"$7!"2>?t$^$GHf3S$r9T$o$J$$$?$a!";X?t$N:9$,(B 0 $B$N$H$-$O!"@53N$J%9%o%C(B $B%W(B / $B8:;;7W;;$,$G$-$J$$!#(B ($B$A$J$_$K!"%G%N!<%^%k$OJL$H$7$F!";X?t$N:9$,(B 0 $B$N8:;;$OI,$:(B 1 $B%S%C%H0J(B $B>e7eMn$A$9$k$N$G!"$3$N>r7o2<$N$b$N$OA4$F(B CLOSE $B$K$^$o$9(B)

        4. $B;X?t$N:9$@$1!">.$5$$J}$N2>?t$r1&$K%7%U%H$9$k(B ( rsft53 )

          $BC1$J$k%P%l%k%7%U%?$G$"$k$,!"Cm0U$9$Y$-$O!"@55,2=?t$K$*$1$k:G>.$N;X?t%U%#!<(B $B%k%I$H!"%G%N!<%^%k$N;X?t%U%#!<%k%I$N:9$O(B 1 $B$G$"$k$K$b$+$+$o$i$:!"$7$F:9$r$H$k$H$$$&J}K!$,C1=c$@$,!"$"$($F:#2s$O!":9$r$=$N$^$^(B $B$K$7$F!"$1$AI=8=$rE83+$9$k$H$-$K%P%$%"%9$r$+$1$FBP=h$7$F$$$k!#$3$NJ}$,!"(B $B8e!9ET9g$,$h$$!#(B( $B%9%F%C%W(B 1. $B$N%"%s%Q%C%/$r;2>H(B)

        5. $BJBNs2C8:;;4o$KEjF~$9$k(B ( compoundadder54 )

          $Bl9g$O(B
          • A + B
          • A + B + 1
          • A + B + 2
          $B$N(B 3 $B$D$r7W;;$7!"8:;;L?Na$N>l9g$O!"(B
          • A + ~B
          • A + ~B + 1
          • A + ~B + 2
          $B$N(B 3 $B$D$r7W;;$9$k!#$3$N7k2L$O!"4]$a%b!<%IEy$N>r7o$K=>$C$FA*Br$5$l$k!#(B

        6. $B;X?t!"2>?t%U%#!<%k%I$ND4@0(B ( postadj )

          $B2C;;$K$h$k7e$N7+$j>e$,$j(B / $B8:;;$K$h$k7eMn$A$NM-L5$rD4$Y!";X?t%U%#!<%k(B $B%I$ND4@0$r$9$k!#(B($B7+$j>e$,$j(B / $B7eMn$A$rD4$Y$k$N$OAPJ}(B 1 $B%S%C%H$^$G(B)
          $B2C;;$N7k2L$,!g$K$J$k>l9g$b%5%]!<%H$9$k!#(B $B$A$J$_$K@55,2=?t$+$i%G%N!<%^%k$KMn$A$k$N$O%5%]!<%H$9$kI,MW$,$J$$!#(B

        7. $BJBNs$K7W;;!"D4@0$7$?7k2L$r!">r7o$K=>$$A*Br$9$k!#(B( faraddlogic, farsublogic, select3to1 )

          $B8:;;$O%\%m!<(B (borrow, $B8e=R(B) $B$NM-L5$H4]$a$NM-L5$rD4$Y!"(B $B2C;;$O7e$N7+$j>e$,$j$NM-L5$H4]$a$NM-L5$rD4$Y$k!#(B


        $B1i;;$,@53N$J8:;;(B (CLOSE path)

        $B$3$A$i$N%Q%9$K$O!"4]$a$r9T$&2sO)$,0l@Z$D$$$F$$$J$$!#4]$a$,I,MW$J8:;;$O!"(B $BA4$F(B FAR path $B$K$^$o$9I,MW$,$"$k!#(B $B%"%s%Q%C%/$N$h$&$K!"(BFAR path $B$HA4$/=EJ#$9$kItJ,$K$D$$$F$O!"F10l%b%8%e!<(B $B%k$rMxMQ$7$F$$$k!#(B
        1. $B$1$AI=8=$rE83+$9$k(B ( unpack52 )

          52$B%S%C%H$r(B53$B%S%C%H$K$U$/$i$^$9A`:n$G!"(BFAR path $B$HA4$/F1$8%b%8%e!<%k$r;H$&!#(B $B$3$NJQB'E*$J%"%s%Q%C%/$N$;$$$G!"(BCLOSE path $B$K$D$$$F$O32$rHo$C$F$*$j!"8e$G(B adjustment $B$H$$$&%Q%i%a!<%?$r@8$`860x$H$J$C$F$$$k!#(B($B$7$+$7!"(BFAR path $B$HF1MM$N287C$bJ}$r07$&$K$O!"7k6I$I(B $B$3$+$GL5M}$r$7$J$1$l$P$$$1$J$$$N$+$b$7$l$J$$(B)

        2. $B;X?t$N:9$r$H$k(B ( sub11 )

          $B:9$re$"$k>l9g$O!"(BFAR path $B$KG$$;$F$3$A$i$OA*Br$5$l$J$$$N$G!"(B $B$$$$2C8:$JEz$($r=P$7$F$7$^$C$F9=$o$J$$!#(B

        3. $B2C;;4o$K$+$1$k(B ( paradder53 )

          FAR path $B$G$bLdBj$K$J$C$?$h$&$K!";X?t$N:9$@$1$H$C$F$$$k>l9g$K$O!":9$,(B 0 $B$N$H$-$K!"I,$:Bg$-$$J}$+$i>.$5$$J}$r0z$$$F!"7k2L$,@5$NCM$K$J$k$h$&$K(B $B$7$F$*$/!"$H$$$&$3$H$,J]>Z$G$-$J$$!#(B $B$=$3$G!"(B2 $B?t(B A, B $B$N8:;;$K$D$$$F$O(B
          • { 1'b0 , A } - { 1'b0 , B }
          • { 1'b0 , B } - { 1'b0 , A }
          $B$H$$$&(B 2 $B$D$NCM$rJBNs$K7W;;$5$;$F$*$-!"7k2L$,@5$NJ}$rA*$V!#(B $B$^$?!";X?t$N:9$,(B 0 $B$G$J$$$H$-$K$O(B
          • { A , 1'b0 } - { 1'b0 , B }
          • { B , 1'b0 } - { 1'b0 , A }
          $B$H7W;;$5$;$F!"8e$GA*Br$5$;$F$$$k!#(B
          ( $B
          $B:G8e$K!"K\Ev$K:9$,(B 1 $B$+$I$&$+$rH=Dj$9$k2sO)$r!"$5$C$Q$j:n$jK:$l$F$$$k!#(B $B$+$J$j=EMW!#(B

        4. $BJBNs$K7W;;$7$?7k2L$N$&$A(B 1 $B$D$rA*Br$9$k(B ( selectclose )

          $B7W;;$N7k2L$H!";X?t$N:9$N7W;;7k2L$rMQ$$$F!"(B paradder53 $B$N=PNO7k2L$N$&$A(B 1 $B$D$rA*Br$9$k(B

        5. CLOSE path $B$r:NMQ$9$k$+$I$&$+$r7h$a$k(B ( pathselectionlogic )

          $B:#9T$C$F$$$k7W;;$,!"@5<0$J2r$H$7$F:NMQ$5$l$k$+$I$&$+D4$Y$k!#(B
          $B:9$,(B 1 $B$+$I$&$+$rH=Dj$9$k2sO)$O$3$3$KF~$l$k$3$H!#(B

        6. $B@55,2=%7%U%H$K2?%S%C%HI,MW$J$N$+$r%(%s%3!<%I$9$k(B ( encode54 )

          $B2C8:;;$HJBNs$K%(%s%3!<%I$G$-$k$H$h$$$N$@$,!"$=$NJ}K!$,8=:_ITL@!#(B

        7. $B;X?t!"2>?t$N:G=*D4@0(B ( postadjclose )

          $B%G%N!<%^%k$KMn$A$?$H$-$NBP=h$b$3$3$G9T$&!#(B

        8. $B@55,2=%7%U%H$r



          $BFC
          A - B $B$H$$$&8:;;$O!"(B A + ( -B ) $B$H$$$&2C;;$K$*$-$+$($F9M$($k!#(B

          X op Y Y = 0Y = WY = $B!g(BY = NaN
          X = 0(iii)(ii)(i)
          X = W(ii)(i)
          X = $B!g(B(ii)(ii)(ii)(i)
          X = NaN(i)(i)(i)(i)

          $BC"$7!"0J2<$N@bL@$G$O!"(B(i),(ii),(iii) $B$N=gHV$GI>2A$r9T$&I,MW$,$"$k!#(B ($BNc30$N6/$$=g(B)
          $B$^$?!"(B(iii)$B$K$*$$$F$O!"99$K!"%*%Z%i%s%I$NCM$K8B$i$:!"8:;;$N7k2L$,(B 0 $B$K(B $B$J$k$b$N$bC4Ev$9$k!#(B

          (i) NaN$B$r%*%Z%i%s%I$H$9$k1i;;(B
          Signalising NaN / Quiet NaN $B$H$+$N4X78$O:#$O!"$"$^$j9M$($F$$$J$$!#(B

          X = NaN ?Y = NaN ?$B7k2L(B
          00d ($BC4Ev30(B)
          01Y
          10X
          11X
          IsTruePath : (X==NaN) | (Y==NaN)

          (ii) $B!g$r%*%Z%i%s%I$H$9$k2C8:;;(B
          $BB>$K=q$$$F$"$k$N$r8+$k$H!"$3$s$J46$8$K$J$C$F$$$k!#(B

          X = $B!g(B ?Y = $B!g(B ?$B$B7k2L(B
          00dd ($BC4Ev30(B)
          010{Sign ~X,$B!g(B}
          011{Sign X,$B!g(B}
          10d{Sign X,$B!g(B}
          110 NaN
          111{Sign X,$B!g(B}
          IsTruePath : (X==$B!g(B) | (Y==$B!g(B)

          $B$3$l$G!">/$7$R$C$+$+$k$N$,!"Nc$($P!"(B+$B!g(B - 1.0 $B$N$h$&$J1i;;$N$H$-$G$"$k!#(B $B$3$NI=$G$O!"(B+$B!g$rJV$9$3$H$K$J$k!#$3$s$JD4;R$G!"!g$N3&IU6a$G!"$&$m$&$m2C8:;;$r$9$k$H!"(B $B$*$+$7$JEz$($K$J$k$O$:!#(B($B%5%]!<%H$7$F$$$kHO0O$.$j$.$j$G$&$m$&$m$7$F$$(B $B$k$3$H$,$b$&%@%a$J$N$G$"$k$,(B)
          $B%=%U%H$,$J$s$H$+$7$F$/$l$k$H4|BT$9$k!#(B

          (iii) 0 $BF1;N$N2C8:;;$H!"7k2L$,(B 0 $B$K$J$k8:;;(B
          +0 $B$H(B -0 $B$N(B 2 $B
          +0 $B$r(B $B$H$k$N$O(B
          1. $B%*%Z%i%s%I$,N>J}$H$b(B +0
            +0 - ( -0 ) $B$O!"$3$l$K4^$^$l$k$O$:!#(B
          2. $B$=$l0J30$N%*%Z%i%s%I$NAH$_9g$o$;$G!"4]$a%b!<%I$,(B RN,RP,RZ $B$N$H$-(B
          $B$N$H$-$G!"(B-0 $B$r$H$k$N$O(B
          1. $B%*%Z%i%s%I$,N>J}$H$b(B -0
            -0 - ( +0 ) $B$O!"$3$l$K4^$^$l$k$O$:!#(B
          2. $B$=$l0J30$N%*%Z%i%s%I$NAH$_9g$o$;$G!"4]$a%b!<%I$,(B RM $B$N$H$-(B
          $B$N$H$-$G$"$k!#(B0 $BF1;N$N1i;;$G$J$/$H$b!"7k2L$,(B 0 $B$K$J$k$h$&$J8:;;(B (2$B$D$N(B $BCM$,Ey$7$$$H$-$N8:;;(B) $B$b!"$3$NK!B'$K=>$&$O$:$J$N$G!"$=$l$b9MN8$9$k!#
          | X | = | Y | ?$BX = 0 ?Rmode = RM ?$B7k2L(B
          111d X
          110d d ($BC4Ev30(B)
          10d0 +0
          10d1 -0
          0ddd d ($BC4Ev30(B)
          d : do not care


          $B<+J,$,C4Ev$G$"$k$+$I$&$+$N%S%C%H(B IsTruePath $B$O(B

          (|X|==|Y|) & ( (EffectCmd==SUB) | (X==0) )

          $B$H$J$k!#(B


          $BT?$,$"$+$s(B

          $B@u3XHs:M$N?H!"5,3J$rD4$Y$J$,$i$d$C$F$$$k$H!"40`z$K$O$^$k$3$H$,$o$+$C$?$N$G!"3N/2sO)$,$@$V(B $B$j$=$&$JM=46$,$9$k$,L\$r$D$V$k!#EvA3!":#$^$G$N%"%k%4%j%:%`$rMxMQ$9$k!#(B

          $B$5$7$"$?$C$FI,MW$J$N$O!"!g(B / NaN $B$r4^$^$J$$2sO)$G!"%*!<%P!<%U%m!<$N=hM}$r9M$($J$$$b$N$r:n$k!#(B
          $B0lJbA0$X(B
          $BKM$N%[!<%`$X(B[Home]
          $B8&5f<<$N%Z!<%8$X(B[Amano Lab.]
          Takahiro Kawaguchi kawaguti@aa.cs.keio.ac.jp
          Last modified: March 17, 1998