From 11cae8ed089f6f16882ac255d0eb41044710f62b Mon Sep 17 00:00:00 2001
From: Andreas Marek <amarek@rzg.mpg.de>
Date: Fri, 19 May 2017 22:32:12 +0200
Subject: [PATCH] Start to cleanup test programs

---
 Makefile.am                                   | 806 +++++++++---------
 .../elpa_1stage_c_interface.F90               |   8 +-
 .../legacy_complex_driver_c_version.c}        |   0
 .../legacy_real_driver_c_version.c}           |   0
 .../legacy_single_complex_driver_c_version.c  | 292 +++++++
 .../legacy_single_real_driver_c_version.c}    |   0
 .../legacy_complex_1stage_c_version.c}        |   0
 .../legacy_real_1stage_c_version.c}           |   0
 .../legacy_complex_2stage_c_version.c}        |   0
 .../legacy_real_2stage_c_version.c}           |   0
 .../legacy_complex_driver.F90}                |   2 +-
 .../legacy_interface/legacy_real_driver.F90}  |   2 +-
 .../legacy_single_complex_driver.F90}         |   2 +-
 .../legacy_single_real_driver.F90}            |   2 +-
 test/Fortran/{ => elpa1}/complex_1stage.F90   |   2 +-
 .../{ => elpa1}/complex_1stage_gpu.F90        |   2 +-
 .../legacy_complex.F90}                       |   2 +-
 .../legacy_complex_cholesky.F90}              |   0
 .../legacy_complex_gpu.F90}                   |   2 +-
 .../legacy_complex_invert_trm.F90}            |   0
 .../legacy_complex_transpose_multiply.F90}    |   0
 .../legacy_real.F90}                          |   2 +-
 .../legacy_real_1stage_with_c.F90}            |   0
 .../legacy_real_cholesky.F90}                 |   0
 .../legacy_real_gpu.F90}                      |   2 +-
 .../legacy_real_invert_trm.F90}               |   0
 .../legacy_real_transpose_multiply.F90}       |   0
 .../legacy_single_complex.F90}                |   2 +-
 .../legacy_single_complex_cholesky.F90}       |   0
 .../legacy_single_complex_gpu.F90}            |   2 +-
 .../legacy_single_complex_invert_trm.F90}     |   0
 ...acy_single_complex_transpose_multiply.F90} |   0
 .../legacy_single_real.F90}                   |   2 +-
 .../legacy_single_real_cholesky.F90}          |   0
 .../legacy_single_real_gpu.F90}               |   2 +-
 .../legacy_single_real_invert_trm.F90}        |   0
 ...legacy_single_real_transpose_multiply.F90} |   0
 .../legacy_single_toeplitz.F90}               |   2 +-
 .../legacy_toeplitz.F90}                      |   2 +-
 test/Fortran/{ => elpa1}/real_1stage.F90      |   2 +-
 test/Fortran/{ => elpa1}/real_1stage_gpu.F90  |   2 +-
 .../{ => elpa1}/single_complex_1stage.F90     |   2 +-
 .../{ => elpa1}/single_complex_1stage_gpu.F90 |   2 +-
 .../{ => elpa1}/single_real_1stage.F90        |   2 +-
 .../{ => elpa1}/single_real_1stage_gpu.F90    |   2 +-
 test/Fortran/{ => elpa2}/complex_2stage.F90   |   2 +-
 .../{ => elpa2}/complex_2stage_banded.F90     |   4 +-
 .../{ => elpa2}/complex_2stage_gpu.F90        |   2 +-
 .../legacy_complex.F90}                       |   2 +-
 .../legacy_complex_api.F90}                   |   2 +-
 .../legacy_complex_default_kernel.F90}        |   2 +-
 .../legacy_complex_gpu.F90}                   |   2 +-
 .../legacy_real.F90}                          |   2 +-
 .../legacy_real_api.F90}                      |   2 +-
 .../legacy_real_default_kernel.F90}           |   2 +-
 .../legacy_real_gpu.F90}                      |   2 +-
 .../legacy_real_qr.F90}                       |   2 +-
 .../legacy_single_complex.F90}                |   2 +-
 .../legacy_single_complex_api.F90}            |   2 +-
 .../legacy_single_complex_default_kernel.F90} |   2 +-
 .../legacy_single_complex_gpu.F90}            |   2 +-
 .../legacy_single_real.F90}                   |   2 +-
 .../legacy_single_real_api.F90}               |   2 +-
 .../legacy_single_real_default_kernel.F90}    |   2 +-
 .../legacy_single_real_gpu.F90}               |   2 +-
 .../legacy_single_real_qr.F90}                |   2 +-
 test/Fortran/{ => elpa2}/real_2stage.F90      |   2 +-
 .../{ => elpa2}/real_2stage_banded.F90        |   4 +-
 test/Fortran/{ => elpa2}/real_2stage_gpu.F90  |   2 +-
 .../{ => elpa2}/single_complex_2stage.F90     |   2 +-
 .../single_complex_2stage_banded.F90          |   4 +-
 .../{ => elpa2}/single_complex_2stage_gpu.F90 |   2 +-
 .../{ => elpa2}/single_real_2stage.F90        |   2 +-
 .../{ => elpa2}/single_real_2stage_banded.F90 |   4 +-
 .../{ => elpa2}/single_real_2stage_gpu.F90    |   2 +-
 ...test_transpose_multiply_complex_2stage.F90 | 316 -------
 ...anspose_multiply_complex_single_2stage.F90 | 316 -------
 ..._transpose_multiply_real_single_2stage.F90 | 320 -------
 test/shared/call_elpa1.c                      |   2 +-
 test/shared/prepare_matrix_template.X90       |   2 +-
 80 files changed, 760 insertions(+), 1414 deletions(-)
 rename test/C/{elpa_driver_complex_c_version.c => driver/legacy_interface/legacy_complex_driver_c_version.c} (100%)
 rename test/C/{elpa_driver_real_c_version.c => driver/legacy_interface/legacy_real_driver_c_version.c} (100%)
 create mode 100644 test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c
 rename test/C/{elpa_driver_real_c_version_single.c => driver/legacy_interface/legacy_single_real_driver_c_version.c} (100%)
 rename test/C/{elpa1_test_complex_c_version.c => elpa1/legacy_interface/legacy_complex_1stage_c_version.c} (100%)
 rename test/C/{elpa1_test_real_c_version.c => elpa1/legacy_interface/legacy_real_1stage_c_version.c} (100%)
 rename test/C/{elpa2_test_complex_c_version.c => elpa2/legacy_interface/legacy_complex_2stage_c_version.c} (100%)
 rename test/C/{elpa2_test_real_c_version.c => elpa2/legacy_interface/legacy_real_2stage_c_version.c} (100%)
 rename test/Fortran/{test_driver_complex.F90 => driver/legacy_interface/legacy_complex_driver.F90} (99%)
 rename test/Fortran/{test_driver_real.F90 => driver/legacy_interface/legacy_real_driver.F90} (99%)
 rename test/Fortran/{test_driver_complex_single.F90 => driver/legacy_interface/legacy_single_complex_driver.F90} (99%)
 rename test/Fortran/{test_driver_real_single.F90 => driver/legacy_interface/legacy_single_real_driver.F90} (99%)
 rename test/Fortran/{ => elpa1}/complex_1stage.F90 (99%)
 rename test/Fortran/{ => elpa1}/complex_1stage_gpu.F90 (99%)
 rename test/Fortran/elpa1/{complex.F90 => legacy_interface/legacy_complex.F90} (99%)
 rename test/Fortran/elpa1/{complex_cholesky.F90 => legacy_interface/legacy_complex_cholesky.F90} (100%)
 rename test/Fortran/elpa1/{complex_gpu.F90 => legacy_interface/legacy_complex_gpu.F90} (99%)
 rename test/Fortran/elpa1/{complex_invert_trm.F90 => legacy_interface/legacy_complex_invert_trm.F90} (100%)
 rename test/Fortran/{test_transpose_multiply_complex.F90 => elpa1/legacy_interface/legacy_complex_transpose_multiply.F90} (100%)
 rename test/Fortran/elpa1/{real.F90 => legacy_interface/legacy_real.F90} (99%)
 rename test/Fortran/{test_real_with_c.F90 => elpa1/legacy_interface/legacy_real_1stage_with_c.F90} (100%)
 rename test/Fortran/elpa1/{real_cholesky.F90 => legacy_interface/legacy_real_cholesky.F90} (100%)
 rename test/Fortran/elpa1/{real_gpu.F90 => legacy_interface/legacy_real_gpu.F90} (99%)
 rename test/Fortran/elpa1/{real_invert_trm.F90 => legacy_interface/legacy_real_invert_trm.F90} (100%)
 rename test/Fortran/{test_transpose_multiply_real.F90 => elpa1/legacy_interface/legacy_real_transpose_multiply.F90} (100%)
 rename test/Fortran/elpa1/{single_complex.F90 => legacy_interface/legacy_single_complex.F90} (99%)
 rename test/Fortran/elpa1/{single_complex_cholesky.F90 => legacy_interface/legacy_single_complex_cholesky.F90} (100%)
 rename test/Fortran/elpa1/{single_complex_gpu.F90 => legacy_interface/legacy_single_complex_gpu.F90} (99%)
 rename test/Fortran/elpa1/{single_complex_invert_trm.F90 => legacy_interface/legacy_single_complex_invert_trm.F90} (100%)
 rename test/Fortran/{test_transpose_multiply_complex_single.F90 => elpa1/legacy_interface/legacy_single_complex_transpose_multiply.F90} (100%)
 rename test/Fortran/elpa1/{single_real.F90 => legacy_interface/legacy_single_real.F90} (99%)
 rename test/Fortran/elpa1/{single_real_cholesky.F90 => legacy_interface/legacy_single_real_cholesky.F90} (100%)
 rename test/Fortran/elpa1/{single_real_gpu.F90 => legacy_interface/legacy_single_real_gpu.F90} (99%)
 rename test/Fortran/elpa1/{single_real_invert_trm.F90 => legacy_interface/legacy_single_real_invert_trm.F90} (100%)
 rename test/Fortran/{test_transpose_multiply_real_single.F90 => elpa1/legacy_interface/legacy_single_real_transpose_multiply.F90} (100%)
 rename test/Fortran/elpa1/{single_toeplitz.F90 => legacy_interface/legacy_single_toeplitz.F90} (99%)
 rename test/Fortran/elpa1/{toeplitz.F90 => legacy_interface/legacy_toeplitz.F90} (99%)
 rename test/Fortran/{ => elpa1}/real_1stage.F90 (99%)
 rename test/Fortran/{ => elpa1}/real_1stage_gpu.F90 (99%)
 rename test/Fortran/{ => elpa1}/single_complex_1stage.F90 (99%)
 rename test/Fortran/{ => elpa1}/single_complex_1stage_gpu.F90 (99%)
 rename test/Fortran/{ => elpa1}/single_real_1stage.F90 (99%)
 rename test/Fortran/{ => elpa1}/single_real_1stage_gpu.F90 (99%)
 rename test/Fortran/{ => elpa2}/complex_2stage.F90 (99%)
 rename test/Fortran/{ => elpa2}/complex_2stage_banded.F90 (99%)
 rename test/Fortran/{ => elpa2}/complex_2stage_gpu.F90 (99%)
 rename test/Fortran/elpa2/{complex.F90 => legacy_interface/legacy_complex.F90} (99%)
 rename test/Fortran/elpa2/{complex_api.F90 => legacy_interface/legacy_complex_api.F90} (99%)
 rename test/Fortran/elpa2/{complex_default_kernel.F90 => legacy_interface/legacy_complex_default_kernel.F90} (99%)
 rename test/Fortran/elpa2/{complex_gpu.F90 => legacy_interface/legacy_complex_gpu.F90} (99%)
 rename test/Fortran/elpa2/{real.F90 => legacy_interface/legacy_real.F90} (99%)
 rename test/Fortran/elpa2/{real_api.F90 => legacy_interface/legacy_real_api.F90} (99%)
 rename test/Fortran/elpa2/{real_default_kernel.F90 => legacy_interface/legacy_real_default_kernel.F90} (99%)
 rename test/Fortran/elpa2/{real_gpu.F90 => legacy_interface/legacy_real_gpu.F90} (99%)
 rename test/Fortran/elpa2/{real_qr.F90 => legacy_interface/legacy_real_qr.F90} (99%)
 rename test/Fortran/elpa2/{single_complex.F90 => legacy_interface/legacy_single_complex.F90} (99%)
 rename test/Fortran/elpa2/{single_complex_api.F90 => legacy_interface/legacy_single_complex_api.F90} (99%)
 rename test/Fortran/elpa2/{single_complex_default_kernel.F90 => legacy_interface/legacy_single_complex_default_kernel.F90} (99%)
 rename test/Fortran/elpa2/{single_complex_gpu.F90 => legacy_interface/legacy_single_complex_gpu.F90} (99%)
 rename test/Fortran/elpa2/{single_real.F90 => legacy_interface/legacy_single_real.F90} (99%)
 rename test/Fortran/elpa2/{single_real_api.F90 => legacy_interface/legacy_single_real_api.F90} (99%)
 rename test/Fortran/elpa2/{single_real_default_kernel.F90 => legacy_interface/legacy_single_real_default_kernel.F90} (99%)
 rename test/Fortran/elpa2/{single_real_gpu.F90 => legacy_interface/legacy_single_real_gpu.F90} (99%)
 rename test/Fortran/elpa2/{single_real_qr.F90 => legacy_interface/legacy_single_real_qr.F90} (99%)
 rename test/Fortran/{ => elpa2}/real_2stage.F90 (99%)
 rename test/Fortran/{ => elpa2}/real_2stage_banded.F90 (99%)
 rename test/Fortran/{ => elpa2}/real_2stage_gpu.F90 (99%)
 rename test/Fortran/{ => elpa2}/single_complex_2stage.F90 (99%)
 rename test/Fortran/{ => elpa2}/single_complex_2stage_banded.F90 (99%)
 rename test/Fortran/{ => elpa2}/single_complex_2stage_gpu.F90 (99%)
 rename test/Fortran/{ => elpa2}/single_real_2stage.F90 (99%)
 rename test/Fortran/{ => elpa2}/single_real_2stage_banded.F90 (99%)
 rename test/Fortran/{ => elpa2}/single_real_2stage_gpu.F90 (99%)
 delete mode 100644 test/Fortran/test_transpose_multiply_complex_2stage.F90
 delete mode 100644 test/Fortran/test_transpose_multiply_complex_single_2stage.F90
 delete mode 100644 test/Fortran/test_transpose_multiply_real_single_2stage.F90

diff --git a/Makefile.am b/Makefile.am
index f2dace98..153ba9a3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -465,77 +465,77 @@ endif
 
 if ENABLE_LEGACY
 noinst_PROGRAMS += \
-  elpa1_test_real@SUFFIX@ \
-  elpa1_test_complex@SUFFIX@ \
-  elpa2_test_real@SUFFIX@ \
-  elpa2_test_real_default@SUFFIX@ \
-  elpa2_test_real_qr@SUFFIX@ \
-  elpa2_test_real_api@SUFFIX@ \
-  elpa2_test_complex@SUFFIX@ \
-  elpa2_test_complex_default@SUFFIX@ \
-  elpa2_test_complex_api@SUFFIX@ \
-  elpa_driver_real@SUFFIX@ \
-  elpa_driver_complex@SUFFIX@ \
-  elpa1_real_toeplitz@SUFFIX@ \
-  elpa1_real_transpose_multiply@SUFFIX@ \
-  elpa1_complex_transpose_multiply@SUFFIX@ \
-  elpa1_real_cholesky@SUFFIX@ \
-  elpa1_real_invert_trm@SUFFIX@ \
-  elpa1_complex_cholesky@SUFFIX@ \
-  elpa1_complex_invert_trm@SUFFIX@ \
-  elpa1_test_real_with_c@SUFFIX@ \
-  elpa1_test_real_c_version@SUFFIX@ \
-  elpa1_test_complex_c_version@SUFFIX@ \
-  elpa2_test_real_c_version@SUFFIX@ \
-  elpa2_test_complex_c_version@SUFFIX@ \
-  elpa_driver_real_c_version@SUFFIX@ \
-  elpa_driver_complex_c_version@SUFFIX@
+  legacy_real_1stage@SUFFIX@ \
+  legacy_complex_1stage@SUFFIX@ \
+  legacy_real_2stage@SUFFIX@ \
+  legacy_real_2stage_default@SUFFIX@ \
+  legacy_real_2stage_qr@SUFFIX@ \
+  legacy_real_2stage_api@SUFFIX@ \
+  legacy_complex_2stage@SUFFIX@ \
+  legacy_complex_2stage_default@SUFFIX@ \
+  legacy_complex_2stage_api@SUFFIX@ \
+  legacy_real_driver@SUFFIX@ \
+  legacy_complex_driver@SUFFIX@ \
+  legacy_real_toeplitz@SUFFIX@ \
+  legacy_real_transpose_multiply@SUFFIX@ \
+  legacy_complex_transpose_multiply@SUFFIX@ \
+  legacy_real_cholesky@SUFFIX@ \
+  legacy_real_invert_trm@SUFFIX@ \
+  legacy_complex_cholesky@SUFFIX@ \
+  legacy_complex_invert_trm@SUFFIX@ \
+  legacy_real_1stage_with_c@SUFFIX@ \
+  legacy_real_1stage_c_version@SUFFIX@ \
+  legacy_complex_1stage_c_version@SUFFIX@ \
+  legacy_real_2stage_c_version@SUFFIX@ \
+  legacy_complex_2stage_c_version@SUFFIX@ \
+  legacy_real_driver_c_version@SUFFIX@ \
+  legacy_complex_driver_c_version@SUFFIX@
 
 if WANT_SINGLE_PRECISION_COMPLEX
 noinst_PROGRAMS += \
-  elpa1_test_complex_single_precision@SUFFIX@ \
-  elpa2_test_complex_single_precision@SUFFIX@ \
-  elpa2_test_complex_default_single_precision@SUFFIX@ \
-  elpa1_complex_transpose_multiply_single_precision@SUFFIX@ \
-  elpa_driver_complex_single_precision@SUFFIX@ \
-  elpa1_complex_cholesky_single_precision@SUFFIX@ \
-  elpa1_complex_invert_trm_single_precision@SUFFIX@ \
-  elpa2_test_complex_api_single_precision@SUFFIX@ \
-  elpa_driver_complex_c_version_single_precision@SUFFIX@
+  legacy_single_complex_1stage@SUFFIX@ \
+  legacy_single_complex_2stage@SUFFIX@ \
+  legacy_single_complex_2stage_default@SUFFIX@ \
+  legacy_single_complex_transpose_multiply@SUFFIX@ \
+  legacy_single_complex_driver@SUFFIX@ \
+  legacy_single_complex_cholesky@SUFFIX@ \
+  legacy_single_complex_invert_trm@SUFFIX@ \
+  legacy_single_complex_2stage_api@SUFFIX@ \
+  legacy_single_complex_driver_c_version@SUFFIX@
 endif
 
 if WANT_SINGLE_PRECISION_REAL
 noinst_PROGRAMS += \
-  elpa1_test_real_single_precision@SUFFIX@ \
-  elpa2_test_real_single_precision@SUFFIX@ \
-  elpa2_test_real_default_single_precision@SUFFIX@ \
-  elpa2_test_real_qr_single_precision@SUFFIX@ \
-  elpa2_test_real_api_single_precision@SUFFIX@ \
-  elpa_driver_real_single_precision@SUFFIX@ \
-  elpa1_real_transpose_multiply_single_precision@SUFFIX@ \
-  elpa1_real_cholesky_single_precision@SUFFIX@ \
-  elpa1_real_invert_trm_single_precision@SUFFIX@ \
-  elpa_driver_real_c_version_single_precision@SUFFIX@ \
-  elpa1_real_toeplitz_single_precision@SUFFIX@
+  legacy_single_real_1stage@SUFFIX@ \
+  legacy_single_real_2stage@SUFFIX@ \
+  legacy_single_real_2stage_default@SUFFIX@ \
+  legacy_single_real_2stage_qr@SUFFIX@ \
+  legacy_single_real_2stage_api@SUFFIX@ \
+  legacy_single_real_driver@SUFFIX@ \
+  legacy_single_real_transpose_multiply@SUFFIX@ \
+  legacy_single_real_cholesky@SUFFIX@ \
+  legacy_single_real_invert_trm@SUFFIX@ \
+  legacy_single_real_driver_c_version@SUFFIX@ \
+  legacy_single_real_toeplitz@SUFFIX@
 endif
 
 if WITH_GPU_VERSION
 noinst_PROGRAMS += \
-  elpa1_test_complex_gpu@SUFFIX@ \
-  elpa1_test_real_gpu@SUFFIX@ \
-  elpa2_test_complex_gpu@SUFFIX@ \
-  elpa2_test_real_gpu@SUFFIX@
+  legacy_complex_1stage_gpu@SUFFIX@ \
+  legacy_real_1stage_gpu@SUFFIX@ \
+  legacy_complex_2stage_gpu@SUFFIX@ \
+  legacy_real_2stage_gpu@SUFFIX@
 
 if WANT_SINGLE_PRECISION_REAL
 noinst_PROGRAMS += \
-  elpa1_test_real_gpu_single_precision@SUFFIX@ \
-  elpa2_test_real_gpu_single_precision@SUFFIX@
+  legacy_single_real_1stage_gpu@SUFFIX@ \
+  legacy_single_real_2stage_gpu@SUFFIX@
 endif
 
 if WANT_SINGLE_PRECISION_COMPLEX
 noinst_PROGRAMS += \
-  elpa1_test_complex_gpu_single_precision@SUFFIX@ \
-  elpa2_test_complex_gpu_single_precision@SUFFIX@
+  legacy_single_complex_1stage_gpu@SUFFIX@ \
+  legacy_single_complex_2stage_gpu@SUFFIX@
 endif
 endif
 endif
@@ -637,92 +637,111 @@ test_single_complex_2stage_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $
         -DTEST_SOLVER_2STAGE \
         -DTEST_GPU=0
 endif
+real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage_banded.F90
+real_2stage_banded@SUFFIX@_LDADD = $(build_lib)
+real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_real_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-real_2stage@SUFFIX@_SOURCES = test/Fortran/real_2stage.F90
+complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage_banded.F90
+complex_2stage_banded@SUFFIX@_LDADD = $(build_lib)
+complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_complex_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage.F90
 real_2stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
 real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-complex_2stage@SUFFIX@_SOURCES = test/Fortran/complex_2stage.F90
+complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage.F90
 complex_2stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
 complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-real_1stage@SUFFIX@_SOURCES = test/Fortran/real_1stage.F90
+real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/real_1stage.F90
 real_1stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
 real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-complex_1stage@SUFFIX@_SOURCES = test/Fortran/complex_1stage.F90
+complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/complex_1stage.F90
 complex_1stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
 complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
 if WANT_SINGLE_PRECISION_REAL
-single_real_2stage@SUFFIX@_SOURCES = test/Fortran/single_real_2stage.F90
+single_real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_2stage.F90
 single_real_2stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
 single_real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_single_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-single_real_1stage@SUFFIX@_SOURCES = test/Fortran/single_real_1stage.F90
+single_real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/single_real_1stage.F90
 single_real_1stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
 single_real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_single_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 endif
 
 if WANT_SINGLE_PRECISION_COMPLEX
-single_complex_2stage@SUFFIX@_SOURCES = test/Fortran/single_complex_2stage.F90
+single_complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_2stage.F90
 single_complex_2stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
 single_complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_single_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-single_complex_1stage@SUFFIX@_SOURCES = test/Fortran/single_complex_1stage.F90
+single_complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/single_complex_1stage.F90
 single_complex_1stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
 single_complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_single_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 endif
 
 if WITH_GPU_VERSION
-real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/real_1stage_gpu.F90
+real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/real_1stage_gpu.F90
 real_1stage_gpu@SUFFIX@_LDADD = $(build_lib)
 real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/complex_1stage_gpu.F90
+complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/complex_1stage_gpu.F90
 complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib)
 complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/real_2stage_gpu.F90
+real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage_gpu.F90
 real_2stage_gpu@SUFFIX@_LDADD = $(build_lib)
 real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/complex_2stage_gpu.F90
+complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage_gpu.F90
 complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib)
 complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 endif
 
 if WANT_SINGLE_PRECISION_REAL
-single_real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/single_real_1stage_gpu.F90
+single_real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_2stage_banded.F90
+single_real_2stage_banded@SUFFIX@_LDADD = $(build_lib)
+single_real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_single_real_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+single_real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/single_real_1stage_gpu.F90
 single_real_1stage_gpu@SUFFIX@_LDADD = $(build_lib)
 single_real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_single_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-single_real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/single_real_2stage_gpu.F90
+single_real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_2stage_gpu.F90
 single_real_2stage_gpu@SUFFIX@_LDADD = $(build_lib)
 single_real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_single_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 endif
 
 if WANT_SINGLE_PRECISION_COMPLEX
-single_complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/single_complex_1stage_gpu.F90
+single_complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_2stage_banded.F90
+single_complex_2stage_banded@SUFFIX@_LDADD = $(build_lib)
+single_complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_single_complex_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+single_complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/single_complex_1stage_gpu.F90
 single_complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib)
 single_complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_single_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-single_complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/single_complex_2stage_gpu.F90
+single_complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_2stage_gpu.F90
 single_complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib)
 single_complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 EXTRA_single_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
@@ -730,304 +749,284 @@ endif
 
 
 if ENABLE_LEGACY
-elpa1_test_real_c_version@SUFFIX@_SOURCES = test/C/elpa1_test_real_c_version.c
-elpa1_test_real_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
-elpa1_test_real_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_real_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_test_real_with_c@SUFFIX@_SOURCES = test/Fortran/test_real_with_c.F90
-elpa1_test_real_with_c@SUFFIX@_LDADD = $(build_lib)
-elpa1_test_real_with_c@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_real_with_c@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa_driver_real_c_version@SUFFIX@_SOURCES = test/C/elpa_driver_real_c_version.c
-elpa_driver_real_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
-elpa_driver_real_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa_driver_real_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_test_complex_c_version@SUFFIX@_SOURCES = test/C/elpa1_test_complex_c_version.c
-elpa1_test_complex_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
-elpa1_test_complex_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_complex_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa_driver_complex_c_version@SUFFIX@_SOURCES = test/C/elpa_driver_complex_c_version.c
-elpa_driver_complex_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
-elpa_driver_complex_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa_driver_complex_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real_c_version@SUFFIX@_SOURCES = test/C/elpa2_test_real_c_version.c
-elpa2_test_real_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
-elpa2_test_real_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_complex_c_version@SUFFIX@_SOURCES = test/C/elpa2_test_complex_c_version.c
-elpa2_test_complex_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
-elpa2_test_complex_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_complex_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_test_real@SUFFIX@_SOURCES = test/Fortran/elpa1/real.F90
-elpa1_test_real@SUFFIX@_LDADD = $(build_lib)
-elpa1_test_real@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_real@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_real_toeplitz@SUFFIX@_SOURCES = test/Fortran/elpa1/toeplitz.F90
-elpa1_real_toeplitz@SUFFIX@_LDADD = $(build_lib)
-elpa1_real_toeplitz@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_real_toeplitz@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_real_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/test_transpose_multiply_real.F90
-elpa1_real_transpose_multiply@SUFFIX@_LDADD = $(build_lib)
-elpa1_real_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_real_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_complex_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/test_transpose_multiply_complex.F90
-elpa1_complex_transpose_multiply@SUFFIX@_LDADD = $(build_lib)
-elpa1_complex_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_complex_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_real_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/real_cholesky.F90
-elpa1_real_cholesky@SUFFIX@_LDADD = $(build_lib)
-elpa1_real_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_real_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_real_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/real_invert_trm.F90
-elpa1_real_invert_trm@SUFFIX@_LDADD = $(build_lib)
-elpa1_real_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_real_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_complex_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/complex_cholesky.F90
-elpa1_complex_cholesky@SUFFIX@_LDADD = $(build_lib)
-elpa1_complex_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_complex_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_complex_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/complex_invert_trm.F90
-elpa1_complex_invert_trm@SUFFIX@_LDADD = $(build_lib)
-elpa1_complex_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_complex_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real@SUFFIX@_SOURCES = test/Fortran/elpa2/real.F90
-elpa2_test_real@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real_default@SUFFIX@_SOURCES = test/Fortran/elpa2/real_default_kernel.F90
-elpa2_test_real_default@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real_qr@SUFFIX@_SOURCES = test/Fortran/elpa2/real_qr.F90
-elpa2_test_real_qr@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real_qr@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_qr@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real_api@SUFFIX@_SOURCES = test/Fortran/elpa2/real_api.F90
-elpa2_test_real_api@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/real_2stage_banded.F90
-real_2stage_banded@SUFFIX@_LDADD = $(build_lib)
-real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_real_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_test_complex@SUFFIX@_SOURCES = test/Fortran/elpa1/complex.F90
-elpa1_test_complex@SUFFIX@_LDADD = $(build_lib)
-elpa1_test_complex@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_complex@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_complex@SUFFIX@_SOURCES = test/Fortran/elpa2/complex.F90
-elpa2_test_complex@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_complex@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_complex@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_complex_default@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_default_kernel.F90
-elpa2_test_complex_default@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_complex_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_complex_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_complex_api@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_api.F90
-elpa2_test_complex_api@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_complex_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_complex_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/complex_2stage_banded.F90
-complex_2stage_banded@SUFFIX@_LDADD = $(build_lib)
-complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_complex_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-
-elpa_driver_real@SUFFIX@_SOURCES = test/Fortran/test_driver_real.F90
-elpa_driver_real@SUFFIX@_LDADD = $(build_lib)
-elpa_driver_real@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa_driver_real@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa_driver_complex@SUFFIX@_SOURCES = test/Fortran/test_driver_complex.F90
-elpa_driver_complex@SUFFIX@_LDADD = $(build_lib)
-elpa_driver_complex@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa_driver_complex@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+legacy_real_1stage_c_version@SUFFIX@_SOURCES = test/C/elpa1/legacy_interface/legacy_real_1stage_c_version.c
+legacy_real_1stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
+legacy_real_1stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_1stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_1stage_with_c@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_1stage_with_c.F90
+legacy_real_1stage_with_c@SUFFIX@_LDADD = $(build_lib)
+legacy_real_1stage_with_c@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_1stage_with_c@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_real_driver_c_version.c
+legacy_real_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
+legacy_real_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_1stage_c_version@SUFFIX@_SOURCES = test/C/elpa1/legacy_interface/legacy_complex_1stage_c_version.c
+legacy_complex_1stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
+legacy_complex_1stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_1stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_complex_driver_c_version.c
+legacy_complex_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
+legacy_complex_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_2stage_c_version@SUFFIX@_SOURCES = test/C/elpa2/legacy_interface/legacy_real_2stage_c_version.c
+legacy_real_2stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
+legacy_real_2stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_2stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_2stage_c_version@SUFFIX@_SOURCES = test/C/elpa2/legacy_interface/legacy_complex_2stage_c_version.c
+legacy_complex_2stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
+legacy_complex_2stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_2stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real.F90
+legacy_real_1stage@SUFFIX@_LDADD = $(build_lib)
+legacy_real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_toeplitz@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90
+legacy_real_toeplitz@SUFFIX@_LDADD = $(build_lib)
+legacy_real_toeplitz@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_toeplitz@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_transpose_multiply.F90
+legacy_real_transpose_multiply@SUFFIX@_LDADD = $(build_lib)
+legacy_real_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_transpose_multiply.F90
+legacy_complex_transpose_multiply@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_cholesky.F90
+legacy_real_cholesky@SUFFIX@_LDADD = $(build_lib)
+legacy_real_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_invert_trm.F90
+legacy_real_invert_trm@SUFFIX@_LDADD = $(build_lib)
+legacy_real_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_cholesky.F90
+legacy_complex_cholesky@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_invert_trm.F90
+legacy_complex_invert_trm@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real.F90
+legacy_real_2stage@SUFFIX@_LDADD = $(build_lib)
+legacy_real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90
+legacy_real_2stage_default@SUFFIX@_LDADD = $(build_lib)
+legacy_real_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_2stage_qr@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90
+legacy_real_2stage_qr@SUFFIX@_LDADD = $(build_lib)
+legacy_real_2stage_qr@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_2stage_qr@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_api.F90
+legacy_real_2stage_api@SUFFIX@_LDADD = $(build_lib)
+legacy_real_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex.F90
+legacy_complex_1stage@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex.F90
+legacy_complex_2stage@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90
+legacy_complex_2stage_default@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90
+legacy_complex_2stage_api@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_real_driver.F90
+legacy_real_driver@SUFFIX@_LDADD = $(build_lib)
+legacy_real_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_complex_driver.F90
+legacy_complex_driver@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
 elpa_tests@SUFFIX@_SOURCES = test/Fortran/elpa_tests.F90
 elpa_tests@SUFFIX@_LDADD = $(build_lib)
 elpa_tests@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
 
 if WANT_SINGLE_PRECISION_REAL
