/*******************************************************************************
 * Copyright (c) 2018, College of William & Mary
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the College of William & Mary nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COLLEGE OF WILLIAM & MARY BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * PRIMME: https://github.com/primme/primme
 * Contact: Andreas Stathopoulos, a n d r e a s _at_ c s . w m . e d u
 *******************************************************************************
 *   NOTE: THIS FILE IS AUTOMATICALLY GENERATED. PLEASE DON'T MODIFY
 ******************************************************************************/


#ifndef ortho_H
#define ortho_H
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Sprimme)
#  define Bortho_gen_Sprimme CONCAT(Bortho_gen_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Rprimme)
#  define Bortho_gen_Rprimme CONCAT(Bortho_gen_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SHprimme)
#  define Bortho_gen_SHprimme CONCAT(Bortho_gen_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RHprimme)
#  define Bortho_gen_RHprimme CONCAT(Bortho_gen_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SXprimme)
#  define Bortho_gen_SXprimme CONCAT(Bortho_gen_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RXprimme)
#  define Bortho_gen_RXprimme CONCAT(Bortho_gen_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Shprimme)
#  define Bortho_gen_Shprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Rhprimme)
#  define Bortho_gen_Rhprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Ssprimme)
#  define Bortho_gen_Ssprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Rsprimme)
#  define Bortho_gen_Rsprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Sdprimme)
#  define Bortho_gen_Sdprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Rdprimme)
#  define Bortho_gen_Rdprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Sqprimme)
#  define Bortho_gen_Sqprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_Rqprimme)
#  define Bortho_gen_Rqprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SXhprimme)
#  define Bortho_gen_SXhprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RXhprimme)
#  define Bortho_gen_RXhprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SXsprimme)
#  define Bortho_gen_SXsprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RXsprimme)
#  define Bortho_gen_RXsprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SXdprimme)
#  define Bortho_gen_SXdprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RXdprimme)
#  define Bortho_gen_RXdprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SXqprimme)
#  define Bortho_gen_SXqprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RXqprimme)
#  define Bortho_gen_RXqprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SHhprimme)
#  define Bortho_gen_SHhprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RHhprimme)
#  define Bortho_gen_RHhprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SHsprimme)
#  define Bortho_gen_SHsprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RHsprimme)
#  define Bortho_gen_RHsprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SHdprimme)
#  define Bortho_gen_SHdprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RHdprimme)
#  define Bortho_gen_RHdprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_SHqprimme)
#  define Bortho_gen_SHqprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_gen_RHqprimme)
#  define Bortho_gen_RHqprimme CONCAT(Bortho_gen_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Bortho_gen_dprimme(dummy_type_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *R, int ldR,
      int b1, int b2, dummy_type_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_dprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_dprimme *, PRIMME_INT, dummy_type_dprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Sprimme)
#  define ortho_Sprimme CONCAT(ortho_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Rprimme)
#  define ortho_Rprimme CONCAT(ortho_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SHprimme)
#  define ortho_SHprimme CONCAT(ortho_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RHprimme)
#  define ortho_RHprimme CONCAT(ortho_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SXprimme)
#  define ortho_SXprimme CONCAT(ortho_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RXprimme)
#  define ortho_RXprimme CONCAT(ortho_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Shprimme)
#  define ortho_Shprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Rhprimme)
#  define ortho_Rhprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Ssprimme)
#  define ortho_Ssprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Rsprimme)
#  define ortho_Rsprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Sdprimme)
#  define ortho_Sdprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Rdprimme)
#  define ortho_Rdprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Sqprimme)
#  define ortho_Sqprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_Rqprimme)
#  define ortho_Rqprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SXhprimme)
#  define ortho_SXhprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RXhprimme)
#  define ortho_RXhprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SXsprimme)
#  define ortho_SXsprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RXsprimme)
#  define ortho_RXsprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SXdprimme)
#  define ortho_SXdprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RXdprimme)
#  define ortho_RXdprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SXqprimme)
#  define ortho_SXqprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RXqprimme)
#  define ortho_RXqprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SHhprimme)
#  define ortho_SHhprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RHhprimme)
#  define ortho_RHhprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SHsprimme)
#  define ortho_SHsprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RHsprimme)
#  define ortho_RHsprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SHdprimme)
#  define ortho_SHdprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RHdprimme)
#  define ortho_RHdprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_SHqprimme)
#  define ortho_SHqprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_RHqprimme)
#  define ortho_RHqprimme CONCAT(ortho_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int ortho_dprimme(dummy_type_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *R, int ldR, int b1, int b2,
                  dummy_type_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(local_matvec)
#  define local_matvec CONCAT(local_matvec,SCALAR_SUF)
#endif
int local_matvecdprimme(dummy_type_dprimme *x, PRIMME_INT ldx, dummy_type_dprimme *y, PRIMME_INT ldy,
      int bs, void *Bctx_);
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Sprimme)
#  define Bortho_local_Sprimme CONCAT(Bortho_local_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Rprimme)
#  define Bortho_local_Rprimme CONCAT(Bortho_local_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SHprimme)
#  define Bortho_local_SHprimme CONCAT(Bortho_local_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RHprimme)
#  define Bortho_local_RHprimme CONCAT(Bortho_local_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SXprimme)
#  define Bortho_local_SXprimme CONCAT(Bortho_local_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RXprimme)
#  define Bortho_local_RXprimme CONCAT(Bortho_local_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Shprimme)
#  define Bortho_local_Shprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Rhprimme)
#  define Bortho_local_Rhprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Ssprimme)
#  define Bortho_local_Ssprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Rsprimme)
#  define Bortho_local_Rsprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Sdprimme)
#  define Bortho_local_Sdprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Rdprimme)
#  define Bortho_local_Rdprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Sqprimme)
#  define Bortho_local_Sqprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_Rqprimme)
#  define Bortho_local_Rqprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SXhprimme)
#  define Bortho_local_SXhprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RXhprimme)
#  define Bortho_local_RXhprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SXsprimme)
#  define Bortho_local_SXsprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RXsprimme)
#  define Bortho_local_RXsprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SXdprimme)
#  define Bortho_local_SXdprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RXdprimme)
#  define Bortho_local_RXdprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SXqprimme)
#  define Bortho_local_SXqprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RXqprimme)
#  define Bortho_local_RXqprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SHhprimme)
#  define Bortho_local_SHhprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RHhprimme)
#  define Bortho_local_RHhprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SHsprimme)
#  define Bortho_local_SHsprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RHsprimme)
#  define Bortho_local_RHsprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SHdprimme)
#  define Bortho_local_SHdprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RHdprimme)
#  define Bortho_local_RHdprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_SHqprimme)
#  define Bortho_local_SHqprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_local_RHqprimme)
#  define Bortho_local_RHqprimme CONCAT(Bortho_local_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Bortho_local_dprimme(dummy_type_dprimme *V, int ldV, dummy_type_dprimme *R,
      int ldR, int b1, int b2, dummy_type_dprimme *locked, int ldLocked,
      int numLocked, PRIMME_INT nLocal, dummy_type_dprimme *B, int ldB, PRIMME_INT *iseed,
      primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(B_matvec)
