Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * FPInstructionUtils.java
 *
 * 6th may, 2007
 * (c) 2006 EduMips64 project - Trubia Massimo
 *
 * This file is part of the EduMIPS64 project, and is released under the GNU
 * General Public License.
 *
 * 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 of the License, or
 * (at your option) any later version.
 *
 * 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.
 *
 * 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
 */

public class Main {
    static String PLUSINFINITY = "0111111111110000000000000000000000000000000000000000000000000000";
    static String MINUSINFINITY = "1111111111110000000000000000000000000000000000000000000000000000";
    static String PLUSZERO = "0000000000000000000000000000000000000000000000000000000000000000";
    static String MINUSZERO = "1000000000000000000000000000000000000000000000000000000000000000";

    /** Returns the name of a special value (+-infinity, qnan, snan ) or "value" itself if it isn't a special value  */
    public static String getSpecialValues(String value) {
        if (isQNaN(value)) {
            return "Quiet NaN";
        } else if (isSNaN(value)) {
            return "Signaling NaN";
        } else if (isPositiveInfinity(value)) {
            return "Positive infinity";
        } else if (isNegativeInfinity(value)) {
            return "Negative infinity";
        } else if (isPositiveZero(value)) {
            return "Positive zero";
        } else if (isNegativeZero(value)) {
            return "Negative zero";
        } else {
            return value;
        }
    }

    public static boolean isQNaN(String value) {
        if (value.matches("[01]111111111110[01]{51}") && !value.matches("[01]111111111110[0]{51}")) {
            return true;
        }

        return false;

    }

    public static boolean isSNaN(String value) {
        if (value.matches("[01]111111111111[01]{51}") && !value.matches("[01]111111111110[0]{51}")) {
            return true;
        }

        return false;
    }

    public static boolean isPositiveInfinity(String value) {
        if (is64BinaryString(value)) {
            if (value.compareTo(PLUSINFINITY) == 0) {
                return true;
            }
        }

        return false;
    }

    /** Determines if value is a negative infinity according to the IEEE754 standard
     * @param value the binary string of 64 bits
     * @return true if the value is negative infinity
     */
    public static boolean isNegativeInfinity(String value) {
        if (is64BinaryString(value)) {
            if (value.compareTo(MINUSINFINITY) == 0) {
                return true;
            }
        }

        return false;
    }

    /** Determines if value is a positive zero according to the IEEE754 standard
     * @param value the binary string of 64 bits
     * @return true if the value is  positive zero
     */

    public static boolean isPositiveZero(String value) {
        if (is64BinaryString(value)) {
            if (value.compareTo(PLUSZERO) == 0) {
                return true;
            }
        }

        return false;
    }

    public static boolean isNegativeZero(String value) {
        if (is64BinaryString(value)) {
            if (value.compareTo(MINUSZERO) == 0) {
                return true;
            }
        }

        return false;
    }

    /** Determines if the passed value is a binary string of 64 bits
     *  @param value the binary string
     *  @return a boolean value*/
    public static boolean is64BinaryString(String value) {
        if (value.length() == 64 && value.matches("[01]{64}")) {
            return true;
        }

        return false;
    }
}