def beta.pick
import unified-nsga-iii@0.2.2.0/sbx.bend as Sbximport Base
46# C#: if rand <= 1/alpha then (rand*alpha)^(1/(η+1)) else (1/(2-rand*alpha))^(1/(η+1)).
47def beta.pick(+rand: F32, +alpha: F32, +inv: F32, lo: Bool) -> F32:
48 match lo:
49 case True{}:
50 F32.pow(F32.mul(rand, alpha), inv)
51 case False{}:
52 F32.pow(F32.div(1.0, F32.sub(2.0, F32.mul(rand, alpha))), inv)