
/*** DO NOT EDIT THIS FILE DIRECTLY (use ../config/gen_code.sh to generate) ***/

#ifndef HYPRE_LOBPCG_MUP_HEADER
#define HYPRE_LOBPCG_MUP_HEADER

#ifdef __cplusplus
extern "C" {
#endif

#if defined (HYPRE_MIXED_PRECISION)

/*** DO NOT EDIT THIS FILE DIRECTLY (use ../config/gen_code.sh to generate) ***/

/******************************************************************************
 * Copyright (c) 1998 Lawrence Livermore National Security, LLC and other
 * HYPRE Project Developers. See the top-level COPYRIGHT file for details.
 *
 * SPDX-License-Identifier: (Apache-2.0 OR MIT)
 ******************************************************************************/



/*** DO NOT EDIT THIS FILE DIRECTLY (use ../config/gen_code.sh to generate) ***/

/******************************************************************************
 * Copyright (c) 1998 Lawrence Livermore National Security, LLC and other
 * HYPRE Project Developers. See the top-level COPYRIGHT file for details.
 *
 * SPDX-License-Identifier: (Apache-2.0 OR MIT)
 ******************************************************************************/


HYPRE_Int
HYPRE_LOBPCGCreate_flt( mv_InterfaceInterpreter *interpreter, HYPRE_MatvecFunctions *mvfunctions, HYPRE_Solver *solver );
HYPRE_Int
HYPRE_LOBPCGCreate_dbl( mv_InterfaceInterpreter *interpreter, HYPRE_MatvecFunctions *mvfunctions, HYPRE_Solver *solver );
HYPRE_Int
HYPRE_LOBPCGCreate_long_dbl( mv_InterfaceInterpreter *interpreter, HYPRE_MatvecFunctions *mvfunctions, HYPRE_Solver *solver );
HYPRE_Int
HYPRE_LOBPCGCreate( mv_InterfaceInterpreter *interpreter, HYPRE_MatvecFunctions *mvfunctions, HYPRE_Solver *solver );

HYPRE_Int
HYPRE_LOBPCGDestroy_flt( HYPRE_Solver solver );
HYPRE_Int
HYPRE_LOBPCGDestroy_dbl( HYPRE_Solver solver );
HYPRE_Int
HYPRE_LOBPCGDestroy_long_dbl( HYPRE_Solver solver );
HYPRE_Int
HYPRE_LOBPCGDestroy( HYPRE_Solver solver );

utilities_FortranMatrix*
HYPRE_LOBPCGEigenvaluesHistory_flt( HYPRE_Solver solver );
utilities_FortranMatrix*
HYPRE_LOBPCGEigenvaluesHistory_dbl( HYPRE_Solver solver );
utilities_FortranMatrix*
HYPRE_LOBPCGEigenvaluesHistory_long_dbl( HYPRE_Solver solver );
utilities_FortranMatrix*
HYPRE_LOBPCGEigenvaluesHistory( HYPRE_Solver solver );

HYPRE_Int
HYPRE_LOBPCGGetPrecond_flt( HYPRE_Solver solver, HYPRE_Solver *precond_data_ptr );
HYPRE_Int
HYPRE_LOBPCGGetPrecond_dbl( HYPRE_Solver solver, HYPRE_Solver *precond_data_ptr );
HYPRE_Int
HYPRE_LOBPCGGetPrecond_long_dbl( HYPRE_Solver solver, HYPRE_Solver *precond_data_ptr );
HYPRE_Int
HYPRE_LOBPCGGetPrecond( HYPRE_Solver solver, HYPRE_Solver *precond_data_ptr );

HYPRE_Int
HYPRE_LOBPCGIterations_flt( HYPRE_Solver solver );
HYPRE_Int
HYPRE_LOBPCGIterations_dbl( HYPRE_Solver solver );
HYPRE_Int
HYPRE_LOBPCGIterations_long_dbl( HYPRE_Solver solver );
HYPRE_Int
HYPRE_LOBPCGIterations( HYPRE_Solver solver );

utilities_FortranMatrix*
HYPRE_LOBPCGResidualNorms_flt( HYPRE_Solver solver );
utilities_FortranMatrix*
HYPRE_LOBPCGResidualNorms_dbl( HYPRE_Solver solver );
utilities_FortranMatrix*
HYPRE_LOBPCGResidualNorms_long_dbl( HYPRE_Solver solver );
utilities_FortranMatrix*
HYPRE_LOBPCGResidualNorms( HYPRE_Solver solver );

utilities_FortranMatrix*
HYPRE_LOBPCGResidualNormsHistory_flt( HYPRE_Solver solver );
utilities_FortranMatrix*
HYPRE_LOBPCGResidualNormsHistory_dbl( HYPRE_Solver solver );
utilities_FortranMatrix*
HYPRE_LOBPCGResidualNormsHistory_long_dbl( HYPRE_Solver solver );
utilities_FortranMatrix*
HYPRE_LOBPCGResidualNormsHistory( HYPRE_Solver solver );

HYPRE_Int
HYPRE_LOBPCGSetMaxIter_flt( HYPRE_Solver solver, HYPRE_Int max_iter );
HYPRE_Int
HYPRE_LOBPCGSetMaxIter_dbl( HYPRE_Solver solver, HYPRE_Int max_iter );
HYPRE_Int
HYPRE_LOBPCGSetMaxIter_long_dbl( HYPRE_Solver solver, HYPRE_Int max_iter );
HYPRE_Int
HYPRE_LOBPCGSetMaxIter( HYPRE_Solver solver, HYPRE_Int max_iter );

HYPRE_Int
HYPRE_LOBPCGSetPrecond_flt( HYPRE_Solver solver, HYPRE_PtrToSolverFcn precond, HYPRE_PtrToSolverFcn precond_setup, HYPRE_Solver precond_solver );
HYPRE_Int
HYPRE_LOBPCGSetPrecond_dbl( HYPRE_Solver solver, HYPRE_PtrToSolverFcn precond, HYPRE_PtrToSolverFcn precond_setup, HYPRE_Solver precond_solver );
HYPRE_Int
HYPRE_LOBPCGSetPrecond_long_dbl( HYPRE_Solver solver, HYPRE_PtrToSolverFcn precond, HYPRE_PtrToSolverFcn precond_setup, HYPRE_Solver precond_solver );
HYPRE_Int
HYPRE_LOBPCGSetPrecond( HYPRE_Solver solver, HYPRE_PtrToSolverFcn precond, HYPRE_PtrToSolverFcn precond_setup, HYPRE_Solver precond_solver );

HYPRE_Int
HYPRE_LOBPCGSetPrecondUsageMode_flt( HYPRE_Solver solver, HYPRE_Int mode );
HYPRE_Int
HYPRE_LOBPCGSetPrecondUsageMode_dbl( HYPRE_Solver solver, HYPRE_Int mode );
HYPRE_Int
HYPRE_LOBPCGSetPrecondUsageMode_long_dbl( HYPRE_Solver solver, HYPRE_Int mode );
HYPRE_Int
HYPRE_LOBPCGSetPrecondUsageMode( HYPRE_Solver solver, HYPRE_Int mode );

HYPRE_Int
HYPRE_LOBPCGSetPrintLevel_flt( HYPRE_Solver solver, HYPRE_Int level );
HYPRE_Int
HYPRE_LOBPCGSetPrintLevel_dbl( HYPRE_Solver solver, HYPRE_Int level );
HYPRE_Int
HYPRE_LOBPCGSetPrintLevel_long_dbl( HYPRE_Solver solver, HYPRE_Int level );
HYPRE_Int
HYPRE_LOBPCGSetPrintLevel( HYPRE_Solver solver, HYPRE_Int level );

HYPRE_Int
HYPRE_LOBPCGSetRTol_flt( HYPRE_Solver solver, hypre_float tol );
HYPRE_Int
HYPRE_LOBPCGSetRTol_dbl( HYPRE_Solver solver, hypre_double tol );
HYPRE_Int
HYPRE_LOBPCGSetRTol_long_dbl( HYPRE_Solver solver, hypre_long_double tol );
HYPRE_Int
HYPRE_LOBPCGSetRTol( HYPRE_Solver solver, hypre_long_double tol );

HYPRE_Int
HYPRE_LOBPCGSetTol_flt( HYPRE_Solver solver, hypre_float tol );
HYPRE_Int
HYPRE_LOBPCGSetTol_dbl( HYPRE_Solver solver, hypre_double tol );
HYPRE_Int
HYPRE_LOBPCGSetTol_long_dbl( HYPRE_Solver solver, hypre_long_double tol );
HYPRE_Int
HYPRE_LOBPCGSetTol( HYPRE_Solver solver, hypre_long_double tol );

HYPRE_Int
HYPRE_LOBPCGSetup_flt( HYPRE_Solver solver, HYPRE_Matrix A, HYPRE_Vector b, HYPRE_Vector x );
HYPRE_Int
HYPRE_LOBPCGSetup_dbl( HYPRE_Solver solver, HYPRE_Matrix A, HYPRE_Vector b, HYPRE_Vector x );
HYPRE_Int
HYPRE_LOBPCGSetup_long_dbl( HYPRE_Solver solver, HYPRE_Matrix A, HYPRE_Vector b, HYPRE_Vector x );
HYPRE_Int
HYPRE_LOBPCGSetup( HYPRE_Solver solver, HYPRE_Matrix A, HYPRE_Vector b, HYPRE_Vector x );

HYPRE_Int
HYPRE_LOBPCGSetupB_flt( HYPRE_Solver solver, HYPRE_Matrix B, HYPRE_Vector x );
HYPRE_Int
HYPRE_LOBPCGSetupB_dbl( HYPRE_Solver solver, HYPRE_Matrix B, HYPRE_Vector x );
HYPRE_Int
HYPRE_LOBPCGSetupB_long_dbl( HYPRE_Solver solver, HYPRE_Matrix B, HYPRE_Vector x );
HYPRE_Int
HYPRE_LOBPCGSetupB( HYPRE_Solver solver, HYPRE_Matrix B, HYPRE_Vector x );

HYPRE_Int
HYPRE_LOBPCGSetupT_flt( HYPRE_Solver solver, HYPRE_Matrix T, HYPRE_Vector x );
HYPRE_Int
HYPRE_LOBPCGSetupT_dbl( HYPRE_Solver solver, HYPRE_Matrix T, HYPRE_Vector x );
HYPRE_Int
HYPRE_LOBPCGSetupT_long_dbl( HYPRE_Solver solver, HYPRE_Matrix T, HYPRE_Vector x );
HYPRE_Int
HYPRE_LOBPCGSetupT( HYPRE_Solver solver, HYPRE_Matrix T, HYPRE_Vector x );

HYPRE_Int
HYPRE_LOBPCGSolve_flt( HYPRE_Solver solver, mv_MultiVectorPtr y, mv_MultiVectorPtr x, hypre_float *lambda );
HYPRE_Int
HYPRE_LOBPCGSolve_dbl( HYPRE_Solver solver, mv_MultiVectorPtr y, mv_MultiVectorPtr x, hypre_double *lambda );
HYPRE_Int
HYPRE_LOBPCGSolve_long_dbl( HYPRE_Solver solver, mv_MultiVectorPtr y, mv_MultiVectorPtr x, hypre_long_double *lambda );
HYPRE_Int
HYPRE_LOBPCGSolve( HYPRE_Solver solver, mv_MultiVectorPtr y, mv_MultiVectorPtr x, void *lambda );


/*** DO NOT EDIT THIS FILE DIRECTLY (use ../config/gen_code.sh to generate) ***/

/******************************************************************************
 * Copyright (c) 1998 Lawrence Livermore National Security, LLC and other
 * HYPRE Project Developers. See the top-level COPYRIGHT file for details.
 *
 * SPDX-License-Identifier: (Apache-2.0 OR MIT)
 ******************************************************************************/


HYPRE_Int
HYPRE_LOBPCGCreate_pre( HYPRE_Precision precision, mv_InterfaceInterpreter *interpreter, HYPRE_MatvecFunctions *mvfunctions, HYPRE_Solver *solver );

HYPRE_Int
HYPRE_LOBPCGDestroy_pre( HYPRE_Precision precision, HYPRE_Solver solver );

utilities_FortranMatrix*
HYPRE_LOBPCGEigenvaluesHistory_pre( HYPRE_Precision precision, HYPRE_Solver solver );

HYPRE_Int
HYPRE_LOBPCGGetPrecond_pre( HYPRE_Precision precision, HYPRE_Solver solver, HYPRE_Solver *precond_data_ptr );

HYPRE_Int
HYPRE_LOBPCGIterations_pre( HYPRE_Precision precision, HYPRE_Solver solver );

utilities_FortranMatrix*
HYPRE_LOBPCGResidualNorms_pre( HYPRE_Precision precision, HYPRE_Solver solver );

utilities_FortranMatrix*
HYPRE_LOBPCGResidualNormsHistory_pre( HYPRE_Precision precision, HYPRE_Solver solver );

HYPRE_Int
HYPRE_LOBPCGSetMaxIter_pre( HYPRE_Precision precision, HYPRE_Solver solver, HYPRE_Int max_iter );

HYPRE_Int
HYPRE_LOBPCGSetPrecond_pre( HYPRE_Precision precision, HYPRE_Solver solver, HYPRE_PtrToSolverFcn precond, HYPRE_PtrToSolverFcn precond_setup, HYPRE_Solver precond_solver );

HYPRE_Int
HYPRE_LOBPCGSetPrecondUsageMode_pre( HYPRE_Precision precision, HYPRE_Solver solver, HYPRE_Int mode );

HYPRE_Int
HYPRE_LOBPCGSetPrintLevel_pre( HYPRE_Precision precision, HYPRE_Solver solver, HYPRE_Int level );

HYPRE_Int
HYPRE_LOBPCGSetRTol_pre( HYPRE_Precision precision, HYPRE_Solver solver, hypre_long_double tol );

HYPRE_Int
HYPRE_LOBPCGSetTol_pre( HYPRE_Precision precision, HYPRE_Solver solver, hypre_long_double tol );

HYPRE_Int
HYPRE_LOBPCGSetup_pre( HYPRE_Precision precision, HYPRE_Solver solver, HYPRE_Matrix A, HYPRE_Vector b, HYPRE_Vector x );

HYPRE_Int
HYPRE_LOBPCGSetupB_pre( HYPRE_Precision precision, HYPRE_Solver solver, HYPRE_Matrix B, HYPRE_Vector x );

HYPRE_Int
HYPRE_LOBPCGSetupT_pre( HYPRE_Precision precision, HYPRE_Solver solver, HYPRE_Matrix T, HYPRE_Vector x );

HYPRE_Int
HYPRE_LOBPCGSolve_pre( HYPRE_Precision precision, HYPRE_Solver solver, mv_MultiVectorPtr y, mv_MultiVectorPtr x, void *lambda );


#endif

#ifdef __cplusplus
}
#endif

#endif