#  define B_matvec CONCAT(B_matvec,SCALAR_SUF)
#endif
int B_matvecdprimme(dummy_type_dprimme *x, PRIMME_INT ldx, dummy_type_dprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Sprimme)
#  define Bortho_block_Sprimme CONCAT(Bortho_block_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Rprimme)
#  define Bortho_block_Rprimme CONCAT(Bortho_block_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SHprimme)
#  define Bortho_block_SHprimme CONCAT(Bortho_block_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RHprimme)
#  define Bortho_block_RHprimme CONCAT(Bortho_block_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SXprimme)
#  define Bortho_block_SXprimme CONCAT(Bortho_block_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RXprimme)
#  define Bortho_block_RXprimme CONCAT(Bortho_block_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Shprimme)
#  define Bortho_block_Shprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Rhprimme)
#  define Bortho_block_Rhprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Ssprimme)
#  define Bortho_block_Ssprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Rsprimme)
#  define Bortho_block_Rsprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Sdprimme)
#  define Bortho_block_Sdprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Rdprimme)
#  define Bortho_block_Rdprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Sqprimme)
#  define Bortho_block_Sqprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_Rqprimme)
#  define Bortho_block_Rqprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SXhprimme)
#  define Bortho_block_SXhprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RXhprimme)
#  define Bortho_block_RXhprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SXsprimme)
#  define Bortho_block_SXsprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RXsprimme)
#  define Bortho_block_RXsprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SXdprimme)
#  define Bortho_block_SXdprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RXdprimme)
#  define Bortho_block_RXdprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SXqprimme)
#  define Bortho_block_SXqprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RXqprimme)
#  define Bortho_block_RXqprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SHhprimme)
#  define Bortho_block_SHhprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RHhprimme)
#  define Bortho_block_RHhprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SHsprimme)
#  define Bortho_block_SHsprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RHsprimme)
#  define Bortho_block_RHsprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SHdprimme)
#  define Bortho_block_SHdprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RHdprimme)
#  define Bortho_block_RHdprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_SHqprimme)
#  define Bortho_block_SHqprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_RHqprimme)
#  define Bortho_block_RHqprimme CONCAT(Bortho_block_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Bortho_block_dprimme(dummy_type_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *VLtBVL,
      int ldVLtBVL, dummy_type_dprimme *fVLtBVL, int ldfVLtBVL, dummy_type_dprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_dprimme *BV, PRIMME_INT ldBV, dummy_type_dprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Sprimme)
#  define ortho_block_Sprimme CONCAT(ortho_block_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Rprimme)
#  define ortho_block_Rprimme CONCAT(ortho_block_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SHprimme)
#  define ortho_block_SHprimme CONCAT(ortho_block_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RHprimme)
#  define ortho_block_RHprimme CONCAT(ortho_block_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SXprimme)
#  define ortho_block_SXprimme CONCAT(ortho_block_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RXprimme)
#  define ortho_block_RXprimme CONCAT(ortho_block_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Shprimme)
#  define ortho_block_Shprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Rhprimme)
#  define ortho_block_Rhprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Ssprimme)
#  define ortho_block_Ssprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Rsprimme)
#  define ortho_block_Rsprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Sdprimme)
#  define ortho_block_Sdprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Rdprimme)
#  define ortho_block_Rdprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Sqprimme)
#  define ortho_block_Sqprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_Rqprimme)
#  define ortho_block_Rqprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SXhprimme)
#  define ortho_block_SXhprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RXhprimme)
#  define ortho_block_RXhprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SXsprimme)
#  define ortho_block_SXsprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RXsprimme)
#  define ortho_block_RXsprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SXdprimme)
#  define ortho_block_SXdprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RXdprimme)
#  define ortho_block_RXdprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SXqprimme)
#  define ortho_block_SXqprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RXqprimme)
#  define ortho_block_RXqprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SHhprimme)
#  define ortho_block_SHhprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RHhprimme)
#  define ortho_block_RHhprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SHsprimme)
#  define ortho_block_SHsprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RHsprimme)
#  define ortho_block_RHsprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SHdprimme)
#  define ortho_block_SHdprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RHdprimme)
#  define ortho_block_RHdprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_SHqprimme)
#  define ortho_block_SHqprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_block_RHqprimme)
#  define ortho_block_RHqprimme CONCAT(ortho_block_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int ortho_block_dprimme(dummy_type_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *VLtBVL,
      int ldVLtBVL, dummy_type_dprimme *fVLtBVL, int ldfVLtBVL, dummy_type_dprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_dprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Bortho_block_gen_Sprimme)
#  define Bortho_block_gen_Sprimme CONCAT(Bortho_block_gen_Sprimme,SCALAR_SUF)
#endif
int Bortho_block_gen_Sprimmedprimme(dummy_type_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *VLtBVL,
      int ldVLtBVL, dummy_type_dprimme *fVLtBVL, int ldfVLtBVL, dummy_type_dprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_dprimme *, PRIMME_INT, dummy_type_dprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_dprimme *BV, PRIMME_INT ldBV, dummy_type_dprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Sprimme)
