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
- TcpAppDomainProtocolHandler.cs
- SqlXmlStorage.cs
- OverflowException.cs
- AppearanceEditorPart.cs
- dataSvcMapFileLoader.cs
- CompensationExtension.cs
- InertiaExpansionBehavior.cs
- ExternalFile.cs
- PageParserFilter.cs
- PerspectiveCamera.cs
- ConfigXmlAttribute.cs
- TypeDelegator.cs
- _DomainName.cs
- OpenTypeCommon.cs
- EdmTypeAttribute.cs
- TextSpanModifier.cs
- ExpressionLexer.cs
- DataGridBeginningEditEventArgs.cs
- LongTypeConverter.cs
- IPAddress.cs
- JapaneseCalendar.cs
- BrushValueSerializer.cs
- AssociationTypeEmitter.cs
- DeferredElementTreeState.cs
- StyleXamlParser.cs
- ImageListUtils.cs
- FormsAuthentication.cs
- AssociationSet.cs
- IncrementalCompileAnalyzer.cs
- Enum.cs
- NativeMethods.cs
- DefaultMemberAttribute.cs
- MatrixTransform3D.cs
- ProxyGenerationError.cs
- OperandQuery.cs
- CollectionBuilder.cs
- ProfileGroupSettingsCollection.cs
- StateValidator.cs
- DataGridViewComboBoxColumnDesigner.cs
- ErrorEventArgs.cs
- WebConfigurationHost.cs
- __Filters.cs
- Thumb.cs
- ResourceCategoryAttribute.cs
- EventLogLink.cs
- Config.cs
- SoapProtocolReflector.cs
- DecoderExceptionFallback.cs
- BmpBitmapEncoder.cs
- ConnectionPoint.cs
- XmlMapping.cs
- Panel.cs
- BindingContext.cs
- DataBindingExpressionBuilder.cs
- Polyline.cs
- AtlasWeb.Designer.cs
- CompiledAction.cs
- SystemInfo.cs
- PersonalizablePropertyEntry.cs
- RectangleGeometry.cs
- ScalarType.cs
- Tablet.cs
- ComboBox.cs
- EntityTypeBase.cs
- DataTemplateKey.cs
- XPathArrayIterator.cs
- ListDictionary.cs
- PackWebRequestFactory.cs
- CleanUpVirtualizedItemEventArgs.cs
- BCryptHashAlgorithm.cs
- HashHelper.cs
- ConcurrentStack.cs
- Int32Storage.cs
- BuildResult.cs
- LinqDataSourceView.cs
- XmlCompatibilityReader.cs
- PreviewControlDesigner.cs
- OutArgumentConverter.cs
- ConstraintManager.cs
- TemplateNameScope.cs
- DataGridViewImageCell.cs
- OdbcUtils.cs
- HtmlElementErrorEventArgs.cs
- PtsPage.cs
- Memoizer.cs
- WebPartEditorApplyVerb.cs
- UnlockInstanceCommand.cs
- ToolStripPanel.cs
- UniqueConstraint.cs
- DesignerDataRelationship.cs
- NativeObjectSecurity.cs
- IdentitySection.cs
- JsonDataContract.cs
- ClientTargetCollection.cs
- FixedSOMLineCollection.cs
- XPathExpr.cs
- TableLayoutRowStyleCollection.cs
- CacheChildrenQuery.cs
- FreezableDefaultValueFactory.cs
- PaginationProgressEventArgs.cs