@Override void write( AutoBuffer bs ) { bs.put1('E'); // Node indicator assert Short.MIN_VALUE <= _column && _column < Short.MAX_VALUE; bs.put2((short)_column); bs.put4f(split_value()); int skip = _l.size(); // Drop down the amount to skip over the left column if( skip <= 254 ) bs.put1(skip); else { bs.put1(0); bs.put3(skip); } _l.write(bs); _r.write(bs); } public boolean isIn(Row row) { return row.getEncodedColumnValue(_column) == _split; }
@Override void write( AutoBuffer bs ) { bs.put1('S'); // Node indicator assert Short.MIN_VALUE <= _column && _column < Short.MAX_VALUE; bs.put2((short) _column); bs.put4f(split_value()); int skip = _l.size(); // Drop down the amount to skip over the left column if( skip <= 254 ) bs.put1(skip); else { bs.put1(0); if (! ((-1<<24) <= skip && skip < (1<<24))) throw H2O.fail("Trees have grown too deep. Use BigData RF or limit the tree depth for your model. For more information, contact support: support@h2o.ai"); bs.put3(skip); } _l.write(bs); _r.write(bs); } @Override public int size_impl( ) {
result.put3(skip);
if(leftSize < 256) {ab.put1( leftSize); size += 1;} else if (leftSize < 65535) {ab.put2((short)leftSize); size += 2;} else if (leftSize < (1<<24)) {ab.put3( leftSize); size += 3;} else {ab.put4( leftSize); size += 4;}// 1<<31-1
if(leftSize < 256) {ab.put1( leftSize); size += 1;} else if (leftSize < 65535) {ab.put2((short)leftSize); size += 2;} else if (leftSize < (1<<24)) {ab.put3( leftSize); size += 3;} else {ab.put4( leftSize); size += 4;}// 1<<31-1
if(sz < 256) ab.put1( sz); else if (sz < 65535) ab.put2((short)sz); else if (sz < (1<<24)) ab.put3( sz); else ab.put4( sz); // 1<<31-1
if(sz < 256) ab.put1( sz); else if (sz < 65535) ab.put2((short)sz); else if (sz < (1<<24)) ab.put3( sz); else ab.put4( sz); // 1<<31-1
if(sz < 256) ab.put1( sz); else if (sz < 65535) ab.put2((short)sz); else if (sz < (1<<24)) ab.put3( sz); else ab.put4( sz); // 1<<31-1