https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113578
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- Maybe we could make it work for std::ostream with something like: --- a/libstdc++-v3/include/std/ostream +++ b/libstdc++-v3/include/std/ostream @@ -233,7 +233,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { // _GLIBCXX_RESOLVE_LIB_DEFECTS // 117. basic_ostream uses nonexistent num_put member functions. +#ifdef __riscv + return _M_insert(__builtin_copysign((double)__f, + (double)-!!__builtin_signbit(__f)); +#else return _M_insert(static_cast<double>(__f)); +#endif } __ostream_type&