Hi,

You should try the following.  When the number is less than 1e-307,
print out all the parameters of the model.  What do you see?  Or print
out all arguments input into the function.  It might be possible to
catch this on line 1 instead.

Regards,

Edward



On 21 May 2014 19:24, Troels Emtekær Linnet <[email protected]> wrote:
> Hi Ed.
>
> The trunk code says:
>     t113 = t97_nt99 - t112
>     t115 = num_cpmg
>     t116 = power(0.5*(t97_t99 + t112), t115)
>
> I have tried to catch the underflow of t116, the power function.
> This is when a number is represented as less than 1.e-307 (something).
>
>>>> import numpy as np
>>>> print np.finfo('d')
> Machine parameters for float64
> ---------------------------------------------------------------------
> precision= 15   resolution= 1.0000000000000001e-15
> machep=   -52   eps=        2.2204460492503131e-16
> negep =   -53   epsneg=     1.1102230246251565e-16
> minexp= -1022   tiny=       2.2250738585072014e-308
> maxexp=  1024   max=        1.7976931348623157e+308
> nexp  =    11   min=        -max
> ---------------------------------------------------------------------
>
> So, in the array, I look for the maximum power, and match the value
> with the list, and see if that value is below the limit.
>
> Hm, maybe I should delete it again.
> But I caught other numpy-raises error, found in the test-suite.
>
> But here this bug is triggered by an array, which is sent in with tcp
> array of nan.
>
> I think it is because spin :71@N miss data from field 800.
>
> Best
> Troels
>
> 2014-05-21 19:03 GMT+02:00 Edward d'Auvergne <[email protected]>:
>> Hi,
>>
>> Maybe this shouldn't be a bug?  It's only present in your 'disp_speed'
>> branch and is only seen with a debugging flag turned on.  If you add
>> the check I mentioned at
>> http://www.mail-archive.com/[email protected]/msg05731.html to the
>> first line of this function, maybe all the checks you have added
>> compared to the trunk could be removed and this issue will just
>> disappear.  It would be worth trying.  Also, what does the following
>> line do?
>>
>>     # Calculate lowest positive val, which raised to the power will
>> not be represented less than 1.-e300.
>>     low_pos_rep = power(1.e-300, 1./max_t115)
>>
>> Why is max_t115 inverted when the original code from Nikolai and Martin is:
>>
>>         t115 = N/2;
>>         t116 = (t69/2+t83/2+t92/2+t96/2+t112/2).^t115;
>>         t118 = 1./t112;
>>         t120 = t69+t83-t92-t96+t112;
>>         t122 = (t69/2+t83/2+t92/2+t96/2-t112/2).^t115;
>>
>> Here t115 is never inverted.  The 1/max_t115 is causing this divide by
>> zero error.  Anyway, adding the 'No Rex' check in the above link will
>> likely make all of this redundant.
>>
>> Regards,
>>
>> Edward
>>
>>
>>
>>
>> On 21 May 2014 18:46, Troels E. Linnet <[email protected]> 
>> wrote:
>>> Follow-up Comment #3, bug #22065 (project relax):
>>>
>>> This only fails when --numpy-raise is set on.
>>>
>>>     _______________________________________________________
>>>
>>> Reply to this item at:
>>>
>>>   <http://gna.org/bugs/?22065>
>>>
>>> _______________________________________________
>>>   Message sent via/by Gna!
>>>   http://gna.org/
>>>

_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-devel mailing list
[email protected]

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-devel

Reply via email to