head	1.2;
access;
symbols
	bg2_23:1.2
	bg2_22:1.2
	bg2_21:1.2
	bg2_20:1.2
	bg2_16:1.2
	bg2_15:1.2
	bg2_12:1.2
	bg2_07:1.2
	isorc2008_submission:1.2
	handbook_alpha_edition:1.2
	jtres2007_submission:1.2;
locks; strict;
comment	@# @;


1.2
date	2007.01.22.12.20.51;	author martin;	state Exp;
branches;
next	1.1;
commitid	168945b4ac1d4567;

1.1
date	2007.01.19.17.27.50;	author martin;	state Exp;
branches;
next	;
commitid	1fd645b0ff8e4567;


desc
@@


1.2
log
@SoftFloat update (Math.round())
@
text
@package test;
import java.io.*;
import java.util.*;
import com.jopdesign.sys.SoftFloat;

public class GenFloatTestDef {

  private static int fcmpl(float a, float b) {
  if (Float.isNaN(a)) return -1;
  if (Float.isNaN(b)) return -1;
  if (a == b) return 0;
  if (a < b) return -1;
  return 1;
  }

  private static int fcmpg(float a, float b) {
  if (Float.isNaN(a)) return 1;
  if (Float.isNaN(b)) return 1;
  if (a == b) return 0;
  if (a < b) return -1;
  return 1;
  }

