Пример #1
0
        /// <summary>
        /// 指定された 2つの<see cref="Vector"/> が等しいかどうかを示す.
        /// </summary>
        /// <param name="left"><see cref="Vector"/></param>
        /// <param name="right"><see cref="Vector"/></param>
        /// <param name="delta">
        /// 各要素の値が同等であるとみなされる差異の閾値(&gt; 0)
        /// (<c><see cref="System.Math.Abs(double)"/>(<paramref name="left"/>[i] - <paramref name="right"/>[i]) &lt; <paramref name="delta"/></c>であれば同等とみなす)
        /// </param>
        /// <returns>等しければ<c>true</c>を,それ以外の場合は<c>false</c>を返す.</returns>
        public static bool Equals(Vector left, Vector right, double delta)
        {
            if (object.ReferenceEquals(left, right))
            {
                return(true);
            }

            if (left == null || right == null)
            {
                return(false);
            }

            if (left.Size != right.Size)
            {
                return(false);
            }

            return(delta < 0 ?
                   VectorImpl.HaveSameValues(left, right)
                : VectorImpl.HaveSameValues(left, right, delta));
        }
Пример #2
0
        /// <summary>
        /// 指定された複数の<see cref="IVector"/>インタフェースを実装したオブジェクトにおいて,
        /// それらが同じ要素値を持っているかどうかを判定する.
        /// </summary>
        /// <param name="vectors">可変個の<see cref="IVector"/>インタフェースを実装したオブジェクト</param>
        /// <returns>
        /// 全てのオブジェクトにおいて,全ての要素値が一致すれば<c>true</c>を,それ以外は<c>false</c>を返す.
        /// </returns>
        public static bool HaveSameValues(params IVector[] vectors)
        {
            if (vectors == null)
            {
                return(false);   // 値を持たないから
            }

            if (vectors.Length <= 1)
            {
                return(true);
            }

            IVector criterion = vectors[0];

            for (int i = 1; i < vectors.Length; ++i)
            {
                if (!VectorImpl.HaveSameValues(criterion, vectors[i]))
                {
                    return(false);
                }
            }
            return(true);
        }