FIX: The value that the trigonometric method in a Visual C++ 2008 SP1 application returns on an x86 platform may differ from the value that the same method returns on an x64 platform


Symptoms


Consider the following scenario:
  • You create a Microsoft Visual C++ 2008 Service Pack 1 (SP1) project that contains a trigonometric method. For example, the project contains the sin() method.
  • You build the project to run on the x86 and x64 platforms.
In this scenario, the value that the trigonometric method returns on the x86 platform may differ from the value that the same method returns on the x64 platform.

Cause


This issue occurs because the trigonometric method for the x64 platform is implemented as a C function. Therefore, the trigonometric method is reliant on the compiler-intrinsic and compiler-generated code.

Resolution


To resolve this issue, apply the following hotfix. This hotfix changes the trigonometric method for the x64 platform to implement the method in assembly instead of a C function. The assembly code reduces the reliance on the compiler-intrinsic and compiler-generated code. Therefore, the hotfix improves the accuracy of the trigonometric method.

Hotfix information

A supported hotfix is now available from Microsoft. However, it is intended to correct only the problem that is described in this article. Apply it only to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next software update that contains this hotfix.

To resolve this problem immediately, contact Microsoft Customer Support Services to obtain the hotfix. For a complete list of Microsoft Customer Support Services telephone numbers and information about support costs, visit the following Microsoft website:Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.


Note To download this hotfix, you can also visit the following Microsoft website:


Prerequisites

To apply this hotfix, you must have Microsoft Visual Studio 2008 Service Pack 1 (SP1) installed.

Restart requirement

You must restart the computer after you apply the hotfix if any Visual Studio instance is running.

Hotfix replacement information

This hotfix does not replace any other hotfix.

File information

