Re: Uninitialized Variables

new topic     » goto parent     » topic index » view thread      » older message » newer message

----- Original Message -----
From: "Chris Bensler" <bensler at mail.com>
To: "EUforum" <EUforum at topica.com>
Subject: RE: Uninitialized Variables


>
>
> Derek Parnell wrote:
> > ----- Original Message -----
> > From: "Andy Serpa" <renegade at earthling.net>
> > To: "EUforum" <EUforum at topica.com>
> > Sent: Sunday, March 24, 2002 10:18 AM
> > Subject: RE: Uninitialized Variables
> >
> >
> > > > Apparently NAN is (silly me) Not A Number! :P
> > > > using equal() compares NAN properly and consistently
> > > >
> > > > Here is my revised uninitialized values for variables:
> > > >
> > > >    integer  = -INF
> > > >    atom     =  INF
> > > >    sequence =  NAN
> > > >    object   = -NAN
> > > >
> > >
> > > So how do I test if something is a nan?  The "official" way is to use
> > > x!=x, but that is usually optimized away by most compilers (&
Euphoria,
> > > apparently.)  Using something like if x=1 and x=2 will work in the
> > > interpreter, but not translated to C, even with Watcom.  (In fact, it
is
> > >
> > > different depending on the compiler).
> > >
> > > Am I stuck with "if x and compare(x/x,1)"?
> > >
> > > For my genetic programming system this is a very real problem, as it
> > > comes up with random mathmatical expressions that sometimes are nan's.
> > > If you then take a predicted value (which is a nan) as output for a
> > > function that it has created and compare it with a target value, it
will
> > >
> > > show as being equal (& therefore error = 0).  So functions with nan's
as
> > >
> > > output get the highest fitness, which is a disaster...
> > >
> >
> > This seems to work:
> > --------------
> > atom x,nan,inf
> > inf = 1e300 * 1e300
> > nan = inf / inf
> >
> > x = nan
> >
> > if x = nan then
> >     puts(1, "x is not a number\n")
> > end if
> > ? x = nan
> > ? x != nan
> >
> > ? nan
> > ? inf
> > ------------
> >
> >
> Derek, try this.
>
> ? x=nan
> ? x=inf
> ? x=10
>
> btw:   nan = -(inf/inf)
>
>
> Chris
>
>
>
>

Okay, I did those changes and now I get this:

x is not a number
y is a number
1
0
0
1
0
1
1
0
0
nan
inf

which still looks fine. I'm running with an Intel Pentium III. What did you
get?
------------
Derek.

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu