### Question:
LogValueScale implements ValueScale { @Override public double invScaleValue(double scaleValue, double actualMinValue, double actualMaxValue, double scaleMinValue, double scaleMaxValue) { actualMinValue = Math.log10(actualMinValue); actualMaxValue = Math.log10(actualMaxValue); double actualRange = actualMaxValue - actualMinValue; double scaleRange = scaleMaxValue - scaleMinValue; return Math.pow(10.0, actualMinValue + (scaleValue - scaleMinValue) / scaleRange * actualRange); }  @Override double scaleValue(double value, double minValue, double maxValue, double newMinValue, double newMaxValue); @Override double invScaleValue(double scaleValue, double actualMinValue, double actualMaxValue, double scaleMinValue, double scaleMaxValue); @Override ValueAxis references(Range range, int minRefs, int maxRefs);  }### Answer:
@Test public void invScaleValue1() { ValueScale logScale = ValueScales.logScale(); assertThat(logScale.invScaleValue(50.0, 1, 100, 0, 100), equalTo(10.0)); }
@Test public void invScaleValue2() { ValueScale logScale = ValueScales.logScale(); assertThat(logScale.invScaleValue(0.0, 10, 1000, -100, 100), equalTo(100.0)); }