But if software types behave differently then that should be documented. From reading documentation I would expect bitwise same results(obviously ignoring that those bits are differently packed in the fast and non fast types, I am talking about extracting the sign, exp, sig and comparing them). If some other reviewer disagrees please write here or write in your review. :)
Yes, I will better document the differences between the two.
std::numbers::pi is double not long double so on my machine for long double using numbers::pi is wrong way to initialize the variable. I have no idea why std:: did this(I presume because long double is 64 bit on some platforms or because double is much more common, or...). In any case seems like quite a footgun in Decimal as users might init decimal128 with decimal64 constant... Am I missing something?
The non-template variables for numbers::pi, log2e etc are all double so we went with decimal64_t for consistency [1]. pi_v<decimal128_t> is available in your case. Matt [1] https://develop.decimal.cpp.al/decimal/numbers.html