import java.applet.*;
import java.awt.*;

public class FPApplet extends Applet {
    protected String message[] = new String[4];
    protected Font font;
    protected int xstart;
    protected int ystart;
    protected int fontsize;
    protected int linegap;
    protected String fontname;
    protected double numbers[] = new double [4];

    public void init() {
	try {
	    xstart = Integer.parseInt(this.getParameter("xstart"));
	} catch (NumberFormatException e) {
	    xstart = 5;
	}

	try {
	    ystart = Integer.parseInt(this.getParameter("ystart"));
	} catch (NumberFormatException e) {
	    ystart = 20;
	}

	try {
	    fontsize = Integer.parseInt(this.getParameter("fontsize"));
	} catch (NumberFormatException e) {
	    fontsize = 10;
	}

	try {
	    linegap = Integer.parseInt(this.getParameter("linegap"));
	} catch (NumberFormatException e) {
	    linegap = 5;
	}

	for(int i = 0; i < 4; i++) {
	    String param_id = "number" + Integer.toString(i + 1);
	    double defaults[] = { 0.1, 0.2, 0.3, 0.6 };

	    try {
		numbers[i] = Double.parseDouble(this.getParameter(param_id));
	    } catch (NumberFormatException e) {
		numbers[i] = defaults[i];
	    }
	}
	

	fontname = this.getParameter("fontname");
	message[0] = this.strict12();
	message[1] = this.strict21();
	message[2] = this.nostrict12();
	message[3] = this.nostrict21();
	font = new Font(fontname, Font.PLAIN, fontsize);
    }

    public void paint(Graphics g) {
	int y, i;

	g.setFont(font);
	
	for(i = 0, y = ystart;
	    i < 4;
	    i++, y += g.getFontMetrics().getHeight() + linegap) {
	    g.drawString(message[i], xstart, y);
	}
    }

    protected strictfp String strict12() {
	if((numbers[0] + numbers[1]) + numbers[2] == numbers[3]) {
	    return "(" + numbers[0] + " + "
		+ numbers[1] + ") + "
		+ numbers[2] + " == "
		+ numbers[3] + "  <strictfp>";
	}
	else {
	    return "(" + numbers[0] + " + "
		+ numbers[1] + ") + "
		+ numbers[2] + " != "
		+ numbers[3] + "  <strictfp>";
	}
    }

    protected strictfp String strict21() {
	if(numbers[0] + (numbers[1] + numbers[2]) == numbers[3]) {
	    return numbers[0] + " + ("
		+ numbers[1] + " + "
		+ numbers[2] + ") == "
		+ numbers[3] + "  <strictfp>";
	}
	else {
	    return numbers[0] + " + ("
		+ numbers[1] + " + "
		+ numbers[2] + ") != "
		+ numbers[3] + "  <strictfp>";
	}
    }

    protected String nostrict12() {
	if((numbers[0] + numbers[1]) + numbers[2] == numbers[3]) {
	    return "(" + numbers[0] + " + "
		+ numbers[1] + ") + "
		+ numbers[2] + " == "
		+ numbers[3];
	}
	else {
	    return "(" + numbers[0] + " + "
		+ numbers[1] + ") + "
		+ numbers[2] + " != "
		+ numbers[3];
	}
    }

    protected String nostrict21() {
	if(numbers[0] + (numbers[1] + numbers[2]) == numbers[3]) {
	    return numbers[0] + " + ("
		+ numbers[1] + " + "
		+ numbers[2] + ") == "
		+ numbers[3];
	}
	else {
	    return numbers[0] + " + ("
		+ numbers[1] + " + "
		+ numbers[2] + ") != "
		+ numbers[3];
	}
    }
}

