question: public void reduceDL ( double expFPRate , boolean checkErr ) { boolean needUpdate = false ; double [ ] rulesetStat = new double [ 6 ] ; for ( int j = 0 ; j < m_SimpleStats . size ( ) ; j ++ ) { rulesetStat [ 0 ] += m_SimpleStats . get ( j ) [ 0 ] ; rulesetStat [ 2 ] += m_SimpleStats . get ( j ) [ 2 ] ; rulesetStat [ 4 ] += m_SimpleStats . get ( j ) [ 4 ] ; if ( j == m_SimpleStats . size ( ) - 1 ) { rulesetStat [ 1 ] = m_SimpleStats . get ( j ) [ 1 ] ; rulesetStat [ 3 ] = m_SimpleStats . get ( j ) [ 3 ] ; rulesetStat [ 5 ] = m_SimpleStats . get ( j ) [ 5 ] ; } } for ( int k = m_SimpleStats . size ( ) - 1 ; k >= 0 ; k -- ) { double [ ] ruleStat = m_SimpleStats . get ( k ) ; double ifDeleted = potential ( k , expFPRate , rulesetStat , ruleStat , checkErr ) ; if ( ! Double . isNaN ( ifDeleted ) ) { if ( k == ( m_SimpleStats . size ( ) - 1 ) ) { removeLast ( ) ; } else { m_Ruleset . remove ( k ) ; needUpdate = true ; } } } if ( needUpdate ) { m_Filtered = null ; m_SimpleStats = null ; countData ( ) ; } }
target:  Try to reduce the DL of the ruleset by testing removing the rules one by one in reverse order and update all the stats