Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RefreshInfo.cs
- DoneReceivingAsyncResult.cs
- RowUpdatingEventArgs.cs
- ItemDragEvent.cs
- DataGridViewElement.cs
- ContextMenuStrip.cs
- HttpConfigurationSystem.cs
- Visual.cs
- CompilerError.cs
- SystemIPInterfaceStatistics.cs
- GrammarBuilderWildcard.cs
- IdentityNotMappedException.cs
- DecimalConstantAttribute.cs
- ObjectContext.cs
- Executor.cs
- DictionarySectionHandler.cs
- ExceptionHelpers.cs
- ServiceHttpHandlerFactory.cs
- InvalidCommandTreeException.cs
- ContainerSelectorBehavior.cs
- Trace.cs
- SwitchCase.cs
- StringComparer.cs
- PropertyEmitter.cs
- Point3DAnimation.cs
- EncryptedReference.cs
- XmlAttributeHolder.cs
- returneventsaver.cs
- DefaultProxySection.cs
- HeaderedContentControl.cs
- PageThemeParser.cs
- MailMessage.cs
- Stacktrace.cs
- SoapEnumAttribute.cs
- PropertyConverter.cs
- DataObjectFieldAttribute.cs
- ParameterBinding.cs
- RegisteredExpandoAttribute.cs
- ShaderEffect.cs
- TrackingValidationObjectDictionary.cs
- PerformanceCountersBase.cs
- XmlSchemaParticle.cs
- XmlName.cs
- WorkflowRequestContext.cs
- ElementFactory.cs
- InkCanvasSelectionAdorner.cs
- EntityDataSourceSelectingEventArgs.cs
- XmlSchemaAnyAttribute.cs
- SoapClientProtocol.cs
- Group.cs
- AtomServiceDocumentSerializer.cs
- SqlDataSourceCommandEventArgs.cs
- CssClassPropertyAttribute.cs
- _SingleItemRequestCache.cs
- XmlParserContext.cs
- EncoderParameters.cs
- SQLMembershipProvider.cs
- XPathSelfQuery.cs
- InspectionWorker.cs
- mda.cs
- exports.cs
- ProxyManager.cs
- InsufficientMemoryException.cs
- OperationInfoBase.cs
- ContactManager.cs
- EntityDataSourceViewSchema.cs
- TimeStampChecker.cs
- FSWPathEditor.cs
- LinkConverter.cs
- UnsafeNativeMethods.cs
- ItemsPresenter.cs
- Registry.cs
- RectangleHotSpot.cs
- RoleGroup.cs
- Win32.cs
- MetaTable.cs
- MenuItem.cs
- FixedSOMTableRow.cs
- ModuleConfigurationInfo.cs
- NetworkCredential.cs
- StringDictionaryCodeDomSerializer.cs
- TreeViewHitTestInfo.cs
- NTAccount.cs
- ILGenerator.cs
- XmlSchemaComplexType.cs
- CompositeControl.cs
- DistributedTransactionPermission.cs
- PointValueSerializer.cs
- Soap.cs
- BitmapData.cs
- OciLobLocator.cs
- ELinqQueryState.cs
- SByteConverter.cs
- DiscoveryDocumentSerializer.cs
- unsafeIndexingFilterStream.cs
- WindowProviderWrapper.cs
- InvalidDataContractException.cs
- TreeViewImageIndexConverter.cs
- AnimationLayer.cs
- MSAAEventDispatcher.cs