die Fehler muss man normalerweise vorher abfangen, indem man die Werte außerhalb der Definitionsbereiche der Funktion vorher ausschließt.

z.B. bei
Code:
float x, y;
y=1/x;
Serial.print(y);

muss es mathematisch und programmier-logisch richtig heißen:

Code:
float x, y;
if(x!=0) {
   y=1/x;
   Serial.print(y);
}
else {
   Serial.print("ERROR! x=0 => NAN! Ungültiger Wertebereich!");
}
Genauso musst du deine x-Werte beim acos vorher prüfen und eingrenzen.

Andere Programmiersprachen benutzen dafür eine Konstruktion wie
try / catch / throw exception
etc., die genau solche Fehler durch interne Routinen abfangen.

In C geht das nicht, in C++ aber doch, ist aber nicht meine Baustelle.

try catch throw exception C++:
http://www.cplusplus.com/doc/tutorial/exceptions/
http://www.tutorialspoint.com/cplusp...s_handling.htm