crmf 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -0
- data/crmf.gemspec +102 -1
- data/ext/crlibm-1.0beta5/AUTHORS +2 -0
- data/ext/crlibm-1.0beta5/CMakeLists.txt +154 -0
- data/ext/crlibm-1.0beta5/COPYING +340 -0
- data/ext/crlibm-1.0beta5/COPYING.LIB +504 -0
- data/ext/crlibm-1.0beta5/ChangeLog +125 -0
- data/ext/crlibm-1.0beta5/Makefile.am +134 -0
- data/ext/crlibm-1.0beta5/NEWS +0 -0
- data/ext/crlibm-1.0beta5/README +31 -0
- data/ext/crlibm-1.0beta5/README.DEV +23 -0
- data/ext/crlibm-1.0beta5/README.md +5 -0
- data/ext/crlibm-1.0beta5/TODO +66 -0
- data/ext/crlibm-1.0beta5/VERSION +1 -0
- data/ext/crlibm-1.0beta5/acos-td.c +1195 -0
- data/ext/crlibm-1.0beta5/acos-td.h +629 -0
- data/ext/crlibm-1.0beta5/asin-td.c +1297 -0
- data/ext/crlibm-1.0beta5/asin-td.h +620 -0
- data/ext/crlibm-1.0beta5/asincos.c +4488 -0
- data/ext/crlibm-1.0beta5/asincos.h +575 -0
- data/ext/crlibm-1.0beta5/atan-itanium.c +846 -0
- data/ext/crlibm-1.0beta5/atan-pentium.c +280 -0
- data/ext/crlibm-1.0beta5/atan-pentium.h +343 -0
- data/ext/crlibm-1.0beta5/atan_accurate.c +341 -0
- data/ext/crlibm-1.0beta5/atan_accurate.h +198 -0
- data/ext/crlibm-1.0beta5/atan_fast.c +506 -0
- data/ext/crlibm-1.0beta5/atan_fast.h +680 -0
- data/ext/crlibm-1.0beta5/configure.ac +419 -0
- data/ext/crlibm-1.0beta5/crlibm.h +204 -0
- data/ext/crlibm-1.0beta5/crlibm.spec +42 -0
- data/ext/crlibm-1.0beta5/crlibm_private.c +397 -0
- data/ext/crlibm-1.0beta5/crlibm_private.h +1048 -0
- data/ext/crlibm-1.0beta5/csh_fast.c +721 -0
- data/ext/crlibm-1.0beta5/csh_fast.h +771 -0
- data/ext/crlibm-1.0beta5/double-extended.h +496 -0
- data/ext/crlibm-1.0beta5/exp-itanium.c +723 -0
- data/ext/crlibm-1.0beta5/exp-td-standalone.c +87 -0
- data/ext/crlibm-1.0beta5/exp-td.c +1363 -0
- data/ext/crlibm-1.0beta5/exp-td.h +685 -0
- data/ext/crlibm-1.0beta5/exp_build_coeffs/exp_fast_table.c +125 -0
- data/ext/crlibm-1.0beta5/expm1-standalone.c +119 -0
- data/ext/crlibm-1.0beta5/expm1.c +2515 -0
- data/ext/crlibm-1.0beta5/expm1.h +715 -0
- data/ext/crlibm-1.0beta5/interval.h +238 -0
- data/ext/crlibm-1.0beta5/log-de.c +480 -0
- data/ext/crlibm-1.0beta5/log-de.h +747 -0
- data/ext/crlibm-1.0beta5/log-de2.c +280 -0
- data/ext/crlibm-1.0beta5/log-de2.h +2352 -0
- data/ext/crlibm-1.0beta5/log-td.c +1158 -0
- data/ext/crlibm-1.0beta5/log-td.h +819 -0
- data/ext/crlibm-1.0beta5/log.c +2244 -0
- data/ext/crlibm-1.0beta5/log.h +1592 -0
- data/ext/crlibm-1.0beta5/log10-td.c +906 -0
- data/ext/crlibm-1.0beta5/log10-td.h +823 -0
- data/ext/crlibm-1.0beta5/log1p.c +1295 -0
- data/ext/crlibm-1.0beta5/log2-td.c +1521 -0
- data/ext/crlibm-1.0beta5/log2-td.h +821 -0
- data/ext/crlibm-1.0beta5/log2_accurate.c +330 -0
- data/ext/crlibm-1.0beta5/log2_accurate.h +261 -0
- data/ext/crlibm-1.0beta5/log_accurate.c +133 -0
- data/ext/crlibm-1.0beta5/log_accurate.h +261 -0
- data/ext/crlibm-1.0beta5/log_fast.c +360 -0
- data/ext/crlibm-1.0beta5/log_fast.h +440 -0
- data/ext/crlibm-1.0beta5/pow.c +1396 -0
- data/ext/crlibm-1.0beta5/pow.h +3101 -0
- data/ext/crlibm-1.0beta5/prepare +20 -0
- data/ext/crlibm-1.0beta5/rem_pio2_accurate.c +219 -0
- data/ext/crlibm-1.0beta5/rem_pio2_accurate.h +53 -0
- data/ext/crlibm-1.0beta5/scs_lib/AUTHORS +3 -0
- data/ext/crlibm-1.0beta5/scs_lib/COPYING +504 -0
- data/ext/crlibm-1.0beta5/scs_lib/ChangeLog +16 -0
- data/ext/crlibm-1.0beta5/scs_lib/Doxyfile.dev +939 -0
- data/ext/crlibm-1.0beta5/scs_lib/Doxyfile.user +939 -0
- data/ext/crlibm-1.0beta5/scs_lib/INSTALL +215 -0
- data/ext/crlibm-1.0beta5/scs_lib/Makefile.am +17 -0
- data/ext/crlibm-1.0beta5/scs_lib/NEWS +0 -0
- data/ext/crlibm-1.0beta5/scs_lib/README +9 -0
- data/ext/crlibm-1.0beta5/scs_lib/README.DEV +38 -0
- data/ext/crlibm-1.0beta5/scs_lib/TODO +4 -0
- data/ext/crlibm-1.0beta5/scs_lib/VERSION +1 -0
- data/ext/crlibm-1.0beta5/scs_lib/addition_scs.c +623 -0
- data/ext/crlibm-1.0beta5/scs_lib/division_scs.c +110 -0
- data/ext/crlibm-1.0beta5/scs_lib/double2scs.c +174 -0
- data/ext/crlibm-1.0beta5/scs_lib/main.dox +104 -0
- data/ext/crlibm-1.0beta5/scs_lib/multiplication_scs.c +339 -0
- data/ext/crlibm-1.0beta5/scs_lib/poly_fct.c +112 -0
- data/ext/crlibm-1.0beta5/scs_lib/print_scs.c +73 -0
- data/ext/crlibm-1.0beta5/scs_lib/rand_scs.c +63 -0
- data/ext/crlibm-1.0beta5/scs_lib/scs.h +353 -0
- data/ext/crlibm-1.0beta5/scs_lib/scs2double.c +411 -0
- data/ext/crlibm-1.0beta5/scs_lib/scs2mpf.c +58 -0
- data/ext/crlibm-1.0beta5/scs_lib/scs2mpfr.c +61 -0
- data/ext/crlibm-1.0beta5/scs_lib/scs_private.c +23 -0
- data/ext/crlibm-1.0beta5/scs_lib/scs_private.h +133 -0
- data/ext/crlibm-1.0beta5/scs_lib/wrapper_scs.h +486 -0
- data/ext/crlibm-1.0beta5/scs_lib/zero_scs.c +52 -0
- data/ext/crlibm-1.0beta5/trigo_accurate.c +501 -0
- data/ext/crlibm-1.0beta5/trigo_accurate.h +331 -0
- data/ext/crlibm-1.0beta5/trigo_fast.c +1243 -0
- data/ext/crlibm-1.0beta5/trigo_fast.h +639 -0
- data/ext/crlibm-1.0beta5/trigpi.c +1169 -0
- data/ext/crlibm-1.0beta5/trigpi.h +556 -0
- data/ext/crlibm-1.0beta5/triple-double.c +57 -0
- data/ext/crlibm-1.0beta5/triple-double.h +1380 -0
- data/ext/crmf/crmf.c +16 -16
- data/ext/crmf/extconf.rb +12 -8
- data/lib/crmf/version.rb +1 -1
- data/tests/perf.rb +100 -219
- metadata +104 -3
- data/ext/crlibm-1.0beta4.tar.gz +0 -0
@@ -0,0 +1,134 @@
|
|
1
|
+
## Process this file with automake to produce Makefile.in
|
2
|
+
|
3
|
+
lib_LIBRARIES = libcrlibm.a
|
4
|
+
|
5
|
+
# shared libraries need libtool. We'll do it later.
|
6
|
+
#lib_LTLIBRARIES = libcrlibm.la
|
7
|
+
|
8
|
+
|
9
|
+
# Note that at the moment, asking for intervals disables double-extended
|
10
|
+
if USE_HARDWARE_DE
|
11
|
+
libcrlibm_a_SOURCES = \
|
12
|
+
crlibm.h crlibm_private.h crlibm_private.c double-extended.h\
|
13
|
+
triple-double.h triple-double.c\
|
14
|
+
exp-td.h exp-td.c exp-td-standalone.c expm1-standalone.c \
|
15
|
+
expm1.h expm1.c \
|
16
|
+
log-de.c log-de.h \
|
17
|
+
log1p.c \
|
18
|
+
log10-td.h log10-td.c \
|
19
|
+
log2-td.h log2-td.c \
|
20
|
+
rem_pio2_accurate.h rem_pio2_accurate.c \
|
21
|
+
trigo_fast.c trigo_fast.h trigo_accurate.c trigo_accurate.h \
|
22
|
+
trigpi.c trigpi.h \
|
23
|
+
asincos.h asincos.c \
|
24
|
+
pow.h pow.c\
|
25
|
+
atan_fast.c atan_fast.h atan_accurate.h atan_accurate.c \
|
26
|
+
csh_fast.h csh_fast.c
|
27
|
+
else
|
28
|
+
libcrlibm_a_SOURCES = \
|
29
|
+
crlibm.h crlibm_private.h crlibm_private.c \
|
30
|
+
triple-double.h triple-double.c\
|
31
|
+
exp-td.h exp-td.c exp-td-standalone.c expm1-standalone.c \
|
32
|
+
expm1.h expm1.c \
|
33
|
+
log.c log.h \
|
34
|
+
log1p.c \
|
35
|
+
rem_pio2_accurate.h rem_pio2_accurate.c \
|
36
|
+
trigo_fast.c trigo_fast.h trigo_accurate.c trigo_accurate.h \
|
37
|
+
trigpi.c trigpi.h \
|
38
|
+
asincos.h asincos.c \
|
39
|
+
pow.h pow.c\
|
40
|
+
atan_fast.c atan_fast.h atan_accurate.h atan_accurate.c \
|
41
|
+
csh_fast.h csh_fast.c
|
42
|
+
endif
|
43
|
+
|
44
|
+
|
45
|
+
# add all the scs_lib useful functions
|
46
|
+
libcrlibm_a_LIBADD = scs_lib/scs_private.o scs_lib/addition_scs.o \
|
47
|
+
scs_lib/division_scs.o scs_lib/print_scs.o\
|
48
|
+
scs_lib/double2scs.o scs_lib/zero_scs.o\
|
49
|
+
scs_lib/multiplication_scs.o scs_lib/scs2double.o
|
50
|
+
|
51
|
+
include_HEADERS = crlibm.h
|
52
|
+
|
53
|
+
SUBDIRS = scs_lib .
|
54
|
+
|
55
|
+
# Add your compiler here. Default is assumed to be gcc.
|
56
|
+
if COMPILER_ICC
|
57
|
+
# mp means maintain precision. Should be useless with std=c99, this is an ICC bug
|
58
|
+
AM_CFLAGS = -std=c99 -mp -Qoption,cpp,--extended_float_types -IPF_fp_speculationsafe
|
59
|
+
else # default assumed to be gcc
|
60
|
+
if USE_SSE2
|
61
|
+
AM_CFLAGS = -std=c99 -Wall -msse2 -mfpmath=sse
|
62
|
+
else
|
63
|
+
AM_CFLAGS = -std=c99 -Wall -O3
|
64
|
+
endif
|
65
|
+
endif
|
66
|
+
|
67
|
+
tripledoubleprocedures.pdf: docs/latex/tripledoubleprocedures.tex
|
68
|
+
cd docs/latex; \
|
69
|
+
pdflatex tripledoubleprocedures; bibtex tripledoubleprocedures; \
|
70
|
+
pdflatex tripledoubleprocedures; pdflatex tripledoubleprocedures;\
|
71
|
+
mv tripledoubleprocedures.pdf ..
|
72
|
+
|
73
|
+
crlibm.pdf: docs/latex/crlibm.tex
|
74
|
+
cd docs/latex; pdflatex crlibm; bibtex crlibm; pdflatex crlibm; pdflatex crlibm;\
|
75
|
+
mv crlibm.pdf ..
|
76
|
+
|
77
|
+
doc: crlibm.pdf tripledoubleprocedures.pdf
|
78
|
+
|
79
|
+
EXTRA_DIST = VERSION TODO\
|
80
|
+
maple/common-procedures.mpl \
|
81
|
+
maple/double-extended.mpl maple/triple-double.mpl\
|
82
|
+
maple/exp-td.mpl maple/csh.mpl \
|
83
|
+
maple/log-td.mpl maple/log-de.mpl \
|
84
|
+
maple/log2-td.mpl maple/log10-td.mpl \
|
85
|
+
maple/trigo.mpl maple/atan.mpl maple/atan-pentium.mpl \
|
86
|
+
maple/asin-td.mpl maple/acos-td.mpl \
|
87
|
+
maple/sqrt.mpl \
|
88
|
+
maple/expm1.mpl \
|
89
|
+
maple/gal.mpl \
|
90
|
+
maple/pow.mpl \
|
91
|
+
maple/atan-itanium.mpl \
|
92
|
+
gappa/trigos/SinCosCase3.gappa gappa/trigos/TanCase2.gappa \
|
93
|
+
gappa/trigos/TanCase2.gappa \
|
94
|
+
gappa/trigos/SinCosCase3.gappa gappa/trigos/TanCase2.gappa \
|
95
|
+
gappa/sqrt12.gappa gappa/sqrt13.gappa gappa/sqrt-proof.sh gappa/sqrt.sed \
|
96
|
+
gappa/log-de/log-de-acc-index0-E0.gappa gappa/log-de/log-de-index0-E0.gappa \
|
97
|
+
gappa/log-de/log-de-acc-index0-E1N.gappa gappa/log-de/log-de-index0-E1N.gappa \
|
98
|
+
gappa/log-de/log-de-acc-index1N-E0.gappa gappa/log-de/log-de-index1N-E0N.gappa \
|
99
|
+
gappa/log-de/log-de-acc-index1N-E1N.gappa gappa/log-de/README \
|
100
|
+
gappa/log-td/log-td.gappa gappa/log-td/log-td-E0.gappa \
|
101
|
+
gappa/log-td/log-td-E0-logir0.gappa gappa/log-td/log-td-accurate.gappa \
|
102
|
+
gappa/log-td/log-td-accurate-E0.gappa gappa/log-td/log-td-accurate-E0-logir0.gappa \
|
103
|
+
gappa/exp-td/exp-td-accurate1.gappa gappa/exp-td/exp-td-accurate2.gappa \
|
104
|
+
gappa/exp-td/exp-td-accurate3.gappa gappa/exp-td/exp-td-accurate4.gappa \
|
105
|
+
gappa/exp-td/exp-td-proof.sh \
|
106
|
+
gappa/trigpi/cospi-accurate.gappa gappa/trigpi/cospi-quick.gappa \
|
107
|
+
gappa/trigpi/sinpi-accurate.gappa gappa/trigpi/sinpi-quick.gappa \
|
108
|
+
gappa/asin/asinAccuR0.gappa gappa/asin/asinAccuR1.gappa \
|
109
|
+
gappa/asin/asinAccuR2.gappa gappa/asin/asinAccuR3.gappa \
|
110
|
+
gappa/asin/asinAccuR4.gappa gappa/asin/asinAccuR5.gappa \
|
111
|
+
gappa/asin/asinAccuR6.gappa gappa/asin/asinAccuR7.gappa \
|
112
|
+
gappa/asin/asinAccuR8.gappa gappa/asin/asinAccuR9.gappa \
|
113
|
+
gappa/asin/asinQuickR0.gappa gappa/asin/asinQuickR1.gappa \
|
114
|
+
gappa/asin/asinQuickR2.gappa gappa/asin/asinQuickR3.gappa \
|
115
|
+
gappa/asin/asinQuickR4.gappa gappa/asin/asinQuickR5.gappa \
|
116
|
+
gappa/asin/asinQuickR6.gappa gappa/asin/asinQuickR7.gappa \
|
117
|
+
gappa/asin/asinQuickR8.gappa gappa/asin/asinQuickR9.gappa \
|
118
|
+
docs/latex/crlibm.tex \
|
119
|
+
docs/latex/0_intro.tex docs/latex/0_getting-started.tex\
|
120
|
+
docs/latex/1_common.tex docs/latex/sqrt.tex \
|
121
|
+
docs/latex/exp.tex docs/latex/expm1.tex \
|
122
|
+
docs/latex/log.tex docs/latex/log1p.tex docs/latex/log2.tex docs/latex/log10.tex\
|
123
|
+
docs/latex/asin.tex docs/latex/acos.tex docs/latex/atan.tex \
|
124
|
+
docs/latex/csh.tex docs/latex/trigo.tex docs/latex/trigpi.tex \
|
125
|
+
docs/latex/pow.tex \
|
126
|
+
docs/latex/fig_scs docs/latex/fig_exp\
|
127
|
+
docs/latex/elem-fun.bib\
|
128
|
+
docs/latex/tripledoubleprocedures.tex \
|
129
|
+
scs_lib/tests/tbx_timing.h \
|
130
|
+
tests/testperfs.sh\
|
131
|
+
triple-double.h double-extended.h \
|
132
|
+
log-de.c log-de.h log-td.c log-td.h\
|
133
|
+
atan-pentium.c atan-itanium.c
|
134
|
+
|
File without changes
|
@@ -0,0 +1,31 @@
|
|
1
|
+
cr-libm, a portable, efficient, correctly rounded mathematical library.
|
2
|
+
|
3
|
+
To compile:
|
4
|
+
./configure; make;
|
5
|
+
|
6
|
+
(for options see ./configure --help)
|
7
|
+
|
8
|
+
To run the selftest:
|
9
|
+
make check;
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
Beta release note:
|
14
|
+
|
15
|
+
This version contains one state-of-the-art implementation. The log
|
16
|
+
comes in two versions, log-td (portable) and log-de (optimised for
|
17
|
+
processors with double-extended hardware). The ./configure should
|
18
|
+
enable the one that is best for your system, except on Itanium: see
|
19
|
+
below.
|
20
|
+
|
21
|
+
There is no known bug, but several shortcomings are listed in
|
22
|
+
the TODO file.
|
23
|
+
|
24
|
+
|
25
|
+
Note for Itanium systems: Out-of-the box it should compile and
|
26
|
+
selftest on Linux under both gcc and icc (feedback on HPUX is
|
27
|
+
welcome). However, optimised versions of log and atan are
|
28
|
+
disabled. They currently require icc 8.1 or later. See the beginning
|
29
|
+
of log-de.c and atan-itanium.c for instructions on how to enable them.
|
30
|
+
|
31
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
To compile crlibm after a cvs checkout, type
|
3
|
+
|
4
|
+
./prepare
|
5
|
+
make
|
6
|
+
|
7
|
+
or, if you want to perform accuracy tests against the MPFR library,
|
8
|
+
|
9
|
+
./prepare --enable-mpfr --with-gmp=/usr/local
|
10
|
+
make
|
11
|
+
|
12
|
+
(if necessary replace /usr/local/ with the actual location of the MPFR
|
13
|
+
source)
|
14
|
+
|
15
|
+
The prepare script requires to be invoked only once. After that, use:
|
16
|
+
./configure
|
17
|
+
|
18
|
+
The prepare script ends with a call to ./configure, and the options to
|
19
|
+
prepare are the options of configure. For a list of these options, type
|
20
|
+
|
21
|
+
./configure --help
|
22
|
+
|
23
|
+
|
@@ -0,0 +1,66 @@
|
|
1
|
+
TODO before 1.0 final release
|
2
|
+
|
3
|
+
|
4
|
+
Serious bugs
|
5
|
+
------------
|
6
|
+
No known serious bug left so far. Exception raising should be improved.
|
7
|
+
|
8
|
+
New functions
|
9
|
+
-------------
|
10
|
+
Document the cases on which power is guaranteed correctly rounded values.
|
11
|
+
Possibly write 2^x and 10^x (in harmonious combination with power)
|
12
|
+
|
13
|
+
Proof stuff
|
14
|
+
-----------
|
15
|
+
Update chapter asin and write chapter acos.
|
16
|
+
Add the scripts generating the polynomials.
|
17
|
+
Write Gappa proofs for log2-td, log10-td, expm1, log1p
|
18
|
+
Check all the existing .gappa against last version of Gappa
|
19
|
+
+ set the paths right (where there are paths).
|
20
|
+
Write proper proofs of the DE integer rounding tests, or remove DE altogether.
|
21
|
+
|
22
|
+
|
23
|
+
Cleaning up stuff
|
24
|
+
-----------------
|
25
|
+
Check .mpl with underscored variables (some versions of Maple don't like them)
|
26
|
+
Purge obsolete .mpl
|
27
|
+
Ensure compilation on icc9 and SunStudio11
|
28
|
+
Solution: check recent icc first. Then add FMADE macros everywhere FMA intended
|
29
|
+
add make timings
|
30
|
+
|
31
|
+
Autotest stuff
|
32
|
+
--------------
|
33
|
+
Add worst cases for all which are currently written TODO
|
34
|
+
A lot of the Lefevre worst cases are still missing
|
35
|
+
You never have enough test cases. In particular asin and acos
|
36
|
+
More cases around the various boundaries would be welcome.
|
37
|
+
|
38
|
+
Optim stuff
|
39
|
+
-----------
|
40
|
+
Remove remaining SCS: in atan, in trigo.
|
41
|
+
Replace the current test for non-IEEE subnormal (on x86) in the code
|
42
|
+
with a test taking into account that x86-64 is OK
|
43
|
+
Minor improvements to atanpi as mentionned in the doc.
|
44
|
+
Fuse atan-pentium and atan-itanium into atan-de, and add in atanpi.
|
45
|
+
Or maybe remove all the DE stuff altogether for cleaning up.
|
46
|
+
|
47
|
+
===========================================================================
|
48
|
+
|
49
|
+
TODO some day for a later release
|
50
|
+
|
51
|
+
New functions
|
52
|
+
-------------
|
53
|
+
Write inverse hyperbolic functions
|
54
|
+
|
55
|
+
Optimisation stuff
|
56
|
+
------------------
|
57
|
+
Write TD versions of: trigo
|
58
|
+
Write DE versions of: most functions
|
59
|
+
|
60
|
+
|
61
|
+
Use technique in paper by Karp and Markstein for sqrt12 and sqrt13
|
62
|
+
|
63
|
+
|
64
|
+
Interval stuff
|
65
|
+
--------------
|
66
|
+
Write interval functions for each CR function
|
@@ -0,0 +1 @@
|
|
1
|
+
1.0beta5
|