List of usage examples for java.lang Double NaN
double NaN
To view the source code for java.lang Double NaN.
Click Source Link
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<String, Double>. The * key String is fieldId1 + " " + fieldId2 where fieldId1 < 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; }