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:

http:⁠//support.microsoft.com/contactus/?ws=support 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:

Download this hotfix package from the Microsoft Connect 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 name File version File size Date Time Platform
Atl90.dll 9.0.30729.5558 159,048 15-Nov-2010 07:47 x86
Atl90.dll 9.0.30729.5558 176,456 15-Nov-2010 01:11 x64
Atl90.dll 9.0.30729.5558 416,072 15-Nov-2010 02:12 IA-64
array 16,417 29-Oct-2008 10:55
array 16,417 29-Oct-2008 10:55
random 83,273 29-Oct-2008 10:55
random 83,273 29-Oct-2008 10:55
tuple 12,371 29-Oct-2008 10:55
tuple 12,371 29-Oct-2008 10:55
xxfunction 9,845 29-Oct-2008 10:55
xxfunction 9,845 29-Oct-2008 10:55
afxframeimpl.cpp 56,204 24-Oct-2008 14:03
afxglobals.cpp 34,156 24-Oct-2008 14:03
afxglobals.h 10,144 24-Oct-2008 14:03
afxtoolbarimages.cpp 76,665 19-Apr-2010 15:41
almap.dll 18,736 14-Nov-2010 22:41 x86
almap.lib 17,808 14-Nov-2010 22:41 x86
atl.lib 20,012 14-Nov-2010 22:46 x86
atl.lib 21,882 14-Nov-2010 23:01 x86
atl.lib 19,256 14-Nov-2010 23:26 x86
atlassem.h 2,037 14-Nov-2010 22:38
atlbuild.h 572 14-Nov-2010 22:17
atldb.h 384,029 19-Apr-2010 14:47
atldload.lib 396,148 14-Nov-2010 22:46 x86
atldload.lib 493,480 14-Nov-2010 23:01 x86
atldload.lib 429,022 14-Nov-2010 23:26 x86
atls.lib 1,413,006 14-Nov-2010 22:46 x86
atls.lib 1,354,526 14-Nov-2010 23:01 x86
atls.lib 1,114,536 14-Nov-2010 23:26 x86
atlsd.lib 1,784,144 14-Nov-2010 22:46 x86
atlsd.lib 2,031,798 14-Nov-2010 23:01 x86
atlsd.lib 1,605,960 14-Nov-2010 23:26 x86
bardock.cpp 25,372 30-Oct-2009 08:15
crtassem.h 951 14-Nov-2010 22:37 x86
crtassem.h 1,298 14-Nov-2010 22:37
intrin.h 91,683 14-Nov-2010 22:37
libcmt.lib 9,217,408 14-Nov-2010 22:45 x86
libcmt.lib 12,760,908 14-Nov-2010 22:59 x86
libcmt.lib 9,972,556 14-Nov-2010 23:25 x86
libcmtd.lib 11,361,330 14-Nov-2010 22:45 x86
libcmtd.lib 16,469,324 14-Nov-2010 23:00 x86
libcmtd.lib 12,701,228 14-Nov-2010 23:25 x86
libcpmt.lib 5,349,928 14-Nov-2010 22:45 x86
libcpmt.lib 8,755,304 14-Nov-2010 23:00 x86
libcpmt.lib 6,963,462 14-Nov-2010 23:25 x86
libcpmtd.lib 6,781,270 14-Nov-2010 22:45 x86
libcpmtd.lib 11,714,090 14-Nov-2010 23:00 x86
libcpmtd.lib 9,299,518 14-Nov-2010 23:25 x86
mfc90.lib 5,196,148 14-Nov-2010 23:55 x64
mfc90.lib 5,197,224 14-Nov-2010 23:27 x86
mfc90d.lib 6,026,792 14-Nov-2010 23:55 x64
mfc90d.lib 6,017,756 14-Nov-2010 23:28 x86
mfc90u.lib 6,501,186 14-Nov-2010 23:56 x64
mfc90u.lib 6,595,792 14-Nov-2010 23:28 x86
mfc90ud.lib 7,541,862 14-Nov-2010 23:56 x64
mfc90ud.lib 7,622,206 14-Nov-2010 23:28 x86
mfc.bsc 18,705,408 15-Nov-2010 00:56
mfc_loc.manifest 5,882 15-Nov-2010 07:50 x86
mfcassem.h 3,143 14-Nov-2010 23:06
mfcdload.lib 780,354 14-Nov-2010 23:52 x86
mfcm90.lib 43,104 14-Nov-2010 23:57 x64
mfcm90.lib 41,052 14-Nov-2010 23:29 x86
mfcm90d.lib 46,182 14-Nov-2010 23:57 x64
mfcm90d.lib 44,596 14-Nov-2010 23:29 x86
mfcm90u.lib 44,548 14-Nov-2010 23:57 x64
mfcm90u.lib 42,460 14-Nov-2010 23:29 x86
mfcm90ud.lib 47,640 14-Nov-2010 23:57 x64
mfcm90ud.lib 46,014 14-Nov-2010 23:29 x86
mfcs90.lib 1,054,706 14-Nov-2010 23:52 x86
mfcs90.lib 1,048,944 14-Nov-2010 23:25 x86
mfcs90d.lib 1,049,108 14-Nov-2010 23:52 x64
mfcs90d.lib 1,020,312 14-Nov-2010 23:25 x86
mfcs90u.lib 1,068,310 14-Nov-2010 23:53 x64
mfcs90u.lib 1,063,030 14-Nov-2010 23:26 x86
mfcs90ud.lib 1,065,496 14-Nov-2010 23:53 x86
mfcs90ud.lib 1,035,730 14-Nov-2010 23:26 x86
microsoft.vc90.atl.manifest 858 15-Nov-2010 01:15 x64
microsoft.vc90.atl.manifest 857 15-Nov-2010 02:15 IA-64
microsoft.vc90.atl.manifest 856 15-Nov-2010 07:50 x86
microsoft.vc90.crt.manifest 1,862 15-Nov-2010 01:15 x64
microsoft.vc90.crt.manifest 1,861 15-Nov-2010 02:15 IA-64
microsoft.vc90.crt.manifest 1,860 15-Nov-2010 07:50 x86
microsoft.vc90.debugcrt.manifest 1,870 15-Nov-2010 01:15 x64
microsoft.vc90.debugcrt.manifest 1,869 15-Nov-2010 02:15 IA-64
microsoft.vc90.debugcrt.manifest 1,868 15-Nov-2010 07:50 x86
microsoft.vc90.debugmfc.manifest 2,368 15-Nov-2010 01:15 x64
microsoft.vc90.debugmfc.manifest 2,366 15-Nov-2010 07:50 x86
microsoft.vc90.debugopenmp.manifest 867 15-Nov-2010 07:50 x86
microsoft.vc90.debugopenmp.manifest 868 15-Nov-2010 02:16 x86
microsoft.vc90.debugopenmp.manifest 869 15-Nov-2010 01:15 x86
microsoft.vc90.mfc.manifest 2,359 15-Nov-2010 01:15 x64
microsoft.vc90.mfc.manifest 2,357 15-Nov-2010 07:50 x86
microsoft.vc90.mfcloc.manifest 5,884 15-Nov-2010 01:15 x64
microsoft.vc90.mfcloc.manifest 5,882 15-Nov-2010 07:50 x86
microsoft.vc90.openmp.manifest 861 15-Nov-2010 07:50 x86
microsoft.vc90.openmp.manifest 862 15-Nov-2010 02:16 x86
microsoft.vc90.openmp.manifest 863 15-Nov-2010 01:15 x86
msvcmrt.lib 1,529,808 14-Nov-2010 22:45 x86
msvcmrt.lib 1,697,612 14-Nov-2010 23:25 x86
msvcmrt.lib 1,846,526 14-Nov-2010 23:00 x86
msvcmrtd.lib 1,625,960 14-Nov-2010 22:45 x86
msvcmrtd.lib 1,804,926 14-Nov-2010 23:25 x86
msvcmrtd.lib 1,956,882 14-Nov-2010 23:00 x86
msvcprt.lib 1,654,516 14-Nov-2010 22:45 x86
msvcprt.lib 2,140,986 14-Nov-2010 23:00 x86
msvcprt.lib 1,686,818 14-Nov-2010 23:25 x86
msvcprtd.lib 1,827,186 14-Nov-2010 22:45 x86
msvcprtd.lib 2,369,332 14-Nov-2010 23:00 x86
msvcprtd.lib 1,860,040 14-Nov-2010 23:25 x86
msvcrt.lib 1,360,068 14-Nov-2010 22:45 x86
msvcrt.lib 1,585,296 14-Nov-2010 23:00 x86
msvcrt.lib 1,357,322 14-Nov-2010 23:25 x86
msvcrtd.lib 1,392,990 14-Nov-2010 22:45 x86
msvcrtd.lib 1,642,428 14-Nov-2010 23:00 x86
msvcrtd.lib 1,400,234 14-Nov-2010 23:25 x86
msvcurt.lib 15,375,466 14-Nov-2010 22:45 x86
msvcurt.lib 15,737,148 14-Nov-2010 23:25 x86
msvcurt.lib 15,882,482 14-Nov-2010 23:00 x86
msvcurtd.lib 16,952,226 14-Nov-2010 22:45 x86
msvcurtd.lib 17,303,538 14-Nov-2010 23:25 x86
msvcurtd.lib 17,454,852 14-Nov-2010 23:00 x86
nafxcw.lib 49,963,836 14-Nov-2010 23:28 x86
nafxcw.lib 59,306,388 14-Nov-2010 23:56 x86
nafxcwd.lib 52,949,400 14-Nov-2010 23:28 x86
nafxcwd.lib 66,787,592 14-Nov-2010 23:55 x86
nmmintrin.h 4,091 14-Nov-2010 22:37 x86
ompassem.h 951 14-Nov-2010 23:08
ptrustm.lib 426,518 14-Nov-2010 22:45 x86
ptrustmd.lib 433,690 14-Nov-2010 22:45 x86
ptrustu.lib 426,518 14-Nov-2010 22:45 x86
ptrustud.lib 433,690 14-Nov-2010 22:45 x86
sdknames.lib 7,462 14-Nov-2010 22:41 x86
tcmap.lib 29,676 14-Nov-2010 22:41 x86
tcmapdll.lib 32,058 14-Nov-2010 22:41 x86
uafxcw.lib 50,880,300 14-Nov-2010 23:29 x86
uafxcw.lib 60,097,306 14-Nov-2010 23:56 x86
uafxcwd.lib 54,310,594 14-Nov-2010 23:28 x86
uafxcwd.lib 68,073,040 14-Nov-2010 23:56 x86
vcomp.lib 28,446 14-Nov-2010 23:39 x86
vcomp.lib 27,890 14-Nov-2010 23:58 x86
vcomp.lib 33,220 15-Nov-2010 00:35 x86
vcompd.dll 27,998 14-Nov-2010 23:58 x86
vcompd.lib 28,574 14-Nov-2010 23:39 x86
vcompd.lib 33,330 15-Nov-2010 00:35 x86
Mfc90.dll 9.0.30729.5558 3,765,064 15-Nov-2010 07:47 x86
Mfc90.dll 9.0.30729.5558 5,083,464 15-Nov-2010 01:11 x64
Mfc90chs.dll 9.0.30729.5558 35,664 15-Nov-2010 07:47 x86
Mfc90chs.dll 9.0.30729.5558 35,664 15-Nov-2010 01:11 x64
Mfc90cht.dll 9.0.30729.5558 36,688 15-Nov-2010 07:47 x86
Mfc90cht.dll 9.0.30729.5558 36,688 15-Nov-2010 01:11 x64
Mfc90d.dll 9.0.30729.5558 5,933,896 15-Nov-2010 07:47 x86
Mfc90d.dll 9.0.30729.5558 7,418,184 15-Nov-2010 01:11 x64
Mfc90deu.dll 9.0.30729.5558 63,312 15-Nov-2010 07:47 x86
Mfc90deu.dll 9.0.30729.5558 63,312 15-Nov-2010 01:11 x64
Mfc90enu.dll 9.0.30729.5558 53,584 15-Nov-2010 07:47 x86
Mfc90enu.dll 9.0.30729.5558 53,584 15-Nov-2010 01:11 x64
Mfc90esn.dll 9.0.30729.5558 61,776 15-Nov-2010 07:47 x86
Mfc90esn.dll 9.0.30729.5558 61,776 15-Nov-2010 01:11 x64
Mfc90esp.dll 9.0.30729.5558 61,776 15-Nov-2010 07:47 x86
Mfc90esp.dll 9.0.30729.5558 61,776 15-Nov-2010 01:11 x64
Mfc90fra.dll 9.0.30729.5558 62,800 15-Nov-2010 07:47 x86
Mfc90fra.dll 9.0.30729.5558 62,800 15-Nov-2010 01:11 x64
Mfc90ita.dll 9.0.30729.5558 61,264 15-Nov-2010 07:47 x86
Mfc90ita.dll 9.0.30729.5558 61,264 15-Nov-2010 01:11 x64
Mfc90jpn.dll 9.0.30729.5558 43,344 15-Nov-2010 07:47 x86
Mfc90jpn.dll 9.0.30729.5558 43,344 15-Nov-2010 01:11 x64
Mfc90kor.dll 9.0.30729.5558 42,832 15-Nov-2010 07:47 x86
Mfc90kor.dll 9.0.30729.5558 42,832 15-Nov-2010 01:11 x64
Mfc90rus.dll 9.0.30729.5558 59,728 15-Nov-2010 07:47 x86
Mfc90rus.dll 9.0.30729.5558 59,728 15-Nov-2010 01:11 x64
Mfc90u.dll 9.0.30729.5558 3,780,424 15-Nov-2010 07:47 x86
Mfc90u.dll 9.0.30729.5558 5,102,408 15-Nov-2010 01:11 x64
Mfc90ud.dll 9.0.30729.5558 5,979,472 15-Nov-2010 07:47 x86
Mfc90ud.dll 9.0.30729.5558 7,463,248 15-Nov-2010 01:11 x64
Mfcm90.dll 9.0.30729.5558 59,904 15-Nov-2010 07:47 x86
Mfcm90.dll 9.0.30729.5558 67,072 15-Nov-2010 01:12 x64
Mfcm90d.dll 9.0.30729.5558 80,896 15-Nov-2010 07:47 x86
Mfcm90d.dll 9.0.30729.5558 93,184 15-Nov-2010 01:12 x64
Mfcm90u.dll 9.0.30729.5558 59,904 15-Nov-2010 07:47 x86
Mfcm90u.dll 9.0.30729.5558 67,072 15-Nov-2010 01:12 x64
Mfcm90ud.dll 9.0.30729.5558 80,896 15-Nov-2010 07:47 x86
Mfcm90ud.dll 9.0.30729.5558 93,696 15-Nov-2010 01:12 x64
Msvcm90.dll 9.0.30729.5558 225,280 15-Nov-2010 07:47 x86
Msvcm90.dll 9.0.30729.5558 245,760 15-Nov-2010 01:12 x64
Msvcm90.dll 9.0.30729.5558 324,096 15-Nov-2010 02:12 IA-64
Msvcm90d.dll 9.0.30729.5558 312,832 15-Nov-2010 07:47 x86
Msvcm90d.dll 9.0.30729.5558 333,312 15-Nov-2010 01:12 x64
Msvcm90d.dll 9.0.30729.5558 429,568 15-Nov-2010 02:12 IA-64
Msvcp90.dll 9.0.30729.5558 569,680 15-Nov-2010 07:47 x86
Msvcp90.dll 9.0.30729.5558 853,328 15-Nov-2010 01:11 x64
Msvcp90.dll 9.0.30729.5558 1,466,192 15-Nov-2010 02:12 IA-64
Msvcp90d.dll 9.0.30729.5558 871,760 15-Nov-2010 07:47 x86
Msvcp90d.dll 9.0.30729.5558 1,120,592 15-Nov-2010 01:11 x64
Msvcp90d.dll 9.0.30729.5558 2,515,280 15-Nov-2010 02:12 IA-64
Msvcr90.dll 9.0.30729.5558 653,136 15-Nov-2010 07:47 x86
Msvcr90.dll 9.0.30729.5558 641,360 15-Nov-2010 01:11 x64
Msvcr90.dll 9.0.30729.5558 1,505,616 15-Nov-2010 02:12 IA-64
Msvcr90d.dll 9.0.30729.5558 1,178,448 15-Nov-2010 07:47 x86
Msvcr90d.dll 9.0.30729.5558 1,359,184 15-Nov-2010 01:11 x64
Msvcr90d.dll 9.0.30729.5558 3,603,280 15-Nov-2010 02:12 IA-64
Vcomp90.dll 9.0.30729.5558 51,024 15-Nov-2010 07:47 x86
Vcomp90.dll 9.0.30729.5558 56,656 15-Nov-2010 01:11 x64
Vcomp90.dll 9.0.30729.5558 141,648 15-Nov-2010 02:12 IA-64
Vcomp90d.dll 9.0.30729.5558 88,400 15-Nov-2010 07:47 x86
Vcomp90d.dll 9.0.30729.5558 104,784 15-Nov-2010 01:11 x64
Vcomp90d.dll 9.0.30729.5558 316,240 15-Nov-2010 02:12 IA-64
Vcredist_ia64.exe 9.0.30729.5074 4,657,496 23-Nov-2010 12:35 IA-64
Vcredist_x64.exe 9.0.30729.5074 5,213,528 23-Nov-2010 12:30 x64
Vcredist_x86.exe 9.0.30729.5074 4,477,272 23-Nov-2010 12:40 x86

Status

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