Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Shared / MS / Internal / FloatUtil.cs / 1 / 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 : adsmith - Created this header
// 05/20/2003 : adsmith - 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.
//----------------------------------------------------------------------------
//
// 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 : adsmith - Created this header
// 05/20/2003 : adsmith - 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
- XPathScanner.cs
- PreservationFileWriter.cs
- ActivityCodeGenerator.cs
- ComponentDispatcher.cs
- TraceSection.cs
- SiteMapSection.cs
- StoreAnnotationsMap.cs
- CharacterBuffer.cs
- WebSysDescriptionAttribute.cs
- CodeDomConfigurationHandler.cs
- peersecuritysettings.cs
- XmlSchemaAnnotation.cs
- UserPreference.cs
- OperationResponse.cs
- ConfigurationSettings.cs
- Frame.cs
- _ListenerAsyncResult.cs
- ObjectSecurity.cs
- SAPIEngineTypes.cs
- _UriTypeConverter.cs
- ThreadPool.cs
- SudsWriter.cs
- ProfileWorkflowElement.cs
- _NegotiateClient.cs
- DoubleUtil.cs
- MethodAccessException.cs
- DataServiceQuery.cs
- BufferedGraphics.cs
- ExpressionWriter.cs
- TabletDevice.cs
- Deflater.cs
- TokenBasedSetEnumerator.cs
- Metadata.cs
- ClientType.cs
- EventEntry.cs
- PersonalizableAttribute.cs
- SkinBuilder.cs
- HwndHost.cs
- XPathMessageFilterElementComparer.cs
- BufferedGraphicsManager.cs
- XmlSignificantWhitespace.cs
- TransactionInformation.cs
- SafeReadContext.cs
- ReferenceEqualityComparer.cs
- ControlPropertyNameConverter.cs
- XmlEntity.cs
- AncestorChangedEventArgs.cs
- PointAnimationUsingKeyFrames.cs
- UnionExpr.cs
- CancelEventArgs.cs
- GraphicsPathIterator.cs
- RSAProtectedConfigurationProvider.cs
- ReferenceEqualityComparer.cs
- ImageKeyConverter.cs
- XmlUtf8RawTextWriter.cs
- BuildProvider.cs
- UnsignedPublishLicense.cs
- SQLDateTimeStorage.cs
- RegexParser.cs
- AttributedMetaModel.cs
- MSG.cs
- BindingSource.cs
- CheckBoxAutomationPeer.cs
- EdmRelationshipRoleAttribute.cs
- SortQuery.cs
- WebPartTransformer.cs
- mediaeventshelper.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- OrthographicCamera.cs
- CursorConverter.cs
- SplineKeyFrames.cs
- ExceptionRoutedEventArgs.cs
- DockPanel.cs
- WebUtil.cs
- HostingEnvironment.cs
- InvalidateEvent.cs
- InvalidFilterCriteriaException.cs
- HttpListenerTimeoutManager.cs
- IxmlLineInfo.cs
- CursorConverter.cs
- ProcessRequestArgs.cs
- SharedPersonalizationStateInfo.cs
- SortQuery.cs
- ExtentKey.cs
- HostProtectionPermission.cs
- MetafileHeader.cs
- DataReaderContainer.cs
- sitestring.cs
- ImageBrush.cs
- XmlSchemaParticle.cs
- KeyGesture.cs
- TreeViewCancelEvent.cs
- XmlDataDocument.cs
- TableParaClient.cs
- CfgParser.cs
- RuntimeHandles.cs
- DurableOperationAttribute.cs
- SourceChangedEventArgs.cs
- SerialErrors.cs
- FrameworkContextData.cs