C ] How can I handle weird errors from calculating acos / sin / atan2?
- by Phrixus
Has anyone seen this weird value while handling sin / cos/ tan / acos.. math stuff?
===THE WEIRD VALUE===
-1.#IND00
=====================
void inverse_pos(double x, double y, double& theta_one, double& theta_two)
{
// Assume that L1 = 350 and L2 = 250
double B = sqrt(x*x + y*y);
double angle_beta = atan2(y, x);
double angle_alpha = acos((L2*L2 - B*B - L1*L1) / (-2*B*L1));
theta_one = angle_beta + angle_alpha;
theta_two = atan2((y-L1*sin(theta_one)), (x-L1*cos(theta_one)));
}
This is the code I was working on.
In a particular condition - like when x & y are 10 & 10,
this code stores -1.#IND00 into theta_one & theta_two.
It doesn't look like either characters or numbers :(
Without a doubt, atan2 / acos / stuff are the problems.
But the problem is, try and catch doesn't work either
cuz those double variables have successfully stored
some values in them.
Moreover, the following calculations never complain about it
and never break the program!
I'm thinking of forcing to use this value somehow and make the entire program crash...
So that I can catch this error..
Except for that idea, I have no idea how I should check whether these
theta_one and theta_two variables have stored this crazy values.
Any good ideas?
Thank you in advance..