From owner-freebsd-java Sat Feb 15 0:54:38 2003 Delivered-To: freebsd-java@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7B4B937B401 for ; Sat, 15 Feb 2003 00:54:36 -0800 (PST) Received: from mx1.aist.go.jp (mx1.aist.go.jp [150.29.246.133]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9898043F93 for ; Sat, 15 Feb 2003 00:54:32 -0800 (PST) (envelope-from shudo@computer.org) Received: from rpsmtp1.aist.go.jp by mx1.aist.go.jp with ESMTP id h1F8sT820948 for ; Sat, 15 Feb 2003 17:54:30 +0900 (JST) env-from (shudo@computer.org) Received: from mail02.aist.go.jp by rpsmtp1.aist.go.jp with ESMTP id h1F8sT200386 for ; Sat, 15 Feb 2003 17:54:29 +0900 (JST) env-from (shudo@computer.org) Received: from aist.go.jp by mail02.aist.go.jp with ESMTP id h1F8sRT12712 for ; Sat, 15 Feb 2003 17:54:28 +0900 (JST) env-from (shudo@computer.org) Date: Sat, 15 Feb 2003 17:54:21 +0900 (JST) Message-Id: <20030215.175421.1015281127.shudo@localhost> To: java@FreeBSD.ORG Subject: Re: Math.pow bug for jdk1.3.1-p8 ? From: shudo@computer.org In-Reply-To: <3E4C9DDD.4040204@gddsn.org.cn> References: <3E4C9DDD.4040204@gddsn.org.cn> X-Mailer: Mew version 2.2 on XEmacs 21.4.8 (Honest Recruiter) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-java@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Hi guys who love hairsplitting (including me, and this is certainly an important problem), From: Huang wen hui > I build jdk1.3.1-p8 for 4.7-STABLE(today), Math.pow return wrong value > if using the following example: > > public class TestPow { > public static void main(String[] args) { > int exp =9; > int i = (int)Math.pow(2.0,(double)exp); > System.out.println("i="+i); > } > } > > ----------output------------ > %java TestPow > i=0 I could reproduce your problem with JDK 1.3.1p8 and gcc 2.95.4 on recent 4.7-STABLE. % java -version java version "1.3.1-p8" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-p8-root-030213-11:48) Classic VM (build 1.3.1-p8-root-030213-11:48, green threads, nojit) % gcc -v Using builtin specs. gcc version 2.95.4 20020320 [FreeBSD] % uname -a FreeBSD dv1.a02.aist.go.jp 4.7-STABLE FreeBSD 4.7-STABLE #0: Thu Feb 13 20:58:55 JST 2003 root@dv1.a02.aist.go.jp:/usr/src/sys/compile/MEBIUS140H i386 I could confirm __j__ieee754_pow() in libjava.so behaves wrong and one in libjava_g.so works correctly. I also tried writing a test program which calls __j__ieee754_pow() and linked the program with e_pow.o, w_sqrt.o, e_sqrt.o, s_fabs.o, s_scalbn.o and s_copysign.o generated during compilation process of JDK 1.3.1. The program produces the incorrect value (0, not 512). It is certain that there is a problem around fdlibm, FreeBSD's gcc 2.95.4 or how the fdlibm compiled (compiler flags?). Kazuyuki Shudo shudo@computer.org http://www.shudo.net/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-java" in the body of the message