///|
/// Deterministic kernels used by the benchmark CLI and regression tests.
pub fn benchmark_distribution_kernel(
  model : ReliabilityModel,
  grid : Array[Double],
  repetitions : Int,
) -> Double {
  let mut checksum = 0.0
  for _ in 0.. Double {
  let mut checksum = 0.0
  for _ in 0.. Double {
  let mut checksum = 0.0
  for _ in 0.. Double {
  let mut checksum = 0.0
  for _ in 0.. BenchmarkResult {
  let throughput = if elapsed_micros <= 0 {
    0.0
  } else {
    iterations.to_double() * 1.0e6 / elapsed_micros.to_double()
  }
  benchmark_result(
    name~,
    iterations~,
    elapsed_micros~,
    checksum~,
    operations_per_second=throughput,
  )
}

///|
pub fn benchmark_dataset(size : Int) -> Array[LifeObservation] {
  let failures = sample_weibull(20260818, 100.0, 1.8, size)
  failures.map(value => failure(value))
}

///|
pub fn benchmark_grid(size : Int) -> Array[Double] {
  linspace(0.1, 500.0, size)
}