/// <summary> /// Returns a hash code for this instance. /// </summary> /// <returns> /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. /// </returns> public override int GetHashCode() { var hashNum = Math.Min(NonZerosCount, 20); long hash = 0; for (var i = 0; i < hashNum; i++) { #if SILVERLIGHT hash ^= Precision.DoubleToInt64Bits(this._nonZeroValues[i].GetHashCode()); #else hash ^= BitConverter.DoubleToInt64Bits(_nonZeroValues[i].GetHashCode()); #endif } return(BitConverter.ToInt32(BitConverter.GetBytes(hash), 4)); }