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
- HijriCalendar.cs
- HttpCachePolicy.cs
- sqlinternaltransaction.cs
- ColumnMapProcessor.cs
- GuidConverter.cs
- HttpModuleCollection.cs
- BoundsDrawingContextWalker.cs
- MultiView.cs
- MonikerSyntaxException.cs
- SourceInterpreter.cs
- VerticalAlignConverter.cs
- Timer.cs
- TextServicesLoader.cs
- AsyncOperation.cs
- FontWeightConverter.cs
- CroppedBitmap.cs
- CredentialCache.cs
- IMembershipProvider.cs
- KerberosTokenFactoryCredential.cs
- ChooseAction.cs
- AdapterDictionary.cs
- HttpHandlerAction.cs
- Label.cs
- SqlServer2KCompatibilityCheck.cs
- Image.cs
- StubHelpers.cs
- XmlSchemaGroup.cs
- EndOfStreamException.cs
- ByteConverter.cs
- CodeFieldReferenceExpression.cs
- UseManagedPresentationElement.cs
- Composition.cs
- _NegotiateClient.cs
- TextServicesCompartmentContext.cs
- PropertyGrid.cs
- DeflateStream.cs
- XmlSchemaAnnotation.cs
- OleDragDropHandler.cs
- XmlUrlEditor.cs
- SmtpException.cs
- RecipientInfo.cs
- Empty.cs
- FixedPageStructure.cs
- ExpressionBuilder.cs
- SafeTimerHandle.cs
- ProfileService.cs
- PageThemeBuildProvider.cs
- LeaseManager.cs
- OutputCacheEntry.cs
- PageRanges.cs
- SettingsPropertyIsReadOnlyException.cs
- ComplexLine.cs
- XmlFormatMapping.cs
- HttpCapabilitiesEvaluator.cs
- TransactionWaitAsyncResult.cs
- UniqueEventHelper.cs
- ValidatingReaderNodeData.cs
- DataGridViewSelectedColumnCollection.cs
- bidPrivateBase.cs
- RowUpdatedEventArgs.cs
- SystemIPGlobalProperties.cs
- MimeReflector.cs
- ScrollItemPattern.cs
- PrintPreviewGraphics.cs
- CacheChildrenQuery.cs
- NativeMethodsCLR.cs
- ISFTagAndGuidCache.cs
- CanExecuteRoutedEventArgs.cs
- CoTaskMemHandle.cs
- InputBinder.cs
- PackageProperties.cs
- ExclusiveCanonicalizationTransform.cs
- ListArgumentProvider.cs
- RangeValidator.cs
- PagerSettings.cs
- SystemNetworkInterface.cs
- SqlRowUpdatingEvent.cs
- XMLSyntaxException.cs
- CatalogZone.cs
- CheckBoxBaseAdapter.cs
- DataGridColumnCollection.cs
- WebZone.cs
- XsdDateTime.cs
- LogReserveAndAppendState.cs
- ConstantProjectedSlot.cs
- DefaultTextStoreTextComposition.cs
- WizardStepBase.cs
- AutoResetEvent.cs
- HandlerFactoryWrapper.cs
- JournalEntryStack.cs
- TemplatedWizardStep.cs
- DataGridColumnHeadersPresenter.cs
- StringValueSerializer.cs
- TryExpression.cs
- HttpListenerElement.cs
- RangeValidator.cs
- CqlIdentifiers.cs
- LineInfo.cs
- DbProviderFactory.cs
- PipelineModuleStepContainer.cs