On Sat, 23 Sep 2000, Yukihiro Matsumoto wrote: > Hi, > Hi, > |Since we now have Float#nan? and Float#infinite? I think the following > |constants should be added to Math (or Float?) for completeness: > | > |NEGINF = Math.log(-1) # Or better way of generating NEGINF... > |INF = -NEGINF > |NAN = INF / INF > > Do you know good/portable way to generate positive/nagative infinity > and NaN? > I guess the simplest answer is that since the current interpreter relies on isnan and isinfinite for nan? and infinite? and they, to my knowledge, are not ANSI C I guess we could use nan() and infinity() which are also non ANSI C (but at least show up in math.h on my cygwin "machines"). But this will probably not work very often... If you want to be a bit more sure you could assume the IEEE 754 floating point standard funtions are correctly implemented and get for example nan with: 0.0/0.0 or sqrt(negative double) or 0*inifinity or inf*inf or inf+inf. If you want to be even more sure you can set the bits according to IEEE 754: S bit 0 E bit 1-11 F bit 12-63 If E=2047 and F is nonzero, then V=NaN ("Not a number") If E=2047 and F is zero and S is 1, then V=-Infinity If E=2047 and F is zero and S is 0, then V=Infinity I guess you may need to know the endianness but we need that info also elsewhere in the interpreter needn't we? If you can't assume the same representations as in IEEE 754 I guess I can't give you a good/portable way... (I've heard that some Cray machines still doesn't comply fully with 754...) Regards, Robert