diff --git a/testing/chameleon_ztesting.c b/testing/chameleon_ztesting.c
index 753b6097f41400910adc013ab94cd1fc72d749bc..bbe4d20ea9aa0144b2dcc4d6a5b4efcaa075aae4 100644
--- a/testing/chameleon_ztesting.c
+++ b/testing/chameleon_ztesting.c
@@ -98,6 +98,11 @@ parameter_t parameters[] = {
     { "mode",  "Mode that specifies the eigen/singular values in xlatms", -40, PARAM_OPTION | PARAM_INPUT | PARAM_OUTPUT, 2,  4, TestValInt,       {0}, NULL, pread_int,       sprint_int       },
     { "cond",  "Conditional number of the matrix used by xlatms",         -41, PARAM_OPTION | PARAM_INPUT | PARAM_OUTPUT, 2, 13, TestValDouble,    {0}, NULL, pread_double,    sprint_double    },
 
+#if defined(PRECISION_z) || defined(PRECISION_d)
+    { NULL, "Mixed precision Options", 0, PARAM_OPTION, 0, 0, 0, {0}, NULL, NULL, NULL },
+    { "appaccuracy", "Application requested accuracy", -60, PARAM_OPTION | PARAM_INPUT | PARAM_OUTPUT, 1, 13, TestValFixdbl, {0.}, NULL, pread_fixdbl, sprint_fixdbl },
+#endif
+
     { NULL, "Operation specific parameters", 0, PARAM_OPTION, 0, 0, 0, {0}, NULL, NULL, NULL },
     { "trans",  "Value of the trans parameter",  -11, PARAM_OPTION | PARAM_INPUT | PARAM_OUTPUT, 2, 9, TestTrans,    {0}, NULL, pread_trans, sprint_trans },
     { "transA", "Value of the transA parameter", -12, PARAM_OPTION | PARAM_INPUT | PARAM_OUTPUT, 2, 9, TestTrans,    {0}, NULL, pread_trans, sprint_trans },
@@ -164,7 +169,16 @@ int main (int argc, char **argv) {
 
 #if !defined(CHAMELEON_SIMULATION)
     /* Let's initialize the accuracy for the checks */
-    testing_setaccuracy( LAPACKE_dlamch_work('e') );
+    {
+        cham_fixdbl_t accuracy = parameters_getvalue_fixdbl( "appaccuracy" );
+        if ( accuracy > 0 ) {
+            testing_setaccuracy( accuracy );
+        }
+        else
+        {
+            testing_setaccuracy( LAPACKE_dlamch_work('e') );
+        }
+    }
 #endif
 
     rc = CHAMELEON_Init( options.threads, options.gpus );
diff --git a/testing/parameters.c b/testing/parameters.c
index cf2b598e3dfef07a6736940f549ddc6f80956a93..df6a8841a3d8810fff96ae1fd43cbe424ce0bc9e 100644
--- a/testing/parameters.c
+++ b/testing/parameters.c
@@ -671,6 +671,41 @@ parameters_getvalue_int( const char *name )
     return -1;
 }
 
+double
+parameters_getvalue_fixdbl( const char *name )
+{
+    parameter_t *param = parameters;
+
+    while( param->helper != NULL )
+    {
+        /* This is not an option, we skip it */
+        if ( param->name == NULL ) {
+            param++;
+            continue;
+        }
+
+        if ( strcasecmp( name, param->name ) != 0 ) {
+            param++;
+            continue;
+        }
+
+        if ( param->has_arg > 1 ) {
+            fprintf( stderr, "parameters_getvalue_double should not be called with parameter %s\n", name );
+            return -1;
+        }
+
+        if ( param->valtype != TestValDouble ) {
+            fprintf( stderr, "parameters_getvalue_double has been called with a non float parameter (%s)\n", name );
+            return -1;
+        }
+
+        return param->value.dval;
+    }
+
+    fprintf( stderr, "parameters_getvalue_int could not find parameter %s\n", name );
+    return -1;
+}
+
 char *
 parameters_getvalue_str( const char *name )
 {
diff --git a/testing/testings.h b/testing/testings.h
index 1c8f54548771394bf9d1e91374b78b389312290c..2b42ce8489500565b024a1095e0489c1b0e3ce8a 100644
--- a/testing/testings.h
+++ b/testing/testings.h
@@ -229,13 +229,13 @@ void         parameters_read( parameter_t *param, const char  *values );
 void         parameters_read_file( const char  *filename );
 parameter_t *parameters_getbyname( const char *name );
 void         parameters_addvalues( parameter_t *param, const char  *values );
-int          parameters_getvalue_int( const char *name );
 int          parameters_compute_q( int p );
 parameter_t *parameters_get( int shname );
 int          parameters_compute_q( int p );
 void         parameters_getopt_init( char *optstring, struct option **longopts );
 parameter_t *parameters_get( int shname );
 int          parameters_getvalue_int( const char *name );
+double       parameters_getvalue_fixdbl( const char *name );
 char *       parameters_getvalue_str( const char *name );
 parameter_t *parameters_getbyname( const char *name );
 void         parameters_parser( int argc, char **argv );