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

            compiler.multiply(data, 0, a.data, 0, result.data, 0);
            return(result);
        }