В этом вопросе спрашивающий задавался вопросом, можно ли ожидать, что операции с плавающей запятой будут вести себя одинаково между конфигурациями отладки и выпуска.
Ответы, приведенные там, показывают, что это неВ этом случае спецификация языка позволяет выполнять операции с плавающей запятой с более высокой точностью, чем у типов, используемых в качестве входных данных, и на практике CLR .NET Framework стремится использовать возможные оптимизации, которые возможны длярезультат, например, с помощью математики одинарной и двойной точности в 80-битных регистрах x87 FPU.(Я добавил ответ сам с конкретным примером того, как это выглядит на практике.)
Вопрос здесь тот же, но ограничивается тем, что происходит, когда мы указываем x64 в качествепостроить платформу.Затем среда выполнения .NET Framework компилирует математические операции с плавающей запятой в инструкции SSE, для которых становится возможным указывать желаемую точность каждой операции, чтобы компилятор имел гораздо большую гибкость, когда речь идет о том, что он хочет пообещать своему пользователю.Тем не менее, спецификация языка кажется неизменной, и, насколько я могу судить, у нас все еще нет гарантий точности инструкций с плавающей запятой.
Итак, возникает вопрос:
Существует ли конкретный пример операций с плавающей запятой, дающих разные результаты между конфигурациями отладки и выпуска в сборке x64?Если нет, то гарантирует ли сам язык, что таких примеров не существует?