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
- XappLauncher.cs
- httpstaticobjectscollection.cs
- RequestContext.cs
- ExpressionConverter.cs
- DefinitionBase.cs
- ChannelBuilder.cs
- OperatingSystem.cs
- ProgressBar.cs
- XamlFigureLengthSerializer.cs
- MailWriter.cs
- documentsequencetextpointer.cs
- DispatcherHookEventArgs.cs
- LoginUtil.cs
- CurrentChangingEventArgs.cs
- ContextMenuAutomationPeer.cs
- PersonalizationStateInfo.cs
- CompiledQueryCacheKey.cs
- URLIdentityPermission.cs
- MultilineStringConverter.cs
- LinkedList.cs
- ListItemParagraph.cs
- XmlSchemaAttributeGroupRef.cs
- SafeRegistryHandle.cs
- GridLength.cs
- ExtendedProperty.cs
- UriTemplateVariableQueryValue.cs
- unsafenativemethodsother.cs
- SqlCacheDependency.cs
- Size.cs
- TrackingDataItem.cs
- Vector3DConverter.cs
- COMException.cs
- XmlILIndex.cs
- httpapplicationstate.cs
- ColumnCollection.cs
- SamlAuthorizationDecisionStatement.cs
- CriticalHandle.cs
- EdmRelationshipRoleAttribute.cs
- TransformerTypeCollection.cs
- ProxyGenerator.cs
- ScheduleChanges.cs
- TextEditor.cs
- _HelperAsyncResults.cs
- SaveFileDialogDesigner.cs
- ExpressionLexer.cs
- LogicalTreeHelper.cs
- SafeNativeMethods.cs
- AdRotator.cs
- DataGridToolTip.cs
- HyperLink.cs
- CaseKeyBox.ViewModel.cs
- AsymmetricAlgorithm.cs
- PersonalizationEntry.cs
- ThaiBuddhistCalendar.cs
- SemaphoreFullException.cs
- DataControlCommands.cs
- GridErrorDlg.cs
- PropertyEmitter.cs
- NamedPermissionSet.cs
- RowSpanVector.cs
- ConfigsHelper.cs
- RoutedEventConverter.cs
- PerfService.cs
- ElementAction.cs
- OutputCacheProfile.cs
- SolidColorBrush.cs
- IconHelper.cs
- ButtonAutomationPeer.cs
- UrlMappingsSection.cs
- ConfigUtil.cs
- UnionCqlBlock.cs
- RegularExpressionValidator.cs
- PlatformNotSupportedException.cs
- ClientTargetCollection.cs
- ContainerUIElement3D.cs
- HierarchicalDataSourceControl.cs
- Form.cs
- ClientUtils.cs
- WebPartsPersonalizationAuthorization.cs
- PersonalizationStateQuery.cs
- LightweightCodeGenerator.cs
- ScaleTransform3D.cs
- BoundsDrawingContextWalker.cs
- AssociationSetEnd.cs
- NetTcpBindingElement.cs
- GlyphCollection.cs
- XmlDictionaryReaderQuotas.cs
- ValidationPropertyAttribute.cs
- Overlapped.cs
- TypeSystemProvider.cs
- dataprotectionpermissionattribute.cs
- WebBrowserNavigatingEventHandler.cs
- TextBlockAutomationPeer.cs
- PluralizationService.cs
- ProcessModelInfo.cs
- COAUTHINFO.cs
- DataKeyArray.cs
- GroupAggregateExpr.cs
- XmlILModule.cs
- RoleGroupCollection.cs