From owner-FreeBSD-users-jp@jp.FreeBSD.org Tue Jun 17 01:29:19 2008
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id m5GGTJk54770;
	Tue, 17 Jun 2008 01:29:19 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from userg500.nifty.com (userg500.nifty.com [202.248.238.80])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id m5GGTJ954765
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Tue, 17 Jun 2008 01:29:19 +0900 (JST)
	(envelope-from satosi.kimura@nifty.com)
Received: from localhost (ntceast016246.east.dup.ppp.infoweb.ne.jp [220.209.205.246])by userg500.nifty.com with ESMTP id m5GGT8Ob025290
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Tue, 17 Jun 2008 01:29:09 +0900
DomainKey-Signature: a=rsa-sha1; s=userg500; d=nifty.com; c=nofws; q=dns;
	h=date:message-id:to:subject:from:in-reply-to:references:
	x-mailer:mime-version:content-type:content-transfer-encoding;
	b=jP2cwaYSq7lnQQj+4Ru5rkjKDpSd41HTi2Ia2+huPngGtwlvqD/gjZ8Osyu993xWr
	T7mWwEpfhCt7bnsKlyLgw==
X-Nifty-SrcIP: [220.209.205.246]
Message-Id: <20080617.012830.730548117.satosi.kimura@nifty.com>
To: FreeBSD-users-jp@jp.FreeBSD.org
From: Satoshi Kimura <satosi.kimura@nifty.com>
In-Reply-To: <200806160215.AA00713@POLYMER5.scphys.kyoto-u.ac.jp>
References: <81ACAF47-EDA8-4EC8-B3E8-9AEE0019DEB9@readme.jp>
	<200806160215.AA00713@POLYMER5.scphys.kyoto-u.ac.jp>
X-Mailer: Mew version 3.3 on XEmacs 21.4.14 (Reasonable Discussion)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Tue, 17 Jun 2008 01:28:30 +0900
X-Sequence: FreeBSD-users-jp 91691
Subject: [FreeBSD-users-jp 91691] Re: long double
 =?ISO-2022-JP?B?GyRCJE4bKEI=?= bug ?
 =?ISO-2022-JP?B?GyRCJEskRCQkJEYbKEI=?= 
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: satosi.kimura@nifty.com
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+060209