-single_real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/single_real_2stage_banded.F90
-single_real_2stage_banded@SUFFIX@_LDADD = $(build_lib)
-single_real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_single_real_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-elpa1_test_real_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa1/single_real.F90
-elpa1_test_real_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_test_real_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_real_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real.F90
-elpa2_test_real_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa_driver_real_single_precision@SUFFIX@_SOURCES = test/Fortran/test_driver_real_single.F90
-elpa_driver_real_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa_driver_real_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa_driver_real_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_real_toeplitz_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa1/single_toeplitz.F90
-elpa1_real_toeplitz_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_real_toeplitz_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_real_toeplitz_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_real_transpose_multiply_single_precision@SUFFIX@_SOURCES = test/Fortran/test_transpose_multiply_real_single.F90
-elpa1_real_transpose_multiply_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_real_transpose_multiply_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_real_transpose_multiply_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa_driver_real_c_version_single_precision@SUFFIX@_SOURCES = test/C/elpa_driver_real_c_version_single.c
-elpa_driver_real_c_version_single_precision@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
-elpa_driver_real_c_version_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa_driver_real_c_version_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_real_cholesky_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa1/single_real_cholesky.F90
-elpa1_real_cholesky_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_real_cholesky_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_real_cholesky_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_real_invert_trm_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa1/single_real_invert_trm.F90
-elpa1_real_invert_trm_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_real_invert_trm_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_real_invert_trm_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real_default_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_default_kernel.F90
-elpa2_test_real_default_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real_default_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_default_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real_qr_single_precision@SUFFIX@_SOURCES = \
-                test/Fortran/elpa2/single_real_qr.F90
-elpa2_test_real_qr_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real_qr_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_qr_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real_api_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_api.F90
-elpa2_test_real_api_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real_api_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_api_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+legacy_single_real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real.F90
+legacy_single_real_1stage@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real.F90
+legacy_single_real_2stage@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90
+legacy_single_real_driver@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_toeplitz@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90
+legacy_single_real_toeplitz@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_toeplitz@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_toeplitz@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_transpose_multiply.F90
+legacy_single_real_transpose_multiply@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_single_real_driver_c_version.c
+legacy_single_real_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
+legacy_single_real_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_cholesky.F90
+legacy_single_real_cholesky@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_invert_trm.F90
+legacy_single_real_invert_trm@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90
+legacy_single_real_2stage_default@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_2stage_qr@SUFFIX@_SOURCES = \
+                test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90
+legacy_single_real_2stage_qr@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_2stage_qr@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_2stage_qr@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_real_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90
+legacy_single_real_2stage_api@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 endif
 
 if WANT_SINGLE_PRECISION_COMPLEX
-single_complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/single_complex_2stage_banded.F90
-single_complex_2stage_banded@SUFFIX@_LDADD = $(build_lib)
-single_complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_single_complex_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_test_complex_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa1/single_complex.F90
-elpa1_test_complex_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_test_complex_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_complex_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa_driver_complex_single_precision@SUFFIX@_SOURCES = test/Fortran/test_driver_complex_single.F90
-elpa_driver_complex_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa_driver_complex_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa_driver_complex_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa_driver_complex_c_version_single_precision@SUFFIX@_SOURCES = test/C/elpa_driver_complex_c_version_single.c
-elpa_driver_complex_c_version_single_precision@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
-elpa_driver_complex_c_version_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa_driver_complex_c_version_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_complex_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex.F90
-elpa2_test_complex_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_complex_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_complex_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_complex_default_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_default_kernel.F90 $(shared_sources) $(redirect_sources)
-elpa2_test_complex_default_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_complex_default_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_complex_default_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_complex_transpose_multiply_single_precision@SUFFIX@_SOURCES = test/Fortran/test_transpose_multiply_complex_single.F90
-elpa1_complex_transpose_multiply_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_complex_transpose_multiply_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_complex_transpose_multiply_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_complex_cholesky_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa1/single_complex_cholesky.F90
-elpa1_complex_cholesky_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_complex_cholesky_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_complex_cholesky_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_complex_invert_trm_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa1/single_complex_invert_trm.F90
-elpa1_complex_invert_trm_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_complex_invert_trm_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_complex_invert_trm_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_complex_api_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_api.F90
-elpa2_test_complex_api_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_complex_api_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_complex_api_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+legacy_single_complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90
+legacy_single_complex_1stage@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_complex_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90
+legacy_single_complex_driver@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_complex_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c
+legacy_single_complex_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS)
+legacy_single_complex_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+legacy_single_complex_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90
+legacy_single_complex_2stage@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_complex_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90 $(shared_sources) $(redirect_sources)
+legacy_single_complex_2stage_default@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_complex_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_transpose_multiply.F90
+legacy_single_complex_transpose_multiply@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_complex_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_cholesky.F90
+legacy_single_complex_cholesky@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_complex_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_invert_trm.F90
+legacy_single_complex_invert_trm@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_single_complex_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90
+legacy_single_complex_2stage_api@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 endif
 
 if WITH_GPU_VERSION
-elpa1_test_real_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/real_gpu.F90
-elpa1_test_real_gpu@SUFFIX@_LDADD = $(build_lib)
-elpa1_test_real_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_real_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa1_test_complex_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/complex_gpu.F90
-elpa1_test_complex_gpu@SUFFIX@_LDADD = $(build_lib)
-elpa1_test_complex_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_complex_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_real_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/real_gpu.F90
-elpa2_test_real_gpu@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
-
-elpa2_test_complex_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_gpu.F90
-elpa2_test_complex_gpu@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_complex_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_complex_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+legacy_real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90
+legacy_real_1stage_gpu@SUFFIX@_LDADD = $(build_lib)
+legacy_real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90
+legacy_complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90
+legacy_real_2stage_gpu@SUFFIX@_LDADD = $(build_lib)
+legacy_real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+
+legacy_complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90
+legacy_complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib)
+legacy_complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
 if WANT_SINGLE_PRECISION_REAL
-elpa1_test_real_gpu_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa1/single_real_gpu.F90
-elpa1_test_real_gpu_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_test_real_gpu_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_real_gpu_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+legacy_single_real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90
+legacy_single_real_1stage_gpu@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-elpa2_test_real_gpu_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_gpu.F90
-elpa2_test_real_gpu_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_real_gpu_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_real_gpu_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+legacy_single_real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90
+legacy_single_real_2stage_gpu@SUFFIX@_LDADD = $(build_lib)
+legacy_single_real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 endif
 
 if WANT_SINGLE_PRECISION_COMPLEX
-elpa1_test_complex_gpu_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa1/single_complex_gpu.F90
-elpa1_test_complex_gpu_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa1_test_complex_gpu_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa1_test_complex_gpu_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+legacy_single_complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90
+legacy_single_complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 
-elpa2_test_complex_gpu_single_precision@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_gpu.F90
-elpa2_test_complex_gpu_single_precision@SUFFIX@_LDADD = $(build_lib)
-elpa2_test_complex_gpu_single_precision@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
-EXTRA_elpa2_test_complex_gpu_single_precision@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
+legacy_single_complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90
+legacy_single_complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib)
+legacy_single_complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+EXTRA_legacy_single_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90
 endif
 endif
 endif
@@ -1084,76 +1083,75 @@ endif
 
 if ENABLE_LEGACY
 check_SCRIPTS += \
-  elpa1_test_real@SUFFIX@.sh \
-  elpa2_test_real@SUFFIX@.sh \
-  elpa2_test_real_default@SUFFIX@.sh \
-  elpa1_test_complex@SUFFIX@.sh \
-  elpa2_test_complex@SUFFIX@.sh \
-  elpa2_test_real_qr@SUFFIX@.sh \
-  elpa2_test_complex_default@SUFFIX@.sh \
-  elpa2_test_real_api@SUFFIX@.sh \
-  elpa2_test_complex_api@SUFFIX@.sh \
-  elpa_driver_real@SUFFIX@.sh \
-  elpa_driver_complex@SUFFIX@.sh \
-  elpa1_real_toeplitz@SUFFIX@.sh \
-  elpa1_test_real_with_c@SUFFIX@.sh \
-  elpa1_real_cholesky@SUFFIX@.sh \
-  elpa1_real_invert_trm@SUFFIX@.sh \
-  elpa1_real_transpose_multiply@SUFFIX@.sh \
-  elpa1_complex_cholesky@SUFFIX@.sh \
-  elpa1_complex_invert_trm@SUFFIX@.sh \
-  elpa1_complex_transpose_multiply@SUFFIX@.sh \
-  elpa2_print_kernels@SUFFIX@ \
-  elpa1_test_real_c_version@SUFFIX@.sh \
-  elpa1_test_complex_c_version@SUFFIX@.sh \
-  elpa2_test_real_c_version@SUFFIX@.sh \
-  elpa2_test_complex_c_version@SUFFIX@.sh \
-  elpa_driver_real_c_version@SUFFIX@.sh \
-  elpa_driver_complex_c_version@SUFFIX@.sh
+  legacy_real_1stage@SUFFIX@.sh \
+  legacy_real_2stage@SUFFIX@.sh \
+  legacy_real_2stage_default@SUFFIX@.sh \
+  legacy_complex_1stage@SUFFIX@.sh \
+  legacy_complex_2stage@SUFFIX@.sh \
+  legacy_real_2stage_qr@SUFFIX@.sh \
+  legacy_complex_2stage_default@SUFFIX@.sh \
+  legacy_real_2stage_api@SUFFIX@.sh \
+  legacy_complex_2stage_api@SUFFIX@.sh \
+  legacy_real_driver@SUFFIX@.sh \
+  legacy_complex_driver@SUFFIX@.sh \
+  legacy_real_toeplitz@SUFFIX@.sh \
+  legacy_real_1stage_with_c@SUFFIX@.sh \
+  legacy_real_cholesky@SUFFIX@.sh \
+  legacy_real_invert_trm@SUFFIX@.sh \
+  legacy_real_transpose_multiply@SUFFIX@.sh \
+  legacy_complex_cholesky@SUFFIX@.sh \
+  legacy_complex_invert_trm@SUFFIX@.sh \
+  legacy_complex_transpose_multiply@SUFFIX@.sh \
+  legacy_real_1stage_c_version@SUFFIX@.sh \
+  legacy_complex_1stage_c_version@SUFFIX@.sh \
+  legacy_real_2stage_c_version@SUFFIX@.sh \
+  legacy_complex_2stage_c_version@SUFFIX@.sh \
+  legacy_real_driver_c_version@SUFFIX@.sh \
+  legacy_complex_driver_c_version@SUFFIX@.sh
 
 if WANT_SINGLE_PRECISION_REAL
 check_SCRIPTS += \
-  elpa1_test_real_single_precision@SUFFIX@.sh \
-  elpa2_test_real_single_precision@SUFFIX@.sh \
-  elpa2_test_real_default_single_precision@SUFFIX@.sh \
-  elpa2_test_real_qr_single_precision@SUFFIX@.sh \
-  elpa_driver_real_single_precision@SUFFIX@.sh \
-  elpa1_real_cholesky_single_precision@SUFFIX@.sh \
-  elpa1_real_invert_trm_single_precision@SUFFIX@.sh \
-  elpa1_real_transpose_multiply_single_precision@SUFFIX@.sh \
-  elpa2_test_real_api_single_precision@SUFFIX@.sh \
-  elpa_driver_real_c_version_single_precision@SUFFIX@.sh
+  legacy_single_real_1stage@SUFFIX@.sh \
+  legacy_single_real_2stage@SUFFIX@.sh \
+  legacy_single_real_2stage_default@SUFFIX@.sh \
+  legacy_single_real_2stage_qr@SUFFIX@.sh \
+  legacy_single_real_driver@SUFFIX@.sh \
+  legacy_single_real_cholesky@SUFFIX@.sh \
+  legacy_single_real_invert_trm@SUFFIX@.sh \
+  legacy_single_real_transpose_multiply@SUFFIX@.sh \
+  legacy_single_real_2stage_api@SUFFIX@.sh \
+  legacy_single_real_driver_c_version@SUFFIX@.sh
 endif
 
 if WANT_SINGLE_PRECISION_COMPLEX
 check_SCRIPTS += \
-  elpa1_test_complex_single_precision@SUFFIX@.sh \
-  elpa2_test_complex_single_precision@SUFFIX@.sh \
-  elpa2_test_complex_default_single_precision@SUFFIX@.sh \
-  elpa1_complex_cholesky_single_precision@SUFFIX@.sh \
-  elpa_driver_complex_single_precision@SUFFIX@.sh \
-  elpa1_complex_invert_trm_single_precision@SUFFIX@.sh \
-  elpa1_complex_transpose_multiply_single_precision@SUFFIX@.sh \
-  elpa2_test_complex_api_single_precision@SUFFIX@.sh \
-  elpa_driver_complex_c_version_single_precision@SUFFIX@.sh
+  legacy_single_complex_1stage@SUFFIX@.sh \
+  legacy_single_complex_2stage@SUFFIX@.sh \
+  legacy_single_complex_2stage_default@SUFFIX@.sh \
+  legacy_single_complex_cholesky@SUFFIX@.sh \
+  legacy_single_complex_driver@SUFFIX@.sh \
+  legacy_single_complex_invert_trm@SUFFIX@.sh \
+  legacy_single_complex_transpose_multiply@SUFFIX@.sh \
+  legacy_single_complex_2stage_api@SUFFIX@.sh \
+  legacy_single_complex_driver_c_version@SUFFIX@.sh
 endif
 
 if WITH_GPU_VERSION
 check_SCRIPTS += \
