Mail Archives: djgpp/1998/04/28/23:42:26
At 12:25 4/27/1998 GMT, John Kissell wrote:
>My bet is on Dist = a negative value! Put a printf in front of the sqrt
>function to report 'Dist's actual value.
If the code the poster posted is similar to that which causes the problem,
that's impossible. `Dist' is equal to the sum of the squares of three
numbers. The square of a real number is always positive, and the sum of two
or more positive numbers is always positive.
But your advice is reasonable in any case, since `Dist' might for instance
be overflowing.
>
>
>Daniel Delorme wrote:
>>
>> I have this problem with SIGFPE...
>>
>> double DistanceBetweenPoints(strPOINT *Pt1, strPOINT *Pt2)
>> {
>> double Dist;
>>
>> Dist = pow(fixtof(Pt1->X - Pt2->X), 2)+
>> pow(fixtof(Pt1->X - Pt2->X), 2)+
>> pow(fixtof(Pt1->X - Pt2->X), 2);
>> Dist = sqrt(Dist);
>> printf("Dist = %f\n", Dist); <----- program crashes here with SIGFPE
>> }
>>
>> traceback:
>> _doprnt+3548
>> _doprnt+1574
>> printf+20
>> DistanceBetweenPoints
>>
>> and I #included math.h
>>
>> Why would SIGFPE appear in a mere printf ?
>> What causes SIGFPE anyway ?
>> If I remove the printf, I get SIGFPE at "if (Dist1[I] <= Dist2[J])"
>> (Dist1[6] and Dist2[6] are float)
>
Nate Eldredge
nate AT cartsys DOT com
- Raw text -