diff --git a/linpack_accelerate.c b/linpack_accelerate.c index 03074d2d6c3c42917e6722adb4f103737525e9b0..4495002a553d19e354500c7ebb20ea00111d335a 100644 --- a/linpack_accelerate.c +++ b/linpack_accelerate.c @@ -29,11 +29,25 @@ #include <time.h> #include <float.h> +#if defined(SP) +#define ZERO 0.0 +#define ONE 1.0 +#define PREC "Single" +#define BASE10DIG FLT_DIG + +typedef float REAL; + +#elif defined(DP) + #define ZERO 0.0e0 #define ONE 1.0e0 #define PREC "Double" #define BASE10DIG DBL_DIG +typedef double REAL; + +#endif + #if defined(__LP64__) typedef int LPLONG; #define PLF "d" @@ -42,15 +56,12 @@ typedef long LPLONG; #define PLF "ld" #endif -typedef double REAL; - static REAL linpack (LPLONG nreps,int arsize); static void matgen (REAL *a,int lda,int n,REAL *b,REAL *norma); static REAL second (void); static void *mempool; - int main(void) { @@ -157,7 +168,11 @@ main(void) */ static void dgefa(REAL *a, LPLONG lda, LPLONG n, LPLONG *ipvt, LPLONG *info) { +#if defined(DP) dgetrf_(&n, &n, a, &lda, ipvt, info); +#elif defined(SP) + sgetrf_(&n, &n, a, &lda, ipvt, info); +#endif } /* @@ -228,7 +243,11 @@ dgesl(REAL *a, LPLONG lda, LPLONG n, LPLONG *ipvt, REAL *b, int job) LPLONG nrhs = 1; LPLONG ldb = n; static char trans = 'N'; +#if defined(DP) dgetrs_(&trans, &n, &nrhs, a, &lda, ipvt, b, &ldb, &info); +#elif defined(SP) + sgetrs_(&trans, &n, &nrhs, a, &lda, ipvt, b, &ldb, &info); +#endif }