Example usage for java.lang Double NaN

List of usage examples for java.lang Double NaN

Introduction

In this page you can find the example usage for java.lang Double NaN.

Prototype

double NaN

To view the source code for java.lang Double NaN.

Click Source Link

Document

A constant holding a Not-a-Number (NaN) value of type double .

Usage

From source file:io.druid.query.aggregation.teststats.PvaluefromZscorePostAggregator.java

private double cumulativeProbability(double x) {
    try {//w w  w.  ja v  a2s . co  m
        NormalDistribution normDist = new NormalDistribution();
        return normDist.cumulativeProbability(x);
    } catch (IllegalArgumentException ex) {
        return Double.NaN;
    }
}

From source file:MathUtil.java

public static double log(double x) {
    if (x < 0) {
        return Double.NaN;
    }//from w w  w. j a v a 2 s.  c om
    //
    if (x == 1) {
        return 0d;
    }

    if (x == 0) {
        return Double.NEGATIVE_INFINITY;
    }
    //
    if (x > 1) {
        x = 1 / x;
        return -1 * _log(x);
    }
    return _log(x);
}

From source file:de.thkwalter.et.ortskurve.Jakobimatrix2d.java

/**
 * Dieses Feld berechnet die Jakobi-Matrix der Modellgleichungen (der Kreisgleichungen).
 * /*from  ww  w .  ja  v  a  2 s  . c  o m*/
 * @param kreisparameter Die Parameterwerte der Kreisgleichungen. Das 0-te Element ist die x-Koordinate des
 *        Kreismittelpunkts, das 1-te Element ist der Radius des Kreises.
 * 
 * @return Die Jakobi-Matrix der Modellgleichungen. Der erste Index des Feldes luft ber die Gleichungen, der zweite
 *         Index ber die Kreisparameter.
 * 
 * @see org.apache.commons.math3.analysis.MultivariateMatrixFunction#value(double[])
 */
@Override
public double[][] value(double[] kreisparameter) {
    // Der Vektor fr den Mittelpunkt der Ortskurve wird erzeugt.
    Vector2D mittelpunkt = new Vector2D(kreisparameter[0], 0.0);

    // Das Feld fr die Jakobi-Matrix wird deklariert.
    double[][] jakobiMatrix = new double[this.messpunkte.length][2];

    // In dieser Schleife wird die Jakobi-Matrix initialisiert.
    double abstandMesspunktMittelpunkt = Double.NaN;
    for (int i = 0; i < this.messpunkte.length; i++) {
        // Der Abstand des Messpunktes vom Mittelpunkt wird berechnet.
        abstandMesspunktMittelpunkt = this.messpunkte[i].distance(mittelpunkt);

        // Falls der Messpunkt mit dem Mittelpunkt identisch ist wird eine JSFAusnahme geworfen, da sonst das Inverse
        // des Abstands unendlich gro wird. Da der Vergleich zweier double-Wert jedoch sinnlos ist, wird der Abstand mit 
        // einem Prozent des aktuell vermuteten Radius verglichen.
        if (abstandMesspunktMittelpunkt < 0.01 * kreisparameter[1]) {
            // Die Fehlermeldung fr den Entwickler wird erzeugt und protokolliert.
            String fehlermeldung = "Der Punkt " + this.messpunkte[i].toString() + " ist fast identisch mit dem "
                    + " Mittelpunkt " + mittelpunkt.toString() + "!";
            Jakobimatrix2d.logger.severe(fehlermeldung);

            // Die Ausnahme wird erzeugt und mit der Fehlermeldung fr den Benutzer initialisiert.
            String jsfMeldung = "Der Punkt " + this.messpunkte[i].toString()
                    + " scheint in der Nhe des Kreismittelpunktes zu liegen! berprfen Sie bitte diesen Punkt.";
            ApplicationRuntimeException applicationRuntimeException = new ApplicationRuntimeException(
                    jsfMeldung);

            throw applicationRuntimeException;
        }

        // Das Inverse des Abstands des Messpunkts vom Mittelpunkt wird berechnet.
        double inverserAbstandMesspunktMittelpunkt = 1.0 / abstandMesspunktMittelpunkt;

        // Die Elemente der Jakobi-Matrix werden initialisiert.
        jakobiMatrix[i][0] = inverserAbstandMesspunktMittelpunkt
                * (mittelpunkt.getX() - this.messpunkte[i].getX());
        jakobiMatrix[i][1] = -1.0;
    }

    return jakobiMatrix;
}

