reference_directions.bend relies on unsafe/foreign
raw source on the hub · import 0xcd07e24a626a62e74603d48f436cd679/reference_directions.bend as Reference_directions
ReferenceDirections — C# Unsga3.Utilities.ReferenceDirections. Das–Dennis structured points on the unit simplex. Count = C(p + M - 1, M - 1); M == 1n → 1n. Points match C# recurse order (first coordinate increases 0..p, DFS).
2 imports
import Base import ./util.bend as Util
Types
type DasCtx source · line 49 · raw
Data
k-th composition of p into m parts, C# DFS order (first coord
increases 0..p). Enumerating range(Count) makes |DasDennis| = Count
by construction. @unsafe: Bool dispatch on k < count(rest) then
either shrinks M or advances i; fuel is a bound, not the shrink key.
DasCtx@m:Nat -> @p:Nat -> DasCtx
Definitions
def binomial source · line 9 · raw
@+n:Nat -> @+k:Nat -> Nat
def count.succ source · line 12 · raw
@+rest:Nat -> @+partitions:Nat -> @z:Bool -> Nat
def count.go source · line 19 · raw
@+rest:Nat -> @+partitions:Nat -> Nat
def count source · line 24 · raw
@number_of_objectives:Nat -> @partitions:Nat -> Nat
Number of Das–Dennis points. M == 0n is a guard (0). M == 1n → 1. M == 1n+rest → if rest == 0 then 1 else C(p + rest, rest) = C(p + M - 1, M - 1).
def to_dir source · line 31 · raw
@+p:Nat -> @comps:List<&2, Nat> -> List<&2, F32>
def to_dirs source · line 38 · raw
@+p:Nat -> @rows:List<&2, List<&2, Nat>> -> List<&2, List<&2, F32>>
def nth_comp.fallback source · line 55 · raw
@m:Nat -> @p:Nat -> List<&2, Nat>
def nth_comp source · line 93 · raw
@+m:Nat -> @+p:Nat -> @+k:Nat -> List<&2, Nat>
def nth_row source · line 96 · raw
@+ctx:DasCtx -> @+k:Nat -> List<&2, Nat>
def comps_all source · line 101 · raw
@+m:Nat -> @+p:Nat -> List<&2, List<&2, Nat>>
def das_dennis.from source · line 104 · raw
@+m:Nat -> @+p:Nat -> @rest:Nat -> List<&2, List<&2, F32>>
def das_dennis.p0 source · line 111 · raw
@rest:Nat -> List<&2, List<&2, F32>>
def das_dennis source · line 119 · raw
@number_of_objectives:Nat -> @partitions:Nat -> List<&2, List<&2, F32>>
Generate directions. M == 1n → [[1.0]]. M == 0n → Nil{}. p == 0n → Nil{} when M > 1.
Unsafe
unsafe nth_comp.go source · line 64 · raw
@ready:Bool -> @take:Bool -> @fuel:Nat -> @+m:Nat -> @+p:Nat -> @+k:Nat -> @+i:Nat -> @left:Nat -> @c:Nat -> List<&2, Nat>