Re: Split Real / Float into Mantissa, Exponent, and Base

2017-03-06 Thread Marc Schütz via Digitalmars-d-learn

On Friday, 3 March 2017 at 18:09:02 UTC, Jonathan M. Wilbur wrote:
I have tried to come up with a good way to get the mantissa, 
exponent, and base from a real number, and I just can't come up 
with a good cross-platform way of doing it. I know about 
std.math.frexp(), but that function only gives you another real 
as the mantissa. I need an integral mantissa, exponent, and 
base.


Is there either (1) a crafty, cross-platform way of doing this 
or (2) a function in a standard library that does this that I 
somehow missed? If there is no such function, what are your 
thoughts on me implementing such a thing and submitting it to 
Phobos, probably similar to how frexp is implemented (elseifs 
for each FP format)?


See std.bitmanip.FloatRep and std.bitmanip.DoubleRep:

https://dlang.org/phobos/std_bitmanip.html#.FloatRep
https://dlang.org/phobos/std_bitmanip.html#.DoubleRep


Re: Split Real / Float into Mantissa, Exponent, and Base

2017-03-03 Thread pineapple via Digitalmars-d-learn

On Friday, 3 March 2017 at 18:09:02 UTC, Jonathan M. Wilbur wrote:
I have tried to come up with a good way to get the mantissa, 
exponent, and base from a real number, and I just can't come up 
with a good cross-platform way of doing it. I know about 
std.math.frexp(), but that function only gives you another real 
as the mantissa. I need an integral mantissa, exponent, and 
base.


Is there either (1) a crafty, cross-platform way of doing this 
or (2) a function in a standard library that does this that I 
somehow missed? If there is no such function, what are your 
thoughts on me implementing such a thing and submitting it to 
Phobos, probably similar to how frexp is implemented (elseifs 
for each FP format)?


The various functions in std.math mostly extract these values on 
their own, using the floatTraits template to help.


The mach library has the module mach.math.floats.extract: 
https://github.com/pineapplemachine/mach.d/tree/master/mach/math/floats


Split Real / Float into Mantissa, Exponent, and Base

2017-03-03 Thread Jonathan M. Wilbur via Digitalmars-d-learn
I have tried to come up with a good way to get the mantissa, 
exponent, and base from a real number, and I just can't come up 
with a good cross-platform way of doing it. I know about 
std.math.frexp(), but that function only gives you another real 
as the mantissa. I need an integral mantissa, exponent, and base.


Is there either (1) a crafty, cross-platform way of doing this or 
(2) a function in a standard library that does this that I 
somehow missed? If there is no such function, what are your 
thoughts on me implementing such a thing and submitting it to 
Phobos, probably similar to how frexp is implemented (elseifs for 
each FP format)?