I’m looking at the source code. I see a hardcoded variable bst_float kRtEps = 1e-6f in base.h
In the code it’s used in the condition whether to split or not to split. For example, in line 650 of src/tree/updater_colmaker.cc:
if (e.best.loss_chg > kRtEps) ...
Also there is gamma regularization parameter, which is same as min_split_loss, that is used in prunning only.
So, my question is: is kRtEps effectively the lowest bound for gamma?