40m QIL Cryo_Lab CTN SUS_Lab TCS_Lab OMC_Lab CRIME_Lab FEA ENG_Labs OptContFac Mariner WBEEShop
  40m Log  Not logged in ELOG logo
Entry  Wed Nov 30 02:04:26 2011, rana, den, jenne, kiwamu, jzweizig, Update, CDS, Filtering Noise issue tracked down ??? 
    Reply  Wed Nov 30 11:04:26 2011, josephb, Update, CDS, Filtering Noise issue tracked down ??? 
    Reply  Wed Nov 30 11:36:12 2011, Den, Update, CDS, Filtering Noise issue tracked down ??? 
Message ID: 6052     Entry time: Wed Nov 30 11:36:12 2011     In reply to: 6049
Author: Den 
Type: Update 
Category: CDS 
Subject: Filtering Noise issue tracked down ??? 


 if((new_hist < 1e-20) && (new_hist > -1e-20)) new_hist = new_hist<0 ? -1e-20: 1e-20;

20 is indeed a random number. We can change it to 300. Alex said that during that iir filter calculations sometimes numbers are very small and if they are less then 1e-308 then a very slow code in the processor is executed and this will crash the online system. For single precision this number is 1e-38 and may be 10 years ago it was not decided for sure what to use - float or double. 20 will be "OK" for both but as we can see causes other problems.

Anyway, Alex removed this line from the code and added another code that sets the two proper bits in the MXCSR register and prohibits to the CPU to run the slow code. As far as I understand if the numbers are less then 1e-308 they become 0. Roughly, this is equivalent to 

 if((new_hist < 1e-308) && (new_hist > -1e-308)) new_hist = 0;

This is in 2.4 release. It is in the svn. I think we can install it and figure out if the problem is gone.


ELOG V3.1.3-