$BLZB<$G$9!%(B

> $BDaC+$5$s(B [FreeBSD-users-jp 91686] Re: long double $B$N(B bug ? $B$K$D$$$F(B 

> $B$*$=$i$/$O!"(B
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17778
> $B$,860x$G(Bgcc$B$K$3$s$J%3!<%I$,A^F~$5$l$?$N$@$H;W$&$N$G$9$,!"(B
  $B$3$3$G$O!$(Bfpsetprec(FP_PE); $B$N$3$H$,0l8@$b=P$F$3$J$$$N$,(B
$B4qL/$G$9!%$3$3$KJs9p$5$l$?LdBj$O$`$7$m$=$A$i$K4X78$7$F$$$^$9!%(B
$B=>$C$F!$$3$N%F%9%H%3!<%I$r$=$N$^$^;H$&$H!$;d$NJs9p$7$?Dj?t$N(B
$BLdBj$H(B fpsetprec(FP_PE) $B$NLdBj$H$,:.:_$9$k$3$H$K$J$j$^$9!%(B

> $B$7$+$7!"$h$/$o$+$i$J$$LdBj$,;D$C$F$$$^$9!#(B
> $B>e=R$N%P%0%l%]!<%H$GDs<($5$l$F$$$k%F%9%H%3!<%I$r%S%k%I$7$?7k2L$r8+$k$H!"(B
> $B$[$+$N(BOS$B$G$N7k2L$H0[$J$j$^$9!#(B
> Debian : -m96bit-long-double$B$J$I$N%*%W%7%g%s$,$"$C$F$bL5$/$F$b!"(B
> 	0xc.90fdaa22168c4p-2
> 	0xc.90fdaa22168c4p-2
> FreeBSD : -m96bit-long-double$B$J$I$N%*%W%7%g%s$,$"$C$F$bL5$/$F$b!"(B
> 	0xc.90fdaa22168c4p-2
> 	0xc.90fdaa22168cp-2

  $B$&$A$N(B FreeBSD 6.2 + gcc 3.4.6 $B$G$O(B 96, 128bit $B$G0c$$$^$9!%(B
96bit:
c9 0f da a2 21 68 c0 00  : 0xc.90fdaa22168cp-2   <- $B:G=i$+$i@:EY$,Dc$$(B
c9 0f da a2 21 68 c0 00  : 0xc.90fdaa22168cp-2

128bit:
c9 0f da a2 21 68 c4 00  : 0xc.90fdaa22168c4p-2
c9 0f da a2 21 68 c0 00  : 0xc.90fdaa22168cp-2   <- $B1i;;$K$h$j@:EY$,Mn$A$k(B

$B$3$N%3!<%I$K(B fpsetprec(FP_PE); $B$r2C$($k$H!$1i;;$K$h$k(B
$B@:EY$NDc2<$O$J$/$J$j$^$9!%(B
96bit:
c9 0f da a2 21 68 c0 00  : 0xc.90fdaa22168cp-2
c9 0f da a2 21 68 c0 00  : 0xc.90fdaa22168cp-2  <- $B$3$A$i$OH=JL$G$-$J$$(B

128bit:
c9 0f da a2 21 68 c4 00  : 0xc.90fdaa22168c4p-2
c9 0f da a2 21 68 c4 00  : 0xc.90fdaa22168c4p-2

  $B$=$l$K2C$($F!$(Bd $B$rDj?t$NBeF~$G$J$/(B sscanf() $B$r;H$C$F(B
$B!V=i4|2=!W$9$k$H!$(B96, 128bit $B$N:9$OL5$/$J$j$^$9!%(B
($B?tCM$,0c$&$N$O!$FI$_9~$^$;$??tCM$,0c$&$+$i!%(B)
c9 0f da a2 21 68 c2 35  : 0xc.90fdaa22168c235p-2
c9 0f da a2 21 68 c2 35  : 0xc.90fdaa22168c235p-2

$B$A$J$_$K!$>e=R$N(B Web $B$N%F%9%H%3!<%I$r<!$N$h$&$K$$$8$j$^$7$?!%(B
printf() $B$G?tCM$r=P$9$h$j$b!$(Bana_ldouble() $B$r;H$C$FCf?H$r(B
hexa $B$G=P$7$?J}$,!$Hf3S8!F$$,MF0W$@$H;W$$$^$9!%(B

#include <stdio.h>
#include <ieeefp.h>

/*  function prototypes  */
void ana_ldouble( long double x );

int main(void)
{
#if 1  /*  1 : original  */
   volatile long double d = 0x3.243f6a8885a31p0L;
#else
   long double d;

   sscanf("3.14159265358979323846L","%Lf",&d);
#endif

#if 1    /*  0 : OFF, 1 : ON  */
   fpsetprec(FP_PE);
#endif

   ana_ldouble(d);   printf("%La\n", d);

   d = 2.0L * d / 2.0L;

   ana_ldouble(d);   printf("%La\n", d);

   return(0);
}


void ana_ldouble( long double x )  /*  for 80 bits  */
{
   int    i;
   unsigned int s;
   typedef union {  long double     l;
                    unsigned char   c[16]; }  exd;
   exd e;

   for ( i = 0; i < 16; i++ )  e.c[i] = '\0';           /*  clear  */
   e.l = x;

   s = sizeof(long double);
   for ( i = 7; i >= 0; i-- )  printf("%02x ",e.c[i]&0xff);
   printf(" : ");
}


> $B;n$7$K!"(BFreeBSD 6.3$B$G!"(Bports/lang/gcc42$B$K!"(B
($BCfN,(B)
> -#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT)
> +#define TARGET_96_ROUND_53_LONG_DOUBLE 0
> $B$N$h$&$J%Q%C%A$rEv$F$F%S%k%I$7$F;H$C$F$_$k$H!"(B
> -m96bit-long-double$B$H(B-m128bit-long-double$B$N=PNO$N0c$$$O$J$/$J$j$^$7$?!#(B
  $BBgJQ$J8!F$$r$7$F$$$?$@$-?=$7Lu$"$j$^$;$s!%$=$l$K$7$F$b!$(B
$B$3$l$@$H0U?^E*$K$d$C$F$$$k!$$9$J$o$A!V(Bbug $B$G$J$/;EMM!W$J$N$G(B
$B$9$M!%$@$H$7$F$b!$BP>]$,(B 96bit $B$N$_$@$H$+!$(Bsscanf() $B$GFI$_9~$^$;(B
$B$l$P@:EY$OMn$A$J$$$H$+!$0l4S@-$K7g$1$k;EMM$N$h$&$K;W$($^$9!%(B
  $B$"$H!$(BLinux (Debian) $B$d(B cygwin $B$d(B Mac $B$G$O$3$l$r$d$C$F$$$J$$(B
$B$o$1$G!$(BFreeBSD $B$@$1$3$l$r$d$k0UL#$O$J$$$H;W$$$^$9!%(B
($B9gM}E*$J@bL@$,=P$F$3$J$$8B$j$O!%(B)

                     Satoshi Kimura  (satosi.kimura@nifty.com)