From source file:au.org.ala.spatial.analysis.layers.LayerDistanceIndex.java

/**
 * Get all available inter layer association distances.
 *
 * @return Map of all available distances as Map&ltString, Double&gt. The
 * key String is fieldId1 + " " + fieldId2 where fieldId1 &lt fieldId2.
 *///from   w w  w. j  av  a 2  s. c om
static public Map<String, Double> loadDistances() {
    Map<String, Double> map = new ConcurrentHashMap<String, Double>();
    BufferedReader br = null;
    try {
        File file = new File(IntersectConfig.getAlaspatialOutputPath() + LAYER_DISTANCE_FILE);

        //attempt to create empty file if it does not exist
        if (!new File(IntersectConfig.getAlaspatialOutputPath()).exists()) {
            new File(IntersectConfig.getAlaspatialOutputPath()).mkdirs();
        }
        if (!file.exists()) {
            FileUtils.writeStringToFile(file, "");
        }
        br = new BufferedReader(new FileReader(file));

        String line;
        while ((line = br.readLine()) != null) {
            if (line.length() > 0) {
                String[] keyvalue = line.split("=");
                double d = Double.NaN;
                try {
                    d = Double.parseDouble(keyvalue[1]);
                } catch (Exception e) {
                    logger.info("cannot parse value in " + line);
                }
                map.put(keyvalue[0], d);
            }
        }
    } catch (Exception e) {
        logger.error(e.getMessage(), e);
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (Exception e) {
                logger.error(e.getMessage(), e);
            }
        }
    }

    return map;
}

From source file:net.sf.maltcms.chromaui.charts.tooltips.RTIXYTooltipGenerator.java

/**
 *
 * @param xyd/* w ww  .  jav  a2s  .  co m*/
 * @param i
 * @param i1
 * @return
 */
@Override
public String generateToolTip(XYDataset xyd, int i, int i1) {
    Point p = new Point(i, i1);
    if (hm.containsKey(p)) {
        SoftReference<String> sr = hm.get(p);
        if (sr.get() != null) {
            return sr.get();
        }
    } else {
        StringBuilder sb = new StringBuilder();
        int x = (int) xyd.getXValue(i, i1);
        int y = (int) xyd.getYValue(i, i1);
        double z = Double.NaN;
        if (xyd instanceof XYZDataset) {
            z = ((XYZDataset) xyd).getZValue(i, i1);
        }
        if (x >= 0 && x < lookup.length && y >= 0 && y < scansPerModulation) {
            sb.append("[ SCAN1: ");
            sb.append(x);
            sb.append(", SCAN2: " + y + " ]");
            sb.append(" at [ RT1: ");
            sb.append(lookup[x]);
            sb.append(" s, RT2: ");
            float off = (this.modulationTime * ((float) y / (float) (this.scansPerModulation)));
            sb.append(lookup[x] + off);
            sb.append("s ]");
            if (xyd instanceof XYZDataset) {
                sb.append(" = ");
                sb.append(z);
            }
            String s = sb.toString();
            SoftReference<String> sr = new SoftReference<>(s);
            hm.put(p, sr);
            return s;
        }
        return "";
    }
    return null;

}

From source file:com.clust4j.algo.KMeans.java

@Override
protected KMeans fit() {
    synchronized (fitLock) {

        if (null != labels) // already fit
            return this;

        final LogTimer timer = new LogTimer();
        final double[][] X = data.getData();
        final int n = data.getColumnDimension();
        final double nan = Double.NaN;

        // Corner case: K = 1 or all singular values
        if (1 == k) {
            labelFromSingularK(X);/*w  ww  .  j av a 2 s.  c  om*/
            fitSummary.add(new Object[] { iter, converged, tss, tss, nan, timer.wallTime() });
            sayBye(timer);
            return this;
        }

        // Nearest centroid model to predict labels
        NearestCentroid model = null;
        EntryPair<int[], double[]> label_dist;

        // Keep track of TSS (sum of barycentric distances)
        double last_wss_sum = Double.POSITIVE_INFINITY, wss_sum = 0;
        ArrayList<double[]> new_centroids;

        for (iter = 0; iter < maxIter; iter++) {

            // Get labels for nearest centroids
            try {
                model = new NearestCentroid(CentroidUtils.centroidsToMatrix(centroids, false),
                        VecUtils.arange(k), new NearestCentroidParameters().setSeed(getSeed())
                                .setMetric(getSeparabilityMetric()).setVerbose(false)).fit();
            } catch (NaNException NaN) {
                /*
                 * If they metric used produces lots of infs or -infs, it 
                 * makes it hard if not impossible to effectively segment the
                 * input space. Thus, the centroid assignment portion below can
                 * yield a zero count (denominator) for one or more of the centroids
                 * which makes the entire row NaN. We should tell the user to
                 * try a different metric, if that's the case.
                 *
                error(new IllegalClusterStateException(dist_metric.getName()+" produced an entirely " +
                  "infinite distance matrix, making it difficult to segment the input space. Try a different " +
                  "metric."));
                 */
                this.k = 1;
                warn("(dis)similarity metric (" + dist_metric
                        + ") cannot partition space without propagating Infs. Returning one cluster");

                labelFromSingularK(X);
                fitSummary.add(new Object[] { iter, converged, tss, tss, nan, timer.wallTime() });
                sayBye(timer);
                return this;
            }

            label_dist = model.predict(X);

            // unpack the EntryPair
            labels = label_dist.getKey();
            new_centroids = new ArrayList<>(k);

            int label;
            wss = new double[k];
            int[] centroid_counts = new int[k];
            double[] centroid;
            double[][] new_centroid_arrays = new double[k][n];
            for (int i = 0; i < m; i++) {
                label = labels[i];
                centroid = centroids.get(label);

                // increment count for this centroid
                double this_cost = 0;
                centroid_counts[label]++;
                for (int j = 0; j < centroid.length; j++) {
                    double diff = X[i][j] - centroid[j];
                    this_cost += (diff * diff);

                    // Add the the centroid sums
                    new_centroid_arrays[label][j] += X[i][j];
                }

                // add this cost to the WSS
                wss[label] += this_cost;
            }

            // one pass of K for some consolidation
            wss_sum = 0;
            for (int i = 0; i < k; i++) {
                wss_sum += wss[i];

                for (int j = 0; j < n; j++) // meanify
                    new_centroid_arrays[i][j] /= (double) centroid_counts[i];

                new_centroids.add(new_centroid_arrays[i]);
            }

            // update the BSS
            bss = tss - wss_sum;

            // Assign new centroids
            double diff = last_wss_sum - wss_sum;
            last_wss_sum = wss_sum;

            // Check for convergence and add summary:
            converged = FastMath.abs(diff) < tolerance; // first iter will be inf
            fitSummary.add(
                    new Object[] { converged ? iter++ : iter, converged, tss, wss_sum, bss, timer.wallTime() });

            if (converged) {
                break;
            } else {
                // otherwise, reassign centroids
                centroids = new_centroids;
            }

        } // end iterations

        // Reorder the labels, centroids and wss indices
        reorderLabelsAndCentroids();

        if (!converged)
            warn("algorithm did not converge");

        // wrap things up, create summary..
        sayBye(timer);

        return this;
    }

}

From source file:pzalejko.iot.hardware.home.core.service.DefaultTemperatureService.java

