Code:
/ 4.0 / 4.0 / 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.
//----------------------------------------------------------------------------
//
// 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
- ConfigurationStrings.cs
- MetadataSerializer.cs
- ScriptResourceInfo.cs
- DbConnectionPoolIdentity.cs
- ItemsPanelTemplate.cs
- ClassicBorderDecorator.cs
- XmlSignificantWhitespace.cs
- PathSegmentCollection.cs
- PerspectiveCamera.cs
- Tuple.cs
- TextBlock.cs
- RegexCharClass.cs
- RuleInfoComparer.cs
- RadioButtonPopupAdapter.cs
- _NtlmClient.cs
- QilValidationVisitor.cs
- COM2EnumConverter.cs
- SrgsText.cs
- _ContextAwareResult.cs
- ZoomPercentageConverter.cs
- BitmapData.cs
- Stopwatch.cs
- NumberFormatInfo.cs
- SystemIcmpV6Statistics.cs
- UpdatePanel.cs
- XmlSchemaSet.cs
- ConfigurationManagerHelper.cs
- Item.cs
- QuotedStringFormatReader.cs
- InteropAutomationProvider.cs
- DesignerVerbCollection.cs
- SqlDataSourceView.cs
- HtmlInputCheckBox.cs
- HGlobalSafeHandle.cs
- ItemType.cs
- IdnElement.cs
- DbDataSourceEnumerator.cs
- Metafile.cs
- EdmConstants.cs
- ExpressionNode.cs
- SByteStorage.cs
- RoleGroupCollection.cs
- SqlDataReaderSmi.cs
- Win32Native.cs
- HttpModuleActionCollection.cs
- ISFTagAndGuidCache.cs
- SoapException.cs
- DataGridViewHeaderCell.cs
- XmlDocument.cs
- AdornerPresentationContext.cs
- SoapObjectReader.cs
- TrackingDataItemValue.cs
- TrackingProfileDeserializationException.cs
- Pool.cs
- Reference.cs
- NewArrayExpression.cs
- InkCanvasInnerCanvas.cs
- EncoderExceptionFallback.cs
- SortedDictionary.cs
- Brush.cs
- DesignBindingPropertyDescriptor.cs
- PersonalizationAdministration.cs
- ModelTreeEnumerator.cs
- DataRow.cs
- TemplateInstanceAttribute.cs
- TextSegment.cs
- SelectedGridItemChangedEvent.cs
- ToolboxComponentsCreatingEventArgs.cs
- StickyNote.cs
- _UriSyntax.cs
- ProgressPage.cs
- WmpBitmapDecoder.cs
- ImplicitInputBrush.cs
- RewritingValidator.cs
- SettingsSection.cs
- StringValueConverter.cs
- XmlChoiceIdentifierAttribute.cs
- SchemaNamespaceManager.cs
- _OverlappedAsyncResult.cs
- CapabilitiesUse.cs
- HtmlEmptyTagControlBuilder.cs
- EditorZoneBase.cs
- MachineKeySection.cs
- BrowserDefinition.cs
- FrugalList.cs
- XmlDataSourceNodeDescriptor.cs
- KeyedHashAlgorithm.cs
- RegexRunnerFactory.cs
- PackagingUtilities.cs
- HtmlControlPersistable.cs
- TransformerTypeCollection.cs
- RequestQueryProcessor.cs
- PermissionAttributes.cs
- SqlCacheDependencyDatabase.cs
- InstanceData.cs
- XamlInt32CollectionSerializer.cs
- EntityDataSourceWrapperCollection.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- base64Transforms.cs
- login.cs