///|
/// Deterministic native benchmark workload. Wall-clock timing is supplied by
/// the host shell so the package itself remains portable and dependency-free.
fn main {
  let curve = try! @easings.Bezier::new(0.25, 0.1, 0.25, 1.0)
  let tween = try! @easings.Tween::new(
    0.0,
    320.0,
    1.0,
    curve=@easings.Curve::bezier(curve),
  )
  let track = try! @easings.ScalarTrack::new([
    try! @easings.keyframe(0.0, 0.0),
    try! @easings.keyframe(
      0.5,
      1.0,
      curve=@easings.Curve::builtin(@easings.SineInOut),
    ),
    try! @easings.keyframe(1.0, 0.0),
  ])
  let spline = try! @easings.Spline2D::new([
    @easings.point2(x=0.0, y=0.0),
    @easings.point2(x=2.0, y=4.0),
    @easings.point2(x=5.0, y=0.0),
    @easings.point2(x=8.0, y=3.0),
  ])
  let config = try! @easings.AdaptiveSamplingConfig::new(0.00001, max_depth=12)
  let adaptive = try! @easings.adaptive_sample(
    fn(time) { time * time },
    0.0,
    1.0,
    config,
  )
  let mut bezier_checksum = 0.0
  let mut tween_checksum = 0.0
  let mut track_checksum = 0.0
  let mut spline_checksum = 0.0
  let iterations = 200000
  for index in 0.. \{sampled[sampled.length() - 1].value().to_string()}",
  )
}