private double loadTemperatureFromFile(String directory, String fileName) {
    final Path path = Paths.get(directory, fileName);
    if (path.toFile().exists()) {
        try (Stream<String> lines = Files.lines(path)) {
            // @formatter:off
            return lines.filter(s -> s.contains(TEMP_MARKER)).map(TEMPERATURE_VALUE_EXTRACTOR::apply)
                    .findFirst().orElse(Double.NaN);
            // @formatter:on
        } catch (final IOException | NumberFormatException e) {
            LOG.error(LogMessages.COULD_NOT_COLLECT_A_TEMPERATURE, e.getMessage(), e);
        }/*  w  ww.  ja  v a  2 s  . c o  m*/
    } else {
        LOG.warn(LogMessages.COULD_NOT_COLLECT_TEMPERATURE_MISSING_SOURCE, path.toAbsolutePath());
    }

    return Double.NaN;
}

From source file:com.ibm.bluej.commonutil.PrecisionRecallThreshold.java

public SummaryScores computeSummaryScores(double limitProb) {
    if (limitProb < 0.5) {
        throw new IllegalArgumentException("Probabilities cannot be limited to below 50%");
    }/*from   w ww. ja  va 2  s .  c o  m*/
    SummaryScores sum = new SummaryScores();
    Collections.shuffle(scoredPlusGold, RANDOMNESS);
    Collections.sort(scoredPlusGold, new FirstPairComparator(null));
    Collections.reverse(scoredPlusGold);

    double tpRelative = 0;
    double fpRelative = 0;

    double cummulativeCorrect = 0;
    double auc = 0;
    double allPositive = 0;
    double averageScore = 0;
    for (Pair<Double, Boolean> p : scoredPlusGold) {
        if (p.second)
            allPositive += 1;
        averageScore += p.first;
    }
    averageScore /= scoredPlusGold.size();
    sum.relativeThreshold = averageScore;

    double maxF = 0;
    double maxFThresh = 0;
    double logLike = 0;
    double maxAcc = 0;
    double maxAccThresh = 0;
    sum.relativePrecision = Double.NaN;
    for (int i = 0; i < scoredPlusGold.size(); ++i) {
        Pair<Double, Boolean> p = scoredPlusGold.get(i);
        if (p.second) {
            ++cummulativeCorrect;
            auc += cummulativeCorrect / ((i + 1) * allPositive);
        }

        double tp = cummulativeCorrect;
        double fp = (i + 1) - cummulativeCorrect;
        double fn = allPositive - cummulativeCorrect;
        double tn = (scoredPlusGold.size() - (i + 1)) - fn;
        double precision = (double) (tp) / (tp + fp);
        double recall = (double) (tp) / (tp + fn);
        double accuracy = (tp + tn) / scoredPlusGold.size();
        double f1 = 2 * precision * recall / (precision + recall);

        if (p.second) {
            if (p.first > sum.relativeThreshold)
                tpRelative++;
        } else {
            if (p.first > sum.relativeThreshold)
                fpRelative++;
        }

        if (f1 > maxF) {
            maxF = f1;
            maxFThresh = p.first;
        }
        if (accuracy > maxAcc) {
            maxAcc = accuracy;
            maxAccThresh = p.first;
        }

        double prob = p.second ? p.first : 1 - p.first;
        if (prob < 0 || prob > 1) {
            logLike = Double.NaN;
        }
        if (prob > limitProb) {
            prob = limitProb;
        }
        if (prob < 1 - limitProb) {
            prob = 1 - limitProb;
        }
        logLike += Math.log(prob);
    }

    sum.maxFScore = maxF;
    sum.maxFScoreThreshold = maxFThresh;
    sum.auc = auc;
    sum.pearsonsR = pearsonsR();
    sum.logLikelihood = logLike;
    sum.maxAccuracy = maxAcc;
    sum.maxAccuracyThreshold = maxAccThresh;

    sum.relativePrecision = tpRelative
            / (tpRelative + (fpRelative * (allPositive / (scoredPlusGold.size() - allPositive))));
    if (Double.isNaN(sum.relativePrecision))
        sum.relativePrecision = 0;
    sum.relativeRecall = tpRelative / allPositive;
    sum.relativeFScore = 2 * sum.relativePrecision * sum.relativeRecall
            / (sum.relativePrecision + sum.relativeRecall);
    if (Double.isNaN(sum.relativeFScore))
        sum.relativeFScore = 0;

    return sum;
}

