Java tutorial
/* * TURNUS, the co-exploration framework * * Copyright (C) 2014 EPFL SCI STI MM * * This file is part of TURNUS. * * TURNUS 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 3 of the License, or * (at your option) any later version. * * TURNUS 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 TURNUS. If not, see <http://www.gnu.org/licenses/>. * * Additional permission under GNU GPL version 3 section 7 * * If you modify this Program, or any covered work, by linking or combining it * with Eclipse (or a modified version of Eclipse or an Eclipse plugin or * an Eclipse library), containing parts covered by the terms of the * Eclipse Public License (EPL), the licensors of this Program grant you * additional permission to convey the resulting work. Corresponding Source * for a non-source form of such a combination shall include the source code * for the parts of Eclipse libraries used as well as that of the covered work. * */ package co.turnus.analysis.util; import java.util.LinkedHashSet; import java.util.Set; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.math3.util.Precision; public class AnalysisUtil { public static final int PRECISION_SCALE = 4; public static final double PRECISION_EPS = Math.pow(10, -PRECISION_SCALE); public static boolean equals(double a, double b) { return Precision.equals(a, b, PRECISION_EPS); } public static double[] linspaced(double min, double max, int points) { Set<Double> values = new LinkedHashSet<Double>(); double current = min; double delta = (max - min) / ((double) points - 1); do { values.add(current); current += delta; } while (current < (max + delta / 2)); return ArrayUtils.toPrimitive(values.toArray(new Double[0])); } public static int[] linspacei(int min, int max) { Set<Integer> values = new LinkedHashSet<Integer>(); for (int i = min; i <= max; i++) { values.add(i); } return ArrayUtils.toPrimitive(values.toArray(new Integer[0])); } public static int[] linspacei(int min, int max, int points) { Set<Integer> values = new LinkedHashSet<Integer>(); values.add(min); for (double d : linspaced(min, max, points)) { values.add((int) Math.floor(d)); } values.add(max); return ArrayUtils.toPrimitive(values.toArray(new Integer[0])); } public static double round(double a) { return Precision.round(a, PRECISION_SCALE); } }