Changed MPI routines to hypre_MPI routines. Added hypre_printf, etc. routines. Added AUTOTEST tests to look for 'int' and 'MPI_' calls. Added a new approach for the Fortran interface (not implemented everywhere yet).
220 lines
4.6 KiB
C
220 lines
4.6 KiB
C
|
|
#include "hypre_blas.h"
|
|
#include "f2c.h"
|
|
|
|
logical hypre_lsame_(char *ca, char *cb)
|
|
{
|
|
/* -- LAPACK auxiliary routine (version 3.0) --
|
|
Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
|
|
Courant Institute, Argonne National Lab, and Rice University
|
|
September 30, 1994
|
|
|
|
|
|
Purpose
|
|
=======
|
|
|
|
LSAME returns .TRUE. if CA is the same letter as CB regardless of
|
|
case.
|
|
|
|
Arguments
|
|
=========
|
|
|
|
CA (input) CHARACTER*1
|
|
CB (input) CHARACTER*1
|
|
CA and CB specify the single characters to be compared.
|
|
|
|
=====================================================================
|
|
|
|
|
|
|
|
Test if the characters are equal */
|
|
/* System generated locals */
|
|
logical ret_val;
|
|
/* Local variables */
|
|
static integer inta, intb, zcode;
|
|
|
|
|
|
ret_val = *(unsigned char *)ca == *(unsigned char *)cb;
|
|
if (ret_val) {
|
|
return ret_val;
|
|
}
|
|
|
|
/* Now test for equivalence if both characters are alphabetic. */
|
|
|
|
zcode = 'Z';
|
|
|
|
/* Use 'Z' rather than 'A' so that ASCII can be detected on Prime
|
|
machines, on which ICHAR returns a value with bit 8 set.
|
|
ICHAR('A') on Prime machines returns 193 which is the same as
|
|
ICHAR('A') on an EBCDIC machine. */
|
|
|
|
inta = *(unsigned char *)ca;
|
|
intb = *(unsigned char *)cb;
|
|
|
|
if (zcode == 90 || zcode == 122) {
|
|
|
|
/* ASCII is assumed - ZCODE is the ASCII code of either lower o
|
|
r
|
|
upper case 'Z'. */
|
|
|
|
if (inta >= 97 && inta <= 122) {
|
|
inta += -32;
|
|
}
|
|
if (intb >= 97 && intb <= 122) {
|
|
intb += -32;
|
|
}
|
|
|
|
} else if (zcode == 233 || zcode == 169) {
|
|
|
|
/* EBCDIC is assumed - ZCODE is the EBCDIC code of either lower
|
|
or
|
|
upper case 'Z'. */
|
|
|
|
if ((inta >= 129 && inta <= 137) || (inta >= 145 && inta <= 153) ||
|
|
(inta >= 162 && inta <= 169)) {
|
|
inta += 64;
|
|
}
|
|
if ((intb >= 129 && intb <= 137) || (intb >= 145 && intb <= 153) ||
|
|
(intb >= 162 && intb <= 169)) {
|
|
intb += 64;
|
|
}
|
|
|
|
} else if (zcode == 218 || zcode == 250) {
|
|
|
|
/* ASCII is assumed, on Prime machines - ZCODE is the ASCII cod
|
|
e
|
|
plus 128 of either lower or upper case 'Z'. */
|
|
|
|
if (inta >= 225 && inta <= 250) {
|
|
inta += -32;
|
|
}
|
|
if (intb >= 225 && intb <= 250) {
|
|
intb += -32;
|
|
}
|
|
}
|
|
ret_val = inta == intb;
|
|
|
|
/* RETURN
|
|
|
|
End of LSAME */
|
|
|
|
return ret_val;
|
|
} /* hypre_lsame_ */
|
|
|
|
#include <stdio.h>
|
|
#include "f2c.h"
|
|
|
|
/* Subroutine */ HYPRE_Int hypre_xerbla_(char *srname, integer *info)
|
|
{
|
|
/* -- LAPACK auxiliary routine (version 2.0) --
|
|
Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
|
|
Courant Institute, Argonne National Lab, and Rice University
|
|
September 30, 1994
|
|
|
|
|
|
Purpose
|
|
=======
|
|
|
|
XERBLA is an error handler for the LAPACK routines.
|
|
It is called by an LAPACK routine if an input parameter has an
|
|
invalid value. A message is printed and execution stops.
|
|
|
|
Installers may consider modifying the STOP statement in order to
|
|
call system-specific exception-handling facilities.
|
|
|
|
Arguments
|
|
=========
|
|
|
|
SRNAME (input) CHARACTER*6
|
|
The name of the routine which called XERBLA.
|
|
|
|
INFO (input) INTEGER
|
|
The position of the invalid parameter in the parameter list
|
|
|
|
of the calling routine.
|
|
|
|
=====================================================================
|
|
*/
|
|
|
|
hypre_printf("** On entry to %6s, parameter number %2i had an illegal value\n",
|
|
srname, *info);
|
|
|
|
/* End of XERBLA */
|
|
|
|
return 0;
|
|
} /* hypre_xerbla_ */
|
|
|
|
#include "f2c.h"
|
|
#include "hypre_blas.h"
|
|
|
|
/* compare two strings */
|
|
|
|
#ifdef KR_headers
|
|
integer s_cmp(a0, b0, la, lb) char *a0, *b0; ftnlen la, lb;
|
|
#else
|
|
integer s_cmp(char *a0, char *b0, ftnlen la, ftnlen lb)
|
|
#endif
|
|
{
|
|
register unsigned char *a, *aend, *b, *bend;
|
|
a = (unsigned char *)a0;
|
|
b = (unsigned char *)b0;
|
|
aend = a + la;
|
|
bend = b + lb;
|
|
|
|
if(la <= lb)
|
|
{
|
|
while(a < aend)
|
|
if(*a != *b)
|
|
return( *a - *b );
|
|
else
|
|
{ ++a; ++b; }
|
|
|
|
while(b < bend)
|
|
if(*b != ' ')
|
|
return( ' ' - *b );
|
|
else ++b;
|
|
}
|
|
|
|
else
|
|
{
|
|
while(b < bend)
|
|
if(*a == *b)
|
|
{ ++a; ++b; }
|
|
else
|
|
return( *a - *b );
|
|
while(a < aend)
|
|
if(*a != ' ')
|
|
return(*a - ' ');
|
|
else ++a;
|
|
}
|
|
return(0);
|
|
}
|
|
#include "f2c.h"
|
|
#include "hypre_blas.h"
|
|
|
|
/* assign strings: a = b */
|
|
|
|
#ifdef KR_headers
|
|
VOID s_copy(a, b, la, lb) char *a, *b; ftnlen la, lb;
|
|
#else
|
|
void s_copy(char *a, char *b, ftnlen la, ftnlen lb)
|
|
#endif
|
|
{
|
|
register char *aend, *bend;
|
|
|
|
aend = a + la;
|
|
|
|
if(la <= lb)
|
|
while(a < aend)
|
|
*a++ = *b++;
|
|
|
|
else
|
|
{
|
|
bend = b + lb;
|
|
while(b < bend)
|
|
*a++ = *b++;
|
|
while(a < aend)
|
|
*a++ = ' ';
|
|
}
|
|
}
|