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

#ifndef HYPRE_PARCSR_MV_MUP_HEADER
#define HYPRE_PARCSR_MV_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_CSRMatrixToParCSRMatrix_flt( MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_BigInt *row_partitioning, HYPRE_BigInt *col_partitioning, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_CSRMatrixToParCSRMatrix_dbl( MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_BigInt *row_partitioning, HYPRE_BigInt *col_partitioning, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_CSRMatrixToParCSRMatrix_long_dbl( MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_BigInt *row_partitioning, HYPRE_BigInt *col_partitioning, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_CSRMatrixToParCSRMatrix( MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_BigInt *row_partitioning, HYPRE_BigInt *col_partitioning, HYPRE_ParCSRMatrix *matrix );

HYPRE_Int
HYPRE_CSRMatrixToParCSRMatrix_WithNewPartitioning_flt( MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_CSRMatrixToParCSRMatrix_WithNewPartitioning_dbl( MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_CSRMatrixToParCSRMatrix_WithNewPartitioning_long_dbl( MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_CSRMatrixToParCSRMatrix_WithNewPartitioning( MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_ParCSRMatrix *matrix );

HYPRE_Int
HYPRE_ParCSRMatrixComputeScalingTagged_flt( HYPRE_ParCSRMatrix A, HYPRE_Int type, HYPRE_MemoryLocation memloc_tags, HYPRE_Int num_tags, HYPRE_Int *tags, HYPRE_ParVector *scaling_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixComputeScalingTagged_dbl( HYPRE_ParCSRMatrix A, HYPRE_Int type, HYPRE_MemoryLocation memloc_tags, HYPRE_Int num_tags, HYPRE_Int *tags, HYPRE_ParVector *scaling_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixComputeScalingTagged_long_dbl( HYPRE_ParCSRMatrix A, HYPRE_Int type, HYPRE_MemoryLocation memloc_tags, HYPRE_Int num_tags, HYPRE_Int *tags, HYPRE_ParVector *scaling_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixComputeScalingTagged( HYPRE_ParCSRMatrix A, HYPRE_Int type, HYPRE_MemoryLocation memloc_tags, HYPRE_Int num_tags, HYPRE_Int *tags, HYPRE_ParVector *scaling_ptr );

HYPRE_Int
HYPRE_ParCSRMatrixCreate_flt( MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, HYPRE_Int num_cols_offd, HYPRE_Int num_nonzeros_diag, HYPRE_Int num_nonzeros_offd, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_ParCSRMatrixCreate_dbl( MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, HYPRE_Int num_cols_offd, HYPRE_Int num_nonzeros_diag, HYPRE_Int num_nonzeros_offd, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_ParCSRMatrixCreate_long_dbl( MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, HYPRE_Int num_cols_offd, HYPRE_Int num_nonzeros_diag, HYPRE_Int num_nonzeros_offd, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_ParCSRMatrixCreate( MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, HYPRE_Int num_cols_offd, HYPRE_Int num_nonzeros_diag, HYPRE_Int num_nonzeros_offd, HYPRE_ParCSRMatrix *matrix );

HYPRE_Int
HYPRE_ParCSRMatrixDestroy_flt( HYPRE_ParCSRMatrix matrix );
HYPRE_Int
HYPRE_ParCSRMatrixDestroy_dbl( HYPRE_ParCSRMatrix matrix );
HYPRE_Int
HYPRE_ParCSRMatrixDestroy_long_dbl( HYPRE_ParCSRMatrix matrix );
HYPRE_Int
HYPRE_ParCSRMatrixDestroy( HYPRE_ParCSRMatrix matrix );

HYPRE_Int
HYPRE_ParCSRMatrixDiagScale_flt( HYPRE_ParCSRMatrix A, HYPRE_ParVector left, HYPRE_ParVector right );
HYPRE_Int
HYPRE_ParCSRMatrixDiagScale_dbl( HYPRE_ParCSRMatrix A, HYPRE_ParVector left, HYPRE_ParVector right );
HYPRE_Int
HYPRE_ParCSRMatrixDiagScale_long_dbl( HYPRE_ParCSRMatrix A, HYPRE_ParVector left, HYPRE_ParVector right );
HYPRE_Int
HYPRE_ParCSRMatrixDiagScale( HYPRE_ParCSRMatrix A, HYPRE_ParVector left, HYPRE_ParVector right );

HYPRE_Int
HYPRE_ParCSRMatrixGetColPartitioning_flt( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **col_partitioning_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixGetColPartitioning_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **col_partitioning_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixGetColPartitioning_long_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **col_partitioning_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixGetColPartitioning( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **col_partitioning_ptr );

HYPRE_Int
HYPRE_ParCSRMatrixGetComm_flt( HYPRE_ParCSRMatrix matrix, MPI_Comm *comm );
HYPRE_Int
HYPRE_ParCSRMatrixGetComm_dbl( HYPRE_ParCSRMatrix matrix, MPI_Comm *comm );
HYPRE_Int
HYPRE_ParCSRMatrixGetComm_long_dbl( HYPRE_ParCSRMatrix matrix, MPI_Comm *comm );
HYPRE_Int
HYPRE_ParCSRMatrixGetComm( HYPRE_ParCSRMatrix matrix, MPI_Comm *comm );

HYPRE_Int
HYPRE_ParCSRMatrixGetDims_flt( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *M, HYPRE_BigInt *N );
HYPRE_Int
HYPRE_ParCSRMatrixGetDims_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *M, HYPRE_BigInt *N );
HYPRE_Int
HYPRE_ParCSRMatrixGetDims_long_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *M, HYPRE_BigInt *N );
HYPRE_Int
HYPRE_ParCSRMatrixGetDims( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *M, HYPRE_BigInt *N );

HYPRE_Int
HYPRE_ParCSRMatrixGetGlobalRowPartitioning_flt( HYPRE_ParCSRMatrix matrix, HYPRE_Int all_procs, HYPRE_BigInt **row_partitioning_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixGetGlobalRowPartitioning_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_Int all_procs, HYPRE_BigInt **row_partitioning_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixGetGlobalRowPartitioning_long_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_Int all_procs, HYPRE_BigInt **row_partitioning_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixGetGlobalRowPartitioning( HYPRE_ParCSRMatrix matrix, HYPRE_Int all_procs, HYPRE_BigInt **row_partitioning_ptr );

HYPRE_Int
HYPRE_ParCSRMatrixGetLocalRange_flt( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *row_start, HYPRE_BigInt *row_end, HYPRE_BigInt *col_start, HYPRE_BigInt *col_end );
HYPRE_Int
HYPRE_ParCSRMatrixGetLocalRange_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *row_start, HYPRE_BigInt *row_end, HYPRE_BigInt *col_start, HYPRE_BigInt *col_end );
HYPRE_Int
HYPRE_ParCSRMatrixGetLocalRange_long_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *row_start, HYPRE_BigInt *row_end, HYPRE_BigInt *col_start, HYPRE_BigInt *col_end );
HYPRE_Int
HYPRE_ParCSRMatrixGetLocalRange( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *row_start, HYPRE_BigInt *row_end, HYPRE_BigInt *col_start, HYPRE_BigInt *col_end );

HYPRE_Int
HYPRE_ParCSRMatrixGetRow_flt( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, hypre_float **values );
HYPRE_Int
HYPRE_ParCSRMatrixGetRow_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, hypre_double **values );
HYPRE_Int
HYPRE_ParCSRMatrixGetRow_long_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, hypre_long_double **values );
HYPRE_Int
HYPRE_ParCSRMatrixGetRow( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, void *values );

HYPRE_Int
HYPRE_ParCSRMatrixGetRowPartitioning_flt( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **row_partitioning_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixGetRowPartitioning_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **row_partitioning_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixGetRowPartitioning_long_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **row_partitioning_ptr );
HYPRE_Int
HYPRE_ParCSRMatrixGetRowPartitioning( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **row_partitioning_ptr );

HYPRE_Int
HYPRE_ParCSRMatrixInitialize_flt( HYPRE_ParCSRMatrix matrix );
HYPRE_Int
HYPRE_ParCSRMatrixInitialize_dbl( HYPRE_ParCSRMatrix matrix );
HYPRE_Int
HYPRE_ParCSRMatrixInitialize_long_dbl( HYPRE_ParCSRMatrix matrix );
HYPRE_Int
HYPRE_ParCSRMatrixInitialize( HYPRE_ParCSRMatrix matrix );

HYPRE_Int
HYPRE_ParCSRMatrixMatmat_flt( HYPRE_ParCSRMatrix A, HYPRE_ParCSRMatrix B, HYPRE_ParCSRMatrix *C );
HYPRE_Int
HYPRE_ParCSRMatrixMatmat_dbl( HYPRE_ParCSRMatrix A, HYPRE_ParCSRMatrix B, HYPRE_ParCSRMatrix *C );
HYPRE_Int
HYPRE_ParCSRMatrixMatmat_long_dbl( HYPRE_ParCSRMatrix A, HYPRE_ParCSRMatrix B, HYPRE_ParCSRMatrix *C );
HYPRE_Int
HYPRE_ParCSRMatrixMatmat( HYPRE_ParCSRMatrix A, HYPRE_ParCSRMatrix B, HYPRE_ParCSRMatrix *C );

HYPRE_Int
HYPRE_ParCSRMatrixMatvec_flt( hypre_float alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_float beta, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParCSRMatrixMatvec_dbl( hypre_double alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_double beta, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParCSRMatrixMatvec_long_dbl( hypre_long_double alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_long_double beta, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParCSRMatrixMatvec( hypre_long_double alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_long_double beta, HYPRE_ParVector y );

HYPRE_Int
HYPRE_ParCSRMatrixMatvecT_flt( hypre_float alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_float beta, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParCSRMatrixMatvecT_dbl( hypre_double alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_double beta, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParCSRMatrixMatvecT_long_dbl( hypre_long_double alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_long_double beta, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParCSRMatrixMatvecT( hypre_long_double alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_long_double beta, HYPRE_ParVector y );

HYPRE_Int
HYPRE_ParCSRMatrixPrint_flt( HYPRE_ParCSRMatrix matrix, const char *file_name );
HYPRE_Int
HYPRE_ParCSRMatrixPrint_dbl( HYPRE_ParCSRMatrix matrix, const char *file_name );
HYPRE_Int
HYPRE_ParCSRMatrixPrint_long_dbl( HYPRE_ParCSRMatrix matrix, const char *file_name );
HYPRE_Int
HYPRE_ParCSRMatrixPrint( HYPRE_ParCSRMatrix matrix, const char *file_name );

HYPRE_Int
HYPRE_ParCSRMatrixRead_flt( MPI_Comm comm, const char *file_name, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_ParCSRMatrixRead_dbl( MPI_Comm comm, const char *file_name, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_ParCSRMatrixRead_long_dbl( MPI_Comm comm, const char *file_name, HYPRE_ParCSRMatrix *matrix );
HYPRE_Int
HYPRE_ParCSRMatrixRead( MPI_Comm comm, const char *file_name, HYPRE_ParCSRMatrix *matrix );

HYPRE_Int
HYPRE_ParCSRMatrixRestoreRow_flt( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, hypre_float **values );
HYPRE_Int
HYPRE_ParCSRMatrixRestoreRow_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, hypre_double **values );
HYPRE_Int
HYPRE_ParCSRMatrixRestoreRow_long_dbl( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, hypre_long_double **values );
HYPRE_Int
HYPRE_ParCSRMatrixRestoreRow( HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, void *values );

HYPRE_Int
HYPRE_ParMultiVectorCreate_flt( MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_Int number_vectors, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_ParMultiVectorCreate_dbl( MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_Int number_vectors, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_ParMultiVectorCreate_long_dbl( MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_Int number_vectors, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_ParMultiVectorCreate( MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_Int number_vectors, HYPRE_ParVector *vector );

HYPRE_Int
HYPRE_ParVectorAxpy_flt( hypre_float alpha, HYPRE_ParVector x, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParVectorAxpy_dbl( hypre_double alpha, HYPRE_ParVector x, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParVectorAxpy_long_dbl( hypre_long_double alpha, HYPRE_ParVector x, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParVectorAxpy( hypre_long_double alpha, HYPRE_ParVector x, HYPRE_ParVector y );

HYPRE_ParVector
HYPRE_ParVectorCloneShallow_flt( HYPRE_ParVector x );
HYPRE_ParVector
HYPRE_ParVectorCloneShallow_dbl( HYPRE_ParVector x );
HYPRE_ParVector
HYPRE_ParVectorCloneShallow_long_dbl( HYPRE_ParVector x );
HYPRE_ParVector
HYPRE_ParVectorCloneShallow( HYPRE_ParVector x );

HYPRE_Int
HYPRE_ParVectorCopy_flt( HYPRE_ParVector x, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParVectorCopy_dbl( HYPRE_ParVector x, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParVectorCopy_long_dbl( HYPRE_ParVector x, HYPRE_ParVector y );
HYPRE_Int
HYPRE_ParVectorCopy( HYPRE_ParVector x, HYPRE_ParVector y );

HYPRE_Int
HYPRE_ParVectorCreate_flt( MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_ParVectorCreate_dbl( MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_ParVectorCreate_long_dbl( MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_ParVectorCreate( MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );

HYPRE_Int
HYPRE_ParVectorDestroy_flt( HYPRE_ParVector vector );
HYPRE_Int
HYPRE_ParVectorDestroy_dbl( HYPRE_ParVector vector );
HYPRE_Int
HYPRE_ParVectorDestroy_long_dbl( HYPRE_ParVector vector );
HYPRE_Int
HYPRE_ParVectorDestroy( HYPRE_ParVector vector );

HYPRE_Int
HYPRE_ParVectorGetValues_flt( HYPRE_ParVector vector, HYPRE_Int num_values, HYPRE_BigInt *indices, hypre_float *values );
HYPRE_Int
HYPRE_ParVectorGetValues_dbl( HYPRE_ParVector vector, HYPRE_Int num_values, HYPRE_BigInt *indices, hypre_double *values );
HYPRE_Int
HYPRE_ParVectorGetValues_long_dbl( HYPRE_ParVector vector, HYPRE_Int num_values, HYPRE_BigInt *indices, hypre_long_double *values );
HYPRE_Int
HYPRE_ParVectorGetValues( HYPRE_ParVector vector, HYPRE_Int num_values, HYPRE_BigInt *indices, void *values );

HYPRE_Int
HYPRE_ParVectorInitialize_flt( HYPRE_ParVector vector );
HYPRE_Int
HYPRE_ParVectorInitialize_dbl( HYPRE_ParVector vector );
HYPRE_Int
HYPRE_ParVectorInitialize_long_dbl( HYPRE_ParVector vector );
HYPRE_Int
HYPRE_ParVectorInitialize( HYPRE_ParVector vector );

HYPRE_Int
HYPRE_ParVectorInnerProd_flt( HYPRE_ParVector x, HYPRE_ParVector y, hypre_float *result );
HYPRE_Int
HYPRE_ParVectorInnerProd_dbl( HYPRE_ParVector x, HYPRE_ParVector y, hypre_double *result );
HYPRE_Int
HYPRE_ParVectorInnerProd_long_dbl( HYPRE_ParVector x, HYPRE_ParVector y, hypre_long_double *result );
HYPRE_Int
HYPRE_ParVectorInnerProd( HYPRE_ParVector x, HYPRE_ParVector y, void *result );

HYPRE_Int
HYPRE_ParVectorPrint_flt( HYPRE_ParVector vector, const char *file_name );
HYPRE_Int
HYPRE_ParVectorPrint_dbl( HYPRE_ParVector vector, const char *file_name );
HYPRE_Int
HYPRE_ParVectorPrint_long_dbl( HYPRE_ParVector vector, const char *file_name );
HYPRE_Int
HYPRE_ParVectorPrint( HYPRE_ParVector vector, const char *file_name );

HYPRE_Int
HYPRE_ParVectorPrintBinaryIJ_flt( HYPRE_ParVector vector, const char *file_name );
HYPRE_Int
HYPRE_ParVectorPrintBinaryIJ_dbl( HYPRE_ParVector vector, const char *file_name );
HYPRE_Int
HYPRE_ParVectorPrintBinaryIJ_long_dbl( HYPRE_ParVector vector, const char *file_name );
HYPRE_Int
HYPRE_ParVectorPrintBinaryIJ( HYPRE_ParVector vector, const char *file_name );

HYPRE_Int
HYPRE_ParVectorRead_flt( MPI_Comm comm, const char *file_name, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_ParVectorRead_dbl( MPI_Comm comm, const char *file_name, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_ParVectorRead_long_dbl( MPI_Comm comm, const char *file_name, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_ParVectorRead( MPI_Comm comm, const char *file_name, HYPRE_ParVector *vector );

HYPRE_Int
HYPRE_ParVectorScale_flt( hypre_float value, HYPRE_ParVector x );
HYPRE_Int
HYPRE_ParVectorScale_dbl( hypre_double value, HYPRE_ParVector x );
HYPRE_Int
HYPRE_ParVectorScale_long_dbl( hypre_long_double value, HYPRE_ParVector x );
HYPRE_Int
HYPRE_ParVectorScale( hypre_long_double value, HYPRE_ParVector x );

HYPRE_Int
HYPRE_ParVectorSetConstantValues_flt( HYPRE_ParVector vector, hypre_float value );
HYPRE_Int
HYPRE_ParVectorSetConstantValues_dbl( HYPRE_ParVector vector, hypre_double value );
HYPRE_Int
HYPRE_ParVectorSetConstantValues_long_dbl( HYPRE_ParVector vector, hypre_long_double value );
HYPRE_Int
HYPRE_ParVectorSetConstantValues( HYPRE_ParVector vector, hypre_long_double value );

HYPRE_Int
HYPRE_ParVectorSetRandomValues_flt( HYPRE_ParVector vector, HYPRE_Int seed );
HYPRE_Int
HYPRE_ParVectorSetRandomValues_dbl( HYPRE_ParVector vector, HYPRE_Int seed );
HYPRE_Int
HYPRE_ParVectorSetRandomValues_long_dbl( HYPRE_ParVector vector, HYPRE_Int seed );
HYPRE_Int
HYPRE_ParVectorSetRandomValues( HYPRE_ParVector vector, HYPRE_Int seed );

HYPRE_Int
HYPRE_VectorToParVector_flt( MPI_Comm comm, HYPRE_Vector b, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_VectorToParVector_dbl( MPI_Comm comm, HYPRE_Vector b, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_VectorToParVector_long_dbl( MPI_Comm comm, HYPRE_Vector b, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );
HYPRE_Int
HYPRE_VectorToParVector( MPI_Comm comm, HYPRE_Vector b, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );


/*** 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_CSRMatrixToParCSRMatrix_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_BigInt *row_partitioning, HYPRE_BigInt *col_partitioning, HYPRE_ParCSRMatrix *matrix );

HYPRE_Int
HYPRE_CSRMatrixToParCSRMatrix_WithNewPartitioning_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_CSRMatrix A_CSR, HYPRE_ParCSRMatrix *matrix );

HYPRE_Int
HYPRE_ParCSRMatrixComputeScalingTagged_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix A, HYPRE_Int type, HYPRE_MemoryLocation memloc_tags, HYPRE_Int num_tags, HYPRE_Int *tags, HYPRE_ParVector *scaling_ptr );

HYPRE_Int
HYPRE_ParCSRMatrixCreate_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_BigInt global_num_rows, HYPRE_BigInt global_num_cols, HYPRE_BigInt *row_starts, HYPRE_BigInt *col_starts, HYPRE_Int num_cols_offd, HYPRE_Int num_nonzeros_diag, HYPRE_Int num_nonzeros_offd, HYPRE_ParCSRMatrix *matrix );

HYPRE_Int
HYPRE_ParCSRMatrixDestroy_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix );

HYPRE_Int
HYPRE_ParCSRMatrixDiagScale_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix A, HYPRE_ParVector left, HYPRE_ParVector right );

HYPRE_Int
HYPRE_ParCSRMatrixGetColPartitioning_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **col_partitioning_ptr );

HYPRE_Int
HYPRE_ParCSRMatrixGetComm_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix, MPI_Comm *comm );

HYPRE_Int
HYPRE_ParCSRMatrixGetDims_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *M, HYPRE_BigInt *N );

HYPRE_Int
HYPRE_ParCSRMatrixGetGlobalRowPartitioning_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix, HYPRE_Int all_procs, HYPRE_BigInt **row_partitioning_ptr );

HYPRE_Int
HYPRE_ParCSRMatrixGetLocalRange_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix, HYPRE_BigInt *row_start, HYPRE_BigInt *row_end, HYPRE_BigInt *col_start, HYPRE_BigInt *col_end );

HYPRE_Int
HYPRE_ParCSRMatrixGetRow_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, void *values );

HYPRE_Int
HYPRE_ParCSRMatrixGetRowPartitioning_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix, HYPRE_BigInt **row_partitioning_ptr );

HYPRE_Int
HYPRE_ParCSRMatrixInitialize_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix );

HYPRE_Int
HYPRE_ParCSRMatrixMatmat_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix A, HYPRE_ParCSRMatrix B, HYPRE_ParCSRMatrix *C );

HYPRE_Int
HYPRE_ParCSRMatrixMatvec_pre( HYPRE_Precision precision, hypre_long_double alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_long_double beta, HYPRE_ParVector y );

HYPRE_Int
HYPRE_ParCSRMatrixMatvecT_pre( HYPRE_Precision precision, hypre_long_double alpha, HYPRE_ParCSRMatrix A, HYPRE_ParVector x, hypre_long_double beta, HYPRE_ParVector y );

HYPRE_Int
HYPRE_ParCSRMatrixPrint_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix, const char *file_name );

HYPRE_Int
HYPRE_ParCSRMatrixRead_pre( HYPRE_Precision precision, MPI_Comm comm, const char *file_name, HYPRE_ParCSRMatrix *matrix );

HYPRE_Int
HYPRE_ParCSRMatrixRestoreRow_pre( HYPRE_Precision precision, HYPRE_ParCSRMatrix matrix, HYPRE_BigInt row, HYPRE_Int *size, HYPRE_BigInt **col_ind, void *values );

HYPRE_Int
HYPRE_ParMultiVectorCreate_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_Int number_vectors, HYPRE_ParVector *vector );

HYPRE_Int
HYPRE_ParVectorAxpy_pre( HYPRE_Precision precision, hypre_long_double alpha, HYPRE_ParVector x, HYPRE_ParVector y );

HYPRE_ParVector
HYPRE_ParVectorCloneShallow_pre( HYPRE_Precision precision, HYPRE_ParVector x );

HYPRE_Int
HYPRE_ParVectorCopy_pre( HYPRE_Precision precision, HYPRE_ParVector x, HYPRE_ParVector y );

HYPRE_Int
HYPRE_ParVectorCreate_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_BigInt global_size, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );

HYPRE_Int
HYPRE_ParVectorDestroy_pre( HYPRE_Precision precision, HYPRE_ParVector vector );

HYPRE_Int
HYPRE_ParVectorGetValues_pre( HYPRE_Precision precision, HYPRE_ParVector vector, HYPRE_Int num_values, HYPRE_BigInt *indices, void *values );

HYPRE_Int
HYPRE_ParVectorInitialize_pre( HYPRE_Precision precision, HYPRE_ParVector vector );

HYPRE_Int
HYPRE_ParVectorInnerProd_pre( HYPRE_Precision precision, HYPRE_ParVector x, HYPRE_ParVector y, void *result );

HYPRE_Int
HYPRE_ParVectorPrint_pre( HYPRE_Precision precision, HYPRE_ParVector vector, const char *file_name );

HYPRE_Int
HYPRE_ParVectorPrintBinaryIJ_pre( HYPRE_Precision precision, HYPRE_ParVector vector, const char *file_name );

HYPRE_Int
HYPRE_ParVectorRead_pre( HYPRE_Precision precision, MPI_Comm comm, const char *file_name, HYPRE_ParVector *vector );

HYPRE_Int
HYPRE_ParVectorScale_pre( HYPRE_Precision precision, hypre_long_double value, HYPRE_ParVector x );

HYPRE_Int
HYPRE_ParVectorSetConstantValues_pre( HYPRE_Precision precision, HYPRE_ParVector vector, hypre_long_double value );

HYPRE_Int
HYPRE_ParVectorSetRandomValues_pre( HYPRE_Precision precision, HYPRE_ParVector vector, HYPRE_Int seed );

HYPRE_Int
HYPRE_VectorToParVector_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_Vector b, HYPRE_BigInt *partitioning, HYPRE_ParVector *vector );


#endif

#ifdef __cplusplus
}
#endif

#endif

