/*
 * JScience - Java(TM) Tools and Libraries for the Advancement of Sciences.
 * Copyright (C) 2006 - JScience (http://jscience.org/)
 * All rights reserved.
 * 
 * Permission to use, copy, modify, and distribute this software is
 * freely granted, provided that this notice is preserved.
 */
package javax.measure.converter;

/**
 * 

This class represents a logarithmic converter. Such converter * is typically used to create logarithmic unit. For example:[code] * Unit BEL = Unit.ONE.transform(new LogConverter(10).inverse()); * [/code]

* *

Instances of this class are immutable.

* * @author Jean-Marie Dautelle * @version 3.1, April 22, 2006 */ public final class LogConverter extends UnitConverter { /** * Holds the logarithmic base. */ private final double _base; /** * Holds the natural logarithm of the base. */ private final double _logBase; /** * Holds the inverse of the natural logarithm of the base. */ private final double _invLogBase; /** * Holds the inverse of this converter. */ private final Inverse _inverse = new Inverse(); /** * Creates a logarithmic converter having the specified base. * * @param base the logarithmic base (e.g. Math.E for * the Natural Logarithm). */ public LogConverter(double base) { _base = base; _logBase = Math.log(base); _invLogBase = 1.0 / _logBase; } /** * Returns the logarithmic base of this converter. * * @return the logarithmic base (e.g. Math.E for * the Natural Logarithm). */ public double getBase() { return _base; } @Override public UnitConverter inverse() { return _inverse; } @Override public double convert(double amount) { return _invLogBase * Math.log(amount); } @Override public boolean isLinear() { return false; } /** * This inner class represents the inverse of the logarithmic converter * (exponentiation converter). */ private class Inverse extends UnitConverter { @Override public UnitConverter inverse() { return LogConverter.this; } @Override public double convert(double amount) { return Math.exp(_logBase * amount); } @Override public boolean isLinear() { return false; } private static final long serialVersionUID = 1L; } private static final long serialVersionUID = 1L; }

Ads help maintain this website.