The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.
File nameFile versionFile sizeDateTimePlatform
Atl90.dll9.0.30729.5558159,04815-Nov-201007:47x86
Atl90.dll9.0.30729.5558176,45615-Nov-201001:11x64
Atl90.dll9.0.30729.5558416,07215-Nov-201002:12IA-64
array16,41729-Oct-200810:55
array16,41729-Oct-200810:55
random83,27329-Oct-200810:55
random83,27329-Oct-200810:55
tuple12,37129-Oct-200810:55
tuple12,37129-Oct-200810:55
xxfunction9,84529-Oct-200810:55
xxfunction9,84529-Oct-200810:55
afxframeimpl.cpp56,20424-Oct-200814:03
afxglobals.cpp34,15624-Oct-200814:03
afxglobals.h10,14424-Oct-200814:03
afxtoolbarimages.cpp76,66519-Apr-201015:41
almap.dll18,73614-Nov-201022:41x86
almap.lib17,80814-Nov-201022:41x86
atl.lib20,01214-Nov-201022:46x86
atl.lib21,88214-Nov-201023:01x86
atl.lib19,25614-Nov-201023:26x86
atlassem.h2,03714-Nov-201022:38
atlbuild.h57214-Nov-201022:17
atldb.h384,02919-Apr-201014:47
atldload.lib396,14814-Nov-201022:46x86
atldload.lib493,48014-Nov-201023:01x86
atldload.lib429,02214-Nov-201023:26x86
atls.lib1,413,00614-Nov-201022:46x86
atls.lib1,354,52614-Nov-201023:01x86
atls.lib1,114,53614-Nov-201023:26x86
atlsd.lib1,784,14414-Nov-201022:46x86
atlsd.lib2,031,79814-Nov-201023:01x86
atlsd.lib1,605,96014-Nov-201023:26x86
bardock.cpp25,37230-Oct-200908:15
crtassem.h95114-Nov-201022:37x86
crtassem.h1,29814-Nov-201022:37
intrin.h91,68314-Nov-201022:37
libcmt.lib9,217,40814-Nov-201022:45x86
libcmt.lib12,760,90814-Nov-201022:59x86
libcmt.lib9,972,55614-Nov-201023:25x86
libcmtd.lib11,361,33014-Nov-201022:45x86
libcmtd.lib16,469,32414-Nov-201023:00x86
libcmtd.lib12,701,22814-Nov-201023:25x86
libcpmt.lib5,349,92814-Nov-201022:45x86
libcpmt.lib8,755,30414-Nov-201023:00x86
libcpmt.lib6,963,46214-Nov-201023:25x86
libcpmtd.lib6,781,27014-Nov-201022:45x86
libcpmtd.lib11,714,09014-Nov-201023:00x86
libcpmtd.lib9,299,51814-Nov-201023:25x86
mfc90.lib5,196,14814-Nov-201023:55x64
mfc90.lib5,197,22414-Nov-201023:27x86
mfc90d.lib6,026,79214-Nov-201023:55x64
mfc90d.lib6,017,75614-Nov-201023:28x86
mfc90u.lib6,501,18614-Nov-201023:56x64
mfc90u.lib6,595,79214-Nov-201023:28x86
mfc90ud.lib7,541,86214-Nov-201023:56x64
mfc90ud.lib7,622,20614-Nov-201023:28x86
mfc.bsc18,705,40815-Nov-201000:56
mfc_loc.manifest5,88215-Nov-201007:50x86
mfcassem.h3,14314-Nov-201023:06
mfcdload.lib780,35414-Nov-201023:52x86
mfcm90.lib43,10414-Nov-201023:57x64
mfcm90.lib41,05214-Nov-201023:29x86
mfcm90d.lib46,18214-Nov-201023:57x64
mfcm90d.lib44,59614-Nov-201023:29x86
mfcm90u.lib44,54814-Nov-201023:57x64
mfcm90u.lib42,46014-Nov-201023:29x86
mfcm90ud.lib47,64014-Nov-201023:57x64
mfcm90ud.lib46,01414-Nov-201023:29x86
mfcs90.lib1,054,70614-Nov-201023:52x86
mfcs90.lib1,048,94414-Nov-201023:25x86
mfcs90d.lib1,049,10814-Nov-201023:52x64
mfcs90d.lib1,020,31214-Nov-201023:25x86
mfcs90u.lib1,068,31014-Nov-201023:53x64
mfcs90u.lib1,063,03014-Nov-201023:26x86
mfcs90ud.lib1,065,49614-Nov-201023:53x86
mfcs90ud.lib1,035,73014-Nov-201023:26x86
microsoft.vc90.atl.manifest85815-Nov-201001:15x64
microsoft.vc90.atl.manifest85715-Nov-201002:15IA-64
microsoft.vc90.atl.manifest85615-Nov-201007:50x86
microsoft.vc90.crt.manifest1,86215-Nov-201001:15x64
microsoft.vc90.crt.manifest1,86115-Nov-201002:15IA-64
microsoft.vc90.crt.manifest1,86015-Nov-201007:50x86
microsoft.vc90.debugcrt.manifest1,87015-Nov-201001:15x64
microsoft.vc90.debugcrt.manifest1,86915-Nov-201002:15IA-64
microsoft.vc90.debugcrt.manifest1,86815-Nov-201007:50x86
microsoft.vc90.debugmfc.manifest2,36815-Nov-201001:15x64
microsoft.vc90.debugmfc.manifest2,36615-Nov-201007:50x86
microsoft.vc90.debugopenmp.manifest86715-Nov-201007:50x86
microsoft.vc90.debugopenmp.manifest86815-Nov-201002:16x86
microsoft.vc90.debugopenmp.manifest86915-Nov-201001:15x86
microsoft.vc90.mfc.manifest2,35915-Nov-201001:15x64
microsoft.vc90.mfc.manifest2,35715-Nov-201007:50x86
microsoft.vc90.mfcloc.manifest5,88415-Nov-201001:15x64
microsoft.vc90.mfcloc.manifest5,88215-Nov-201007:50x86
microsoft.vc90.openmp.manifest86115-Nov-201007:50x86
microsoft.vc90.openmp.manifest86215-Nov-201002:16x86
microsoft.vc90.openmp.manifest86315-Nov-201001:15x86
msvcmrt.lib1,529,80814-Nov-201022:45x86
msvcmrt.lib1,697,61214-Nov-201023:25x86
msvcmrt.lib1,846,52614-Nov-201023:00x86
msvcmrtd.lib1,625,96014-Nov-201022:45x86
msvcmrtd.lib1,804,92614-Nov-201023:25x86
msvcmrtd.lib1,956,88214-Nov-201023:00x86
msvcprt.lib1,654,51614-Nov-201022:45x86
msvcprt.lib2,140,98614-Nov-201023:00x86
msvcprt.lib1,686,81814-Nov-201023:25x86
msvcprtd.lib1,827,18614-Nov-201022:45x86
msvcprtd.lib2,369,33214-Nov-201023:00x86
msvcprtd.lib1,860,04014-Nov-201023:25x86
msvcrt.lib1,360,06814-Nov-201022:45x86
msvcrt.lib1,585,29614-Nov-201023:00x86
msvcrt.lib1,357,32214-Nov-201023:25x86
msvcrtd.lib1,392,99014-Nov-201022:45x86
msvcrtd.lib1,642,42814-Nov-201023:00x86
msvcrtd.lib1,400,23414-Nov-201023:25x86
msvcurt.lib15,375,46614-Nov-201022:45x86
msvcurt.lib15,737,14814-Nov-201023:25x86
msvcurt.lib15,882,48214-Nov-201023:00x86
msvcurtd.lib16,952,22614-Nov-201022:45x86
msvcurtd.lib17,303,53814-Nov-201023:25x86
msvcurtd.lib17,454,85214-Nov-201023:00x86
nafxcw.lib49,963,83614-Nov-201023:28x86
nafxcw.lib59,306,38814-Nov-201023:56x86
nafxcwd.lib52,949,40014-Nov-201023:28x86
nafxcwd.lib66,787,59214-Nov-201023:55x86
nmmintrin.h4,09114-Nov-201022:37x86
ompassem.h95114-Nov-201023:08
ptrustm.lib426,51814-Nov-201022:45x86
ptrustmd.lib433,69014-Nov-201022:45x86
ptrustu.lib426,51814-Nov-201022:45x86
ptrustud.lib433,69014-Nov-201022:45x86
sdknames.lib7,46214-Nov-201022:41x86
tcmap.lib29,67614-Nov-201022:41x86
tcmapdll.lib32,05814-Nov-201022:41x86
uafxcw.lib50,880,30014-Nov-201023:29x86
uafxcw.lib60,097,30614-Nov-201023:56x86
uafxcwd.lib54,310,59414-Nov-201023:28x86
uafxcwd.lib68,073,04014-Nov-201023:56x86
vcomp.lib28,44614-Nov-201023:39x86
vcomp.lib27,89014-Nov-201023:58x86
vcomp.lib33,22015-Nov-201000:35x86
vcompd.dll27,99814-Nov-201023:58x86
vcompd.lib28,57414-Nov-201023:39x86
vcompd.lib33,33015-Nov-201000:35x86
Mfc90.dll9.0.30729.55583,765,06415-Nov-201007:47x86
Mfc90.dll9.0.30729.55585,083,46415-Nov-201001:11x64
Mfc90chs.dll9.0.30729.555835,66415-Nov-201007:47x86
Mfc90chs.dll9.0.30729.555835,66415-Nov-201001:11x64
Mfc90cht.dll9.0.30729.555836,68815-Nov-201007:47x86
Mfc90cht.dll9.0.30729.555836,68815-Nov-201001:11x64
Mfc90d.dll9.0.30729.55585,933,89615-Nov-201007:47x86
Mfc90d.dll9.0.30729.55587,418,18415-Nov-201001:11x64
Mfc90deu.dll9.0.30729.555863,31215-Nov-201007:47x86
Mfc90deu.dll9.0.30729.555863,31215-Nov-201001:11x64
Mfc90enu.dll9.0.30729.555853,58415-Nov-201007:47x86
Mfc90enu.dll9.0.30729.555853,58415-Nov-201001:11x64
Mfc90esn.dll9.0.30729.555861,77615-Nov-201007:47x86
Mfc90esn.dll9.0.30729.555861,77615-Nov-201001:11x64
Mfc90esp.dll9.0.30729.555861,77615-Nov-201007:47x86
Mfc90esp.dll9.0.30729.555861,77615-Nov-201001:11x64
Mfc90fra.dll9.0.30729.555862,80015-Nov-201007:47x86
Mfc90fra.dll9.0.30729.555862,80015-Nov-201001:11x64
Mfc90ita.dll9.0.30729.555861,26415-Nov-201007:47x86
Mfc90ita.dll9.0.30729.555861,26415-Nov-201001:11x64
Mfc90jpn.dll9.0.30729.555843,34415-Nov-201007:47x86
Mfc90jpn.dll9.0.30729.555843,34415-Nov-201001:11x64
Mfc90kor.dll9.0.30729.555842,83215-Nov-201007:47x86
Mfc90kor.dll9.0.30729.555842,83215-Nov-201001:11x64
Mfc90rus.dll9.0.30729.555859,72815-Nov-201007:47x86
Mfc90rus.dll9.0.30729.555859,72815-Nov-201001:11x64
Mfc90u.dll9.0.30729.55583,780,42415-Nov-201007:47x86
Mfc90u.dll9.0.30729.55585,102,40815-Nov-201001:11x64
Mfc90ud.dll9.0.30729.55585,979,47215-Nov-201007:47x86
Mfc90ud.dll9.0.30729.55587,463,24815-Nov-201001:11x64
Mfcm90.dll9.0.30729.555859,90415-Nov-201007:47x86
Mfcm90.dll9.0.30729.555867,07215-Nov-201001:12x64
Mfcm90d.dll9.0.30729.555880,89615-Nov-201007:47x86
Mfcm90d.dll9.0.30729.555893,18415-Nov-201001:12x64
Mfcm90u.dll9.0.30729.555859,90415-Nov-201007:47x86
Mfcm90u.dll9.0.30729.555867,07215-Nov-201001:12x64
Mfcm90ud.dll9.0.30729.555880,89615-Nov-201007:47x86
Mfcm90ud.dll9.0.30729.555893,69615-Nov-201001:12x64
Msvcm90.dll9.0.30729.5558225,28015-Nov-201007:47x86
Msvcm90.dll9.0.30729.5558245,76015-Nov-201001:12x64
Msvcm90.dll9.0.30729.5558324,09615-Nov-201002:12IA-64
Msvcm90d.dll9.0.30729.5558312,83215-Nov-201007:47x86
Msvcm90d.dll9.0.30729.5558333,31215-Nov-201001:12x64
Msvcm90d.dll9.0.30729.5558429,56815-Nov-201002:12IA-64
Msvcp90.dll9.0.30729.5558569,68015-Nov-201007:47x86
Msvcp90.dll9.0.30729.5558853,32815-Nov-201001:11x64
Msvcp90.dll9.0.30729.55581,466,19215-Nov-201002:12IA-64
Msvcp90d.dll9.0.30729.5558871,76015-Nov-201007:47x86
Msvcp90d.dll9.0.30729.55581,120,59215-Nov-201001:11x64
Msvcp90d.dll9.0.30729.55582,515,28015-Nov-201002:12IA-64
Msvcr90.dll9.0.30729.5558653,13615-Nov-201007:47x86
Msvcr90.dll9.0.30729.5558641,36015-Nov-201001:11x64
Msvcr90.dll9.0.30729.55581,505,61615-Nov-201002:12IA-64
Msvcr90d.dll9.0.30729.55581,178,44815-Nov-201007:47x86
Msvcr90d.dll9.0.30729.55581,359,18415-Nov-201001:11x64
Msvcr90d.dll9.0.30729.55583,603,28015-Nov-201002:12IA-64
Vcomp90.dll9.0.30729.555851,02415-Nov-201007:47x86
Vcomp90.dll9.0.30729.555856,65615-Nov-201001:11x64
Vcomp90.dll9.0.30729.5558141,64815-Nov-201002:12IA-64
Vcomp90d.dll9.0.30729.555888,40015-Nov-201007:47x86
Vcomp90d.dll9.0.30729.5558104,78415-Nov-201001:11x64
Vcomp90d.dll9.0.30729.5558316,24015-Nov-201002:12IA-64
Vcredist_ia64.exe9.0.30729.50744,657,49623-Nov-201012:35IA-64
Vcredist_x64.exe9.0.30729.50745,213,52823-Nov-201012:30x64
Vcredist_x86.exe9.0.30729.50744,477,27223-Nov-201012:40x86

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.