/*******************************************************************************
 * 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 update_W_H
#define update_W_H
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Sprimme)
#  define update_Q_Sprimme CONCAT(update_Q_,WITH_KIND(SCALAR_SUF))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Rprimme)
#  define update_Q_Rprimme CONCAT(update_Q_,WITH_KIND(REAL_SUF))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SHprimme)
#  define update_Q_SHprimme CONCAT(update_Q_,WITH_KIND(HOST_SCALAR_SUF))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RHprimme)
#  define update_Q_RHprimme CONCAT(update_Q_,WITH_KIND(HOST_REAL_SUF))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SXprimme)
#  define update_Q_SXprimme CONCAT(update_Q_,WITH_KIND(XSCALAR_SUF))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RXprimme)
#  define update_Q_RXprimme CONCAT(update_Q_,WITH_KIND(XREAL_SUF))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Shprimme)
#  define update_Q_Shprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Rhprimme)
#  define update_Q_Rhprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Ssprimme)
#  define update_Q_Ssprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Rsprimme)
#  define update_Q_Rsprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Sdprimme)
#  define update_Q_Sdprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Rdprimme)
#  define update_Q_Rdprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Sqprimme)
#  define update_Q_Sqprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_Rqprimme)
#  define update_Q_Rqprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SXhprimme)
#  define update_Q_SXhprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RXhprimme)
#  define update_Q_RXhprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,h),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SXsprimme)
#  define update_Q_SXsprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RXsprimme)
#  define update_Q_RXsprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,s),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SXdprimme)
#  define update_Q_SXdprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RXdprimme)
#  define update_Q_RXdprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,d),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SXqprimme)
#  define update_Q_SXqprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RXqprimme)
#  define update_Q_RXqprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,q),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SHhprimme)
#  define update_Q_SHhprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RHhprimme)
#  define update_Q_RHhprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,s),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SHsprimme)
#  define update_Q_SHsprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RHsprimme)
#  define update_Q_RHsprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,s),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SHdprimme)
#  define update_Q_SHdprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RHdprimme)
#  define update_Q_RHdprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,d),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_SHqprimme)
#  define update_Q_SHqprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),KIND_C))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(update_Q_RHqprimme)
#  define update_Q_RHqprimme CONCAT(update_Q_,CONCAT(CONCAT(CONCAT(,q),primme),KIND_C))
#endif
int update_Q_dprimme(dummy_type_dprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_dprimme *W,
      PRIMME_INT ldW, dummy_type_dprimme *Q, PRIMME_INT ldQ, dummy_type_dprimme *R, int ldR,
      dummy_type_dprimme *QtQ, int ldQtQ, dummy_type_dprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_hprimme(dummy_type_hprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_hprimme *W,
      PRIMME_INT ldW, dummy_type_hprimme *Q, PRIMME_INT ldQ, dummy_type_sprimme *R, int ldR,
      dummy_type_sprimme *QtQ, int ldQtQ, dummy_type_sprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_kprimme_normal(dummy_type_kprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_kprimme *W,
      PRIMME_INT ldW, dummy_type_kprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_kprimme(dummy_type_kprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_kprimme *W,
      PRIMME_INT ldW, dummy_type_kprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_sprimme(dummy_type_sprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_sprimme *W,
      PRIMME_INT ldW, dummy_type_sprimme *Q, PRIMME_INT ldQ, dummy_type_sprimme *R, int ldR,
      dummy_type_sprimme *QtQ, int ldQtQ, dummy_type_sprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cprimme_normal(dummy_type_cprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cprimme *W,
      PRIMME_INT ldW, dummy_type_cprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cprimme(dummy_type_cprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cprimme *W,
      PRIMME_INT ldW, dummy_type_cprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_zprimme_normal(dummy_type_zprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_zprimme *W,
      PRIMME_INT ldW, dummy_type_zprimme *Q, PRIMME_INT ldQ, dummy_type_zprimme *R, int ldR,
      dummy_type_zprimme *QtQ, int ldQtQ, dummy_type_zprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_zprimme(dummy_type_zprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_zprimme *W,
      PRIMME_INT ldW, dummy_type_zprimme *Q, PRIMME_INT ldQ, dummy_type_zprimme *R, int ldR,
      dummy_type_zprimme *QtQ, int ldQtQ, dummy_type_zprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_magma_hprimme(dummy_type_magma_hprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_magma_hprimme *W,
      PRIMME_INT ldW, dummy_type_magma_hprimme *Q, PRIMME_INT ldQ, dummy_type_sprimme *R, int ldR,
      dummy_type_sprimme *QtQ, int ldQtQ, dummy_type_sprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_magma_kprimme_normal(dummy_type_magma_kprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_magma_kprimme *W,
      PRIMME_INT ldW, dummy_type_magma_kprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_magma_kprimme(dummy_type_magma_kprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_magma_kprimme *W,
      PRIMME_INT ldW, dummy_type_magma_kprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_magma_sprimme(dummy_type_magma_sprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_magma_sprimme *W,
      PRIMME_INT ldW, dummy_type_magma_sprimme *Q, PRIMME_INT ldQ, dummy_type_sprimme *R, int ldR,
      dummy_type_sprimme *QtQ, int ldQtQ, dummy_type_sprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_magma_cprimme_normal(dummy_type_magma_cprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_magma_cprimme *W,
      PRIMME_INT ldW, dummy_type_magma_cprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_magma_cprimme(dummy_type_magma_cprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_magma_cprimme *W,
      PRIMME_INT ldW, dummy_type_magma_cprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_magma_dprimme(dummy_type_magma_dprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_magma_dprimme *W,
      PRIMME_INT ldW, dummy_type_magma_dprimme *Q, PRIMME_INT ldQ, dummy_type_dprimme *R, int ldR,
      dummy_type_dprimme *QtQ, int ldQtQ, dummy_type_dprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_magma_zprimme_normal(dummy_type_magma_zprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_magma_zprimme *W,
      PRIMME_INT ldW, dummy_type_magma_zprimme *Q, PRIMME_INT ldQ, dummy_type_zprimme *R, int ldR,
      dummy_type_zprimme *QtQ, int ldQtQ, dummy_type_zprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_magma_zprimme(dummy_type_magma_zprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_magma_zprimme *W,
      PRIMME_INT ldW, dummy_type_magma_zprimme *Q, PRIMME_INT ldQ, dummy_type_zprimme *R, int ldR,
      dummy_type_zprimme *QtQ, int ldQtQ, dummy_type_zprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cublas_hprimme(dummy_type_cublas_hprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cublas_hprimme *W,
      PRIMME_INT ldW, dummy_type_cublas_hprimme *Q, PRIMME_INT ldQ, dummy_type_sprimme *R, int ldR,
      dummy_type_sprimme *QtQ, int ldQtQ, dummy_type_sprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cublas_kprimme_normal(dummy_type_cublas_kprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cublas_kprimme *W,
      PRIMME_INT ldW, dummy_type_cublas_kprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cublas_kprimme(dummy_type_cublas_kprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cublas_kprimme *W,
      PRIMME_INT ldW, dummy_type_cublas_kprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cublas_sprimme(dummy_type_cublas_sprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cublas_sprimme *W,
      PRIMME_INT ldW, dummy_type_cublas_sprimme *Q, PRIMME_INT ldQ, dummy_type_sprimme *R, int ldR,
      dummy_type_sprimme *QtQ, int ldQtQ, dummy_type_sprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cublas_cprimme_normal(dummy_type_cublas_cprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cublas_cprimme *W,
      PRIMME_INT ldW, dummy_type_cublas_cprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cublas_cprimme(dummy_type_cublas_cprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cublas_cprimme *W,
      PRIMME_INT ldW, dummy_type_cublas_cprimme *Q, PRIMME_INT ldQ, dummy_type_cprimme *R, int ldR,
      dummy_type_cprimme *QtQ, int ldQtQ, dummy_type_cprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cublas_dprimme(dummy_type_cublas_dprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cublas_dprimme *W,
      PRIMME_INT ldW, dummy_type_cublas_dprimme *Q, PRIMME_INT ldQ, dummy_type_dprimme *R, int ldR,
      dummy_type_dprimme *QtQ, int ldQtQ, dummy_type_dprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cublas_zprimme_normal(dummy_type_cublas_zprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cublas_zprimme *W,
      PRIMME_INT ldW, dummy_type_cublas_zprimme *Q, PRIMME_INT ldQ, dummy_type_zprimme *R, int ldR,
      dummy_type_zprimme *QtQ, int ldQtQ, dummy_type_zprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
int update_Q_cublas_zprimme(dummy_type_cublas_zprimme *BV, PRIMME_INT nLocal, PRIMME_INT ldBV, dummy_type_cublas_zprimme *W,
      PRIMME_INT ldW, dummy_type_cublas_zprimme *Q, PRIMME_INT ldQ, dummy_type_zprimme *R, int ldR,
      dummy_type_zprimme *QtQ, int ldQtQ, dummy_type_zprimme *fQtQ, int ldfQtQ, double targetShift,
      int basisSize, int blockSize, int *nQ, primme_context ctx);
#endif