-  elpa1_test_real_gpu@SUFFIX@.sh \
-  elpa1_test_complex_gpu@SUFFIX@.sh \
-  elpa2_test_real_gpu@SUFFIX@.sh \
-  elpa2_test_complex_gpu@SUFFIX@.sh
+  legacy_real_1stage_gpu@SUFFIX@.sh \
+  legacy_complex_1stage_gpu@SUFFIX@.sh \
+  legacy_real_2stage_gpu@SUFFIX@.sh \
+  legacy_complex_2stage_gpu@SUFFIX@.sh
 
 if WANT_SINGLE_PRECISION_REAL
 check_SCRIPTS += \
-  elpa1_test_real_gpu_single_precision@SUFFIX@.sh \
-  elpa2_test_real_gpu_single_precision@SUFFIX@.sh
+  legacy_single_real_1stage_gpu@SUFFIX@.sh \
+  legacy_single_real_2stage_gpu@SUFFIX@.sh
 endif
 if WANT_SINGLE_PRECISION_COMPLEX
 check_SCRIPTS += \
-  elpa1_test_complex_gpu_single_precision@SUFFIX@.sh \
-  elpa2_test_complex_gpu_single_precision@SUFFIX@.sh
+  legacy_single_complex_1stage_gpu@SUFFIX@.sh \
+  legacy_single_complex_2stage_gpu@SUFFIX@.sh
 endif
 endif
 endif
@@ -1180,6 +1178,14 @@ CLEANFILES = \
   elpa1_real* \
   elpa*.sh \
   test*.sh \
+  legacy_real* \
+  legacy_complex* \
+  legacy_single_real* \
+  legacy_single_complex* \
+  single_real* \
+  single_complex* \
+  real* \
+  complex* \
   *.i
 
 clean-local:
diff --git a/src/elpa1/legacy_interface/elpa_1stage_c_interface.F90 b/src/elpa1/legacy_interface/elpa_1stage_c_interface.F90
index 5be98d29..7eeef9fa 100644
--- a/src/elpa1/legacy_interface/elpa_1stage_c_interface.F90
+++ b/src/elpa1/legacy_interface/elpa_1stage_c_interface.F90
@@ -255,7 +255,7 @@
 #define SINGLE_PRECISION
 #include "../../general/precision_macros.h"
 
-  !lc> int elpa_solve_evp_complex_1stage_single_precision(int na, int nev,  complex *a, int lda, float *ev, complex *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int mpi_comm_all, int useGPU);
+  !lc> int elpa_solve_evp_complex_1stage_single_precision(int na, int nev,  complex float *a, int lda, float *ev, complex float *q, int ldq, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int mpi_comm_all, int useGPU);
 
 #include "./elpa1_c_interface_template.X90"
 
@@ -491,7 +491,7 @@
   !lc> \result success              int reports success (1) or failure (0)
   !lc> */
 
-  !lc> int elpa_mult_ah_b_complex_single(char uplo_a, char uplo_c, int na, int ncb, complex *a, int lda, int ldaCols, complex *b, int ldb, int ldbCols, int nblk, int mpi_comm_rows, int mpi_comm_cols, complex *c, int ldc, int ldcCols);
+  !lc> int elpa_mult_ah_b_complex_single(char uplo_a, char uplo_c, int na, int ncb, complex float *a, int lda, int ldaCols, complex float *b, int ldb, int ldbCols, int nblk, int mpi_comm_rows, int mpi_comm_cols, complex float *c, int ldc, int ldcCols);
 #define COMPLEXCASE 1
 #define SINGLE_PRECISION 1
 #include "../../general/precision_macros.h"
@@ -598,7 +598,7 @@
  !lc> \result succes               int reports success (1) or failure (0)
  !lc> */
 
- !lc> int elpa_invert_trm_complex_single(int na, complex *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug);
+ !lc> int elpa_invert_trm_complex_single(int na, complex float *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug);
 #define COMPLEXCASE 1
 #define SINGLE_PRECISION 1
 #include "../../general/precision_macros.h"
@@ -714,7 +714,7 @@
  !lc> \result succes               int reports success (1) or failure (0)
  !lc> */
 
- !lc> int elpa_cholesky_complex_single(int na, complex *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug);
+ !lc> int elpa_cholesky_complex_single(int na, complex float *a, int lda, int nblk, int matrixCols, int mpi_comm_rows, int mpi_comm_cols, int wantDebug);
 #define COMPLEXCASE 1
 #define SINGLE_PRECISION 1
 #include "../../general/precision_macros.h"
diff --git a/test/C/elpa_driver_complex_c_version.c b/test/C/driver/legacy_interface/legacy_complex_driver_c_version.c
similarity index 100%
rename from test/C/elpa_driver_complex_c_version.c
rename to test/C/driver/legacy_interface/legacy_complex_driver_c_version.c
diff --git a/test/C/elpa_driver_real_c_version.c b/test/C/driver/legacy_interface/legacy_real_driver_c_version.c
similarity index 100%
rename from test/C/elpa_driver_real_c_version.c
rename to test/C/driver/legacy_interface/legacy_real_driver_c_version.c
diff --git a/test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c b/test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c
new file mode 100644
index 00000000..f66e7d2e
--- /dev/null
+++ b/test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c
@@ -0,0 +1,292 @@
+/*     This file is part of ELPA. */
+/*  */
+/*     The ELPA library was originally created by the ELPA consortium, */
+/*     consisting of the following organizations: */
+/*  */
+/*     - Max Planck Computing and Data Facility (MPCDF), formerly known as */
+/*       Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), */
+/*     - Bergische Universität Wuppertal, Lehrstuhl für angewandte */
+/*       Informatik, */
+/*     - Technische Universität München, Lehrstuhl für Informatik mit */
+/*       Schwerpunkt Wissenschaftliches Rechnen , */
+/*     - Fritz-Haber-Institut, Berlin, Abt. Theorie, */
+/*     - Max-Plack-Institut für Mathematik in den Naturwissenschaften, */
+/*       Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, */
+/*       and */
+/*     - IBM Deutschland GmbH */
+/*  */
+/*  */
+/*     More information can be found here: */
+/*     http://elpa.mpcdf.mpg.de/ */
+/*  */
+/*     ELPA is free software: you can redistribute it and/or modify */
+/*     it under the terms of the version 3 of the license of the */
+/*     GNU Lesser General Public License as published by the Free */
+/*     Software Foundation. */
+/*  */
+/*     ELPA is distributed in the hope that it will be useful, */
+/*     but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/*     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the */
+/*     GNU Lesser General Public License for more details. */
+/*  */
+/*     You should have received a copy of the GNU Lesser General Public License */
+/*     along with ELPA.  If not, see <http://www.gnu.org/licenses/> */
+/*  */
+/*     ELPA reflects a substantial effort on the part of the original */
+/*     ELPA consortium, and we ask you to respect the spirit of the */
+/*     license that we chose: i.e., please contribute any changes you */
+/*     may have back to the original ELPA library distribution, and keep */
+/*     any derivatives of ELPA under the same license that we chose for */
+/*     the original distribution, the GNU Lesser General Public License. */
+/*  */
+/*  */
+
+#include "config-f90.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef WITH_MPI
+#include <mpi.h>
+#endif
+#include <math.h>
+
+#include <elpa/elpa_legacy.h>
+#include <test/shared/generated.h>
+#include <complex.h>
+
+int main(int argc, char** argv) {
+   int myid;
+   int nprocs;
+#ifndef WITH_MPI
+   int MPI_COMM_WORLD;
+#endif
+   int na, nev, nblk;
+
+   int status;
+
+   int np_cols, np_rows, np_colsStart;
+
+   int my_blacs_ctxt, nprow, npcol, my_prow, my_pcol;
+
+   int mpierr;
+
+   int my_mpi_comm_world;
+   int mpi_comm_rows, mpi_comm_cols;
+
+   int info, *sc_desc;
+
+   int na_rows, na_cols;
+   float startVal;
+
+   complex float *a, *z, *as;
+
+   float *ev;
+
+   int success;
+   int i;
+
+   int useGPU, THIS_COMPLEX_ELPA_KERNEL_API;
+#ifdef WITH_MPI
+   MPI_Init(&argc, &argv);
+   MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
+   MPI_Comm_rank(MPI_COMM_WORLD, &myid);
+#else
+   nprocs = 1;
+   myid =0;
+   MPI_COMM_WORLD=1;
+#endif
+   na = 1000;
+   nev = 500;
+   nblk = 16;
+
+   if (myid == 0) {
+     printf("This is the c version of an ELPA test-programm\n");
+     printf("\n");
+     printf("It will call the ELPA complex solver for a matrix\n");
+     printf("of matrix size %d. It will compute %d eigenvalues\n",na,nev);
+     printf("and uses a blocksize of %d\n",nblk);
+     printf("\n");
+     printf("This is an example program with much less functionality\n");
+     printf("as it's Fortran counterpart. It's only purpose is to show how \n");
+     printf("to evoke ELPA1 from a c programm\n");
+
+     printf("\n");
+
+   }
+
+   status = 0;
+
+   startVal = sqrt((float) nprocs);
+   np_colsStart = (int) round(startVal);
+   for (np_cols=np_colsStart;np_cols>1;np_cols--){
+     if (nprocs %np_cols ==0){
+     break;
+     }
+   }
+
+   np_rows = nprocs/np_cols;
+
+   if (myid == 0) {
+     printf("\n");
+     printf("Number of processor rows %d, cols %d, total %d \n",np_rows,np_cols,nprocs);
+   }
+
+   /* set up blacs */
+   /* convert communicators before */
+#ifdef WITH_MPI
+   my_mpi_comm_world = MPI_Comm_c2f(MPI_COMM_WORLD);
+#else
+   my_mpi_comm_world = 1;
+#endif
+   set_up_blacsgrid_f(my_mpi_comm_world, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol);
+
+   if (myid == 0) {
+     printf("\n");
+     printf("Past BLACS_Gridinfo...\n");
+     printf("\n");
+   }
+
+   /* get the ELPA row and col communicators. */
+   /* These are NOT usable in C without calling the MPI_Comm_f2c function on them !! */
+#ifdef WITH_MPI
+   my_mpi_comm_world = MPI_Comm_c2f(MPI_COMM_WORLD);
+#endif
+   mpierr = elpa_get_communicators(my_mpi_comm_world, my_prow, my_pcol, &mpi_comm_rows, &mpi_comm_cols);
+
+   if (myid == 0) {
+     printf("\n");
+     printf("Past split communicator setup for rows and columns...\n");
+     printf("\n");
+   }
+
+   sc_desc = malloc(9*sizeof(int));
+
+   set_up_blacs_descriptor_f(na, nblk, my_prow, my_pcol, np_rows, np_cols, &na_rows, &na_cols, sc_desc, my_blacs_ctxt, &info);
+
+   if (myid == 0) {
+     printf("\n");
+     printf("Past scalapack descriptor setup...\n");
+     printf("\n");
+   }
+
+   /* allocate the matrices needed for elpa */
+   if (myid == 0) {
+     printf("\n");
+     printf("Allocating matrices with na_rows=%d and na_cols=%d\n",na_rows, na_cols);
+     printf("\n");
+   }
+
+   a  = malloc(na_rows*na_cols*sizeof(complex float));
+   z  = malloc(na_rows*na_cols*sizeof(complex float));
+   as = malloc(na_rows*na_cols*sizeof(complex float));
+   ev = malloc(na*sizeof(float));
+
+   prepare_matrix_complex_single_f(na, myid, na_rows, na_cols, sc_desc, a, z, as);
+
+   if (myid == 0) {
+     printf("\n");
+     printf("Entering ELPA 1stage complex solver\n");
+     printf("\n");
+   }
+#ifdef WITH_MPI
+   mpierr = MPI_Barrier(MPI_COMM_WORLD);
+#endif
+   useGPU = 0;
+   THIS_COMPLEX_ELPA_KERNEL_API = ELPA_2STAGE_COMPLEX_DEFAULT;
+   success = elpa_solve_evp_complex_single(na, nev, a, na_rows, ev, z, na_rows, nblk, na_cols, mpi_comm_rows, mpi_comm_cols, my_mpi_comm_world, THIS_COMPLEX_ELPA_KERNEL_API, useGPU, "1stage");
+
+   if (success != 1) {
+     printf("error in ELPA solve \n");
+#ifdef WITH_MPI
+     mpierr = MPI_Abort(MPI_COMM_WORLD, 99);
+#endif
+   }
+
+
+   if (myid == 0) {
+     printf("\n");
+     printf("1stage ELPA complex solver complete\n");
+     printf("\n");
+   }
+
+   for (i=0;i<na_rows*na_cols;i++){
+      a[i] = as[i];
+      z[i] = as[i];
+   }
+   if (myid == 0) {
+     printf("\n");
+     printf("Entering ELPA 2stage complex solver\n");
+     printf("\n");
+   }
+#ifdef WITH_MPI
+   mpierr = MPI_Barrier(MPI_COMM_WORLD);
+#endif
+   useGPU =0;
+   THIS_COMPLEX_ELPA_KERNEL_API = ELPA_2STAGE_COMPLEX_DEFAULT;
+   success = elpa_solve_evp_complex_single(na, nev, a, na_rows, ev, z, na_rows, nblk, na_cols, mpi_comm_rows, mpi_comm_cols, my_mpi_comm_world, THIS_COMPLEX_ELPA_KERNEL_API, useGPU, "2stage");
+
+   if (success != 1) {
+     printf("error in ELPA solve \n");
+#ifdef WITH_MPI
+     mpierr = MPI_Abort(MPI_COMM_WORLD, 99);
+#endif
+   }
+
+   if (myid == 0) {
+     printf("\n");
+     printf("2stage ELPA complex solver complete\n");
+     printf("\n");
+   }
+
+   for (i=0;i<na_rows*na_cols;i++){
+      a[i] = as[i];
+      z[i] = as[i];
+   }
+   if (myid == 0) {
+     printf("\n");
+     printf("Entering auto-chosen ELPA complex solver\n");
+     printf("\n");
+   }
+#ifdef WITH_MPI
+   mpierr = MPI_Barrier(MPI_COMM_WORLD);
+#endif
+   useGPU = 0;
+   THIS_COMPLEX_ELPA_KERNEL_API = ELPA_2STAGE_COMPLEX_DEFAULT;
+   success = elpa_solve_evp_complex_single(na, nev, a, na_rows, ev, z, na_rows, nblk, na_cols, mpi_comm_rows, mpi_comm_cols, my_mpi_comm_world, THIS_COMPLEX_ELPA_KERNEL_API, useGPU, "auto");
+
+   if (success != 1) {
+     printf("error in ELPA solve \n");
+#ifdef WITH_MPI
+     mpierr = MPI_Abort(MPI_COMM_WORLD, 99);
+#endif
+   }
+
+   if (myid == 0) {
+     printf("\n");
+     printf("Auto-chosen ELPA complex solver complete\n");
+     printf("\n");
+   }
+
+   /* check the results */
+   status = check_correctness_complex_single_f(na, nev, na_rows, na_cols, as, z, ev, sc_desc, myid);
+
+   if (status !=0){
+     printf("The computed EVs are not correct !\n");
+   }
+   if (status ==0){
+     if (myid == 0) {
+       printf("All ok!\n");
+     }
+   }
+
+   free(sc_desc);
+   free(a);
+   free(z);
+   free(as);
+   free(ev);
+
+#ifdef WITH_MPI
+   MPI_Finalize();
+#endif
+   return 0;
+}
diff --git a/test/C/elpa_driver_real_c_version_single.c b/test/C/driver/legacy_interface/legacy_single_real_driver_c_version.c
similarity index 100%
rename from test/C/elpa_driver_real_c_version_single.c
rename to test/C/driver/legacy_interface/legacy_single_real_driver_c_version.c
diff --git a/test/C/elpa1_test_complex_c_version.c b/test/C/elpa1/legacy_interface/legacy_complex_1stage_c_version.c
similarity index 100%
rename from test/C/elpa1_test_complex_c_version.c
rename to test/C/elpa1/legacy_interface/legacy_complex_1stage_c_version.c
diff --git a/test/C/elpa1_test_real_c_version.c b/test/C/elpa1/legacy_interface/legacy_real_1stage_c_version.c
similarity index 100%
rename from test/C/elpa1_test_real_c_version.c
rename to test/C/elpa1/legacy_interface/legacy_real_1stage_c_version.c
diff --git a/test/C/elpa2_test_complex_c_version.c b/test/C/elpa2/legacy_interface/legacy_complex_2stage_c_version.c
similarity index 100%
rename from test/C/elpa2_test_complex_c_version.c
rename to test/C/elpa2/legacy_interface/legacy_complex_2stage_c_version.c
diff --git a/test/C/elpa2_test_real_c_version.c b/test/C/elpa2/legacy_interface/legacy_real_2stage_c_version.c
similarity index 100%
rename from test/C/elpa2_test_real_c_version.c
rename to test/C/elpa2/legacy_interface/legacy_real_2stage_c_version.c
diff --git a/test/Fortran/test_driver_complex.F90 b/test/Fortran/driver/legacy_interface/legacy_complex_driver.F90
similarity index 99%
rename from test/Fortran/test_driver_complex.F90
rename to test/Fortran/driver/legacy_interface/legacy_complex_driver.F90
index 31ccc937..a0e6fca6 100644
--- a/test/Fortran/test_driver_complex.F90
+++ b/test/Fortran/driver/legacy_interface/legacy_complex_driver.F90
@@ -144,7 +144,7 @@ program test_complex2
    STATUS = 0
 
 #define DATATYPE COMPLEX
