From: Igor Sysoev Date: Wed, 16 Nov 2016 12:21:07 +0000 (+0300) Subject: A workround for Solaris bugs in acos() and asin(). X-Git-Tag: 0.1.6~21 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=24116f92422981a82d0de0e3505ee4913634ffff;p=njs.git A workround for Solaris bugs in acos() and asin(). --- diff --git a/njs/njs_math.c b/njs/njs_math.c index 2281e276..fbae9a66 100644 --- a/njs/njs_math.c +++ b/njs/njs_math.c @@ -47,7 +47,16 @@ njs_object_math_acos(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, 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; @@ -66,7 +75,16 @@ njs_object_math_asin(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, 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;