sig
  type params = {
    iters_fixed_T : int;
    step_size : float;
    k : float;
    t_initial : float;
    mu_t : float;
    t_min : float;
  }
  val solve :
    Gsl_rng.t ->
    '->
    energ_func:('-> float) ->
    step_func:(Gsl_rng.t -> '-> float -> 'a) ->
    ?print_func:('-> unit) -> Gsl_siman.params -> 'a
end