From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id SAA25295; Sat, 1 Feb 2003 18:53:11 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA24452 for ; Sat, 1 Feb 2003 18:53:10 +0100 (MET) Received: from speakeasy.org (dsl081-017-141.sea1.dsl.speakeasy.net [64.81.17.141]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id h11Hr9f14010 for ; Sat, 1 Feb 2003 18:53:09 +0100 (MET) Received: (from shawnw@localhost) by speakeasy.org (8.10.1/8.10.1) id h11I5I011161 for caml-list@inria.fr; Sat, 1 Feb 2003 10:05:18 -0800 Date: Sat, 1 Feb 2003 10:05:18 -0800 From: Shawn Wagner To: caml-list@inria.fr Subject: Re: [Caml-list] Finding the sign of a float Message-ID: <20030201100518.V22850@speakeasy.org> Mail-Followup-To: caml-list@inria.fr References: <200302011256.HAA06393@nerd-xing.mit.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from malc@pulsesoft.com on Sat, Feb 01, 2003 at 05:11:10PM +0300 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Sat, Feb 01, 2003 at 05:11:10PM +0300, malc wrote: > On Sat, 1 Feb 2003, John Carr wrote: > > > > > > I'm looking for a way, in pure ocaml without having to bail out to C, to > > > tell if a float is negative or not. > > > > > > Just using x < 0.0 won't work, as I need to be able to tell the difference > > > between -0.0 and +0.0. This is for ocaml versions of the C copysign and > > > signbit functions. Any suggestions? > > > > x < 0.0 || (x = 0.0 && 1.0/.x < 0.0) > > > > may be faster than converting the bits to integer, or slower, > > depending on platform and context, and how often you encounter -0. > > 1.0 /. x = neg_infinity less typing > That one doesn't work for all negative numbers, though. I think I'll go with John's, though Chris's suggestion of converting to an int64 is nifty. I wasn't aware of bits_to_float before. PS: I agree with Chris's sentiments about overloaded arithmetic operators (It has to be possible; < > and = do it...) and largeint constants. That last one is particularily annoying, as I never could figure out how to make my patch to add them work with camlp4. -- Shawn Wagner shawnw@speakeasy.org ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners