Это моя функция для вычисления обратного синуса числа. Это приводит к ошибке сегментации для значений между 0.51-0.8:Причина этой ошибки сегментации
double my_asin(double x)
{
double sum = x;
if(x < -1.0 || x > 1.0)
{
/* error handling */
}
else if(x < -0.5)
{
sum = -0.5*PI + my_asin(my_sqrt(1-my_pow(x,2))); // SIG_SEGV
return sum;
}
else if(x > 0.5)
{
sum = 0.5*PI - my_asin(my_sqrt(1-my_pow(x,2))); // SIG_SEGV
return sum;
}
/* variable initialization */
while(my_abs(b - a) > EPSILON2)
{
/*code*/
}
/* return result */
}
GDB и Valgrind как сказать мне ошибка в функции my_pow, которая делает именно то, что вы думаете, что не делает так что нет необходимости разместить его здесь. Не могли бы вы взглянуть и указать мне в правильном направлении? Спасибо.
Если ошибка произошла в my_pow, вам нужно исправить то, что, по вашему мнению, нарушено. Не нужно публиковать его здесь. – nvoigt
Подождите ... И GDB, и valgrind, и говорят, что ошибка в my_pow, так что я думаю, что это так, является причиной SegFault. Таким образом, есть все основания опубликовать его здесь. – Sinkingpoint
Согласно ответу interjay ниже на странице, проблема была НЕ в my_pow. Вот почему я разместил его здесь. Он просто переносился на my_pow, где произошла ошибка. Но my_pow не вызвал ошибку. – imre