Blob Blame History Raw
diff -urN crlibm-1.0beta4/configure.ac crlibm-1.0beta4.fedora/configure.ac
--- crlibm-1.0beta4/configure.ac	2010-03-04 19:10:34.000000000 +0100
+++ crlibm-1.0beta4.fedora/configure.ac	2011-02-19 23:51:11.669673012 +0100
@@ -50,6 +50,7 @@
 dnl Check for compiler
 
 AC_PROG_CC(gcc icc cc)
+AC_PROG_LIBTOOL
 
 # Try to set compiler flags to get floating point arithmetics 
 # to work. This is an old heritage and should become useless within 30 years
@@ -222,10 +223,8 @@
 AM_CONDITIONAL(USE_HARDWARE_DE, test x$has_ia32_de = xtrue  -a x$has_fpu_control = xyes  -a x$enable_double_extended = xyes -a x$enable_interval_functions = xno    )
 dnl  Note that at the moment, enabling intervals disables double-extended
 
-
-
-
-
+AC_CHECK_HEADER(scs.h,,MAYBE_SCS=scs)
+AC_SUBST([MAYBE_SCS])
 
 
 
@@ -413,7 +412,7 @@
 
 
 
-AC_CONFIG_FILES([Makefile tests/Makefile scs_lib/Makefile])
+AC_CONFIG_FILES([Makefile tests/Makefile])
 AC_OUTPUT
 
 
diff -urN crlibm-1.0beta4/crlibm_private.h crlibm-1.0beta4.fedora/crlibm_private.h
--- crlibm-1.0beta4/crlibm_private.h	2010-03-04 19:10:34.000000000 +0100
+++ crlibm-1.0beta4.fedora/crlibm_private.h	2011-02-20 00:07:16.330890556 +0100
@@ -8,9 +8,15 @@
 #ifndef CRLIBM_PRIVATE_H
 #define CRLIBM_PRIVATE_H 1
 
-#include "scs_lib/scs.h"
-#include "scs_lib/scs_private.h"
+#include <scs.h>
 
+/* undef all the variables that might have been defined in scs_config.h */
+#undef VERSION 
+#undef PACKAGE 
+#undef HAVE_GMP_H
+#undef HAVE_MPFR_H
+#undef HAVE_MATHLIB_H
+/* then include the proper definitions  */
 #ifdef HAVE_CONFIG_H
 #include "crlibm_config.h"
 #endif
@@ -20,6 +26,43 @@
 #include <inttypes.h>
 #endif
 
+#define db_number scs_db_number
+
+#ifdef WORDS_BIGENDIAN
+ #define HI 0
+ #define LO 1 
+#else
+ #define HI 1
+ #define LO 0
+#endif
+
+#define SCS_RADIX   ((unsigned int)(1<<SCS_NB_BITS))
+#define SCS_MASK_RADIX ((unsigned int)(SCS_RADIX-1))
+
+#define R_HW  result->h_word
+#define R_SGN result->sign
+#define R_IND result->index
+#define R_EXP result->exception.d
+
+#define X_HW  x->h_word
+#define X_SGN x->sign
+#define X_IND x->index
+#define X_EXP x->exception.d
+
+#define Y_HW  y->h_word
+#define Y_SGN y->sign
+#define Y_IND y->index
+#define Y_EXP y->exception.d
+
+#define Z_HW  z->h_word
+#define Z_SGN z->sign
+#define Z_IND z->index
+#define Z_EXP z->exception.d
+
+#define W_HW  w->h_word
+#define W_SGN w->sign
+#define W_IND w->index
+#define W_EXP w->exception.d
 
 
 #if (defined(CRLIBM_TYPECPU_X86) || defined(CRLIBM_TYPECPU_AMD64))
diff -urN crlibm-1.0beta4/Makefile.am crlibm-1.0beta4.fedora/Makefile.am
--- crlibm-1.0beta4/Makefile.am	2009-02-26 17:20:14.000000000 +0100
+++ crlibm-1.0beta4.fedora/Makefile.am	2011-02-19 15:16:57.304164823 +0100
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-lib_LIBRARIES = libcrlibm.a
+lib_LTLIBRARIES = libcrlibm.la
 
 # shared libraries need libtool. We'll do it later.
 #lib_LTLIBRARIES = libcrlibm.la
@@ -8,7 +8,7 @@
 
 # Note that at the moment, asking for intervals disables double-extended
 if USE_HARDWARE_DE
-libcrlibm_a_SOURCES =  \
+libcrlibm_la_SOURCES =  \
 	crlibm.h crlibm_private.h crlibm_private.c double-extended.h\
 	triple-double.h triple-double.c\
 	exp-td.h exp-td.c exp-td-standalone.c expm1-standalone.c  \
@@ -25,7 +25,7 @@
 	atan_fast.c atan_fast.h atan_accurate.h atan_accurate.c \
 	csh_fast.h csh_fast.c
 else 
-libcrlibm_a_SOURCES =  \
+libcrlibm_la_SOURCES =  \
 	crlibm.h crlibm_private.h crlibm_private.c \
 	triple-double.h triple-double.c\
 	exp-td.h exp-td.c exp-td-standalone.c expm1-standalone.c  \
@@ -41,16 +41,11 @@
 	csh_fast.h csh_fast.c 
 endif
 
-
-# add all the scs_lib useful functions
-libcrlibm_a_LIBADD = scs_lib/scs_private.o scs_lib/addition_scs.o  \
-	scs_lib/division_scs.o scs_lib/print_scs.o\
-	scs_lib/double2scs.o scs_lib/zero_scs.o\
-	scs_lib/multiplication_scs.o scs_lib/scs2double.o
+libcrlibm_la_LIBADD = -lscs
 
 include_HEADERS = crlibm.h
 
-SUBDIRS = scs_lib . tests
+SUBDIRS = $(MAYBE_SCS) . tests
 
 # Add your compiler here. Default is assumed to be gcc.
 if COMPILER_ICC
@@ -126,7 +121,6 @@
 	docs/latex/fig_scs docs/latex/fig_exp\
 	docs/latex/elem-fun.bib\
 	docs/latex/tripledoubleprocedures.tex \
-	scs_lib/tests/tbx_timing.h \
 	tests/testperfs.sh\
 	triple-double.h double-extended.h \
 	log-de.c log-de.h log-td.c log-td.h\
diff -urN crlibm-1.0beta4/scs_lib/Makefile.am crlibm-1.0beta4.fedora/scs_lib/Makefile.am
--- crlibm-1.0beta4/scs_lib/Makefile.am	2007-01-24 15:41:51.000000000 +0100
+++ crlibm-1.0beta4.fedora/scs_lib/Makefile.am	2011-02-08 23:00:48.811601680 +0100
@@ -1,11 +1,11 @@
 ## Process this file with automake to produce Makefile.in
 
 
-lib_LIBRARIES = libscs.a
+lib_LTLIBRARIES = libscs.la
 INCLUDES=-I$(top_srcdir)
 
 
-libscs_a_SOURCES = scs.h scs_private.h scs_private.c \
+libscs_la_SOURCES = scs.h scs_private.h scs_private.c \
 	double2scs.c print_scs.c \
 	division_scs.c\
 	addition_scs.c multiplication_scs.c\
Binärdateien crlibm-1.0beta4/scs_lib/.scs_private.h.swp and crlibm-1.0beta4.fedora/scs_lib/.scs_private.h.swp sind verschieden.
diff -urN crlibm-1.0beta4/tests/Makefile.am crlibm-1.0beta4.fedora/tests/Makefile.am
--- crlibm-1.0beta4/tests/Makefile.am	2009-02-26 16:59:10.000000000 +0100
+++ crlibm-1.0beta4.fedora/tests/Makefile.am	2011-02-08 23:00:58.220567349 +0100
@@ -8,10 +8,8 @@
 bin_PROGRAMS =  crlibm_testval crlibm_soaktest crlibm_testperf  crlibm_blindtest crlibm_generate_test_vectors
 endif
 
-LDADD= $(top_builddir)/libcrlibm.a
+LDADD= $(top_builddir)/libcrlibm.la
 INCLUDES=-I$(top_srcdir)
-../libcrlibm.a:
-	cd $(top_srcdir); make libcrlibm.a 
 
 crlibm_testval_SOURCES = test_val.c test_common.c test_common.h
 crlibm_soaktest_SOURCES = soak_test.c test_common.c test_common.h
@@ -75,4 +73,4 @@
 sin.testdata cos.testdata tan.testdata asin.testdata acos.testdata atan.testdata sinh.testdata cosh.testdata \
 sinpi.testdata cospi.testdata tanpi.testdata asinpi.testdata acospi.testdata atanpi.testdata pow.testdata
 
-CLEANFILES = $(CRLIBM_CHECKLIST)
\ Kein Zeilenumbruch am Dateiende.
+CLEANFILES = $(CRLIBM_CHECKLIST)
diff -urN crlibm-1.0beta4/tests/tbx_timing.h crlibm-1.0beta4.fedora/tests/tbx_timing.h
--- crlibm-1.0beta4/tests/tbx_timing.h	1970-01-01 01:00:00.000000000 +0100
+++ crlibm-1.0beta4.fedora/tests/tbx_timing.h	2011-02-20 00:08:59.217488495 +0100
@@ -0,0 +1,102 @@
+#ifndef TBX_TIMING_H
+#define TBX_TIMING_H
+
+#include <sys/types.h>
+#include <sys/time.h>
+#if defined(CRLIBM_TYPECPU_ITANIUM) && defined(__INTEL_COMPILER)
+#include<ia64intrin.h>
+#endif
+
+/*
+ * For the user interested in High resolution timer, to my knowledge 
+ * the best library is "RTAI", unfortunately it works only on Linux OS
+ */
+
+
+typedef union u_tbx_tick
+{
+  unsigned long long tick;
+
+  struct
+  {
+    unsigned long low;
+    unsigned long high;
+  } sub;
+
+  struct timeval timev;
+} tbx_tick_t, *p_tbx_tick_t;
+
+
+#if defined(CRLIBM_TYPECPU_ITANIUM) && defined(__GNUC__) && !defined(__INTEL_COMPILER)
+ 
+#define TBX_GET_TICK(t) \
+   __asm__ __volatile__("mov %0=ar.itc" : "=r"((t).tick) :: "memory")
+#define TBX_TICK_RAW_DIFF(t1, t2)    ((t2).tick - (t1).tick)
+
+
+#elif defined(CRLIBM_TYPECPU_ITANIUM) && defined(__HPCC__)
+/* Never tested, currently nobody defines __HPCC__.
+  It should work on HPUX machines using HP compiler */
+#include<machine/sys/inline.h>/* to move up of course */
+#define TBX_GET_TICK(t) \
+   t.tick=_Asm_mov_from_ar(_AREG_ITC)
+#define TBX_TICK_RAW_DIFF(t1, t2)    ((t2).tick - (t1).tick )
+
+
+#elif defined(CRLIBM_TYPECPU_ITANIUM) && defined(__INTEL_COMPILER)
+#define TBX_GET_TICK(t)    t.tick=__getReg(_IA64_REG_AR_ITC)   
+#define TBX_TICK_RAW_DIFF(t1, t2)    ((t2).tick - (t1).tick)
+
+
+
+#elif (defined(CRLIBM_TYPECPU_AMD64) || defined(CRLIBM_TYPECPU_X86)) \
+    && defined(__GNUC__) && !defined(__INTEL_COMPILER)
+#define TBX_GET_TICK(time)                \
+        __asm__ __volatile__(             \
+                "xorl %%eax,%%eax\n\t"    \
+                "cpuid\n\t"               \
+                "rdtsc\n\t"               \
+                "movl %%eax,(%0)\n\t"     \
+                "movl %%edx,4(%0)\n\t"    \
+                "xorl %%eax,%%eax\n\t"    \
+                "cpuid\n\t"               \
+                : /* no output */         \
+                : "S"(&time.tick)         \
+                : "eax", "ebx", "ecx", "edx", "memory")
+#define TBX_TICK_RAW_DIFF(t1, t2)    ((t2).tick - (t1).tick)
+
+
+#elif defined(CRLIBM_TYPECPU_ALPHA)  && defined(__GNUC__)
+#define TBX_GET_TICK(t) \
+   __asm__ volatile("rpcc %0\n\t" : "=r"((t).tick))
+#define TBX_TICK_RAW_DIFF(t1, t2) \
+   (((t2).tick & 0xFFFFFFFF) - ((t1).tick & 0xFFFFFFFF))
+
+
+#elif defined(CRLIBM_TYPECPU_SPARC)  && defined(__GNUC__)
+#define TBX_GET_TICK(t) \
+    (t).tick = gethrtime()
+#define TBX_TICK_RAW_DIFF(t1, t2) \
+   ((t2).tick  - (t1).tick)
+
+
+
+#else  /* generic case */
+
+#define TIMING_USES_GETTIMEOFDAY 1  /* inform the test functions that timings are inaccurate */
+#define TBX_GET_TICK(t) \
+   gettimeofday(&(t).timev, 0)
+#define TBX_TICK_RAW_DIFF(t1, t2) \
+   ((t2.timev.tv_sec * 1000000L + t2.timev.tv_usec) - \
+    (t1.timev.tv_sec * 1000000L + t1.timev.tv_usec))
+
+#endif
+
+#define TBX_TICK_DIFF(t1, t2) (TBX_TICK_RAW_DIFF(t1, t2) - tbx_residual + 1)
+#define TBX_TIMING_DELAY(t1, t2) tbx_tick2usec(TBX_TICK_DIFF(t1, t2))
+
+extern unsigned long long tbx_residual;
+extern tbx_tick_t         tbx_new_event;
+extern tbx_tick_t         tbx_last_event;
+
+#endif /* TBX_TIMING_H */
diff -urN crlibm-1.0beta4/tests/test_perf.c crlibm-1.0beta4.fedora/tests/test_perf.c
--- crlibm-1.0beta4/tests/test_perf.c	2007-07-02 15:53:01.000000000 +0200
+++ crlibm-1.0beta4.fedora/tests/test_perf.c	2011-02-20 00:09:27.528377890 +0100
@@ -13,7 +13,7 @@
 #include "test_common.h"
 #include "powmidpoint.h"
 
-#include "scs_lib/tests/tbx_timing.h"
+#include "tbx_timing.h"
 
 #ifdef HAVE_MATHLIB_H
 #include <MathLib.h>
diff -urN crlibm-1.0beta4/tests/test_perf-interval.c crlibm-1.0beta4.fedora/tests/test_perf-interval.c
--- crlibm-1.0beta4/tests/test_perf-interval.c	2006-10-24 13:26:31.000000000 +0200
+++ crlibm-1.0beta4.fedora/tests/test_perf-interval.c	2011-02-20 00:09:53.232277534 +0100
@@ -19,7 +19,7 @@
 #include "test_common.h"
 #include "interval.h"
 
-#include "scs_lib/tests/tbx_timing.h"
+#include "tbx_timing.h"
 
 #ifdef HAVE_MATHLIB_H
 #include <MathLib.h>
diff -urN crlibm-1.0beta4/triple-double.h crlibm-1.0beta4.fedora/triple-double.h
--- crlibm-1.0beta4/triple-double.h	2007-03-16 11:01:19.000000000 +0100
+++ crlibm-1.0beta4.fedora/triple-double.h	2011-02-20 00:01:01.294368805 +0100
@@ -8,8 +8,7 @@
 #ifndef TRIPLE_DOUBLE_H
 #define TRIPLE_DOUBLE_H 1
 
-#include "scs_lib/scs.h"
-#include "scs_lib/scs_private.h"
+#include <scs.h>
 
  /* undef all the variables that might have been defined in
     scs_lib/scs_private.h */