udunits/src/main/java/ucar/units/OffsetUnit.java
public double[] fromDerivedUnit(final double[] input, final double[] output)
            throws ConversionException {
        if (!(_unit instanceof DerivableUnit)) {
            throw new ConversionException(getDerivedUnit(), this);
        }
        ((DerivableUnit) getUnit()).fromDerivedUnit(input, output);
        final double origin = getOffset();
        for (int i = input.length; --i >= 0;) {
            output[i] -= origin;
        }
        return output;
    }
public double[] fromDerivedUnit(final double[] input, final double[] output)
            throws ConversionException {
        if (!(_unit instanceof DerivableUnit)) {
            throw new ConversionException(getDerivedUnit(), this);
        }
        ((DerivableUnit) getUnit()).fromDerivedUnit(input, output);
        final double origin = getOffset();
        for (int i = input.length; --i >= 0;) {
            output[i] -= origin;
        }
        return output;
    }
public double [ ] fromDerivedUnit ( final double [ ] input , final double [ ] output ) throws ConversionException { if ( ! ( _unit instanceof DerivableUnit ) ) { throw new ConversionException ( getDerivedUnit ( ) , this ) ; } ( ( DerivableUnit ) getUnit ( ) ) . fromDerivedUnit ( input , output ) ; final double origin = getOffset ( ) ; for ( int i = input . length ; -- i >= 0 ; ) { output [ i ] -= origin ; } return output ; }
Converts values in the convertible derived unit to the equivalent values
in this unit.

@param input
The values in the convertible derived unit.
@param output
The equivalent values in this unit. May be the same array as
<code>input</code>.
@return <code>output</code>.
@throws ConversionException
Can't convert between units.
Converts values in the convertible derived unit to the equivalent values in this unit .