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
- KeySpline.cs
- OverflowException.cs
- SqlCaseSimplifier.cs
- PreProcessor.cs
- ListDictionaryInternal.cs
- TreeViewItemAutomationPeer.cs
- TextModifier.cs
- CreateUserWizardAutoFormat.cs
- TextPointerBase.cs
- RegistryPermission.cs
- ECDiffieHellman.cs
- SafeRightsManagementSessionHandle.cs
- ApplicationId.cs
- LeaseManager.cs
- Int64Animation.cs
- IsolatedStorageException.cs
- _DynamicWinsockMethods.cs
- HtmlAnchor.cs
- HotSpotCollection.cs
- SafeNativeMethods.cs
- EdmToObjectNamespaceMap.cs
- CacheChildrenQuery.cs
- x509store.cs
- RTLAwareMessageBox.cs
- QueryableDataSourceView.cs
- TableColumn.cs
- Label.cs
- DrawingCollection.cs
- CharacterString.cs
- StructuredType.cs
- VirtualPathUtility.cs
- DllNotFoundException.cs
- ADRoleFactory.cs
- PackWebRequest.cs
- EventPropertyMap.cs
- WebPart.cs
- ToolStripProgressBar.cs
- PriorityRange.cs
- httpstaticobjectscollection.cs
- __ConsoleStream.cs
- WindowsScrollBarBits.cs
- TextEditorTyping.cs
- FunctionDetailsReader.cs
- RewritingSimplifier.cs
- MatrixStack.cs
- ParserOptions.cs
- AppSettings.cs
- ChannelSinkStacks.cs
- Color.cs
- PnrpPermission.cs
- TranslateTransform3D.cs
- RegisteredHiddenField.cs
- ConfigurationManagerInternalFactory.cs
- EventProvider.cs
- StylusPlugInCollection.cs
- TextTreePropertyUndoUnit.cs
- Package.cs
- ZipIOLocalFileHeader.cs
- LogicalTreeHelper.cs
- WindowsRichEdit.cs
- TTSEngineTypes.cs
- ConfigurationPropertyCollection.cs
- RuntimeWrappedException.cs
- XNameConverter.cs
- ZipIOLocalFileHeader.cs
- SecurityAccessDeniedException.cs
- storepermission.cs
- GreenMethods.cs
- ContainerParaClient.cs
- NotificationContext.cs
- FormViewPagerRow.cs
- DecimalConverter.cs
- CorePropertiesFilter.cs
- ImageList.cs
- SecureConversationSecurityTokenParameters.cs
- LongCountAggregationOperator.cs
- ObjectMaterializedEventArgs.cs
- DesignerCommandAdapter.cs
- DataGridRowAutomationPeer.cs
- GenericWebPart.cs
- RegistryConfigurationProvider.cs
- ContextMenu.cs
- InputBinding.cs
- AlternateViewCollection.cs
- XsltLibrary.cs
- ContainerAction.cs
- DataList.cs
- ConnectionStringsExpressionBuilder.cs
- CatalogZone.cs
- PerformanceCounterNameAttribute.cs
- StringInfo.cs
- DiscriminatorMap.cs
- ServiceModelConfigurationSectionGroup.cs
- SystemTcpStatistics.cs
- SchemaImporterExtensionsSection.cs
- XmlTypeMapping.cs
- XmlSubtreeReader.cs
- Vector3DConverter.cs
- UserControlBuildProvider.cs
- VirtualPathData.cs