comparison src/samer/core_/util/LogMap.java @ 0:bf79fb79ee13

Initial Mercurial check in.
author samer
date Tue, 17 Jan 2012 17:50:20 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:bf79fb79ee13
1 /*
2 * Copyright (c) 2000, Samer Abdallah, King's College London.
3 * All rights reserved.
4 *
5 * This software is provided AS iS and WITHOUT ANY WARRANTY;
6 * without even the implied warranty of MERCHANTABILITY or
7 * FITNESS FOR A PARTICULAR PURPOSE.
8 */
9
10 package samer.core.util;
11
12 /**
13 This class maps a given interval of real numbers
14 to the interval [0,1], returning either the real
15 number, or converting it to an integer between 0
16 and a given value (defaults to 256).
17 */
18
19 public class LogMap extends IMap
20 {
21 public LogMap() { this(0.001,1.0,256); }
22 public LogMap(int m) { this(0.001,1.0,m); }
23 public LogMap(double t1, double t2) { this(t1,t2,256); }
24 public LogMap(double t1, double t2, int m) { setDomain(t1,t2); setIntRange(m); }
25
26 public double getDomainMin() { return Math.exp(super.getDomainMin()); }
27 public double getDomainMax() { return Math.exp(super.getDomainMax()); }
28 public void setDomain( double t1, double t2) {
29 if (t1<0 || t2<0) throw new Error("Bad domain for log map");
30 super.setDomain( Math.log(t1), Math.log(t2));
31 }
32
33 private static double log(double t) { return t>0 ? Math.log(t) : Double.NEGATIVE_INFINITY; }
34 public final double map( double t) { return super.map(log(t)); }
35 public final int clipInt( double t) { return super.clipInt(log(t)); }
36 public final int toInt( double t) { return super.toInt(log(t)); }
37 public double inverse(double t) { return Math.exp(super.inverse(t)); }
38 public double inverseFromInt(int i) { return Math.exp(super.inverseFromInt(i)); }
39 }
40
41
42
43
44
45
46
47