-#include "elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/test_driver_real.F90 b/test/Fortran/driver/legacy_interface/legacy_real_driver.F90
similarity index 99%
rename from test/Fortran/test_driver_real.F90
rename to test/Fortran/driver/legacy_interface/legacy_real_driver.F90
index a444416e..948d537c 100644
--- a/test/Fortran/test_driver_real.F90
+++ b/test/Fortran/driver/legacy_interface/legacy_real_driver.F90
@@ -144,7 +144,7 @@ program test_real2
    STATUS = 0
 
 #define DATATYPE REAL
-#include "elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/test_driver_complex_single.F90 b/test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90
similarity index 99%
rename from test/Fortran/test_driver_complex_single.F90
rename to test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90
index f7341336..c3723245 100644
--- a/test/Fortran/test_driver_complex_single.F90
+++ b/test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90
@@ -144,7 +144,7 @@ program test_complex2
    STATUS = 0
 
 #define DATATYPE COMPLEX
-#include "elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/test_driver_real_single.F90 b/test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90
similarity index 99%
rename from test/Fortran/test_driver_real_single.F90
rename to test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90
index 2ea0539b..12cc85b5 100644
--- a/test/Fortran/test_driver_real_single.F90
+++ b/test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90
@@ -143,7 +143,7 @@ program test_real2
    STATUS = 0
 
 #define DATATYPE REAL
-#include "elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/complex_1stage.F90 b/test/Fortran/elpa1/complex_1stage.F90
similarity index 99%
rename from test/Fortran/complex_1stage.F90
rename to test/Fortran/elpa1/complex_1stage.F90
index 122488e2..f18c04f6 100644
--- a/test/Fortran/complex_1stage.F90
+++ b/test/Fortran/elpa1/complex_1stage.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/complex_1stage_gpu.F90 b/test/Fortran/elpa1/complex_1stage_gpu.F90
similarity index 99%
rename from test/Fortran/complex_1stage_gpu.F90
rename to test/Fortran/elpa1/complex_1stage_gpu.F90
index 63cdb981..802ef5ea 100644
--- a/test/Fortran/complex_1stage_gpu.F90
+++ b/test/Fortran/elpa1/complex_1stage_gpu.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/elpa1/complex.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex.F90
similarity index 99%
rename from test/Fortran/elpa1/complex.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_complex.F90
index e7aee895..cb0d58f1 100644
--- a/test/Fortran/elpa1/complex.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_complex.F90
@@ -139,7 +139,7 @@ program test_complex_double_precision
 
 #define COMPLEXCASE
 #define ELPA1
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa1/complex_cholesky.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex_cholesky.F90
similarity index 100%
rename from test/Fortran/elpa1/complex_cholesky.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_complex_cholesky.F90
diff --git a/test/Fortran/elpa1/complex_gpu.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90
similarity index 99%
rename from test/Fortran/elpa1/complex_gpu.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90
index 035a838c..33752be7 100644
--- a/test/Fortran/elpa1/complex_gpu.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90
@@ -147,7 +147,7 @@ program test_complex_gpu_version_double_precision
 
 #define COMPLEXCASE
 #define ELPA1
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa1/complex_invert_trm.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex_invert_trm.F90
similarity index 100%
rename from test/Fortran/elpa1/complex_invert_trm.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_complex_invert_trm.F90
diff --git a/test/Fortran/test_transpose_multiply_complex.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex_transpose_multiply.F90
similarity index 100%
rename from test/Fortran/test_transpose_multiply_complex.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_complex_transpose_multiply.F90
diff --git a/test/Fortran/elpa1/real.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real.F90
similarity index 99%
rename from test/Fortran/elpa1/real.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_real.F90
index 95aa98dd..47854888 100644
--- a/test/Fortran/elpa1/real.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_real.F90
@@ -141,7 +141,7 @@ program test_real_double_precision
 
 #define REALCASE
 #define ELPA1
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/test_real_with_c.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real_1stage_with_c.F90
similarity index 100%
rename from test/Fortran/test_real_with_c.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_real_1stage_with_c.F90
diff --git a/test/Fortran/elpa1/real_cholesky.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real_cholesky.F90
similarity index 100%
rename from test/Fortran/elpa1/real_cholesky.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_real_cholesky.F90
diff --git a/test/Fortran/elpa1/real_gpu.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90
similarity index 99%
rename from test/Fortran/elpa1/real_gpu.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90
index 97a6175a..7b7ea360 100644
--- a/test/Fortran/elpa1/real_gpu.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90
@@ -149,7 +149,7 @@ program test_real_gpu_version_double_precision
 
 #define REALCASE
 #define ELPA1
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa1/real_invert_trm.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real_invert_trm.F90
similarity index 100%
rename from test/Fortran/elpa1/real_invert_trm.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_real_invert_trm.F90
diff --git a/test/Fortran/test_transpose_multiply_real.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real_transpose_multiply.F90
similarity index 100%
rename from test/Fortran/test_transpose_multiply_real.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_real_transpose_multiply.F90
diff --git a/test/Fortran/elpa1/single_complex.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90
similarity index 99%
rename from test/Fortran/elpa1/single_complex.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90
index cade218b..13746c8f 100644
--- a/test/Fortran/elpa1/single_complex.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90
@@ -139,7 +139,7 @@ program test_complex_single_precision
 
 #define COMPLEXCASE
 #define ELPA1
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa1/single_complex_cholesky.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_cholesky.F90
similarity index 100%
rename from test/Fortran/elpa1/single_complex_cholesky.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_complex_cholesky.F90
diff --git a/test/Fortran/elpa1/single_complex_gpu.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90
similarity index 99%
rename from test/Fortran/elpa1/single_complex_gpu.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90
index b74874b8..069757ed 100644
--- a/test/Fortran/elpa1/single_complex_gpu.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90
@@ -147,7 +147,7 @@ program test_complex_gpu_version_single_precision
 
 #define COMPLEXCASE
 #define ELPA1
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa1/single_complex_invert_trm.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_invert_trm.F90
similarity index 100%
rename from test/Fortran/elpa1/single_complex_invert_trm.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_complex_invert_trm.F90
diff --git a/test/Fortran/test_transpose_multiply_complex_single.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_transpose_multiply.F90
similarity index 100%
rename from test/Fortran/test_transpose_multiply_complex_single.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_complex_transpose_multiply.F90
diff --git a/test/Fortran/elpa1/single_real.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real.F90
similarity index 99%
rename from test/Fortran/elpa1/single_real.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_real.F90
index d637c677..4a25d713 100644
--- a/test/Fortran/elpa1/single_real.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_single_real.F90
@@ -140,7 +140,7 @@ program test_real_single_precision
 
 #define REALCASE
 #define ELPA1
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa1/single_real_cholesky.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real_cholesky.F90
similarity index 100%
rename from test/Fortran/elpa1/single_real_cholesky.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_real_cholesky.F90
diff --git a/test/Fortran/elpa1/single_real_gpu.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90
similarity index 99%
rename from test/Fortran/elpa1/single_real_gpu.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90
index 7b0670da..44b8a32a 100644
--- a/test/Fortran/elpa1/single_real_gpu.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90
@@ -149,7 +149,7 @@ program test_real_gpu_version_single_precision
 
 #define REALCASE
 #define ELPA1
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa1/single_real_invert_trm.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real_invert_trm.F90
similarity index 100%
rename from test/Fortran/elpa1/single_real_invert_trm.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_real_invert_trm.F90
diff --git a/test/Fortran/test_transpose_multiply_real_single.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real_transpose_multiply.F90
similarity index 100%
rename from test/Fortran/test_transpose_multiply_real_single.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_real_transpose_multiply.F90
diff --git a/test/Fortran/elpa1/single_toeplitz.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90
similarity index 99%
rename from test/Fortran/elpa1/single_toeplitz.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90
index a284dfcf..dd88ef45 100644
--- a/test/Fortran/elpa1/single_toeplitz.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90
@@ -131,7 +131,7 @@ program test_solve_tridi_single
 
 !#define DATATYPE REAL
 !#define ELPA1
-!#include "../elpa_print_headers.X90"
+!#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa1/toeplitz.F90 b/test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90
similarity index 99%
rename from test/Fortran/elpa1/toeplitz.F90
rename to test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90
index a41ef112..6bbfee35 100644
--- a/test/Fortran/elpa1/toeplitz.F90
+++ b/test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90
@@ -131,7 +131,7 @@ program test_solve_tridi
 
 !#define DATATYPE REAL
 !#define ELPA1
-!#include "../elpa_print_headers.X90"
+!#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/real_1stage.F90 b/test/Fortran/elpa1/real_1stage.F90
similarity index 99%
rename from test/Fortran/real_1stage.F90
rename to test/Fortran/elpa1/real_1stage.F90
index 73bc3bd8..90383191 100644
--- a/test/Fortran/real_1stage.F90
+++ b/test/Fortran/elpa1/real_1stage.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/real_1stage_gpu.F90 b/test/Fortran/elpa1/real_1stage_gpu.F90
similarity index 99%
rename from test/Fortran/real_1stage_gpu.F90
rename to test/Fortran/elpa1/real_1stage_gpu.F90
index 40e0ed8b..ec859a51 100644
--- a/test/Fortran/real_1stage_gpu.F90
+++ b/test/Fortran/elpa1/real_1stage_gpu.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/single_complex_1stage.F90 b/test/Fortran/elpa1/single_complex_1stage.F90
similarity index 99%
rename from test/Fortran/single_complex_1stage.F90
rename to test/Fortran/elpa1/single_complex_1stage.F90
index f1f7f281..0a1a4dfd 100644
--- a/test/Fortran/single_complex_1stage.F90
+++ b/test/Fortran/elpa1/single_complex_1stage.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/single_complex_1stage_gpu.F90 b/test/Fortran/elpa1/single_complex_1stage_gpu.F90
similarity index 99%
rename from test/Fortran/single_complex_1stage_gpu.F90
rename to test/Fortran/elpa1/single_complex_1stage_gpu.F90
index e96712bb..f48f59ee 100644
--- a/test/Fortran/single_complex_1stage_gpu.F90
+++ b/test/Fortran/elpa1/single_complex_1stage_gpu.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/single_real_1stage.F90 b/test/Fortran/elpa1/single_real_1stage.F90
similarity index 99%
rename from test/Fortran/single_real_1stage.F90
rename to test/Fortran/elpa1/single_real_1stage.F90
index 8190fd4e..c255c789 100644
--- a/test/Fortran/single_real_1stage.F90
+++ b/test/Fortran/elpa1/single_real_1stage.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/single_real_1stage_gpu.F90 b/test/Fortran/elpa1/single_real_1stage_gpu.F90
similarity index 99%
rename from test/Fortran/single_real_1stage_gpu.F90
rename to test/Fortran/elpa1/single_real_1stage_gpu.F90
index fc4725e1..1252405d 100644
--- a/test/Fortran/single_real_1stage_gpu.F90
+++ b/test/Fortran/elpa1/single_real_1stage_gpu.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/complex_2stage.F90 b/test/Fortran/elpa2/complex_2stage.F90
similarity index 99%
rename from test/Fortran/complex_2stage.F90
rename to test/Fortran/elpa2/complex_2stage.F90
index 6178bb48..31f4415b 100644
--- a/test/Fortran/complex_2stage.F90
+++ b/test/Fortran/elpa2/complex_2stage.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/complex_2stage_banded.F90 b/test/Fortran/elpa2/complex_2stage_banded.F90
similarity index 99%
rename from test/Fortran/complex_2stage_banded.F90
rename to test/Fortran/elpa2/complex_2stage_banded.F90
index e7b4c054..23c31e53 100644
--- a/test/Fortran/complex_2stage_banded.F90
+++ b/test/Fortran/elpa2/complex_2stage_banded.F90
@@ -41,7 +41,7 @@
 !
 !
 #include "config-f90.h"
-#include "assert.h"
+#include "../assert.h"
 !>
 !> Fortran test programm to demonstrates the use of
 !> ELPA 2 complex case library.
@@ -154,7 +154,7 @@ program test_complex2_double_banded
 
    STATUS = 0
 
-#include "elpa_print_headers.X90"
+#include "../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/complex_2stage_gpu.F90 b/test/Fortran/elpa2/complex_2stage_gpu.F90
similarity index 99%
rename from test/Fortran/complex_2stage_gpu.F90
rename to test/Fortran/elpa2/complex_2stage_gpu.F90
index 751e9ee9..63102043 100644
--- a/test/Fortran/complex_2stage_gpu.F90
+++ b/test/Fortran/elpa2/complex_2stage_gpu.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/elpa2/complex.F90 b/test/Fortran/elpa2/legacy_interface/legacy_complex.F90
similarity index 99%
rename from test/Fortran/elpa2/complex.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_complex.F90
index bc0a74b8..5d29d30e 100644
--- a/test/Fortran/elpa2/complex.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_complex.F90
@@ -154,7 +154,7 @@ program test_complex2_double_precision
 
    STATUS = 0
 
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/complex_api.F90 b/test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90
similarity index 99%
rename from test/Fortran/elpa2/complex_api.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90
index 00d2efd5..40692972 100644
--- a/test/Fortran/elpa2/complex_api.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90
@@ -154,7 +154,7 @@ program test_complex2_choose_kernel_with_api_double_precision
    STATUS = 0
 
 #define COMPLEXCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/complex_default_kernel.F90 b/test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90
