As we learn from Nancy-typing
(http://calculist.blogspot.com/2006/02/nancy-typing.html) Nan is easy
to make in Perl. Its a numeric coercion of 'Nan'

This is why perl -E' say "Nihilist" if "Nancy" != "Nancy"' is so much fun.

Joel


On Thu, Jan 19, 2012 at 1:45 PM, Chris Marshall <[email protected]> wrote:
> On Thu, Jan 19, 2012 at 2:38 PM, David Mertens <[email protected]> 
> wrote:
>> On Tue, Jan 3, 2012 at 3:41 PM, Chris Marshall <[email protected]>
>> wrote:
>>>
>>> On Tue, Jan 3, 2012 at 4:34 PM, David Mertens <[email protected]>
>>> wrote:
>>> >
>>> >
>>> > On Tue, Jan 3, 2012 at 3:18 PM, Douglas Burke <[email protected]>
>>> > wrote:
>>> >>
>>> >> On 1/2/12 11:18 PM, David Mertens wrote:
>>> >>
>>> >>> Because PDL doesn't like boolean evaluations **except for
>>> >>> single-element
>>> >>> piddles**, this expression will croak if $a is anything more than a
>>> >>> one-dimensional vector. Have you tried running that conditional when
>>> >>> $a
>>> >>> is more complex? For example, if $a is a matrix, this will croak.
>>> >>> Something I didn't realize, but just learned messing with this, is
>>> >>> that
>>> >>> a single BAD value is considered boolean false. That's more clever
>>> >>> than
>>> >>> I had expected. :-)
>>> >>>
>>> >>>
>>> >>
>>> >> It's kind-of discussed in
>>> >>
>>> >>
>>> >>
>>> >> http://pdl.perl.org/PDLdocs/BadValues.html#bad_values_and_boolean_operators
>>> >>
>>> >> (or, perhaps, this is out of date and needs re-writing), but it may
>>> >> well
>>> >> make sense for someone (not me, as I don't have the energy) to move the
>>> >> operational/useful parts of this document to PDL::Bad, leaving the
>>> >> BadValues
>>> >> document more for the
>>> >> implementation/you-don't-need-to-read-this-to-just-use-it
>>> >> documentation. I
>>> >> can't remember if the docs for PDL::Bad is empty if support is not
>>> >> included,
>>> >> and - of so - whether it is that serious an issue (since if you don't
>>> >> have
>>> >> the support compiled in then you don't really need to know about how it
>>> >> works).
>>> >>
>>> >>> In PDL 2.4.10, you should be able to return pdl('bad'). That's a
>>> >>> recent
>>> >>> implementation of mine. :-) Alternatively, perhaps PDL should add BAD
>>> >>> to
>>> >>> PDL::Constants (as well as INF, for that matter).
>>> >>
>>> >>
>>> >> As the bad-value can be changed for the integer types (and even
>>> >> floating-point types, depending on how the code is built), I'm not sure
>>> >> that
>>> >> you can really treat it as a constant, but this comment comes after
>>> >> spending
>>> >> all of 5 seconds thinking about the matter, so I may well be missing
>>> >> something completely obvious here ;-)
>>>
>>> Yes, that is why it is not in there.  Even IEEE values like Inf and NaN
>>> can be ambiguous.
>>
>>
>> I was thinking about this today, because I define and use Inf in my plotting
>> library (for which I have just written a collection of milestones and
>> goals). First, generating infinity in Perl is as easy as this:
>>
>>  my $inf = -pdl(0)->log->at(0);
>>
>> Mind you, sending zero to Perl's log function will make it squack, but not
>> PDL's. This will give the current machine's representation of infinity for
>> the current floating-point type you're using. As for generating nan, I'm not
>> sure how I'd do it in Perl, because I only use it in C/XS code, but the
>> usual way in C code is to multiply zero times your just-acquired value of
>> infinity:
>>
>>  double my_nan = my_inf * 0.0;
>>
>> Infinity times any positive number just returns infinity, but infinity times
>> zero returns nan, in your machine's architecture-dependent representation.
>
> Yes, but INF is not defined for integer data types
> and the values are different between 4byte and 8byte
> floats.  As for NaNs, there are multiple NaN values
> that are allowed---more like an equivalence class.
>
> At any rate, it seems clear that they don't fit the
> idea of a constant.
>
> --Chris
>
> _______________________________________________
> Perldl mailing list
> [email protected]
> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to