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
- ITextView.cs
- JournalNavigationScope.cs
- SharedConnectionListener.cs
- BStrWrapper.cs
- SmtpSection.cs
- FragmentQuery.cs
- PropertyValue.cs
- OutputCacheSettings.cs
- TextRunProperties.cs
- EntityTemplateUserControl.cs
- MethodBody.cs
- DataGridViewColumnCollectionDialog.cs
- Message.cs
- DelegateArgumentValue.cs
- ToolBarTray.cs
- CultureInfoConverter.cs
- TransformedBitmap.cs
- TrustLevel.cs
- RequiredArgumentAttribute.cs
- VScrollBar.cs
- PersonalizationProviderHelper.cs
- OdbcConnection.cs
- PageContentAsyncResult.cs
- UnsafeMethods.cs
- SafeEventHandle.cs
- CodeNamespace.cs
- XmlNodeChangedEventArgs.cs
- DbParameterCollectionHelper.cs
- TextServicesProperty.cs
- ChannelServices.cs
- MsmqChannelListenerBase.cs
- AtomMaterializerLog.cs
- RangeValuePattern.cs
- MetadataCache.cs
- CacheVirtualItemsEvent.cs
- MenuScrollingVisibilityConverter.cs
- TraceXPathNavigator.cs
- ToolStripTextBox.cs
- CodeLabeledStatement.cs
- OleDbMetaDataFactory.cs
- InstanceDataCollection.cs
- EventProviderClassic.cs
- ContentElement.cs
- SqlCharStream.cs
- GuidTagList.cs
- OrderedDictionary.cs
- CodeRemoveEventStatement.cs
- RuntimeHelpers.cs
- ColorContextHelper.cs
- FreezableCollection.cs
- NameHandler.cs
- DigitShape.cs
- WorkflowEventArgs.cs
- BrowserDefinition.cs
- PluggableProtocol.cs
- ConnectionsZoneDesigner.cs
- XmlSchemaSimpleType.cs
- TextDecorationUnitValidation.cs
- StickyNoteContentControl.cs
- RegisteredDisposeScript.cs
- DigitShape.cs
- SlotInfo.cs
- ConsoleTraceListener.cs
- SortExpressionBuilder.cs
- ArrangedElementCollection.cs
- HyperLinkColumn.cs
- VBIdentifierName.cs
- Encoding.cs
- SqlUserDefinedAggregateAttribute.cs
- Pkcs7Recipient.cs
- GlobalAllocSafeHandle.cs
- ContentFileHelper.cs
- ServicePointManager.cs
- BindingMemberInfo.cs
- PixelShader.cs
- ObjectCloneHelper.cs
- CheckBoxBaseAdapter.cs
- UIServiceHelper.cs
- AdRotator.cs
- EmulateRecognizeCompletedEventArgs.cs
- PersistenceTypeAttribute.cs
- SetUserPreferenceRequest.cs
- QueueException.cs
- TextServicesDisplayAttributePropertyRanges.cs
- SplitterCancelEvent.cs
- QuaternionRotation3D.cs
- HtmlImage.cs
- Internal.cs
- NativeCppClassAttribute.cs
- EdgeModeValidation.cs
- CodeBlockBuilder.cs
- ColorTransform.cs
- RequestCacheValidator.cs
- LongPath.cs
- SaveFileDialog.cs
- InstanceDataCollectionCollection.cs
- ChildrenQuery.cs
- AssemblyCache.cs
- HtmlInputText.cs
- MemberHolder.cs