digitalmars.D - Negative infinity?
- Sean Kelly <sean f4.ca> Sep 22 2004
- Nick <Nick_member pathlink.com> Sep 22 2004
- Sean Kelly <sean f4.ca> Sep 22 2004
- Nick <Nick_member pathlink.com> Sep 22 2004
- Sean Kelly <sean f4.ca> Sep 22 2004
- Nick <Nick_member pathlink.com> Sep 23 2004
- Arcane Jill <Arcane_member pathlink.com> Sep 23 2004
- Sean Kelly <sean f4.ca> Sep 23 2004
- Arcane Jill <Arcane_member pathlink.com> Sep 23 2004
- "Walter" <newshound digitalmars.com> Sep 23 2004
- "Walter" <newshound digitalmars.com> Sep 22 2004
Am I correct in assuming that D does not support negative infinity? That was an assumption I made in unFormat and I thought I'd ask. Assuming I was wrong and it does, what about negative zero? Sean
Sep 22 2004
In article <cisidv$2shn$1 digitaldaemon.com>, Sean Kelly says...Am I correct in assuming that D does not support negative infinity?
By the looks of it, no. See example below.Assuming I was wrong and it does, what about negative zero?
From what I can see, a float can have the value -0 but it is treated as equal to 0 (which of course is correct behaviour). Consider this example: # import std.stdio; # void main() # { # // Produce negative zero # float f=-1; # for(int i = 0; i < 100; i++) # f /= 1000; # writefln(f); # assert(f==-f); # # // Produce negative infinity # f=1/f; # writefln(f); # } Output is: -0 -inf Nick
Sep 22 2004
In article <cismki$2uqa$1 digitaldaemon.com>, Nick says...In article <cisidv$2shn$1 digitaldaemon.com>, Sean Kelly says...Am I correct in assuming that D does not support negative infinity?
By the looks of it, no. See example below.Assuming I was wrong and it does, what about negative zero?
From what I can see, a float can have the value -0 but it is treated as equal to 0 (which of course is correct behaviour). Consider this example: # import std.stdio; # void main() # { # // Produce negative zero # float f=-1; # for(int i = 0; i < 100; i++) # f /= 1000; # writefln(f); # assert(f==-f); # # // Produce negative infinity # f=1/f; # writefln(f); # } Output is: -0 -inf
Hrm... so I tred this: # import std.stdio; # # void main() # { # float f = -0; # writefln( f ); # f = f.infinity * -1; # writefln( f ); # } And it printed: 0 -inf So while there seems to be an easy way to get negative infinity, I don't know of one to get negative zero. I'll update unFormat to handle negative infinity, but unless someone has a brilliant idea I'm not going to bother with negative zero. Sean
Sep 22 2004
In article <cisnr9$2vfj$1 digitaldaemon.com>, Sean Kelly says...So while there seems to be an easy way to get negative infinity, I don't know of one to get negative zero. I'll update unFormat to handle negative infinity, but unless someone has a brilliant idea I'm not going to bother with negative zero.
Try -1e-1000000000. Maybe there should be a float.negzero property? Nick
Sep 22 2004
In article <cisp9c$30a6$1 digitaldaemon.com>, Nick says...In article <cisnr9$2vfj$1 digitaldaemon.com>, Sean Kelly says...So while there seems to be an easy way to get negative infinity, I don't know of one to get negative zero. I'll update unFormat to handle negative infinity, but unless someone has a brilliant idea I'm not going to bother with negative zero.
Try -1e-1000000000. Maybe there should be a float.negzero property?
No can do. The compiler errors out with "number is not representable." A negzero property would be nice, unless Walter can suggest an alternate method that doesn't involve a loop? Sean
Sep 22 2004
In article <cisrr5$31gf$1 digitaldaemon.com>, Sean Kelly says...Try -1e-1000000000. Maybe there should be a float.negzero property?
No can do. The compiler errors out with "number is not representable." A negzero property would be nice, unless Walter can suggest an alternate method that doesn't involve a loop?
Strange, worked for me... Nick
Sep 23 2004
In article <cisnr9$2vfj$1 digitaldaemon.com>, Sean Kelly says...So while there seems to be an easy way to get negative infinity, I don't know of one to get negative zero. I'll update unFormat to handle negative infinity, but unless someone has a brilliant idea I'm not going to bother with negative zero. Sean
How about (1/-f.infinity)? Or ((-1)/f.infinity)? Or -(1/f.infinity)? Jill
Sep 23 2004
In article <cittdg$k81$1 digitaldaemon.com>, Arcane Jill says...How about (1/-f.infinity)? Or ((-1)/f.infinity)? Or -(1/f.infinity)?
Darn. There I go forgetting basic mathematics. I hope this doesn't mean I'm over the hill ;) Thanks Jill! Sean
Sep 23 2004
In article <ciur0c$1ii1$1 digitaldaemon.com>, Sean Kelly says...Darn. There I go forgetting basic mathematics.
The behavior of IEEE floats is pretty bizarre as far as mathematics goes, so I wouldn't worry about it. In /real/ mathematics, of course, there is only one zero, and infinity is not even a real number (though the concept has its uses in limits, set theory and so on).I hope this doesn't mean I'm over the hill ;) Thanks Jill!
You're /never/ over the hill. Have fun. Jill
Sep 23 2004
"Sean Kelly" <sean f4.ca> wrote in message news:cisnr9$2vfj$1 digitaldaemon.com...Hrm... so I tred this: # import std.stdio; # # void main() # { # float f = -0; # writefln( f ); # f = f.infinity * -1; # writefln( f ); # } And it printed: 0 -inf So while there seems to be an easy way to get negative infinity, I don't
one to get negative zero. I'll update unFormat to handle negative
unless someone has a brilliant idea I'm not going to bother with negative
Negative 0 does print as just "0". Also, the way to generate a negative 0 is to write: -0.0 writing -0 will not, since the negation happens before the conversion to double.
Sep 23 2004
"Sean Kelly" <sean f4.ca> wrote in message news:cisidv$2shn$1 digitaldaemon.com...Am I correct in assuming that D does not support negative infinity? That
assumption I made in unFormat and I thought I'd ask. Assuming I was wrong
it does, what about negative zero?
Negative infinity as well as negative zero are fully supported in D.
Sep 22 2004









Nick <Nick_member pathlink.com> 