mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-07-10 23:52:59 -04:00
sci-libs/meschach: switch to the cmake github version
Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
@@ -1,3 +1 @@
|
||||
DIST meschach-1.2b_p20170511.tar.gz 577104 BLAKE2B 83b47828c814d4a7f4957f02448babb0961383f61f329431ef74a8ec2800c196d5cb0e1363a258b06f18adccaf39d859e640f01bf7f98b5b0ac634adc5f58beb SHA512 054c9380ff2df4c8c3bda0eb20df2a9da8fe357fd939116a257bb2831d04893aad29999df0d2bd9434173a1246ec18a73779abdadc477f9c2dd9d027446393d1
|
||||
DIST meschach_1.2b-14.debian.tar.xz 40664 BLAKE2B 753cdcdf8ecd63be14a294a6607380462df8a74c1cc84fafcfe4140cb10eaeb590dbe12883e2a973691a920b1e7f4efdf884781b49ea947b1132ff213f4a2652 SHA512 9793127a1785fb757b61132db1c471a2ff7949c383870f10d0b24ea2e1dafcb9d9379b61698179f91fdba4405e18e1692efcc26b759b1a5d9519e8c46206636b
|
||||
DIST meschach_1.2b.orig.tar.gz 220166 BLAKE2B fe38d9887977f45cc54857fe9c33f1eb50d1192ce3cae643127962cfce7657d9890964aabd3690751648a3a850fbbb39c6fb2110f8b4fcd789c7b8efefcec2c5 SHA512 0b8748915739b624aa44b0bf6f2c59aaf3d09f69f9455220e4baeb423c094a89cc25c03d6ced0d58bfd7c5d6626f3995fc853119ab0f7d6af151d8479c326068
|
||||
DIST meschach-1.2b_p20170511-r1.tar.gz 577104 BLAKE2B 83b47828c814d4a7f4957f02448babb0961383f61f329431ef74a8ec2800c196d5cb0e1363a258b06f18adccaf39d859e640f01bf7f98b5b0ac634adc5f58beb SHA512 054c9380ff2df4c8c3bda0eb20df2a9da8fe357fd939116a257bb2831d04893aad29999df0d2bd9434173a1246ec18a73779abdadc477f9c2dd9d027446393d1
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
Bug: https://bugs.gentoo.org/785196
|
||||
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -9,16 +9,6 @@
|
||||
[extern int test (int i, double x);],
|
||||
AC_DEFINE(HAVE_PROTOTYPES))])dnl
|
||||
dnl
|
||||
-dnl Brook Milligan's compiler check
|
||||
-dnl Check for the sun ansi c compiler, acc
|
||||
-define(LOCAL_PROG_ACC,
|
||||
-[AC_BEFORE([$0], [AC_PROG_CPP])AC_PROVIDE([$0])dnl
|
||||
-AC_PROGRAM_CHECK(CC, acc, acc, "")])dnl
|
||||
-dnl David Stewart's modified compiler check
|
||||
-define(LOCAL_PROG_CC,
|
||||
-[AC_BEFORE([$0], [AC_PROG_CPP])AC_PROVIDE([$0])dnl
|
||||
-AC_PROGRAM_CHECK(CC, acc, acc, cc)])dnl
|
||||
-dnl
|
||||
dnl
|
||||
dnl
|
||||
dnl ----------------------------------------------------------------------
|
||||
@@ -29,7 +19,6 @@
|
||||
PROGS=""
|
||||
AC_SUBST(PROGS)dnl
|
||||
LOCAL_PROG_ACC
|
||||
-AC_PROGRAM_CHECK(CC, cc, cc, gcc)
|
||||
dnl AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AC_AIX
|
||||
@@ -1,906 +0,0 @@
|
||||
--- a/CHANGELOG
|
||||
+++ b/CHANGELOG
|
||||
@@ -0,0 +1,10 @@
|
||||
+* 2000-04-13 Pierangelo Masarati <masarati@aero.polimi.it>
|
||||
+ - fixed HUGE_VAL configure
|
||||
+ - prefixed REAL, DOUBLE and FLOAT with MESCHACH_ to avoid conflicts
|
||||
+
|
||||
+* 2000-??-?? Pierangelo Masarati <masarati@aero.polimi.it>
|
||||
+ - changed the struct pair in sparse.h to avoid conflicts with C++ stl
|
||||
+ - added some helpers for adding and subtracting coefs from sparse matrices
|
||||
+ - WARNING: in C++ the macro `catch' conflicts with the exception handling
|
||||
+ keyword; I temporarily fixed the problem by #undef-ining it after including
|
||||
+ meschach headers.
|
||||
--- a/init.c
|
||||
+++ b/init.c
|
||||
@@ -59,7 +59,7 @@
|
||||
if ( ix == IVNULL )
|
||||
error(E_NULL,"iv_zero");
|
||||
|
||||
- for ( i = 0; i < ix->dim; i++ )
|
||||
+ for ( i = ix->dim; i-- > 0; )
|
||||
ix->ive[i] = 0;
|
||||
|
||||
return ix;
|
||||
@@ -77,7 +77,7 @@
|
||||
error(E_NULL,"m_zero");
|
||||
|
||||
A_m = A->m; A_n = A->n; A_me = A->me;
|
||||
- for ( i = 0; i < A_m; i++ )
|
||||
+ for ( i = A_m; i-- > 0; )
|
||||
__zero__(A_me[i],A_n);
|
||||
/* for ( j = 0; j < A_n; j++ )
|
||||
A_me[i][j] = 0.0; */
|
||||
@@ -97,7 +97,7 @@
|
||||
|
||||
m_zero(A);
|
||||
size = min(A->m,A->n);
|
||||
- for ( i = 0; i < size; i++ )
|
||||
+ for ( i = size; i-- > 0; )
|
||||
A->me[i][i] = 1.0;
|
||||
|
||||
return A;
|
||||
@@ -114,7 +114,7 @@
|
||||
error(E_NULL,"px_ident");
|
||||
|
||||
px_size = px->size; px_pe = px->pe;
|
||||
- for ( i = 0; i < px_size; i++ )
|
||||
+ for ( i = px_size; i-- > 0; )
|
||||
px_pe[i] = i;
|
||||
|
||||
return px;
|
||||
@@ -178,7 +178,7 @@
|
||||
if ( ! started )
|
||||
smrand(3127);
|
||||
|
||||
- for ( i = 0; i < len; i++ )
|
||||
+ for ( i = len; i-- > 0; )
|
||||
{
|
||||
inext = (inext >= 54) ? 0 : inext+1;
|
||||
inextp = (inextp >= 54) ? 0 : inextp+1;
|
||||
@@ -260,12 +260,28 @@
|
||||
if ( ! x )
|
||||
error(E_NULL,"v_ones");
|
||||
|
||||
- for ( i = 0; i < x->dim; i++ )
|
||||
+ for ( i = x->dim; i-- > 0; )
|
||||
x->ve[i] = 1.0;
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
+/* v_init -- fills x with d's */
|
||||
+VEC *v_init(x, d)
|
||||
+VEC *x;
|
||||
+Real d;
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ if ( ! x )
|
||||
+ error(E_NULL,"v_ones");
|
||||
+
|
||||
+ for ( i = x->dim; i-- > 0; )
|
||||
+ x->ve[i] = d;
|
||||
+
|
||||
+ return x;
|
||||
+}
|
||||
+
|
||||
/* m_ones -- fills matrix with one's */
|
||||
MAT *m_ones(A)
|
||||
MAT *A;
|
||||
@@ -275,8 +291,8 @@
|
||||
if ( ! A )
|
||||
error(E_NULL,"m_ones");
|
||||
|
||||
- for ( i = 0; i < A->m; i++ )
|
||||
- for ( j = 0; j < A->n; j++ )
|
||||
+ for ( i = A->m; i-- > 0; )
|
||||
+ for ( j = A->n; j-- > 0; )
|
||||
A->me[i][j] = 1.0;
|
||||
|
||||
return A;
|
||||
@@ -291,7 +307,7 @@
|
||||
if ( ! x )
|
||||
error(E_NULL,"v_count");
|
||||
|
||||
- for ( i = 0; i < x->dim; i++ )
|
||||
+ for ( i = x->dim; i-- > 0; )
|
||||
x->ve[i] = (Real)i;
|
||||
|
||||
return x;
|
||||
--- a/itertort.c
|
||||
+++ b/itertort.c
|
||||
@@ -41,10 +41,10 @@
|
||||
|
||||
/* for iterative methods */
|
||||
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
#define EPS 1e-7
|
||||
#define KK 20
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
#define EPS 1e-5
|
||||
#define KK 8
|
||||
#endif
|
||||
--- a/machine.h.in
|
||||
+++ b/machine.h.in
|
||||
@@ -16,14 +16,15 @@
|
||||
#undef MALLOCDECL
|
||||
#undef NOT_SEGMENTED
|
||||
#undef HAVE_MEMORY_H
|
||||
-#undef HAVE_COMPLEX_H
|
||||
+/* #undef HAVE_COMPLEX_H */
|
||||
#undef HAVE_MALLOC_H
|
||||
+#undef HAVE_HUGE_VAL_H
|
||||
#undef STDC_HEADERS
|
||||
#undef HAVE_BCOPY
|
||||
#undef HAVE_BZERO
|
||||
#undef CHAR0ISDBL0
|
||||
#undef WORDS_BIGENDIAN
|
||||
-#undef U_INT_DEF
|
||||
+/* #undef U_INT_DEF */
|
||||
#undef VARARGS
|
||||
#undef HAVE_PROTOTYPES
|
||||
#undef HAVE_PROTOTYPES_IN_STRUCT
|
||||
@@ -53,7 +54,7 @@
|
||||
#endif /* HAVE_PROTOTYPES_IN_STRUCT */
|
||||
|
||||
/* for basic or larger versions */
|
||||
-#undef COMPLEX
|
||||
+#undef MESCHACH_COMPLEX
|
||||
#undef SPARSE
|
||||
|
||||
/* for loop unrolling */
|
||||
@@ -131,9 +132,9 @@
|
||||
|
||||
/* you can choose single, double or long double (if available) precision */
|
||||
|
||||
-#define FLOAT 1
|
||||
-#define DOUBLE 2
|
||||
-#define LONG_DOUBLE 3
|
||||
+#define MESCHACH_FLOAT 1
|
||||
+#define MESCHACH_DOUBLE 2
|
||||
+#define MESCHACH_LONG_DOUBLE 3
|
||||
|
||||
#undef REAL_FLT
|
||||
#undef REAL_DBL
|
||||
@@ -149,27 +150,27 @@
|
||||
#ifdef REAL_FLT
|
||||
#define Real float
|
||||
#define LongReal float
|
||||
-#define REAL FLOAT
|
||||
-#define LONGREAL FLOAT
|
||||
+#define MESCHACH_REAL MESCHACH_FLOAT
|
||||
+#define MESCHACH_LONGREAL MESCHACH_FLOAT
|
||||
#endif
|
||||
|
||||
/* double precision */
|
||||
#ifdef REAL_DBL
|
||||
#define Real double
|
||||
#define LongReal double
|
||||
-#define REAL DOUBLE
|
||||
-#define LONGREAL DOUBLE
|
||||
+#define MESCHACH_REAL MESCHACH_DOUBLE
|
||||
+#define MESCHACH_LONGREAL MESCHACH_DOUBLE
|
||||
#endif
|
||||
|
||||
|
||||
/* machine epsilon or unit roundoff error */
|
||||
/* This is correct on most IEEE Real precision systems */
|
||||
#ifdef DBL_EPSILON
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
#define MACHEPS DBL_EPSILON
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
#define MACHEPS FLT_EPSILON
|
||||
-#elif REAL == LONGDOUBLE
|
||||
+#elif MESCHACH_REAL == MESCHACH_LONGDOUBLE
|
||||
#define MACHEPS LDBL_EPSILON
|
||||
#endif
|
||||
#endif
|
||||
@@ -178,11 +179,11 @@
|
||||
#undef D_MACHEPS
|
||||
|
||||
#ifndef MACHEPS
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
#define MACHEPS D_MACHEPS
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
#define MACHEPS F_MACHEPS
|
||||
-#elif REAL == LONGDOUBLE
|
||||
+#elif MESCHACH_REAL == MESCHACH_LONGDOUBLE
|
||||
#define MACHEPS D_MACHEPS
|
||||
#endif
|
||||
#endif
|
||||
@@ -208,12 +209,16 @@
|
||||
#endif
|
||||
|
||||
/* for non-ANSI systems */
|
||||
+#ifndef HAVE_HUGE_VAL_H
|
||||
#ifndef HUGE_VAL
|
||||
#define HUGE_VAL HUGE
|
||||
#else
|
||||
#ifndef HUGE
|
||||
#define HUGE HUGE_VAL
|
||||
#endif
|
||||
+#endif
|
||||
+#else
|
||||
+#define HUGE HUGE_VAL
|
||||
#endif
|
||||
|
||||
|
||||
--- a/matlab.h
|
||||
+++ b/matlab.h
|
||||
@@ -66,9 +66,9 @@
|
||||
|
||||
#define ORDER ROW_ORDER
|
||||
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
#define PRECISION DOUBLE_PREC
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
#define PRECISION SINGLE_PREC
|
||||
#endif
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
#endif
|
||||
|
||||
/* complex variant */
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
#include "zmatrix.h"
|
||||
|
||||
#ifdef ANSI_C
|
||||
--- a/matrix.h
|
||||
+++ b/matrix.h
|
||||
@@ -384,11 +384,17 @@
|
||||
/* Initialisation routines -- to be zero, ones, random or identity */
|
||||
#ifndef ANSI_C
|
||||
extern VEC *v_zero(), *v_rand(), *v_ones();
|
||||
+/* ANDO 01-13-99 */
|
||||
+extern VEC *v_init();
|
||||
+/* ODNA 01-13-99 */
|
||||
extern MAT *m_zero(), *m_ident(), *m_rand(), *m_ones();
|
||||
extern PERM *px_ident();
|
||||
extern IVEC *iv_zero();
|
||||
#else
|
||||
extern VEC *v_zero(VEC *), *v_rand(VEC *), *v_ones(VEC *);
|
||||
+/* ANDO 01-13-99 */
|
||||
+extern VEC *v_init(VEC*, Real);
|
||||
+/* ODNA 01-13-99 */
|
||||
extern MAT *m_zero(MAT *), *m_ident(MAT *), *m_rand(MAT *),
|
||||
*m_ones(MAT *);
|
||||
extern PERM *px_ident(PERM *);
|
||||
--- a/matrixio.c
|
||||
+++ b/matrixio.c
|
||||
@@ -124,9 +124,9 @@
|
||||
{ j--; dynamic = FALSE; goto redo2; }
|
||||
if ( (*line == 'f' || *line == 'F') && j < n-1 )
|
||||
{ j++; dynamic = FALSE; goto redo2; }
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
} while ( *line=='\0' || sscanf(line,"%lf",&mat->me[i][j])<1 );
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
} while ( *line=='\0' || sscanf(line,"%f",&mat->me[i][j])<1 );
|
||||
#endif
|
||||
fprintf(stderr,"Continue: ");
|
||||
@@ -168,9 +168,9 @@
|
||||
if ( fscanf(fp," row %u:",&dummy) < 1 )
|
||||
error(E_FORMAT,"bm_finput");
|
||||
for ( j=0; j<n; j++ )
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
if ((io_code=fscanf(fp,"%lf",&mat->me[i][j])) < 1 )
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
if ((io_code=fscanf(fp,"%f",&mat->me[i][j])) < 1 )
|
||||
#endif
|
||||
error(io_code==EOF ? 7 : 6,"bm_finput");
|
||||
@@ -337,9 +337,9 @@
|
||||
{ i--; dynamic = FALSE; goto redo; }
|
||||
if ( (*line == 'f' || *line == 'F') && i < dim-1 )
|
||||
{ i++; dynamic = FALSE; goto redo; }
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
} while ( *line=='\0' || sscanf(line,"%lf",&vec->ve[i]) < 1 );
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
} while ( *line=='\0' || sscanf(line,"%f",&vec->ve[i]) < 1 );
|
||||
#endif
|
||||
|
||||
@@ -367,9 +367,9 @@
|
||||
/* get entries */
|
||||
skipjunk(fp);
|
||||
for ( i=0; i<dim; i++ )
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
if ((io_code=fscanf(fp,"%lf",&vec->ve[i])) < 1 )
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
if ((io_code=fscanf(fp,"%f",&vec->ve[i])) < 1 )
|
||||
#endif
|
||||
error(io_code==EOF ? 7 : 6,"bfin_vec");
|
||||
--- a/meminfo.c
|
||||
+++ b/meminfo.c
|
||||
@@ -34,7 +34,7 @@
|
||||
#include <stdio.h>
|
||||
#include "matrix.h"
|
||||
#include "meminfo.h"
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
#include "zmatrix.h"
|
||||
#endif
|
||||
#ifdef SPARSE
|
||||
@@ -60,7 +60,7 @@
|
||||
"SPROW",
|
||||
"SPMAT"
|
||||
#endif
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
,"ZVEC",
|
||||
"ZMAT"
|
||||
#endif
|
||||
@@ -86,7 +86,7 @@
|
||||
sprow_free,
|
||||
sp_free
|
||||
#endif
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
,zv_free,
|
||||
zm_free
|
||||
#endif
|
||||
--- a/meminfo.h
|
||||
+++ b/meminfo.h
|
||||
@@ -58,7 +58,7 @@
|
||||
#define TYPE_SPMAT 7
|
||||
#endif
|
||||
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
#ifdef SPARSE
|
||||
#define TYPE_ZVEC 8
|
||||
#define TYPE_ZMAT 9
|
||||
--- a/memtort.c
|
||||
+++ b/memtort.c
|
||||
@@ -318,7 +318,7 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
void stat_test4(par)
|
||||
int par;
|
||||
{
|
||||
@@ -355,7 +355,7 @@
|
||||
IVEC *ix = IVNULL, *iy = IVNULL, *iz = IVNULL;
|
||||
int m,n,i,j,deg,k;
|
||||
Real s1,s2;
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
ZVEC *zx = ZVNULL, *zy = ZVNULL, *zz = ZVNULL;
|
||||
ZMAT *zA = ZMNULL, *zB = ZMNULL, *zC = ZMNULL;
|
||||
complex ONE;
|
||||
@@ -580,7 +580,7 @@
|
||||
#endif /* SPARSE */
|
||||
|
||||
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
/* complex stuff */
|
||||
|
||||
ONE = zmake(1.0,0.0);
|
||||
@@ -629,7 +629,7 @@
|
||||
errmesg("ZMAT resize");
|
||||
|
||||
zm_free_vars(&zA,&zB,&zC,NULL);
|
||||
-#endif /* COMPLEX */
|
||||
+#endif /* MESCHACH_COMPLEX */
|
||||
|
||||
#endif /* if defined(ANSI_C) || defined(VARARGS) */
|
||||
|
||||
@@ -647,7 +647,7 @@
|
||||
mem_stat_mark(1);
|
||||
for (i=0; i < 100; i++) {
|
||||
stat_test1(i);
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
stat_test4(i);
|
||||
#endif
|
||||
}
|
||||
@@ -671,7 +671,7 @@
|
||||
|
||||
for (i=0; i < 100; i++) {
|
||||
stat_test1(i);
|
||||
-#ifdef COMPLEX
|
||||
+#ifdef MESCHACH_COMPLEX
|
||||
stat_test4(i);
|
||||
#endif
|
||||
}
|
||||
@@ -727,9 +727,9 @@
|
||||
|
||||
mem_info();
|
||||
|
||||
-#if REAL == FLOAT
|
||||
+#if MESCHACH_REAL == MESCHACH_FLOAT
|
||||
printf("# SINGLE PRECISION was used\n");
|
||||
-#elif REAL == DOUBLE
|
||||
+#elif MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
printf("# DOUBLE PRECISION was used\n");
|
||||
#endif
|
||||
|
||||
@@ -744,9 +744,9 @@
|
||||
#ifdef ANSI_OR_VAR
|
||||
|
||||
printf("# you should get: \n");
|
||||
-#if (REAL == FLOAT)
|
||||
+#if (MESCHACH_REAL == MESCHACH_FLOAT)
|
||||
printf("# type VEC: 276 bytes allocated, 3 variables allocated\n");
|
||||
-#elif (REAL == DOUBLE)
|
||||
+#elif (MESCHACH_REAL == MESCHACH_DOUBLE)
|
||||
printf("# type VEC: 516 bytes allocated, 3 variables allocated\n");
|
||||
#endif
|
||||
printf("# and other types are zeros\n");
|
||||
--- a/otherio.c
|
||||
+++ b/otherio.c
|
||||
@@ -130,9 +130,9 @@
|
||||
if ( ! isatty(fileno(fp)) )
|
||||
{
|
||||
skipjunk(fp);
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
if ( (retcode=fscanf(fp,"%lf",&x)) == EOF )
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
if ( (retcode=fscanf(fp,"%f",&x)) == EOF )
|
||||
#endif
|
||||
error(E_INPUT,"fin_double");
|
||||
@@ -148,9 +148,9 @@
|
||||
fprintf(stderr,"%s: ",s);
|
||||
if ( fgets(scratch,MAXLINE,stdin)==NULL )
|
||||
error(E_INPUT,"fin_double");
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
retcode = sscanf(scratch,"%lf",&x);
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
retcode = sscanf(scratch,"%f",&x);
|
||||
#endif
|
||||
if ( ( retcode==1 && low > high ) ||
|
||||
--- a/rk4.dat
|
||||
+++ b/rk4.dat
|
||||
@@ -1,12 +0,0 @@
|
||||
-# No. of a problem
|
||||
-1
|
||||
-# Initial time
|
||||
-0
|
||||
-# Final time
|
||||
-1
|
||||
-# Solution is x(t) = (cos(t),-sin(t))
|
||||
-# x(0) =
|
||||
-Vector: dim: 2
|
||||
-1 0
|
||||
-# Step size
|
||||
-0.1
|
||||
--- a/sparse.c
|
||||
+++ b/sparse.c
|
||||
@@ -61,25 +61,33 @@
|
||||
return r->elt[idx].val;
|
||||
}
|
||||
|
||||
+void _set(d, s) double* d; double s; { *d = s; }
|
||||
+void _inc(d, s) double* d; double s; { *d += s; }
|
||||
+void _dec(d, s) double* d; double s; { *d -= s; }
|
||||
+
|
||||
/* sp_set_val -- sets the (i,j) entry of the sparse matrix A */
|
||||
-double sp_set_val(A,i,j,val)
|
||||
+double sp_set_val_(A,i,j,val,f)
|
||||
SPMAT *A;
|
||||
int i, j;
|
||||
double val;
|
||||
+void (*f)(double*, double);
|
||||
{
|
||||
SPROW *r;
|
||||
int idx, idx2, new_len;
|
||||
|
||||
if ( A == SMNULL )
|
||||
- error(E_NULL,"sp_set_val");
|
||||
+ error(E_NULL,"sp_set_val_");
|
||||
if ( i < 0 || i >= A->m || j < 0 || j >= A->n )
|
||||
- error(E_SIZES,"sp_set_val");
|
||||
+ error(E_SIZES,"sp_set_val_");
|
||||
|
||||
r = A->row+i;
|
||||
idx = sprow_idx(r,j);
|
||||
- /* printf("sp_set_val: idx = %d\n",idx); */
|
||||
+ /* printf("sp_set_val_: idx = %d\n",idx); */
|
||||
if ( idx >= 0 )
|
||||
- { r->elt[idx].val = val; return val; }
|
||||
+ {
|
||||
+ (*f)(&(r->elt[idx].val), val);
|
||||
+ return r->elt[idx].val;
|
||||
+ }
|
||||
/* else */ if ( idx < -1 )
|
||||
{
|
||||
/* Note: this destroys the column & diag access paths */
|
||||
@@ -97,7 +105,7 @@
|
||||
|
||||
r->elt = RENEW(r->elt,new_len,row_elt);
|
||||
if ( ! r->elt ) /* can't allocate */
|
||||
- error(E_MEM,"sp_set_val");
|
||||
+ error(E_MEM,"sp_set_val_");
|
||||
r->maxlen = 2*r->maxlen+1;
|
||||
}
|
||||
for ( idx2 = r->len-1; idx2 >= idx; idx2-- )
|
||||
@@ -110,12 +118,40 @@
|
||||
************************************************************/
|
||||
r->len++;
|
||||
r->elt[idx].col = j;
|
||||
+
|
||||
+ /* sbagliato
|
||||
+ (*f)(&(r->elt[idx].val), val);
|
||||
+ */
|
||||
return r->elt[idx].val = val;
|
||||
}
|
||||
/* else -- idx == -1, error in index/matrix! */
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
+double sp_set_val(A,i,j,val)
|
||||
+SPMAT *A;
|
||||
+int i, j;
|
||||
+double val;
|
||||
+{
|
||||
+ return sp_set_val_(A, i, j, val, _set);
|
||||
+}
|
||||
+
|
||||
+double sp_inc_val(A,i,j,val)
|
||||
+SPMAT *A;
|
||||
+int i, j;
|
||||
+double val;
|
||||
+{
|
||||
+ return sp_set_val_(A, i, j, val, _inc);
|
||||
+}
|
||||
+
|
||||
+double sp_dec_val(A,i,j,val)
|
||||
+SPMAT *A;
|
||||
+int i, j;
|
||||
+double val;
|
||||
+{
|
||||
+ return sp_set_val_(A, i, j, val, _dec);
|
||||
+}
|
||||
+
|
||||
/* sp_mv_mlt -- sparse matrix/dense vector multiply
|
||||
-- result is in out, which is returned unless out==NULL on entry
|
||||
-- if out==NULL on entry then the result vector is created */
|
||||
@@ -612,16 +648,17 @@
|
||||
{
|
||||
int i;
|
||||
|
||||
- if ( ! A )
|
||||
- error(E_NULL,"sp_smlt");
|
||||
- if ( ! B )
|
||||
- B = sp_get(A->m,A->n,5);
|
||||
- else
|
||||
- if ( A->m != B->m || A->n != B->n )
|
||||
- error(E_SIZES,"sp_smlt");
|
||||
+ if (!A) {
|
||||
+ error(E_NULL, "sp_smlt");
|
||||
+ }
|
||||
+ if (!B) {
|
||||
+ B = sp_get(A->m, A->n, 5);
|
||||
+ } else if (A->m != B->m || A->n != B->n) {
|
||||
+ error(E_SIZES, "sp_smlt");
|
||||
+ }
|
||||
|
||||
- for (i=0; i < A->m; i++) {
|
||||
- sprow_smlt(&(A->row[i]),alpha,0,&(B->row[i]),TYPE_SPMAT);
|
||||
+ for (i = A->m; i-- > 0; ) {
|
||||
+ sprow_smlt(&(A->row[i]), alpha, 0, &(B->row[i]), TYPE_SPMAT);
|
||||
}
|
||||
return B;
|
||||
}
|
||||
@@ -635,15 +672,16 @@
|
||||
int i, idx, len;
|
||||
row_elt *elt;
|
||||
|
||||
- if ( ! A )
|
||||
- error(E_NULL,"sp_zero");
|
||||
+ if ( ! A ) {
|
||||
+ error(E_NULL,"sp_zero");
|
||||
+ }
|
||||
|
||||
- for ( i = 0; i < A->m; i++ )
|
||||
- {
|
||||
+ for ( i = A->m; i-- > 0; ) {
|
||||
elt = A->row[i].elt;
|
||||
len = A->row[i].len;
|
||||
- for ( idx = 0; idx < len; idx++ )
|
||||
- (*elt++).val = 0.0;
|
||||
+ for ( idx = len; idx-- > 0; ) {
|
||||
+ (*elt++).val = 0.;
|
||||
+ }
|
||||
}
|
||||
|
||||
return A;
|
||||
--- a/sparse.h
|
||||
+++ b/sparse.h
|
||||
@@ -63,11 +63,12 @@
|
||||
This starts the chain down the columns using the nxt_row and nxt_idx
|
||||
fields of each entry in each row. */
|
||||
|
||||
-typedef struct pair { int pos; Real val; } pair;
|
||||
+typedef struct meschach_pair { int pos; Real val; } meschach_pair;
|
||||
|
||||
typedef struct SPVEC {
|
||||
int dim, max_dim;
|
||||
- pair *elt; /* elt[max_dim] */
|
||||
+ struct { int pos; Real val; } *elt;
|
||||
+ /* meschach_pair *elt; */ /* elt[max_dim] */
|
||||
} SPVEC;
|
||||
|
||||
#define SMNULL ((SPMAT*)NULL)
|
||||
@@ -98,6 +99,9 @@
|
||||
extern SPMAT *sp_get(), *sp_copy(), *sp_copy2(),
|
||||
*sp_zero(), *sp_resize(), *sp_compact();
|
||||
extern double sp_get_val(), sp_set_val();
|
||||
+/* ANDO 01-10-99 */
|
||||
+extern double sp_inc_val(), sp_dec_val();
|
||||
+/* ANDO 01-10-99 */
|
||||
extern VEC *sp_mv_mlt(), *sp_vm_mlt();
|
||||
extern int sp_free();
|
||||
|
||||
@@ -132,6 +136,9 @@
|
||||
*sp_zero(SPMAT *), *sp_resize(SPMAT *,int,int),
|
||||
*sp_compact(SPMAT *,double);
|
||||
double sp_get_val(SPMAT *,int,int), sp_set_val(SPMAT *,int,int,double);
|
||||
+/* ANDO 01-10-99 */
|
||||
+double sp_inc_val(SPMAT *,int,int,double), sp_dec_val(SPMAT *,int,int,double);
|
||||
+/* ANDO 01-10-99 */
|
||||
VEC *sp_mv_mlt(SPMAT *,VEC *,VEC *), *sp_vm_mlt(SPMAT *,VEC *,VEC *);
|
||||
int sp_free(SPMAT *);
|
||||
|
||||
--- a/sparseio.c
|
||||
+++ b/sparseio.c
|
||||
@@ -222,9 +222,9 @@
|
||||
error(E_INPUT,"sp_finput");
|
||||
if ( *line == 'e' || *line == 'E' )
|
||||
break;
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
} while ( sscanf(line,"%u %lf",&col,&val) != 2 ||
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
} while ( sscanf(line,"%u %f",&col,&val) != 2 ||
|
||||
#endif
|
||||
col >= n || col <= curr_col );
|
||||
@@ -282,9 +282,9 @@
|
||||
curr_col = -1;
|
||||
for ( len = 0; len < MAXSCRATCH; len++ )
|
||||
{
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
if ( (ret_val=fscanf(fp,"%u : %lf",&col,&val)) != 2 )
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
if ( (ret_val=fscanf(fp,"%u : %f",&col,&val)) != 2 )
|
||||
#endif
|
||||
break;
|
||||
--- a/splufctr.c
|
||||
+++ b/splufctr.c
|
||||
@@ -56,21 +56,27 @@
|
||||
Real max_val, tmp;
|
||||
static VEC *col_vals=VNULL;
|
||||
|
||||
- if ( ! A || ! px )
|
||||
+ if ( ! A || ! px ) {
|
||||
error(E_NULL,"spLUfctr");
|
||||
- if ( alpha <= 0.0 || alpha > 1.0 )
|
||||
+ }
|
||||
+ if ( alpha <= 0.0 || alpha > 1.0 ) {
|
||||
error(E_RANGE,"alpha in spLUfctr");
|
||||
- if ( px->size <= A->m )
|
||||
+ }
|
||||
+ if ( px->size <= A->m ) {
|
||||
px = px_resize(px,A->m);
|
||||
+ }
|
||||
px_ident(px);
|
||||
col_vals = v_resize(col_vals,A->m);
|
||||
MEM_STAT_REG(col_vals,TYPE_VEC);
|
||||
|
||||
- m = A->m; n = A->n;
|
||||
- if ( ! A->flag_col )
|
||||
+ m = A->m;
|
||||
+ n = A->n;
|
||||
+ if ( ! A->flag_col ) {
|
||||
sp_col_access(A);
|
||||
- if ( ! A->flag_diag )
|
||||
+ }
|
||||
+ if ( ! A->flag_diag ) {
|
||||
sp_diag_access(A);
|
||||
+ }
|
||||
A->flag_col = A->flag_diag = FALSE;
|
||||
if ( ! merge ) {
|
||||
merge = sprow_get(20);
|
||||
@@ -87,25 +93,29 @@
|
||||
{
|
||||
r = &(A->row[i]);
|
||||
idx = sprow_idx(r,k);
|
||||
- if ( idx < 0 )
|
||||
+ if ( idx < 0 ) {
|
||||
tmp = 0.0;
|
||||
- else
|
||||
+ } else {
|
||||
tmp = r->elt[idx].val;
|
||||
- if ( fabs(tmp) > max_val )
|
||||
+ }
|
||||
+ if ( fabs(tmp) > max_val ) {
|
||||
max_val = fabs(tmp);
|
||||
+ }
|
||||
col_vals->ve[i] = tmp;
|
||||
}
|
||||
|
||||
- if ( max_val == 0.0 )
|
||||
+ if ( max_val == 0.0 ) {
|
||||
continue;
|
||||
+ }
|
||||
|
||||
best_len = n+1; /* only if no possibilities */
|
||||
best_i = -1;
|
||||
for ( i = k; i < m; i++ )
|
||||
{
|
||||
tmp = fabs(col_vals->ve[i]);
|
||||
- if ( tmp == 0.0 )
|
||||
+ if ( tmp == 0.0 ) {
|
||||
continue;
|
||||
+ }
|
||||
if ( tmp >= alpha*max_val )
|
||||
{
|
||||
r = &(A->row[i]);
|
||||
@@ -171,17 +181,21 @@
|
||||
SPROW *r;
|
||||
row_elt *elt;
|
||||
|
||||
- if ( ! A || ! b )
|
||||
+ if ( ! A || ! b ) {
|
||||
error(E_NULL,"spLUsolve");
|
||||
- if ( (pivot != PNULL && A->m != pivot->size) || A->m != b->dim )
|
||||
+ }
|
||||
+ if ( (pivot != PNULL && A->m != pivot->size) || A->m != b->dim ) {
|
||||
error(E_SIZES,"spLUsolve");
|
||||
- if ( ! x || x->dim != A->n )
|
||||
+ }
|
||||
+ if ( ! x || x->dim != A->n ) {
|
||||
x = v_resize(x,A->n);
|
||||
+ }
|
||||
|
||||
- if ( pivot != PNULL )
|
||||
+ if ( pivot != PNULL ) {
|
||||
x = px_vec(pivot,b,x);
|
||||
- else
|
||||
+ } else {
|
||||
x = v_copy(b,x);
|
||||
+ }
|
||||
|
||||
x_ve = x->ve;
|
||||
lim = min(A->m,A->n);
|
||||
@@ -191,21 +205,24 @@
|
||||
r = &(A->row[i]);
|
||||
len = r->len;
|
||||
elt = r->elt;
|
||||
- for ( idx = 0; idx < len && elt->col < i; idx++, elt++ )
|
||||
+ for ( idx = 0; idx < len && elt->col < i; idx++, elt++ ) {
|
||||
sum -= elt->val*x_ve[elt->col];
|
||||
+ }
|
||||
x_ve[i] = sum;
|
||||
}
|
||||
|
||||
- for ( i = lim-1; i >= 0; i-- )
|
||||
+ for ( i = lim; i-- > 0; )
|
||||
{
|
||||
sum = x_ve[i];
|
||||
r = &(A->row[i]);
|
||||
len = r->len;
|
||||
elt = &(r->elt[len-1]);
|
||||
- for ( idx = len-1; idx >= 0 && elt->col > i; idx--, elt-- )
|
||||
+ for ( idx = len-1; idx >= 0 && elt->col > i; idx--, elt-- ) {
|
||||
sum -= elt->val*x_ve[elt->col];
|
||||
- if ( idx < 0 || elt->col != i || elt->val == 0.0 )
|
||||
+ }
|
||||
+ if ( idx < 0 || elt->col != i || elt->val == 0.0 ) {
|
||||
error(E_SING,"spLUsolve");
|
||||
+ }
|
||||
x_ve[i] = sum/elt->val;
|
||||
}
|
||||
|
||||
--- a/sptort.c
|
||||
+++ b/sptort.c
|
||||
@@ -39,9 +39,9 @@
|
||||
|
||||
/* for iterative methods */
|
||||
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
#define EPS 1e-7
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
#define EPS 1e-3
|
||||
#endif
|
||||
|
||||
--- a/zmatio.c
|
||||
+++ b/zmatio.c
|
||||
@@ -53,18 +53,18 @@
|
||||
fprintf(stderr,"real and imag parts: ");
|
||||
if ( fgets(line,MAXLINE,fp) == NULL )
|
||||
error(E_EOF,"z_finput");
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
io_code = sscanf(line,"%lf%lf",&z.re,&z.im);
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
io_code = sscanf(line,"%f%f",&z.re,&z.im);
|
||||
#endif
|
||||
|
||||
} while ( io_code != 2 );
|
||||
}
|
||||
else
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
if ( (io_code=fscanf(fp," (%lf,%lf)",&z.re,&z.im)) < 2 )
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
if ( (io_code=fscanf(fp," (%f,%f)",&z.re,&z.im)) < 2 )
|
||||
#endif
|
||||
error((io_code == EOF) ? E_EOF : E_FORMAT,"z_finput");
|
||||
@@ -129,9 +129,9 @@
|
||||
if ( (*line == 'f' || *line == 'F') && j < n-1 )
|
||||
{ j++; dynamic = FALSE; goto redo2; }
|
||||
} while ( *line=='\0' ||
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
sscanf(line,"%lf%lf",
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
sscanf(line,"%f%f",
|
||||
#endif
|
||||
&mat->me[i][j].re,&mat->me[i][j].im)<1 );
|
||||
@@ -176,9 +176,9 @@
|
||||
for ( j=0; j<n; j++ )
|
||||
{
|
||||
/* printf("bzm_finput: j = %d\n", j); */
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
if ((io_code=fscanf(fp," ( %lf , %lf )",
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
if ((io_code=fscanf(fp," ( %f , %f )",
|
||||
#endif
|
||||
&mat->me[i][j].re,&mat->me[i][j].im)) < 2 )
|
||||
@@ -239,9 +239,9 @@
|
||||
if ( (*line == 'f' || *line == 'F') && i < dim-1 )
|
||||
{ i++; dynamic = FALSE; goto redo; }
|
||||
} while ( *line=='\0' ||
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
sscanf(line,"%lf%lf",
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
sscanf(line,"%f%f",
|
||||
#endif
|
||||
&vec->ve[i].re,&vec->ve[i].im) < 2 );
|
||||
@@ -271,9 +271,9 @@
|
||||
/* get entries */
|
||||
skipjunk(fp);
|
||||
for ( i=0; i<dim; i++ )
|
||||
-#if REAL == DOUBLE
|
||||
+#if MESCHACH_REAL == MESCHACH_DOUBLE
|
||||
if ((io_code=fscanf(fp," (%lf,%lf)",
|
||||
-#elif REAL == FLOAT
|
||||
+#elif MESCHACH_REAL == MESCHACH_FLOAT
|
||||
if ((io_code=fscanf(fp," (%f,%f)",
|
||||
#endif
|
||||
&vec->ve[i].re,&vec->ve[i].im)) < 2 )
|
||||
@@ -1,156 +0,0 @@
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -44,14 +44,15 @@
|
||||
# and has a different meaning for keyword "complex"! Drew Parsons, 2001.
|
||||
##AC_HEADER_CHECK(complex.h, AC_DEFINE(HAVE_COMPLEX_H),)
|
||||
AC_HEADER_CHECK(malloc.h, AC_DEFINE(HAVE_MALLOC_H),)
|
||||
+AC_HEADER_CHECK(huge_val.h, AC_DEFINE(HAVE_HUGE_VAL_H),)
|
||||
AC_HEADER_CHECK(varargs.h, AC_DEFINE(VARARGS),)
|
||||
AC_DEFINE(NOT_SEGMENTED)
|
||||
AC_SIZE_T
|
||||
AC_CONST
|
||||
AC_WORDS_BIGENDIAN
|
||||
-AC_WITH(complex, AC_DEFINE(COMPLEX))
|
||||
+AC_WITH(complex, AC_DEFINE(MESCHACH_COMPLEX))
|
||||
AC_WITH(sparse, AC_DEFINE(SPARSE))
|
||||
-AC_WITH(all, AC_DEFINE(COMPLEX))
|
||||
+AC_WITH(all, AC_DEFINE(MESCHACH_COMPLEX))
|
||||
AC_WITH(all, AC_DEFINE(SPARSE))
|
||||
AC_WITH(unroll, AC_DEFINE(VUNROLL))
|
||||
AC_WITH(munroll, AC_DEFINE(MUNROLL))
|
||||
--- a/makefile.in
|
||||
+++ b/makefile.in
|
||||
@@ -18,8 +18,7 @@
|
||||
LIBS = @LIBS@
|
||||
RANLIB = @RANLIB@
|
||||
|
||||
-
|
||||
-CFLAGS = -O3 -fPIC
|
||||
+CFLAGS += -fPIC
|
||||
|
||||
|
||||
.c.o:
|
||||
@@ -68,7 +67,7 @@
|
||||
|
||||
# Different configurations
|
||||
# the dependencies **between** the parts are for dmake
|
||||
-all: shared static
|
||||
+all: shared
|
||||
#all: @PROGS@ part1 part2 part3 zpart1 zpart2 shared
|
||||
part2: part1
|
||||
part3: part2
|
||||
@@ -77,50 +76,10 @@
|
||||
zpart2: zpart1
|
||||
complex: part1 part2 zpart1 zpart2
|
||||
|
||||
+shared: libmeschach.so
|
||||
|
||||
-$(LIST1): $(HBASE)
|
||||
-part1: $(LIST1)
|
||||
- ar ru libmeschach.a $(LIST1)
|
||||
- $(RANLIB) libmeschach.a
|
||||
-# $(CC) -shared -o libmeschach.so $(LIST1)
|
||||
-
|
||||
-$(LIST2): $(HBASE) matrix2.h
|
||||
-part2: $(LIST2)
|
||||
- ar ru libmeschach.a $(LIST2)
|
||||
- $(RANLIB) libmeschach.a
|
||||
-# $(CC) -shared -o libmeschach.so $(LIST2)
|
||||
-
|
||||
-$(LIST3): $(HBASE) sparse.h sparse2.h
|
||||
-part3: $(LIST3)
|
||||
- ar ru libmeschach.a $(LIST3)
|
||||
- $(RANLIB) libmeschach.a
|
||||
-# $(CC) -shared -o libmeschach.so $(LIST3)
|
||||
-
|
||||
-$(ZLIST1): $(HBASDE) zmatrix.h
|
||||
-zpart1: $(ZLIST1)
|
||||
- ar ru libmeschach.a $(ZLIST1)
|
||||
- $(RANLIB) libmeschach.a
|
||||
-# $(CC) -shared -o libmeschach.so $(ZLIST1)
|
||||
-
|
||||
-$(ZLIST2): $(HBASE) zmatrix.h zmatrix2.h
|
||||
-zpart2: $(ZLIST2)
|
||||
- ar ru libmeschach.a $(ZLIST2)
|
||||
- $(RANLIB) libmeschach.a
|
||||
-# $(CC) -shared -o libmeschach.so $(ZLIST2)
|
||||
-
|
||||
-$(OLDLIST): $(HBASE) sparse.h sparse2.h
|
||||
-oldpart: $(OLDLIST)
|
||||
- ar ru libmeschach.a $(OLDLIST)
|
||||
- $(RANLIB) libmeschach.a
|
||||
-# $(CC) -shared -o libmeschach.so $(OLDLIST)
|
||||
-
|
||||
-shared: $(ALL_LISTS)
|
||||
- $(CC) -shared -o libmeschach.so $(ALL_LISTS) -lc -lm -Wl,-soname -Wl,libmeschach.so.$(vers)
|
||||
-
|
||||
-static: $(ALL_LISTS)
|
||||
- ar ru libmeschach.a $(ALL_LISTS)
|
||||
- $(RANLIB) libmeschach.a
|
||||
-
|
||||
+libmeschach.so: $(ALL_LISTS)
|
||||
+ $(CC) $(LDFLAGS) -shared -o libmeschach.so $(ALL_LISTS) -lc -lm -Wl,-soname -Wl,libmeschach.so.$(vers)
|
||||
|
||||
#######################################
|
||||
|
||||
@@ -199,32 +158,32 @@
|
||||
|
||||
alltorture: torture sptort ztorture memtort itertort mfuntort iotort
|
||||
|
||||
-torture:torture.o libmeschach.a
|
||||
- $(CC) $(CFLAGS) $(DEFS) -o torture torture.o \
|
||||
- libmeschach.a $(LIBS)
|
||||
-sptort:sptort.o libmeschach.a
|
||||
- $(CC) $(CFLAGS) $(DEFS) -o sptort sptort.o \
|
||||
- libmeschach.a $(LIBS)
|
||||
-memtort: memtort.o libmeschach.a
|
||||
- $(CC) $(CFLAGS) $(DEFS) -o memtort memtort.o \
|
||||
- libmeschach.a $(LIBS)
|
||||
-ztorture:ztorture.o libmeschach.a
|
||||
- $(CC) $(CFLAGS) $(DEFS) -o ztorture ztorture.o \
|
||||
- libmeschach.a $(LIBS)
|
||||
-itertort: itertort.o libmeschach.a
|
||||
- $(CC) $(CFLAGS) $(DEFS) -o itertort itertort.o \
|
||||
- libmeschach.a $(LIBS)
|
||||
-
|
||||
-iotort: iotort.o libmeschach.a
|
||||
- $(CC) $(CFLAGS) $(DEFS) -o iotort iotort.o \
|
||||
- libmeschach.a $(LIBS)
|
||||
-mfuntort: mfuntort.o libmeschach.a
|
||||
- $(CC) $(CFLAGS) $(DEFS) -o mfuntort mfuntort.o \
|
||||
- libmeschach.a $(LIBS)
|
||||
-tstmove: tstmove.o libmeschach.a
|
||||
- $(CC) $(CFLAGS) $(DEFS) -o tstmove tstmove.o \
|
||||
- libmeschach.a $(LIBS)
|
||||
-tstpxvec: tstpxvec.o libmeschach.a
|
||||
- $(CC) $(CFLAGS) $(DEFS) -o tstpxvec tstpxvec.o \
|
||||
- libmeschach.a $(LIBS)
|
||||
+torture:torture.o libmeschach.so
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) -fPIE -o torture torture.o \
|
||||
+ -lmeschach -L. $(LIBS)
|
||||
+sptort:sptort.o libmeschach.so
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) -fPIE -o sptort sptort.o \
|
||||
+ -lmeschach -L. $(LIBS)
|
||||
+memtort: memtort.o libmeschach.so
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) -fPIE -o memtort memtort.o \
|
||||
+ -lmeschach -L. $(LIBS)
|
||||
+ztorture:ztorture.o libmeschach.so
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) -fPIE -o ztorture ztorture.o \
|
||||
+ -lmeschach -L. $(LIBS)
|
||||
+itertort: itertort.o libmeschach.so
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) -fPIE -o itertort itertort.o \
|
||||
+ -lmeschach -L. $(LIBS)
|
||||
+
|
||||
+iotort: iotort.o libmeschach.so
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) -fPIE -o iotort iotort.o \
|
||||
+ -lmeschach -L. $(LIBS)
|
||||
+mfuntort: mfuntort.o libmeschach.so
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) -fPIE -o mfuntort mfuntort.o \
|
||||
+ -lmeschach -L. $(LIBS)
|
||||
+tstmove: tstmove.o libmeschach.so
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) -fPIE -o tstmove tstmove.o \
|
||||
+ -lmeschach -L. $(LIBS)
|
||||
+tstpxvec: tstpxvec.o libmeschach.so
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) $(DEFS) -fPIE -o tstpxvec tstpxvec.o \
|
||||
+ -lmeschach -L. $(LIBS)
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
|
||||
inherit autotools eutils toolchain-funcs
|
||||
|
||||
MAJOR="$(ver_cut 1)"
|
||||
VERSION="$(ver_cut 1-2)"
|
||||
|
||||
DESCRIPTION="Meschach is a C-language library of routines for performing matrix computations"
|
||||
HOMEPAGE="http://homepage.divms.uiowa.edu/~dstewart/meschach"
|
||||
SRC_URI="
|
||||
http://cdn-fastly.deb.debian.org/debian/pool/main/m/meschach/${PN}_${PV}.orig.tar.gz
|
||||
http://cdn-fastly.deb.debian.org/debian/pool/main/m/meschach/${PN}_${PV}-14.debian.tar.xz
|
||||
"
|
||||
LICENSE="meschach"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64"
|
||||
|
||||
IUSE="complex +double float munroll old segmem sparse unroll"
|
||||
REQUIRED_USE="
|
||||
^^ ( double float )
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${WORKDIR}/debian/patches/${PN}_${PV}-13.diff"
|
||||
"${WORKDIR}/debian/patches/${PN}_${PV}-13.configure.diff"
|
||||
"${FILESDIR}/configure.patch"
|
||||
"${FILESDIR}/${PN}-2-mbdyn.diff"
|
||||
"${FILESDIR}/${PN}-makefile.patch"
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
mv configure.in configure.ac || die
|
||||
use old && sed -i -- 's/all: shared static/all: oldpart shared static/g' makefile.ac
|
||||
tc-export AR CC
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
myconf=(
|
||||
$(use_with complex)
|
||||
$(use_with double)
|
||||
$(use_with float)
|
||||
$(use_with munroll)
|
||||
$(use_with segmem)
|
||||
$(use_with sparse)
|
||||
$(use_with unroll)
|
||||
)
|
||||
econf "${myconf[@]}"
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
emake vers="${VERSION}" all
|
||||
emake alltorture
|
||||
}
|
||||
|
||||
src_install() {
|
||||
ln -s "lib${PN}.so" "lib${PN}.so.${MAJOR}" || die
|
||||
ln -s "lib${PN}.so.${MAJOR}" "lib${PN}.so.${VERSION}" || die
|
||||
dolib.so "lib${PN}.so"
|
||||
dolib.so "lib${PN}.so.${MAJOR}"
|
||||
dolib.so "lib${PN}.so.${VERSION}"
|
||||
|
||||
insinto "/usr/include/${PN}"
|
||||
doins *.h
|
||||
|
||||
exeinto "/usr/libexec/${PN}"
|
||||
doexe iotort
|
||||
doexe itertort
|
||||
doexe memtort
|
||||
doexe mfuntort
|
||||
doexe sptort
|
||||
doexe torture
|
||||
doexe ztorture
|
||||
|
||||
insinto "/usr/share/${P}"
|
||||
doins *.dat
|
||||
|
||||
dodoc -r DOC/.
|
||||
einstalldocs
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
EAPI=8
|
||||
|
||||
inherit cmake
|
||||
|
||||
@@ -21,7 +21,8 @@ LICENSE="meschach"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64"
|
||||
|
||||
IUSE="+complex +double munroll old segmem +float +sparse unroll"
|
||||
IUSE="+complex +double-precision munroll segmem +single-precision +sparse vunroll"
|
||||
#TODO: build old functions, torture
|
||||
|
||||
#PATCHES=(
|
||||
# "${FILESDIR}/.patch"
|
||||
@@ -31,12 +32,12 @@ src_configure() {
|
||||
mycmakeargs=(
|
||||
-DANDROID_COMPILE=OFF
|
||||
-DCOMPLEX_OPTION=$(usex complex)
|
||||
-DREAL_DBL_OPTION=$(usex double)
|
||||
-DREAL_FLT_OPTION=$(usex float)
|
||||
-DREAL_DBL_OPTION=$(usex double-precision)
|
||||
-DMUNROLL_OPTION=$(usex munroll)
|
||||
-DSEGMENTED_OPTION=$(usex segmem)
|
||||
-DREAL_FLT_OPTION=$(usex single-precision)
|
||||
-DSPARSE_OPTION=$(usex sparse)
|
||||
-DVUNROLL_OPTION=$(usex unroll)
|
||||
-DVUNROLL_OPTION=$(usex vunroll)
|
||||
)
|
||||
cmake_src_configure
|
||||
}
|
||||
@@ -1,17 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person">
|
||||
<email>lssndrbarbieri@gmail.com</email>
|
||||
<name>Alessandro Barbieri</name>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<maintainer>
|
||||
<email>dstewart@math.uiowa.edu</email>
|
||||
<name>David Stewart</name>
|
||||
</maintainer>
|
||||
</upstream>
|
||||
<longdescription lang="en">
|
||||
<maintainer type="person">
|
||||
<email>lssndrbarbieri@gmail.com</email>
|
||||
<name>Alessandro Barbieri</name>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="github">yageek/Meschach</remote-id>
|
||||
<maintainer>
|
||||
<email>dstewart@math.uiowa.edu</email>
|
||||
<name>David Stewart</name>
|
||||
</maintainer>
|
||||
</upstream>
|
||||
<longdescription lang="en">
|
||||
The Meschach Library is a numerical library of C routines for performing
|
||||
calculations on matrices and vectors. It is intended for solving systems of
|
||||
linear equations (dense and sparse), solve least squares problems,
|
||||
@@ -26,15 +27,15 @@ comprises a coherent system. The current version is enhanced with many
|
||||
features comparing with previous versions. Since the memory requirements
|
||||
are nontrivial for large problems we have paid more attention to
|
||||
allocation/deallocation of memory.
|
||||
</longdescription>
|
||||
<use>
|
||||
<flag name="complex">incorporate complex functions.</flag>
|
||||
<flag name="double">double precision</flag>
|
||||
<flag name="float">single precision</flag>
|
||||
<flag name="munroll">unroll low level loops on matrices</flag>
|
||||
<flag name="old">build no longer supported functions</flag>
|
||||
<flag name="segmem">should be set if you are working with a machine or compiler that does not allow large arrays to be allocated. See README</flag>
|
||||
<flag name="sparse">incorporate sparse matrix functions</flag>
|
||||
<flag name="unroll">unroll low level loops on vectors</flag>
|
||||
</use>
|
||||
</longdescription>
|
||||
<use>
|
||||
<flag name="complex">incorporate complex functions</flag>
|
||||
<flag name="double-precision">double precision</flag>
|
||||
<flag name="munroll">unroll low level loops on matrices</flag>
|
||||
<!--<flag name="old">build no longer supported functions</flag>-->
|
||||
<flag name="segmem">should be set if you are working with a machine or compiler that does not allow large arrays to be allocated. See README</flag>
|
||||
<flag name="single-precision">single precision</flag>
|
||||
<flag name="sparse">incorporate sparse matrix functions</flag>
|
||||
<flag name="vunroll">unroll low level loops on vectors</flag>
|
||||
</use>
|
||||
</pkgmetadata>
|
||||
|
||||
Reference in New Issue
Block a user