Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Вниз

Просто кошмар!!! Ln(X), где X < 0 вешает Win98   Найти похожие ветки 

 
987   (2002-07-25 22:36) [0]

Ln(X), где X < 0 глючит в Win98

Пример: F := Ln(-1.0)

В Win95, WinXP это работает как и подобает, с генерацией "Invalid Floating Point Operation".

То-же в Win98 ругается Internal Error и, часто, Blue Screen of Deth. Но самое интересное, что это происходит (не только на моём компе) не каждый раз, а где-то на каждый 10-й.

Вот пример программы:

program Log;
uses
SysUtils;
var
F: Extended;
begin
repeat
try
F := Ln(-1.0)
except
end
until False
end.


 
Слесарь Матерящийся   (2002-07-25 23:04) [1]

Просто здОрово!

Система САМА приучает программеров к дисциплинированности!

Прекрасно!


 
IlyaA   (2002-07-26 12:45) [2]

А на кой тебе такое. Проверяй X > 0. Не фиг честных людей в заблуждение вводить.

А можно доопределить Ln на (-бесконечнось,0] и назвать его лагорифмом 987-го эксперементатора.


 
987   (2002-07-26 22:48) [3]

Так делать нельзя. Это-же очень медленно!!! Хорошо, если нужно проверить при вводе юзера. А если надо 1000 раз в секунду? Именно, что только try..except. Только как?

А это только на Дельфи? Если на каком нибудь VC++?



 
Юрий Зотов   (2002-07-27 01:14) [4]

> Это-же очень медленно!!!
> ... Именно, что только try..except

Ох, сдается мне, что try..except будет НАМНОГО медленнее, чем обычное if X > 0 then...

Защищенные блоки - штука очень мощная и очень удобная, но ДАЛЕКО не "бесплатная". Одна лишь реализация их стекового механизма обходится НАМНОГО "дороже" простого IF. И по скорости, и по памяти.


 
ACR   (2002-07-27 01:57) [5]

смешно канешно но на a = b / c, при с=0 если a,b,c Extended Win98 тоже падает, а если int то все в парядке, вообще любые операции с сопроцессором которые вызываю ошибку а соответственно и прерывание... запросто могут павешать винды... можно атключить генерацию прерываний сопрацессара но тагда и исключений небудет... вобщем M$ Х... Бл.. Пи.. .ры ....


 
Direx   (2002-07-27 10:37) [6]

> Это-же очень медленно!!!
> ... Именно, что только try..except

А вам не кажется, что время работы if"а настолько меньше времени работы ln, что подобный вопрос даже ставить глупо?


 
Юрий Зотов   (2002-07-27 17:40) [7]

> Direx (27.07.02 10:37)

Это Вы мне, или постановщику вопроса?


 
Mystic   (2002-07-27 23:50) [8]

Я сам натыкался на подобные грабли, только под ME и с Sqrt.

Проверка if X > 0.0 спасла ситуацию, правда ее не всегда приятно вставлять, если вычислений много.


 
Denvor   (2002-07-28 03:16) [9]

Я вот недавно компилировал проэкт, тоже с явной ошибкой через try ...except. Самое интересное, что пока компилировал Делфа всё время выдавала ошибку, а запустил так, как программу, так всё прекрасно работало. Может Делфа обработчики ошибок при компиляции опускает, чтобы программер мог все ньюансы видеть?
А ты найди модуль Math.pas и посмотри что там происходит, если присылается недопустимый аргумент. Можешь подправить, как тебе удобно.


 
987   (2002-07-29 22:32) [10]

Ничего в Math.pas не проверяется. А с чего взяли, что if с вещуственными аргументами будет быстро работать?


 
987   (2002-07-29 22:36) [11]

А что, в VC++ тоже так?


 
987   (2002-07-29 22:38) [12]

Прерывания от FPU не Борланд а Windows ловит. Полное гавно. А если Борланду написать? Они хоть читают?


 
ACR   (2002-07-29 22:47) [13]

Думаю если масдайцам пофиг то и Borland"у пабарабану....
тут читил у Borland"a отрифки из чатов с програмистами из проекта Builder C++, там адин чел спрашивает типа уменя все глючит, нифига ниработает, типа ваще атстой... иму грят типа а какая OS? он типа Win98... ну и ему культурна так атвичают типа засунь ее себе куданить не еб%%и мозг и паставь NT .. так-та



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
1-21076
Hogo
2002-09-24 14:48
2002.10.07
Убить процесс


6-21179
Monak
2002-07-03 19:55
2002.10.07
Ошибки на сокетах!


6-21187
spiderman
2002-05-08 12:22
2002.10.07
Please...


14-21236
Aristarh
2002-09-12 14:01
2002.10.07
Почему разное оформление анкет?


3-20887
Андрусь
2002-09-16 12:08
2002.10.07
Хитрый DataSet





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский