<div dir="ltr">Heya folks, new contributor here. I work at Google on the Asylo project for enclave development. I'm in the process of switching our toolchain over to clang from GCC, and I've found that I have some minor problems doing so with newlib as our libc implementation.<div><br></div><div>Mainly, long double math operations are not supported by newlib. In libstdc++, if long double functions weren't defined in libc (#ifndef HAVE_HYPOTL, etc, ...), it'd define them itself. That's not the case in libc++, so I was wondering what y'all thought would be the best course of action.</div><div><br></div><div>Mainly, should libc++ act like libstdc++ and define its own long double implementations of math operations, or should it not add the functions to the std:: namespace if they're not available?</div><div><br></div><div>If not adding them, then the following headers would guard given declarations within _LIBCPP_HAS_NO_LONG_DOUBLE/#endif:</div><div><br></div><div>#include <cmath>:</div><div>using ::nexttoward;<br>using ::nexttowardf;<br></div><div><br></div><div>using ::acosl;<br>[...contiguously down to...]</div><div>using ::truncl;<br></div><div><br></div><div>inline _LIBCPP_INLINE_VISIBILITY long double hypot( long double x, long double y, long double z ) { return sqrt(x*x + y*y + z*z); }<br></div><div><br></div><div>#include <cstdlib>:</div><div>using ::strtold;<br></div><div><br></div><div>#include <locale>:</div><div>[...] long double __do_strtod<long double> [...]<br></div><div><br></div><div>#include <math.h>:</div><div>[...everything that mentions long double in its prototype...]</div><div><br></div><div>I can produce a patch quickly if this is an acceptable change to folks.</div><div><br></div><div>Regards,</div><div>-Dionna Glaze, PhD (she/her)</div></div>