sig
  type t = {
    method_order : int;
    stages : int;
    stage_values : Sundials.RealArray2.t;
    stage_times : Sundials.RealArray.t;
    coefficients : Sundials.RealArray.t;
    embedding : (int * Sundials.RealArray.t) option;
  }
  type erk_table =
      HeunEuler_2_1_2
    | BogackiShampine_4_2_3
    | ARK324L2SA_ERK_4_2_3
    | Zonneveld_5_3_4
    | ARK436L2SA_ERK_6_3_4
    | SayfyAburub_6_3_4
    | CashKarp_6_4_5
    | Fehlberg_6_4_5
    | DormandPrince_7_4_5
    | ARK548L2SA_ERK_8_4_5
    | Verner_8_5_6
    | Fehlberg_13_7_8
    | Knoth_Wolke_3_3
    | ARK437L2SA_ERK_7_3_4
    | ARK548L2SAb_ERK_8_4_5
  type dirk_table =
      SDIRK_2_1_2
    | Billington_3_3_2
    | TRBDF2_3_3_2
    | Kvaerno_4_2_3
    | ARK324L2SA_DIRK_4_2_3
    | Cash_5_2_4
    | Cash_5_3_4
    | SDIRK_5_3_4
    | Kvaerno_5_3_4
    | ARK436L2SA_DIRK_6_3_4
    | Kvaerno_7_4_5
    | ARK548L2SA_DIRK_8_4_5
    | ARK437L2SA_DIRK_7_3_4
    | ARK548L2SAb_DIRK_8_4_5
  type ark_table = ARK_4_2_3 | ARK_6_3_4 | ARK_8_4_5
  val load_erk : Arkode.ButcherTable.erk_table -> Arkode.ButcherTable.t
  val load_dirk : Arkode.ButcherTable.dirk_table -> Arkode.ButcherTable.t
  val write : ?logfile:Sundials.Logfile.t -> Arkode.ButcherTable.t -> unit
  exception ButcherTableCheckFailed
  val check_order :
    ?outfile:Sundials.Logfile.t ->
    Arkode.ButcherTable.t -> int * int option * bool
  val check_ark_order :
    ?outfile:Sundials.Logfile.t ->
    Arkode.ButcherTable.t -> Arkode.ButcherTable.t -> int * int option * bool
end