#  define ortho_single_iteration_Sprimme CONCAT(ortho_single_iteration_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Rprimme)
#  define ortho_single_iteration_Rprimme CONCAT(ortho_single_iteration_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SHprimme)
#  define ortho_single_iteration_SHprimme CONCAT(ortho_single_iteration_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RHprimme)
#  define ortho_single_iteration_RHprimme CONCAT(ortho_single_iteration_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SXprimme)
#  define ortho_single_iteration_SXprimme CONCAT(ortho_single_iteration_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RXprimme)
#  define ortho_single_iteration_RXprimme CONCAT(ortho_single_iteration_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Shprimme)
#  define ortho_single_iteration_Shprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Rhprimme)
#  define ortho_single_iteration_Rhprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Ssprimme)
#  define ortho_single_iteration_Ssprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Rsprimme)
#  define ortho_single_iteration_Rsprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Sdprimme)
#  define ortho_single_iteration_Sdprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Rdprimme)
#  define ortho_single_iteration_Rdprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Sqprimme)
#  define ortho_single_iteration_Sqprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_Rqprimme)
#  define ortho_single_iteration_Rqprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SXhprimme)
#  define ortho_single_iteration_SXhprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RXhprimme)
#  define ortho_single_iteration_RXhprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SXsprimme)
#  define ortho_single_iteration_SXsprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RXsprimme)
#  define ortho_single_iteration_RXsprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SXdprimme)
#  define ortho_single_iteration_SXdprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RXdprimme)
#  define ortho_single_iteration_RXdprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SXqprimme)
#  define ortho_single_iteration_SXqprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RXqprimme)
#  define ortho_single_iteration_RXqprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SHhprimme)
#  define ortho_single_iteration_SHhprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RHhprimme)
#  define ortho_single_iteration_RHhprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SHsprimme)
#  define ortho_single_iteration_SHsprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RHsprimme)
#  define ortho_single_iteration_RHsprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SHdprimme)
#  define ortho_single_iteration_SHdprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RHdprimme)
#  define ortho_single_iteration_RHdprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_SHqprimme)
#  define ortho_single_iteration_SHqprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(ortho_single_iteration_RHqprimme)
#  define ortho_single_iteration_RHqprimme CONCAT(ortho_single_iteration_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int ortho_single_iteration_dprimme(dummy_type_dprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_dprimme *BQ, PRIMME_INT ldBQ, dummy_type_dprimme *QtBQ, int ldQtBQ, dummy_type_dprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_dprimme *norms, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_ortho_kernel)
#  define Num_ortho_kernel CONCAT(Num_ortho_kernel,SCALAR_SUF)
#endif
int Num_ortho_kerneldprimme(dummy_type_dprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_dprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_dprimme *A, int ldA, dummy_type_dprimme *D,
      dummy_type_dprimme *Y, int ldY, int Yortho, dummy_type_dprimme *W, PRIMME_INT ldW, dummy_type_dprimme *B,
      int ldB, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(decomposition)
#  define decomposition CONCAT(decomposition,SCALAR_SUF)
#endif
int decompositiondprimme(dummy_type_dprimme *H, int n, int ldH, dummy_type_dprimme *Y, int ldY,
      dummy_type_dprimme *evals, int *Yortho, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(rank_estimation)
#  define rank_estimation CONCAT(rank_estimation,SCALAR_SUF)
#endif
int rank_estimationdprimme(dummy_type_dprimme *V, int n0, int n1, int n, int ldV);
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Sprimme)
#  define update_cholesky_Sprimme CONCAT(update_cholesky_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Rprimme)
#  define update_cholesky_Rprimme CONCAT(update_cholesky_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SHprimme)
#  define update_cholesky_SHprimme CONCAT(update_cholesky_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RHprimme)
#  define update_cholesky_RHprimme CONCAT(update_cholesky_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SXprimme)
#  define update_cholesky_SXprimme CONCAT(update_cholesky_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RXprimme)
#  define update_cholesky_RXprimme CONCAT(update_cholesky_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Shprimme)
#  define update_cholesky_Shprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Rhprimme)
#  define update_cholesky_Rhprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Ssprimme)
#  define update_cholesky_Ssprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Rsprimme)
#  define update_cholesky_Rsprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Sdprimme)
#  define update_cholesky_Sdprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Rdprimme)
#  define update_cholesky_Rdprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Sqprimme)
#  define update_cholesky_Sqprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_Rqprimme)
#  define update_cholesky_Rqprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SXhprimme)
#  define update_cholesky_SXhprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RXhprimme)
#  define update_cholesky_RXhprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SXsprimme)
#  define update_cholesky_SXsprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RXsprimme)
#  define update_cholesky_RXsprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SXdprimme)
#  define update_cholesky_SXdprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RXdprimme)
#  define update_cholesky_RXdprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SXqprimme)
#  define update_cholesky_SXqprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RXqprimme)
#  define update_cholesky_RXqprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SHhprimme)
#  define update_cholesky_SHhprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RHhprimme)
#  define update_cholesky_RHhprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SHsprimme)
#  define update_cholesky_SHsprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RHsprimme)
#  define update_cholesky_RHsprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SHdprimme)
#  define update_cholesky_SHdprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RHdprimme)
#  define update_cholesky_RHdprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_SHqprimme)
#  define update_cholesky_SHqprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_cholesky_RHqprimme)
#  define update_cholesky_RHqprimme CONCAT(update_cholesky_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int update_cholesky_dprimme(dummy_type_dprimme *VtV, int ldVtV, dummy_type_dprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_hprimme(dummy_type_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR,
      int b1, int b2, dummy_type_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_hprimme *, PRIMME_INT, dummy_type_hprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_hprimme(dummy_type_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR, int b1, int b2,
                  dummy_type_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int local_matvechprimme(dummy_type_sprimme *x, PRIMME_INT ldx, dummy_type_sprimme *y, PRIMME_INT ldy,
      int bs, void *Bctx_);
int Bortho_local_hprimme(dummy_type_sprimme *V, int ldV, dummy_type_sprimme *R,
      int ldR, int b1, int b2, dummy_type_sprimme *locked, int ldLocked,
      int numLocked, PRIMME_INT nLocal, dummy_type_sprimme *B, int ldB, PRIMME_INT *iseed,
      primme_context ctx);
int B_matvechprimme(dummy_type_hprimme *x, PRIMME_INT ldx, dummy_type_hprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_hprimme(dummy_type_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_hprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_hprimme(dummy_type_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmehprimme(dummy_type_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_hprimme *, PRIMME_INT, dummy_type_hprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_hprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_hprimme(dummy_type_hprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_hprimme *BQ, PRIMME_INT ldBQ, dummy_type_sprimme *QtBQ, int ldQtBQ, dummy_type_hprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelhprimme(dummy_type_hprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_hprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_sprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_sprimme *Y, int ldY, int Yortho, dummy_type_hprimme *W, PRIMME_INT ldW, dummy_type_sprimme *B,
      int ldB, primme_context ctx);
int decompositionhprimme(dummy_type_sprimme *H, int n, int ldH, dummy_type_sprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationhprimme(dummy_type_sprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_hprimme(dummy_type_sprimme *VtV, int ldVtV, dummy_type_sprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_kprimme(dummy_type_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR,
      int b1, int b2, dummy_type_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_kprimme *, PRIMME_INT, dummy_type_kprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_kprimme(dummy_type_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR, int b1, int b2,
                  dummy_type_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int local_matveckprimme(dummy_type_cprimme *x, PRIMME_INT ldx, dummy_type_cprimme *y, PRIMME_INT ldy,
      int bs, void *Bctx_);
int Bortho_local_kprimme(dummy_type_cprimme *V, int ldV, dummy_type_cprimme *R,
      int ldR, int b1, int b2, dummy_type_cprimme *locked, int ldLocked,
      int numLocked, PRIMME_INT nLocal, dummy_type_cprimme *B, int ldB, PRIMME_INT *iseed,
      primme_context ctx);
int B_matveckprimme(dummy_type_kprimme *x, PRIMME_INT ldx, dummy_type_kprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_kprimme(dummy_type_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_kprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_kprimme(dummy_type_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmekprimme(dummy_type_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_kprimme *, PRIMME_INT, dummy_type_kprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_kprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_kprimme(dummy_type_kprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_kprimme *BQ, PRIMME_INT ldBQ, dummy_type_cprimme *QtBQ, int ldQtBQ, dummy_type_kprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelkprimme(dummy_type_kprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_kprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_cprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_cprimme *Y, int ldY, int Yortho, dummy_type_kprimme *W, PRIMME_INT ldW, dummy_type_cprimme *B,
      int ldB, primme_context ctx);
int decompositionkprimme(dummy_type_cprimme *H, int n, int ldH, dummy_type_cprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationkprimme(dummy_type_cprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_kprimme(dummy_type_cprimme *VtV, int ldVtV, dummy_type_cprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_sprimme(dummy_type_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR,
      int b1, int b2, dummy_type_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_sprimme *, PRIMME_INT, dummy_type_sprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_sprimme(dummy_type_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR, int b1, int b2,
                  dummy_type_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int local_matvecsprimme(dummy_type_sprimme *x, PRIMME_INT ldx, dummy_type_sprimme *y, PRIMME_INT ldy,
      int bs, void *Bctx_);
int Bortho_local_sprimme(dummy_type_sprimme *V, int ldV, dummy_type_sprimme *R,
      int ldR, int b1, int b2, dummy_type_sprimme *locked, int ldLocked,
      int numLocked, PRIMME_INT nLocal, dummy_type_sprimme *B, int ldB, PRIMME_INT *iseed,
      primme_context ctx);
int B_matvecsprimme(dummy_type_sprimme *x, PRIMME_INT ldx, dummy_type_sprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_sprimme(dummy_type_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_sprimme(dummy_type_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmesprimme(dummy_type_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_sprimme *, PRIMME_INT, dummy_type_sprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_sprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_sprimme(dummy_type_sprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_sprimme *BQ, PRIMME_INT ldBQ, dummy_type_sprimme *QtBQ, int ldQtBQ, dummy_type_sprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelsprimme(dummy_type_sprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_sprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_sprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_sprimme *Y, int ldY, int Yortho, dummy_type_sprimme *W, PRIMME_INT ldW, dummy_type_sprimme *B,
      int ldB, primme_context ctx);
int decompositionsprimme(dummy_type_sprimme *H, int n, int ldH, dummy_type_sprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationsprimme(dummy_type_sprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_sprimme(dummy_type_sprimme *VtV, int ldVtV, dummy_type_sprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_cprimme(dummy_type_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR,
      int b1, int b2, dummy_type_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_cprimme *, PRIMME_INT, dummy_type_cprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_cprimme(dummy_type_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR, int b1, int b2,
                  dummy_type_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int local_matveccprimme(dummy_type_cprimme *x, PRIMME_INT ldx, dummy_type_cprimme *y, PRIMME_INT ldy,
      int bs, void *Bctx_);
int Bortho_local_cprimme(dummy_type_cprimme *V, int ldV, dummy_type_cprimme *R,
      int ldR, int b1, int b2, dummy_type_cprimme *locked, int ldLocked,
      int numLocked, PRIMME_INT nLocal, dummy_type_cprimme *B, int ldB, PRIMME_INT *iseed,
      primme_context ctx);
int B_matveccprimme(dummy_type_cprimme *x, PRIMME_INT ldx, dummy_type_cprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_cprimme(dummy_type_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_cprimme(dummy_type_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmecprimme(dummy_type_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_cprimme *, PRIMME_INT, dummy_type_cprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_cprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_cprimme(dummy_type_cprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_cprimme *BQ, PRIMME_INT ldBQ, dummy_type_cprimme *QtBQ, int ldQtBQ, dummy_type_cprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelcprimme(dummy_type_cprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_cprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_cprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_cprimme *Y, int ldY, int Yortho, dummy_type_cprimme *W, PRIMME_INT ldW, dummy_type_cprimme *B,
      int ldB, primme_context ctx);
int decompositioncprimme(dummy_type_cprimme *H, int n, int ldH, dummy_type_cprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationcprimme(dummy_type_cprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_cprimme(dummy_type_cprimme *VtV, int ldVtV, dummy_type_cprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_zprimme(dummy_type_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *R, int ldR,
      int b1, int b2, dummy_type_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_zprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_zprimme *, PRIMME_INT, dummy_type_zprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_zprimme(dummy_type_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *R, int ldR, int b1, int b2,
                  dummy_type_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int local_matveczprimme(dummy_type_zprimme *x, PRIMME_INT ldx, dummy_type_zprimme *y, PRIMME_INT ldy,
      int bs, void *Bctx_);
int Bortho_local_zprimme(dummy_type_zprimme *V, int ldV, dummy_type_zprimme *R,
      int ldR, int b1, int b2, dummy_type_zprimme *locked, int ldLocked,
      int numLocked, PRIMME_INT nLocal, dummy_type_zprimme *B, int ldB, PRIMME_INT *iseed,
      primme_context ctx);
int B_matveczprimme(dummy_type_zprimme *x, PRIMME_INT ldx, dummy_type_zprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_zprimme(dummy_type_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *VLtBVL,
      int ldVLtBVL, dummy_type_zprimme *fVLtBVL, int ldfVLtBVL, dummy_type_zprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_zprimme *BV, PRIMME_INT ldBV, dummy_type_zprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_zprimme(dummy_type_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *VLtBVL,
      int ldVLtBVL, dummy_type_zprimme *fVLtBVL, int ldfVLtBVL, dummy_type_zprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_zprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmezprimme(dummy_type_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *VLtBVL,
      int ldVLtBVL, dummy_type_zprimme *fVLtBVL, int ldfVLtBVL, dummy_type_zprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_zprimme *, PRIMME_INT, dummy_type_zprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_zprimme *BV, PRIMME_INT ldBV, dummy_type_zprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_zprimme(dummy_type_zprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_zprimme *BQ, PRIMME_INT ldBQ, dummy_type_zprimme *QtBQ, int ldQtBQ, dummy_type_zprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_dprimme *norms, primme_context ctx);
int Num_ortho_kernelzprimme(dummy_type_zprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_zprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_zprimme *A, int ldA, dummy_type_dprimme *D,
      dummy_type_zprimme *Y, int ldY, int Yortho, dummy_type_zprimme *W, PRIMME_INT ldW, dummy_type_zprimme *B,
      int ldB, primme_context ctx);
int decompositionzprimme(dummy_type_zprimme *H, int n, int ldH, dummy_type_zprimme *Y, int ldY,
      dummy_type_dprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationzprimme(dummy_type_zprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_zprimme(dummy_type_zprimme *VtV, int ldVtV, dummy_type_zprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_magma_hprimme(dummy_type_magma_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR,
      int b1, int b2, dummy_type_magma_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_magma_hprimme *, PRIMME_INT, dummy_type_magma_hprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_magma_hprimme(dummy_type_magma_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR, int b1, int b2,
                  dummy_type_magma_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matvecmagma_hprimme(dummy_type_magma_hprimme *x, PRIMME_INT ldx, dummy_type_magma_hprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_magma_hprimme(dummy_type_magma_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_magma_hprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_magma_hprimme(dummy_type_magma_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmemagma_hprimme(dummy_type_magma_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_magma_hprimme *, PRIMME_INT, dummy_type_magma_hprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_magma_hprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_magma_hprimme(dummy_type_magma_hprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_hprimme *BQ, PRIMME_INT ldBQ, dummy_type_sprimme *QtBQ, int ldQtBQ, dummy_type_magma_hprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelmagma_hprimme(dummy_type_magma_hprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_hprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_sprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_sprimme *Y, int ldY, int Yortho, dummy_type_magma_hprimme *W, PRIMME_INT ldW, dummy_type_sprimme *B,
      int ldB, primme_context ctx);
int decompositionmagma_hprimme(dummy_type_sprimme *H, int n, int ldH, dummy_type_sprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationmagma_hprimme(dummy_type_sprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_magma_hprimme(dummy_type_sprimme *VtV, int ldVtV, dummy_type_sprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_magma_kprimme(dummy_type_magma_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR,
      int b1, int b2, dummy_type_magma_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_magma_kprimme *, PRIMME_INT, dummy_type_magma_kprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_magma_kprimme(dummy_type_magma_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR, int b1, int b2,
                  dummy_type_magma_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matvecmagma_kprimme(dummy_type_magma_kprimme *x, PRIMME_INT ldx, dummy_type_magma_kprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_magma_kprimme(dummy_type_magma_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_magma_kprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_magma_kprimme(dummy_type_magma_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmemagma_kprimme(dummy_type_magma_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_magma_kprimme *, PRIMME_INT, dummy_type_magma_kprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_magma_kprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_magma_kprimme(dummy_type_magma_kprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_kprimme *BQ, PRIMME_INT ldBQ, dummy_type_cprimme *QtBQ, int ldQtBQ, dummy_type_magma_kprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelmagma_kprimme(dummy_type_magma_kprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_kprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_cprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_cprimme *Y, int ldY, int Yortho, dummy_type_magma_kprimme *W, PRIMME_INT ldW, dummy_type_cprimme *B,
      int ldB, primme_context ctx);
int decompositionmagma_kprimme(dummy_type_cprimme *H, int n, int ldH, dummy_type_cprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationmagma_kprimme(dummy_type_cprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_magma_kprimme(dummy_type_cprimme *VtV, int ldVtV, dummy_type_cprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_magma_sprimme(dummy_type_magma_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR,
      int b1, int b2, dummy_type_magma_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_magma_sprimme *, PRIMME_INT, dummy_type_magma_sprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_magma_sprimme(dummy_type_magma_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR, int b1, int b2,
                  dummy_type_magma_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matvecmagma_sprimme(dummy_type_magma_sprimme *x, PRIMME_INT ldx, dummy_type_magma_sprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_magma_sprimme(dummy_type_magma_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_magma_sprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_magma_sprimme(dummy_type_magma_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmemagma_sprimme(dummy_type_magma_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_magma_sprimme *, PRIMME_INT, dummy_type_magma_sprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_magma_sprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_magma_sprimme(dummy_type_magma_sprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_sprimme *BQ, PRIMME_INT ldBQ, dummy_type_sprimme *QtBQ, int ldQtBQ, dummy_type_magma_sprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelmagma_sprimme(dummy_type_magma_sprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_sprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_sprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_sprimme *Y, int ldY, int Yortho, dummy_type_magma_sprimme *W, PRIMME_INT ldW, dummy_type_sprimme *B,
      int ldB, primme_context ctx);
int decompositionmagma_sprimme(dummy_type_sprimme *H, int n, int ldH, dummy_type_sprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationmagma_sprimme(dummy_type_sprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_magma_sprimme(dummy_type_sprimme *VtV, int ldVtV, dummy_type_sprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_magma_cprimme(dummy_type_magma_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR,
      int b1, int b2, dummy_type_magma_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_magma_cprimme *, PRIMME_INT, dummy_type_magma_cprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_magma_cprimme(dummy_type_magma_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR, int b1, int b2,
                  dummy_type_magma_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matvecmagma_cprimme(dummy_type_magma_cprimme *x, PRIMME_INT ldx, dummy_type_magma_cprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_magma_cprimme(dummy_type_magma_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_magma_cprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_magma_cprimme(dummy_type_magma_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmemagma_cprimme(dummy_type_magma_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_magma_cprimme *, PRIMME_INT, dummy_type_magma_cprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_magma_cprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_magma_cprimme(dummy_type_magma_cprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_cprimme *BQ, PRIMME_INT ldBQ, dummy_type_cprimme *QtBQ, int ldQtBQ, dummy_type_magma_cprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelmagma_cprimme(dummy_type_magma_cprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_cprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_cprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_cprimme *Y, int ldY, int Yortho, dummy_type_magma_cprimme *W, PRIMME_INT ldW, dummy_type_cprimme *B,
      int ldB, primme_context ctx);
int decompositionmagma_cprimme(dummy_type_cprimme *H, int n, int ldH, dummy_type_cprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationmagma_cprimme(dummy_type_cprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_magma_cprimme(dummy_type_cprimme *VtV, int ldVtV, dummy_type_cprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_magma_dprimme(dummy_type_magma_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *R, int ldR,
      int b1, int b2, dummy_type_magma_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_dprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_magma_dprimme *, PRIMME_INT, dummy_type_magma_dprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_magma_dprimme(dummy_type_magma_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *R, int ldR, int b1, int b2,
                  dummy_type_magma_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matvecmagma_dprimme(dummy_type_magma_dprimme *x, PRIMME_INT ldx, dummy_type_magma_dprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_magma_dprimme(dummy_type_magma_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *VLtBVL,
      int ldVLtBVL, dummy_type_dprimme *fVLtBVL, int ldfVLtBVL, dummy_type_dprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_magma_dprimme *BV, PRIMME_INT ldBV, dummy_type_dprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_magma_dprimme(dummy_type_magma_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *VLtBVL,
      int ldVLtBVL, dummy_type_dprimme *fVLtBVL, int ldfVLtBVL, dummy_type_dprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_dprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmemagma_dprimme(dummy_type_magma_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *VLtBVL,
      int ldVLtBVL, dummy_type_dprimme *fVLtBVL, int ldfVLtBVL, dummy_type_dprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_magma_dprimme *, PRIMME_INT, dummy_type_magma_dprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_magma_dprimme *BV, PRIMME_INT ldBV, dummy_type_dprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_magma_dprimme(dummy_type_magma_dprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_dprimme *BQ, PRIMME_INT ldBQ, dummy_type_dprimme *QtBQ, int ldQtBQ, dummy_type_magma_dprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_dprimme *norms, primme_context ctx);
int Num_ortho_kernelmagma_dprimme(dummy_type_magma_dprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_dprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_dprimme *A, int ldA, dummy_type_dprimme *D,
      dummy_type_dprimme *Y, int ldY, int Yortho, dummy_type_magma_dprimme *W, PRIMME_INT ldW, dummy_type_dprimme *B,
      int ldB, primme_context ctx);
int decompositionmagma_dprimme(dummy_type_dprimme *H, int n, int ldH, dummy_type_dprimme *Y, int ldY,
      dummy_type_dprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationmagma_dprimme(dummy_type_dprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_magma_dprimme(dummy_type_dprimme *VtV, int ldVtV, dummy_type_dprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_magma_zprimme(dummy_type_magma_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *R, int ldR,
      int b1, int b2, dummy_type_magma_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_zprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_magma_zprimme *, PRIMME_INT, dummy_type_magma_zprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_magma_zprimme(dummy_type_magma_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *R, int ldR, int b1, int b2,
                  dummy_type_magma_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matvecmagma_zprimme(dummy_type_magma_zprimme *x, PRIMME_INT ldx, dummy_type_magma_zprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_magma_zprimme(dummy_type_magma_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *VLtBVL,
      int ldVLtBVL, dummy_type_zprimme *fVLtBVL, int ldfVLtBVL, dummy_type_zprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_magma_zprimme *BV, PRIMME_INT ldBV, dummy_type_zprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_magma_zprimme(dummy_type_magma_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *VLtBVL,
      int ldVLtBVL, dummy_type_zprimme *fVLtBVL, int ldfVLtBVL, dummy_type_zprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_zprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmemagma_zprimme(dummy_type_magma_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *VLtBVL,
      int ldVLtBVL, dummy_type_zprimme *fVLtBVL, int ldfVLtBVL, dummy_type_zprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_magma_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_magma_zprimme *, PRIMME_INT, dummy_type_magma_zprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_magma_zprimme *BV, PRIMME_INT ldBV, dummy_type_zprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_magma_zprimme(dummy_type_magma_zprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_zprimme *BQ, PRIMME_INT ldBQ, dummy_type_zprimme *QtBQ, int ldQtBQ, dummy_type_magma_zprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_dprimme *norms, primme_context ctx);
int Num_ortho_kernelmagma_zprimme(dummy_type_magma_zprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_magma_zprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_zprimme *A, int ldA, dummy_type_dprimme *D,
      dummy_type_zprimme *Y, int ldY, int Yortho, dummy_type_magma_zprimme *W, PRIMME_INT ldW, dummy_type_zprimme *B,
      int ldB, primme_context ctx);
int decompositionmagma_zprimme(dummy_type_zprimme *H, int n, int ldH, dummy_type_zprimme *Y, int ldY,
      dummy_type_dprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationmagma_zprimme(dummy_type_zprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_magma_zprimme(dummy_type_zprimme *VtV, int ldVtV, dummy_type_zprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_cublas_hprimme(dummy_type_cublas_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR,
      int b1, int b2, dummy_type_cublas_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_cublas_hprimme *, PRIMME_INT, dummy_type_cublas_hprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_cublas_hprimme(dummy_type_cublas_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR, int b1, int b2,
                  dummy_type_cublas_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matveccublas_hprimme(dummy_type_cublas_hprimme *x, PRIMME_INT ldx, dummy_type_cublas_hprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_cublas_hprimme(dummy_type_cublas_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cublas_hprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_cublas_hprimme(dummy_type_cublas_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmecublas_hprimme(dummy_type_cublas_hprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_hprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_cublas_hprimme *, PRIMME_INT, dummy_type_cublas_hprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_cublas_hprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_cublas_hprimme(dummy_type_cublas_hprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_hprimme *BQ, PRIMME_INT ldBQ, dummy_type_sprimme *QtBQ, int ldQtBQ, dummy_type_cublas_hprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelcublas_hprimme(dummy_type_cublas_hprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_hprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_sprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_sprimme *Y, int ldY, int Yortho, dummy_type_cublas_hprimme *W, PRIMME_INT ldW, dummy_type_sprimme *B,
      int ldB, primme_context ctx);
int decompositioncublas_hprimme(dummy_type_sprimme *H, int n, int ldH, dummy_type_sprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationcublas_hprimme(dummy_type_sprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_cublas_hprimme(dummy_type_sprimme *VtV, int ldVtV, dummy_type_sprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_cublas_kprimme(dummy_type_cublas_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR,
      int b1, int b2, dummy_type_cublas_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_cublas_kprimme *, PRIMME_INT, dummy_type_cublas_kprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_cublas_kprimme(dummy_type_cublas_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR, int b1, int b2,
                  dummy_type_cublas_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matveccublas_kprimme(dummy_type_cublas_kprimme *x, PRIMME_INT ldx, dummy_type_cublas_kprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_cublas_kprimme(dummy_type_cublas_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cublas_kprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_cublas_kprimme(dummy_type_cublas_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmecublas_kprimme(dummy_type_cublas_kprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_kprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_cublas_kprimme *, PRIMME_INT, dummy_type_cublas_kprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_cublas_kprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_cublas_kprimme(dummy_type_cublas_kprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_kprimme *BQ, PRIMME_INT ldBQ, dummy_type_cprimme *QtBQ, int ldQtBQ, dummy_type_cublas_kprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelcublas_kprimme(dummy_type_cublas_kprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_kprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_cprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_cprimme *Y, int ldY, int Yortho, dummy_type_cublas_kprimme *W, PRIMME_INT ldW, dummy_type_cprimme *B,
      int ldB, primme_context ctx);
int decompositioncublas_kprimme(dummy_type_cprimme *H, int n, int ldH, dummy_type_cprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationcublas_kprimme(dummy_type_cprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_cublas_kprimme(dummy_type_cprimme *VtV, int ldVtV, dummy_type_cprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_cublas_sprimme(dummy_type_cublas_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR,
      int b1, int b2, dummy_type_cublas_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_cublas_sprimme *, PRIMME_INT, dummy_type_cublas_sprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_cublas_sprimme(dummy_type_cublas_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *R, int ldR, int b1, int b2,
                  dummy_type_cublas_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matveccublas_sprimme(dummy_type_cublas_sprimme *x, PRIMME_INT ldx, dummy_type_cublas_sprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_cublas_sprimme(dummy_type_cublas_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cublas_sprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_cublas_sprimme(dummy_type_cublas_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_sprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmecublas_sprimme(dummy_type_cublas_sprimme *V, PRIMME_INT ldV, dummy_type_sprimme *VLtBVL,
      int ldVLtBVL, dummy_type_sprimme *fVLtBVL, int ldfVLtBVL, dummy_type_sprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_sprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_cublas_sprimme *, PRIMME_INT, dummy_type_cublas_sprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_cublas_sprimme *BV, PRIMME_INT ldBV, dummy_type_sprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_cublas_sprimme(dummy_type_cublas_sprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_sprimme *BQ, PRIMME_INT ldBQ, dummy_type_sprimme *QtBQ, int ldQtBQ, dummy_type_cublas_sprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelcublas_sprimme(dummy_type_cublas_sprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_sprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_sprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_sprimme *Y, int ldY, int Yortho, dummy_type_cublas_sprimme *W, PRIMME_INT ldW, dummy_type_sprimme *B,
      int ldB, primme_context ctx);
int decompositioncublas_sprimme(dummy_type_sprimme *H, int n, int ldH, dummy_type_sprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationcublas_sprimme(dummy_type_sprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_cublas_sprimme(dummy_type_sprimme *VtV, int ldVtV, dummy_type_sprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_cublas_cprimme(dummy_type_cublas_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR,
      int b1, int b2, dummy_type_cublas_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_cublas_cprimme *, PRIMME_INT, dummy_type_cublas_cprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_cublas_cprimme(dummy_type_cublas_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *R, int ldR, int b1, int b2,
                  dummy_type_cublas_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matveccublas_cprimme(dummy_type_cublas_cprimme *x, PRIMME_INT ldx, dummy_type_cublas_cprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_cublas_cprimme(dummy_type_cublas_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cublas_cprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_cublas_cprimme(dummy_type_cublas_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmecublas_cprimme(dummy_type_cublas_cprimme *V, PRIMME_INT ldV, dummy_type_cprimme *VLtBVL,
      int ldVLtBVL, dummy_type_cprimme *fVLtBVL, int ldfVLtBVL, dummy_type_cprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_cprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_cublas_cprimme *, PRIMME_INT, dummy_type_cublas_cprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_cublas_cprimme *BV, PRIMME_INT ldBV, dummy_type_cprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_cublas_cprimme(dummy_type_cublas_cprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_cprimme *BQ, PRIMME_INT ldBQ, dummy_type_cprimme *QtBQ, int ldQtBQ, dummy_type_cublas_cprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_sprimme *norms, primme_context ctx);
int Num_ortho_kernelcublas_cprimme(dummy_type_cublas_cprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_cprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_cprimme *A, int ldA, dummy_type_sprimme *D,
      dummy_type_cprimme *Y, int ldY, int Yortho, dummy_type_cublas_cprimme *W, PRIMME_INT ldW, dummy_type_cprimme *B,
      int ldB, primme_context ctx);
int decompositioncublas_cprimme(dummy_type_cprimme *H, int n, int ldH, dummy_type_cprimme *Y, int ldY,
      dummy_type_sprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationcublas_cprimme(dummy_type_cprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_cublas_cprimme(dummy_type_cprimme *VtV, int ldVtV, dummy_type_cprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_cublas_dprimme(dummy_type_cublas_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *R, int ldR,
      int b1, int b2, dummy_type_cublas_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_dprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_cublas_dprimme *, PRIMME_INT, dummy_type_cublas_dprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_cublas_dprimme(dummy_type_cublas_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *R, int ldR, int b1, int b2,
                  dummy_type_cublas_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matveccublas_dprimme(dummy_type_cublas_dprimme *x, PRIMME_INT ldx, dummy_type_cublas_dprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_cublas_dprimme(dummy_type_cublas_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *VLtBVL,
      int ldVLtBVL, dummy_type_dprimme *fVLtBVL, int ldfVLtBVL, dummy_type_dprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cublas_dprimme *BV, PRIMME_INT ldBV, dummy_type_dprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_cublas_dprimme(dummy_type_cublas_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *VLtBVL,
      int ldVLtBVL, dummy_type_dprimme *fVLtBVL, int ldfVLtBVL, dummy_type_dprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_dprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmecublas_dprimme(dummy_type_cublas_dprimme *V, PRIMME_INT ldV, dummy_type_dprimme *VLtBVL,
      int ldVLtBVL, dummy_type_dprimme *fVLtBVL, int ldfVLtBVL, dummy_type_dprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_dprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_cublas_dprimme *, PRIMME_INT, dummy_type_cublas_dprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_cublas_dprimme *BV, PRIMME_INT ldBV, dummy_type_dprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_cublas_dprimme(dummy_type_cublas_dprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_dprimme *BQ, PRIMME_INT ldBQ, dummy_type_dprimme *QtBQ, int ldQtBQ, dummy_type_cublas_dprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_dprimme *norms, primme_context ctx);
int Num_ortho_kernelcublas_dprimme(dummy_type_cublas_dprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_dprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_dprimme *A, int ldA, dummy_type_dprimme *D,
      dummy_type_dprimme *Y, int ldY, int Yortho, dummy_type_cublas_dprimme *W, PRIMME_INT ldW, dummy_type_dprimme *B,
      int ldB, primme_context ctx);
int decompositioncublas_dprimme(dummy_type_dprimme *H, int n, int ldH, dummy_type_dprimme *Y, int ldY,
      dummy_type_dprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationcublas_dprimme(dummy_type_dprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_cublas_dprimme(dummy_type_dprimme *VtV, int ldVtV, dummy_type_dprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
int Bortho_gen_cublas_zprimme(dummy_type_cublas_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *R, int ldR,
      int b1, int b2, dummy_type_cublas_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_zprimme *RLocked, int ldRLocked, PRIMME_INT nLocal,
      int (*B)(dummy_type_cublas_zprimme *, PRIMME_INT, dummy_type_cublas_zprimme *, PRIMME_INT, int, void *),
      void *Bctx, PRIMME_INT *iseed, int *b2_out, primme_context ctx);
int ortho_cublas_zprimme(dummy_type_cublas_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *R, int ldR, int b1, int b2,
                  dummy_type_cublas_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
                  PRIMME_INT nLocal, PRIMME_INT *iseed, primme_context ctx);
int B_matveccublas_zprimme(dummy_type_cublas_zprimme *x, PRIMME_INT ldx, dummy_type_cublas_zprimme *y, PRIMME_INT ldy,
      int bs, void *ctx_);
int Bortho_block_cublas_zprimme(dummy_type_cublas_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *VLtBVL,
      int ldVLtBVL, dummy_type_zprimme *fVLtBVL, int ldfVLtBVL, dummy_type_zprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_cublas_zprimme *BV, PRIMME_INT ldBV, dummy_type_zprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_block_cublas_zprimme(dummy_type_cublas_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *VLtBVL,
      int ldVLtBVL, dummy_type_zprimme *fVLtBVL, int ldfVLtBVL, dummy_type_zprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      dummy_type_zprimme *RLocked, int ldRLocked, PRIMME_INT nLocal, int maxRank,
      int *b2_out, primme_context ctx);
int Bortho_block_gen_Sprimmecublas_zprimme(dummy_type_cublas_zprimme *V, PRIMME_INT ldV, dummy_type_zprimme *VLtBVL,
      int ldVLtBVL, dummy_type_zprimme *fVLtBVL, int ldfVLtBVL, dummy_type_zprimme *R, PRIMME_INT ldR,
      int b1, int b2, dummy_type_cublas_zprimme *locked, PRIMME_INT ldLocked, int numLocked,
      int (*B)(dummy_type_cublas_zprimme *, PRIMME_INT, dummy_type_cublas_zprimme *, PRIMME_INT, int, void *),
      void *Bctx, dummy_type_cublas_zprimme *BV, PRIMME_INT ldBV, dummy_type_zprimme *RLocked, int ldRLocked,
      PRIMME_INT nLocal, int maxRank, int *b2_out, primme_context ctx);
int ortho_single_iteration_cublas_zprimme(dummy_type_cublas_zprimme *Q, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_zprimme *BQ, PRIMME_INT ldBQ, dummy_type_zprimme *QtBQ, int ldQtBQ, dummy_type_cublas_zprimme *X,
      int *inX, int nX, PRIMME_INT ldX, dummy_type_dprimme *norms, primme_context ctx);
int Num_ortho_kernelcublas_zprimme(dummy_type_cublas_zprimme *Q, PRIMME_INT M, int nQ, PRIMME_INT ldQ,
      dummy_type_cublas_zprimme *V, int b1, int b2, PRIMME_INT ldV, dummy_type_zprimme *A, int ldA, dummy_type_dprimme *D,
      dummy_type_zprimme *Y, int ldY, int Yortho, dummy_type_cublas_zprimme *W, PRIMME_INT ldW, dummy_type_zprimme *B,
      int ldB, primme_context ctx);
int decompositioncublas_zprimme(dummy_type_zprimme *H, int n, int ldH, dummy_type_zprimme *Y, int ldY,
      dummy_type_dprimme *evals, int *Yortho, primme_context ctx);
int rank_estimationcublas_zprimme(dummy_type_zprimme *V, int n0, int n1, int n, int ldV);
int update_cholesky_cublas_zprimme(dummy_type_zprimme *VtV, int ldVtV, dummy_type_zprimme *fVtV, int ldfVtV,
      int n0, int n, primme_context ctx);
#endif
