double num;
if (nargs > 1) {
- num = acos(args[1].data.u.number);
+ num = args[1].data.u.number;
+
+#if (NXT_SOLARIS)
+ /* On Solaris acos(x) returns 0 for x > 1. */
+ if (fabs(num) > 1.0) {
+ num = NAN;
+ }
+#endif
+
+ num = acos(num);
} else {
num = NAN;
double num;
if (nargs > 1) {
- num = asin(args[1].data.u.number);
+ num = args[1].data.u.number;
+
+#if (NXT_SOLARIS)
+ /* On Solaris asin(x) returns 0 for x > 1. */
+ if (fabs(num) > 1.0) {
+ num = NAN;
+ }
+#endif
+
+ num = asin(num);
} else {
num = NAN;