[libc-commits] [libc] [llvm] [libc][math] Implement nan(f|l) functions (PR #76690)
via libc-commits
libc-commits at lists.llvm.org
Thu Jan 4 12:58:23 PST 2024
================
@@ -1055,6 +1056,27 @@ hexadecimal_string_to_float(const char *__restrict src,
return output;
}
+LIBC_INLINE uint64_t
+nan_mantissa_from_ncharseq(const cpp::string_view ncharseq) {
+ uint64_t nan_mantissa = 0;
+
+ if (ncharseq.data() != nullptr && isdigit(*ncharseq.data())) {
+ // This is to prevent errors when StorageType is larger than 64
+ // bits, since strtointeger only supports up to 64 bits. This is
+ // actually more than is required by the specification, which says
+ // for the input type "NAN(n-char-sequence)" that "the meaning of
+ // the n-char sequence is implementation-defined."
+ auto strtoint_result = strtointeger<uint64_t>(ncharseq.data(), 0);
+ if (!strtoint_result.has_error())
+ nan_mantissa = strtoint_result.value;
+
+ if (strtoint_result.parsed_len != (ptrdiff_t)ncharseq.size())
----------------
michaelrj-google wrote:
nit: This should be a C++ style cast
https://github.com/llvm/llvm-project/pull/76690
More information about the libc-commits
mailing list