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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Configuration.cs
- DeferredElementTreeState.cs
- XPathPatternBuilder.cs
- DoubleConverter.cs
- DataBindingHandlerAttribute.cs
- Enum.cs
- NameObjectCollectionBase.cs
- SeverityFilter.cs
- UnionCqlBlock.cs
- MenuItemStyle.cs
- JsonReader.cs
- WebFormDesignerActionService.cs
- LinqToSqlWrapper.cs
- OdbcConnectionHandle.cs
- HostedElements.cs
- InstancePersistenceCommandException.cs
- DescendantOverDescendantQuery.cs
- Exceptions.cs
- Interlocked.cs
- EnumConverter.cs
- XmlUtilWriter.cs
- RadioButtonFlatAdapter.cs
- Exceptions.cs
- XmlEnumAttribute.cs
- ResourceAssociationType.cs
- BaseDataBoundControl.cs
- SoapAttributeAttribute.cs
- CreateRefExpr.cs
- CollaborationHelperFunctions.cs
- SchemaImporter.cs
- OperatingSystem.cs
- ControlDesigner.cs
- DataGridViewCellStyleBuilderDialog.cs
- PartialCachingControl.cs
- SynchronizedInputHelper.cs
- Certificate.cs
- Brush.cs
- BaseTemplateCodeDomTreeGenerator.cs
- RequestCacheValidator.cs
- CodeCommentStatement.cs
- GenericAuthenticationEventArgs.cs
- MsmqReceiveParameters.cs
- FileDataSourceCache.cs
- EmissiveMaterial.cs
- UriScheme.cs
- NominalTypeEliminator.cs
- Stylus.cs
- DataGridSortCommandEventArgs.cs
- XPathExpr.cs
- NetStream.cs
- TextTreeRootTextBlock.cs
- PeerNameRegistration.cs
- IsolatedStoragePermission.cs
- TextTreePropertyUndoUnit.cs
- MobileControlsSectionHandler.cs
- AuthenticationException.cs
- Condition.cs
- MaskDescriptors.cs
- ObjectTag.cs
- PersonalizationProvider.cs
- SqlMethodAttribute.cs
- WebPartChrome.cs
- TableLayoutPanel.cs
- SymDocumentType.cs
- URLString.cs
- Accessors.cs
- WebPartConnectionsCancelVerb.cs
- GraphicsContext.cs
- XmlNavigatorStack.cs
- NullableFloatSumAggregationOperator.cs
- ButtonChrome.cs
- DeferredTextReference.cs
- StrokeCollection.cs
- FieldToken.cs
- SQLStringStorage.cs
- securestring.cs
- _Events.cs
- CommandValueSerializer.cs
- InputMethodStateTypeInfo.cs
- InstanceStoreQueryResult.cs
- DependsOnAttribute.cs
- QueryableDataSourceHelper.cs
- SliderAutomationPeer.cs
- BindableTemplateBuilder.cs
- OpenFileDialog.cs
- CollectionBase.cs
- WindowsIPAddress.cs
- HttpCookieCollection.cs
- FileUtil.cs
- ScriptMethodAttribute.cs
- KeyManager.cs
- Object.cs
- SafeHandles.cs
- XmlNodeComparer.cs
- ValidatedControlConverter.cs
- ConnectionProviderAttribute.cs
- SafeNativeMemoryHandle.cs
- DynamicEndpointElement.cs
- SmiTypedGetterSetter.cs
- HttpCapabilitiesEvaluator.cs