Skip to content

Commit

Permalink
make fortran_open and fortran_close precision dependent
Browse files Browse the repository at this point in the history
  • Loading branch information
dalekopera committed Aug 20, 2024
1 parent a9cf350 commit 7d1b8e8
Show file tree
Hide file tree
Showing 17 changed files with 158 additions and 47 deletions.
118 changes: 111 additions & 7 deletions include/cutest.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* Boolean logicals provided, August 21 2013
* fortran intent(in) variables defined as const, Dec 2 2015
*
* this version 2024-08-18
* this version 2024-08-20
*
* ======================================================================
*/
Expand All @@ -29,7 +29,7 @@
* give a version number
*/

#define CUTEST_VERSION 2.2.1
#define CUTEST_VERSION 2.2.2

/*
* Define name of main() function on a
Expand Down Expand Up @@ -199,6 +199,9 @@ typedef struct VarTypes {
#define CUTEST_uterminate FUNDERSCORE(cutest_uterminate)
#define CUTEST_cterminate FUNDERSCORE(cutest_cterminate)

#define FORTRAN_open FUNDERSCORE(fortran_open)
#define FORTRAN_close FUNDERSCORE(fortran_close)

#define CUTEST_usetup_s FUNDERSCORE(cutest_usetup_s)
#define CUTEST_csetup_s FUNDERSCORE(cutest_cint_csetup_s)

Expand Down Expand Up @@ -287,8 +290,8 @@ typedef struct VarTypes {
#define CUTEST_uterminate_s FUNDERSCORE(cutest_uterminate_s)
#define CUTEST_cterminate_s FUNDERSCORE(cutest_cterminate_s)

#define FORTRAN_open FUNDERSCORE(fortran_open)
#define FORTRAN_close FUNDERSCORE(fortran_close)
#define FORTRAN_open_s FUNDERSCORE(fortran_open_s)
#define FORTRAN_close_s FUNDERSCORE(fortran_close_s)

/*
* Prototypes for CUTEst FORTRAN routines found in libcutest.a
Expand Down Expand Up @@ -541,6 +544,10 @@ void CUTEST_cohprodsp( integer *status, integer *nnzohp,
void CUTEST_uterminate( integer *status );
void CUTEST_cterminate( integer *status );

/* FORTRAN auxiliary subroutines to retrieve stream unit numbers */
void FORTRAN_open( const integer *funit, const char *fname, integer *ierr );
void FORTRAN_close( const integer *funit, integer *ierr );

/* Same for single precision versions */

