Expand range of global motion params

Extend the range of the non-translational parameters,
from [-1/8, +1/8] (including both endpoints) to [-1/4, +1/4)
(excluding +1/4)
diff --git a/av1/common/mv.h b/av1/common/mv.h
index 2878005..e04b45f 100644
--- a/av1/common/mv.h
+++ b/av1/common/mv.h
@@ -379,7 +379,7 @@
 
 #define SUBEXPFIN_K 3
 
-#if CONFIG_EXTENDED_WARP_PREDICTION
+#if CONFIG_EXTENDED_WARP_PREDICTION || CONFIG_IMPROVED_GLOBAL_MOTION
 #define GM_TRANS_PREC_BITS 3
 #define GM_ABS_TRANS_BITS 14
 #define GM_ABS_TRANS_ONLY_BITS (GM_ABS_TRANS_BITS - GM_TRANS_PREC_BITS + 3)
@@ -392,7 +392,11 @@
 #if CONFIG_EXT_WARP_FILTER
 #define GM_ABS_ALPHA_BITS 9
 #else
+#if CONFIG_IMPROVED_GLOBAL_MOTION
+#define GM_ABS_ALPHA_BITS 8
+#else
 #define GM_ABS_ALPHA_BITS 7
+#endif  // CONFIG_IMPROVED_GLOBAL_MOTION
 #endif  // CONFIG_EXT_WARP_FILTER
 #define GM_ALPHA_PREC_DIFF (WARPEDMODEL_PREC_BITS - GM_ALPHA_PREC_BITS)
 #define GM_ALPHA_DECODE_FACTOR (1 << GM_ALPHA_PREC_DIFF)
@@ -409,7 +413,7 @@
 #define GM_ABS_ALPHA_BITS 12
 #define GM_ALPHA_PREC_DIFF (WARPEDMODEL_PREC_BITS - GM_ALPHA_PREC_BITS)
 #define GM_ALPHA_DECODE_FACTOR (1 << GM_ALPHA_PREC_DIFF)
-#endif  // CONFIG_EXTENDED_WARP_PREDICTION
+#endif  // CONFIG_EXTENDED_WARP_PREDICTION || CONFIG_IMPROVED_GLOBAL_MOTION
 
 #define GM_ROW3HOMO_PREC_BITS 16
 #define GM_ABS_ROW3HOMO_BITS 11
@@ -417,7 +421,11 @@
   (WARPEDMODEL_ROW3HOMO_PREC_BITS - GM_ROW3HOMO_PREC_BITS)
 #define GM_ROW3HOMO_DECODE_FACTOR (1 << GM_ROW3HOMO_PREC_DIFF)
 
+#if CONFIG_IMPROVED_GLOBAL_MOTION
+#define GM_TRANS_MAX ((1 << GM_ABS_TRANS_BITS) - 1)
+#else
 #define GM_TRANS_MAX (1 << GM_ABS_TRANS_BITS)
