public static double dataDL(double expFPOverErr,double cover,double uncover,double fp,double fn){
  double totalBits=Utils.log2(cover + uncover + 1.0);
  double coverBits, uncoverBits;
  double expErr;
  if (Utils.gr(cover,uncover)) {
    expErr=expFPOverErr * (fp + fn);
    coverBits=subsetDL(cover,fp,expErr / cover);
    uncoverBits=Utils.gr(uncover,0.0) ? subsetDL(uncover,fn,fn / uncover) : 0.0;
  }
 else {
    expErr=(1.0 - expFPOverErr) * (fp + fn);
    coverBits=Utils.gr(cover,0.0) ? subsetDL(cover,fp,fp / cover) : 0.0;
    uncoverBits=subsetDL(uncover,fn,expErr / uncover);
  }
  return (totalBits + coverBits + uncoverBits);
}

public static double dataDL ( double expFPOverErr , double cover , double uncover , double fp , double fn ) { double totalBits = Utils . log2 ( cover + uncover + 1.0 ) ; double coverBits , uncoverBits ; double expErr ; if ( Utils . gr ( cover , uncover ) ) { expErr = expFPOverErr * ( fp + fn ) ; coverBits = subsetDL ( cover , fp , expErr / cover ) ; uncoverBits = Utils . gr ( uncover , 0.0 ) ? subsetDL ( uncover , fn , fn / uncover ) : 0.0 ; } else { expErr = ( 1.0 - expFPOverErr ) * ( fp + fn ) ; coverBits = Utils . gr ( cover , 0.0 ) ? subsetDL ( cover , fp , fp / cover ) : 0.0 ; uncoverBits = subsetDL ( uncover , fn , expErr / uncover ) ; } return ( totalBits + coverBits + uncoverBits ) ; }
the description length of data given the parameters of the data based on the ruleset . < p > details see quinlan : " mdl and categorical theories ( continued ) " , ml95 < p >