/* Setup routines */
Expand Down Expand Up @@ -788,9 +795,105 @@ void CUTEST_cohprodsp_s( integer *status, integer *nnzohp,
void CUTEST_uterminate_s( integer *status );
void CUTEST_cterminate_s( integer *status );

/* FORTRAN auxiliary subroutines to retrieve stream unit numbers */
void FORTRAN_open_s( const integer *funit, const char *fname, integer *ierr );
void FORTRAN_close_s( const integer *funit, integer *ierr );

/* Same for quadruple precision versions */

#ifdef REAL_128

#define CUTEST_usetup_q FUNDERSCORE(cutest_usetup_q)
#define CUTEST_csetup_q FUNDERSCORE(cutest_cint_csetup_q)

#define CUTEST_udimen_q FUNDERSCORE(cutest_udimen_q)
#define CUTEST_udimsh_q FUNDERSCORE(cutest_udimsh_q)
#define CUTEST_udimse_q FUNDERSCORE(cutest_udimse_q)
#define CUTEST_uvartype_q FUNDERSCORE(cutest_uvartype_q)
#define CUTEST_unames_q FUNDERSCORE(cutest_unames_q)
#define CUTEST_ureport_q FUNDERSCORE(cutest_ureport_q)

#define CUTEST_cdimen_q FUNDERSCORE(cutest_cdimen_q)
#define CUTEST_cnoobj_q FUNDERSCORE(cutest_cint_cnoobj_q)
#define CUTEST_cdimsg_q FUNDERSCORE(cutest_cdimsg_q)
#define CUTEST_cdimsj_q FUNDERSCORE(cutest_cdimsj_q)
#define CUTEST_cdimsh_q FUNDERSCORE(cutest_cdimsh_q)
#define CUTEST_cdimohp_q FUNDERSCORE(cutest_cdimohp_q)
#define CUTEST_cdimchp_q FUNDERSCORE(cutest_cdimchp_q)
#define CUTEST_cdimse_q FUNDERSCORE(cutest_cdimse_q)
#define CUTEST_cstats_q FUNDERSCORE(cutest_cstats_q)
#define CUTEST_cvartype_q FUNDERSCORE(cutest_cvartype_q)
#define CUTEST_cnames_q FUNDERSCORE(cutest_cnames_q)
#define CUTEST_creport_q FUNDERSCORE(cutest_creport_q)

#define CUTEST_connames_q FUNDERSCORE(cutest_connames_q)
#define CUTEST_pname_q FUNDERSCORE(cutest_pname_q)
#define CUTEST_probname_q FUNDERSCORE(cutest_probname_q)
#define CUTEST_varnames_q FUNDERSCORE(cutest_varnames_q)

#define CUTEST_ufn_q FUNDERSCORE(cutest_ufn_q)
#define CUTEST_ugr_q FUNDERSCORE(cutest_ugr_q)
#define CUTEST_uofg_q FUNDERSCORE(cutest_cint_uofg_q)
#define CUTEST_ubandh_q FUNDERSCORE(cutest_ubandh_q)
#define CUTEST_udh_q FUNDERSCORE(cutest_udh_q)
#define CUTEST_ushp_q FUNDERSCORE(cutest_ushp_q)
#define CUTEST_ush_q FUNDERSCORE(cutest_ush_q)
#define CUTEST_ueh_q FUNDERSCORE(cutest_cint_ueh_q)
#define CUTEST_ugrdh_q FUNDERSCORE(cutest_ugrdh_q)
#define CUTEST_ugrsh_q FUNDERSCORE(cutest_ugrsh_q)
#define CUTEST_ugreh_q FUNDERSCORE(cutest_cint_ugreh_q)
#define CUTEST_uhprod_q FUNDERSCORE(cutest_cint_uhprod_q)
#define CUTEST_ushprod_q FUNDERSCORE(cutest_cint_ushprod_q)

#define CUTEST_cfn_q FUNDERSCORE(cutest_cfn_q)
#define CUTEST_const_q FUNDERSCORE(cutest_const_q)
#define CUTEST_cofg_q FUNDERSCORE(cutest_cint_cofg_q)
#define CUTEST_cofsg_q FUNDERSCORE(cutest_cint_cofsg_q)
#define CUTEST_ccfg_q FUNDERSCORE(cutest_cint_ccfg_q)
#define CUTEST_clfg_q FUNDERSCORE(cutest_cint_clfg_q)
#define CUTEST_cgr_q FUNDERSCORE(cutest_cint_cgr_q)
#define CUTEST_csgr_q FUNDERSCORE(cutest_cint_csgr_q)
#define CUTEST_csgrp_q FUNDERSCORE(cutest_csgrp_q)
#define CUTEST_csjp_q FUNDERSCORE(cutest_csjp_q)
#define CUTEST_ccfsg_q FUNDERSCORE(cutest_cint_ccfsg_q)
#define CUTEST_ccifg_q FUNDERSCORE(cutest_cint_ccifg_q)
#define CUTEST_ccifsg_q FUNDERSCORE(cutest_cint_ccifsg_q)
#define CUTEST_cgrdh_q FUNDERSCORE(cutest_cint_cgrdh_q)
#define CUTEST_cdh_q FUNDERSCORE(cutest_cdh_q)
#define CUTEST_cdhc_q FUNDERSCORE(cutest_cdhc_q)
#define CUTEST_cdhj_q FUNDERSCORE(cutest_cdhj_q)
#define CUTEST_cshp_q FUNDERSCORE(cutest_cshp_q)
#define CUTEST_csh_q FUNDERSCORE(cutest_csh_q)
#define CUTEST_cshc_q FUNDERSCORE(cutest_cshc_q)
#define CUTEST_cshj_q FUNDERSCORE(cutest_cshj_q)
#define CUTEST_ceh_q FUNDERSCORE(cutest_cint_ceh_q)
#define CUTEST_cifn_q FUNDERSCORE(cutest_cifn_q)
#define CUTEST_cigr_q FUNDERSCORE(cutest_cigr_q)
#define CUTEST_cisgr_q FUNDERSCORE(cutest_cisgr_q)
#define CUTEST_cisgrp_q FUNDERSCORE(cutest_cisgrp_q)
#define CUTEST_cidh_q FUNDERSCORE(cutest_cidh_q)
#define CUTEST_cish_q FUNDERSCORE(cutest_cish_q)
#define CUTEST_csgrsh_q FUNDERSCORE(cutest_cint_csgrsh_q)
#define CUTEST_csgrshp_q FUNDERSCORE(cutest_csgrshp_q)
#define CUTEST_csgreh_q FUNDERSCORE(cutest_cint_csgreh_q)
#define CUTEST_chprod_q FUNDERSCORE(cutest_cint_chprod_q)
#define CUTEST_cshprod_q FUNDERSCORE(cutest_cint_chsprod_q)
#define CUTEST_chcprod_q FUNDERSCORE(cutest_cint_chcprod_q)
#define CUTEST_cshcprod_q FUNDERSCORE(cutest_cint_cshcprod_q)
#define CUTEST_chjprod_q FUNDERSCORE(cutest_cint_chjprod_q)
#define CUTEST_cjprod_q FUNDERSCORE(cutest_cint_cjprod_q)
#define CUTEST_csjprod_q FUNDERSCORE(cutest_cint_csjprod_q)
#define CUTEST_cchprods_q FUNDERSCORE(cutest_cint_cchprods_q)
#define CUTEST_cchprodsp_q FUNDERSCORE(cutest_cchprodsp_q)
#define CUTEST_cohprods_q FUNDERSCORE(cutest_cint_cohprods_q)
#define CUTEST_cohprodsp_q FUNDERSCORE(cutest_cohprodsp_q)

#define CUTEST_uterminate_q FUNDERSCORE(cutest_uterminate_q)
#define CUTEST_cterminate_q FUNDERSCORE(cutest_cterminate_q)

#define FORTRAN_open_q FUNDERSCORE(fortran_open_q)
#define FORTRAN_close_q FUNDERSCORE(fortran_close_q)

/* Setup routines */
void CUTEST_usetup_q ( integer *status, const integer *funit,
const integer *iout, const integer *io_buffer,
Expand Down Expand Up @@ -1035,11 +1138,12 @@ void CUTEST_cohprodsp_q( integer *status, integer *nnzohp,
/* Termination routines */
void CUTEST_uterminate_q( integer *status );
void CUTEST_cterminate_q( integer *status );
#endif

/* FORTRAN auxiliary subroutines to retrieve stream unit numbers */
void FORTRAN_open( const integer *funit, const char *fname, integer *ierr );
void FORTRAN_close( const integer *funit, integer *ierr );
void FORTRAN_open_q( const integer *funit, const char *fname, integer *ierr );
void FORTRAN_close_q( const integer *funit, integer *ierr );

#endif

/*
* Memory allocation shortcuts
Expand Down
4 changes: 3 additions & 1 deletion include/cutest_routines_double.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
*
* Nick Gould for CUTEst
* initial version, 2023-11-11
* this version 2024-01-16
* this version 2024-08-20
*/

#define ELFUN_r ELFUN
#define ELFUN_flexible_r ELFUN_flexible
#define GROUP_r GROUP
#define RANGE_r RANGE
#define FORTRAN_open_r FORTRAN_open
#define FORTRAN_close_r FORTRAN_close
#define CUTEST_allocate_array_integer_r CUTEST_allocate_array_integer
#define CUTEST_allocate_array_real_r CUTEST_allocate_array_real
#define CUTEST_ccfg_r CUTEST_ccfg
Expand Down
4 changes: 3 additions & 1 deletion include/cutest_routines_quadruple.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
*
* Nick Gould for CUTEst
* initial version, 2023-11-11
* this version 2024-04-05
* this version 2024-08-20
*/

#define ELFUN_r ELFUN_q
#define ELFUN_flexible_r ELFUN_flexible_q
#define GROUP_r GROUP_q
#define RANGE_r RANGE_q
#define FORTRAN_open_r FORTRAN_open_q
#define FORTRAN_close_r FORTRAN_close_q
#define CUTEST_allocate_array_integer_r CUTEST_allocate_array_integer_q
#define CUTEST_allocate_array_real_r CUTEST_allocate_array_real_q
#define CUTEST_ccfg_r CUTEST_ccfg_q
Expand Down
4 changes: 3 additions & 1 deletion include/cutest_routines_single.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
*
* Nick Gould for CUTEst
* initial version, 2023-11-11
* this version 2024-01-16
* this version 2024-08-20
*/

#define ELFUN_r ELFUN_s
#define ELFUN_flexible_r ELFUN_flexible_s
#define GROUP_r GROUP_s
#define RANGE_r RANGE_s
#define FORTRAN_open_r FORTRAN_open_s
#define FORTRAN_close_r FORTRAN_close_s
#define CUTEST_allocate_array_integer_r CUTEST_allocate_array_integer_s
#define CUTEST_allocate_array_real_r CUTEST_allocate_array_real_s
#define CUTEST_ccfg_r CUTEST_ccfg_s
Expand Down
4 changes: 2 additions & 2 deletions src/derchk/derchk_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ extern "C" { /* To prevent C++ compilers from mangling symbols */

/* Open problem description file OUTSDIF.d */
ierr = 0;
FORTRAN_open(&funit, fname, &ierr);
FORTRAN_open_r(&funit, fname, &ierr);
if (ierr) {
printf("Error opening file OUTSDIF.d.\nAborting.\n");
exit(1);
Expand Down Expand Up @@ -304,7 +304,7 @@ extern "C" { /* To prevent C++ compilers from mangling symbols */
printf("*********************\n\n");

ierr = 0;
FORTRAN_close(&funit, &ierr);
FORTRAN_close_r(&funit, &ierr);
if (ierr)
printf("Error closing %s on unit %d.\n", fname, (int)funit);

Expand Down
5 changes: 3 additions & 2 deletions src/genc/genc.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ extern "C" { /* To prevent C++ compilers from mangling symbols */
#endif

#include "cutest.h"
#include "cutest_routines.h"

rp_ genc( rp_ dummy )
{
Expand All @@ -31,7 +32,7 @@ void genspc( integer funit, char *fname )
Possibly, this routine contains precision-dependent directives */

/* Open relevant file */
FORTRAN_open( &funit, fname, &ierr );
FORTRAN_open_r( &funit, fname, &ierr );
if ( ierr )
{
printf( "Error opening spec file %s.\nAborting.\n", fname );
Expand All @@ -40,7 +41,7 @@ void genspc( integer funit, char *fname )

/* ... Do something ... */

FORTRAN_close( &funit, &ierr );
FORTRAN_close_r( &funit, &ierr );
return;

}
Expand Down
6 changes: 3 additions & 3 deletions src/genc/genc_main.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* THIS VERSION: CUTEST 2.2 - 2023-12-02 AT 14:30 GMT */
/* THIS VERSION: CUTEST 2.2 - 2024-08-20 AT 08:00 GMT */

/* ============================================
* CUTEst interface for generic package
Expand Down Expand Up @@ -71,7 +71,7 @@ int MAINENTRY( void ){

/* Open problem description file OUTSDIF.d */
ierr = 0;
FORTRAN_open( &funit, fname, &ierr );
FORTRAN_open_r( &funit, fname, &ierr );
if ( ierr )
{
printf("Error opening file OUTSDIF.d.\nAborting.\n");
Expand Down Expand Up @@ -270,7 +270,7 @@ int MAINENTRY( void ){
printf(" ******************************************************************\n\n");

ierr = 0;
FORTRAN_close( &funit, &ierr );
FORTRAN_close_r( &funit, &ierr );
if ( ierr )
{
printf( "Error closing %s on unit %d.\n", fname, (int)funit );
Expand Down
6 changes: 3 additions & 3 deletions src/gsl/gsl_main.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* THIS VERSION: CUTEST 2.3 - 2024-06-11 AT 11:40 GMT */
/* THIS VERSION: CUTEST 2.4 - 2024-08-20 AT 07:40 GMT */

/* =================================================
* CUTEst interface for GNU Scientific Library (GSL)
Expand Down Expand Up @@ -188,7 +188,7 @@ int MAINENTRY( void ){

/* Open problem description file OUTSDIF.d */
ierr = 0;
FORTRAN_open( &funit, fname, &ierr );
FORTRAN_open_r( &funit, fname, &ierr );
if ( ierr )
{
printf("Error opening file OUTSDIF.d.\nAborting.\n");
Expand Down Expand Up @@ -630,7 +630,7 @@ int MAINENTRY( void ){
printf(" ******************************************************************\n\n");

ierr = 0;
FORTRAN_close( &funit, &ierr );
FORTRAN_close_r( &funit, &ierr );
if ( ierr )
{
printf( "Error closing %s on unit %d.\n", fname, (int)funit );
Expand Down
6 changes: 3 additions & 3 deletions src/knitro/knitro_main.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* THIS VERSION: CUTEST 2.2 - 2023-12-04 AT 16:15 GMT */
/* THIS VERSION: CUTEST 2.2 - 2024-08-20 AT 07:45 GMT */

/* ================================================
* CUTEst interface to KNITRO 7
Expand Down Expand Up @@ -267,7 +267,7 @@ extern "C" { /* To prevent C++ compilers from mangling symbols */

/* Open problem description file OUTSDIF.d */
ierr = 0;
FORTRAN_open(&funit, fname, &ierr);
FORTRAN_open_r(&funit, fname, &ierr);
if (ierr) {
printf("Error opening file OUTSDIF.d.\nAborting.\n");
exit(1);
Expand Down Expand Up @@ -622,7 +622,7 @@ extern "C" { /* To prevent C++ compilers from mangling symbols */
terminate:

ierr = 0;
FORTRAN_close(&funit, &ierr);
FORTRAN_close_r(&funit, &ierr);
if (ierr) {
fprintf(stderr, "Error closing %s on unit %d.\n", fname, funit);
fprintf(stderr, "Trying not to abort.\n");
Expand Down
6 changes: 3 additions & 3 deletions src/loqo/loqo_main.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* THIS VERSION: CUTEST 2.2 - 2023-12-05 AT 08:15 GMT */
/* THIS VERSION: CUTEST 2.2 - 2024-08-20 AT 07:45 GMT */

/* ====================================================
* CUTEst interface for LOQO October 22nd, 2003
Expand Down Expand Up @@ -151,7 +151,7 @@ static int spec = 0;
int i;

/* Open problem description file OUTSDIF.d */
FORTRAN_open( &funit, fname, &ierr );
FORTRAN_open_r( &funit, fname, &ierr );
if( ierr ) {
printf("Error opening file OUTSDIF.d.\nAborting.\n");
exit(1);
Expand Down Expand Up @@ -499,7 +499,7 @@ static int spec = 0;
printf(" count_h (LOQO) = %-8d\n", count_h);
printf(" ******************************************************************\n\n");

FORTRAN_close( &funit, &ierr );
FORTRAN_close_r( &funit, &ierr );
if( ierr ) {
printf( "Error closing file %s", fname );
return 1;
Expand Down
6 changes: 3 additions & 3 deletions src/matlab/mcutest.c
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ extern "C" {
mexPrintf("Opening data file\n");
#endif
ioErr = 0;
if (! dataFileOpen) FORTRAN_open(&funit, fName, &ioErr);
if (! dataFileOpen) FORTRAN_open_r(&funit, fName, &ioErr);
if (ioErr) mexErrMsgTxt("Error opening file OUTSDIF.d\n");
dataFileOpen = 1;

Expand Down Expand Up @@ -376,7 +376,7 @@ extern "C" {
mexPrintf("Opening data file\n");
#endif
ioErr = 0;
if (! dataFileOpen) FORTRAN_open(&funit, fName, &ioErr);
if (! dataFileOpen) FORTRAN_open_r(&funit, fName, &ioErr);
if (ioErr) mexErrMsgTxt("Error opening file OUTSDIF.d\n");

#ifdef MXDEBUG
Expand Down Expand Up @@ -482,7 +482,7 @@ extern "C" {
mexPrintf(" %-s\n", probName);
mexPrintf("Closing data file\n");
#endif
FORTRAN_close(&funit, &ioErr);
FORTRAN_close_r(&funit, &ioErr);
if (ioErr) mexWarnMsgTxt("Error closing file OUTSDIF.d\n");
dataFileOpen = 0;

Expand Down
Loading

0 comments on commit 7d1b8e8

Please sign in to comment.