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
- CommentEmitter.cs
- DocumentXmlWriter.cs
- HttpWebRequestElement.cs
- SqlCacheDependencyDatabase.cs
- DNS.cs
- PackageFilter.cs
- XMLSyntaxException.cs
- DateTimeConverter.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- IListConverters.cs
- GradientStop.cs
- SecurityKeyIdentifierClause.cs
- DataGridBeginningEditEventArgs.cs
- ColorIndependentAnimationStorage.cs
- VisualTreeHelper.cs
- GridViewRowPresenterBase.cs
- SQLBinaryStorage.cs
- IIS7UserPrincipal.cs
- ImageAnimator.cs
- TrackingMemoryStreamFactory.cs
- CompositeControl.cs
- DataServiceResponse.cs
- StyleSheetDesigner.cs
- OrderedHashRepartitionStream.cs
- IdentitySection.cs
- SqlDataSourceQueryEditorForm.cs
- Main.cs
- DataGridRowsPresenter.cs
- WindowsTitleBar.cs
- ResXDataNode.cs
- AttributeCollection.cs
- InstanceDataCollectionCollection.cs
- SqlUtils.cs
- HasCopySemanticsAttribute.cs
- SelectionPatternIdentifiers.cs
- CompilerScope.Storage.cs
- GZipUtils.cs
- TableCell.cs
- SessionIDManager.cs
- MetadataCache.cs
- XmlWrappingReader.cs
- CookieHandler.cs
- Rotation3DKeyFrameCollection.cs
- ImageIndexConverter.cs
- ImageDesigner.cs
- XmlElementList.cs
- StandardMenuStripVerb.cs
- DeadCharTextComposition.cs
- DataGridViewToolTip.cs
- ResolvedKeyFrameEntry.cs
- SelectionPatternIdentifiers.cs
- MimeReflector.cs
- DefaultPrintController.cs
- AddInEnvironment.cs
- NotifyIcon.cs
- XmlJsonWriter.cs
- CollaborationHelperFunctions.cs
- FontUnitConverter.cs
- Transform.cs
- ExpanderAutomationPeer.cs
- GeometryHitTestParameters.cs
- AnimatedTypeHelpers.cs
- MemoryRecordBuffer.cs
- FtpRequestCacheValidator.cs
- PageParserFilter.cs
- XmlDocumentFieldSchema.cs
- StorageFunctionMapping.cs
- TemplateBamlRecordReader.cs
- x509store.cs
- XNameConverter.cs
- SafeEventLogWriteHandle.cs
- ResourceDescriptionAttribute.cs
- IncrementalCompileAnalyzer.cs
- EmptyReadOnlyDictionaryInternal.cs
- LayoutEditorPart.cs
- SchemaSetCompiler.cs
- LogicalExpr.cs
- SiblingIterators.cs
- ContentPlaceHolder.cs
- QueryAsyncResult.cs
- SiteMapDataSourceView.cs
- IsolatedStorageFileStream.cs
- TaskResultSetter.cs
- WebEventCodes.cs
- OrderingExpression.cs
- Geometry.cs
- ConnectionsZoneAutoFormat.cs
- Vector3DCollection.cs
- ProxyHwnd.cs
- TreeWalker.cs
- FileLevelControlBuilderAttribute.cs
- BinaryObjectReader.cs
- GraphicsPath.cs
- TemplateLookupAction.cs
- HiddenFieldPageStatePersister.cs
- OdbcDataAdapter.cs
- MemberPath.cs
- ProcessHostConfigUtils.cs
- ViewStateModeByIdAttribute.cs
- StrongNameKeyPair.cs