Added gnu header.
authortwisti <none@none>
Fri, 3 Dec 2004 15:44:38 +0000 (15:44 +0000)
committertwisti <none@none>
Fri, 3 Dec 2004 15:44:38 +0000 (15:44 +0000)
tests/fptest.java

index 537236b247cc0803e4631aa534e775cabf4d9b19..3381fedcce0a67cc155ca60559040b4dd9b64763 100644 (file)
-/***************************** alpha/ngen.c ************************************
+/* tests/fptest.java - checks most of the floating point instructions
 
-       Copyright (c) 1997 A. Krall, R. Grafl, M. Gschwind, M. Probst
+   Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
+   R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
+   C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
+   TU Wien
 
-       See file COPYRIGHT for information on usage and disclaimer of warranties
+   This file is part of CACAO.
 
-       Contains the codegenerator for an Alpha processor.
-       This module generates Alpha machine code for a sequence of
-       pseudo commands (ICMDs).
+   This program 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; either version 2, or (at
+   your option) any later version.
 
-       Authors: Andreas  Krall      EMAIL: cacao@complang.tuwien.ac.at
-                Reinhard Grafl      EMAIL: cacao@complang.tuwien.ac.at
+   This program 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.
 
-       Last Change: 1998/08/10
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+   02111-1307, USA.
 
-*******************************************************************************/
+   Contact: cacao@complang.tuwien.ac.at
+
+   Authors: Andreas Krall
+
+   Changes: Christian Thalinger
+
+   $Id: fptest.java 1660 2004-12-03 15:44:38Z twisti $
+
+*/
 
 public class fptest {
-       public static void main(String [] s) {
-
-               float  fnan  = Float.NaN;
-               float  fpinf = Float.POSITIVE_INFINITY;
-               float  fninf = Float.NEGATIVE_INFINITY;
-               float  fmax  = Float.MAX_VALUE;
-               float  fmin  = Float.MIN_VALUE;
-               float  f1    = 0F;
-               float  f2    = 0F;
-
-               double dnan  = Double.NaN;
-               double dpinf = Double.POSITIVE_INFINITY;
-               double dninf = Double.NEGATIVE_INFINITY;
-               double dmax  = Double.MAX_VALUE;
-               double dmin  = Double.MIN_VALUE;
-               double d1    = 0D;
-               double d2    = 0D;
+    public static void main(String [] s) {
+        float  fnan  = Float.NaN;
+        float  fpinf = Float.POSITIVE_INFINITY;
+        float  fninf = Float.NEGATIVE_INFINITY;
+        float  fmax  = Float.MAX_VALUE;
+        float  fmin  = Float.MIN_VALUE;
+        float  f1    = 0F;
+        float  f2    = 0F;
+
+        double dnan  = Double.NaN;
+        double dpinf = Double.POSITIVE_INFINITY;
+        double dninf = Double.NEGATIVE_INFINITY;
+        double dmax  = Double.MAX_VALUE;
+        double dmin  = Double.MIN_VALUE;
+        double d1    = 0D;
+        double d2    = 0D;
                
-               p("---------------------------- tests NaNs and Infs -------------------");
-               p("------------------- print NaNs and Infs");
-
-               p("NaNQ ", fnan);
-               p("+INF ", fpinf);
-               p("-INF ", fninf);
-
-               p("NaNQ ", dnan);
-               p("+INF ", dpinf);
-               p("-INF ", dninf);
-
-               p("------------------- test zero division");
-
-               zerodiv("0 / 0 = NaNQ ",  0F, f1);
-               zerodiv("+ / 0 = +INF ",  5F, f1);
-               zerodiv("- / 0 = -INF ", -5F, f1);
-
-               zerodiv("0 / 0 = NaNQ ",  0D, d1);
-               zerodiv("+ / 0 = +INF ",  5D, d1);
-               zerodiv("- / 0 = -INF ", -5D, d1);
-
-               p("------------------- test conversions");
-               testfcvt("NaNQ", fnan, dnan);
-               testfcvt("+INF", fpinf, dpinf);
-               testfcvt("-INF", fninf, dninf);
-               testfcvt(" MAX",  fmax, dmax);
-               testfcvt(" MIN",  fmin, dmin);
-               testfcvt("MAXINT-1",  2147483646.0F, 2147483646.0D);
-               testfcvt("MAXINT+0",  2147483647.0F, 2147483647.0D);
-               testfcvt("MAXINT+1",  2147483648.0F, 2147483648.0D);
-               testfcvt("-MAXINT+1",  -2147483647.0F, -2147483647.0D);
-               testfcvt("-MAXINT+0",  -2147483648.0F, -2147483648.0D);
-               testfcvt("-MAXINT-1",  -2147483649.0F, -2147483649.0D);
-               testfcvt("MAXLNG-1",  9223372036854775806.0F, 9223372036854775806.0D);
-               testfcvt("MAXLNG+0",  9223372036854775807.0F, 9223372036854775807.0D);
-               testfcvt("MAXLNG+1",  9223372036854775808.0F, 9223372036854775808.0D);
-               testfcvt("-MAXLNG+1",  -9223372036854775807.0F, -9223372036854775807.0D);
-               testfcvt("-MAXLNG+0",  -9223372036854775808.0F, -9223372036854775808.0D);
-               testfcvt("-MAXLNG-1",  -9223372036854775809.0F, -9223372036854775809.0D);
-
-               p("------------------- test NaNQ op value");
-               testfops("NaNQ", "5.0", fnan, 5F, dnan, 5D);
-               testfcmp("NaNQ", "5.0", fnan, 5F, dnan, 5D);
-
-               p("------------------- test value op NaNQ");
-               testfops("5.0", "NaNQ", 5F, fnan, 5D, dnan);
-               testfcmp("5.0", "NaNQ", 5F, fnan, 5D, dnan);
-
-               p("------------------- test +INF op value");
-               testfops("+INF", "5.0", fpinf, 5F, dpinf, 5D);
-               testfcmp("+INF", "5.0", fpinf, 5F, dpinf, 5D);
-
-               p("------------------- test +INF op value");
-               testfops("5.0", "+INF", 5F, fpinf, 5D, dpinf);
-               testfcmp("5.0", "+INF", 5F, fpinf, 5D, dpinf);
-
-               p("------------------- test -INF op value");
-               testfops("-INF", "5.0", fninf, 5F, dninf, 5D);
-               testfcmp("-INF", "5.0", fninf, 5F, dninf, 5D);
-
-               p("------------------- test -INF op value");
-               testfops("5.0", "-INF", 5F, fninf, 5D, dninf);
-               testfcmp("5.0", "-INF", 5F, fninf, 5D, dninf);
-
-               p("------------------- test MAX op value");
-               testfops("MAX", "5.0", fmax, 5F, dmax, 5D);
-
-               p("------------------- test value op MAX");
-               testfops("5.0", "MAX", 5F, fmax, 5D, dmax);
-
-               p("------------------- test MIN op value");
-               testfops("MIN", "5.0", fmin, 5F, dmin, 5D);
-
-               p("------------------- test value op MIN");
-               testfops("5.0", "MIN", 5F, fmin, 5D, dmin);
-
-               }
+        p("---------------------------- tests NaNs and Infs -------------------");
+        p("------------------- print NaNs and Infs");
+
+        p("NaNQ ", fnan);
+        p("+INF ", fpinf);
+        p("-INF ", fninf);
+
+        p("NaNQ ", dnan);
+        p("+INF ", dpinf);
+        p("-INF ", dninf);
+
+        p("------------------- test zero division");
+
+        zerodiv("0 / 0 = NaNQ ",  0F, f1);
+        zerodiv("+ / 0 = +INF ",  5F, f1);
+        zerodiv("- / 0 = -INF ", -5F, f1);
+
+        zerodiv("0 / 0 = NaNQ ",  0D, d1);
+        zerodiv("+ / 0 = +INF ",  5D, d1);
+        zerodiv("- / 0 = -INF ", -5D, d1);
+
+        p("------------------- test conversions");
+        testfcvt("NaNQ", fnan, dnan);
+        testfcvt("+INF", fpinf, dpinf);
+        testfcvt("-INF", fninf, dninf);
+        testfcvt(" MAX",  fmax, dmax);
+        testfcvt(" MIN",  fmin, dmin);
+        testfcvt("MAXINT-1",  2147483646.0F, 2147483646.0D);
+        testfcvt("MAXINT+0",  2147483647.0F, 2147483647.0D);
+        testfcvt("MAXINT+1",  2147483648.0F, 2147483648.0D);
+        testfcvt("-MAXINT+1",  -2147483647.0F, -2147483647.0D);
+        testfcvt("-MAXINT+0",  -2147483648.0F, -2147483648.0D);
+        testfcvt("-MAXINT-1",  -2147483649.0F, -2147483649.0D);
+        testfcvt("MAXLNG-1",  9223372036854775806.0F, 9223372036854775806.0D);
+        testfcvt("MAXLNG+0",  9223372036854775807.0F, 9223372036854775807.0D);
+        testfcvt("MAXLNG+1",  9223372036854775808.0F, 9223372036854775808.0D);
+        testfcvt("-MAXLNG+1",  -9223372036854775807.0F, -9223372036854775807.0D);
+        testfcvt("-MAXLNG+0",  -9223372036854775808.0F, -9223372036854775808.0D);
+        testfcvt("-MAXLNG-1",  -9223372036854775809.0F, -9223372036854775809.0D);
+
+        p("------------------- test NaNQ op value");
+        testfops("NaNQ", "5.0", fnan, 5F, dnan, 5D);
+        testfcmp("NaNQ", "5.0", fnan, 5F, dnan, 5D);
+
+        p("------------------- test value op NaNQ");
+        testfops("5.0", "NaNQ", 5F, fnan, 5D, dnan);
+        testfcmp("5.0", "NaNQ", 5F, fnan, 5D, dnan);
+
+        p("------------------- test +INF op value");
+        testfops("+INF", "5.0", fpinf, 5F, dpinf, 5D);
+        testfcmp("+INF", "5.0", fpinf, 5F, dpinf, 5D);
+
+        p("------------------- test +INF op value");
+        testfops("5.0", "+INF", 5F, fpinf, 5D, dpinf);
+        testfcmp("5.0", "+INF", 5F, fpinf, 5D, dpinf);
+
+        p("------------------- test -INF op value");
+        testfops("-INF", "5.0", fninf, 5F, dninf, 5D);
+        testfcmp("-INF", "5.0", fninf, 5F, dninf, 5D);
+
+        p("------------------- test -INF op value");
+        testfops("5.0", "-INF", 5F, fninf, 5D, dninf);
+        testfcmp("5.0", "-INF", 5F, fninf, 5D, dninf);
+
+        p("------------------- test MAX op value");
+        testfops("MAX", "5.0", fmax, 5F, dmax, 5D);
+
+        p("------------------- test value op MAX");
+        testfops("5.0", "MAX", 5F, fmax, 5D, dmax);
+
+        p("------------------- test MIN op value");
+        testfops("MIN", "5.0", fmin, 5F, dmin, 5D);
+
+        p("------------------- test value op MIN");
+        testfops("5.0", "MIN", 5F, fmin, 5D, dmin);
+
+    }
                
-       public static void zerodiv(String s, float f1, float f2) {
-               p(s, f1 / f2);
-               }
-
-       public static void zerodiv(String s, double d1, double d2) {
-               p(s, d1 / d2);
-               }
-
-       public static void testfcvt(String s1, float f1, double d1) {
-               p("convert " + s1 + " (" + f1 + "," + d1 + ") to ", (int)  f1);
-               p("convert " + s1 + " (" + f1 + "," + d1 + ") to ", (int)  d1);
-               p("convert " + s1 + " (" + f1 + "," + d1 + ") to ", (long) f1);
-               p("convert " + s1 + " (" + f1 + "," + d1 + ") to ", (long) d1);
-               }
-
-       public static void testfops(String s1, String s2, float f1, float f2,
-                                  double d1, double d2) {
-               p(s1 + " + " + s2 + " = ", f1 + f2);
-               p(s1 + " - " + s2 + " = ", f1 - f2);
-               p(s1 + " * " + s2 + " = ", f1 * f2);
-               p(s1 + " / " + s2 + " = ", f1 / f2);
-               p(s1 + " % " + s2 + " = ", f1 % f2);
-               p(s1 + " + " + s2 + " = ", d1 + d2);
-               p(s1 + " - " + s2 + " = ", d1 - d2);
-               p(s1 + " * " + s2 + " = ", d1 * d2);
-               p(s1 + " / " + s2 + " = ", d1 / d2);
-               p(s1 + " % " + s2 + " = ", d1 % d2);
-               }
-
-       public static void testfcmp(String s1, String s2, float f1, float f2,
-                                  double d1, double d2) {
-
-               if ( (f1 == f2)) p(" (" + s1 + " == " + s2 + ") = true");
-               else             p(" (" + s1 + " == " + s2 + ") = false");
-               if ( (f1 != f2)) p(" (" + s1 + " != " + s2 + ") = true");
-               else             p(" (" + s1 + " != " + s2 + ") = false");
-               if ( (f1 <  f2)) p(" (" + s1 + " <  " + s2 + ") = true");
-               else             p(" (" + s1 + " <  " + s2 + ") = false");
-               if ( (f1 <= f2)) p(" (" + s1 + " <= " + s2 + ") = true");
-               else             p(" (" + s1 + " <= " + s2 + ") = false");
-               if ( (f1 >  f2)) p(" (" + s1 + " >  " + s2 + ") = true");
-               else             p(" (" + s1 + " >  " + s2 + ") = false");
-               if ( (f1 >= f2)) p(" (" + s1 + " >= " + s2 + ") = true");
-               else             p(" (" + s1 + " >= " + s2 + ") = false");
-
-               if (!(f1 == f2)) p("!(" + s1 + " == " + s2 + ") = true");
-               else             p("!(" + s1 + " == " + s2 + ") = false");
-               if (!(f1 != f2)) p("!(" + s1 + " != " + s2 + ") = true");
-               else             p("!(" + s1 + " != " + s2 + ") = false");
-               if (!(f1 <  f2)) p("!(" + s1 + " <  " + s2 + ") = true");
-               else             p("!(" + s1 + " <  " + s2 + ") = false");
-               if (!(f1 <= f2)) p("!(" + s1 + " <= " + s2 + ") = true");
-               else             p("!(" + s1 + " <= " + s2 + ") = false");
-               if (!(f1 >  f2)) p("!(" + s1 + " >  " + s2 + ") = true");
-               else             p("!(" + s1 + " >  " + s2 + ") = false");
-               if (!(f1 >= f2)) p("!(" + s1 + " >= " + s2 + ") = true");
-               else             p("!(" + s1 + " >= " + s2 + ") = false");
-
-               if ( (d1 == d2)) p(" (" + s1 + " == " + s2 + ") = true");
-               else             p(" (" + s1 + " == " + s2 + ") = false");
-               if ( (d1 != d2)) p(" (" + s1 + " != " + s2 + ") = true");
-               else             p(" (" + s1 + " != " + s2 + ") = false");
-               if ( (d1 <  d2)) p(" (" + s1 + " <  " + s2 + ") = true");
-               else             p(" (" + s1 + " <  " + s2 + ") = false");
-               if ( (d1 <= d2)) p(" (" + s1 + " <= " + s2 + ") = true");
-               else             p(" (" + s1 + " <= " + s2 + ") = false");
-               if ( (d1 >  d2)) p(" (" + s1 + " >  " + s2 + ") = true");
-               else             p(" (" + s1 + " >  " + s2 + ") = false");
-               if ( (d1 >= d2)) p(" (" + s1 + " >= " + s2 + ") = true");
-               else             p(" (" + s1 + " >= " + s2 + ") = false");
-
-               if (!(d1 == d2)) p("!(" + s1 + " == " + s2 + ") = true");
-               else             p("!(" + s1 + " == " + s2 + ") = false");
-               if (!(d1 != d2)) p("!(" + s1 + " != " + s2 + ") = true");
-               else             p("!(" + s1 + " != " + s2 + ") = false");
-               if (!(d1 <  d2)) p("!(" + s1 + " <  " + s2 + ") = true");
-               else             p("!(" + s1 + " <  " + s2 + ") = false");
-               if (!(d1 <= d2)) p("!(" + s1 + " <= " + s2 + ") = true");
-               else             p("!(" + s1 + " <= " + s2 + ") = false");
-               if (!(d1 >  d2)) p("!(" + s1 + " >  " + s2 + ") = true");
-               else             p("!(" + s1 + " >  " + s2 + ") = false");
-               if (!(d1 >= d2)) p("!(" + s1 + " >= " + s2 + ") = true");
-               else             p("!(" + s1 + " >= " + s2 + ") = false");
-               }
-
-       // ********************* output methods ****************************
-
-       public static int linenum = 0;
-
-       public static void pnl() {
-               int i;
-
-               System.out.println();
-               for (i = 4 - Integer.toString(linenum).length(); i > 0; i--)
-                       System.out.print(' ');
-               System.out.print(linenum);
-               System.out.print(".    ");
-               linenum++;
-               }
-
-       public static void p(String a) {
-               System.out.print(a); pnl();
-               }
-       public static void p(boolean a) {
-               System.out.print(a); pnl();
-               }
-       public static void p(int a) {
-               System.out.print("int:    "); System.out.print(a); pnl();
-               }
-       public static void p(long a) {
-               System.out.print("long:   "); System.out.print(a); pnl();
-               }
-       public static void p(short a) {
-               System.out.print("short:  "); System.out.print(a); pnl();
-               }
-       public static void p(byte a) {
-               System.out.print("byte:   "); System.out.print(a); pnl();
-               }
-       public static void p(char a) {
-               System.out.print("char:   "); System.out.print((int)a); pnl();
-               }
-       public static void p(float a) {
-               System.out.print("float:  "); System.out.print(a); pnl();
-               }
-       public static void p(double a) {
-               System.out.print("double: "); System.out.print(a); pnl();
-               }
-
-       public static void p(String s, boolean i) { 
-               System.out.print(s); p(i);
-               }
-       public static void p(String s, int i) { 
-               System.out.print(s); p(i);
-               }
-       public static void p(String s, byte i) { 
-               System.out.print(s); p(i);
-               }
-       public static void p(String s, char i) { 
-               System.out.print(s); p(i);
-               }
-       public static void p(String s, short i) { 
-               System.out.print(s); p(i);
-               }
-       public static void p(String s, long l) { 
-               System.out.print(s); p(l);
-               }
-       public static void p(String s, float f) { 
-               System.out.print(s); p(f);
-               }
-       public static void p(String s, double d) {
-               System.out.print(s); p(d);
-               }
-
-       }
+    public static void zerodiv(String s, float f1, float f2) {
+        p(s, f1 / f2);
+    }
+
+    public static void zerodiv(String s, double d1, double d2) {
+        p(s, d1 / d2);
+    }
+
+    public static void testfcvt(String s1, float f1, double d1) {
+        p("convert " + s1 + " (" + f1 + "," + d1 + ") to ", (int)  f1);
+        p("convert " + s1 + " (" + f1 + "," + d1 + ") to ", (int)  d1);
+        p("convert " + s1 + " (" + f1 + "," + d1 + ") to ", (long) f1);
+        p("convert " + s1 + " (" + f1 + "," + d1 + ") to ", (long) d1);
+    }
+
+    public static void testfops(String s1, String s2, float f1, float f2,
+                                double d1, double d2) {
+        p(s1 + " + " + s2 + " = ", f1 + f2);
+        p(s1 + " - " + s2 + " = ", f1 - f2);
+        p(s1 + " * " + s2 + " = ", f1 * f2);
+        p(s1 + " / " + s2 + " = ", f1 / f2);
+        p(s1 + " % " + s2 + " = ", f1 % f2);
+        p(s1 + " + " + s2 + " = ", d1 + d2);
+        p(s1 + " - " + s2 + " = ", d1 - d2);
+        p(s1 + " * " + s2 + " = ", d1 * d2);
+        p(s1 + " / " + s2 + " = ", d1 / d2);
+        p(s1 + " % " + s2 + " = ", d1 % d2);
+    }
+
+    public static void testfcmp(String s1, String s2, float f1, float f2,
+                                double d1, double d2) {
+        if ( (f1 == f2)) p(" (" + s1 + " == " + s2 + ") = true");
+        else             p(" (" + s1 + " == " + s2 + ") = false");
+        if ( (f1 != f2)) p(" (" + s1 + " != " + s2 + ") = true");
+        else             p(" (" + s1 + " != " + s2 + ") = false");
+        if ( (f1 <  f2)) p(" (" + s1 + " <  " + s2 + ") = true");
+        else             p(" (" + s1 + " <  " + s2 + ") = false");
+        if ( (f1 <= f2)) p(" (" + s1 + " <= " + s2 + ") = true");
+        else             p(" (" + s1 + " <= " + s2 + ") = false");
+        if ( (f1 >  f2)) p(" (" + s1 + " >  " + s2 + ") = true");
+        else             p(" (" + s1 + " >  " + s2 + ") = false");
+        if ( (f1 >= f2)) p(" (" + s1 + " >= " + s2 + ") = true");
+        else             p(" (" + s1 + " >= " + s2 + ") = false");
+
+        if (!(f1 == f2)) p("!(" + s1 + " == " + s2 + ") = true");
+        else             p("!(" + s1 + " == " + s2 + ") = false");
+        if (!(f1 != f2)) p("!(" + s1 + " != " + s2 + ") = true");
+        else             p("!(" + s1 + " != " + s2 + ") = false");
+        if (!(f1 <  f2)) p("!(" + s1 + " <  " + s2 + ") = true");
+        else             p("!(" + s1 + " <  " + s2 + ") = false");
+        if (!(f1 <= f2)) p("!(" + s1 + " <= " + s2 + ") = true");
+        else             p("!(" + s1 + " <= " + s2 + ") = false");
+        if (!(f1 >  f2)) p("!(" + s1 + " >  " + s2 + ") = true");
+        else             p("!(" + s1 + " >  " + s2 + ") = false");
+        if (!(f1 >= f2)) p("!(" + s1 + " >= " + s2 + ") = true");
+        else             p("!(" + s1 + " >= " + s2 + ") = false");
+
+        if ( (d1 == d2)) p(" (" + s1 + " == " + s2 + ") = true");
+        else             p(" (" + s1 + " == " + s2 + ") = false");
+        if ( (d1 != d2)) p(" (" + s1 + " != " + s2 + ") = true");
+        else             p(" (" + s1 + " != " + s2 + ") = false");
+        if ( (d1 <  d2)) p(" (" + s1 + " <  " + s2 + ") = true");
+        else             p(" (" + s1 + " <  " + s2 + ") = false");
+        if ( (d1 <= d2)) p(" (" + s1 + " <= " + s2 + ") = true");
+        else             p(" (" + s1 + " <= " + s2 + ") = false");
+        if ( (d1 >  d2)) p(" (" + s1 + " >  " + s2 + ") = true");
+        else             p(" (" + s1 + " >  " + s2 + ") = false");
+        if ( (d1 >= d2)) p(" (" + s1 + " >= " + s2 + ") = true");
+        else             p(" (" + s1 + " >= " + s2 + ") = false");
+
+        if (!(d1 == d2)) p("!(" + s1 + " == " + s2 + ") = true");
+        else             p("!(" + s1 + " == " + s2 + ") = false");
+        if (!(d1 != d2)) p("!(" + s1 + " != " + s2 + ") = true");
+        else             p("!(" + s1 + " != " + s2 + ") = false");
+        if (!(d1 <  d2)) p("!(" + s1 + " <  " + s2 + ") = true");
+        else             p("!(" + s1 + " <  " + s2 + ") = false");
+        if (!(d1 <= d2)) p("!(" + s1 + " <= " + s2 + ") = true");
+        else             p("!(" + s1 + " <= " + s2 + ") = false");
+        if (!(d1 >  d2)) p("!(" + s1 + " >  " + s2 + ") = true");
+        else             p("!(" + s1 + " >  " + s2 + ") = false");
+        if (!(d1 >= d2)) p("!(" + s1 + " >= " + s2 + ") = true");
+        else             p("!(" + s1 + " >= " + s2 + ") = false");
+    }
+
+    // ********************* output methods ****************************
+
+    public static int linenum = 0;
+
+    public static void pnl() {
+        int i;
+
+        System.out.println();
+        for (i = 4 - Integer.toString(linenum).length(); i > 0; i--)
+            System.out.print(' ');
+        System.out.print(linenum);
+        System.out.print(".    ");
+        linenum++;
+    }
+
+    public static void p(String a) {
+        System.out.print(a); pnl();
+    }
+    public static void p(boolean a) {
+        System.out.print(a); pnl();
+    }
+    public static void p(int a) {
+        System.out.print("int:    "); System.out.print(a); pnl();
+    }
+    public static void p(long a) {
+        System.out.print("long:   "); System.out.print(a); pnl();
+    }
+    public static void p(short a) {
+        System.out.print("short:  "); System.out.print(a); pnl();
+    }
+    public static void p(byte a) {
+        System.out.print("byte:   "); System.out.print(a); pnl();
+    }
+    public static void p(char a) {
+        System.out.print("char:   "); System.out.print((int)a); pnl();
+    }
+    public static void p(float a) {
+        System.out.print("float:  "); System.out.print(a); pnl();
+    }
+    public static void p(double a) {
+        System.out.print("double: "); System.out.print(a); pnl();
+    }
+
+    public static void p(String s, boolean i) { 
+        System.out.print(s); p(i);
+    }
+    public static void p(String s, int i) { 
+        System.out.print(s); p(i);
+    }
+    public static void p(String s, byte i) { 
+        System.out.print(s); p(i);
+    }
+    public static void p(String s, char i) { 
+        System.out.print(s); p(i);
+    }
+    public static void p(String s, short i) { 
+        System.out.print(s); p(i);
+    }
+    public static void p(String s, long l) { 
+        System.out.print(s); p(l);
+    }
+    public static void p(String s, float f) { 
+        System.out.print(s); p(f);
+    }
+    public static void p(String s, double d) {
+        System.out.print(s); p(d);
+    }
+
+}