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
- ResourceExpressionBuilder.cs
- ImageBrush.cs
- SchemaTableOptionalColumn.cs
- WorkItem.cs
- EntityUtil.cs
- CompoundFileStorageReference.cs
- VirtualPath.cs
- BindStream.cs
- XmlSchemaAnnotated.cs
- XmlHierarchyData.cs
- CollaborationHelperFunctions.cs
- CheckBoxList.cs
- HashCodeCombiner.cs
- Int32AnimationUsingKeyFrames.cs
- MethodRental.cs
- DataSet.cs
- Polyline.cs
- Storyboard.cs
- EntityObject.cs
- ParamArrayAttribute.cs
- WebPartTransformerAttribute.cs
- CreateUserWizardStep.cs
- ComAdminInterfaces.cs
- EntitySet.cs
- CreateUserWizardStep.cs
- GPRECT.cs
- ThicknessConverter.cs
- GeometryHitTestResult.cs
- Errors.cs
- BCLDebug.cs
- PhonemeEventArgs.cs
- AccessViolationException.cs
- ByValueEqualityComparer.cs
- CompositeKey.cs
- XPathNodeIterator.cs
- ControlBuilder.cs
- storepermissionattribute.cs
- activationcontext.cs
- DaylightTime.cs
- ResourceDisplayNameAttribute.cs
- FieldMetadata.cs
- BaseProcessor.cs
- GridViewDeleteEventArgs.cs
- Monitor.cs
- Shape.cs
- HelpKeywordAttribute.cs
- ParserOptions.cs
- DataViewManager.cs
- _AutoWebProxyScriptEngine.cs
- DataBoundLiteralControl.cs
- XamlFilter.cs
- Int64.cs
- ObjectPersistData.cs
- OracleParameter.cs
- SizeConverter.cs
- ThreadAbortException.cs
- XmlWrappingWriter.cs
- SessionStateSection.cs
- TextBoxAutoCompleteSourceConverter.cs
- AlignmentYValidation.cs
- AjaxFrameworkAssemblyAttribute.cs
- FtpRequestCacheValidator.cs
- TypeLoader.cs
- ServiceHttpModule.cs
- VSWCFServiceContractGenerator.cs
- Token.cs
- BitmapEffectDrawingContent.cs
- EntityDataSourceQueryBuilder.cs
- CircleHotSpot.cs
- ThreadStartException.cs
- IFormattable.cs
- TextEvent.cs
- CalendarDay.cs
- SafePEFileHandle.cs
- UriSectionReader.cs
- CfgParser.cs
- WebPartRestoreVerb.cs
- DataGridViewComboBoxCell.cs
- FontCacheUtil.cs
- TextElement.cs
- XmlSchemaInclude.cs
- WindowsListViewScroll.cs
- IndexedString.cs
- MulticastDelegate.cs
- RSACryptoServiceProvider.cs
- TagMapInfo.cs
- LoginViewDesigner.cs
- WindowsScroll.cs
- ReversePositionQuery.cs
- FlowDocumentFormatter.cs
- QilInvoke.cs
- CompatibleIComparer.cs
- WmlFormAdapter.cs
- ThemeInfoAttribute.cs
- PermissionRequestEvidence.cs
- CacheOutputQuery.cs
- FtpCachePolicyElement.cs
- EnumConverter.cs
- TextTreeUndoUnit.cs
- XPathDocumentIterator.cs