+#endif  // CONFIG_IMPROVED_GLOBAL_MOTION
 #if CONFIG_EXT_WARP_FILTER
 #define GM_ALPHA_MAX ((1 << GM_ABS_ALPHA_BITS) - 1)
 #else
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 6836712..0a4a5ea 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -6151,9 +6151,9 @@
 
   if (type >= TRANSLATION) {
 #if CONFIG_IMPROVED_GLOBAL_MOTION
-    const int trans_bits = GM_ABS_TRANS_BITS;
     const int trans_dec_factor = GM_TRANS_DECODE_FACTOR;
     const int trans_prec_diff = GM_TRANS_PREC_DIFF;
+    const int trans_max = GM_TRANS_MAX;
 #else
     const int trans_bits = (type == TRANSLATION)
 #if CONFIG_FLEX_MVRES
@@ -6177,14 +6177,15 @@
                                     ? GM_TRANS_ONLY_PREC_DIFF + !allow_hp
 #endif
                                     : GM_TRANS_PREC_DIFF;
+    const int trans_max = (1 << trans_bits);
 #endif  // CONFIG_IMPROVED_GLOBAL_MOTION
 
     params->wmmat[0] = aom_rb_read_signed_primitive_refsubexpfin(
-                           rb, (1 << trans_bits) + 1, SUBEXPFIN_K,
+                           rb, trans_max + 1, SUBEXPFIN_K,
                            (ref_params->wmmat[0] >> trans_prec_diff)) *
                        trans_dec_factor;
     params->wmmat[1] = aom_rb_read_signed_primitive_refsubexpfin(
-                           rb, (1 << trans_bits) + 1, SUBEXPFIN_K,
+                           rb, trans_max + 1, SUBEXPFIN_K,
                            (ref_params->wmmat[1] >> trans_prec_diff)) *
                        trans_dec_factor;
   }
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index afc3c26..eda9230 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -4548,8 +4548,8 @@
 
   if (type >= TRANSLATION) {
 #if CONFIG_IMPROVED_GLOBAL_MOTION
-    const int trans_bits = GM_ABS_TRANS_BITS;
     const int trans_prec_diff = GM_TRANS_PREC_DIFF;
+    const int trans_max = GM_TRANS_MAX;
 #else
 #if CONFIG_FLEX_MVRES
     const int trans_bits = (type == TRANSLATION)
@@ -4566,14 +4566,15 @@
                                     ? GM_TRANS_ONLY_PREC_DIFF + !allow_hp
                                     : GM_TRANS_PREC_DIFF;
 #endif  // CONFIG_FLEX_MVRES
+    const int trans_max = (1 << trans_bits);
 #endif  // CONFIG_IMPROVED_GLOBAL_MOTION
 
     aom_wb_write_signed_primitive_refsubexpfin(
-        wb, (1 << trans_bits) + 1, SUBEXPFIN_K,
+        wb, trans_max + 1, SUBEXPFIN_K,
         (ref_params->wmmat[0] >> trans_prec_diff),
         (params->wmmat[0] >> trans_prec_diff));
     aom_wb_write_signed_primitive_refsubexpfin(
-        wb, (1 << trans_bits) + 1, SUBEXPFIN_K,
+        wb, trans_max + 1, SUBEXPFIN_K,
         (ref_params->wmmat[1] >> trans_prec_diff),
         (params->wmmat[1] >> trans_prec_diff));
   }
diff --git a/av1/encoder/global_motion_facade.c b/av1/encoder/global_motion_facade.c
index 648ca60..1728311 100644
--- a/av1/encoder/global_motion_facade.c
+++ b/av1/encoder/global_motion_facade.c
@@ -45,6 +45,7 @@
 #if CONFIG_IMPROVED_GLOBAL_MOTION
   const int trans_bits = GM_ABS_TRANS_BITS;
   const int trans_prec_diff = GM_TRANS_PREC_DIFF;
+  const int trans_max = (1 << trans_bits) - 1;
 #else
   const int trans_bits = (gm->wmtype == TRANSLATION)
 #if CONFIG_FLEX_MVRES
@@ -60,6 +61,7 @@
                                   ? GM_TRANS_ONLY_PREC_DIFF + !allow_hp
 #endif
                                   : GM_TRANS_PREC_DIFF;
+  const int trans_max = (1 << trans_bits);
 #endif  // CONFIG_IMPROVED_GLOBAL_MOTION
 
   switch (gm->wmtype) {
@@ -85,12 +87,10 @@
             (gm->wmmat[5] >> GM_ALPHA_PREC_DIFF) - (1 << GM_ALPHA_PREC_BITS));
       }
       params_cost += aom_count_signed_primitive_refsubexpfin(
-          (1 << trans_bits) + 1, SUBEXPFIN_K,
-          (ref_gm->wmmat[0] >> trans_prec_diff),
+          trans_max + 1, SUBEXPFIN_K, (ref_gm->wmmat[0] >> trans_prec_diff),
           (gm->wmmat[0] >> trans_prec_diff));
       params_cost += aom_count_signed_primitive_refsubexpfin(
-          (1 << trans_bits) + 1, SUBEXPFIN_K,
-          (ref_gm->wmmat[1] >> trans_prec_diff),
+          trans_max + 1, SUBEXPFIN_K, (ref_gm->wmmat[1] >> trans_prec_diff),
           (gm->wmmat[1] >> trans_prec_diff));
       AOM_FALLTHROUGH_INTENDED;
     case IDENTITY: break;