/// <summary>
        /// Test for the equality of two derivative structures.
        /// <para>
        /// Derivative structures are considered equal if they have the same number
        /// of free parameters, the same derivation order, and the same derivatives.
        /// </para>
        /// </summary>
        /// <param name="other">Object to test for equality to this</param>
        /// <returns>true if two derivative structures are equal</returns>
        public override Boolean Equals(Object other)
        {
            if (this == other)
            {
                return(true);
            }

            if (other is DerivativeStructure)
            {
                DerivativeStructure rhs = (DerivativeStructure)other;
                return((getFreeParameters() == rhs.getFreeParameters()) &&
                       (getOrder() == rhs.getOrder()) &&
                       MathArrays.equals(data, rhs.data));
            }
            return(false);
        }