Example usage for org.apache.commons.math.complex Complex NaN

List of usage examples for org.apache.commons.math.complex Complex NaN

Introduction

In this page you can find the example usage for org.apache.commons.math.complex Complex NaN.

Prototype

Complex NaN

To view the source code for org.apache.commons.math.complex Complex NaN.

Click Source Link

Document

A complex number representing "NaN + NaNi"

Usage

From source file:geogebra.io.MyI2GHandler.java

private void startElements(String eName, LinkedHashMap attrs) {
    debug("startElements", eName);
    switch (subMode) {
    case MODE_INVALID:
        // TODO -> extend to further objects
        if (!eName.equals("line") && !eName.equals("line_segment") && !eName.equals("point")) {
            Application.debug("unknown tag in <elements>: " + eName);
            break;
        }/* w ww .  jav a2s  . c  om*/

        String label = (String) attrs.get("id");
        if (label == null) {
            Application.debug("attribute id missing in <" + eName + ">");
            break;
        }

        // does a geo element with this label exist?
        geo = kernel.lookupLabel(label);
        if (geo != null) {
            geo = null;
            Application.debug("an element with id \"" + label + "\" already exists");
            break;
        }

        if (eName.equals("line_segment")) {
            eName = "segment";
            segment = true;
            segmentStart = new GeoPoint(cons);
            segmentEnd = new GeoPoint(cons);
            segmentVia = new GeoPoint(cons);
        } else {
            segment = false;
        }

        geo = kernel.createGeoElement(cons, eName);
        geo.setLoadedLabel(label);
        subMode = MODE_ELEMENTS;
        cmdName = eName;
        break;

    case MODE_ELEMENTS:
        String[] tags;
        if (cmdName.equals("point")) {
            tags = new String[] { "homogeneous_coordinates", "euclidean_coordinates", "polar_coordinates" };
        } else {
            tags = new String[] { "homogeneous_coordinates" };
        }
        int i;
        for (i = 0; i < tags.length; i++) {
            if (eName.equals(tags[i])) {
                break;
            }
        }
        if (i >= tags.length) {
            Application.debug("unknown tag in <" + geo.getI2GtypeString() + ">: " + eName);
            break;
        } else if (!(geo instanceof GeoVec3D)) {
            Application.debug("wrong element type for coordinates: " + geo.getI2GtypeString());
            break;
        }

        if (eName.equals("homogeneous_coordinates")) {
            coord = 0;
            coords = new Complex[] { Complex.NaN, Complex.NaN, Complex.NaN };
        } else if (eName.equals("euclidean_coordinates") || eName.equals("polar_coordinates")) {
            coord = 0;
            coords = new Complex[] { Complex.NaN, Complex.NaN };
        }
        subMode = MODE_COORDINATES;
        cmdName = eName;
        break;

    case MODE_COORDINATES:
        if (eName.equals("double")) {
            subMode = MODE_COORDINATES_REAL_DOUBLE;
        } else if (cmdName.equals("homogeneous_coordinates") && eName.equals("complex")) {
            subMode = MODE_COORDINATES_COMPLEX;
        } else {
            Application.debug("unknown tag in <" + cmdName + ">: " + eName);
            break;
        }
        if (coord >= coords.length) {
            break;
        }
        for (coord = 0; coord < coords.length; coord++) {
            if (coords[coord].isNaN()) {
                break;
            }
        }
        if (coord >= coords.length) {
            String tag = "<double>";
            if (cmdName.equals("homogeneous_coordinates")) {
                tag = "<double> or <complex>";
            }
            Application.debug("more than " + coords.length + " " + tag + " specified for <" + cmdName + ">");
        }
        break;

    case MODE_COORDINATES_COMPLEX:
        if (eName.equals("double")) {
            subMode = MODE_COORDINATES_COMPLEX_DOUBLE;
        } else {
            Application.debug("unknown tag in <complex>: " + eName);
        }
        break;

    case MODE_COORDINATES_REAL_DOUBLE:
    case MODE_COORDINATES_COMPLEX_DOUBLE:
        Application.debug("unknown tag in <double>: " + eName);
        break;
    }
}