Project

General

Profile

« Previous | Next » 

Revision 52802

javadoc and test

View differences:

modules/dnet-mapreduce-jobs/branches/beta/src/test/java/eu/dnetlib/data/mapreduce/AlgorithmsTest.java
1 1
package eu.dnetlib.data.mapreduce;
2 2

  
3
import java.math.BigDecimal;
4

  
3 5
import org.apache.commons.math.util.MathUtils;
4 6
import org.junit.Test;
5 7

  
......
13 15
		final double th = 0.98;
14 16
		final double lb = th - 0.01;
15 17

  
16
		System.out.println(MathUtils.round(Algorithms.scale(0.98, lb, 1, 0, 1), 2));
18
		final double scaled = Algorithms.scale(0.9976, lb, 1, 0, 1);
19
		System.out.println(MathUtils.round(scaled, 2, BigDecimal.ROUND_HALF_DOWN));
17 20
	}
18 21

  
19 22
}
modules/dnet-mapreduce-jobs/branches/beta/src/main/java/eu/dnetlib/data/mapreduce/Algorithms.java
11 11

  
12 12
	public static double LIMIT_MIN = 0;
13 13

  
14
	/**
15

  
16
	 Source: https://stackoverflow.com/questions/5294955/how-to-scale-down-a-range-of-numbers-with-a-known-min-and-max-value
17

  
18
	 f(min) = a
19
	 f(max) = b
20

  
21
	 f(x) = x - min   ===>   f(min) = min - min = 0
22

  
23

  
24
        	 x - min                                  max - min
25
	 f(x) = ---------   ===>   f(min) = 0;  f(max) =  --------- = 1
26
	        max - min                                 max - min
27

  
28

  
29
	       (b-a)(x - min)
30
	f(x) = --------------  + a
31
	          max - min
32
	 */
14 33
	public static double scale(final double valueIn, final double baseMin, final double baseMax, final double limitMin, final double limitMax) {
15 34
		return ((limitMax - limitMin) * (valueIn - baseMin) / (baseMax - baseMin)) + limitMin;
16 35
	}

Also available in: Unified diff