/// <inheritdoc/>
        /// <exception cref="DimensionMismatchException"> if number of free parameters
        /// or orders do not match</exception>
        public DerivativeStructure subtract(DerivativeStructure a)
        {
            compiler.checkCompatibility(a.compiler);
            DerivativeStructure ds = new DerivativeStructure(this);

            compiler.subtract(data, 0, a.data, 0, ds.data, 0);
            return(ds);
        }