MathUtil.java [src/java/m/sensitivity/model/util] Revision: default  Date:
package m.sensitivity.model.util;

import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;

public final class MathUtil {

    private MathUtil() {
    }

    public static double findMin(double[] values) {
        double min = Double.MAX_VALUE;
        for (int i = 0; i < values.length; ++i) {
            if (values[i] < min) {
                min = values[i];
            }
        }
        return min;
    }

    public static double findMin(List<Double> values) {
        double min = Double.MAX_VALUE;
        for (double value : values) {
            if (value < min) {
                min = value;
            }
        }
        return min;
    }

    public static void normalize(double[] values) {
        double sum = 0;
        for (int i = 0; i < values.length; ++i) {
            sum += values[i];
        }

        if (sum > 0) {
            for (int i = 0; i < values.length; ++i) {
                values[i] /= sum;
            }
        }
    }

    public static void normalize(List<Double> values) {
        double sum = 0;
        for (double value : values) {
            sum += value;
        }

        if (sum > 0) {
            ListIterator<Double> iterator = values.listIterator();
            while (iterator.hasNext()) {
                double value = iterator.next();
                value /= sum;
                iterator.set(value);
            }
        }
    }

    public static void normalize(Map<String, Double> values) {
        double sum = 0;
        for (double value : values.values()) {
            sum += value;
        }

        if (sum > 0) {
            for (Map.Entry<String, Double> entry : values.entrySet()) {
                double value = entry.getValue();
                value /= sum;
                entry.setValue(value);
            }
        }
    }
}