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 */