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
- TextBoxRenderer.cs
- Serializer.cs
- XNodeValidator.cs
- ListBox.cs
- ToolBar.cs
- WCFModelStrings.Designer.cs
- CatalogPartDesigner.cs
- ACL.cs
- PrivacyNoticeBindingElementImporter.cs
- ListBoxAutomationPeer.cs
- ILGenerator.cs
- TextRangeAdaptor.cs
- StaticSiteMapProvider.cs
- XmlTypeAttribute.cs
- TemplateApplicationHelper.cs
- WebServiceData.cs
- Configuration.cs
- DocumentViewerAutomationPeer.cs
- TrustLevel.cs
- WebPartConnectionsDisconnectVerb.cs
- SqlTriggerAttribute.cs
- VirtualPathProvider.cs
- BindingElementCollection.cs
- OdbcConnectionHandle.cs
- PromptBuilder.cs
- PerformanceCounterPermissionAttribute.cs
- DecoderNLS.cs
- SettingsPropertyCollection.cs
- StopStoryboard.cs
- BookmarkEventArgs.cs
- ObjectConverter.cs
- DrawingServices.cs
- FirstMatchCodeGroup.cs
- ColumnHeader.cs
- ClosureBinding.cs
- MsmqIntegrationMessageProperty.cs
- LocatorPartList.cs
- SpeakInfo.cs
- HtmlTableCell.cs
- SolidColorBrush.cs
- XmlCharCheckingWriter.cs
- MenuRendererClassic.cs
- XmlDictionaryString.cs
- NullableConverter.cs
- AuthenticationModuleElementCollection.cs
- Image.cs
- DynamicUpdateCommand.cs
- RuleRef.cs
- PagesChangedEventArgs.cs
- AssemblyAttributesGoHere.cs
- EntitySqlQueryState.cs
- EncoderParameter.cs
- SHA384.cs
- Int16.cs
- SqlCrossApplyToCrossJoin.cs
- RegionData.cs
- KeyboardEventArgs.cs
- MenuTracker.cs
- FileLogRecord.cs
- CompilerResults.cs
- SignedXml.cs
- AssemblyFilter.cs
- _RegBlobWebProxyDataBuilder.cs
- LambdaCompiler.Lambda.cs
- ApplicationBuildProvider.cs
- EntityWrapperFactory.cs
- CounterCreationData.cs
- DataKeyArray.cs
- TabletCollection.cs
- FontWeightConverter.cs
- ClaimTypeElement.cs
- DataMisalignedException.cs
- SqlConnectionString.cs
- StylusDevice.cs
- PreservationFileReader.cs
- Floater.cs
- LazyTextWriterCreator.cs
- MissingManifestResourceException.cs
- _IPv6Address.cs
- Receive.cs
- Block.cs
- MarginsConverter.cs
- ContainerFilterService.cs
- BaseParser.cs
- ZoneMembershipCondition.cs
- Run.cs
- ModifiableIteratorCollection.cs
- TextRangeEdit.cs
- DetailsViewInsertedEventArgs.cs
- ResourceManager.cs
- BitStream.cs
- XPathSelfQuery.cs
- ExpressionVisitorHelpers.cs
- XmlSchemaAttributeGroupRef.cs
- GroupBoxDesigner.cs
- BroadcastEventHelper.cs
- LogWriteRestartAreaAsyncResult.cs
- RegexWriter.cs
- PreloadHost.cs
- Msmq.cs