#[derive(Clone, Copy, Debug)]
pub struct UnivariateSplit {
pub weights: &'static [f64],
pub means: &'static [f64],
pub sigma: f64,
}
static LIBRARY: [UnivariateSplit; 14] = [
UnivariateSplit {
weights: &[5e-1, 5e-1],
means: &[-5.924566950883456e-1, 5.924566950883456e-1],
sigma: 8.056022991805541e-1,
},
UnivariateSplit {
weights: &[
2.1148105118924626e-1,
5.770378976215075e-1,
2.1148105118924626e-1,
],
means: &[-1.128427913490078e0, 0e0, 1.128427913490078e0],
sigma: 6.792800562031741e-1,
},
UnivariateSplit {
weights: &[
9.774289733860012e-2,
4.022571026613999e-1,
4.022571026613999e-1,
9.774289733860012e-2,
],
means: &[
-1.523744584192022e0,
-4.762536843600862e-1,
4.762536843600862e-1,
1.523744584192022e0,
],
sigma: 6.030286898148022e-1,
},
UnivariateSplit {
weights: &[
4.827179190625536e-2,
2.49619973547412e-1,
4.042164690926653e-1,
2.49619973547412e-1,
4.827179190625536e-2,
],
means: &[
-1.8390689395552644e0,
-8.604153052026345e-1,
0e0,
8.604153052026345e-1,
1.8390689395552644e0,
],
sigma: 5.512514634364102e-1,
},
UnivariateSplit {
weights: &[
2.5027032362934482e-2,
1.4996505210629618e-1,
3.2500791553076935e-1,
3.2500791553076935e-1,
1.4996505210629618e-1,
2.5027032362934482e-2,
],
means: &[
-2.1041072597434916e0,
-1.1817745801886683e0,
-3.8479762858851696e-1,
3.8479762858851696e-1,
1.1817745801886683e0,
2.1041072597434916e0,
],
sigma: 5.130986332875812e-1,
},
UnivariateSplit {
weights: &[
1.3473830246686011e-2,
8.956735843118202e-2,
2.3657901702873985e-1,
3.207595885867842e-1,
2.3657901702873985e-1,
8.956735843118202e-2,
1.3473830246686011e-2,
],
means: &[
-2.334455089218924e0,
-1.4586579137518876e0,
-7.097614374332678e-1,
0e0,
7.097614374332678e-1,
1.4586579137518876e0,
2.334455089218924e0,
],
sigma: 4.8336660766755946e-1,
},
UnivariateSplit {
weights: &[
7.47916153197379e-3,
5.371714659210443e-2,
1.6388504587258299e-1,
2.749186460033388e-1,
2.749186460033388e-1,
1.6388504587258299e-1,
5.371714659210443e-2,
7.47916153197379e-3,
],
means: &[
-2.5392290789945875e0,
-1.7025523727629626e0,
-9.92058805320598e-1,
-3.265478549464021e-1,
3.265478549464021e-1,
9.92058805320598e-1,
1.7025523727629626e0,
2.5392290789945875e0,
],
sigma: 4.592594696550158e-1,
},
UnivariateSplit {
weights: &[
4.259368334001569e-3,
3.2482918141023755e-2,
1.1064245569135389e-1,
2.1748974576715682e-1,
2.702510241329278e-1,
2.1748974576715682e-1,
1.1064245569135389e-1,
3.2482918141023755e-2,
4.259368334001569e-3,
],
means: &[
-2.7242392354040854e0,
-1.9210077918727382e0,
-1.2422630937802974e0,
-6.115996364086348e-1,
0e0,
6.115996364086348e-1,
1.2422630937802974e0,
1.9210077918727382e0,
2.7242392354040854e0,
],
sigma: 4.3913573787823457e-1,
},
UnivariateSplit {
weights: &[
2.4796112832677158e-3,
1.9837172820827767e-2,
7.372111056366933e-2,
1.6391822748973e-1,
2.400438778425052e-1,
2.400438778425052e-1,
1.6391822748973e-1,
7.372111056366933e-2,
1.9837172820827767e-2,
2.4796112832677158e-3,
],
means: &[
-2.8934395938584236e0,
-2.119227408756427e0,
-1.467389590146299e0,
-8.652885979859235e-1,
-2.861491163456929e-1,
2.861491163456929e-1,
8.652885979859235e-1,
1.467389590146299e0,
2.119227408756427e0,
2.8934395938584236e0,
],
sigma: 4.2196242790118543e-1,
},
UnivariateSplit {
weights: &[
1.471420158265756e-3,
1.2240425289027341e-2,
4.8825266364636875e-2,
1.198414974303585e-1,
1.9971511609060083e-1,
2.3581254933422147e-1,
1.9971511609060083e-1,
1.198414974303585e-1,
4.8825266364636875e-2,
1.2240425289027341e-2,
1.471420158265756e-3,
],
means: &[
-3.049667430033239e0,
-2.3009528004231616e0,
-1.6723502880719883e0,
-1.094321488382714e0,
-5.41664168050244e-1,
0e0,
5.41664168050244e-1,
1.094321488382714e0,
1.6723502880719883e0,
2.3009528004231616e0,
3.049667430033239e0,
],
sigma: 4.070525752957795e-1,
},
UnivariateSplit {
weights: &[
8.881202630111685e-4,
7.631444359228776e-3,
3.227947043294205e-2,
8.593140352259405e-2,
1.5901754275473012e-1,
2.1425201866749383e-1,
2.1425201866749383e-1,
1.5901754275473012e-1,
8.593140352259405e-2,
3.227947043294205e-2,
7.631444359228776e-3,
8.881202630111685e-4,
],
means: &[
-3.195003053291169e0,
-2.4689387152716726e0,
-1.8607056188714444e0,
-1.3033931574163766e0,
-7.729873796668987e-1,
-2.5625375531817307e-1,
2.5625375531817307e-1,
7.729873796668987e-1,
1.3033931574163766e0,
1.8607056188714444e0,
2.4689387152716726e0,
3.195003053291169e0,
],
sigma: 3.9392847434455225e-1,
},
UnivariateSplit {
weights: &[
5.441933226246798e-4,
4.805671571868656e-3,
2.1357375050178963e-2,
6.0856164888452254e-2,
1.2282847707769283e-1,
1.843332120561161e-1,
2.10549812066133e-1,
1.843332120561161e-1,
1.2282847707769283e-1,
6.0856164888452254e-2,
2.1357375050178963e-2,
4.805671571868656e-3,
5.441933226246798e-4,
],
means: &[
-3.3310900886534567e0,
-2.6253271920751304e0,
-2.035161757435209e0,
-1.4959602325872816e0,
-9.846549598392709e-1,
-4.888226962569674e-1,
0e0,
4.888226962569674e-1,
9.846549598392709e-1,
1.4959602325872816e0,
2.035161757435209e0,
2.6253271920751304e0,
3.3310900886534567e0,
],
sigma: 3.822456090403123e-1,
},
UnivariateSplit {
weights: &[
3.380141997885757e-4,
3.0553201454316453e-3,
1.4164608626087767e-2,
4.2764048908819255e-2,
9.28718765571429e-2,
1.5249788472154377e-1,
1.9430824684118614e-1,
1.9430824684118614e-1,
1.5249788472154377e-1,
9.28718765571429e-2,
4.2764048908819255e-2,
1.4164608626087767e-2,
3.0553201454316453e-3,
3.380141997885757e-4,
],
means: &[
-3.459188999240793e0,
-2.771769663735716e0,
-2.1977918438503528e0,
-1.6746279506734372e0,
-1.179993966523547e0,
-7.020772008201291e-1,
-2.330865833704965e-1,
2.330865833704965e-1,
7.020772008201291e-1,
1.179993966523547e0,
1.6746279506734372e0,
2.1977918438503528e0,
2.771769663735716e0,
3.459188999240793e0,
],
sigma: 3.717478558152139e-1,
},
UnivariateSplit {
weights: &[
2.1257231252390233e-4,
1.9603680467700432e-3,
9.42636799106789e-3,
2.9912415058702974e-2,
6.916523136977962e-2,
1.2258363634676506e-1,
1.71197927477646e-1,
1.9108296279348902e-1,
1.71197927477646e-1,
1.2258363634676506e-1,
6.916523136977962e-2,
2.9912415058702974e-2,
9.42636799106789e-3,
1.9603680467700432e-3,
2.1257231252390233e-4,
],
means: &[
-3.5802927175699226e0,
-2.909563979991977e0,
-2.3502154276199354e0,
-1.8414068554498033e0,
-1.3615214011111707e0,
-8.992274098378706e-1,
-4.472216988975605e-1,
0e0,
4.472216988975605e-1,
8.992274098378706e-1,
1.3615214011111707e0,
1.8414068554498033e0,
2.3502154276199354e0,
2.909563979991977e0,
3.5802927175699226e0,
],
sigma: 3.622399826257431e-1,
},
];
pub const MIN_SPLIT_COMPONENTS: usize = 2;
pub const MAX_SPLIT_COMPONENTS: usize = 15;
pub fn univariate_split(k: usize) -> Option<&'static UnivariateSplit> {
if !(MIN_SPLIT_COMPONENTS..=MAX_SPLIT_COMPONENTS).contains(&k) {
return None;
}
Some(&LIBRARY[k - MIN_SPLIT_COMPONENTS])
}