Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- Tokenizer.cs
- FormsAuthenticationUser.cs
- DataGridViewButtonColumn.cs
- TTSEvent.cs
- RequestCachePolicy.cs
- AnonymousIdentificationModule.cs
- GridEntry.cs
- SqlDataReaderSmi.cs
- PagesSection.cs
- PointUtil.cs
- LedgerEntry.cs
- ToolboxControl.cs
- hwndwrapper.cs
- _RequestLifetimeSetter.cs
- FileClassifier.cs
- TraceSection.cs
- ReachSerializationUtils.cs
- CqlParser.cs
- InstanceData.cs
- TriState.cs
- PolicyManager.cs
- XmlSerializer.cs
- RegularExpressionValidator.cs
- WindowsListViewGroup.cs
- LogEntryDeserializer.cs
- StringToken.cs
- SchemaHelper.cs
- Int64Animation.cs
- SqlDataSourceQueryEditorForm.cs
- XMLSchema.cs
- FileDialogCustomPlace.cs
- SQLInt64.cs
- MetadataWorkspace.cs
- ProcessModelInfo.cs
- WebPartVerb.cs
- SaveFileDialogDesigner.cs
- EntityContainer.cs
- DbFunctionCommandTree.cs
- ConfigurationStrings.cs
- ControlUtil.cs
- UndoManager.cs
- HttpTransportSecurity.cs
- ComponentConverter.cs
- Compilation.cs
- ObjectReaderCompiler.cs
- ParseElement.cs
- DataGridView.cs
- HttpProtocolReflector.cs
- AuthorizationSection.cs
- XmlCDATASection.cs
- DBDataPermission.cs
- CheckedPointers.cs
- DataComponentMethodGenerator.cs
- SessionStateUtil.cs
- SafeViewOfFileHandle.cs
- ComponentResourceManager.cs
- IdentityValidationException.cs
- Expression.cs
- GlyphInfoList.cs
- HtmlUtf8RawTextWriter.cs
- WmlTextBoxAdapter.cs
- Repeater.cs
- WebPartConnectionsConfigureVerb.cs
- XmlNullResolver.cs
- RefreshEventArgs.cs
- DataGridViewCellValidatingEventArgs.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- ThumbAutomationPeer.cs
- LocatorBase.cs
- HtmlInputImage.cs
- SqlTypesSchemaImporter.cs
- ConditionalDesigner.cs
- ReadOnlyCollection.cs
- ReferenceConverter.cs
- CompensationToken.cs
- ProfileGroupSettingsCollection.cs
- ProgressPage.cs
- ViewValidator.cs
- TextLineResult.cs
- ConstNode.cs
- IfJoinedCondition.cs
- SplineKeyFrames.cs
- cookie.cs
- CommonGetThemePartSize.cs
- ClientSponsor.cs
- WebPartTransformerCollection.cs
- PersonalizationStateInfoCollection.cs
- CurrentChangedEventManager.cs
- AttributeQuery.cs
- ResizeGrip.cs
- templategroup.cs
- SystemNetworkInterface.cs
- TextBoxBase.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- CachedResourceDictionaryExtension.cs
- ClipboardProcessor.cs
- CodeEventReferenceExpression.cs
- TableParaClient.cs
- ArrayWithOffset.cs
- WsatConfiguration.cs