NaN is for floating point numbers, not integers.
See https://en.wikipedia.org/wiki/NaN for some background.

Since there is no such 'nan' for indx values (64bit integers), I don't
think there is a sensible thing to do here.  If you want to see what
is actually being done, check the PDL sources.  I guess there could be
better error checking but maybe the best "fix" would be unambiguous
documentation (in the appropriate places) explaining that NaN is only
for IEEE floating point (as far as PDL supports).

--Chris

On Thu, Jun 13, 2019 at 10:11 AM Stephan Loyd <[email protected]> wrote:
>
> Hi Folks,
>
> Thanks for helping me with that badvalue thing. Sorry I made a mistake with 
> my last point yesterday, my memory was vague. Actually I meant this thing,
>
> use 5.010;
> use PDL;
> my $x = indx(1,'nan',3)->setnantobad();
> say $x;    # [1 -9.223372e+18 3]
>
>
> On Thu, Jun 13, 2019 at 9:21 PM Chris Marshall <[email protected]> wrote:
>>
>> Here is  a pdl2 shell session log showing the various
>> bad value features discussed.
>>
>> The main point of confusion seems to come from
>> the fact that some of the bad value methods
>> return a new PDL and some just set state on an
>> existing PDL.
>>
>> If a new PDL is returned (i.e., setbadat(), setbadtoval(),
>> then you'll need touse inplace() to make the change to
>> the original PDL.
>>
>> The bad value state changing routines or query routines:
>> badflag() and badvalue(), mutate the current PDL.
>>
>> HTH,
>> Chris
>>
>>
>> > pdl> $x = indx(1,2,3)->setbadat(1);
>> >
>> > pdl> p $x
>> > [1 BAD 3]
>> >
>> > pdl> p $x->badvalue
>> > -9223372036854775808
>> >
>> > pdl> p $x
>> > [1 BAD 3]
>> >
>> > pdl> $x->setbadtoval(100);
>> >
>> > pdl> p $x
>> > [1 BAD 3]
>> >
>> > pdl> p $x->setbadtoval(100);
>> > [1 100 3]
>> >
>> > pdl> p $x->badflag
>> > 1
>> >
>> > pdl> $x->inplace->setbadtoval(100);
>> >
>> > pdl> p $x
>> > [1 100 3]
>> >
>> > pdl> p $x->badflag
>> > 0
>> >
>> > pdl> p $x->badvalue
>> > -9223372036854775808
>> >
>> > pdl> $x->badvalue(100)
>> >
>> > pdl> p $x->badvalue
>> > 100
>> >
>> > pdl> p $x
>> > [1 100 3]
>> >
>> > pdl> $x->badflag(1)
>> >
>> > pdl> p $x
>> > [1 BAD 3]
>>
>>
>> On Wed, Jun 12, 2019 at 1:48 PM Ingo Schmid <[email protected]> wrote:
>> >
>> > Ah, maybe I got it wrong. I thought he wanted to change the value of BAD
>> > to something else instead of replacing it with a genuine number. I read
>> > setbadval (which is actually badvalue) instead of setbadtoval.
>> >
>> > Ingo
>> >
>> >
>> > On 12.06.19 18:34, Ed . wrote:
>> > > Doesn't that render setbadtoval entirely pointless?
>> > >
>> > > Or is the problem actually that Stephan didn't do
>> > >
>> > >      $x->inplace->setbadtoval(23);
>> > >
>> > > so what he wanted would be:
>> > >
>> > >      use 5.010;
>> > >      use PDL;
>> > >      my $x = indx(1,2,3)->setbadat(1);
>> > >      say $x;    # [1 BAD 3]
>> > >      my $y = $x->setbadtoval(100);
>> > >      say $x;    # still [1 BAD 3]
>> > >      say $y;    # [1 100 3]
>> > >
>> > > Best regards,
>> > > Ed
>> > >
>> > > -----Original Message-----
>> > > From: Ingo Schmid
>> > > Sent: Wednesday, June 12, 2019 5:25 PM
>> > > To: [email protected]
>> > > Subject: Re: [Pdl-general] Several problems with PDL
>> > >
>> > > Hi,
>> > > let me comment the easy one, this is a feature, I think. Once an element
>> > > is flagged bad, bad sticks. Bad value should be a value that is normally
>> > > never present in your data. In particular for the smaller integer types
>> > > this can be a problem, of course.
>> > > At least that was my take on bad values. They indicate missing/corrupt 
>> > > data.
>> > >
>> > > Best wishes
>> > > Ingo
>> > >
>> > > On 12.06.19 17:53, Stephan Loyd wrote:
>> > >>
>> > >> 4. setbadtoval() does not work well with some PDL types. For example,
>> > >>
>> > >> use 5.010;
>> > >> use PDL;
>> > >> my $x = indx(1,2,3)->setbadat(1);
>> > >> say $x;    # [1 BAD 3]
>> > >> $x->setbadtoval(100);
>> > >> say $x;    # still [1 BAD 3]
>> > >>
>> > >> Is this a bug or a feature?
>> > >
>> > >
>> > >
>> > > _______________________________________________
>> > > pdl-general mailing list
>> > > [email protected]
>> > > https://lists.sourceforge.net/lists/listinfo/pdl-general
>> > >
>> >
>> >
>> >
>> > _______________________________________________
>> > pdl-general mailing list
>> > [email protected]
>> > https://lists.sourceforge.net/lists/listinfo/pdl-general
>>
>>
>> _______________________________________________
>> pdl-general mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/pdl-general


_______________________________________________
pdl-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pdl-general

Reply via email to