A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2006-October/069174.html below:

[Python-Dev] Caching float(0.0)

[Python-Dev] Caching float(0.0)James Y Knight foom at fuhm.net
Tue Oct 3 18:47:02 CEST 2006
On Oct 3, 2006, at 8:30 AM, Martin v. Löwis wrote:
> As Michael Hudson observed, this is difficult to implement, though:
> You can't distinguish between -0.0 and +0.0 easily, yet you should.

Of course you can. It's absolutely trivial. The only part that's even  
*the least bit* sketchy in this is assuming that a double is 64 bits.  
Practically speaking, that is true on all architectures I know of,  
and if it's not guaranteed, it could easily be a 'configure' time check.

typedef union {
     double d;
     uint64_t i;
} rawdouble;

int isposzero(double a) {
     rawdouble zero;
     zero.d = 0.0;
     rawdouble aa;
     aa.d = a;
     return aa.i == zero.i;
}

int main() {
     if (sizeof(double) != sizeof(uint64_t))
         return 1;

     printf("%d\n", isposzero(0.0));
     printf("%d\n", isposzero(-0.0));

}

James
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4