private void extendPath ( PathPointer unique_path , int unique_depth , float zero_fraction , float one_fraction , int feature_index ) { unique_path . get ( unique_depth ) . feature_index = feature_index ; unique_path . get ( unique_depth ) . zero_fraction = zero_fraction ; unique_path . get ( unique_depth ) . one_fraction = one_fraction ; unique_path . get ( unique_depth ) . pweight = ( unique_depth == 0 ? 1.0f : 0.0f ) ; for ( int i = unique_depth - 1 ; i >= 0 ; i -- ) { unique_path . get ( i + 1 ) . pweight += one_fraction * unique_path . get ( i ) . pweight * ( i + 1 ) / ( float ) ( unique_depth + 1 ) ; unique_path . get ( i ) . pweight = zero_fraction * unique_path . get ( i ) . pweight * ( unique_depth - i ) / ( float ) ( unique_depth + 1 ) ; } }
extend our decision path with a fraction of one and zero extensions