Vadim писал(а):Информация к размышлению...
Оно валится только когда через переменную значение ей передаётся.
Литералы почему-то вычисляет без ошибок.
И только при значениях из переменных делает SIGFPE.
только вот так:
e := 1.19238084880340813706E+0009; // вначале в переменную
Arccos(e); // <== а потом наблюдаем SIGFPE
Снег Север писал(а):а если мозги включить? Диапазон допустимых значений аргумента для арккосинуса (и арксинуса) - от -1 до 1. А вы что туда суете?
Я делаю всё по формулам, которые в том числе есть даже в учебнике по программированию:
http://www.freepascal.ru/download/book/ ... azarus.pdf.
Вот например: arccos ( ( sqr ( b)+sqr ( c)−sqr ( a ) ) / 2 / b/ c ) ; И согласно листингу, в программу передаются значения реальных треугольников, которые можно построить. Но она SIGFPE, именно из-за отрицательного числа в arccos на sqrt. Как только добавил abs в функцию arccos -- перестала делать SIGFPE и возвращает верные значения.
Добавлено спустя 21 минуту 1 секунду:Re: SIGFPE Arccos на sqrt, в процедуре из 2-х строк, что делать?Снег Север писал(а):Диапазон допустимых значений аргумента для арккосинуса (и арксинуса) - от -1 до 1. А вы что туда суете?
И кстати, согласно листингу в arccos -- подаются верные значения от -1 до 1, но в arccos -- они превращаются в отрицательное и делают SIGFPE на sqrt.