  public static void main (String[] args) {

  float [] nums = { Float.NaN,
	Float.MAX_VALUE,
	Float.MIN_VALUE,
	Float.NEGATIVE_INFINITY,
	Float.POSITIVE_INFINITY,
	0.0f,
	1.0f,
	-1.0f,
	-126.0f,
	-24.0f,
	-2.0f,
	2.0f,
	24.0f,
	127.0f,
	3.14159f,
	2.71828f,
	Float.intBitsToFloat(0x00800000),
	Float.intBitsToFloat(0x33800000),
	Float.intBitsToFloat(0x3E800000),
	Float.intBitsToFloat(0x3F000000),
	Float.intBitsToFloat(0x3F800000),
	Float.intBitsToFloat(0x40000000),
	Float.intBitsToFloat(0x40800000),
	Float.intBitsToFloat(0x4B800000),
	Float.intBitsToFloat(0x7F000000),
	Float.intBitsToFloat(0x80800000),
	Float.intBitsToFloat(0xB3800000),
	Float.intBitsToFloat(0xBE800000),
	Float.intBitsToFloat(0xBF000000),
	Float.intBitsToFloat(0xBF800000),
	Float.intBitsToFloat(0xC0000000),
	Float.intBitsToFloat(0xC0800000),
	Float.intBitsToFloat(0xCB800000),
	Float.intBitsToFloat(0xFE800000),
	Float.intBitsToFloat(0x00000000),
	Float.intBitsToFloat(0x00000001),
	Float.intBitsToFloat(0x00000002),
	Float.intBitsToFloat(0x00000004),
	Float.intBitsToFloat(0x00000008),
	Float.intBitsToFloat(0x00000010),
	Float.intBitsToFloat(0x00000020),
	Float.intBitsToFloat(0x00000040),
	Float.intBitsToFloat(0x00000080),
	Float.intBitsToFloat(0x00000100),
	Float.intBitsToFloat(0x00000200),
	Float.intBitsToFloat(0x00000400),
	Float.intBitsToFloat(0x00000800),
	Float.intBitsToFloat(0x00001000),
	Float.intBitsToFloat(0x00002000),
	Float.intBitsToFloat(0x00004000),
	Float.intBitsToFloat(0x00008000),
	Float.intBitsToFloat(0x00010000),
	Float.intBitsToFloat(0x00020000),
	Float.intBitsToFloat(0x00040000),
	Float.intBitsToFloat(0x00080000),
	Float.intBitsToFloat(0x00100000),
	Float.intBitsToFloat(0x00200000),
	Float.intBitsToFloat(0x00400000),
	Float.intBitsToFloat(0x00800000),
	Float.intBitsToFloat(0x01000000),
	Float.intBitsToFloat(0x02000000),
	Float.intBitsToFloat(0x04000000),
	Float.intBitsToFloat(0x08000000),
	Float.intBitsToFloat(0x10000000),
	Float.intBitsToFloat(0x20000000),
	Float.intBitsToFloat(0x40000000),
	Float.intBitsToFloat(0x80000000),
	Float.intBitsToFloat(0xC0000000),
	Float.intBitsToFloat(0xE0000000),
	Float.intBitsToFloat(0xF0000000),
	Float.intBitsToFloat(0xF8000000),
	Float.intBitsToFloat(0xFC000000),
	Float.intBitsToFloat(0xFE000000),
	Float.intBitsToFloat(0xFF000000),
	Float.intBitsToFloat(0xFF800000),
	Float.intBitsToFloat(0xFFC00000),
	Float.intBitsToFloat(0xFFE00000),
	Float.intBitsToFloat(0xFFF00000),
	Float.intBitsToFloat(0xFFF80000),
	Float.intBitsToFloat(0xFFFC0000),
	Float.intBitsToFloat(0xFFFE0000),
	Float.intBitsToFloat(0xFFFF0000),
	Float.intBitsToFloat(0xFFFF8000),
	Float.intBitsToFloat(0xFFFFC000),
	Float.intBitsToFloat(0xFFFFE000),
	Float.intBitsToFloat(0xFFFFF000),
	Float.intBitsToFloat(0xFFFFF800),
	Float.intBitsToFloat(0xFFFFFC00),
	Float.intBitsToFloat(0xFFFFFE00),
	Float.intBitsToFloat(0xFFFFFF00),
	Float.intBitsToFloat(0xFFFFFF80),
	Float.intBitsToFloat(0xFFFFFFC0),
	Float.intBitsToFloat(0xFFFFFFE0),
	Float.intBitsToFloat(0xFFFFFFF0),
	Float.intBitsToFloat(0xFFFFFFF8),
	Float.intBitsToFloat(0xFFFFFFFC),
	Float.intBitsToFloat(0xFFFFFFFE),
	Float.intBitsToFloat(0xFFFFFFFF),
	Float.intBitsToFloat(0xFFFFFFFE),
	Float.intBitsToFloat(0xFFFFFFFD),
	Float.intBitsToFloat(0xFFFFFFFB),
	Float.intBitsToFloat(0xFFFFFFF7),
	Float.intBitsToFloat(0xFFFFFFEF),
	Float.intBitsToFloat(0xFFFFFFDF),
	Float.intBitsToFloat(0xFFFFFFBF),
	Float.intBitsToFloat(0xFFFFFF7F),
	Float.intBitsToFloat(0xFFFFFEFF),
	Float.intBitsToFloat(0xFFFFFDFF),
	Float.intBitsToFloat(0xFFFFFBFF),
	Float.intBitsToFloat(0xFFFFF7FF),
	Float.intBitsToFloat(0xFFFFEFFF),
	Float.intBitsToFloat(0xFFFFDFFF),
	Float.intBitsToFloat(0xFFFFBFFF),
	Float.intBitsToFloat(0xFFFF7FFF),
	Float.intBitsToFloat(0xFFFEFFFF),
	Float.intBitsToFloat(0xFFFDFFFF),
	Float.intBitsToFloat(0xFFFBFFFF),
	Float.intBitsToFloat(0xFFF7FFFF),
	Float.intBitsToFloat(0xFFEFFFFF),
	Float.intBitsToFloat(0xFFDFFFFF),
	Float.intBitsToFloat(0xFFBFFFFF),
	Float.intBitsToFloat(0xFF7FFFFF),
	Float.intBitsToFloat(0xFEFFFFFF),
	Float.intBitsToFloat(0xFDFFFFFF),
	Float.intBitsToFloat(0xFBFFFFFF),
	Float.intBitsToFloat(0xF7FFFFFF),
	Float.intBitsToFloat(0xEFFFFFFF),
	Float.intBitsToFloat(0xDFFFFFFF),
	Float.intBitsToFloat(0xBFFFFFFF),
	Float.intBitsToFloat(0x7FFFFFFF),
	Float.intBitsToFloat(0x3FFFFFFF),
	Float.intBitsToFloat(0x1FFFFFFF),
	Float.intBitsToFloat(0x0FFFFFFF),
	Float.intBitsToFloat(0x07FFFFFF),
	Float.intBitsToFloat(0x03FFFFFF),
	Float.intBitsToFloat(0x01FFFFFF),
	Float.intBitsToFloat(0x00FFFFFF),
	Float.intBitsToFloat(0x007FFFFF),
	Float.intBitsToFloat(0x003FFFFF),
	Float.intBitsToFloat(0x001FFFFF),
	Float.intBitsToFloat(0x000FFFFF),
	Float.intBitsToFloat(0x0007FFFF),
	Float.intBitsToFloat(0x0003FFFF),
	Float.intBitsToFloat(0x0001FFFF),
	Float.intBitsToFloat(0x0000FFFF),
	Float.intBitsToFloat(0x00007FFF),
	Float.intBitsToFloat(0x00003FFF),
	Float.intBitsToFloat(0x00001FFF),
	Float.intBitsToFloat(0x00000FFF),
	Float.intBitsToFloat(0x000007FF),
	Float.intBitsToFloat(0x000003FF),
	Float.intBitsToFloat(0x000001FF),
	Float.intBitsToFloat(0x000000FF),
	Float.intBitsToFloat(0x0000007F),
	Float.intBitsToFloat(0x0000003F),
	Float.intBitsToFloat(0x0000001F),
	Float.intBitsToFloat(0x0000000F),
	Float.intBitsToFloat(0x00000007),
	Float.intBitsToFloat(0x00000003),
	Float.intBitsToFloat(0x80000000),
	Float.intBitsToFloat(0x80000001),
	Float.intBitsToFloat(0x80000002),
	Float.intBitsToFloat(0x80000004),
	Float.intBitsToFloat(0x80000008),
	Float.intBitsToFloat(0x80000010),
	Float.intBitsToFloat(0x80000020),
	Float.intBitsToFloat(0x80000040),
	Float.intBitsToFloat(0x80000080),
	Float.intBitsToFloat(0x80000100),
	Float.intBitsToFloat(0x80000200),
	Float.intBitsToFloat(0x80000400),
	Float.intBitsToFloat(0x80000800),
	Float.intBitsToFloat(0x80001000),
	Float.intBitsToFloat(0x80002000),
	Float.intBitsToFloat(0x80004000),
	Float.intBitsToFloat(0x80008000),
	Float.intBitsToFloat(0x80010000),
	Float.intBitsToFloat(0x80020000),
	Float.intBitsToFloat(0x80040000),
	Float.intBitsToFloat(0x80080000),
	Float.intBitsToFloat(0x80100000),
	Float.intBitsToFloat(0x80200000),
	Float.intBitsToFloat(0x80400000),
	Float.intBitsToFloat(0x80800000),
	Float.intBitsToFloat(0x81000000),
	Float.intBitsToFloat(0x82000000),
	Float.intBitsToFloat(0x84000000),
	Float.intBitsToFloat(0x88000000),
	Float.intBitsToFloat(0x90000000),
	Float.intBitsToFloat(0xA0000000),
	Float.intBitsToFloat(0xC0000000),
	Float.intBitsToFloat(0x80000000),
	Float.intBitsToFloat(0xBFFFFFFF),
	Float.intBitsToFloat(0x9FFFFFFF),
	Float.intBitsToFloat(0x8FFFFFFF),
	Float.intBitsToFloat(0x87FFFFFF),
	Float.intBitsToFloat(0x83FFFFFF),
	Float.intBitsToFloat(0x81FFFFFF),
	Float.intBitsToFloat(0x80FFFFFF),
	Float.intBitsToFloat(0x807FFFFF),
	Float.intBitsToFloat(0x803FFFFF),
	Float.intBitsToFloat(0x801FFFFF),
	Float.intBitsToFloat(0x800FFFFF),
	Float.intBitsToFloat(0x8007FFFF),
	Float.intBitsToFloat(0x8003FFFF),
	Float.intBitsToFloat(0x8001FFFF),
	Float.intBitsToFloat(0x8000FFFF),
	Float.intBitsToFloat(0x80007FFF),
	Float.intBitsToFloat(0x80003FFF),
	Float.intBitsToFloat(0x80001FFF),
	Float.intBitsToFloat(0x80000FFF),
	Float.intBitsToFloat(0x800007FF),
	Float.intBitsToFloat(0x800003FF),
	Float.intBitsToFloat(0x800001FF),
	Float.intBitsToFloat(0x800000FF),
	Float.intBitsToFloat(0x8000007F),
	Float.intBitsToFloat(0x8000003F),
	Float.intBitsToFloat(0x8000001F),
	Float.intBitsToFloat(0x8000000F),
	Float.intBitsToFloat(0x80000007),
	Float.intBitsToFloat(0x80000003),
	Float.intBitsToFloat(0xabfb2c81),
	Float.intBitsToFloat(0xeb21fece),
	Float.intBitsToFloat(0x361b388b),
	Float.intBitsToFloat(0x7621d144),
	Float.intBitsToFloat(0x838b1c87),
	Float.intBitsToFloat(0x4476555a),
	Float.intBitsToFloat(0xac7cc276),
	Float.intBitsToFloat(0xec4111fe),
	Float.intBitsToFloat(0x83bd1c1b),
	Float.intBitsToFloat(0x43bd69ec),
	Float.intBitsToFloat(0xb08711b2),
	Float.intBitsToFloat(0x70e7fc01),
	Float.intBitsToFloat(0xb6c4c126),
	Float.intBitsToFloat(0xf84a5aed),
	Float.intBitsToFloat(0x9e1b55f9),
	Float.intBitsToFloat(0x5e99b660),
	Float.intBitsToFloat(0xbfc02e00),
	Float.intBitsToFloat(0xc2020300),
	Float.intBitsToFloat(0xc22a0300),
	Float.intBitsToFloat(0xc2020300),
	Float.intBitsToFloat(0xc1780200),
	Float.intBitsToFloat(0xc1e40400),
	Float.intBitsToFloat(0xbfc02c00),
	Float.intBitsToFloat(0xc1180d00),
	Float.intBitsToFloat(0xc2df0100),
	Float.intBitsToFloat(0xc19c0000),
	Float.intBitsToFloat(0xc2950100),
	Float.intBitsToFloat(0xc2a30100),
	Float.intBitsToFloat(0xc2c30100),
	Float.intBitsToFloat(0x3effffff)  };

  System.err.println("Testing predefined values...");
  for (int i=0; i<nums.length; i++) {
    for (int k=0; k<nums.length; k++) {
    {
      int pc_val = Float.floatToRawIntBits(nums[i] + nums[k]);
      int jop_val = SoftFloat.float32_add (Float.floatToRawIntBits(nums[i]), Float.floatToRawIntBits(nums[k]));
      if ((Float.isNaN(Float.intBitsToFloat(pc_val)) != Float.isNaN(Float.intBitsToFloat(jop_val))) || (!Float.isNaN(Float.intBitsToFloat(pc_val)) && (pc_val != jop_val))) {
        System.err.println("("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"+" +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+") != SoftFloat.float32_add ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"," +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+")");
        System.err.println(Integer.toHexString(pc_val)+" != "+Integer.toHexString(jop_val));
      }
    }
    }
  }
  System.err.println("Testing SoftFloat.float32_add finished.");
  for (int i=0; i<nums.length; i++) {
    for (int k=0; k<nums.length; k++) {
    {
      int pc_val = Float.floatToRawIntBits(nums[i] - nums[k]);
      int jop_val = SoftFloat.float32_sub (Float.floatToRawIntBits(nums[i]), Float.floatToRawIntBits(nums[k]));
      if ((Float.isNaN(Float.intBitsToFloat(pc_val)) != Float.isNaN(Float.intBitsToFloat(jop_val))) || (!Float.isNaN(Float.intBitsToFloat(pc_val)) && (pc_val != jop_val))) {
        System.err.println("("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"-" +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+") != SoftFloat.float32_sub ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"," +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+")");
        System.err.println(Integer.toHexString(pc_val)+" != "+Integer.toHexString(jop_val));
      }
    }
    }
  }
  System.err.println("Testing SoftFloat.float32_sub finished.");
  for (int i=0; i<nums.length; i++) {
    for (int k=0; k<nums.length; k++) {
    {
      int pc_val = Float.floatToRawIntBits(nums[i] * nums[k]);
      int jop_val = SoftFloat.float32_mul (Float.floatToRawIntBits(nums[i]), Float.floatToRawIntBits(nums[k]));
      if ((Float.isNaN(Float.intBitsToFloat(pc_val)) != Float.isNaN(Float.intBitsToFloat(jop_val))) || (!Float.isNaN(Float.intBitsToFloat(pc_val)) && (pc_val != jop_val))) {
        System.err.println("("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"*" +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+") != SoftFloat.float32_mul ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"," +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+")");
        System.err.println(Integer.toHexString(pc_val)+" != "+Integer.toHexString(jop_val));
      }
    }
    }
  }
  System.err.println("Testing SoftFloat.float32_mul finished.");
  for (int i=0; i<nums.length; i++) {
    for (int k=0; k<nums.length; k++) {
    {
      int pc_val = Float.floatToRawIntBits(nums[i] / nums[k]);
      int jop_val = SoftFloat.float32_div (Float.floatToRawIntBits(nums[i]), Float.floatToRawIntBits(nums[k]));
      if ((Float.isNaN(Float.intBitsToFloat(pc_val)) != Float.isNaN(Float.intBitsToFloat(jop_val))) || (!Float.isNaN(Float.intBitsToFloat(pc_val)) && (pc_val != jop_val))) {
        System.err.println("("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"/" +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+") != SoftFloat.float32_div ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"," +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+")");
        System.err.println(Integer.toHexString(pc_val)+" != "+Integer.toHexString(jop_val));
      }
    }
    }
  }
  System.err.println("Testing SoftFloat.float32_div finished.");
  for (int i=0; i<nums.length; i++) {
    for (int k=0; k<nums.length; k++) {
    {
      int pc_val = Float.floatToRawIntBits(nums[i] % nums[k]);
      int jop_val = SoftFloat.float32_rem (Float.floatToRawIntBits(nums[i]), Float.floatToRawIntBits(nums[k]));
      if ((Float.isNaN(Float.intBitsToFloat(pc_val)) != Float.isNaN(Float.intBitsToFloat(jop_val))) || (!Float.isNaN(Float.intBitsToFloat(pc_val)) && (pc_val != jop_val))) {
        System.err.println("("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"%" +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+") != SoftFloat.float32_rem ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"," +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+")");
        System.err.println(Integer.toHexString(pc_val)+" != "+Integer.toHexString(jop_val));
      }
    }
    }
  }
  System.err.println("Testing SoftFloat.float32_rem finished.");
  for (int i=0; i<nums.length; i++) {
    for (int k=0; k<nums.length; k++) {
    {
       int pc_val = fcmpl (nums[i], nums[k]);
       int jop_val = SoftFloat.float32_cmpl (Float.floatToRawIntBits(nums[i]), Float.floatToRawIntBits(nums[k]));
       if (pc_val != jop_val) {
         System.err.println("fcmpl ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"," +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+") != SoftFloat.float32_cmpl ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"," +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+")");
         System.err.println(Integer.toHexString(pc_val)+" != "+Integer.toHexString(jop_val));
       }
    }
    }
  }
  System.err.println("Testing SoftFloat.float32_cmpl finished.");
  for (int i=0; i<nums.length; i++) {
    for (int k=0; k<nums.length; k++) {
    {
       int pc_val = fcmpg (nums[i], nums[k]);
       int jop_val = SoftFloat.float32_cmpg (Float.floatToRawIntBits(nums[i]), Float.floatToRawIntBits(nums[k]));
       if (pc_val != jop_val) {
         System.err.println("fcmpg ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"," +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+") != SoftFloat.float32_cmpg ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+"," +Integer.toHexString(Float.floatToRawIntBits(nums[k]))+")");
         System.err.println(Integer.toHexString(pc_val)+" != "+Integer.toHexString(jop_val));
       }
    }
    }
  }
  System.err.println("Testing SoftFloat.float32_cmpg finished.");
  for (int i=0; i<nums.length; i++) {
    {
       int pc_val = Math.round (nums[i]);
       int jop_val = SoftFloat.float32_to_int32 (Float.floatToRawIntBits(nums[i]));
       if (pc_val != jop_val) {
         System.err.println("Math.round ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+") != SoftFloat.float32_to_int32 ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+")");
         System.err.println(Integer.toHexString(pc_val)+" != "+Integer.toHexString(jop_val));
       }
    }
  }
  System.err.println("Testing SoftFloat.float32_to_int32 finished.");
  for (int i=0; i<nums.length; i++) {
    {
       int pc_val = (int) (nums[i]);
       int jop_val = SoftFloat.float32_to_int32_round_to_zero (Float.floatToRawIntBits(nums[i]));
       if (pc_val != jop_val) {
         System.err.println("(int) ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+") != SoftFloat.float32_to_int32_round_to_zero ("+Integer.toHexString(Float.floatToRawIntBits(nums[i]))+")");
         System.err.println(Integer.toHexString(pc_val)+" != "+Integer.toHexString(jop_val));
       }
    }
  }
  System.err.println("Testing SoftFloat.float32_to_int32_round_to_zero finished.");
    System.err.println("All tests finished.");
  }
}
@


1.1
log
@SoftFloat
@
text
@d262 15
a276 1
	Float.intBitsToFloat(0x5e99b660)  };
d370 22
@

