The lack of errno setting is allowed by the C standard with 7.3.2:
"An implementation may set errno but is not required to."
The POSIX docs all have language like this for complex calls:
"No errors are defined."
http://pubs.opengroup.org/onlinepubs/9699919799/functions/ccos.html
But by default, we must allow that an implementation could set errno.