private static void computeF(BitSet[] constraints,int[] f){
  for (int i=0; i < f.length; i++) {
    BitSet set=new BitSet();
    set.or(constraints[i]);
    int subCladeCount=0;
    for (int j=i + 1; j < f.length; j++) {
      int parent=parent(constraints,j);
      if (parent == i) {
        subCladeCount+=1;
        set.andNot(constraints[j]);
      }
    }
    f[i]=set.cardinality() + subCladeCount - 2;
  }
}

private static void computeF ( BitSet [ ] constraints , int [ ] f ) { for ( int i = 0 ; i < f . length ; i ++ ) { BitSet set = new BitSet ( ) ; set . or ( constraints [ i ] ) ; int subCladeCount = 0 ; for ( int j = i + 1 ; j < f . length ; j ++ ) { int parent = parent ( constraints , j ) ; if ( parent == i ) { subCladeCount += 1 ; set . andNot ( constraints [ j ] ) ; } } f [ i ] = set . cardinality ( ) + subCladeCount - 2 ; } }
compute the number of ' free ' nodes under each calibration