similarity index 99%
rename from test/Fortran/elpa2/complex_default_kernel.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90
index f5bd725c..0462107a 100644
--- a/test/Fortran/elpa2/complex_default_kernel.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90
@@ -154,7 +154,7 @@ program test_complex2_default_kernel_double_precision
    STATUS = 0
 
 #define COMPLEXCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/complex_gpu.F90 b/test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90
similarity index 99%
rename from test/Fortran/elpa2/complex_gpu.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90
index 1c121d5c..efcb2bda 100644
--- a/test/Fortran/elpa2/complex_gpu.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90
@@ -155,7 +155,7 @@ program test_complex2_gpu_version_double_precision
    STATUS = 0
 
 #define COMPLEXCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/real.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real.F90
similarity index 99%
rename from test/Fortran/elpa2/real.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_real.F90
index 7ac2a8ba..aa5dec1d 100644
--- a/test/Fortran/elpa2/real.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_real.F90
@@ -149,7 +149,7 @@ program test_real2_double_precision
    STATUS = 0
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/real_api.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real_api.F90
similarity index 99%
rename from test/Fortran/elpa2/real_api.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_real_api.F90
index 429adafe..a3d08513 100644
--- a/test/Fortran/elpa2/real_api.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_real_api.F90
@@ -152,7 +152,7 @@ program test_real2_choose_kernel_with_api_double_precision
    STATUS = 0
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/real_default_kernel.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90
similarity index 99%
rename from test/Fortran/elpa2/real_default_kernel.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90
index 07deeed0..b6a7465a 100644
--- a/test/Fortran/elpa2/real_default_kernel.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90
@@ -150,7 +150,7 @@ program test_real2_default_kernel_double_precision
    STATUS = 0
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/real_gpu.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90
similarity index 99%
rename from test/Fortran/elpa2/real_gpu.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90
index b832968a..f12e420b 100644
--- a/test/Fortran/elpa2/real_gpu.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90
@@ -153,7 +153,7 @@ program test_real2_gpu_version_double_precision
    STATUS = 0
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/real_qr.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90
similarity index 99%
rename from test/Fortran/elpa2/real_qr.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90
index ec5eab1c..2eae8cf7 100644
--- a/test/Fortran/elpa2/real_qr.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90
@@ -191,7 +191,7 @@ program test_real2_default_kernel_qr_decomposition_double_precision
 
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/single_complex.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90
similarity index 99%
rename from test/Fortran/elpa2/single_complex.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90
index a6e74a57..c22c7c9b 100644
--- a/test/Fortran/elpa2/single_complex.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90
@@ -154,7 +154,7 @@ program test_complex2_single_precision
    STATUS = 0
 
 #define COMPLEXCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/single_complex_api.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90
similarity index 99%
rename from test/Fortran/elpa2/single_complex_api.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90
index 1ee819c5..0155cd1f 100644
--- a/test/Fortran/elpa2/single_complex_api.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90
@@ -154,7 +154,7 @@ program test_complex2_choose_kernel_with_api_single_precision
    STATUS = 0
 
 #define COMPLEXCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/single_complex_default_kernel.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90
similarity index 99%
rename from test/Fortran/elpa2/single_complex_default_kernel.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90
index 3ee9aedd..74b9f266 100644
--- a/test/Fortran/elpa2/single_complex_default_kernel.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90
@@ -154,7 +154,7 @@ program test_complex2_default_kernel_single_precision
    STATUS = 0
 
 #define COMPLEXCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/single_complex_gpu.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90
similarity index 99%
rename from test/Fortran/elpa2/single_complex_gpu.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90
index d5fd7e1d..b4946e9d 100644
--- a/test/Fortran/elpa2/single_complex_gpu.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90
@@ -155,7 +155,7 @@ program test_complex2_gpu_version_single_precision
    STATUS = 0
 
 #define COMPLEXCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/single_real.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real.F90
similarity index 99%
rename from test/Fortran/elpa2/single_real.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_single_real.F90
index dfa5c670..bbe7d10d 100644
--- a/test/Fortran/elpa2/single_real.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real.F90
@@ -149,7 +149,7 @@ program test_real2_single_precision
    STATUS = 0
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/single_real_api.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90
similarity index 99%
rename from test/Fortran/elpa2/single_real_api.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90
index 7380ee5b..933005b8 100644
--- a/test/Fortran/elpa2/single_real_api.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90
@@ -152,7 +152,7 @@ program test_real2_choose_kernel_with_api_single_precision
    STATUS = 0
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/single_real_default_kernel.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90
similarity index 99%
rename from test/Fortran/elpa2/single_real_default_kernel.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90
index a2c03b00..cf7a009a 100644
--- a/test/Fortran/elpa2/single_real_default_kernel.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90
@@ -150,7 +150,7 @@ program test_real2_default_kernel_single_precision
    STATUS = 0
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/single_real_gpu.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90
similarity index 99%
rename from test/Fortran/elpa2/single_real_gpu.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90
index 4ad959e3..6ae92532 100644
--- a/test/Fortran/elpa2/single_real_gpu.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90
@@ -153,7 +153,7 @@ program test_real2_gpu_version_single_precision
    STATUS = 0
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/elpa2/single_real_qr.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90
similarity index 99%
rename from test/Fortran/elpa2/single_real_qr.F90
rename to test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90
index e975b50d..4b4460b1 100644
--- a/test/Fortran/elpa2/single_real_qr.F90
+++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90
@@ -195,7 +195,7 @@ program test_real2_default_kernel_qr_decomposition_single_precision
    endif
 
 #define REALCASE
-#include "../elpa_print_headers.X90"
+#include "../../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/real_2stage.F90 b/test/Fortran/elpa2/real_2stage.F90
similarity index 99%
rename from test/Fortran/real_2stage.F90
rename to test/Fortran/elpa2/real_2stage.F90
index 103ede13..4bda2617 100644
--- a/test/Fortran/real_2stage.F90
+++ b/test/Fortran/elpa2/real_2stage.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/real_2stage_banded.F90 b/test/Fortran/elpa2/real_2stage_banded.F90
similarity index 99%
rename from test/Fortran/real_2stage_banded.F90
rename to test/Fortran/elpa2/real_2stage_banded.F90
index 156cf4ef..3854ee71 100644
--- a/test/Fortran/real_2stage_banded.F90
+++ b/test/Fortran/elpa2/real_2stage_banded.F90
@@ -41,7 +41,7 @@
 !
 !
 #include "config-f90.h"
-#include "assert.h"
+#include "../assert.h"
 !>
 !> Fortran test programm to demonstrates the use of
 !> ELPA 2 real case library.
@@ -149,7 +149,7 @@ program test_real2_double_banded
    STATUS = 0
 
 #define REALCASE
-#include "elpa_print_headers.X90"
+#include "../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/real_2stage_gpu.F90 b/test/Fortran/elpa2/real_2stage_gpu.F90
similarity index 99%
rename from test/Fortran/real_2stage_gpu.F90
rename to test/Fortran/elpa2/real_2stage_gpu.F90
index 4a1e2620..c3421928 100644
--- a/test/Fortran/real_2stage_gpu.F90
+++ b/test/Fortran/elpa2/real_2stage_gpu.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/single_complex_2stage.F90 b/test/Fortran/elpa2/single_complex_2stage.F90
similarity index 99%
rename from test/Fortran/single_complex_2stage.F90
rename to test/Fortran/elpa2/single_complex_2stage.F90
index 68229b18..2073c004 100644
--- a/test/Fortran/single_complex_2stage.F90
+++ b/test/Fortran/elpa2/single_complex_2stage.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/single_complex_2stage_banded.F90 b/test/Fortran/elpa2/single_complex_2stage_banded.F90
similarity index 99%
rename from test/Fortran/single_complex_2stage_banded.F90
rename to test/Fortran/elpa2/single_complex_2stage_banded.F90
index d5de958e..e82abf83 100644
--- a/test/Fortran/single_complex_2stage_banded.F90
+++ b/test/Fortran/elpa2/single_complex_2stage_banded.F90
@@ -41,7 +41,7 @@
 !
 !
 #include "config-f90.h"
-#include "assert.h"
+#include "../assert.h"
 !>
 !> Fortran test programm to demonstrates the use of
 !> ELPA 2 complex case library.
@@ -154,7 +154,7 @@ program test_complex2_single_banded
 
    STATUS = 0
 
-#include "elpa_print_headers.X90"
+#include "../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/single_complex_2stage_gpu.F90 b/test/Fortran/elpa2/single_complex_2stage_gpu.F90
similarity index 99%
rename from test/Fortran/single_complex_2stage_gpu.F90
rename to test/Fortran/elpa2/single_complex_2stage_gpu.F90
index c364d367..542cb79c 100644
--- a/test/Fortran/single_complex_2stage_gpu.F90
+++ b/test/Fortran/elpa2/single_complex_2stage_gpu.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/single_real_2stage.F90 b/test/Fortran/elpa2/single_real_2stage.F90
similarity index 99%
rename from test/Fortran/single_real_2stage.F90
rename to test/Fortran/elpa2/single_real_2stage.F90
index de44180f..73e900ae 100644
--- a/test/Fortran/single_real_2stage.F90
+++ b/test/Fortran/elpa2/single_real_2stage.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/single_real_2stage_banded.F90 b/test/Fortran/elpa2/single_real_2stage_banded.F90
similarity index 99%
rename from test/Fortran/single_real_2stage_banded.F90
rename to test/Fortran/elpa2/single_real_2stage_banded.F90
index 6f2f9fa0..405dc850 100644
--- a/test/Fortran/single_real_2stage_banded.F90
+++ b/test/Fortran/elpa2/single_real_2stage_banded.F90
@@ -41,7 +41,7 @@
 !
 !
 #include "config-f90.h"
-#include "assert.h"
+#include "../assert.h"
 !>
 !> Fortran test programm to demonstrates the use of
 !> ELPA 2 real case library.
@@ -149,7 +149,7 @@ program test_real2_single_banded
    STATUS = 0
 
 #define REALCASE
-#include "elpa_print_headers.X90"
+#include "../elpa_print_headers.X90"
 
 #ifdef HAVE_DETAILED_TIMINGS
 
diff --git a/test/Fortran/single_real_2stage_gpu.F90 b/test/Fortran/elpa2/single_real_2stage_gpu.F90
similarity index 99%
rename from test/Fortran/single_real_2stage_gpu.F90
rename to test/Fortran/elpa2/single_real_2stage_gpu.F90
index cbc2bc74..6a78bf98 100644
--- a/test/Fortran/single_real_2stage_gpu.F90
+++ b/test/Fortran/elpa2/single_real_2stage_gpu.F90
@@ -42,7 +42,7 @@
 !
 #include "config-f90.h"
 
-#include "assert.h"
+#include "../assert.h"
 
 program test_interface
    use precision
