MCPcopy Create free account
hub / github.com/antmachineintelligence/mtgbmcode / ObtainMinMaxSum

Function ObtainMinMaxSum

include/LightGBM/utils/common.h:798–838  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

796// this is useful for checking weight requirements.
797template <typename T1, typename T2>
798inline static void ObtainMinMaxSum(const T1 *w, int nw, T1 *mi, T1 *ma, T2 *su) {
799 T1 minw;
800 T1 maxw;
801 T1 sumw;
802 int i;
803 if (nw & 1) { // odd
804 minw = w[0];
805 maxw = w[0];
806 sumw = w[0];
807 i = 2;
808 } else { // even
809 if (w[0] < w[1]) {
810 minw = w[0];
811 maxw = w[1];
812 } else {
813 minw = w[1];
814 maxw = w[0];
815 }
816 sumw = w[0] + w[1];
817 i = 3;
818 }
819 for (; i < nw; i += 2) {
820 if (w[i - 1] < w[i]) {
821 minw = std::min(minw, w[i - 1]);
822 maxw = std::max(maxw, w[i]);
823 } else {
824 minw = std::min(minw, w[i]);
825 maxw = std::max(maxw, w[i - 1]);
826 }
827 sumw += w[i - 1] + w[i];
828 }
829 if (mi != nullptr) {
830 *mi = minw;
831 }
832 if (ma != nullptr) {
833 *ma = maxw;
834 }
835 if (su != nullptr) {
836 *su = static_cast<T2>(sumw);
837 }
838}
839
840inline static std::vector<uint32_t> EmptyBitset(int n) {
841 int size = n / 32;

Callers 6

InitMethod · 0.50
InitMethod · 0.50
InitMethod · 0.50
InitMethod · 0.50
InitMethod · 0.50
InitMethod · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected