Значение long double для производительности. Почему C по умолчанию выбирает 64-битную версию вместо аппаратной 80-битной?

Для конкретики я говорю об архитектуре x87 PC и компиляторе C.

Я пишу свой собственный интерпретатор, и аргументы в пользу типа данных doubleменя смущают. Особенно в том, что касается эффективности. Может кто-нибудь объяснить, ПОЧЕМУ C выбрал 64-битный двойник, а не аппаратный 80-битный двойник? И почему аппаратное обеспечение остановилось на 80-битном double, если оно не выровнено? Каковы последствия производительности каждого из них? Я хотел бы использовать 80-битный doubleдля числового типа по умолчанию. Но выбор разработчиков компилятора заставляет меня задуматься, что это не лучший выбор.

  1. doubleна x86 всего на 2 байта короче, почему компилятор не использует по умолчанию 10-байтовый long double?
  2. Могу ли я получить пример дополнительной точности, полученной 80-битным long doubleпо сравнению с double?
  3. Почему Microsoft отключает long doubleпо умолчанию?
  4. С точки зрения величины, насколько хуже/медленнее long doubleна типичном оборудовании ПК с архитектурой x86/x64?
5
задан Peter Cordes 28 November 2019 в 03:17
поделиться