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

#ifndef HYPRE_SSTRUCT_MV_MUP_HEADER
#define HYPRE_SSTRUCT_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_SStructAxpy_flt( hypre_float alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructAxpy_dbl( hypre_double alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructAxpy_long_dbl( hypre_long_double alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructAxpy( hypre_long_double alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructGraphAddEntries_flt( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int to_part, HYPRE_Int *to_index, HYPRE_Int to_var );
HYPRE_Int
HYPRE_SStructGraphAddEntries_dbl( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int to_part, HYPRE_Int *to_index, HYPRE_Int to_var );
HYPRE_Int
HYPRE_SStructGraphAddEntries_long_dbl( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int to_part, HYPRE_Int *to_index, HYPRE_Int to_var );
HYPRE_Int
HYPRE_SStructGraphAddEntries( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int to_part, HYPRE_Int *to_index, HYPRE_Int to_var );

HYPRE_Int
HYPRE_SStructGraphAssemble_flt( HYPRE_SStructGraph graph );
HYPRE_Int
HYPRE_SStructGraphAssemble_dbl( HYPRE_SStructGraph graph );
HYPRE_Int
HYPRE_SStructGraphAssemble_long_dbl( HYPRE_SStructGraph graph );
HYPRE_Int
HYPRE_SStructGraphAssemble( HYPRE_SStructGraph graph );

HYPRE_Int
HYPRE_SStructGraphCreate_flt( MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructGraph *graph );
HYPRE_Int
HYPRE_SStructGraphCreate_dbl( MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructGraph *graph );
HYPRE_Int
HYPRE_SStructGraphCreate_long_dbl( MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructGraph *graph );
HYPRE_Int
HYPRE_SStructGraphCreate( MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructGraph *graph );

HYPRE_Int
HYPRE_SStructGraphDestroy_flt( HYPRE_SStructGraph graph );
HYPRE_Int
HYPRE_SStructGraphDestroy_dbl( HYPRE_SStructGraph graph );
HYPRE_Int
HYPRE_SStructGraphDestroy_long_dbl( HYPRE_SStructGraph graph );
HYPRE_Int
HYPRE_SStructGraphDestroy( HYPRE_SStructGraph graph );

HYPRE_Int
HYPRE_SStructGraphPrint_flt( FILE *file, HYPRE_SStructGraph graph );
HYPRE_Int
HYPRE_SStructGraphPrint_dbl( FILE *file, HYPRE_SStructGraph graph );
HYPRE_Int
HYPRE_SStructGraphPrint_long_dbl( FILE *file, HYPRE_SStructGraph graph );
HYPRE_Int
HYPRE_SStructGraphPrint( FILE *file, HYPRE_SStructGraph graph );

HYPRE_Int
HYPRE_SStructGraphRead_flt( FILE *file, HYPRE_SStructGrid grid, HYPRE_SStructStencil **stencils, HYPRE_SStructGraph *graph_ptr );
HYPRE_Int
HYPRE_SStructGraphRead_dbl( FILE *file, HYPRE_SStructGrid grid, HYPRE_SStructStencil **stencils, HYPRE_SStructGraph *graph_ptr );
HYPRE_Int
HYPRE_SStructGraphRead_long_dbl( FILE *file, HYPRE_SStructGrid grid, HYPRE_SStructStencil **stencils, HYPRE_SStructGraph *graph_ptr );
HYPRE_Int
HYPRE_SStructGraphRead( FILE *file, HYPRE_SStructGrid grid, HYPRE_SStructStencil **stencils, HYPRE_SStructGraph *graph_ptr );

HYPRE_Int
HYPRE_SStructGraphSetDomainGrid_flt( HYPRE_SStructGraph graph, HYPRE_SStructGrid domain_grid );
HYPRE_Int
HYPRE_SStructGraphSetDomainGrid_dbl( HYPRE_SStructGraph graph, HYPRE_SStructGrid domain_grid );
HYPRE_Int
HYPRE_SStructGraphSetDomainGrid_long_dbl( HYPRE_SStructGraph graph, HYPRE_SStructGrid domain_grid );
HYPRE_Int
HYPRE_SStructGraphSetDomainGrid( HYPRE_SStructGraph graph, HYPRE_SStructGrid domain_grid );

HYPRE_Int
HYPRE_SStructGraphSetFEM_flt( HYPRE_SStructGraph graph, HYPRE_Int part );
HYPRE_Int
HYPRE_SStructGraphSetFEM_dbl( HYPRE_SStructGraph graph, HYPRE_Int part );
HYPRE_Int
HYPRE_SStructGraphSetFEM_long_dbl( HYPRE_SStructGraph graph, HYPRE_Int part );
HYPRE_Int
HYPRE_SStructGraphSetFEM( HYPRE_SStructGraph graph, HYPRE_Int part );

HYPRE_Int
HYPRE_SStructGraphSetFEMSparsity_flt( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int nsparse, HYPRE_Int *sparsity );
HYPRE_Int
HYPRE_SStructGraphSetFEMSparsity_dbl( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int nsparse, HYPRE_Int *sparsity );
HYPRE_Int
HYPRE_SStructGraphSetFEMSparsity_long_dbl( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int nsparse, HYPRE_Int *sparsity );
HYPRE_Int
HYPRE_SStructGraphSetFEMSparsity( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int nsparse, HYPRE_Int *sparsity );

HYPRE_Int
HYPRE_SStructGraphSetObjectType_flt( HYPRE_SStructGraph graph, HYPRE_Int type );
HYPRE_Int
HYPRE_SStructGraphSetObjectType_dbl( HYPRE_SStructGraph graph, HYPRE_Int type );
HYPRE_Int
HYPRE_SStructGraphSetObjectType_long_dbl( HYPRE_SStructGraph graph, HYPRE_Int type );
HYPRE_Int
HYPRE_SStructGraphSetObjectType( HYPRE_SStructGraph graph, HYPRE_Int type );

HYPRE_Int
HYPRE_SStructGraphSetStencil_flt( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int var, HYPRE_SStructStencil stencil );
HYPRE_Int
HYPRE_SStructGraphSetStencil_dbl( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int var, HYPRE_SStructStencil stencil );
HYPRE_Int
HYPRE_SStructGraphSetStencil_long_dbl( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int var, HYPRE_SStructStencil stencil );
HYPRE_Int
HYPRE_SStructGraphSetStencil( HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int var, HYPRE_SStructStencil stencil );

HYPRE_Int
HYPRE_SStructGridAddVariables_flt( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );
HYPRE_Int
HYPRE_SStructGridAddVariables_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );
HYPRE_Int
HYPRE_SStructGridAddVariables_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );
HYPRE_Int
HYPRE_SStructGridAddVariables( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );

HYPRE_Int
HYPRE_SStructGridAssemble_flt( HYPRE_SStructGrid grid );
HYPRE_Int
HYPRE_SStructGridAssemble_dbl( HYPRE_SStructGrid grid );
HYPRE_Int
HYPRE_SStructGridAssemble_long_dbl( HYPRE_SStructGrid grid );
HYPRE_Int
HYPRE_SStructGridAssemble( HYPRE_SStructGrid grid );

HYPRE_Int
HYPRE_SStructGridCoarsen_flt( HYPRE_SStructGrid fgrid, HYPRE_Index *strides, HYPRE_SStructGrid *cgrid );
HYPRE_Int
HYPRE_SStructGridCoarsen_dbl( HYPRE_SStructGrid fgrid, HYPRE_Index *strides, HYPRE_SStructGrid *cgrid );
HYPRE_Int
HYPRE_SStructGridCoarsen_long_dbl( HYPRE_SStructGrid fgrid, HYPRE_Index *strides, HYPRE_SStructGrid *cgrid );
HYPRE_Int
HYPRE_SStructGridCoarsen( HYPRE_SStructGrid fgrid, HYPRE_Index *strides, HYPRE_SStructGrid *cgrid );

HYPRE_Int
HYPRE_SStructGridCreate_flt( MPI_Comm comm, HYPRE_Int ndim, HYPRE_Int nparts, HYPRE_SStructGrid *grid );
HYPRE_Int
HYPRE_SStructGridCreate_dbl( MPI_Comm comm, HYPRE_Int ndim, HYPRE_Int nparts, HYPRE_SStructGrid *grid );
HYPRE_Int
HYPRE_SStructGridCreate_long_dbl( MPI_Comm comm, HYPRE_Int ndim, HYPRE_Int nparts, HYPRE_SStructGrid *grid );
HYPRE_Int
HYPRE_SStructGridCreate( MPI_Comm comm, HYPRE_Int ndim, HYPRE_Int nparts, HYPRE_SStructGrid *grid );

HYPRE_Int
HYPRE_SStructGridDestroy_flt( HYPRE_SStructGrid grid );
HYPRE_Int
HYPRE_SStructGridDestroy_dbl( HYPRE_SStructGrid grid );
HYPRE_Int
HYPRE_SStructGridDestroy_long_dbl( HYPRE_SStructGrid grid );
HYPRE_Int
HYPRE_SStructGridDestroy( HYPRE_SStructGrid grid );

HYPRE_Int
HYPRE_SStructGridGetVariableBox_flt( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int var, HYPRE_Int *cell_ilower, HYPRE_Int *cell_iupper, HYPRE_Int *var_ilower, HYPRE_Int *var_iupper );
HYPRE_Int
HYPRE_SStructGridGetVariableBox_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int var, HYPRE_Int *cell_ilower, HYPRE_Int *cell_iupper, HYPRE_Int *var_ilower, HYPRE_Int *var_iupper );
HYPRE_Int
HYPRE_SStructGridGetVariableBox_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int var, HYPRE_Int *cell_ilower, HYPRE_Int *cell_iupper, HYPRE_Int *var_ilower, HYPRE_Int *var_iupper );
HYPRE_Int
HYPRE_SStructGridGetVariableBox( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int var, HYPRE_Int *cell_ilower, HYPRE_Int *cell_iupper, HYPRE_Int *var_ilower, HYPRE_Int *var_iupper );

HYPRE_Int
HYPRE_SStructGridPrintGLVis_flt( HYPRE_SStructGrid grid, const char *meshprefix, hypre_float *trans, hypre_float *origin );
HYPRE_Int
HYPRE_SStructGridPrintGLVis_dbl( HYPRE_SStructGrid grid, const char *meshprefix, hypre_double *trans, hypre_double *origin );
HYPRE_Int
HYPRE_SStructGridPrintGLVis_long_dbl( HYPRE_SStructGrid grid, const char *meshprefix, hypre_long_double *trans, hypre_long_double *origin );
HYPRE_Int
HYPRE_SStructGridPrintGLVis( HYPRE_SStructGrid grid, const char *meshprefix, void *trans, void *origin );

HYPRE_Int
HYPRE_SStructGridProjectBox_flt( HYPRE_SStructGrid grid, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *origin, HYPRE_Int *stride );
HYPRE_Int
HYPRE_SStructGridProjectBox_dbl( HYPRE_SStructGrid grid, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *origin, HYPRE_Int *stride );
HYPRE_Int
HYPRE_SStructGridProjectBox_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *origin, HYPRE_Int *stride );
HYPRE_Int
HYPRE_SStructGridProjectBox( HYPRE_SStructGrid grid, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *origin, HYPRE_Int *stride );

HYPRE_Int
HYPRE_SStructGridSetExtents_flt( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper );
HYPRE_Int
HYPRE_SStructGridSetExtents_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper );
HYPRE_Int
HYPRE_SStructGridSetExtents_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper );
HYPRE_Int
HYPRE_SStructGridSetExtents( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper );

HYPRE_Int
HYPRE_SStructGridSetFEMOrdering_flt( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ordering );
HYPRE_Int
HYPRE_SStructGridSetFEMOrdering_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ordering );
HYPRE_Int
HYPRE_SStructGridSetFEMOrdering_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ordering );
HYPRE_Int
HYPRE_SStructGridSetFEMOrdering( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ordering );

HYPRE_Int
HYPRE_SStructGridSetNeighborPart_flt( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int nbor_part, HYPRE_Int *nbor_ilower, HYPRE_Int *nbor_iupper, HYPRE_Int *index_map, HYPRE_Int *index_dir );
HYPRE_Int
HYPRE_SStructGridSetNeighborPart_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int nbor_part, HYPRE_Int *nbor_ilower, HYPRE_Int *nbor_iupper, HYPRE_Int *index_map, HYPRE_Int *index_dir );
HYPRE_Int
HYPRE_SStructGridSetNeighborPart_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int nbor_part, HYPRE_Int *nbor_ilower, HYPRE_Int *nbor_iupper, HYPRE_Int *index_map, HYPRE_Int *index_dir );
HYPRE_Int
HYPRE_SStructGridSetNeighborPart( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int nbor_part, HYPRE_Int *nbor_ilower, HYPRE_Int *nbor_iupper, HYPRE_Int *index_map, HYPRE_Int *index_dir );

HYPRE_Int
HYPRE_SStructGridSetNumGhost_flt( HYPRE_SStructGrid grid, HYPRE_Int *num_ghost );
HYPRE_Int
HYPRE_SStructGridSetNumGhost_dbl( HYPRE_SStructGrid grid, HYPRE_Int *num_ghost );
HYPRE_Int
HYPRE_SStructGridSetNumGhost_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int *num_ghost );
HYPRE_Int
HYPRE_SStructGridSetNumGhost( HYPRE_SStructGrid grid, HYPRE_Int *num_ghost );

HYPRE_Int
HYPRE_SStructGridSetPeriodic_flt( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *periodic );
HYPRE_Int
HYPRE_SStructGridSetPeriodic_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *periodic );
HYPRE_Int
HYPRE_SStructGridSetPeriodic_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *periodic );
HYPRE_Int
HYPRE_SStructGridSetPeriodic( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *periodic );

HYPRE_Int
HYPRE_SStructGridSetSharedPart_flt( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *offset, HYPRE_Int shared_part, HYPRE_Int *shared_ilower, HYPRE_Int *shared_iupper, HYPRE_Int *shared_offset, HYPRE_Int *index_map, HYPRE_Int *index_dir );
HYPRE_Int
HYPRE_SStructGridSetSharedPart_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *offset, HYPRE_Int shared_part, HYPRE_Int *shared_ilower, HYPRE_Int *shared_iupper, HYPRE_Int *shared_offset, HYPRE_Int *index_map, HYPRE_Int *index_dir );
HYPRE_Int
HYPRE_SStructGridSetSharedPart_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *offset, HYPRE_Int shared_part, HYPRE_Int *shared_ilower, HYPRE_Int *shared_iupper, HYPRE_Int *shared_offset, HYPRE_Int *index_map, HYPRE_Int *index_dir );
HYPRE_Int
HYPRE_SStructGridSetSharedPart( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *offset, HYPRE_Int shared_part, HYPRE_Int *shared_ilower, HYPRE_Int *shared_iupper, HYPRE_Int *shared_offset, HYPRE_Int *index_map, HYPRE_Int *index_dir );

HYPRE_Int
HYPRE_SStructGridSetVariables_flt( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );
HYPRE_Int
HYPRE_SStructGridSetVariables_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );
HYPRE_Int
HYPRE_SStructGridSetVariables_long_dbl( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );
HYPRE_Int
HYPRE_SStructGridSetVariables( HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );

HYPRE_Int
HYPRE_SStructInnerProd_flt( HYPRE_SStructVector x, HYPRE_SStructVector y, hypre_float *result );
HYPRE_Int
HYPRE_SStructInnerProd_dbl( HYPRE_SStructVector x, HYPRE_SStructVector y, hypre_double *result );
HYPRE_Int
HYPRE_SStructInnerProd_long_dbl( HYPRE_SStructVector x, HYPRE_SStructVector y, hypre_long_double *result );
HYPRE_Int
HYPRE_SStructInnerProd( HYPRE_SStructVector x, HYPRE_SStructVector y, void *result );

HYPRE_Int
HYPRE_SStructMatrixAddFEMBoxValues_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixAddFEMBoxValues_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddFEMBoxValues_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddFEMBoxValues( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, void *values );

HYPRE_Int
HYPRE_SStructMatrixAddFEMValues_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixAddFEMValues_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddFEMValues_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddFEMValues( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, void *values );

HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues2_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues2_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues2_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues2( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructMatrixAddToValues_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixAddToValues_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddToValues_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixAddToValues( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixAssemble_flt( HYPRE_SStructMatrix matrix );
HYPRE_Int
HYPRE_SStructMatrixAssemble_dbl( HYPRE_SStructMatrix matrix );
HYPRE_Int
HYPRE_SStructMatrixAssemble_long_dbl( HYPRE_SStructMatrix matrix );
HYPRE_Int
HYPRE_SStructMatrixAssemble( HYPRE_SStructMatrix matrix );

HYPRE_Int
HYPRE_SStructMatrixCreate_flt( MPI_Comm comm, HYPRE_SStructGraph graph, HYPRE_SStructMatrix *matrix );
HYPRE_Int
HYPRE_SStructMatrixCreate_dbl( MPI_Comm comm, HYPRE_SStructGraph graph, HYPRE_SStructMatrix *matrix );
HYPRE_Int
HYPRE_SStructMatrixCreate_long_dbl( MPI_Comm comm, HYPRE_SStructGraph graph, HYPRE_SStructMatrix *matrix );
HYPRE_Int
HYPRE_SStructMatrixCreate( MPI_Comm comm, HYPRE_SStructGraph graph, HYPRE_SStructMatrix *matrix );

HYPRE_Int
HYPRE_SStructMatrixDestroy_flt( HYPRE_SStructMatrix matrix );
HYPRE_Int
HYPRE_SStructMatrixDestroy_dbl( HYPRE_SStructMatrix matrix );
HYPRE_Int
HYPRE_SStructMatrixDestroy_long_dbl( HYPRE_SStructMatrix matrix );
HYPRE_Int
HYPRE_SStructMatrixDestroy( HYPRE_SStructMatrix matrix );

HYPRE_Int
HYPRE_SStructMatrixGetBoxValues_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixGetBoxValues_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixGetBoxValues_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixGetBoxValues( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixGetBoxValues2_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixGetBoxValues2_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixGetBoxValues2_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixGetBoxValues2( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructMatrixGetFEMValues_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixGetFEMValues_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixGetFEMValues_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixGetFEMValues( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, void *values );

HYPRE_Int
HYPRE_SStructMatrixGetGrid_flt( HYPRE_SStructMatrix matrix, HYPRE_SStructGrid *grid );
HYPRE_Int
HYPRE_SStructMatrixGetGrid_dbl( HYPRE_SStructMatrix matrix, HYPRE_SStructGrid *grid );
HYPRE_Int
HYPRE_SStructMatrixGetGrid_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_SStructGrid *grid );
HYPRE_Int
HYPRE_SStructMatrixGetGrid( HYPRE_SStructMatrix matrix, HYPRE_SStructGrid *grid );

HYPRE_Int
HYPRE_SStructMatrixGetObject_flt( HYPRE_SStructMatrix matrix, void **object );
HYPRE_Int
HYPRE_SStructMatrixGetObject_dbl( HYPRE_SStructMatrix matrix, void **object );
HYPRE_Int
HYPRE_SStructMatrixGetObject_long_dbl( HYPRE_SStructMatrix matrix, void **object );
HYPRE_Int
HYPRE_SStructMatrixGetObject( HYPRE_SStructMatrix matrix, void **object );

HYPRE_Int
HYPRE_SStructMatrixGetValues_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixGetValues_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixGetValues_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixGetValues( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixInitialize_flt( HYPRE_SStructMatrix matrix );
HYPRE_Int
HYPRE_SStructMatrixInitialize_dbl( HYPRE_SStructMatrix matrix );
HYPRE_Int
HYPRE_SStructMatrixInitialize_long_dbl( HYPRE_SStructMatrix matrix );
HYPRE_Int
HYPRE_SStructMatrixInitialize( HYPRE_SStructMatrix matrix );

HYPRE_Int
HYPRE_SStructMatrixMatmat_flt( HYPRE_SStructMatrix A, HYPRE_SStructMatrix B, HYPRE_SStructMatrix *C );
HYPRE_Int
HYPRE_SStructMatrixMatmat_dbl( HYPRE_SStructMatrix A, HYPRE_SStructMatrix B, HYPRE_SStructMatrix *C );
HYPRE_Int
HYPRE_SStructMatrixMatmat_long_dbl( HYPRE_SStructMatrix A, HYPRE_SStructMatrix B, HYPRE_SStructMatrix *C );
HYPRE_Int
HYPRE_SStructMatrixMatmat( HYPRE_SStructMatrix A, HYPRE_SStructMatrix B, HYPRE_SStructMatrix *C );

HYPRE_Int
HYPRE_SStructMatrixMatvec_flt( hypre_float alpha, HYPRE_SStructMatrix A, HYPRE_SStructVector x, hypre_float beta, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructMatrixMatvec_dbl( hypre_double alpha, HYPRE_SStructMatrix A, HYPRE_SStructVector x, hypre_double beta, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructMatrixMatvec_long_dbl( hypre_long_double alpha, HYPRE_SStructMatrix A, HYPRE_SStructVector x, hypre_long_double beta, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructMatrixMatvec( hypre_long_double alpha, HYPRE_SStructMatrix A, HYPRE_SStructVector x, hypre_long_double beta, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructMatrixPrint_flt( const char *filename, HYPRE_SStructMatrix matrix, HYPRE_Int all );
HYPRE_Int
HYPRE_SStructMatrixPrint_dbl( const char *filename, HYPRE_SStructMatrix matrix, HYPRE_Int all );
HYPRE_Int
HYPRE_SStructMatrixPrint_long_dbl( const char *filename, HYPRE_SStructMatrix matrix, HYPRE_Int all );
HYPRE_Int
HYPRE_SStructMatrixPrint( const char *filename, HYPRE_SStructMatrix matrix, HYPRE_Int all );

HYPRE_Int
HYPRE_SStructMatrixRead_flt( MPI_Comm comm, const char *filename, HYPRE_SStructMatrix *matrix_ptr );
HYPRE_Int
HYPRE_SStructMatrixRead_dbl( MPI_Comm comm, const char *filename, HYPRE_SStructMatrix *matrix_ptr );
HYPRE_Int
HYPRE_SStructMatrixRead_long_dbl( MPI_Comm comm, const char *filename, HYPRE_SStructMatrix *matrix_ptr );
HYPRE_Int
HYPRE_SStructMatrixRead( MPI_Comm comm, const char *filename, HYPRE_SStructMatrix *matrix_ptr );

HYPRE_Int
HYPRE_SStructMatrixSetBoxValues_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixSetBoxValues_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixSetBoxValues_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixSetBoxValues( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixSetBoxValues2_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixSetBoxValues2_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixSetBoxValues2_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixSetBoxValues2( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructMatrixSetConstantEntries_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int nentries, HYPRE_Int *centries );
HYPRE_Int
HYPRE_SStructMatrixSetConstantEntries_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int nentries, HYPRE_Int *centries );
HYPRE_Int
HYPRE_SStructMatrixSetConstantEntries_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int nentries, HYPRE_Int *centries );
HYPRE_Int
HYPRE_SStructMatrixSetConstantEntries( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int nentries, HYPRE_Int *centries );

HYPRE_Int
HYPRE_SStructMatrixSetDomainStride_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *dom_stride );
HYPRE_Int
HYPRE_SStructMatrixSetDomainStride_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *dom_stride );
HYPRE_Int
HYPRE_SStructMatrixSetDomainStride_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *dom_stride );
HYPRE_Int
HYPRE_SStructMatrixSetDomainStride( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *dom_stride );

HYPRE_Int
HYPRE_SStructMatrixSetEarlyAssemble_flt( HYPRE_SStructMatrix matrix, HYPRE_Int early_assemble );
HYPRE_Int
HYPRE_SStructMatrixSetEarlyAssemble_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int early_assemble );
HYPRE_Int
HYPRE_SStructMatrixSetEarlyAssemble_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int early_assemble );
HYPRE_Int
HYPRE_SStructMatrixSetEarlyAssemble( HYPRE_SStructMatrix matrix, HYPRE_Int early_assemble );

HYPRE_Int
HYPRE_SStructMatrixSetNSSymmetric_flt( HYPRE_SStructMatrix matrix, HYPRE_Int symmetric );
HYPRE_Int
HYPRE_SStructMatrixSetNSSymmetric_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int symmetric );
HYPRE_Int
HYPRE_SStructMatrixSetNSSymmetric_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int symmetric );
HYPRE_Int
HYPRE_SStructMatrixSetNSSymmetric( HYPRE_SStructMatrix matrix, HYPRE_Int symmetric );

HYPRE_Int
HYPRE_SStructMatrixSetObjectType_flt( HYPRE_SStructMatrix matrix, HYPRE_Int type );
HYPRE_Int
HYPRE_SStructMatrixSetObjectType_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int type );
HYPRE_Int
HYPRE_SStructMatrixSetObjectType_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int type );
HYPRE_Int
HYPRE_SStructMatrixSetObjectType( HYPRE_SStructMatrix matrix, HYPRE_Int type );

HYPRE_Int
HYPRE_SStructMatrixSetRangeStride_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ran_stride );
HYPRE_Int
HYPRE_SStructMatrixSetRangeStride_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ran_stride );
HYPRE_Int
HYPRE_SStructMatrixSetRangeStride_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ran_stride );
HYPRE_Int
HYPRE_SStructMatrixSetRangeStride( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ran_stride );

HYPRE_Int
HYPRE_SStructMatrixSetSymmetric_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int symmetric );
HYPRE_Int
HYPRE_SStructMatrixSetSymmetric_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int symmetric );
HYPRE_Int
HYPRE_SStructMatrixSetSymmetric_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int symmetric );
HYPRE_Int
HYPRE_SStructMatrixSetSymmetric( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int symmetric );

HYPRE_Int
HYPRE_SStructMatrixSetValues_flt( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_float *values );
HYPRE_Int
HYPRE_SStructMatrixSetValues_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_double *values );
HYPRE_Int
HYPRE_SStructMatrixSetValues_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructMatrixSetValues( HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixToIJMatrix_flt( HYPRE_SStructMatrix matrix, HYPRE_Int fill_diagonal, HYPRE_IJMatrix *ijmatrix );
HYPRE_Int
HYPRE_SStructMatrixToIJMatrix_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int fill_diagonal, HYPRE_IJMatrix *ijmatrix );
HYPRE_Int
HYPRE_SStructMatrixToIJMatrix_long_dbl( HYPRE_SStructMatrix matrix, HYPRE_Int fill_diagonal, HYPRE_IJMatrix *ijmatrix );
HYPRE_Int
HYPRE_SStructMatrixToIJMatrix( HYPRE_SStructMatrix matrix, HYPRE_Int fill_diagonal, HYPRE_IJMatrix *ijmatrix );

HYPRE_Int
HYPRE_SStructStencilCreate_flt( HYPRE_Int ndim, HYPRE_Int size, HYPRE_SStructStencil *stencil );
HYPRE_Int
HYPRE_SStructStencilCreate_dbl( HYPRE_Int ndim, HYPRE_Int size, HYPRE_SStructStencil *stencil );
HYPRE_Int
HYPRE_SStructStencilCreate_long_dbl( HYPRE_Int ndim, HYPRE_Int size, HYPRE_SStructStencil *stencil );
HYPRE_Int
HYPRE_SStructStencilCreate( HYPRE_Int ndim, HYPRE_Int size, HYPRE_SStructStencil *stencil );

HYPRE_Int
HYPRE_SStructStencilDestroy_flt( HYPRE_SStructStencil stencil );
HYPRE_Int
HYPRE_SStructStencilDestroy_dbl( HYPRE_SStructStencil stencil );
HYPRE_Int
HYPRE_SStructStencilDestroy_long_dbl( HYPRE_SStructStencil stencil );
HYPRE_Int
HYPRE_SStructStencilDestroy( HYPRE_SStructStencil stencil );

HYPRE_Int
HYPRE_SStructStencilPrint_flt( FILE *file, HYPRE_SStructStencil stencil );
HYPRE_Int
HYPRE_SStructStencilPrint_dbl( FILE *file, HYPRE_SStructStencil stencil );
HYPRE_Int
HYPRE_SStructStencilPrint_long_dbl( FILE *file, HYPRE_SStructStencil stencil );
HYPRE_Int
HYPRE_SStructStencilPrint( FILE *file, HYPRE_SStructStencil stencil );

HYPRE_Int
HYPRE_SStructStencilRead_flt( FILE *file, HYPRE_SStructStencil *stencil_ptr );
HYPRE_Int
HYPRE_SStructStencilRead_dbl( FILE *file, HYPRE_SStructStencil *stencil_ptr );
HYPRE_Int
HYPRE_SStructStencilRead_long_dbl( FILE *file, HYPRE_SStructStencil *stencil_ptr );
HYPRE_Int
HYPRE_SStructStencilRead( FILE *file, HYPRE_SStructStencil *stencil_ptr );

HYPRE_Int
HYPRE_SStructStencilSetEntry_flt( HYPRE_SStructStencil stencil, HYPRE_Int entry, HYPRE_Int *offset, HYPRE_Int var );
HYPRE_Int
HYPRE_SStructStencilSetEntry_dbl( HYPRE_SStructStencil stencil, HYPRE_Int entry, HYPRE_Int *offset, HYPRE_Int var );
HYPRE_Int
HYPRE_SStructStencilSetEntry_long_dbl( HYPRE_SStructStencil stencil, HYPRE_Int entry, HYPRE_Int *offset, HYPRE_Int var );
HYPRE_Int
HYPRE_SStructStencilSetEntry( HYPRE_SStructStencil stencil, HYPRE_Int entry, HYPRE_Int *offset, HYPRE_Int var );

HYPRE_Int
HYPRE_SStructVectorAddFEMBoxValues_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, hypre_float *values );
HYPRE_Int
HYPRE_SStructVectorAddFEMBoxValues_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, hypre_double *values );
HYPRE_Int
HYPRE_SStructVectorAddFEMBoxValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructVectorAddFEMBoxValues( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, void *values );

HYPRE_Int
HYPRE_SStructVectorAddFEMValues_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, hypre_float *values );
HYPRE_Int
HYPRE_SStructVectorAddFEMValues_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, hypre_double *values );
HYPRE_Int
HYPRE_SStructVectorAddFEMValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructVectorAddFEMValues( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, void *values );

HYPRE_Int
HYPRE_SStructVectorAddToBoxValues_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, hypre_float *values );
HYPRE_Int
HYPRE_SStructVectorAddToBoxValues_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, hypre_double *values );
HYPRE_Int
HYPRE_SStructVectorAddToBoxValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructVectorAddToBoxValues( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, void *values );

HYPRE_Int
HYPRE_SStructVectorAddToBoxValues2_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_float *values );
HYPRE_Int
HYPRE_SStructVectorAddToBoxValues2_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_double *values );
HYPRE_Int
HYPRE_SStructVectorAddToBoxValues2_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructVectorAddToBoxValues2( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructVectorAddToValues_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, hypre_float *value );
HYPRE_Int
HYPRE_SStructVectorAddToValues_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, hypre_double *value );
HYPRE_Int
HYPRE_SStructVectorAddToValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, hypre_long_double *value );
HYPRE_Int
HYPRE_SStructVectorAddToValues( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, void *value );

HYPRE_Int
HYPRE_SStructVectorAssemble_flt( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorAssemble_dbl( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorAssemble_long_dbl( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorAssemble( HYPRE_SStructVector vector );

HYPRE_Int
HYPRE_SStructVectorAxpy_flt( hypre_float alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructVectorAxpy_dbl( hypre_double alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructVectorAxpy_long_dbl( hypre_long_double alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructVectorAxpy( hypre_long_double alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructVectorCopy_flt( HYPRE_SStructVector x, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructVectorCopy_dbl( HYPRE_SStructVector x, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructVectorCopy_long_dbl( HYPRE_SStructVector x, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructVectorCopy( HYPRE_SStructVector x, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructVectorCreate_flt( MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructVector *vector );
HYPRE_Int
HYPRE_SStructVectorCreate_dbl( MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructVector *vector );
HYPRE_Int
HYPRE_SStructVectorCreate_long_dbl( MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructVector *vector );
HYPRE_Int
HYPRE_SStructVectorCreate( MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructVector *vector );

HYPRE_Int
HYPRE_SStructVectorDestroy_flt( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorDestroy_dbl( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorDestroy_long_dbl( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorDestroy( HYPRE_SStructVector vector );

HYPRE_Int
HYPRE_SStructVectorGather_flt( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorGather_dbl( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorGather_long_dbl( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorGather( HYPRE_SStructVector vector );

HYPRE_Int
HYPRE_SStructVectorGetBoxValues_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, hypre_float *values );
HYPRE_Int
HYPRE_SStructVectorGetBoxValues_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, hypre_double *values );
HYPRE_Int
HYPRE_SStructVectorGetBoxValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructVectorGetBoxValues( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, void *values );

HYPRE_Int
HYPRE_SStructVectorGetBoxValues2_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_float *values );
HYPRE_Int
HYPRE_SStructVectorGetBoxValues2_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_double *values );
HYPRE_Int
HYPRE_SStructVectorGetBoxValues2_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructVectorGetBoxValues2( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructVectorGetFEMValues_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, hypre_float *values );
HYPRE_Int
HYPRE_SStructVectorGetFEMValues_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, hypre_double *values );
HYPRE_Int
HYPRE_SStructVectorGetFEMValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructVectorGetFEMValues( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, void *values );

HYPRE_Int
HYPRE_SStructVectorGetObject_flt( HYPRE_SStructVector vector, void **object );
HYPRE_Int
HYPRE_SStructVectorGetObject_dbl( HYPRE_SStructVector vector, void **object );
HYPRE_Int
HYPRE_SStructVectorGetObject_long_dbl( HYPRE_SStructVector vector, void **object );
HYPRE_Int
HYPRE_SStructVectorGetObject( HYPRE_SStructVector vector, void **object );

HYPRE_Int
HYPRE_SStructVectorGetValues_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, hypre_float *value );
HYPRE_Int
HYPRE_SStructVectorGetValues_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, hypre_double *value );
HYPRE_Int
HYPRE_SStructVectorGetValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, hypre_long_double *value );
HYPRE_Int
HYPRE_SStructVectorGetValues( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, void *value );

HYPRE_Int
HYPRE_SStructVectorInitialize_flt( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorInitialize_dbl( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorInitialize_long_dbl( HYPRE_SStructVector vector );
HYPRE_Int
HYPRE_SStructVectorInitialize( HYPRE_SStructVector vector );

HYPRE_Int
HYPRE_SStructVectorInnerProd_flt( HYPRE_SStructVector x, HYPRE_SStructVector y, hypre_float *result );
HYPRE_Int
HYPRE_SStructVectorInnerProd_dbl( HYPRE_SStructVector x, HYPRE_SStructVector y, hypre_double *result );
HYPRE_Int
HYPRE_SStructVectorInnerProd_long_dbl( HYPRE_SStructVector x, HYPRE_SStructVector y, hypre_long_double *result );
HYPRE_Int
HYPRE_SStructVectorInnerProd( HYPRE_SStructVector x, HYPRE_SStructVector y, void *result );

HYPRE_Int
HYPRE_SStructVectorPrint_flt( const char *filename, HYPRE_SStructVector vector, HYPRE_Int all );
HYPRE_Int
HYPRE_SStructVectorPrint_dbl( const char *filename, HYPRE_SStructVector vector, HYPRE_Int all );
HYPRE_Int
HYPRE_SStructVectorPrint_long_dbl( const char *filename, HYPRE_SStructVector vector, HYPRE_Int all );
HYPRE_Int
HYPRE_SStructVectorPrint( const char *filename, HYPRE_SStructVector vector, HYPRE_Int all );

HYPRE_Int
HYPRE_SStructVectorPrintGLVis_flt( HYPRE_SStructVector vector, const char *fileprefix );
HYPRE_Int
HYPRE_SStructVectorPrintGLVis_dbl( HYPRE_SStructVector vector, const char *fileprefix );
HYPRE_Int
HYPRE_SStructVectorPrintGLVis_long_dbl( HYPRE_SStructVector vector, const char *fileprefix );
HYPRE_Int
HYPRE_SStructVectorPrintGLVis( HYPRE_SStructVector vector, const char *fileprefix );

HYPRE_Int
HYPRE_SStructVectorRead_flt( MPI_Comm comm, const char *filename, HYPRE_SStructVector *vector_ptr );
HYPRE_Int
HYPRE_SStructVectorRead_dbl( MPI_Comm comm, const char *filename, HYPRE_SStructVector *vector_ptr );
HYPRE_Int
HYPRE_SStructVectorRead_long_dbl( MPI_Comm comm, const char *filename, HYPRE_SStructVector *vector_ptr );
HYPRE_Int
HYPRE_SStructVectorRead( MPI_Comm comm, const char *filename, HYPRE_SStructVector *vector_ptr );

HYPRE_Int
HYPRE_SStructVectorScale_flt( hypre_float alpha, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructVectorScale_dbl( hypre_double alpha, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructVectorScale_long_dbl( hypre_long_double alpha, HYPRE_SStructVector y );
HYPRE_Int
HYPRE_SStructVectorScale( hypre_long_double alpha, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructVectorSetBoxValues_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, hypre_float *values );
HYPRE_Int
HYPRE_SStructVectorSetBoxValues_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, hypre_double *values );
HYPRE_Int
HYPRE_SStructVectorSetBoxValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructVectorSetBoxValues( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, void *values );

HYPRE_Int
HYPRE_SStructVectorSetBoxValues2_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_float *values );
HYPRE_Int
HYPRE_SStructVectorSetBoxValues2_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_double *values );
HYPRE_Int
HYPRE_SStructVectorSetBoxValues2_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, hypre_long_double *values );
HYPRE_Int
HYPRE_SStructVectorSetBoxValues2( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructVectorSetConstantValues_flt( HYPRE_SStructVector vector, hypre_float value );
HYPRE_Int
HYPRE_SStructVectorSetConstantValues_dbl( HYPRE_SStructVector vector, hypre_double value );
HYPRE_Int
HYPRE_SStructVectorSetConstantValues_long_dbl( HYPRE_SStructVector vector, hypre_long_double value );
HYPRE_Int
HYPRE_SStructVectorSetConstantValues( HYPRE_SStructVector vector, hypre_long_double value );

HYPRE_Int
HYPRE_SStructVectorSetObjectType_flt( HYPRE_SStructVector vector, HYPRE_Int type );
HYPRE_Int
HYPRE_SStructVectorSetObjectType_dbl( HYPRE_SStructVector vector, HYPRE_Int type );
HYPRE_Int
HYPRE_SStructVectorSetObjectType_long_dbl( HYPRE_SStructVector vector, HYPRE_Int type );
HYPRE_Int
HYPRE_SStructVectorSetObjectType( HYPRE_SStructVector vector, HYPRE_Int type );

HYPRE_Int
HYPRE_SStructVectorSetRandomValues_flt( HYPRE_SStructVector vector, HYPRE_Int seed );
HYPRE_Int
HYPRE_SStructVectorSetRandomValues_dbl( HYPRE_SStructVector vector, HYPRE_Int seed );
HYPRE_Int
HYPRE_SStructVectorSetRandomValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int seed );
HYPRE_Int
HYPRE_SStructVectorSetRandomValues( HYPRE_SStructVector vector, HYPRE_Int seed );

HYPRE_Int
HYPRE_SStructVectorSetValues_flt( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, hypre_float *value );
HYPRE_Int
HYPRE_SStructVectorSetValues_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, hypre_double *value );
HYPRE_Int
HYPRE_SStructVectorSetValues_long_dbl( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, hypre_long_double *value );
HYPRE_Int
HYPRE_SStructVectorSetValues( HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, void *value );


/*** 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_SStructAxpy_pre( HYPRE_Precision precision, hypre_long_double alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructGraphAddEntries_pre( HYPRE_Precision precision, HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int to_part, HYPRE_Int *to_index, HYPRE_Int to_var );

HYPRE_Int
HYPRE_SStructGraphAssemble_pre( HYPRE_Precision precision, HYPRE_SStructGraph graph );

HYPRE_Int
HYPRE_SStructGraphCreate_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructGraph *graph );

HYPRE_Int
HYPRE_SStructGraphDestroy_pre( HYPRE_Precision precision, HYPRE_SStructGraph graph );

HYPRE_Int
HYPRE_SStructGraphPrint_pre( HYPRE_Precision precision, FILE *file, HYPRE_SStructGraph graph );

HYPRE_Int
HYPRE_SStructGraphRead_pre( HYPRE_Precision precision, FILE *file, HYPRE_SStructGrid grid, HYPRE_SStructStencil **stencils, HYPRE_SStructGraph *graph_ptr );

HYPRE_Int
HYPRE_SStructGraphSetDomainGrid_pre( HYPRE_Precision precision, HYPRE_SStructGraph graph, HYPRE_SStructGrid domain_grid );

HYPRE_Int
HYPRE_SStructGraphSetFEM_pre( HYPRE_Precision precision, HYPRE_SStructGraph graph, HYPRE_Int part );

HYPRE_Int
HYPRE_SStructGraphSetFEMSparsity_pre( HYPRE_Precision precision, HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int nsparse, HYPRE_Int *sparsity );

HYPRE_Int
HYPRE_SStructGraphSetObjectType_pre( HYPRE_Precision precision, HYPRE_SStructGraph graph, HYPRE_Int type );

HYPRE_Int
HYPRE_SStructGraphSetStencil_pre( HYPRE_Precision precision, HYPRE_SStructGraph graph, HYPRE_Int part, HYPRE_Int var, HYPRE_SStructStencil stencil );

HYPRE_Int
HYPRE_SStructGridAddVariables_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );

HYPRE_Int
HYPRE_SStructGridAssemble_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid );

HYPRE_Int
HYPRE_SStructGridCoarsen_pre( HYPRE_Precision precision, HYPRE_SStructGrid fgrid, HYPRE_Index *strides, HYPRE_SStructGrid *cgrid );

HYPRE_Int
HYPRE_SStructGridCreate_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_Int ndim, HYPRE_Int nparts, HYPRE_SStructGrid *grid );

HYPRE_Int
HYPRE_SStructGridDestroy_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid );

HYPRE_Int
HYPRE_SStructGridGetVariableBox_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int var, HYPRE_Int *cell_ilower, HYPRE_Int *cell_iupper, HYPRE_Int *var_ilower, HYPRE_Int *var_iupper );

HYPRE_Int
HYPRE_SStructGridPrintGLVis_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, const char *meshprefix, void *trans, void *origin );

HYPRE_Int
HYPRE_SStructGridProjectBox_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *origin, HYPRE_Int *stride );

HYPRE_Int
HYPRE_SStructGridSetExtents_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper );

HYPRE_Int
HYPRE_SStructGridSetFEMOrdering_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ordering );

HYPRE_Int
HYPRE_SStructGridSetNeighborPart_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int nbor_part, HYPRE_Int *nbor_ilower, HYPRE_Int *nbor_iupper, HYPRE_Int *index_map, HYPRE_Int *index_dir );

HYPRE_Int
HYPRE_SStructGridSetNumGhost_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int *num_ghost );

HYPRE_Int
HYPRE_SStructGridSetPeriodic_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *periodic );

HYPRE_Int
HYPRE_SStructGridSetSharedPart_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int *offset, HYPRE_Int shared_part, HYPRE_Int *shared_ilower, HYPRE_Int *shared_iupper, HYPRE_Int *shared_offset, HYPRE_Int *index_map, HYPRE_Int *index_dir );

HYPRE_Int
HYPRE_SStructGridSetVariables_pre( HYPRE_Precision precision, HYPRE_SStructGrid grid, HYPRE_Int part, HYPRE_Int nvars, HYPRE_SStructVariable *vartypes );

HYPRE_Int
HYPRE_SStructInnerProd_pre( HYPRE_Precision precision, HYPRE_SStructVector x, HYPRE_SStructVector y, void *result );

HYPRE_Int
HYPRE_SStructMatrixAddFEMBoxValues_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, void *values );

HYPRE_Int
HYPRE_SStructMatrixAddFEMValues_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, void *values );

HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixAddToBoxValues2_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructMatrixAddToValues_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixAssemble_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix );

HYPRE_Int
HYPRE_SStructMatrixCreate_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_SStructGraph graph, HYPRE_SStructMatrix *matrix );

HYPRE_Int
HYPRE_SStructMatrixDestroy_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix );

HYPRE_Int
HYPRE_SStructMatrixGetBoxValues_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixGetBoxValues2_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructMatrixGetFEMValues_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, void *values );

HYPRE_Int
HYPRE_SStructMatrixGetGrid_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_SStructGrid *grid );

HYPRE_Int
HYPRE_SStructMatrixGetObject_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, void **object );

HYPRE_Int
HYPRE_SStructMatrixGetValues_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixInitialize_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix );

HYPRE_Int
HYPRE_SStructMatrixMatmat_pre( HYPRE_Precision precision, HYPRE_SStructMatrix A, HYPRE_SStructMatrix B, HYPRE_SStructMatrix *C );

HYPRE_Int
HYPRE_SStructMatrixMatvec_pre( HYPRE_Precision precision, hypre_long_double alpha, HYPRE_SStructMatrix A, HYPRE_SStructVector x, hypre_long_double beta, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructMatrixPrint_pre( HYPRE_Precision precision, const char *filename, HYPRE_SStructMatrix matrix, HYPRE_Int all );

HYPRE_Int
HYPRE_SStructMatrixRead_pre( HYPRE_Precision precision, MPI_Comm comm, const char *filename, HYPRE_SStructMatrix *matrix_ptr );

HYPRE_Int
HYPRE_SStructMatrixSetBoxValues_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixSetBoxValues2_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructMatrixSetConstantEntries_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int nentries, HYPRE_Int *centries );

HYPRE_Int
HYPRE_SStructMatrixSetDomainStride_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *dom_stride );

HYPRE_Int
HYPRE_SStructMatrixSetEarlyAssemble_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int early_assemble );

HYPRE_Int
HYPRE_SStructMatrixSetNSSymmetric_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int symmetric );

HYPRE_Int
HYPRE_SStructMatrixSetObjectType_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int type );

HYPRE_Int
HYPRE_SStructMatrixSetRangeStride_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *ran_stride );

HYPRE_Int
HYPRE_SStructMatrixSetSymmetric_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int var, HYPRE_Int to_var, HYPRE_Int symmetric );

HYPRE_Int
HYPRE_SStructMatrixSetValues_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, HYPRE_Int nentries, HYPRE_Int *entries, void *values );

HYPRE_Int
HYPRE_SStructMatrixToIJMatrix_pre( HYPRE_Precision precision, HYPRE_SStructMatrix matrix, HYPRE_Int fill_diagonal, HYPRE_IJMatrix *ijmatrix );

HYPRE_Int
HYPRE_SStructStencilCreate_pre( HYPRE_Precision precision, HYPRE_Int ndim, HYPRE_Int size, HYPRE_SStructStencil *stencil );

HYPRE_Int
HYPRE_SStructStencilDestroy_pre( HYPRE_Precision precision, HYPRE_SStructStencil stencil );

HYPRE_Int
HYPRE_SStructStencilPrint_pre( HYPRE_Precision precision, FILE *file, HYPRE_SStructStencil stencil );

HYPRE_Int
HYPRE_SStructStencilRead_pre( HYPRE_Precision precision, FILE *file, HYPRE_SStructStencil *stencil_ptr );

HYPRE_Int
HYPRE_SStructStencilSetEntry_pre( HYPRE_Precision precision, HYPRE_SStructStencil stencil, HYPRE_Int entry, HYPRE_Int *offset, HYPRE_Int var );

HYPRE_Int
HYPRE_SStructVectorAddFEMBoxValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, void *values );

HYPRE_Int
HYPRE_SStructVectorAddFEMValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, void *values );

HYPRE_Int
HYPRE_SStructVectorAddToBoxValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, void *values );

HYPRE_Int
HYPRE_SStructVectorAddToBoxValues2_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructVectorAddToValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, void *value );

HYPRE_Int
HYPRE_SStructVectorAssemble_pre( HYPRE_Precision precision, HYPRE_SStructVector vector );

HYPRE_Int
HYPRE_SStructVectorAxpy_pre( HYPRE_Precision precision, hypre_long_double alpha, HYPRE_SStructVector x, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructVectorCopy_pre( HYPRE_Precision precision, HYPRE_SStructVector x, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructVectorCreate_pre( HYPRE_Precision precision, MPI_Comm comm, HYPRE_SStructGrid grid, HYPRE_SStructVector *vector );

HYPRE_Int
HYPRE_SStructVectorDestroy_pre( HYPRE_Precision precision, HYPRE_SStructVector vector );

HYPRE_Int
HYPRE_SStructVectorGather_pre( HYPRE_Precision precision, HYPRE_SStructVector vector );

HYPRE_Int
HYPRE_SStructVectorGetBoxValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, void *values );

HYPRE_Int
HYPRE_SStructVectorGetBoxValues2_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructVectorGetFEMValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, void *values );

HYPRE_Int
HYPRE_SStructVectorGetObject_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, void **object );

HYPRE_Int
HYPRE_SStructVectorGetValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, void *value );

HYPRE_Int
HYPRE_SStructVectorInitialize_pre( HYPRE_Precision precision, HYPRE_SStructVector vector );

HYPRE_Int
HYPRE_SStructVectorInnerProd_pre( HYPRE_Precision precision, HYPRE_SStructVector x, HYPRE_SStructVector y, void *result );

HYPRE_Int
HYPRE_SStructVectorPrint_pre( HYPRE_Precision precision, const char *filename, HYPRE_SStructVector vector, HYPRE_Int all );

HYPRE_Int
HYPRE_SStructVectorPrintGLVis_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, const char *fileprefix );

HYPRE_Int
HYPRE_SStructVectorRead_pre( HYPRE_Precision precision, MPI_Comm comm, const char *filename, HYPRE_SStructVector *vector_ptr );

HYPRE_Int
HYPRE_SStructVectorScale_pre( HYPRE_Precision precision, hypre_long_double alpha, HYPRE_SStructVector y );

HYPRE_Int
HYPRE_SStructVectorSetBoxValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, void *values );

HYPRE_Int
HYPRE_SStructVectorSetBoxValues2_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *ilower, HYPRE_Int *iupper, HYPRE_Int var, HYPRE_Int *vilower, HYPRE_Int *viupper, void *values );

HYPRE_Int
HYPRE_SStructVectorSetConstantValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, hypre_long_double value );

HYPRE_Int
HYPRE_SStructVectorSetObjectType_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int type );

HYPRE_Int
HYPRE_SStructVectorSetRandomValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int seed );

HYPRE_Int
HYPRE_SStructVectorSetValues_pre( HYPRE_Precision precision, HYPRE_SStructVector vector, HYPRE_Int part, HYPRE_Int *index, HYPRE_Int var, void *value );


#endif

#ifdef __cplusplus
}
#endif

#endif

