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
- XmlChildNodes.cs
- SerializationInfoEnumerator.cs
- TableLayoutRowStyleCollection.cs
- OleCmdHelper.cs
- DataTransferEventArgs.cs
- OptimalBreakSession.cs
- VideoDrawing.cs
- HyperLink.cs
- MessageContractAttribute.cs
- WebPartEditorOkVerb.cs
- PathFigureCollectionConverter.cs
- TimeSpanValidatorAttribute.cs
- ScaleTransform.cs
- SQLBinary.cs
- TableMethodGenerator.cs
- ToolStripLabel.cs
- SmtpFailedRecipientsException.cs
- StreamWriter.cs
- WsdlServiceChannelBuilder.cs
- WpfWebRequestHelper.cs
- ChannelAcceptor.cs
- ArgumentValidation.cs
- XmlTextReader.cs
- DataGridCaption.cs
- Validator.cs
- TemplateComponentConnector.cs
- MiniCustomAttributeInfo.cs
- HoistedLocals.cs
- FontDialog.cs
- InputReport.cs
- PersonalizationDictionary.cs
- IDReferencePropertyAttribute.cs
- NativeCppClassAttribute.cs
- RequiredFieldValidator.cs
- OdbcConnectionString.cs
- ListBase.cs
- PageParserFilter.cs
- XPathDocumentNavigator.cs
- MessageBodyDescription.cs
- DataGridColumnHeadersPresenter.cs
- SourceLineInfo.cs
- DesignColumnCollection.cs
- TextBreakpoint.cs
- ReadOnlyCollectionBase.cs
- __Filters.cs
- ObjectConverter.cs
- AssemblyHash.cs
- ViewCellRelation.cs
- localization.cs
- HtmlControlPersistable.cs
- ControlAdapter.cs
- AnonymousIdentificationModule.cs
- DataServiceOperationContext.cs
- DesignBindingPicker.cs
- FontCacheUtil.cs
- BasicExpandProvider.cs
- ReferentialConstraint.cs
- SchemaNames.cs
- LocatorManager.cs
- processwaithandle.cs
- KeyNotFoundException.cs
- SafeProcessHandle.cs
- CommandConverter.cs
- Label.cs
- TextElement.cs
- EditingCoordinator.cs
- IItemProperties.cs
- SplineKeyFrames.cs
- Emitter.cs
- AutomationEventArgs.cs
- SatelliteContractVersionAttribute.cs
- QuaternionRotation3D.cs
- DocumentPageTextView.cs
- BufferModeSettings.cs
- DirtyTextRange.cs
- ComponentFactoryHelpers.cs
- DirectionalLight.cs
- XhtmlBasicPageAdapter.cs
- SoapTypeAttribute.cs
- RotateTransform.cs
- XmlSchemaIdentityConstraint.cs
- GridViewColumnHeader.cs
- InheritanceAttribute.cs
- DateTimeFormatInfo.cs
- ListCollectionView.cs
- ResourceSet.cs
- ExpressionParser.cs
- ResourceContainer.cs
- SelectedDatesCollection.cs
- arclist.cs
- CommentEmitter.cs
- ReverseQueryOperator.cs
- ContainerUtilities.cs
- SettingsPropertyCollection.cs
- sqlcontext.cs
- DataViewSetting.cs
- SqlTypesSchemaImporter.cs
- CodeIdentifiers.cs
- ContentOperations.cs
- ImageDrawing.cs