Re: explain THIS one [message #58532] |
Mon, 04 February 2008 07:23 |
cmancone
Messages: 30 Registered: May 2007
|
Member |
|
|
On Feb 4, 9:51 am, Spon <christoph.b...@gmail.com> wrote:
> On Feb 4, 2:31 pm, cmanc...@ufl.edu wrote:
>
>
>
>> On Feb 4, 9:29 am, cmanc...@ufl.edu wrote:
>
>>> I'm having an error in my code and I stop it to check out what is
>>> going on. Here's the three relevant lines of code:
>
>>> minmag = min(sims[mag,*],max=maxmag)
>>> nbins = (maxmag-minmag)/magbinsize
>>> magres = fltarr(3*nfilters,nbins)
>
>>> Here's some commands I type into a command line to investigate my
>>> issues:
>
>>> IDL> help,nbins
>>> NBINS FLOAT = 7.00000
>>> IDL> help,magres
>>> MAGRES FLOAT = Array[6, 6]
>
>>> Anyone see a problem here? nbins is a float of size 7.0, and yet
>>> magres ends up with 6 rows!!!! To add to the fun I then type the
>>> following:
>
>>> IDL> nbins = 7.0
>>> IDL> magres = fltarr(3*nfilters,nbins)
>>> IDL> help,magres
>>> MAGRES FLOAT = Array[6, 7]
>
>>> To summarize, my array is created with the wrong dimensions, so I re-
>>> assign one of the variables with the exact same value that it had
>>> before, recreate my array, and it works! ?????? Looks like a bug to
>>> me...
>
>> And in case anyone thinks this might be part of the problem:
>
>> IDL> help,nbins
>> NBINS FLOAT = 7.00000
>> IDL> help,nfilters
>> NFILTERS LONG = 2
>> IDL> magres = fltarr(3*nfilters,long(nbins))
>> IDL> help,magres
>> MAGRES FLOAT = Array[6, 6]
>
> help,fltarr(6,6.99)
> <Expression> FLOAT = Array[6, 6]
>
> nbins = (maxmag-minmag)/magbinsize
> If this ever returns a value just under 7.00000 it'll always be
> rounded down when it's converted . I suspect this is what's happening
> to you.
>
> To test it, you could try:
> magres = fltarr(3*nfilters,round(nbins))
>
> Does this fix your problem?
> Chris
Arrgh!! I should have seen that one coming, I've read that article
before and have even explained to others the dangers of floating-point
representation. Oh well. Thanks for the help guys!
|
|
|
Re: explain THIS one [message #58533 is a reply to message #58532] |
Mon, 04 February 2008 06:51  |
Spon
Messages: 178 Registered: September 2007
|
Senior Member |
|
|
On Feb 4, 2:31 pm, cmanc...@ufl.edu wrote:
> On Feb 4, 9:29 am, cmanc...@ufl.edu wrote:
>
>
>
>> I'm having an error in my code and I stop it to check out what is
>> going on. Here's the three relevant lines of code:
>
>> minmag = min(sims[mag,*],max=maxmag)
>> nbins = (maxmag-minmag)/magbinsize
>> magres = fltarr(3*nfilters,nbins)
>
>> Here's some commands I type into a command line to investigate my
>> issues:
>
>> IDL> help,nbins
>> NBINS FLOAT = 7.00000
>> IDL> help,magres
>> MAGRES FLOAT = Array[6, 6]
>
>> Anyone see a problem here? nbins is a float of size 7.0, and yet
>> magres ends up with 6 rows!!!! To add to the fun I then type the
>> following:
>
>> IDL> nbins = 7.0
>> IDL> magres = fltarr(3*nfilters,nbins)
>> IDL> help,magres
>> MAGRES FLOAT = Array[6, 7]
>
>> To summarize, my array is created with the wrong dimensions, so I re-
>> assign one of the variables with the exact same value that it had
>> before, recreate my array, and it works! ?????? Looks like a bug to
>> me...
>
> And in case anyone thinks this might be part of the problem:
>
> IDL> help,nbins
> NBINS FLOAT = 7.00000
> IDL> help,nfilters
> NFILTERS LONG = 2
> IDL> magres = fltarr(3*nfilters,long(nbins))
> IDL> help,magres
> MAGRES FLOAT = Array[6, 6]
help,fltarr(6,6.99)
<Expression> FLOAT = Array[6, 6]
nbins = (maxmag-minmag)/magbinsize
If this ever returns a value just under 7.00000 it'll always be
rounded down when it's converted . I suspect this is what's happening
to you.
To test it, you could try:
magres = fltarr(3*nfilters,round(nbins))
Does this fix your problem?
Chris
|
|
|
|
Re: explain THIS one [message #58535 is a reply to message #58534] |
Mon, 04 February 2008 06:31  |
cmancone
Messages: 30 Registered: May 2007
|
Member |
|
|
On Feb 4, 9:29 am, cmanc...@ufl.edu wrote:
> I'm having an error in my code and I stop it to check out what is
> going on. Here's the three relevant lines of code:
>
> minmag = min(sims[mag,*],max=maxmag)
> nbins = (maxmag-minmag)/magbinsize
> magres = fltarr(3*nfilters,nbins)
>
> Here's some commands I type into a command line to investigate my
> issues:
>
> IDL> help,nbins
> NBINS FLOAT = 7.00000
> IDL> help,magres
> MAGRES FLOAT = Array[6, 6]
>
> Anyone see a problem here? nbins is a float of size 7.0, and yet
> magres ends up with 6 rows!!!! To add to the fun I then type the
> following:
>
> IDL> nbins = 7.0
> IDL> magres = fltarr(3*nfilters,nbins)
> IDL> help,magres
> MAGRES FLOAT = Array[6, 7]
>
> To summarize, my array is created with the wrong dimensions, so I re-
> assign one of the variables with the exact same value that it had
> before, recreate my array, and it works! ?????? Looks like a bug to
> me...
And in case anyone thinks this might be part of the problem:
IDL> help,nbins
NBINS FLOAT = 7.00000
IDL> help,nfilters
NFILTERS LONG = 2
IDL> magres = fltarr(3*nfilters,long(nbins))
IDL> help,magres
MAGRES FLOAT = Array[6, 6]
|
|
|