Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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 : [....] - 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
- AssertUtility.cs
- EntryPointNotFoundException.cs
- ValidationException.cs
- SslStreamSecurityElement.cs
- CallContext.cs
- LicenseProviderAttribute.cs
- TTSVoice.cs
- CharEntityEncoderFallback.cs
- HtmlForm.cs
- ImageDrawing.cs
- CodeDefaultValueExpression.cs
- MetabaseServerConfig.cs
- ProcessStartInfo.cs
- TcpProcessProtocolHandler.cs
- MenuItem.cs
- WebPart.cs
- DataGridViewTextBoxEditingControl.cs
- Context.cs
- SqlParameterCollection.cs
- DependencyProperty.cs
- HttpApplication.cs
- StreamUpgradeAcceptor.cs
- Comparer.cs
- XmlUrlResolver.cs
- Odbc32.cs
- ImmutableObjectAttribute.cs
- ExpressionBindingCollection.cs
- RegisteredDisposeScript.cs
- XmlTextReader.cs
- ControlDesigner.cs
- CompositeControlDesigner.cs
- AppSettingsReader.cs
- InsufficientMemoryException.cs
- FlowDocumentView.cs
- PrivilegeNotHeldException.cs
- RuntimeHelpers.cs
- HttpSocketManager.cs
- FontUnit.cs
- MaterializeFromAtom.cs
- Qualifier.cs
- SqlColumnizer.cs
- InputLangChangeEvent.cs
- ViewStateChangedEventArgs.cs
- CaseKeyBox.xaml.cs
- WebProxyScriptElement.cs
- TextProviderWrapper.cs
- ComponentRenameEvent.cs
- ConfigurationElementCollection.cs
- ExceptionUtility.cs
- Int64AnimationUsingKeyFrames.cs
- Deflater.cs
- ExpressionBuilderCollection.cs
- PageContentAsyncResult.cs
- ClassValidator.cs
- ProxyWebPartManager.cs
- TransportSecurityProtocol.cs
- CompositeClientFormatter.cs
- ResourcePermissionBaseEntry.cs
- TreeViewImageIndexConverter.cs
- GridViewRowEventArgs.cs
- SrgsElementList.cs
- RadialGradientBrush.cs
- SimpleRecyclingCache.cs
- CompilationSection.cs
- IndexerNameAttribute.cs
- UIElementCollection.cs
- HebrewCalendar.cs
- AuthenticatedStream.cs
- MessageBox.cs
- Command.cs
- WindowsContainer.cs
- ColumnHeader.cs
- SqlAliaser.cs
- DynamicControl.cs
- WebPartPersonalization.cs
- XmlSchemaImporter.cs
- XmlSchemaRedefine.cs
- SrgsRule.cs
- ContentPresenter.cs
- PermissionAttributes.cs
- MarginsConverter.cs
- ObjectTag.cs
- SqlFunctions.cs
- WebPartHeaderCloseVerb.cs
- HtmlInputCheckBox.cs
- RtfToXamlReader.cs
- DataSourceCollectionBase.cs
- Listbox.cs
- WebBodyFormatMessageProperty.cs
- DataKey.cs
- SymbolType.cs
- DataSourceSelectArguments.cs
- ResourceManagerWrapper.cs
- CertificateElement.cs
- Identifier.cs
- InputProcessorProfiles.cs
- LayoutEvent.cs
- SoapExtensionReflector.cs
- XmlHierarchicalDataSourceView.cs
- SamlSecurityToken.cs