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
- AnnotationComponentManager.cs
- SelectionRange.cs
- GcHandle.cs
- RadioButtonAutomationPeer.cs
- ArraySortHelper.cs
- WindowsGraphics.cs
- Model3D.cs
- Canvas.cs
- CultureInfoConverter.cs
- SelectedGridItemChangedEvent.cs
- EventLogPermissionAttribute.cs
- HScrollProperties.cs
- PageEventArgs.cs
- StateValidator.cs
- ServicesUtilities.cs
- CodeTypeDeclaration.cs
- _NegotiateClient.cs
- Control.cs
- _LazyAsyncResult.cs
- MiniModule.cs
- MethodBody.cs
- DataMemberConverter.cs
- CatalogPartCollection.cs
- TextBoxLine.cs
- TransformGroup.cs
- SQLMembershipProvider.cs
- PriorityBinding.cs
- PermissionRequestEvidence.cs
- SqlPersonalizationProvider.cs
- HtmlShim.cs
- linebase.cs
- SoapElementAttribute.cs
- TextContainerChangedEventArgs.cs
- SwitchElementsCollection.cs
- WindowsFormsHost.cs
- CodeDomConfigurationHandler.cs
- TransactionOptions.cs
- FileRecordSequence.cs
- SecondaryViewProvider.cs
- ExcCanonicalXml.cs
- webeventbuffer.cs
- CustomWebEventKey.cs
- DataServiceCollectionOfT.cs
- MachineSettingsSection.cs
- OneOfConst.cs
- DataReaderContainer.cs
- LineBreak.cs
- MatrixAnimationBase.cs
- DateRangeEvent.cs
- InputLangChangeRequestEvent.cs
- FreeFormPanel.cs
- MonthChangedEventArgs.cs
- StatementContext.cs
- wmiprovider.cs
- TypeHelper.cs
- MemberDescriptor.cs
- EmptyElement.cs
- Material.cs
- TreeNode.cs
- DataGridDesigner.cs
- FunctionQuery.cs
- BuildProviderCollection.cs
- _HTTPDateParse.cs
- AlignmentXValidation.cs
- Monitor.cs
- Config.cs
- CodeDomDecompiler.cs
- typedescriptorpermissionattribute.cs
- TextRangeAdaptor.cs
- XmlIncludeAttribute.cs
- GraphicsState.cs
- StringCollection.cs
- ToolStripProgressBar.cs
- DES.cs
- StorageEndPropertyMapping.cs
- SequentialOutput.cs
- GridSplitter.cs
- ISO2022Encoding.cs
- TextContainer.cs
- DbProviderManifest.cs
- BaseTemplateBuildProvider.cs
- NetworkInformationException.cs
- codemethodreferenceexpression.cs
- DragDrop.cs
- Debugger.cs
- StaticContext.cs
- TemplateLookupAction.cs
- SR.cs
- RestHandlerFactory.cs
- LocatorPart.cs
- AppLevelCompilationSectionCache.cs
- ReadingWritingEntityEventArgs.cs
- UIElement.cs
- GlobalizationSection.cs
- TransactionWaitAsyncResult.cs
- ManagementEventWatcher.cs
- ConfigurationLoader.cs
- Point3DAnimationUsingKeyFrames.cs
- PathGeometry.cs
- ProfileBuildProvider.cs