diff --git a/src/plugins/e-acsl/src/code_generator/gmp.ml b/src/plugins/e-acsl/src/code_generator/gmp.ml
index 9ab2527d36b0e264d329a301232111659060dda0..1048b8a9d3f2e2d363e350ab6bc98a329abfb018 100644
--- a/src/plugins/e-acsl/src/code_generator/gmp.ml
+++ b/src/plugins/e-acsl/src/code_generator/gmp.ml
@@ -159,6 +159,14 @@ module Z = struct
 end
 
 module Q = struct
+  let name_arith_bop = function
+    | PlusA -> "__gmpq_add"
+    | MinusA -> "__gmpq_sub"
+    | Mult -> "__gmpq_mul"
+    | Div -> "__gmpq_div"
+    | Mod | Lt | Gt | Le | Ge | Eq | Ne | BAnd | BXor | BOr | LAnd | LOr
+    | Shiftlt | Shiftrt | PlusPI | MinusPI | MinusPP -> assert false
+
   exception Not_a_decimal of string
   exception Is_a_float
 
diff --git a/src/plugins/e-acsl/src/code_generator/gmp.mli b/src/plugins/e-acsl/src/code_generator/gmp.mli
index e8756f445154230bef12e807356e18a9a486a8de..219cb2a108adafbc13ca9a962e8684116c261702 100644
--- a/src/plugins/e-acsl/src/code_generator/gmp.mli
+++ b/src/plugins/e-acsl/src/code_generator/gmp.mli
@@ -48,6 +48,14 @@ module Z : sig
 
 end
 
+module Q : sig
+
+  val name_arith_bop: binop -> string
+  (** [name_of_mpz_arith_bop bop] returns the name of the GMP function on integer
+      corresponding to the [bop] arithmetic operation. *)
+
+end
+
 val normalize_str: string -> string
 (** Normalize the string so that it fits the representation used by the
     underlying real library. For example, "0.1" is a real number in ACSL
diff --git a/src/plugins/e-acsl/src/code_generator/rational.ml b/src/plugins/e-acsl/src/code_generator/rational.ml
index b53f8d76ad055a68375de1147dcec798731cca4d..14bb46e10674094b3c3f65695e30234e61963e41 100644
--- a/src/plugins/e-acsl/src/code_generator/rational.ml
+++ b/src/plugins/e-acsl/src/code_generator/rational.ml
@@ -111,16 +111,8 @@ let new_var_and_init ~loc ?scope ?name env kf t_opt mk_stmts =
     (Gmp_types.Q.t ())
     (fun v e -> Gmp.init ~loc e :: mk_stmts v e)
 
-let name_arith_bop = function
-  | PlusA -> "__gmpq_add"
-  | MinusA -> "__gmpq_sub"
-  | Mult -> "__gmpq_mul"
-  | Div -> "__gmpq_div"
-  | Mod | Lt | Gt | Le | Ge | Eq | Ne | BAnd | BXor | BOr | LAnd | LOr
-  | Shiftlt | Shiftrt | PlusPI | MinusPI | MinusPP -> assert false
-
 let binop ~loc bop e1 e2 env kf t_opt =
-  let name = name_arith_bop bop in
+  let name = Gmp.Q.name_arith_bop bop in
   (* TODO: [t1_opt] and [t2_opt] could be provided when creating [e1] and
      [e2] *)
   let e1, env = Gmp_gen.Q.create ~loc None env kf e1 in