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.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -0
  3. data/crmf.gemspec +102 -1
  4. data/ext/crlibm-1.0beta5/AUTHORS +2 -0
  5. data/ext/crlibm-1.0beta5/CMakeLists.txt +154 -0
  6. data/ext/crlibm-1.0beta5/COPYING +340 -0
  7. data/ext/crlibm-1.0beta5/COPYING.LIB +504 -0
  8. data/ext/crlibm-1.0beta5/ChangeLog +125 -0
  9. data/ext/crlibm-1.0beta5/Makefile.am +134 -0
  10. data/ext/crlibm-1.0beta5/NEWS +0 -0
  11. data/ext/crlibm-1.0beta5/README +31 -0
  12. data/ext/crlibm-1.0beta5/README.DEV +23 -0
  13. data/ext/crlibm-1.0beta5/README.md +5 -0
  14. data/ext/crlibm-1.0beta5/TODO +66 -0
  15. data/ext/crlibm-1.0beta5/VERSION +1 -0
  16. data/ext/crlibm-1.0beta5/acos-td.c +1195 -0
  17. data/ext/crlibm-1.0beta5/acos-td.h +629 -0
  18. data/ext/crlibm-1.0beta5/asin-td.c +1297 -0
  19. data/ext/crlibm-1.0beta5/asin-td.h +620 -0
  20. data/ext/crlibm-1.0beta5/asincos.c +4488 -0
  21. data/ext/crlibm-1.0beta5/asincos.h +575 -0
  22. data/ext/crlibm-1.0beta5/atan-itanium.c +846 -0
  23. data/ext/crlibm-1.0beta5/atan-pentium.c +280 -0
  24. data/ext/crlibm-1.0beta5/atan-pentium.h +343 -0
  25. data/ext/crlibm-1.0beta5/atan_accurate.c +341 -0
  26. data/ext/crlibm-1.0beta5/atan_accurate.h +198 -0
  27. data/ext/crlibm-1.0beta5/atan_fast.c +506 -0
  28. data/ext/crlibm-1.0beta5/atan_fast.h +680 -0
  29. data/ext/crlibm-1.0beta5/configure.ac +419 -0
  30. data/ext/crlibm-1.0beta5/crlibm.h +204 -0
  31. data/ext/crlibm-1.0beta5/crlibm.spec +42 -0
  32. data/ext/crlibm-1.0beta5/crlibm_private.c +397 -0
  33. data/ext/crlibm-1.0beta5/crlibm_private.h +1048 -0
  34. data/ext/crlibm-1.0beta5/csh_fast.c +721 -0
  35. data/ext/crlibm-1.0beta5/csh_fast.h +771 -0
  36. data/ext/crlibm-1.0beta5/double-extended.h +496 -0
  37. data/ext/crlibm-1.0beta5/exp-itanium.c +723 -0
  38. data/ext/crlibm-1.0beta5/exp-td-standalone.c +87 -0
  39. data/ext/crlibm-1.0beta5/exp-td.c +1363 -0
  40. data/ext/crlibm-1.0beta5/exp-td.h +685 -0
  41. data/ext/crlibm-1.0beta5/exp_build_coeffs/exp_fast_table.c +125 -0
  42. data/ext/crlibm-1.0beta5/expm1-standalone.c +119 -0
  43. data/ext/crlibm-1.0beta5/expm1.c +2515 -0
  44. data/ext/crlibm-1.0beta5/expm1.h +715 -0
  45. data/ext/crlibm-1.0beta5/interval.h +238 -0
  46. data/ext/crlibm-1.0beta5/log-de.c +480 -0
  47. data/ext/crlibm-1.0beta5/log-de.h +747 -0
  48. data/ext/crlibm-1.0beta5/log-de2.c +280 -0
  49. data/ext/crlibm-1.0beta5/log-de2.h +2352 -0
  50. data/ext/crlibm-1.0beta5/log-td.c +1158 -0
  51. data/ext/crlibm-1.0beta5/log-td.h +819 -0
  52. data/ext/crlibm-1.0beta5/log.c +2244 -0
  53. data/ext/crlibm-1.0beta5/log.h +1592 -0
  54. data/ext/crlibm-1.0beta5/log10-td.c +906 -0
  55. data/ext/crlibm-1.0beta5/log10-td.h +823 -0
  56. data/ext/crlibm-1.0beta5/log1p.c +1295 -0
  57. data/ext/crlibm-1.0beta5/log2-td.c +1521 -0
  58. data/ext/crlibm-1.0beta5/log2-td.h +821 -0
  59. data/ext/crlibm-1.0beta5/log2_accurate.c +330 -0
  60. data/ext/crlibm-1.0beta5/log2_accurate.h +261 -0
  61. data/ext/crlibm-1.0beta5/log_accurate.c +133 -0
  62. data/ext/crlibm-1.0beta5/log_accurate.h +261 -0
  63. data/ext/crlibm-1.0beta5/log_fast.c +360 -0
  64. data/ext/crlibm-1.0beta5/log_fast.h +440 -0
  65. data/ext/crlibm-1.0beta5/pow.c +1396 -0
  66. data/ext/crlibm-1.0beta5/pow.h +3101 -0
  67. data/ext/crlibm-1.0beta5/prepare +20 -0
  68. data/ext/crlibm-1.0beta5/rem_pio2_accurate.c +219 -0
  69. data/ext/crlibm-1.0beta5/rem_pio2_accurate.h +53 -0
  70. data/ext/crlibm-1.0beta5/scs_lib/AUTHORS +3 -0
  71. data/ext/crlibm-1.0beta5/scs_lib/COPYING +504 -0
  72. data/ext/crlibm-1.0beta5/scs_lib/ChangeLog +16 -0
  73. data/ext/crlibm-1.0beta5/scs_lib/Doxyfile.dev +939 -0
  74. data/ext/crlibm-1.0beta5/scs_lib/Doxyfile.user +939 -0
  75. data/ext/crlibm-1.0beta5/scs_lib/INSTALL +215 -0
  76. data/ext/crlibm-1.0beta5/scs_lib/Makefile.am +17 -0
  77. data/ext/crlibm-1.0beta5/scs_lib/NEWS +0 -0
  78. data/ext/crlibm-1.0beta5/scs_lib/README +9 -0
  79. data/ext/crlibm-1.0beta5/scs_lib/README.DEV +38 -0
  80. data/ext/crlibm-1.0beta5/scs_lib/TODO +4 -0
  81. data/ext/crlibm-1.0beta5/scs_lib/VERSION +1 -0
  82. data/ext/crlibm-1.0beta5/scs_lib/addition_scs.c +623 -0
  83. data/ext/crlibm-1.0beta5/scs_lib/division_scs.c +110 -0
  84. data/ext/crlibm-1.0beta5/scs_lib/double2scs.c +174 -0
  85. data/ext/crlibm-1.0beta5/scs_lib/main.dox +104 -0
  86. data/ext/crlibm-1.0beta5/scs_lib/multiplication_scs.c +339 -0
  87. data/ext/crlibm-1.0beta5/scs_lib/poly_fct.c +112 -0
  88. data/ext/crlibm-1.0beta5/scs_lib/print_scs.c +73 -0
  89. data/ext/crlibm-1.0beta5/scs_lib/rand_scs.c +63 -0
  90. data/ext/crlibm-1.0beta5/scs_lib/scs.h +353 -0
  91. data/ext/crlibm-1.0beta5/scs_lib/scs2double.c +411 -0
  92. data/ext/crlibm-1.0beta5/scs_lib/scs2mpf.c +58 -0
  93. data/ext/crlibm-1.0beta5/scs_lib/scs2mpfr.c +61 -0
  94. data/ext/crlibm-1.0beta5/scs_lib/scs_private.c +23 -0
  95. data/ext/crlibm-1.0beta5/scs_lib/scs_private.h +133 -0
  96. data/ext/crlibm-1.0beta5/scs_lib/wrapper_scs.h +486 -0
  97. data/ext/crlibm-1.0beta5/scs_lib/zero_scs.c +52 -0
  98. data/ext/crlibm-1.0beta5/trigo_accurate.c +501 -0
  99. data/ext/crlibm-1.0beta5/trigo_accurate.h +331 -0
  100. data/ext/crlibm-1.0beta5/trigo_fast.c +1243 -0
  101. data/ext/crlibm-1.0beta5/trigo_fast.h +639 -0
  102. data/ext/crlibm-1.0beta5/trigpi.c +1169 -0
  103. data/ext/crlibm-1.0beta5/trigpi.h +556 -0
  104. data/ext/crlibm-1.0beta5/triple-double.c +57 -0
  105. data/ext/crlibm-1.0beta5/triple-double.h +1380 -0
  106. data/ext/crmf/crmf.c +16 -16
  107. data/ext/crmf/extconf.rb +12 -8
  108. data/lib/crmf/version.rb +1 -1
  109. data/tests/perf.rb +100 -219
  110. metadata +104 -3
  111. 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,5 @@
1
+
2
+ Retreived from <https://github.com/taschini/crlibm>, commit eb30637.
3
+
4
+ Removed `docs/`, `gappa/`, `mapple/` and `tests/`.
5
+
@@ -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