[llvm] [libc] [libc][math] Implement nan(f|l) functions (PR #76690)

Nishant Mittal via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 5 02:17:35 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())
----------------
nishantwrp wrote:

done

https://github.com/llvm/llvm-project/pull/76690


More information about the llvm-commits mailing list