НЕ РАБОТАЕТ MathMod !!! - страница 4

 

Господа, не нужно ломать копья в столь простом деле.

Если не хотите вникать в теорию представления вещественных чисел, то возьмите любой стандартный язык программирования и произведите указанные операции в них. Получите абсолютно такой же результат.

 
Маленькая просьба - выйти из "вещественного" мира в реальный и сделать так чтобы описание соответствовало работе.
 
Renat >>:

Господа, не нужно ломать копья в столь простом деле.

Если не хотите вникать в теорию представления вещественных чисел, то возьмите любой стандартный язык программирования и произведите указанные операции в них. Получите абсолютно такой же результат.

Не соглашусь. Если имеется в виду microsoft c++ run-time, то там в реализации fmod() используется команда сопроцессора FPREM, которая была добавлена в интеловский FPU до введения ее в стандарт IEEE. После того как IEEE разработал эту команду и добавил ее в стандарт, Intel добавила правильную реализацию в виде FPREM1. Так вот, FPREM выдает ошибочный результат, а FPREM1 - правильный.


Так что проблема не в теории представления вещественных чисел, а в реализации fmod() в MSVC.


Если лень ковыряться в ассемблере, возьмите любую полноценную программу для математических рассчетов, например Matlab, и посчитайте там остаток от деления. У меня (как и при использовании FPREM1) получается:


mod(4,0.4) = 0

 

Надо добавить в описании:

числа должны быть не меньше единицы.

И всё.