Closed GregPlowman closed 4 years ago
Hey Greg, thanks for taking a look at my project! I'm also aware of the issue and working on a fix, forwarding Base.Printf
calls for MultiFloat{T,N}
through conversion to BigFloat
, just like I've done with Base.show
. This is kind of janky, but print performance isn't a very high priority for me, so for interactive use this ought to be sufficient.
Here's a possible solution:
using MultiFloats
using Printf
import Printf: fix_dec, ini_dec
if VERSION < v"1.1"
fix_dec(out, d::MultiFloat, flags::String, width::Int, precision::Int, c::Char) =
fix_dec(out, BigFloat(d), flags, width, precision, c)
ini_dec(out, d::MultiFloat, ndigits::Int, flags::String, width::Int, precision::Int, c::Char) =
ini_dec(out, BigFloat(d), ndigits, flags, width, precision, c)
else
fix_dec(out, d::MultiFloat, flags::String, width::Int, precision::Int, c::Char, digits) =
fix_dec(out, BigFloat(d), flags, width, precision, c, digits)
ini_dec(out, d::MultiFloat, ndigits::Int, flags::String, width::Int, precision::Int, c::Char, digits) =
ini_dec(out, BigFloat(d), ndigits, flags, width, precision, c, digits)
end
@GregPlowman Nice, thanks! There needs to be a little more logic involving renormalization and setprecision
to ensure that no bits are lost in the conversion to BigFloat
, but it looks like those are definitely the right functions to implement. I really appreciate the tip about Julia versions, by the way -- I probably wouldn't have caught that myself.
Would you like to be credited in any way besides a mention in this comment?
Just updated to new version. All looks good. Thanks for fixing this, and fast response. (Please, no need for credit/mention)
Probably similar to issue with
DoubleFloats
: