Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Internal / FloatUtil.cs / 1305600 / FloatUtil.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// File: FloatUtil.cs
//
// Description: This file contains the implementation of FloatUtil, which
// provides "fuzzy" comparison functionality for floats and
// float-based classes and structs in our code.
//
// History:
// 04/28/2003 : [....] - Created this header
// 05/20/2003 : [....] - Move to Shared.
//
//---------------------------------------------------------------------------
using System;
namespace MS.Internal
{
internal static class FloatUtil
{
internal static float FLT_EPSILON = 1.192092896e-07F;
internal static float FLT_MAX_PRECISION = 0xffffff;
internal static float INVERSE_FLT_MAX_PRECISION = 1.0F / FLT_MAX_PRECISION;
///
/// AreClose
///
public static bool AreClose(float a, float b)
{
if(a == b) return true;
// This computes (|a-b| / (|a| + |b| + 10.0f)) < FLT_EPSILON
float eps = ((float)Math.Abs(a) + (float)Math.Abs(b) + 10.0f) * FLT_EPSILON;
float delta = a - b;
return(-eps < delta) && (eps > delta);
}
///
/// IsOne
///
public static bool IsOne(float a)
{
return (float)Math.Abs(a-1.0f) < 10.0f * FLT_EPSILON;
}
///
/// IsZero
///
public static bool IsZero(float a)
{
return (float)Math.Abs(a) < 10.0f * FLT_EPSILON;
}
///
/// IsCloseToDivideByZero
///
public static bool IsCloseToDivideByZero(float numerator, float denominator)
{
// When updating this, please also update code in Arithmetic.h
return Math.Abs(denominator) <= Math.Abs(numerator) * INVERSE_FLT_MAX_PRECISION;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StringDictionary.cs
- ScalarOps.cs
- isolationinterop.cs
- TextTreeNode.cs
- WebPartTransformerAttribute.cs
- mediaclock.cs
- FilterableAttribute.cs
- Rule.cs
- SqlResolver.cs
- HandlerWithFactory.cs
- WhitespaceReader.cs
- XmlQueryStaticData.cs
- RootProfilePropertySettingsCollection.cs
- ObfuscationAttribute.cs
- HighContrastHelper.cs
- EntitySetBase.cs
- ChannelManager.cs
- CommandValueSerializer.cs
- SkewTransform.cs
- baseaxisquery.cs
- FormatConvertedBitmap.cs
- ObjectSelectorEditor.cs
- AnnotationHighlightLayer.cs
- DelegatingTypeDescriptionProvider.cs
- KnowledgeBase.cs
- FormViewUpdateEventArgs.cs
- NetworkAddressChange.cs
- Visual3D.cs
- AdapterUtil.cs
- MenuAutomationPeer.cs
- ControlTemplate.cs
- TransportConfigurationTypeElementCollection.cs
- ListViewCancelEventArgs.cs
- StatusBarPanelClickEvent.cs
- GPStream.cs
- ADMembershipProvider.cs
- PenContext.cs
- DoubleStorage.cs
- Graphics.cs
- TypeReference.cs
- NameScopePropertyAttribute.cs
- AssemblyBuilder.cs
- InstancePersistenceCommandException.cs
- SQLGuid.cs
- DecimalStorage.cs
- TextElementEnumerator.cs
- RelatedCurrencyManager.cs
- DataGrid.cs
- RTLAwareMessageBox.cs
- TimeSpanStorage.cs
- ThemeableAttribute.cs
- ToolStripItemDesigner.cs
- ZipIOExtraFieldPaddingElement.cs
- WebPartZoneBase.cs
- JsonReaderWriterFactory.cs
- MediaContext.cs
- CodeTypeParameterCollection.cs
- BitConverter.cs
- StaticSiteMapProvider.cs
- SettingsPropertyNotFoundException.cs
- Semaphore.cs
- SimplePropertyEntry.cs
- GraphicsPath.cs
- RepeatButtonAutomationPeer.cs
- LinqDataSourceView.cs
- EntitySqlException.cs
- EntityConnectionStringBuilder.cs
- DataReceivedEventArgs.cs
- Pipe.cs
- BamlLocalizer.cs
- EntityClassGenerator.cs
- MenuItem.cs
- ScrollViewer.cs
- _NegoStream.cs
- DateTimeUtil.cs
- WindowsIdentity.cs
- BlockCollection.cs
- ModifierKeysValueSerializer.cs
- DetailsViewRow.cs
- HttpResponseWrapper.cs
- WeakReadOnlyCollection.cs
- RefType.cs
- SpinWait.cs
- Convert.cs
- keycontainerpermission.cs
- ResourceLoader.cs
- Main.cs
- ActivityMarkupSerializationProvider.cs
- DocumentProperties.cs
- OdbcParameter.cs
- UseLicense.cs
- Rotation3D.cs
- ToolStripPanelDesigner.cs
- WaitHandle.cs
- UnsafeNativeMethods.cs
- ItemsPanelTemplate.cs
- PropertyItem.cs
- PeerNearMe.cs
- IBuiltInEvidence.cs
- AuthStoreRoleProvider.cs