diff --git a/test/Fortran/test_transpose_multiply_complex_2stage.F90 b/test/Fortran/test_transpose_multiply_complex_2stage.F90
deleted file mode 100644
index 126c4583..00000000
--- a/test/Fortran/test_transpose_multiply_complex_2stage.F90
+++ /dev/null
@@ -1,316 +0,0 @@
-!    This file is part of ELPA.
-!
-!    The ELPA library was originally created by the ELPA consortium,
-!    consisting of the following organizations:
-!
-!    - Max Planck Computing and Data Facility (MPCDF), formerly known as
-!      Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG),
-!    - Bergische Universität Wuppertal, Lehrstuhl für angewandte
-!      Informatik,
-!    - Technische Universität München, Lehrstuhl für Informatik mit
-!      Schwerpunkt Wissenschaftliches Rechnen ,
-!    - Fritz-Haber-Institut, Berlin, Abt. Theorie,
-!    - Max-Plack-Institut für Mathematik in den Naturwissenschaften,
-!      Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition,
-!      and
-!    - IBM Deutschland GmbH
-!
-!
-!    More information can be found here:
-!    http://elpa.mpcdf.mpg.de/
-!
-!    ELPA is free software: you can redistribute it and/or modify
-!    it under the terms of the version 3 of the license of the
-!    GNU Lesser General Public License as published by the Free
-!    Software Foundation.
-!
-!    ELPA is distributed in the hope that it will be useful,
-!    but WITHOUT ANY WARRANTY; without even the implied warranty of
-!    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-!    GNU Lesser General Public License for more details.
-!
-!    You should have received a copy of the GNU Lesser General Public License
-!    along with ELPA.  If not, see <http://www.gnu.org/licenses/>
-!
-!    ELPA reflects a substantial effort on the part of the original
-!    ELPA consortium, and we ask you to respect the spirit of the
-!    license that we chose: i.e., please contribute any changes you
-!    may have back to the original ELPA library distribution, and keep
-!    any derivatives of ELPA under the same license that we chose for
-!    the original distribution, the GNU Lesser General Public License.
-!
-!
-#include "config-f90.h"
-!>
-
-program test_transpose_multiply
-
-   use precision
-   use elpa1
-   use elpa_utilities, only : error_unit
-#ifdef WITH_OPENMP
-   use test_util
-#endif
-
-   use mod_read_input_parameters
-   use mod_check_correctness
-   use mod_setup_mpi
-   use mod_blacs_infrastructure
-   use mod_prepare_matrix
-
-   use elpa_mpi
-#ifdef HAVE_REDIRECT
-   use redirect
-#endif
-#ifdef HAVE_DETAILED_TIMINGS
-  use timings
-#endif
-  use output_types
-
-   implicit none
-
-   !-------------------------------------------------------------------------------
-   ! Please set system size parameters below!
-   ! na:   System size
-   ! nev:  Number of eigenvectors to be calculated
-   ! nblk: Blocking factor in block cyclic distribution
-   !-------------------------------------------------------------------------------
-   integer(kind=ik)           :: nblk
-   integer(kind=ik)           :: na, nev
-
-   integer(kind=ik)           :: np_rows, np_cols, na_rows, na_cols
-
-   integer(kind=ik)           :: myid, nprocs, my_prow, my_pcol, mpi_comm_rows, mpi_comm_cols
-   integer(kind=ik)           :: i, mpierr, my_blacs_ctxt, sc_desc(9), info, nprow, npcol
-
-   integer, external          :: numroc
-
-   real(kind=rk8), allocatable    :: ev(:)
-   complex(kind=ck8), allocatable :: a(:,:), b(:,:), c(:,:), z(:,:), tmp1(:,:), tmp2(:,:), as(:,:)
-   complex(kind=ck8), parameter   :: CZERO = (0.0_rk8,0.0_rk8), CONE = (1.0_rk8,0.0_rk8)
-   real(kind=rk8)              :: norm, normmax
-#ifdef WITH_MPI
-   real(kind=rk8)              :: pzlange
-#else
-   real(kind=rk8)              :: zlange
-#endif
-   integer(kind=ik)           :: STATUS
-#ifdef WITH_OPENMP
-   integer(kind=ik)           :: omp_get_max_threads,  required_mpi_thread_level, &
-                                 provided_mpi_thread_level
-#endif
-   type(output_t)             :: write_to_file
-   logical                    :: success
-   character(len=8)           :: task_suffix
-   integer(kind=ik)           :: j
-   !-------------------------------------------------------------------------------
-
-   success = .true.
-
-   call read_input_parameters_traditional(na, nev, nblk, write_to_file)
-
-   !-------------------------------------------------------------------------------
-   !  MPI Initialization
-   call setup_mpi(myid, nprocs)
-
-   STATUS = 0
-
-#ifdef HAVE_DETAILED_TIMINGS
-
-   ! initialise the timing functionality
-
-#ifdef HAVE_LIBPAPI
-   call timer%measure_flops(.true.)
-#endif
-
-   call timer%measure_allocated_memory(.true.)
-   call timer%measure_virtual_memory(.true.)
-   call timer%measure_max_allocated_memory(.true.)
-
-   call timer%set_print_options(&
-#ifdef HAVE_LIBPAPI
-                print_flop_count=.true., &
-                print_flop_rate=.true., &
-#endif
-                print_allocated_memory = .true. , &
-                print_virtual_memory=.true., &
-                print_max_allocated_memory=.true.)
-
-
-  call timer%enable()
-
-  call timer%start("program")
-#endif
-
-   do np_cols = NINT(SQRT(REAL(nprocs))),2,-1
-      if(mod(nprocs,np_cols) == 0 ) exit
-   enddo
-
-   ! at the end of the above loop, nprocs is always divisible by np_cols
-
-   np_rows = nprocs/np_cols
-
-   if(myid==0) then
-      print '(3(a,i0))','Matrix size=',na,', Block size=',nblk
-      print '(3(a,i0))','Number of processor rows=',np_rows,', cols=',np_cols,', total=',nprocs
-      print *
-   endif
-
-   !-------------------------------------------------------------------------------
-   ! Set up BLACS context and MPI communicators
-   !
-   ! The BLACS context is only necessary for using Scalapack.
-   !
-   ! For ELPA, the MPI communicators along rows/cols are sufficient,
-   ! and the grid setup may be done in an arbitrary way as long as it is
-   ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every
-   ! process has a unique (my_prow,my_pcol) pair).
-
-   call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, &
-                         nprow, npcol, my_prow, my_pcol)
-
-   if (myid==0) then
-     print '(a)','| Past BLACS_Gridinfo.'
-   end if
-
-   ! All ELPA routines need MPI communicators for communicating within
-   ! rows or columns of processes, these are set in elpa_get_communicators.
-
-   mpierr = elpa_get_communicators(mpi_comm_world, my_prow, my_pcol, &
-                                   mpi_comm_rows, mpi_comm_cols)
-
-   if (myid==0) then
-     print '(a)','| Past split communicator setup for rows and columns.'
-   end if
-
-   call set_up_blacs_descriptor(na ,nblk, my_prow, my_pcol, np_rows, np_cols, &
-                                na_rows, na_cols, sc_desc, my_blacs_ctxt, info)
-
-   if (myid==0) then
-     print '(a)','| Past scalapack descriptor setup.'
-   end if
-
-   !-------------------------------------------------------------------------------
-   ! Allocate matrices and set up a test matrix for the eigenvalue problem
-#ifdef HAVE_DETAILED_TIMINGS
-   call timer%start("set up matrix")
-#endif
-   allocate(a (na_rows,na_cols))
-   allocate(b (na_rows,na_cols))
-   allocate(c (na_rows,na_cols))
-
-   allocate(z (na_rows,na_cols))
-   allocate(as(na_rows,na_cols))
-
-   allocate(ev(na))
-   call prepare_matrix(na, myid, sc_desc, a, z, as)
-   b(:,:) = 2.0_ck8 * a(:,:)
-   c(:,:) = 0.0_ck8
-
-#ifdef HAVE_DETAILED_TIMINGS
-   call timer%stop("set up matrix")
-#endif
-
-   !-------------------------------------------------------------------------------
-   ! Calculate eigenvalues/eigenvectors
-
-   if (myid==0) then
-     print '(a)','| Compute c= a**T * b ... '
-     print *
-   end if
-#ifdef WITH_MPI
-   call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only
-#endif
-
-   success = elpa_mult_ah_b_complex_double("F","F", na, na, a, na_rows, na_cols, b, na_rows, na_cols, &
-                                           nblk, mpi_comm_rows, mpi_comm_cols, c, na_rows, na_cols)
-
-   if (.not.(success)) then
-      write(error_unit,*) " elpa_mult_at_b_complex produced an error! Aborting..."
-#ifdef WITH_MPI
-      call MPI_ABORT(mpi_comm_world, 1, mpierr)
-#endif
-   endif
-
-
-   if (myid==0) then
-     print '(a)','| Solve c = a**T * b complete.'
-     print *
-   end if
-
-
-   !-------------------------------------------------------------------------------
-   ! Test correctness of result (using plain scalapack routines)
-   allocate(tmp1(na_rows,na_cols))
-   allocate(tmp2(na_rows,na_cols))
-
-   tmp1(:,:) = 0.0_ck8
-
-   ! tmp1 = a**T
-#ifdef WITH_MPI
-   call pztranc(na, na, CONE, a, 1, 1, sc_desc, CZERO, tmp1, 1, 1, sc_desc)
-#else
-   tmp1 = transpose(conjg(a))
-#endif
-   ! tmp2 = tmp1 * b
-#ifdef WITH_MPI
-   call pzgemm("N","N", na, na, na, CONE, tmp1, 1, 1, sc_desc, b, 1, 1, &
-               sc_desc, CZERO, tmp2, 1, 1, sc_desc)
-#else
-   call zgemm("N","N", na, na, na, CONE, tmp1, na, b, na, CZERO, tmp2, na)
-#endif
-
-   ! compare tmp2 with c
-   tmp2(:,:) = tmp2(:,:) - c(:,:)
-
-#ifdef WITH_MPI
-   norm = pzlange("M",na, na, tmp2, 1, 1, sc_desc, tmp1)
-#else
-   norm = zlange("M",na, na, tmp2, na_rows, tmp1)
-#endif
-#ifdef WITH_MPI
-   call mpi_allreduce(norm,normmax,1,MPI_REAL8,MPI_MAX,MPI_COMM_WORLD,mpierr)
-#else
-   normmax = norm
-#endif
-   if (myid .eq. 0) then
-     print *," Maximum error of result: ", normmax
-   endif
-
-   if (normmax .gt. 5e-11_rk8) then
-        status = 1
-   endif
-
-   deallocate(a)
-   deallocate(b)
-   deallocate(c)
-
-   deallocate(as)
-
-   deallocate(z)
-   deallocate(tmp1)
-   deallocate(tmp2)
-   deallocate(ev)
-
-#ifdef HAVE_DETAILED_TIMINGS
-   call timer%stop("program")
-   print *," "
-   print *,"Timings program:"
-   print *," "
-   call timer%print("program")
-   print *," "
-   print *,"End timings program"
-   print *," "
-#endif
-
-#ifdef WITH_MPI
-   call blacs_gridexit(my_blacs_ctxt)
-   call mpi_finalize(mpierr)
-#endif
-
-   call EXIT(STATUS)
-
-
-end
-
-!-------------------------------------------------------------------------------
diff --git a/test/Fortran/test_transpose_multiply_complex_single_2stage.F90 b/test/Fortran/test_transpose_multiply_complex_single_2stage.F90
deleted file mode 100644
index e9bb669f..00000000
--- a/test/Fortran/test_transpose_multiply_complex_single_2stage.F90
+++ /dev/null
@@ -1,316 +0,0 @@
-!    This file is part of ELPA.
-!
-!    The ELPA library was originally created by the ELPA consortium,
-!    consisting of the following organizations:
-!
-!    - Max Planck Computing and Data Facility (MPCDF), formerly known as
-!      Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG),
-!    - Bergische Universität Wuppertal, Lehrstuhl für angewandte
-!      Informatik,
-!    - Technische Universität München, Lehrstuhl für Informatik mit
-!      Schwerpunkt Wissenschaftliches Rechnen ,
-!    - Fritz-Haber-Institut, Berlin, Abt. Theorie,
-!    - Max-Plack-Institut für Mathematik in den Naturwissenschaften,
-!      Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition,
-!      and
-!    - IBM Deutschland GmbH
-!
-!
-!    More information can be found here:
-!    http://elpa.mpcdf.mpg.de/
-!
-!    ELPA is free software: you can redistribute it and/or modify
-!    it under the terms of the version 3 of the license of the
-!    GNU Lesser General Public License as published by the Free
-!    Software Foundation.
-!
-!    ELPA is distributed in the hope that it will be useful,
-!    but WITHOUT ANY WARRANTY; without even the implied warranty of
-!    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-!    GNU Lesser General Public License for more details.
-!
-!    You should have received a copy of the GNU Lesser General Public License
-!    along with ELPA.  If not, see <http://www.gnu.org/licenses/>
-!
-!    ELPA reflects a substantial effort on the part of the original
-!    ELPA consortium, and we ask you to respect the spirit of the
-!    license that we chose: i.e., please contribute any changes you
-!    may have back to the original ELPA library distribution, and keep
-!    any derivatives of ELPA under the same license that we chose for
-!    the original distribution, the GNU Lesser General Public License.
-!
-!
-#include "config-f90.h"
-!>
-
-program test_transpose_multiply
-
-   use precision
-   use elpa1
-   use elpa_utilities, only : error_unit
-#ifdef WITH_OPENMP
-   use test_util
-#endif
-
-   use mod_read_input_parameters
-   use mod_check_correctness
-   use mod_setup_mpi
-   use mod_blacs_infrastructure
-   use mod_prepare_matrix
-
-   use elpa_mpi
-#ifdef HAVE_REDIRECT
-   use redirect
-#endif
-#ifdef HAVE_DETAILED_TIMINGS
-  use timings
-#endif
-  use output_types
-
-   implicit none
-
-   !-------------------------------------------------------------------------------
-   ! Please set system size parameters below!
-   ! na:   System size
-   ! nev:  Number of eigenvectors to be calculated
-   ! nblk: Blocking factor in block cyclic distribution
-   !-------------------------------------------------------------------------------
-   integer(kind=ik)           :: nblk
-   integer(kind=ik)           :: na, nev
-
-   integer(kind=ik)           :: np_rows, np_cols, na_rows, na_cols
-
-   integer(kind=ik)           :: myid, nprocs, my_prow, my_pcol, mpi_comm_rows, mpi_comm_cols
-   integer(kind=ik)           :: i, mpierr, my_blacs_ctxt, sc_desc(9), info, nprow, npcol
-
-   integer, external          :: numroc
-
-   real(kind=rk4), allocatable    :: ev(:)
-   complex(kind=ck4), allocatable :: a(:,:), b(:,:), c(:,:), z(:,:), tmp1(:,:), tmp2(:,:), as(:,:)
-   complex(kind=ck4), parameter   :: CZERO = (0.0_rk4,0.0_rk4), CONE = (1.0_rk4,0.0_rk4)
-   real(kind=rk4)              :: norm, normmax
-#ifdef WITH_MPI
-   real(kind=rk4)              :: pclange
-#else
-   real(kind=rk4)              :: clange
-#endif
-   integer(kind=ik)           :: STATUS
-#ifdef WITH_OPENMP
-   integer(kind=ik)           :: omp_get_max_threads,  required_mpi_thread_level, &
-                                 provided_mpi_thread_level
-#endif
-   type(output_t)             :: write_to_file
-   logical                    :: success
-   character(len=8)           :: task_suffix
-   integer(kind=ik)           :: j
-   !-------------------------------------------------------------------------------
-
-   success = .true.
-
-   call read_input_parameters_traditional(na, nev, nblk, write_to_file)
-
-   !-------------------------------------------------------------------------------
-   !  MPI Initialization
-   call setup_mpi(myid, nprocs)
-
-   STATUS = 0
-
-#ifdef HAVE_DETAILED_TIMINGS
-
-   ! initialise the timing functionality
-
-#ifdef HAVE_LIBPAPI
-   call timer%measure_flops(.true.)
-#endif
-
-   call timer%measure_allocated_memory(.true.)
-   call timer%measure_virtual_memory(.true.)
-   call timer%measure_max_allocated_memory(.true.)
-
-   call timer%set_print_options(&
-#ifdef HAVE_LIBPAPI
-                print_flop_count=.true., &
-                print_flop_rate=.true., &
-#endif
-                print_allocated_memory = .true. , &
-                print_virtual_memory=.true., &
-                print_max_allocated_memory=.true.)
-
-
-  call timer%enable()
-
-  call timer%start("program")
-#endif
-
-   do np_cols = NINT(SQRT(REAL(nprocs))),2,-1
-      if(mod(nprocs,np_cols) == 0 ) exit
-   enddo
-
-   ! at the end of the above loop, nprocs is always divisible by np_cols
-
-   np_rows = nprocs/np_cols
-
-   if(myid==0) then
-      print '(3(a,i0))','Matrix size=',na,', Block size=',nblk
-      print '(3(a,i0))','Number of processor rows=',np_rows,', cols=',np_cols,', total=',nprocs
-      print *
-   endif
-
-   !-------------------------------------------------------------------------------
-   ! Set up BLACS context and MPI communicators
-   !
-   ! The BLACS context is only necessary for using Scalapack.
-   !
-   ! For ELPA, the MPI communicators along rows/cols are sufficient,
-   ! and the grid setup may be done in an arbitrary way as long as it is
-   ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every
-   ! process has a unique (my_prow,my_pcol) pair).
-
-   call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, &
-                         nprow, npcol, my_prow, my_pcol)
-
-   if (myid==0) then
-     print '(a)','| Past BLACS_Gridinfo.'
-   end if
-
-   ! All ELPA routines need MPI communicators for communicating within
-   ! rows or columns of processes, these are set in elpa_get_communicators.
-
-   mpierr = elpa_get_communicators(mpi_comm_world, my_prow, my_pcol, &
-                                   mpi_comm_rows, mpi_comm_cols)
-
-   if (myid==0) then
-     print '(a)','| Past split communicator setup for rows and columns.'
-   end if
-
-   call set_up_blacs_descriptor(na ,nblk, my_prow, my_pcol, np_rows, np_cols, &
-                                na_rows, na_cols, sc_desc, my_blacs_ctxt, info)
-
-   if (myid==0) then
-     print '(a)','| Past scalapack descriptor setup.'
-   end if
-
-   !-------------------------------------------------------------------------------
-   ! Allocate matrices and set up a test matrix for the eigenvalue problem
-#ifdef HAVE_DETAILED_TIMINGS
-   call timer%start("set up matrix")
-#endif
-   allocate(a (na_rows,na_cols))
-   allocate(b (na_rows,na_cols))
-   allocate(c (na_rows,na_cols))
-
-   allocate(z (na_rows,na_cols))
-   allocate(as(na_rows,na_cols))
-
-   allocate(ev(na))
-   call prepare_matrix(na, myid, sc_desc, a, z, as)
-   b(:,:) = 2.0_ck4 * a(:,:)
-   c(:,:) = 0.0_ck4
-
-#ifdef HAVE_DETAILED_TIMINGS
-   call timer%stop("set up matrix")
-#endif
-
-   !-------------------------------------------------------------------------------
-   ! Calculate eigenvalues/eigenvectors
-
-   if (myid==0) then
-     print '(a)','| Compute c= a**T * b ... '
-     print *
-   end if
-#ifdef WITH_MPI
-   call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only
-#endif
-
-   success = elpa_mult_ah_b_complex_single("F","F", na, na, a, na_rows, na_cols, b, na_rows, na_cols, &
-                                           nblk, mpi_comm_rows, mpi_comm_cols, c, na_rows, na_cols)
-
-   if (.not.(success)) then
-      write(error_unit,*) " elpa_mult_at_b_complex produced an error! Aborting..."
-#ifdef WITH_MPI
-      call MPI_ABORT(mpi_comm_world, 1, mpierr)
-#endif
-   endif
-
-
-   if (myid==0) then
-     print '(a)','| Solve c = a**T * b complete.'
-     print *
-   end if
-
-
-   !-------------------------------------------------------------------------------
-   ! Test correctness of result (using plain scalapack routines)
-   allocate(tmp1(na_rows,na_cols))
-   allocate(tmp2(na_rows,na_cols))
-
-   tmp1(:,:) = 0.0_ck4
-
-   ! tmp1 = a**T
-#ifdef WITH_MPI
-   call pctranc(na, na, CONE, a, 1, 1, sc_desc, CZERO, tmp1, 1, 1, sc_desc)
-#else
-   tmp1 = transpose(conjg(a))
-#endif
-   ! tmp2 = tmp1 * b
-#ifdef WITH_MPI
-   call pcgemm("N","N", na, na, na, CONE, tmp1, 1, 1, sc_desc, b, 1, 1, &
-               sc_desc, CZERO, tmp2, 1, 1, sc_desc)
-#else
-   call cgemm("N","N", na, na, na, CONE, tmp1, na, b, na, CZERO, tmp2, na)
-#endif
-
-   ! compare tmp2 with c
-   tmp2(:,:) = tmp2(:,:) - c(:,:)
-
-#ifdef WITH_MPI
-   norm = pclange("M",na, na, tmp2, 1, 1, sc_desc, tmp1)
-#else
-   norm = clange("M",na, na, tmp2, na_rows, tmp1)
-#endif
-#ifdef WITH_MPI
-   call mpi_allreduce(norm,normmax,1,MPI_REAL4,MPI_MAX,MPI_COMM_WORLD,mpierr)
-#else
-   normmax = norm
-#endif
-   if (myid .eq. 0) then
-     print *," Maximum error of result: ", normmax
-   endif
-
-   if (normmax .gt. 5e-2_rk4) then
-        status = 1
-   endif
-
-   deallocate(a)
-   deallocate(b)
-   deallocate(c)
-
-   deallocate(as)
-
-   deallocate(z)
-   deallocate(tmp1)
-   deallocate(tmp2)
-   deallocate(ev)
-
-#ifdef HAVE_DETAILED_TIMINGS
-   call timer%stop("program")
-   print *," "
-   print *,"Timings program:"
-   print *," "
-   call timer%print("program")
-   print *," "
-   print *,"End timings program"
-   print *," "
-#endif
-
-#ifdef WITH_MPI
-   call blacs_gridexit(my_blacs_ctxt)
-   call mpi_finalize(mpierr)
-#endif
-
-   call EXIT(STATUS)
-
-
-end
-
-!-------------------------------------------------------------------------------
diff --git a/test/Fortran/test_transpose_multiply_real_single_2stage.F90 b/test/Fortran/test_transpose_multiply_real_single_2stage.F90
deleted file mode 100644
index aa877d21..00000000
--- a/test/Fortran/test_transpose_multiply_real_single_2stage.F90
+++ /dev/null
@@ -1,320 +0,0 @@
-!    This file is part of ELPA.
-!
-!    The ELPA library was originally created by the ELPA consortium,
-!    consisting of the following organizations:
-!
-!    - Max Planck Computing and Data Facility (MPCDF), formerly known as
-!      Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG),
-!    - Bergische Universität Wuppertal, Lehrstuhl für angewandte
-!      Informatik,
-!    - Technische Universität München, Lehrstuhl für Informatik mit
-!      Schwerpunkt Wissenschaftliches Rechnen ,
-!    - Fritz-Haber-Institut, Berlin, Abt. Theorie,
-!    - Max-Plack-Institut für Mathematik in den Naturwissenschaften,
-!      Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition,
-!      and
-!    - IBM Deutschland GmbH
-!
-!
-!    More information can be found here:
-!    http://elpa.mpcdf.mpg.de/
-!
-!    ELPA is free software: you can redistribute it and/or modify
-!    it under the terms of the version 3 of the license of the
-!    GNU Lesser General Public License as published by the Free
-!    Software Foundation.
-!
-!    ELPA is distributed in the hope that it will be useful,
-!    but WITHOUT ANY WARRANTY; without even the implied warranty of
-!    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-!    GNU Lesser General Public License for more details.
-!
-!    You should have received a copy of the GNU Lesser General Public License
-!    along with ELPA.  If not, see <http://www.gnu.org/licenses/>
-!
-!    ELPA reflects a substantial effort on the part of the original
-!    ELPA consortium, and we ask you to respect the spirit of the
-!    license that we chose: i.e., please contribute any changes you
-!    may have back to the original ELPA library distribution, and keep
-!    any derivatives of ELPA under the same license that we chose for
-!    the original distribution, the GNU Lesser General Public License.
-!
-!
-#include "config-f90.h"
-!>
-
-program test_transpose_multiply
-
-   use precision
-   use elpa1
-   use elpa_utilities, only : error_unit
-#ifdef WITH_OPENMP
-   use test_util
-#endif
-
-   use mod_read_input_parameters
-   use mod_check_correctness
-   use mod_setup_mpi
-   use mod_blacs_infrastructure
-   use mod_prepare_matrix
-
-   use elpa_mpi
-#ifdef HAVE_REDIRECT
-   use redirect
-#endif
-#ifdef HAVE_DETAILED_TIMINGS
-  use timings
-#endif
-  use output_types
-
-   implicit none
-
-   !-------------------------------------------------------------------------------
-   ! Please set system size parameters below!
-   ! na:   System size
-   ! nev:  Number of eigenvectors to be calculated
-   ! nblk: Blocking factor in block cyclic distribution
-   !-------------------------------------------------------------------------------
-   integer(kind=ik)           :: nblk
-   integer(kind=ik)           :: na, nev
-
-   integer(kind=ik)           :: np_rows, np_cols, na_rows, na_cols
-
-   integer(kind=ik)           :: myid, nprocs, my_prow, my_pcol, mpi_comm_rows, mpi_comm_cols
-   integer(kind=ik)           :: i, mpierr, my_blacs_ctxt, sc_desc(9), info, nprow, npcol
-
-   integer, external          :: numroc
-
-   real(kind=rk4), allocatable :: a(:,:), b(:,:), c(:,:), z(:,:), tmp1(:,:), tmp2(:,:), as(:,:), ev(:)
-
-   real(kind=rk4)              :: norm, normmax
-#ifdef WITH_MPI
-   real(kind=rk4)              :: pslange
-#else
-   real(kind=rk4)              :: slange
-#endif
-
-   integer(kind=ik)           :: STATUS
-#ifdef WITH_OPENMP
-   integer(kind=ik)           :: omp_get_max_threads,  required_mpi_thread_level, &
-                                 provided_mpi_thread_level
-#endif
-   type(output_t)             :: write_to_file
-   logical                    :: success
-   character(len=8)           :: task_suffix
-   integer(kind=ik)           :: j
-   !-------------------------------------------------------------------------------
-
-   success = .true.
-
-   call read_input_parameters_traditional(na, nev, nblk, write_to_file)
-
-   !-------------------------------------------------------------------------------
-   !  MPI Initialization
-   call setup_mpi(myid, nprocs)
-
-   STATUS = 0
-
-#ifdef HAVE_DETAILED_TIMINGS
-
-   ! initialise the timing functionality
-
-#ifdef HAVE_LIBPAPI
-   call timer%measure_flops(.true.)
-#endif
-
-   call timer%measure_allocated_memory(.true.)
-   call timer%measure_virtual_memory(.true.)
-   call timer%measure_max_allocated_memory(.true.)
-
-   call timer%set_print_options(&
-#ifdef HAVE_LIBPAPI
-                print_flop_count=.true., &
-                print_flop_rate=.true., &
-#endif
-                print_allocated_memory = .true. , &
-                print_virtual_memory=.true., &
-                print_max_allocated_memory=.true.)
-
-
-  call timer%enable()
-
-  call timer%start("program")
-#endif
-
-   do np_cols = NINT(SQRT(REAL(nprocs))),2,-1
-      if(mod(nprocs,np_cols) == 0 ) exit
-   enddo
-
-   ! at the end of the above loop, nprocs is always divisible by np_cols
-
-   np_rows = nprocs/np_cols
-
-   if(myid==0) then
-      print '(3(a,i0))','Matrix size=',na,', Block size=',nblk
-      print '(3(a,i0))','Number of processor rows=',np_rows,', cols=',np_cols,', total=',nprocs
-      print *
-   endif
-
-   !-------------------------------------------------------------------------------
-   ! Set up BLACS context and MPI communicators
-   !
-   ! The BLACS context is only necessary for using Scalapack.
-   !
-   ! For ELPA, the MPI communicators along rows/cols are sufficient,
-   ! and the grid setup may be done in an arbitrary way as long as it is
-   ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every
-   ! process has a unique (my_prow,my_pcol) pair).
-
-   call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, &
-                         nprow, npcol, my_prow, my_pcol)
-
-   if (myid==0) then
-     print '(a)','| Past BLACS_Gridinfo.'
-   end if
-
-   ! All ELPA routines need MPI communicators for communicating within
-   ! rows or columns of processes, these are set in elpa_get_communicators.
-
-   mpierr = elpa_get_communicators(mpi_comm_world, my_prow, my_pcol, &
-                                   mpi_comm_rows, mpi_comm_cols)
-
-   if (myid==0) then
-     print '(a)','| Past split communicator setup for rows and columns.'
-   end if
-
-   call set_up_blacs_descriptor(na ,nblk, my_prow, my_pcol, np_rows, np_cols, &
-                                na_rows, na_cols, sc_desc, my_blacs_ctxt, info)
-
-   if (myid==0) then
-     print '(a)','| Past scalapack descriptor setup.'
-   end if
-
-   !-------------------------------------------------------------------------------
-   ! Allocate matrices and set up a test matrix for the eigenvalue problem
-#ifdef HAVE_DETAILED_TIMINGS
-   call timer%start("set up matrix")
-#endif
-   allocate(a (na_rows,na_cols))
-   allocate(b (na_rows,na_cols))
-   allocate(c (na_rows,na_cols))
-
-   allocate(z (na_rows,na_cols))
-   allocate(as(na_rows,na_cols))
-
-   allocate(ev(na))
-
-   call prepare_matrix(na, myid, sc_desc, a, z, as)
-
-   b(:,:) = 2.0_rk4 * a(:,:)
-   c(:,:) = 0.0_rk4
-
-#ifdef HAVE_DETAILED_TIMINGS
-   call timer%stop("set up matrix")
-#endif
-
-   !-------------------------------------------------------------------------------
-   ! Calculate eigenvalues/eigenvectors
-
-   if (myid==0) then
-     print '(a)','| Compute c= a**T * b ... '
-     print *
-   end if
-#ifdef WITH_MPI
-   call mpi_barrier(mpi_comm_world, mpierr) ! for correct timings only
-#endif
-
-   success = elpa_mult_at_b_real_single("F","F", na, na, a, na_rows, na_cols, b, na_rows, &
-                                        na_cols, nblk, mpi_comm_rows, mpi_comm_cols, c,   &
-                                        na_rows, na_cols)
-
-   if (.not.(success)) then
-      write(error_unit,*) "elpa_mult_at_b_real produced an error! Aborting..."
-#ifdef WITH_MPI
-      call MPI_ABORT(mpi_comm_world, 1, mpierr)
-#endif
-   endif
-
-
-   if (myid==0) then
-     print '(a)','| Solve c = a**T * b complete.'
-     print *
-   end if
-
-
-   !-------------------------------------------------------------------------------
-   ! Test correctness of result (using plain scalapack routines)
-   allocate(tmp1(na_rows,na_cols))
-   allocate(tmp2(na_rows,na_cols))
-
-   tmp1(:,:) = 0.0_rk4
-
-   ! tmp1 = a**T
-#ifdef WITH_MPI
-   call pstran(na, na, 1.0_rk4, a, 1, 1, sc_desc, 0.0_rk4, tmp1, 1, 1, sc_desc)
-#else
-   tmp1 = transpose(a)
-#endif
-   ! tmp2 = tmp1 * b
-#ifdef WITH_MPI
-   call psgemm("N","N", na, na, na, 1.0_rk4, tmp1, 1, 1, sc_desc, b, 1, 1, &
-               sc_desc, 0.0_rk4, tmp2, 1, 1, sc_desc)
-#else
-   call sgemm("N","N", na, na, na, 1.0_rk4, tmp1, na, b, na, 0.0_rk4, tmp2, na)
-#endif
-
-   ! compare tmp2 with c
-   tmp2(:,:) = tmp2(:,:) - c(:,:)
-
-#ifdef WITH_MPI
-   norm = pslange("M", na, na, tmp2, 1, 1, sc_desc, tmp1)
-#else
-   norm = slange("M", na, na, tmp2, na_rows, tmp1)
-#endif
-
-#ifdef WITH_MPI
-   call mpi_allreduce(norm,normmax,1,MPI_REAL4,MPI_MAX,MPI_COMM_WORLD,mpierr)
-#else
-   normmax = norm
-#endif
-   if (myid .eq. 0) then
-     print *," Maximum error of result: ", normmax
-   endif
-
-   if (normmax .gt. 5e-2_rk4) then
-        status = 1
-   endif
-
-   deallocate(a)
-   deallocate(b)
-   deallocate(c)
-
-   deallocate(as)
-
-   deallocate(z)
-   deallocate(tmp1)
-   deallocate(tmp2)
-   deallocate(ev)
-
-#ifdef HAVE_DETAILED_TIMINGS
-   call timer%stop("program")
-   print *," "
-   print *,"Timings program:"
-   print *," "
-   call timer%print("program")
-   print *," "
-   print *,"End timings program"
-   print *," "
-#endif
-
-#ifdef WITH_MPI
-   call blacs_gridexit(my_blacs_ctxt)
-   call mpi_finalize(mpierr)
-#endif
-
-   call EXIT(STATUS)
-
-
-end
-
-!-------------------------------------------------------------------------------
diff --git a/test/shared/call_elpa1.c b/test/shared/call_elpa1.c
index f34c67e4..392745ca 100644
--- a/test/shared/call_elpa1.c
+++ b/test/shared/call_elpa1.c
@@ -60,7 +60,7 @@ int call_elpa1_complex_solver_from_c_double(int na, int nev, complex double *a,
   return elpa_solve_evp_complex_1stage_double_precision(na, nev, a, lda, ev, q, ldq, nblk, ncols, mpi_comm_rows, mpi_comm_cols, mpi_comm_all, useGPU);
 }
 #ifdef WANT_SINGLE_PRECISION_COMPLEX
