sig
  type strategy = float -> float -> float
  type cost =
      Archimedes.Matrix.rectangle ->
      float -> float -> float -> float -> float -> float -> float
  val xy :
    ?tlog:bool ->
    ?n:int ->
    ?strategy:Archimedes.Sampler.strategy ->
    ?cost:Archimedes.Sampler.cost ->
    (float -> float * float) -> float -> float -> float array * float array
  val x :
    ?tlog:bool ->
    ?n:int ->
    ?strategy:Archimedes.Sampler.strategy ->
    ?cost:Archimedes.Sampler.cost ->
    (float -> float) -> float -> float -> float array * float array
  val strategy_midpoint : Archimedes.Sampler.strategy
  val strategy_random : Archimedes.Sampler.strategy
  val strategy_center_random : Archimedes.Sampler.strategy
  val cost_angle : Archimedes.Sampler.cost
  val cost_angle_dist : Archimedes.Sampler.cost
  val cost_angle_log : bool -> bool -> Archimedes.Sampler.cost
end