Баг Майкрософт или же нет?

Тема в разделе "WASM.WIN32", создана пользователем Pavia, 26 фев 2006.

  1. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Вот код написан на дельфи.

    procedure TForm1.FormCreate(Sender: TObject);

    var a,b,c:Extended;

    begin

    b:=0.178176194206200011;

    c:=30005788672;

    ShowMessage(FloatToStr(b*cos(pi*c)*sin(pi*c)));

    ShowMessage(FloatToStr(b*cos(pi*c)*sin(pi*c)));

    end;

    При одинаковых формулах выдает разные результаты. Все это связанно с тем, что после первого вывода MessageBoxa один из флагов сопроцессора изменяется PC. Что влият на вычисления синуса! Последующии изменения флагов не выявленны. Может это дельфи, что-то делает не так? Может, кто разъяснит по подробней, а то плохо разбираюсь со процессором.



    ПС. XP SP1. Pentium4. Delphi7.
     
  2. Godness

    Godness Мёртвый дзена

    Публикаций:
    0
    Регистрация:
    27 ноя 2002
    Сообщения:
    90
    Тебя наверно плющит. Я проверил, у меня все совпадает с точность до копеечки.

    2k SP4, Celeron 2.0, Delphi5
     
  3. HARD

    HARD New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    15
    Иногда отладчик делфы некорректно удаляет брекпоинты и после этого начинают происходить настоящие чудеса.



    Обычно проблема решается перезапуском делфы.
     
  4. tr1cker

    tr1cker New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2005
    Сообщения:
    20
    абсолютно одинаковые результаты.



    ps. winxp sp2 rus, pIV 2.8, delphi6
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Скорее это баг дельфи, чем микрософта. По хорошему, перед вычислениями в фпу надо бы обнулить флаги - finit и т.п. А этим должен заниматься рантайм дельфи, а не микрософта.
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    HARD

    Все всем спасибо.Прогу скомпилировал. У меня и не только результаты разнятся. Значит глюк дельфи7 при иницилизации сопроцессора. В других версиях не проявляется.

    Нужно было добавить строчку.

    Set8087CW($123f);
     
  7. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    всё нормально w2k3 sp1