From source file:org.jfree.data.time.ohlc.OHLCItem.java

/**
 * Returns the high value.//from  w ww  .j  a v  a  2  s .c om
 *
 * @return The high value.
 */
public double getHighValue() {
    OHLC ohlc = (OHLC) getObject();
    if (ohlc != null) {
        return ohlc.getHigh();
    } else {
        return Double.NaN;
    }
}

From source file:de.thkwalter.et.ortskurve.Jakobimatrix.java

/**
 * Dieses Feld berechnet die Jakobi-Matrix der Modellgleichungen (der Kreisgleichungen).
 * /* w  w w. j av a  2s .co  m*/
 * @param kreisparameter Die Parameterwerte der Kreisgleichungen. Das 0-te Element ist die x-Koordinate des
 *        Kreismittelpunkts, das 1-te Element ist die y-Koordinate des Kreismittelpunkts, das 2-te Element ist der
 *        Radius des Kreises.
 * 
 * @return Die Jakobi-Matrix der Modellgleichungen. Der erste Index des Feldes luft ber die Gleichungen, der zweite
 *         Index ber die Kreisparameter.
 * 
 * @see org.apache.commons.math3.analysis.MultivariateMatrixFunction#value(double[])
 */
@Override
public double[][] value(double[] kreisparameter) {
    // Der Vektor fr den Mittelpunkt der Ortskurve wird erzeugt.
    Vector2D mittelpunkt = new Vector2D(kreisparameter[0], kreisparameter[1]);

    // Das Feld fr die Jakobi-Matrix wird deklariert.
    double[][] jakobiMatrix = new double[this.messpunkte.length][3];

    // In dieser Schleife wird die Jakobi-Matrix initialisiert.
    double abstandMesspunktMittelpunkt = Double.NaN;
    for (int i = 0; i < this.messpunkte.length; i++) {
        // Der Abstand des Messpunktes vom Mittelpunkt wird berechnet.
        abstandMesspunktMittelpunkt = this.messpunkte[i].distance(mittelpunkt);

        // Falls der Messpunkt mit dem Mittelpunkt identisch ist wird eine JSFAusnahme geworfen, da sonst das Inverse
        // des Abstands unendlich gro wird. Da der Vergleich zweier double-Wert jedoch sinnlos ist, wird der Abstand mit 
        // einem Prozent des aktuell vermuteten Radius verglichen.
        if (abstandMesspunktMittelpunkt < 0.01 * kreisparameter[2]) {
            // Die Fehlermeldung fr den Entwickler wird erzeugt und protokolliert.
            String fehlermeldung = "Der Punkt " + this.messpunkte[i].toString() + " ist fast identisch mit dem "
                    + " Mittelpunkt " + mittelpunkt.toString() + "!";
            Jakobimatrix.logger.severe(fehlermeldung);

            // Die Ausnahme wird erzeugt und mit der Fehlermeldung fr den Benutzer initialisiert.
            String jsfMeldung = "Der Punkt " + this.messpunkte[i].toString()
                    + " scheint in der Nhe des Kreismittelpunktes zu liegen! berprfen Sie bitte diesen Punkt.";
            ApplicationRuntimeException applicationRuntimeException = new ApplicationRuntimeException(
                    jsfMeldung);

            throw applicationRuntimeException;
        }

        // Das Inverse des Abstands des Messpunkts vom Mittelpunkt wird berechnet.
        double inverserAbstandMesspunktMittelpunkt = 1.0 / abstandMesspunktMittelpunkt;

        // Die Elemente der Jakobi-Matrix werden initialisiert.
        jakobiMatrix[i][0] = inverserAbstandMesspunktMittelpunkt
                * (mittelpunkt.getX() - this.messpunkte[i].getX());
        jakobiMatrix[i][1] = inverserAbstandMesspunktMittelpunkt
                * (mittelpunkt.getY() - this.messpunkte[i].getY());
        jakobiMatrix[i][2] = -1.0;
    }

    return jakobiMatrix;
}