Package org.openjdk.jmc.common.unit
Class ScaleFactor
java.lang.Object
org.openjdk.jmc.common.unit.ScaleFactor
- All Implemented Interfaces:
Comparable<ScaleFactor>,IScalarAffineTransform
- Direct Known Subclasses:
BinaryScaleFactor,DecimalScaleFactor,ImpreciseScaleFactor,LongScaleFactor
public abstract class ScaleFactor
extends Object
implements IScalarAffineTransform, Comparable<ScaleFactor>
A linear transform, that is, a scale factor.
Note: This class has a natural ordering that is inconsistent with equals.
(This is because in a certain subclass, ImpreciseScaleFactor, different instances may
express the same scale factor with different precision.)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintcompareTo(ScaleFactor other) final IScalarAffineTransformconcat(IScalarAffineTransform innerTransform) Concatenate this transform withinnerTransform, such that applying the resulting transform is equivalent to first applyinginnerTransformand then applying this transform on the resulting value.abstract ScaleFactorconcat(ScaleFactor innerFactor) Concatenate (that is, multiply) this scale factor withinnerFactor.abstract booleanfinal doubleabstract inthashCode()abstract ScaleFactorinvert()final IScalarAffineTransforminvertAndConcat(IScalarAffineTransform innerTransform) Concatenate the inverse of this transform withinnerTransform, such that applying the resulting transform is equivalent to first applyinginnerTransformand then applying this inverse of this transform on the resulting value.invertAndConcat(ScaleFactor innerFactor) Concatenate (that is, multiply) the inverse of this scale factor withinnerFactor.scale(long multiplier) doubletargetFloor(double srcNumericalValue) inttargetIntFloor(Number srcNumericalValue) targetNumber(long srcNumericalValue) targetNumber(Number srcNumericalValue) Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.openjdk.jmc.common.unit.IScalarAffineTransform
getMultiplier, isInteger, isUnity, targetFloor, targetOutOfRange, targetOutOfRange, targetValue, targetValue
-
Constructor Details
-
ScaleFactor
public ScaleFactor()
-
-
Method Details
-
concat
Description copied from interface:IScalarAffineTransformConcatenate this transform withinnerTransform, such that applying the resulting transform is equivalent to first applyinginnerTransformand then applying this transform on the resulting value. That is, R(v) = T(I(v)), where R(v) is the resulting transform, T(v) is this transform, and I(v) isinnerTransform.In this snippet,
v1andv2should be equal, apart from numerical precision, for anyv.IScalarAffineTransform R, T = ..., I = ...; double v = ...; R = T.concat(I); double v1 = R.targetValue(v); double v2 = T.targetValue(I.targetValue(v));
- Specified by:
concatin interfaceIScalarAffineTransform- Parameters:
innerTransform- the transform that should be applied before this transform- Returns:
- the concatenated transform
-
concat
Concatenate (that is, multiply) this scale factor withinnerFactor. This is just a special case ofconcat(IScalarAffineTransform).- Returns:
- the combined scale factor
- See Also:
-
invertAndConcat
Description copied from interface:IScalarAffineTransformConcatenate the inverse of this transform withinnerTransform, such that applying the resulting transform is equivalent to first applyinginnerTransformand then applying this inverse of this transform on the resulting value. That is, R(v) = T-1(I(v)), where R(v) is the resulting transform, T-1(v) is the inverse of this transform, and I(v) isinnerTransform.In this snippet,
v1andv2should be equal, apart from numerical precision, for anyv.IScalarAffineTransform R, T = ..., I = ...; double v = ...; R = T.invertAndConcat(I); double v1 = R.targetValue(v); double v2 = T.invert().targetValue(I.targetValue(v));
- Specified by:
invertAndConcatin interfaceIScalarAffineTransform- Parameters:
innerTransform- the transform that should be applied before this transform- Returns:
- the concatenated transform
-
invertAndConcat
Concatenate (that is, multiply) the inverse of this scale factor withinnerFactor. This is just a special case ofinvertAndConcat(IScalarAffineTransform).- Returns:
- the combined scale factor
- See Also:
-
invert
- Specified by:
invertin interfaceIScalarAffineTransform- Returns:
- the inverse transform
-
getOffset
public final double getOffset()- Specified by:
getOffsetin interfaceIScalarAffineTransform- Returns:
- the offset to be added (after the source value has been multiplied with the
multiplier)
-
targetFloor
public double targetFloor(double srcNumericalValue) - Specified by:
targetFloorin interfaceIScalarAffineTransform- Parameters:
srcNumericalValue- a numerical quantity value, expressed in the source unit- Returns:
- the floor of the corresponding numerical quantity value, when expressed in the target unit
-
targetIntFloor
- Specified by:
targetIntFloorin interfaceIScalarAffineTransform- Parameters:
srcNumericalValue- a numerical quantity value, expressed in the source unit- Returns:
- the floor of the corresponding numerical quantity value, when expressed in the target
unit, clamped to an
int
-
targetNumber
- Specified by:
targetNumberin interfaceIScalarAffineTransform- Parameters:
srcNumericalValue- an exact numerical quantity value, expressed in the source unit- Returns:
- the corresponding numerical quantity value, when expressed in the target unit, as a
Longif it can exactly be represented in one, otherwise as some otherNumberwith at least the precision ofdouble
-
scale
-
targetNumber
- Specified by:
targetNumberin interfaceIScalarAffineTransform- Parameters:
srcNumericalValue- an exact or inexact numerical quantity value, expressed in the source unit- Returns:
- the corresponding numerical quantity value, when expressed in the target unit, as a
Longif it can exactly be represented in one, otherwise as some otherNumberwith at least the precision ofdouble
-
compareTo
- Specified by:
compareToin interfaceComparable<ScaleFactor>
-
equals
-
hashCode
public abstract int hashCode()
-