public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: tthomas@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Remove files - causes build failure on FC5. Date: Tue, 11 Dec 2007 16:21:00 -0000 [thread overview] Message-ID: <20071211162108.28822.qmail@sourceware.org> (raw) The branch, master has been updated via 2c838b4e166d5faf1823a54aca4e69648ac4bab3 (commit) from 194ea98cd4af4ce4c3b436212c9c19b737782744 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 2c838b4e166d5faf1823a54aca4e69648ac4bab3 Author: Teresa <tthomas@redhat.com> Date: Tue Dec 11 11:20:05 2007 -0500 Remove files - causes build failure on FC5. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/value/BigFloatingPoint.java | 234 ---------------------- frysk-core/frysk/value/TestBigFloatingPoint.java | 207 ------------------- 2 files changed, 0 insertions(+), 441 deletions(-) delete mode 100644 frysk-core/frysk/value/BigFloatingPoint.java delete mode 100644 frysk-core/frysk/value/TestBigFloatingPoint.java First 500 lines of diff: diff --git a/frysk-core/frysk/value/BigFloatingPoint.java b/frysk-core/frysk/value/BigFloatingPoint.java deleted file mode 100644 index b90f5d3..0000000 --- a/frysk-core/frysk/value/BigFloatingPoint.java +++ /dev/null @@ -1,234 +0,0 @@ -// This file is part of the program FRYSK. -// -// Copyright 2007, Red Hat Inc. -// -// FRYSK is free software; you can redistribute it and/or modify it -// under the terms of the GNU General Public License as published by -// the Free Software Foundation; version 2 of the License. -// -// FRYSK is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with FRYSK; if not, write to the Free Software Foundation, -// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. -// -// In addition, as a special exception, Red Hat, Inc. gives You the -// additional right to link the code of FRYSK with code not covered -// under the GNU General Public License ("Non-GPL Code") and to -// distribute linked combinations including the two, subject to the -// limitations in this paragraph. Non-GPL Code permitted under this -// exception must only link to the code of FRYSK through those well -// defined interfaces identified in the file named EXCEPTION found in -// the source code files (the "Approved Interfaces"). The files of -// Non-GPL Code may instantiate templates or use macros or inline -// functions from the Approved Interfaces without causing the -// resulting work to be covered by the GNU General Public -// License. Only Red Hat, Inc. may make changes or additions to the -// list of Approved Interfaces. You must obey the GNU General Public -// License in all respects for all of the FRYSK code and other code -// used in conjunction with FRYSK except the Non-GPL Code covered by -// this exception. If you modify this file, you may extend this -// exception to your version of the file, but you are not obligated to -// do so. If you do not wish to provide this exception without -// modification, you must delete this exception statement from your -// version and license this file solely under the GPL without -// exception. - -package frysk.value; - -import java.math.BigDecimal; -import java.math.BigInteger; - -/** - * Floating point type - uses java.math.BigDecimal. - */ -public class BigFloatingPoint -{ - private BigDecimal value; - private int encoding; - - public static final int proper = 0; - public static final int NaN = 1; - public static final int posInf = 2; - public static final int negInf = 3; - - // Packing objects for each IEEE FP type. - private static final Packing packExponent32 = new Packing (4, 1, 8); - private static final Packing packFraction32 = new Packing (4, 9, 23); - private static final Packing packExponent64 = new Packing (8, 1, 11); - private static final Packing packFraction64 = new Packing (8, 12, 52); - // FIXME: 128 bit long doubles on x86_64 follow 80 bit "format" - private static final Packing packExponent128 = new Packing (16, 1, 15); - private static final Packing packFraction128 = new Packing (16, 16, 112); - private static final Packing packExponent96 = new Packing (12, 1+16, 15); - private static final Packing packFraction96 = new Packing (12, 16+16, 64); - private static final Packing packExponent80 = new Packing (10, 1, 15); - private static final Packing packFraction80 = new Packing (10, 16, 64); - - private static final BigDecimal two = BigDecimal.ONE.add(BigDecimal.ONE); - - /** - * Create a BigFloatingPoint from a BigDecimal. - */ - BigFloatingPoint (BigDecimal value) { - this.value = value; - this.encoding = proper; - } - - /** - * Create a BigFloatingPoint from the big-endian raw - * bytes. bytes[] contain three fields: - * sign, exponent and fraction - */ - BigFloatingPoint (byte[] bytes) { - Packing e; - Packing f; - int maxE; - int sizeofF; - - switch (bytes.length) { - case 4: - e = packExponent32; - f = packFraction32; - sizeofF = 23; - maxE = 0xff; - break; - case 8: - e = packExponent64; - f = packFraction64; - sizeofF = 52; - maxE = 0x7ff; - break; - case 16: - e = packExponent128; - f = packFraction128; - sizeofF = 112; - maxE = 0x7fff; - break; - case 12: - e = packExponent96; - f = packFraction96; - sizeofF = 64; - maxE = 0x7fff; - break; - case 10: - e = packExponent80; - f = packFraction80; - sizeofF = 64; - maxE = 0x7fff; - break; - default: - throw new RuntimeException ("Unsupported Floating Point size"); - } - int s = (((bytes[0] >> 7) & 0x01) == 0) ? -1:1; - - BigDecimal m = getMantissa(f.unpackUnsigned(bytes), - e.unpackUnsigned(bytes), - sizeofF); - calculateValue (s, e.unpackUnsigned(bytes), m, BigInteger.valueOf(maxE)); - } - - /** - * Gets mantissa value according to IEEE 754/854 floating point rules - * - * @param f - value of fraction field (including j bit where applicable) - * @param e - value of exponent field - * @param sizeOfF - bit size of fraction field - * (including j bit where applicable) - * @return mantissa - */ - private BigDecimal getMantissa (BigInteger f, BigInteger e, int sizeOfF) { - if (sizeOfF == 64) - return getMantissaExtended (f, sizeOfF); - - int trailingZeroes = f.getLowestSetBit(); - BigDecimal m = new BigDecimal (f.shiftRight(trailingZeroes)); - m = divide (m, two.pow(sizeOfF-trailingZeroes)); - return (e.compareTo(BigInteger.ZERO) == 0)? m : BigDecimal.ONE.add(m); - } - - private BigDecimal getMantissaExtended (BigInteger f, int sizeOfF){ - int trailingZeroes = f.getLowestSetBit(); - boolean j = f.testBit(f.bitLength()-1); - f = f.clearBit(f.bitLength()-1); - BigDecimal m = new BigDecimal (f.shiftRight(trailingZeroes)); - m = divide (m, two.pow(sizeOfF-trailingZeroes-1)); - return (j == false)? m : BigDecimal.ONE.add(m); - } - - /** - * Calculate floating point value according to IEEE 754/854 rules. - * @param s - sign bit - * @param e - value of exponent field - * @param m - mantissa - * @param maxE - max possible value of exponent field - */ - private void calculateValue (int s, BigInteger e, BigDecimal m, BigInteger maxE) { - BigDecimal result = BigDecimal.ZERO; - BigDecimal one = BigDecimal.ONE; - int halfMaxE = maxE.intValue()/2; - - if (e.compareTo(maxE) == 0) { - if (m.compareTo(BigDecimal.ZERO) != 0) { - // FIXME: Should NaNs retain value of fraction - // or mantissa? - this.value = m; - this.encoding = NaN; - } - else { - // FIXME: Should this retain any value here? - this.value = null; - this.encoding = ( s == -1 )? posInf:negInf; - } - } - else if (e.compareTo(BigInteger.ZERO) == 0) { - if (m.compareTo(BigDecimal.ZERO) != 0) { - result = divide(one, two.pow(halfMaxE-1)).multiply(m); - } - else { - result = BigDecimal.ZERO; - } - this.value = (s == -1)? result:result.negate(); - this.encoding = proper; - } - else if (e.compareTo(BigInteger.ZERO) > 0 && e.compareTo(maxE) < 0) { - if (e.intValue()-halfMaxE < 0) - result = divide (one, two.pow(-e.intValue()+halfMaxE)).multiply(m); - else - result = two.pow(e.intValue()-halfMaxE).multiply(m); - this.value = ( s == -1 )? result:result.negate(); - this.encoding = proper; - } - else { - throw new RuntimeException - ("IEEE 754/854 Floating Point conversion error."); - } - } - - private BigDecimal divide (BigDecimal a, BigDecimal b) { - BigDecimal result[] = a.divideAndRemainder(b); - // FIXME: Use long division? Use BigDecimal's - // divide(BigDecimal,MathContext) when frysk - // moves to java 1.5.0. - double fraction = result[1].doubleValue()/b.doubleValue(); - return result[0].add(BigDecimal.valueOf(fraction)); - } - - BigDecimal getValue () { - return value; - } - - int getEncoding () { - return encoding; - } - - double doubleValue() { - if (encoding == proper) - return value.doubleValue(); - else - return 0; - } -} diff --git a/frysk-core/frysk/value/TestBigFloatingPoint.java b/frysk-core/frysk/value/TestBigFloatingPoint.java deleted file mode 100644 index 82a6f67..0000000 --- a/frysk-core/frysk/value/TestBigFloatingPoint.java +++ /dev/null @@ -1,207 +0,0 @@ -// This file is part of the program FRYSK. -// -// Copyright 2007, Red Hat Inc. -// -// FRYSK is free software; you can redistribute it and/or modify it -// under the terms of the GNU General Public License as published by -// the Free Software Foundation; version 2 of the License. -// -// FRYSK is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with FRYSK; if not, write to the Free Software Foundation, -// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. -// -// In addition, as a special exception, Red Hat, Inc. gives You the -// additional right to link the code of FRYSK with code not covered -// under the GNU General Public License ("Non-GPL Code") and to -// distribute linked combinations including the two, subject to the -// limitations in this paragraph. Non-GPL Code permitted under this -// exception must only link to the code of FRYSK through those well -// defined interfaces identified in the file named EXCEPTION found in -// the source code files (the "Approved Interfaces"). The files of -// Non-GPL Code may instantiate templates or use macros or inline -// functions from the Approved Interfaces without causing the -// resulting work to be covered by the GNU General Public -// License. Only Red Hat, Inc. may make changes or additions to the -// list of Approved Interfaces. You must obey the GNU General Public -// License in all respects for all of the FRYSK code and other code -// used in conjunction with FRYSK except the Non-GPL Code covered by -// this exception. If you modify this file, you may extend this -// exception to your version of the file, but you are not obligated to -// do so. If you do not wish to provide this exception without -// modification, you must delete this exception statement from your -// version and license this file solely under the GPL without -// exception. - -package frysk.value; - -import java.math.BigDecimal; -import frysk.junit.TestCase; - -public class TestBigFloatingPoint - extends TestCase -{ - /** - * Pass when CORRECT is exactly (i.e., bitwise) equal to TEST. - */ - static void checkEquals(String what, double correct, double test) { - if (Double.doubleToRawLongBits(correct) - != Double.doubleToRawLongBits(test)) { - fail(what - + ": expected <" + correct + ">" - + " got <" + test + ">"); - } - } - - static final byte[] FLOAT_HALF = new byte[] { - 0x3f, 0x00, 0x00, 0x00 - }; - static final byte[] FLOAT_NEGATIVE_ZERO = new byte[] { - (byte)0x80, 0x00, 0x00, 0x00 - }; - static final byte[] FLOAT_POSITIVE_ZERO = new byte[] { - 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] FLOAT_ONE = new byte[] { - 0x3f, (byte)0x80, 0x00, 0x00 - }; - static final byte[] FLOAT_TWO = new byte[] { - 0x40, 0x00, 0x00, 0x00 - }; - static final byte[] FLOAT_NINE = new byte[] { - 0x41, 0x10, 0x00, 0x00 - }; - - static final byte[] DOUBLE_ONE = new byte[] { - 0x3f, (byte)0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] DOUBLE_HALF = new byte[] { - 0x3f, (byte)0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] DOUBLE_NEGATIVE_ZERO = new byte[] { - (byte)0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] DOUBLE_POSITIVE_ZERO = new byte[] { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] DOUBLE_TWO = new byte[] { - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] DOUBLE_NINE = new byte[] { - 0x40, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] DOUBLE_FIVEPOINT769 = new byte[] { - (byte)0xc0, 0x17, 0x13, 0x74, (byte)0xbc, 0x6a, 0x7e, (byte)0xfa - }; - - static final byte[] FP_128_HALF = new byte[] { - 0x3f, (byte)0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] FP_128_ONE = new byte[] { - 0x3f, (byte)0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] FP_128_NEGATIVE_ZERO = new byte[] { - (byte)0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] FP_128_POSITIVE_ZERO = new byte[] { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] FP_128_TWO = new byte[] { - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - static final byte[] FP_80_SEVENPOINT5 = new byte[] { - 0x40, 0x01, (byte)0xf0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - static final byte[] FP_96_ONE = new byte[] { - 0x00, 0x00, 0x3f, (byte)0xff, (byte)0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - static final byte[] FP_96_NINE = new byte[] { - 0x00, 0x00, 0x40, 0x02, (byte)0x90, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - static final byte[] FP_96_SEVENPOINT5 = new byte[] { - 0x00, 0x00, 0x40, 0x01, (byte)0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static final byte[] FP_128_SEVENPOINTFIVE = new byte[] { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x01, (byte)0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 - }; - static final byte[] FP_128_NEGATIVE_TWO = new byte[] { - (byte)0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - public void testFromBigDecimal() { - BigFloatingPoint f = new BigFloatingPoint(new BigDecimal(1.0)); - checkEquals("float", 1.0, f.doubleValue()); - } - - public void testFromBytes() { - checkEquals("float 1", 1.0, - new BigFloatingPoint(FLOAT_ONE).doubleValue()); - checkEquals("float .5", 0.5, - new BigFloatingPoint(FLOAT_HALF).doubleValue()); - checkEquals("float -0", 0.0, - new BigFloatingPoint(FLOAT_NEGATIVE_ZERO).doubleValue()); - checkEquals("float +0", +0.0, - new BigFloatingPoint(FLOAT_POSITIVE_ZERO).doubleValue()); - checkEquals("float 2", 2.0, - new BigFloatingPoint(FLOAT_TWO).doubleValue()); - checkEquals("float 9", 9.0, - new BigFloatingPoint(FLOAT_NINE).doubleValue()); - - checkEquals("double 1", 1.0, - new BigFloatingPoint(DOUBLE_ONE).doubleValue()); - checkEquals("double .5", 0.5, - new BigFloatingPoint(DOUBLE_HALF).doubleValue()); - checkEquals("double -0", 0.0, - new BigFloatingPoint(DOUBLE_NEGATIVE_ZERO).doubleValue()); - checkEquals("double +0", +0.0, - new BigFloatingPoint(DOUBLE_POSITIVE_ZERO).doubleValue()); - checkEquals("double 2", 2.0, - new BigFloatingPoint(DOUBLE_TWO).doubleValue()); - checkEquals("double 9", 9.0, - new BigFloatingPoint(DOUBLE_NINE).doubleValue()); - checkEquals("double -5.769", -5.769, - new BigFloatingPoint(DOUBLE_FIVEPOINT769).doubleValue()); - - checkEquals("FP_80 7.5", 7.5, - new BigFloatingPoint(FP_80_SEVENPOINT5).doubleValue()); - - checkEquals("FP_128 1", 1.0, - new BigFloatingPoint(FP_128_ONE).doubleValue()); - checkEquals("FP_128 0.5", 0.5, - new BigFloatingPoint(FP_128_HALF).doubleValue()); - checkEquals("FP_128 -0", 0.0, - new BigFloatingPoint(FP_128_NEGATIVE_ZERO).doubleValue()); - checkEquals("FP_128 +0", 0.0, - new BigFloatingPoint(FP_128_POSITIVE_ZERO).doubleValue()); - checkEquals("FP_128 2.0", 2.0, - new BigFloatingPoint(FP_128_TWO).doubleValue()); - - checkEquals("FP_96 1", 1.0, - new BigFloatingPoint(FP_96_ONE).doubleValue()); - checkEquals("FP_96 9", 9.0, - new BigFloatingPoint(FP_96_NINE).doubleValue()); - checkEquals("FP_96 9", 7.5, - new BigFloatingPoint(FP_96_SEVENPOINT5).doubleValue()); - } -} - hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2007-12-11 16:21 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20071211162108.28822.qmail@sourceware.org \ --to=tthomas@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).