-int call_elpa1_complex_solver_from_c_single(int na, int nev, complex  *a, int lda, float *ev, complex  *q, int ldq, int nblk, int ncols, int mpi_comm_rows, int mpi_comm_cols, int mpi_comm_all, int useGPU) {
+int call_elpa1_complex_solver_from_c_single(int na, int nev, complex float *a, int lda, float *ev, complex float *q, int ldq, int nblk, int ncols, int mpi_comm_rows, int mpi_comm_cols, int mpi_comm_all, int useGPU) {
   return elpa_solve_evp_complex_1stage_single_precision(na, nev, a, lda, ev, q, ldq, nblk, ncols, mpi_comm_rows, mpi_comm_cols, mpi_comm_all, useGPU);
 }
 #endif
diff --git a/test/shared/prepare_matrix_template.X90 b/test/shared/prepare_matrix_template.X90
index 036926c8..94ee647c 100644
--- a/test/shared/prepare_matrix_template.X90
+++ b/test/shared/prepare_matrix_template.X90
@@ -166,7 +166,7 @@
 #else
     !c> void prepare_matrix_complex_single_f(int na, int myid, int na_rows, int na_cols,
     !c>                                       int sc_desc[9],
-    !c>                                       complex *a, complex *z, complex *as);
+    !c>                                       complex float *a, complex float *z, complex float *as);
 #endif
 #endif /* COMPLEXCASE */
 
-- 
GitLab