/*
* Copyright 2004-2010 Institute of Software Technology and Interactive Systems, Vienna University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.ifs.tuwien.ac.at/dm/somtoolbox/license.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package at.tuwien.ifs.commons.util;
/**
* A collection of math-related utility methods.
*
* @author Rudolf Mayer
* @author Jakob Frank
* @version $Id: MathUtils.java 3800 2010-09-13 14:03:43Z frank $
*/
public class MathUtils {
/** finds the minimum value from a given array of integer values */
public static int min(int... arguments) {
int min = Integer.MAX_VALUE;
for (int argument : arguments) {
if (argument < min) {
min = argument;
}
}
return min;
}
/** contrains a value within the given lower and upper boundaries */
public static final int constrainWithin(int i, int lower, int upper) {
return Math.max(lower, Math.min(i, upper));
}
/** contrains a value within the given lower and upper boundaries */
public static int constrainWithin(int i, int lower, double upper) {
return constrainWithin(i, lower, (int) upper);
}
/**
* caps a value by the given maximum value.
*
* @deprecated use {@link Math#min(int, int)} instead.
*/
@Deprecated
public static final int cap(int i, int cap) {
return Math.min(i, cap);
}
/**
* caps a value by the given minimum value.
*
* @deprecated use {@link Math#max(int, int)} instead
*/
@Deprecated
public static final int capLower(int i, int lowerCap) {
return Math.max(i, lowerCap);
}
/** caps a value by the given minimum value. */
public static double capLower(double i, double lowerCap) {
if (i < lowerCap) {
return lowerCap;
} else {
return i;
}
}
/**
* caps a value by the given maximum value.
*
* @deprecated use {@link Math#min(long, long)} instead.
*/
@Deprecated
public static final long cap(long i, long cap) {
return Math.min(i, cap);
}
/**
* sums up the values in the array and returns the sum
*
* @param in the array over which the sum shall be calculated
* @return the sum of all values in the array
*/
public static double getSumOf(double[] in) {
double out = 0;
for (double element : in) {
out += element;
}
return out;
}
/**
* sums up the values in the array and returns the sum
*
* @param in the array over which the sum shall be calculated
* @return the sum of all values in the array
*/
public static int getSumOf(int[] in) {
int out = 0;
for (int element : in) {
out += element;
}
return out;
}
public static int numberOfDigits(int i) {
return 1 + (int) Math.log10(Math.abs(i));
}
public static int numberOfDigits(long i) {
return 1 + (int) Math.log10(Math.abs(i));
}
}