Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.07;
Скачать: CL | DM;

Вниз

Просто кошмар!!! 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
3-20939
Separator
2002-09-17 09:44
2002.10.07
Подскажите какие лучше всего работать с mysql


3-20928
bin
2002-09-17 17:19
2002.10.07
Формирование отчета в Делфи


1-20952
roman002
2002-09-26 08:53
2002.10.07
Помогите с Win NT сервисом


1-21028
Fishka
2002-09-26 10:08
2002.10.07
DATETIMEPICKER - четырехзначный год?


3-20917
lak_b
2002-09-16 18:02
2002.10.07
База данных вручную