Makefile.def (target_modules): Add libgcc-math target module.
2006-01-31 Richard Guenther <rguenther@suse.de> Paolo Bonzini <bonzini@gnu.org> * Makefile.def (target_modules): Add libgcc-math target module. * configure.in (target_libraries): Add libgcc-math target library. (--enable-libgcc-math): New configure switch. * Makefile.in: Re-generate. * configure: Re-generate. * libgcc-math: New toplevel directory. * doc/install.texi (--disable-libgcc-math): Document. libgcc-math/ * configure.ac: New file. * Makefile.am: Likewise. * configure: New generated file. * Makefile.in: Likewise. * aclocal.m4: Likewise. * libtool-version: New file. * include/ieee754.h: New file. * include/libc-symbols.h: Likewise. * include/math_private.h: Likewise. * i386/Makefile.am: New file. * i386/Makefile.in: New generated file. * i386/sse2.h: New file. * i386/endian.h: Likewise. * i386/sse2.map: Linker script for SSE2 ABI math intrinsics. * flt-32/: Import from glibc. * dbl-64/: Likewise. Co-Authored-By: Paolo Bonzini <bonzini@gnu.org> From-SVN: r110434
This commit is contained in:
parent
842173466d
commit
0058967bb0
106 changed files with 56779 additions and 139 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2006-01-31 Richard Guenther <rguenther@suse.de>
|
||||
Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* Makefile.def (target_modules): Add libgcc-math target module.
|
||||
* configure.in (target_libraries): Add libgcc-math target library.
|
||||
(--enable-libgcc-math): New configure switch.
|
||||
* Makefile.in: Re-generate.
|
||||
* configure: Re-generate.
|
||||
* libgcc-math: New toplevel directory.
|
||||
|
||||
2006-01-26 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* configure.in: Set with_gnu_as, with_gnu_ld, with_newlib earlier.
|
||||
|
|
|
@ -117,6 +117,7 @@ host_modules= { module= gnattools; };
|
|||
target_modules = { module= libstdc++-v3; lib_path=.libs; raw_cxx=true; };
|
||||
target_modules = { module= libmudflap; lib_path=.libs; };
|
||||
target_modules = { module= libssp; lib_path=.libs; };
|
||||
target_modules = { module= libgcc-math; lib_path=.libs; };
|
||||
target_modules = { module= newlib; };
|
||||
target_modules = { module= libgfortran; };
|
||||
target_modules = { module= libobjc; };
|
||||
|
|
378
Makefile.in
378
Makefile.in
|
@ -356,7 +356,7 @@ all:
|
|||
|
||||
# This is the list of directories that may be needed in RPATH_ENVVAR
|
||||
# so that prorgams built for the target machine work.
|
||||
TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libmudflap)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(HOST_LIB_PATH_gcc)
|
||||
TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libmudflap)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgcc-math)$(TARGET_LIB_PATH_libgomp)$(HOST_LIB_PATH_gcc)
|
||||
|
||||
@if target-libstdc++-v3
|
||||
TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/.libs:
|
||||
|
@ -370,6 +370,10 @@ TARGET_LIB_PATH_libmudflap = $$r/$(TARGET_SUBDIR)/libmudflap/.libs:
|
|||
TARGET_LIB_PATH_libssp = $$r/$(TARGET_SUBDIR)/libssp/.libs:
|
||||
@endif target-libssp
|
||||
|
||||
@if target-libgcc-math
|
||||
TARGET_LIB_PATH_libgcc-math = $$r/$(TARGET_SUBDIR)/libgcc-math/.libs:
|
||||
@endif target-libgcc-math
|
||||
|
||||
@if target-libgomp
|
||||
TARGET_LIB_PATH_libgomp = $$r/$(TARGET_SUBDIR)/libgomp/.libs:
|
||||
@endif target-libgomp
|
||||
|
@ -622,6 +626,7 @@ configure-target: \
|
|||
maybe-configure-target-libstdc++-v3 \
|
||||
maybe-configure-target-libmudflap \
|
||||
maybe-configure-target-libssp \
|
||||
maybe-configure-target-libgcc-math \
|
||||
maybe-configure-target-newlib \
|
||||
maybe-configure-target-libgfortran \
|
||||
maybe-configure-target-libobjc \
|
||||
|
@ -742,6 +747,7 @@ all-target: \
|
|||
maybe-all-target-libstdc++-v3 \
|
||||
maybe-all-target-libmudflap \
|
||||
maybe-all-target-libssp \
|
||||
maybe-all-target-libgcc-math \
|
||||
maybe-all-target-newlib \
|
||||
maybe-all-target-libgfortran \
|
||||
maybe-all-target-libobjc \
|
||||
|
@ -850,6 +856,7 @@ info-target: \
|
|||
maybe-info-target-libstdc++-v3 \
|
||||
maybe-info-target-libmudflap \
|
||||
maybe-info-target-libssp \
|
||||
maybe-info-target-libgcc-math \
|
||||
maybe-info-target-newlib \
|
||||
maybe-info-target-libgfortran \
|
||||
maybe-info-target-libobjc \
|
||||
|
@ -953,6 +960,7 @@ dvi-target: \
|
|||
maybe-dvi-target-libstdc++-v3 \
|
||||
maybe-dvi-target-libmudflap \
|
||||
maybe-dvi-target-libssp \
|
||||
maybe-dvi-target-libgcc-math \
|
||||
maybe-dvi-target-newlib \
|
||||
maybe-dvi-target-libgfortran \
|
||||
maybe-dvi-target-libobjc \
|
||||
|
@ -1056,6 +1064,7 @@ html-target: \
|
|||
maybe-html-target-libstdc++-v3 \
|
||||
maybe-html-target-libmudflap \
|
||||
maybe-html-target-libssp \
|
||||
maybe-html-target-libgcc-math \
|
||||
maybe-html-target-newlib \
|
||||
maybe-html-target-libgfortran \
|
||||
maybe-html-target-libobjc \
|
||||
|
@ -1159,6 +1168,7 @@ TAGS-target: \
|
|||
maybe-TAGS-target-libstdc++-v3 \
|
||||
maybe-TAGS-target-libmudflap \
|
||||
maybe-TAGS-target-libssp \
|
||||
maybe-TAGS-target-libgcc-math \
|
||||
maybe-TAGS-target-newlib \
|
||||
maybe-TAGS-target-libgfortran \
|
||||
maybe-TAGS-target-libobjc \
|
||||
|
@ -1262,6 +1272,7 @@ install-info-target: \
|
|||
maybe-install-info-target-libstdc++-v3 \
|
||||
maybe-install-info-target-libmudflap \
|
||||
maybe-install-info-target-libssp \
|
||||
maybe-install-info-target-libgcc-math \
|
||||
maybe-install-info-target-newlib \
|
||||
maybe-install-info-target-libgfortran \
|
||||
maybe-install-info-target-libobjc \
|
||||
|
@ -1365,6 +1376,7 @@ installcheck-target: \
|
|||
maybe-installcheck-target-libstdc++-v3 \
|
||||
maybe-installcheck-target-libmudflap \
|
||||
maybe-installcheck-target-libssp \
|
||||
maybe-installcheck-target-libgcc-math \
|
||||
maybe-installcheck-target-newlib \
|
||||
maybe-installcheck-target-libgfortran \
|
||||
maybe-installcheck-target-libobjc \
|
||||
|
@ -1468,6 +1480,7 @@ mostlyclean-target: \
|
|||
maybe-mostlyclean-target-libstdc++-v3 \
|
||||
maybe-mostlyclean-target-libmudflap \
|
||||
maybe-mostlyclean-target-libssp \
|
||||
maybe-mostlyclean-target-libgcc-math \
|
||||
maybe-mostlyclean-target-newlib \
|
||||
maybe-mostlyclean-target-libgfortran \
|
||||
maybe-mostlyclean-target-libobjc \
|
||||
|
@ -1571,6 +1584,7 @@ clean-target: \
|
|||
maybe-clean-target-libstdc++-v3 \
|
||||
maybe-clean-target-libmudflap \
|
||||
maybe-clean-target-libssp \
|
||||
maybe-clean-target-libgcc-math \
|
||||
maybe-clean-target-newlib \
|
||||
maybe-clean-target-libgfortran \
|
||||
maybe-clean-target-libobjc \
|
||||
|
@ -1674,6 +1688,7 @@ distclean-target: \
|
|||
maybe-distclean-target-libstdc++-v3 \
|
||||
maybe-distclean-target-libmudflap \
|
||||
maybe-distclean-target-libssp \
|
||||
maybe-distclean-target-libgcc-math \
|
||||
maybe-distclean-target-newlib \
|
||||
maybe-distclean-target-libgfortran \
|
||||
maybe-distclean-target-libobjc \
|
||||
|
@ -1777,6 +1792,7 @@ maintainer-clean-target: \
|
|||
maybe-maintainer-clean-target-libstdc++-v3 \
|
||||
maybe-maintainer-clean-target-libmudflap \
|
||||
maybe-maintainer-clean-target-libssp \
|
||||
maybe-maintainer-clean-target-libgcc-math \
|
||||
maybe-maintainer-clean-target-newlib \
|
||||
maybe-maintainer-clean-target-libgfortran \
|
||||
maybe-maintainer-clean-target-libobjc \
|
||||
|
@ -1933,6 +1949,7 @@ check-target: \
|
|||
maybe-check-target-libstdc++-v3 \
|
||||
maybe-check-target-libmudflap \
|
||||
maybe-check-target-libssp \
|
||||
maybe-check-target-libgcc-math \
|
||||
maybe-check-target-newlib \
|
||||
maybe-check-target-libgfortran \
|
||||
maybe-check-target-libobjc \
|
||||
|
@ -2133,6 +2150,7 @@ install-target: \
|
|||
maybe-install-target-libstdc++-v3 \
|
||||
maybe-install-target-libmudflap \
|
||||
maybe-install-target-libssp \
|
||||
maybe-install-target-libgcc-math \
|
||||
maybe-install-target-newlib \
|
||||
maybe-install-target-libgfortran \
|
||||
maybe-install-target-libobjc \
|
||||
|
@ -29949,6 +29967,362 @@ maintainer-clean-target-libssp:
|
|||
|
||||
|
||||
|
||||
.PHONY: configure-target-libgcc-math maybe-configure-target-libgcc-math
|
||||
maybe-configure-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-configure-target-libgcc-math: configure-target-libgcc-math
|
||||
configure-target-libgcc-math:
|
||||
@: $(MAKE); $(unstage)
|
||||
@r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
echo "Checking multilib configuration for libgcc-math..."; \
|
||||
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc-math ; \
|
||||
$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgcc-math/multilib.tmp 2> /dev/null ; \
|
||||
if test -r $(TARGET_SUBDIR)/libgcc-math/multilib.out; then \
|
||||
if cmp -s $(TARGET_SUBDIR)/libgcc-math/multilib.tmp $(TARGET_SUBDIR)/libgcc-math/multilib.out; then \
|
||||
rm -f $(TARGET_SUBDIR)/libgcc-math/multilib.tmp; \
|
||||
else \
|
||||
rm -f $(TARGET_SUBDIR)/libgcc-math/Makefile; \
|
||||
mv $(TARGET_SUBDIR)/libgcc-math/multilib.tmp $(TARGET_SUBDIR)/libgcc-math/multilib.out; \
|
||||
fi; \
|
||||
else \
|
||||
mv $(TARGET_SUBDIR)/libgcc-math/multilib.tmp $(TARGET_SUBDIR)/libgcc-math/multilib.out; \
|
||||
fi
|
||||
@test ! -f $(TARGET_SUBDIR)/libgcc-math/Makefile || exit 0; \
|
||||
$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc-math ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo Configuring in $(TARGET_SUBDIR)/libgcc-math; \
|
||||
cd "$(TARGET_SUBDIR)/libgcc-math" || exit 1; \
|
||||
case $(srcdir) in \
|
||||
/* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
|
||||
*) topdir=`echo $(TARGET_SUBDIR)/libgcc-math/ | \
|
||||
sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
|
||||
esac; \
|
||||
srcdiroption="--srcdir=$${topdir}/libgcc-math"; \
|
||||
libsrcdir="$$s/libgcc-math"; \
|
||||
rm -f no-such-file || : ; \
|
||||
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
|
||||
$(TARGET_CONFIGARGS) $${srcdiroption} \
|
||||
|| exit 1
|
||||
@endif target-libgcc-math
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.PHONY: all-target-libgcc-math maybe-all-target-libgcc-math
|
||||
maybe-all-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
TARGET-target-libgcc-math=all
|
||||
maybe-all-target-libgcc-math: all-target-libgcc-math
|
||||
all-target-libgcc-math: configure-target-libgcc-math
|
||||
@: $(MAKE); $(unstage)
|
||||
@r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libgcc-math))
|
||||
@endif target-libgcc-math
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.PHONY: check-target-libgcc-math maybe-check-target-libgcc-math
|
||||
maybe-check-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-check-target-libgcc-math: check-target-libgcc-math
|
||||
|
||||
check-target-libgcc-math:
|
||||
@: $(MAKE); $(unstage)
|
||||
@r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(TARGET_FLAGS_TO_PASS) check)
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: install-target-libgcc-math maybe-install-target-libgcc-math
|
||||
maybe-install-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-install-target-libgcc-math: install-target-libgcc-math
|
||||
|
||||
install-target-libgcc-math: installdirs
|
||||
@: $(MAKE); $(unstage)
|
||||
@r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(TARGET_FLAGS_TO_PASS) install)
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
# Other targets (info, dvi, etc.)
|
||||
|
||||
.PHONY: maybe-info-target-libgcc-math info-target-libgcc-math
|
||||
maybe-info-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-info-target-libgcc-math: info-target-libgcc-math
|
||||
|
||||
info-target-libgcc-math: \
|
||||
configure-target-libgcc-math
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing info in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
info) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: maybe-dvi-target-libgcc-math dvi-target-libgcc-math
|
||||
maybe-dvi-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-dvi-target-libgcc-math: dvi-target-libgcc-math
|
||||
|
||||
dvi-target-libgcc-math: \
|
||||
configure-target-libgcc-math
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing dvi in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
dvi) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: maybe-html-target-libgcc-math html-target-libgcc-math
|
||||
maybe-html-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-html-target-libgcc-math: html-target-libgcc-math
|
||||
|
||||
html-target-libgcc-math: \
|
||||
configure-target-libgcc-math
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing html in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
html) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: maybe-TAGS-target-libgcc-math TAGS-target-libgcc-math
|
||||
maybe-TAGS-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-TAGS-target-libgcc-math: TAGS-target-libgcc-math
|
||||
|
||||
TAGS-target-libgcc-math: \
|
||||
configure-target-libgcc-math
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing TAGS in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
TAGS) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: maybe-install-info-target-libgcc-math install-info-target-libgcc-math
|
||||
maybe-install-info-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-install-info-target-libgcc-math: install-info-target-libgcc-math
|
||||
|
||||
install-info-target-libgcc-math: \
|
||||
configure-target-libgcc-math \
|
||||
info-target-libgcc-math
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing install-info in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
install-info) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: maybe-installcheck-target-libgcc-math installcheck-target-libgcc-math
|
||||
maybe-installcheck-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-installcheck-target-libgcc-math: installcheck-target-libgcc-math
|
||||
|
||||
installcheck-target-libgcc-math: \
|
||||
configure-target-libgcc-math
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing installcheck in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
installcheck) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: maybe-mostlyclean-target-libgcc-math mostlyclean-target-libgcc-math
|
||||
maybe-mostlyclean-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-mostlyclean-target-libgcc-math: mostlyclean-target-libgcc-math
|
||||
|
||||
mostlyclean-target-libgcc-math:
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
mostlyclean) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: maybe-clean-target-libgcc-math clean-target-libgcc-math
|
||||
maybe-clean-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-clean-target-libgcc-math: clean-target-libgcc-math
|
||||
|
||||
clean-target-libgcc-math:
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing clean in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
clean) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: maybe-distclean-target-libgcc-math distclean-target-libgcc-math
|
||||
maybe-distclean-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-distclean-target-libgcc-math: distclean-target-libgcc-math
|
||||
|
||||
distclean-target-libgcc-math:
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing distclean in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
distclean) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
.PHONY: maybe-maintainer-clean-target-libgcc-math maintainer-clean-target-libgcc-math
|
||||
maybe-maintainer-clean-target-libgcc-math:
|
||||
@if target-libgcc-math
|
||||
maybe-maintainer-clean-target-libgcc-math: maintainer-clean-target-libgcc-math
|
||||
|
||||
maintainer-clean-target-libgcc-math:
|
||||
@: $(MAKE); $(unstage)
|
||||
@[ -f $(TARGET_SUBDIR)/libgcc-math/Makefile ] || exit 0 ; \
|
||||
r=`${PWD_COMMAND}`; export r; \
|
||||
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
|
||||
$(NORMAL_TARGET_EXPORTS) \
|
||||
echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgcc-math" ; \
|
||||
for flag in $(EXTRA_TARGET_FLAGS); do \
|
||||
eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
|
||||
done; \
|
||||
(cd $(TARGET_SUBDIR)/libgcc-math && \
|
||||
$(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
|
||||
"CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
|
||||
"RANLIB=$${RANLIB}" \
|
||||
"DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
|
||||
maintainer-clean) \
|
||||
|| exit 1
|
||||
|
||||
@endif target-libgcc-math
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.PHONY: configure-target-newlib maybe-configure-target-newlib
|
||||
maybe-configure-target-newlib:
|
||||
@if target-newlib
|
||||
|
@ -37396,6 +37770,8 @@ configure-target-libmudflap: maybe-all-gcc
|
|||
|
||||
configure-target-libssp: maybe-all-gcc
|
||||
|
||||
configure-target-libgcc-math: maybe-all-gcc
|
||||
|
||||
configure-target-newlib: maybe-all-gcc
|
||||
|
||||
configure-target-libgfortran: maybe-all-gcc
|
||||
|
|
16
configure.in
16
configure.in
|
@ -148,6 +148,7 @@ target_libraries="target-libiberty \
|
|||
target-libstdc++-v3 \
|
||||
target-libmudflap \
|
||||
target-libssp \
|
||||
target-libgcc-math \
|
||||
target-libgfortran \
|
||||
${libgcj} \
|
||||
target-libobjc \
|
||||
|
@ -316,6 +317,21 @@ if test "${ENABLE_LIBSSP}" != "yes" ; then
|
|||
noconfigdirs="$noconfigdirs target-libssp"
|
||||
fi
|
||||
|
||||
# Set the default so we build libgcc-math for ix86 and x86_64
|
||||
AC_ARG_ENABLE(libgcc-math,
|
||||
[ --enable-libgcc-math Builds libgcc-math directory],,
|
||||
[
|
||||
case "${target}" in
|
||||
i?86-* | x86_64-* )
|
||||
enable_libgcc_math=yes ;;
|
||||
*)
|
||||
enable_libgcc_math=no ;;
|
||||
esac
|
||||
])
|
||||
if test "${enable_libgcc_math}" != "yes"; then
|
||||
noconfigdirs="$noconfigdirs target-libgcc-math"
|
||||
fi
|
||||
|
||||
# Save it here so that, even in case of --enable-libgcj, if the Java
|
||||
# front-end isn't enabled, we still get libgcj disabled.
|
||||
libgcj_saved=$libgcj
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2006-01-31 Richard Guenther <rguenther@suse.de>
|
||||
Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* doc/install.texi (--disable-libgcc-math): Document.
|
||||
|
||||
2006-01-30 Marcin Dalecki <martin@dalecki.de>
|
||||
|
||||
* expr.h (expand_normal): new inline function.
|
||||
|
|
|
@ -1086,6 +1086,10 @@ do a @samp{make -C gcc gnatlib_and_tools}.
|
|||
Specify that the run-time libraries for stack smashing protection
|
||||
should not be built.
|
||||
|
||||
@item --disable-libgcc-math
|
||||
Specify that the run-time libraries for arch and gcc specific math
|
||||
functions should not be built.
|
||||
|
||||
@item --with-dwarf2
|
||||
Specify that the compiler should
|
||||
use DWARF 2 debugging information as the default.
|
||||
|
|
20
libgcc-math/ChangeLog
Normal file
20
libgcc-math/ChangeLog
Normal file
|
@ -0,0 +1,20 @@
|
|||
2006-01-31 Richard Guenther <rguenther@suse.de>
|
||||
Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* configure.ac: New file.
|
||||
* Makefile.am: Likewise.
|
||||
* configure: New generated file.
|
||||
* Makefile.in: Likewise.
|
||||
* aclocal.m4: Likewise.
|
||||
* libtool-version: New file.
|
||||
* include/ieee754.h: New file.
|
||||
* include/libc-symbols.h: Likewise.
|
||||
* include/math_private.h: Likewise.
|
||||
* i386/Makefile.am: New file.
|
||||
* i386/Makefile.in: New generated file.
|
||||
* i386/sse2.h: New file.
|
||||
* i386/endian.h: Likewise.
|
||||
* i386/sse2.map: Linker script for SSE2 ABI math intrinsics.
|
||||
* flt-32/: Import from glibc.
|
||||
* dbl-64/: Likewise.
|
||||
|
88
libgcc-math/Makefile.am
Normal file
88
libgcc-math/Makefile.am
Normal file
|
@ -0,0 +1,88 @@
|
|||
## Makefile for the toplevel directory of the libgcc-math library.
|
||||
##
|
||||
## Copyright (C) 2005
|
||||
## Free Software Foundation, Inc.
|
||||
##
|
||||
|
||||
AUTOMAKE_OPTIONS = 1.9.5 foreign
|
||||
ACLOCAL_AMFLAGS = -I .. -I ../config
|
||||
MAINT_CHARSET = latin1
|
||||
|
||||
SUBDIRS = @arch_subdirs@
|
||||
|
||||
# May be used by various substitution variables.
|
||||
gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
|
||||
|
||||
if LIBGCCM_USE_SYMVER
|
||||
version_arg = -Wl,--version-script=gccm.map
|
||||
version_dep = gccm.map
|
||||
.PHONY: gccm.map
|
||||
gccm.map:
|
||||
rm -f gccm.map
|
||||
for map in @arch_maps@; do \
|
||||
cat $(srcdir)/$$map >> gccm.map; \
|
||||
done
|
||||
else
|
||||
version_arg =
|
||||
version_dep =
|
||||
endif
|
||||
|
||||
|
||||
if BUILD_LIBGCC_MATH
|
||||
toolexeclib_LTLIBRARIES = libgcc-math.la
|
||||
|
||||
libgcc_math_la_SOURCES =
|
||||
libgcc_math_la_LIBADD = @arch_libraries@
|
||||
libgcc_math_la_DEPENDENCIES = $(libgcc_math_la_LIBADD) $(version_dep)
|
||||
libgcc_math_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
|
||||
$(version_arg) -lm
|
||||
endif
|
||||
|
||||
|
||||
# XXX hack alert
|
||||
# From libffi/Makefile.am
|
||||
|
||||
# Work around what appears to be a GNU make bug handling MAKEFLAGS
|
||||
# values defined in terms of make variables, as is the case for CC and
|
||||
# friends when we are called from the top level Makefile.
|
||||
AM_MAKEFLAGS = \
|
||||
"AR_FLAGS=$(AR_FLAGS)" \
|
||||
"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
|
||||
"CFLAGS=$(CFLAGS)" \
|
||||
"CXXFLAGS=$(CXXFLAGS)" \
|
||||
"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
|
||||
"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
|
||||
"INSTALL=$(INSTALL)" \
|
||||
"INSTALL_DATA=$(INSTALL_DATA)" \
|
||||
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
|
||||
"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
|
||||
"JC1FLAGS=$(JC1FLAGS)" \
|
||||
"LDFLAGS=$(LDFLAGS)" \
|
||||
"LIBCFLAGS=$(LIBCFLAGS)" \
|
||||
"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
|
||||
"MAKE=$(MAKE)" \
|
||||
"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
|
||||
"PICFLAG=$(PICFLAG)" \
|
||||
"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
|
||||
"SHELL=$(SHELL)" \
|
||||
"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
|
||||
"exec_prefix=$(exec_prefix)" \
|
||||
"infodir=$(infodir)" \
|
||||
"libdir=$(libdir)" \
|
||||
"prefix=$(prefix)" \
|
||||
"includedir=$(includedir)" \
|
||||
"AR=$(AR)" \
|
||||
"AS=$(AS)" \
|
||||
"CC=$(CC)" \
|
||||
"CXX=$(CXX)" \
|
||||
"LD=$(LD)" \
|
||||
"LIBCFLAGS=$(LIBCFLAGS)" \
|
||||
"NM=$(NM)" \
|
||||
"PICFLAG=$(PICFLAG)" \
|
||||
"RANLIB=$(RANLIB)" \
|
||||
"DESTDIR=$(DESTDIR)"
|
||||
|
||||
MAKEOVERRIDES=
|
||||
|
||||
## ################################################################
|
||||
|
760
libgcc-math/Makefile.in
Normal file
760
libgcc-math/Makefile.in
Normal file
|
@ -0,0 +1,760 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = .
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
@BUILD_LIBGCC_MATH_FALSE@libgcc_math_la_DEPENDENCIES =
|
||||
DIST_COMMON = $(am__configure_deps) $(srcdir)/../config.guess \
|
||||
$(srcdir)/../config.sub $(srcdir)/../install-sh \
|
||||
$(srcdir)/../ltmain.sh $(srcdir)/../missing \
|
||||
$(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(top_srcdir)/configure ChangeLog
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
|
||||
$(top_srcdir)/../config/lead-dot.m4 \
|
||||
$(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno configure.status.lineno
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
|
||||
toolexeclibLTLIBRARIES_INSTALL = $(INSTALL)
|
||||
LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
|
||||
am_libgcc_math_la_OBJECTS =
|
||||
libgcc_math_la_OBJECTS = $(am_libgcc_math_la_OBJECTS)
|
||||
@BUILD_LIBGCC_MATH_TRUE@am_libgcc_math_la_rpath = -rpath \
|
||||
@BUILD_LIBGCC_MATH_TRUE@ $(toolexeclibdir)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir)
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(libgcc_math_la_SOURCES)
|
||||
DIST_SOURCES = $(libgcc_math_la_SOURCES)
|
||||
MULTISRCTOP =
|
||||
MULTIBUILDTOP =
|
||||
MULTIDIRS =
|
||||
MULTISUBDIR =
|
||||
MULTIDO = true
|
||||
MULTICLEAN = true
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_LIBGCC_MATH_FALSE = @BUILD_LIBGCC_MATH_FALSE@
|
||||
BUILD_LIBGCC_MATH_TRUE = @BUILD_LIBGCC_MATH_TRUE@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LIBGCCM_USE_SYMVER_FALSE = @LIBGCCM_USE_SYMVER_FALSE@
|
||||
LIBGCCM_USE_SYMVER_TRUE = @LIBGCCM_USE_SYMVER_TRUE@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TARGET_ILP32_FALSE = @TARGET_ILP32_FALSE@
|
||||
TARGET_ILP32_TRUE = @TARGET_ILP32_TRUE@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
arch_libraries = @arch_libraries@
|
||||
arch_maps = @arch_maps@
|
||||
arch_subdirs = @arch_subdirs@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
enable_shared = @enable_shared@
|
||||
enable_static = @enable_static@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
multi_basedir = @multi_basedir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
toolexecdir = @toolexecdir@
|
||||
toolexeclibdir = @toolexeclibdir@
|
||||
AUTOMAKE_OPTIONS = 1.9.5 foreign
|
||||
ACLOCAL_AMFLAGS = -I .. -I ../config
|
||||
MAINT_CHARSET = latin1
|
||||
SUBDIRS = @arch_subdirs@
|
||||
|
||||
# May be used by various substitution variables.
|
||||
gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
|
||||
@LIBGCCM_USE_SYMVER_FALSE@version_arg =
|
||||
@LIBGCCM_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=gccm.map
|
||||
@LIBGCCM_USE_SYMVER_FALSE@version_dep =
|
||||
@LIBGCCM_USE_SYMVER_TRUE@version_dep = gccm.map
|
||||
@BUILD_LIBGCC_MATH_TRUE@toolexeclib_LTLIBRARIES = libgcc-math.la
|
||||
@BUILD_LIBGCC_MATH_TRUE@libgcc_math_la_SOURCES =
|
||||
@BUILD_LIBGCC_MATH_TRUE@libgcc_math_la_LIBADD = @arch_libraries@
|
||||
@BUILD_LIBGCC_MATH_TRUE@libgcc_math_la_DEPENDENCIES = $(libgcc_math_la_LIBADD) $(version_dep)
|
||||
@BUILD_LIBGCC_MATH_TRUE@libgcc_math_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
|
||||
@BUILD_LIBGCC_MATH_TRUE@ $(version_arg) -lm
|
||||
|
||||
|
||||
# XXX hack alert
|
||||
# From libffi/Makefile.am
|
||||
|
||||
# Work around what appears to be a GNU make bug handling MAKEFLAGS
|
||||
# values defined in terms of make variables, as is the case for CC and
|
||||
# friends when we are called from the top level Makefile.
|
||||
AM_MAKEFLAGS = \
|
||||
"AR_FLAGS=$(AR_FLAGS)" \
|
||||
"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
|
||||
"CFLAGS=$(CFLAGS)" \
|
||||
"CXXFLAGS=$(CXXFLAGS)" \
|
||||
"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
|
||||
"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
|
||||
"INSTALL=$(INSTALL)" \
|
||||
"INSTALL_DATA=$(INSTALL_DATA)" \
|
||||
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
|
||||
"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
|
||||
"JC1FLAGS=$(JC1FLAGS)" \
|
||||
"LDFLAGS=$(LDFLAGS)" \
|
||||
"LIBCFLAGS=$(LIBCFLAGS)" \
|
||||
"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
|
||||
"MAKE=$(MAKE)" \
|
||||
"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
|
||||
"PICFLAG=$(PICFLAG)" \
|
||||
"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
|
||||
"SHELL=$(SHELL)" \
|
||||
"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
|
||||
"exec_prefix=$(exec_prefix)" \
|
||||
"infodir=$(infodir)" \
|
||||
"libdir=$(libdir)" \
|
||||
"prefix=$(prefix)" \
|
||||
"includedir=$(includedir)" \
|
||||
"AR=$(AR)" \
|
||||
"AS=$(AS)" \
|
||||
"CC=$(CC)" \
|
||||
"CXX=$(CXX)" \
|
||||
"LD=$(LD)" \
|
||||
"LIBCFLAGS=$(LIBCFLAGS)" \
|
||||
"NM=$(NM)" \
|
||||
"PICFLAG=$(PICFLAG)" \
|
||||
"RANLIB=$(RANLIB)" \
|
||||
"DESTDIR=$(DESTDIR)"
|
||||
|
||||
MAKEOVERRIDES =
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh:
|
||||
@:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
|
||||
cd $(srcdir) && $(AUTOMAKE) --foreign \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(toolexeclibdir)" || $(mkdir_p) "$(DESTDIR)$(toolexeclibdir)"
|
||||
@list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) --mode=install $(toolexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
|
||||
$(LIBTOOL) --mode=install $(toolexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(toolexeclibdir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-toolexeclibLTLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@set -x; list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
|
||||
p=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$p'"; \
|
||||
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$p"; \
|
||||
done
|
||||
|
||||
clean-toolexeclibLTLIBRARIES:
|
||||
-test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
|
||||
@list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
|
||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||
test "$$dir" != "$$p" || dir=.; \
|
||||
echo "rm -f \"$${dir}/so_locations\""; \
|
||||
rm -f "$${dir}/so_locations"; \
|
||||
done
|
||||
libgcc-math.la: $(libgcc_math_la_OBJECTS) $(libgcc_math_la_DEPENDENCIES)
|
||||
$(LINK) $(am_libgcc_math_la_rpath) $(libgcc_math_la_LDFLAGS) $(libgcc_math_la_OBJECTS) $(libgcc_math_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
|
||||
# GNU Make needs to see an explicit $(MAKE) variable in the command it
|
||||
# runs to enable its job server during parallel builds. Hence the
|
||||
# comments below.
|
||||
all-multi:
|
||||
$(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
|
||||
install-multi:
|
||||
$(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE)
|
||||
|
||||
mostlyclean-multi:
|
||||
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE)
|
||||
clean-multi:
|
||||
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE)
|
||||
distclean-multi:
|
||||
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
|
||||
maintainer-clean-multi:
|
||||
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE)
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkdir_p) $(distdir)/.. $(distdir)/../config
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& cd $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
|
||||
distuninstallcheck:
|
||||
@cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(LTLIBRARIES) all-multi
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-multi clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-toolexeclibLTLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-multi distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am: install-multi install-toolexeclibLTLIBRARIES
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-multi maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-multi mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-toolexeclibLTLIBRARIES
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am all-multi \
|
||||
am--refresh check check-am clean clean-generic clean-libtool \
|
||||
clean-multi clean-recursive clean-toolexeclibLTLIBRARIES ctags \
|
||||
ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
|
||||
dist-tarZ dist-zip distcheck distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-multi \
|
||||
distclean-recursive distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-multi install-strip install-toolexeclibLTLIBRARIES \
|
||||
installcheck installcheck-am installdirs installdirs-am \
|
||||
maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-multi maintainer-clean-recursive mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
mostlyclean-multi mostlyclean-recursive pdf pdf-am ps ps-am \
|
||||
tags tags-recursive uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-toolexeclibLTLIBRARIES
|
||||
|
||||
@LIBGCCM_USE_SYMVER_TRUE@.PHONY: gccm.map
|
||||
@LIBGCCM_USE_SYMVER_TRUE@gccm.map:
|
||||
@LIBGCCM_USE_SYMVER_TRUE@ rm -f gccm.map
|
||||
@LIBGCCM_USE_SYMVER_TRUE@ for map in @arch_maps@; do \
|
||||
@LIBGCCM_USE_SYMVER_TRUE@ cat $(srcdir)/$$map >> gccm.map; \
|
||||
@LIBGCCM_USE_SYMVER_TRUE@ done
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
940
libgcc-math/aclocal.m4
vendored
Normal file
940
libgcc-math/aclocal.m4
vendored
Normal file
|
@ -0,0 +1,940 @@
|
|||
# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION so it can be traced.
|
||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.9.6])])
|
||||
|
||||
# Figure out how to run the assembler. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
# AM_PROG_AS
|
||||
# ----------
|
||||
AC_DEFUN([AM_PROG_AS],
|
||||
[# By default we simply use the C compiler to build assembly code.
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
test "${CCAS+set}" = set || CCAS=$CC
|
||||
test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
|
||||
AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)])
|
||||
AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
|
||||
])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
||||
#
|
||||
# Of course, Automake must honor this variable whenever it calls a
|
||||
# tool from the auxiliary directory. The problem is that $srcdir (and
|
||||
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
||||
# depending on how configure is run. This is pretty annoying, since
|
||||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
||||
# source directory, any form will work fine, but in subdirectories a
|
||||
# relative path needs to be adjusted first.
|
||||
#
|
||||
# $ac_aux_dir/missing
|
||||
# fails when called from a subdirectory if $ac_aux_dir is relative
|
||||
# $top_srcdir/$ac_aux_dir/missing
|
||||
# fails if $ac_aux_dir is absolute,
|
||||
# fails when called from a subdirectory in a VPATH build with
|
||||
# a relative $ac_aux_dir
|
||||
#
|
||||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
||||
# are both prefixed by $srcdir. In an in-source build this is usually
|
||||
# harmless because $srcdir is `.', but things will broke when you
|
||||
# start a VPATH build or use an absolute $srcdir.
|
||||
#
|
||||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
||||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
||||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
||||
# and then we would define $MISSING as
|
||||
# MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# This will work as long as MISSING is not called from configure, because
|
||||
# unfortunately $(top_srcdir) has no meaning in configure.
|
||||
# However there are other variables, like CC, which are often used in
|
||||
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
||||
#
|
||||
# Another solution, used here, is to always expand $ac_aux_dir to an
|
||||
# absolute PATH. The drawback is that using absolute paths prevent a
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
||||
[dnl Rely on autoconf to set up CDPATH properly.
|
||||
AC_PREREQ([2.50])dnl
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 7
|
||||
|
||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||
# -------------------------------------
|
||||
# Define a conditional.
|
||||
AC_DEFUN([AM_CONDITIONAL],
|
||||
[AC_PREREQ(2.52)dnl
|
||||
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
||||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
||||
AC_SUBST([$1_TRUE])
|
||||
AC_SUBST([$1_FALSE])
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi
|
||||
AC_CONFIG_COMMANDS_PRE(
|
||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
||||
AC_MSG_ERROR([[conditional "$1" was never defined.
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
# _AM_DEPENDENCIES(NAME)
|
||||
# ----------------------
|
||||
# See how the compiler implements dependency checking.
|
||||
# NAME is "CC", "CXX", "GCJ", or "OBJC".
|
||||
# We try a few techniques and use that to set a single cache variable.
|
||||
#
|
||||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
|
||||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
|
||||
# dependency, and given that the user is not expected to run this macro,
|
||||
# just rely on AC_PROG_CC.
|
||||
AC_DEFUN([_AM_DEPENDENCIES],
|
||||
[AC_REQUIRE([AM_SET_DEPDIR])dnl
|
||||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
|
||||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
|
||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
||||
|
||||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
|
||||
[$1], CXX, [depcc="$CXX" am_compiler_list=],
|
||||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
|
||||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
|
||||
[depcc="$$1" am_compiler_list=])
|
||||
|
||||
AC_CACHE_CHECK([dependency style of $depcc],
|
||||
[am_cv_$1_dependencies_compiler_type],
|
||||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
|
||||
# We make a subdir and do the tests there. Otherwise we can end up
|
||||
# making bogus files that we don't know about and never remove. For
|
||||
# instance it was reported that on HP-UX the gcc test will end up
|
||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
||||
# in D'.
|
||||
mkdir conftest.dir
|
||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
||||
# using a relative directory.
|
||||
cp "$am_depcomp" conftest.dir
|
||||
cd conftest.dir
|
||||
# We will build objects and dependencies in a subdirectory because
|
||||
# it helps to detect inapplicable dependency modes. For instance
|
||||
# both Tru64's cc and ICC support -MD to output dependencies as a
|
||||
# side effect of compilation, but ICC will put the dependencies in
|
||||
# the current directory while Tru64 will put them in the object
|
||||
# directory.
|
||||
mkdir sub
|
||||
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
if test "$am_compiler_list" = ""; then
|
||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||
fi
|
||||
for depmode in $am_compiler_list; do
|
||||
# Setup a source with many dependencies, because some compilers
|
||||
# like to wrap large dependency lists on column 80 (with \), and
|
||||
# we should not choose a depcomp mode which is confused by this.
|
||||
#
|
||||
# We need to recreate these files for each test, as the compiler may
|
||||
# overwrite some of them when testing with obscure command lines.
|
||||
# This happens at least with the AIX C compiler.
|
||||
: > sub/conftest.c
|
||||
for i in 1 2 3 4 5 6; do
|
||||
echo '#include "conftst'$i'.h"' >> sub/conftest.c
|
||||
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
|
||||
# Solaris 8's {/usr,}/bin/sh.
|
||||
touch sub/conftst$i.h
|
||||
done
|
||||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
||||
|
||||
case $depmode in
|
||||
nosideeffect)
|
||||
# after this tag, mechanisms are not by side-effect, so they'll
|
||||
# only be used when explicitly requested
|
||||
if test "x$enable_dependency_tracking" = xyes; then
|
||||
continue
|
||||
else
|
||||
break
|
||||
fi
|
||||
;;
|
||||
none) break ;;
|
||||
esac
|
||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||
# handle `-M -o', and we need to detect this.
|
||||
if depmode=$depmode \
|
||||
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
|
||||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
|
||||
>/dev/null 2>conftest.err &&
|
||||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
|
||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||
# icc doesn't choke on unknown options, it will just issue warnings
|
||||
# or remarks (even with -Werror). So we grep stderr for any message
|
||||
# that says an option was ignored or not supported.
|
||||
# When given -MP, icc 7.0 and 7.1 complain thusly:
|
||||
# icc: Command line warning: ignoring option '-M'; no argument required
|
||||
# The diagnosis changed in icc 8.0:
|
||||
# icc: Command line remark: option '-MP' not supported
|
||||
if (grep 'ignoring option' conftest.err ||
|
||||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
rm -rf conftest.dir
|
||||
else
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
fi
|
||||
])
|
||||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
||||
AM_CONDITIONAL([am__fastdep$1], [
|
||||
test "x$enable_dependency_tracking" != xno \
|
||||
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
|
||||
])
|
||||
|
||||
|
||||
# AM_SET_DEPDIR
|
||||
# -------------
|
||||
# Choose a directory name for dependency files.
|
||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
||||
AC_DEFUN([AM_SET_DEPDIR],
|
||||
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
|
||||
])
|
||||
|
||||
|
||||
# AM_DEP_TRACK
|
||||
# ------------
|
||||
AC_DEFUN([AM_DEP_TRACK],
|
||||
[AC_ARG_ENABLE(dependency-tracking,
|
||||
[ --disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors])
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
am_depcomp="$ac_aux_dir/depcomp"
|
||||
AMDEPBACKSLASH='\'
|
||||
fi
|
||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||
AC_SUBST([AMDEPBACKSLASH])
|
||||
])
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
#serial 3
|
||||
|
||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# ------------------------------
|
||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[for mf in $CONFIG_FILES; do
|
||||
# Strip MF so we end up with the name of the file.
|
||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
||||
# Check whether this is an Automake generated Makefile or not.
|
||||
# We used to match only the files named `Makefile.in', but
|
||||
# some people rename them; so instead we look at the file content.
|
||||
# Grep'ing the first line is not enough: some people post-process
|
||||
# each Makefile.in and add a new line on top of each file to say so.
|
||||
# So let's grep whole file.
|
||||
if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
|
||||
dirpart=`AS_DIRNAME("$mf")`
|
||||
else
|
||||
continue
|
||||
fi
|
||||
# Extract the definition of DEPDIR, am__include, and am__quote
|
||||
# from the Makefile without running `make'.
|
||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||
test -z "am__include" && continue
|
||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
||||
U=`sed -n 's/^U = //p' < "$mf"`
|
||||
# Find all dependency output files, they are included files with
|
||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||
# simplest approach to changing $(DEPDIR) to its actual value in the
|
||||
# expansion.
|
||||
for file in `sed -n "
|
||||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
||||
# Make sure the directory exists.
|
||||
test -f "$dirpart/$file" && continue
|
||||
fdir=`AS_DIRNAME(["$file"])`
|
||||
AS_MKDIR_P([$dirpart/$fdir])
|
||||
# echo "creating $dirpart/$file"
|
||||
echo '# dummy' > "$dirpart/$file"
|
||||
done
|
||||
done
|
||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
|
||||
|
||||
# AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# -----------------------------
|
||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
||||
#
|
||||
# This code is only required when automatic dependency tracking
|
||||
# is enabled. FIXME. This creates each `.P' file that we will
|
||||
# need in order to bootstrap the dependency handling code.
|
||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AC_CONFIG_COMMANDS([depfiles],
|
||||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 12
|
||||
|
||||
# This macro actually does too much. Some checks are only needed if
|
||||
# your package does certain things. But this isn't really a big deal.
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||
# -----------------------------------------------
|
||||
# The call with PACKAGE and VERSION arguments is the old style
|
||||
# call (pre autoconf-2.50), which is being phased out. PACKAGE
|
||||
# and VERSION should now be passed to AC_INIT and removed from
|
||||
# the call to AM_INIT_AUTOMAKE.
|
||||
# We support both call styles for the transition. After
|
||||
# the next Automake release, Autoconf can make the AC_INIT
|
||||
# arguments mandatory, and then we can depend on a new Autoconf
|
||||
# release and drop the old call support.
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_PREREQ([2.58])dnl
|
||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
||||
dnl the ones we care about.
|
||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
# test to see if srcdir already configured
|
||||
if test "`cd $srcdir && pwd`" != "`pwd`" &&
|
||||
test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
|
||||
# test whether we have cygpath
|
||||
if test -z "$CYGPATH_W"; then
|
||||
if (cygpath --version) >/dev/null 2>/dev/null; then
|
||||
CYGPATH_W='cygpath -w'
|
||||
else
|
||||
CYGPATH_W=echo
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([CYGPATH_W])
|
||||
|
||||
# Define the identity of the package.
|
||||
dnl Distinguish between old-style and new-style calls.
|
||||
m4_ifval([$2],
|
||||
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
||||
AC_SUBST([PACKAGE], [$1])dnl
|
||||
AC_SUBST([VERSION], [$2])],
|
||||
[_AM_SET_OPTIONS([$1])dnl
|
||||
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
|
||||
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
|
||||
|
||||
_AM_IF_OPTION([no-define],,
|
||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
|
||||
|
||||
# Some tools Automake needs.
|
||||
AC_REQUIRE([AM_SANITY_CHECK])dnl
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])dnl
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
||||
AM_PROG_INSTALL_SH
|
||||
AM_PROG_INSTALL_STRIP
|
||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
||||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
||||
[_AM_PROG_TAR([v7])])])
|
||||
_AM_IF_OPTION([no-dependencies],,
|
||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
||||
[_AM_DEPENDENCIES(CC)],
|
||||
[define([AC_PROG_CC],
|
||||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
||||
[_AM_DEPENDENCIES(CXX)],
|
||||
[define([AC_PROG_CXX],
|
||||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
])
|
||||
])
|
||||
|
||||
|
||||
# When config.status generates a header, we must update the stamp-h file.
|
||||
# This file resides in the same directory as the config header
|
||||
# that is generated. The stamp files are numbered to have different names.
|
||||
|
||||
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
|
||||
# loop where config.status creates the headers, so we can generate
|
||||
# our stamp files there.
|
||||
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
|
||||
[# Compute $1's index in $config_headers.
|
||||
_am_stamp_count=1
|
||||
for _am_header in $config_headers :; do
|
||||
case $_am_header in
|
||||
$1 | $1:* )
|
||||
break ;;
|
||||
* )
|
||||
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
|
||||
esac
|
||||
done
|
||||
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_SH
|
||||
# ------------------
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
install_sh=${install_sh-"$am_aux_dir/install-sh"}
|
||||
AC_SUBST(install_sh)])
|
||||
|
||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
||||
# From Jim Meyering
|
||||
|
||||
# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
AC_DEFUN([AM_MAINTAINER_MODE],
|
||||
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||
dnl maintainer-mode is disabled by default
|
||||
AC_ARG_ENABLE(maintainer-mode,
|
||||
[ --enable-maintainer-mode enable make rules and dependencies not useful
|
||||
(and sometimes confusing) to the casual installer],
|
||||
USE_MAINTAINER_MODE=$enableval,
|
||||
USE_MAINTAINER_MODE=no)
|
||||
AC_MSG_RESULT([$USE_MAINTAINER_MODE])
|
||||
AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
|
||||
MAINT=$MAINTAINER_MODE_TRUE
|
||||
AC_SUBST(MAINT)dnl
|
||||
]
|
||||
)
|
||||
|
||||
AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
# Check to see how make treats includes.
|
||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
am__doit:
|
||||
@echo done
|
||||
.PHONY: am__doit
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
am__include="#"
|
||||
am__quote=
|
||||
_am_result=none
|
||||
# First try GNU make style include.
|
||||
echo "include confinc" > confmf
|
||||
# We grep out `Entering directory' and `Leaving directory'
|
||||
# messages which can occur if `w' ends up in MAKEFLAGS.
|
||||
# In particular we don't look at `^make:' because GNU make might
|
||||
# be invoked under some other name (usually "gmake"), in which
|
||||
# case it prints its new name instead of `make'.
|
||||
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
fi
|
||||
# Now try BSD make style include.
|
||||
if test "$am__include" = "#"; then
|
||||
echo '.include "confinc"' > confmf
|
||||
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
|
||||
am__include=.include
|
||||
am__quote="\""
|
||||
_am_result=BSD
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([am__include])
|
||||
AC_SUBST([am__quote])
|
||||
AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||
# ------------------------------
|
||||
AC_DEFUN([AM_MISSING_PROG],
|
||||
[AC_REQUIRE([AM_MISSING_HAS_RUN])
|
||||
$1=${$1-"${am_missing_run}$2"}
|
||||
AC_SUBST($1)])
|
||||
|
||||
|
||||
# AM_MISSING_HAS_RUN
|
||||
# ------------------
|
||||
# Define MISSING if not defined so far and test if it supports --run.
|
||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# Use eval to expand $SHELL
|
||||
if eval "$MISSING --run true"; then
|
||||
am_missing_run="$MISSING --run "
|
||||
else
|
||||
am_missing_run=
|
||||
AC_MSG_WARN([`missing' script is too old or missing])
|
||||
fi
|
||||
])
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_MKDIR_P
|
||||
# ---------------
|
||||
# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
|
||||
#
|
||||
# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
|
||||
# created by `make install' are always world readable, even if the
|
||||
# installer happens to have an overly restrictive umask (e.g. 077).
|
||||
# This was a mistake. There are at least two reasons why we must not
|
||||
# use `-m 0755':
|
||||
# - it causes special bits like SGID to be ignored,
|
||||
# - it may be too restrictive (some setups expect 775 directories).
|
||||
#
|
||||
# Do not use -m 0755 and let people choose whatever they expect by
|
||||
# setting umask.
|
||||
#
|
||||
# We cannot accept any implementation of `mkdir' that recognizes `-p'.
|
||||
# Some implementations (such as Solaris 8's) are not thread-safe: if a
|
||||
# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
|
||||
# concurrently, both version can detect that a/ is missing, but only
|
||||
# one can create it and the other will error out. Consequently we
|
||||
# restrict ourselves to GNU make (using the --version option ensures
|
||||
# this.)
|
||||
AC_DEFUN([AM_PROG_MKDIR_P],
|
||||
[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
|
||||
# We used to keeping the `.' as first argument, in order to
|
||||
# allow $(mkdir_p) to be used without argument. As in
|
||||
# $(mkdir_p) $(somedir)
|
||||
# where $(somedir) is conditionally defined. However this is wrong
|
||||
# for two reasons:
|
||||
# 1. if the package is installed by a user who cannot write `.'
|
||||
# make install will fail,
|
||||
# 2. the above comment should most certainly read
|
||||
# $(mkdir_p) $(DESTDIR)$(somedir)
|
||||
# so it does not work when $(somedir) is undefined and
|
||||
# $(DESTDIR) is not.
|
||||
# To support the latter case, we have to write
|
||||
# test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
|
||||
# so the `.' trick is pointless.
|
||||
mkdir_p='mkdir -p --'
|
||||
else
|
||||
# On NextStep and OpenStep, the `mkdir' command does not
|
||||
# recognize any option. It will interpret all options as
|
||||
# directories to create, and then abort because `.' already
|
||||
# exists.
|
||||
for d in ./-p ./--version;
|
||||
do
|
||||
test -d $d && rmdir $d
|
||||
done
|
||||
# $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
|
||||
if test -f "$ac_aux_dir/mkinstalldirs"; then
|
||||
mkdir_p='$(mkinstalldirs)'
|
||||
else
|
||||
mkdir_p='$(install_sh) -d'
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([mkdir_p])])
|
||||
|
||||
# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# AM_ENABLE_MULTILIB([MAKEFILE], [REL-TO-TOP-SRCDIR])
|
||||
# ---------------------------------------------------
|
||||
# Add --enable-multilib to configure.
|
||||
AC_DEFUN([AM_ENABLE_MULTILIB],
|
||||
[# Default to --enable-multilib
|
||||
AC_ARG_ENABLE(multilib,
|
||||
[ --enable-multilib build many library versions (default)],
|
||||
[case "$enableval" in
|
||||
yes) multilib=yes ;;
|
||||
no) multilib=no ;;
|
||||
*) AC_MSG_ERROR([bad value $enableval for multilib option]) ;;
|
||||
esac],
|
||||
[multilib=yes])
|
||||
|
||||
# We may get other options which we leave undocumented:
|
||||
# --with-target-subdir, --with-multisrctop, --with-multisubdir
|
||||
# See config-ml.in if you want the gory details.
|
||||
|
||||
if test "$srcdir" = "."; then
|
||||
if test "$with_target_subdir" != "."; then
|
||||
multi_basedir="$srcdir/$with_multisrctop../$2"
|
||||
else
|
||||
multi_basedir="$srcdir/$with_multisrctop$2"
|
||||
fi
|
||||
else
|
||||
multi_basedir="$srcdir/$2"
|
||||
fi
|
||||
AC_SUBST(multi_basedir)
|
||||
|
||||
AC_OUTPUT_COMMANDS([
|
||||
# Only add multilib support code if we just rebuilt the top-level
|
||||
# Makefile.
|
||||
case " $CONFIG_FILES " in
|
||||
*" ]m4_default([$1],Makefile)[ "*)
|
||||
ac_file=]m4_default([$1],Makefile)[ . ${multi_basedir}/config-ml.in
|
||||
;;
|
||||
esac],
|
||||
[
|
||||
srcdir="$srcdir"
|
||||
host="$host"
|
||||
target="$target"
|
||||
with_multisubdir="$with_multisubdir"
|
||||
with_multisrctop="$with_multisrctop"
|
||||
with_target_subdir="$with_target_subdir"
|
||||
ac_configure_args="${multilib_arg} ${ac_configure_args}"
|
||||
multi_basedir="$multi_basedir"
|
||||
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
|
||||
CC="$CC"])])dnl
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# _AM_MANGLE_OPTION(NAME)
|
||||
# -----------------------
|
||||
AC_DEFUN([_AM_MANGLE_OPTION],
|
||||
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
# _AM_SET_OPTION(NAME)
|
||||
# ------------------------------
|
||||
# Set option NAME. Presently that only means defining a flag for this option.
|
||||
AC_DEFUN([_AM_SET_OPTION],
|
||||
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
||||
|
||||
# _AM_SET_OPTIONS(OPTIONS)
|
||||
# ----------------------------------
|
||||
# OPTIONS is a space-separated list of Automake options.
|
||||
AC_DEFUN([_AM_SET_OPTIONS],
|
||||
[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
||||
|
||||
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
||||
# -------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
# AM_SANITY_CHECK
|
||||
# ---------------
|
||||
AC_DEFUN([AM_SANITY_CHECK],
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftest.file
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
|
||||
if test "$[*]" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftest.file`
|
||||
fi
|
||||
rm -f conftest.file
|
||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
||||
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "$[2]" = conftest.file
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_STRIP
|
||||
# ---------------------
|
||||
# One issue with vendor `install' (even GNU) is that you can't
|
||||
# specify the program used to strip binaries. This is especially
|
||||
# annoying in cross-compiling environments, where the build's strip
|
||||
# is unlikely to handle the host's binaries.
|
||||
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
||||
# always use install-sh in `make install-strip', and initialize
|
||||
# STRIPPROG with the value of the STRIP variable (set by the user).
|
||||
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
||||
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||
# Installed binaries are usually stripped using `strip' when the user
|
||||
# run `make install-strip'. However `strip' might not be the right
|
||||
# tool to use in cross-compilation environments, therefore Automake
|
||||
# will honor the `STRIP' environment variable to overrule this program.
|
||||
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
|
||||
if test "$cross_compiling" != no; then
|
||||
AC_CHECK_TOOL([STRIP], [strip], :)
|
||||
fi
|
||||
INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_PROG_TAR(FORMAT)
|
||||
# --------------------
|
||||
# Check how to create a tarball in format FORMAT.
|
||||
# FORMAT should be one of `v7', `ustar', or `pax'.
|
||||
#
|
||||
# Substitute a variable $(am__tar) that is a command
|
||||
# writing to stdout a FORMAT-tarball containing the directory
|
||||
# $tardir.
|
||||
# tardir=directory && $(am__tar) > result.tar
|
||||
#
|
||||
# Substitute a variable $(am__untar) that extract such
|
||||
# a tarball read from stdin.
|
||||
# $(am__untar) < result.tar
|
||||
AC_DEFUN([_AM_PROG_TAR],
|
||||
[# Always define AMTAR for backward compatibility.
|
||||
AM_MISSING_PROG([AMTAR], [tar])
|
||||
m4_if([$1], [v7],
|
||||
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
|
||||
[m4_case([$1], [ustar],, [pax],,
|
||||
[m4_fatal([Unknown tar format])])
|
||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||
# Loop over all known methods to create a tar archive until one works.
|
||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||
# Do not fold the above two line into one, because Tru64 sh and
|
||||
# Solaris sh will not grok spaces in the rhs of `-'.
|
||||
for _am_tool in $_am_tools
|
||||
do
|
||||
case $_am_tool in
|
||||
gnutar)
|
||||
for _am_tar in tar gnutar gtar;
|
||||
do
|
||||
AM_RUN_LOG([$_am_tar --version]) && break
|
||||
done
|
||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||
am__untar="$_am_tar -xf -"
|
||||
;;
|
||||
plaintar)
|
||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||
# ustar tarball either.
|
||||
(tar --version) >/dev/null 2>&1 && continue
|
||||
am__tar='tar chf - "$$tardir"'
|
||||
am__tar_='tar chf - "$tardir"'
|
||||
am__untar='tar xf -'
|
||||
;;
|
||||
pax)
|
||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||
am__untar='pax -r'
|
||||
;;
|
||||
cpio)
|
||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||
am__untar='cpio -i -H $1 -d'
|
||||
;;
|
||||
none)
|
||||
am__tar=false
|
||||
am__tar_=false
|
||||
am__untar=false
|
||||
;;
|
||||
esac
|
||||
|
||||
# If the value was cached, stop now. We just wanted to have am__tar
|
||||
# and am__untar set.
|
||||
test -n "${am_cv_prog_tar_$1}" && break
|
||||
|
||||
# tar/untar a dummy directory, and stop if the command works
|
||||
rm -rf conftest.dir
|
||||
mkdir conftest.dir
|
||||
echo GrepMe > conftest.dir/file
|
||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||
rm -rf conftest.dir
|
||||
if test -s conftest.tar; then
|
||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||
fi
|
||||
done
|
||||
rm -rf conftest.dir
|
||||
|
||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||
AC_SUBST([am__tar])
|
||||
AC_SUBST([am__untar])
|
||||
]) # _AM_PROG_TAR
|
||||
|
||||
m4_include([../config/depstand.m4])
|
||||
m4_include([../config/lead-dot.m4])
|
||||
m4_include([../libtool.m4])
|
5861
libgcc-math/configure
vendored
Executable file
5861
libgcc-math/configure
vendored
Executable file
File diff suppressed because it is too large
Load diff
148
libgcc-math/configure.ac
Normal file
148
libgcc-math/configure.ac
Normal file
|
@ -0,0 +1,148 @@
|
|||
# Process this file with autoconf to produce a configure script, like so:
|
||||
# aclocal && autoconf && autoheader && automake
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT(libgcc-math, 1.0)
|
||||
AC_CONFIG_SRCDIR(configure.ac)
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
||||
AM_INIT_AUTOMAKE
|
||||
|
||||
AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
|
||||
AC_ARG_ENABLE(version-specific-runtime-libs,
|
||||
[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
|
||||
[case "$enableval" in
|
||||
yes) version_specific_libs=yes ;;
|
||||
no) version_specific_libs=no ;;
|
||||
*) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
|
||||
esac],
|
||||
[version_specific_libs=no])
|
||||
AC_MSG_RESULT($version_specific_libs)
|
||||
|
||||
AM_MAINTAINER_MODE
|
||||
AC_EXEEXT
|
||||
|
||||
AM_ENABLE_MULTILIB(, ..)
|
||||
|
||||
target_alias=${target_alias-$host_alias}
|
||||
AC_SUBST(target_alias)
|
||||
|
||||
AC_LANG_C
|
||||
# The same as in boehm-gc and libstdc++. Have to borrow it from there.
|
||||
# We must force CC to /not/ be precious variables; otherwise
|
||||
# the wrong, non-multilib-adjusted value will be used in multilibs.
|
||||
# As a side effect, we have to subst CFLAGS ourselves.
|
||||
|
||||
m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
|
||||
m4_define([_AC_ARG_VAR_PRECIOUS],[])
|
||||
AC_PROG_CC
|
||||
m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
|
||||
|
||||
AC_SUBST(CFLAGS)
|
||||
|
||||
if test "x$GCC" != "xyes"; then
|
||||
AC_MSG_ERROR([libgcc-math must be built with GCC])
|
||||
fi
|
||||
AC_PROG_CPP
|
||||
AM_PROG_AS
|
||||
|
||||
AC_MSG_CHECKING([whether hidden visibility is supported])
|
||||
AC_TRY_COMPILE([
|
||||
void __attribute__((visibility ("hidden"))) bar (void) {}],,
|
||||
[gccm_hidden=yes],[gccm_hidden=no])
|
||||
AC_MSG_RESULT($gccm_hidden)
|
||||
if test x$gccm_hidden = xyes; then
|
||||
AC_DEFINE([HAVE_HIDDEN_VISIBILITY],[1],[__attribute__((visibility ("hidden"))) supported])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([whether symbol versioning is supported])
|
||||
cat > conftest.map <<EOF
|
||||
FOO_1.0 {
|
||||
global: *foo*; bar; local: *;
|
||||
};
|
||||
EOF
|
||||
save_LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
|
||||
AC_TRY_LINK([int foo;],[],[gccm_use_symver=yes],[gccm_use_symver=no])
|
||||
LDFLAGS="$save_LDFLAGS"
|
||||
AC_MSG_RESULT($gccm_use_symver)
|
||||
AM_CONDITIONAL(LIBGCCM_USE_SYMVER, [test "x$gccm_use_symver" = xyes])
|
||||
|
||||
AC_MSG_CHECKING([whether we are a 32bit target])
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="-O2"
|
||||
AC_TRY_LINK(,[
|
||||
if (sizeof(int) == 4 && sizeof(long) == 4 && sizeof(void *) == 4)
|
||||
;
|
||||
else
|
||||
undefined_function ();
|
||||
],
|
||||
target_ilp32=yes,
|
||||
target_ilp32=no)
|
||||
CFLAGS="$save_CFLAGS"
|
||||
AM_CONDITIONAL(TARGET_ILP32, [test "x$target_ilp32" = xyes])
|
||||
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
AC_SUBST(enable_shared)
|
||||
AC_SUBST(enable_static)
|
||||
|
||||
# Calculate toolexeclibdir
|
||||
# Also toolexecdir, though it's only used in toolexeclibdir
|
||||
case ${version_specific_libs} in
|
||||
yes)
|
||||
# Need the gcc compiler version to know where to install libraries
|
||||
# and header files if --enable-version-specific-runtime-libs option
|
||||
# is selected.
|
||||
toolexecdir='$(libdir)/gcc/$(target_alias)'
|
||||
toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
|
||||
;;
|
||||
no)
|
||||
if test -n "$with_cross_host" &&
|
||||
test x"$with_cross_host" != x"no"; then
|
||||
# Install a library built with a cross compiler in tooldir, not libdir.
|
||||
toolexecdir='$(exec_prefix)/$(target_alias)'
|
||||
toolexeclibdir='$(toolexecdir)/lib'
|
||||
else
|
||||
toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
|
||||
toolexeclibdir='$(libdir)'
|
||||
fi
|
||||
multi_os_directory=`$CC -print-multi-os-directory`
|
||||
case $multi_os_directory in
|
||||
.) ;; # Avoid trailing /.
|
||||
*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(toolexecdir)
|
||||
AC_SUBST(toolexeclibdir)
|
||||
|
||||
if test ${multilib} = yes; then
|
||||
multilib_arg="--enable-multilib"
|
||||
else
|
||||
multilib_arg=
|
||||
fi
|
||||
|
||||
|
||||
# Now check which parts we include in the library.
|
||||
|
||||
arch_subdirs=
|
||||
case "${target}" in
|
||||
i?86-* | x86_64-* )
|
||||
# Handle multilib cases
|
||||
if test "x$target_ilp32" = xyes; then
|
||||
arch_subdirs="i386"
|
||||
arch_libraries="i386/libsse2.la"
|
||||
arch_maps="i386/sse2.map"
|
||||
fi ;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(arch_subdirs)
|
||||
AC_SUBST(arch_libraries)
|
||||
AC_SUBST(arch_maps)
|
||||
AM_CONDITIONAL(BUILD_LIBGCC_MATH, [test "x$arch_subdirs" != x])
|
||||
|
||||
|
||||
AC_CONFIG_FILES([Makefile i386/Makefile])
|
||||
AC_OUTPUT
|
103
libgcc-math/dbl-64/MathLib.h
Normal file
103
libgcc-math/dbl-64/MathLib.h
Normal file
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/********************************************************************/
|
||||
/* Ultimate math functions. Each function computes the exact */
|
||||
/* theoretical value of its argument rounded to nearest or even. */
|
||||
/* */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round nearest mode of IEEE 754 standard. */
|
||||
/********************************************************************/
|
||||
|
||||
#ifndef UMATH_LIB
|
||||
#define UMATH_LIB
|
||||
/********************************************************************/
|
||||
/* Function changes the precision mode to IEEE 754 double precision */
|
||||
/* and the rounding mode to nearest or even. */
|
||||
/* It returns the original status of these modes. */
|
||||
/* See further explanations of usage in DPChange.h */
|
||||
/********************************************************************/
|
||||
unsigned short Init_Lib(void);
|
||||
|
||||
/********************************************************************/
|
||||
/* Function that changes the precision and rounding modes to the */
|
||||
/* specified by the argument received. See further explanations in */
|
||||
/* DPChange.h */
|
||||
/********************************************************************/
|
||||
void Exit_Lib(unsigned short);
|
||||
|
||||
|
||||
/* The asin() function calculates the arc sine of its argument. */
|
||||
/* The function returns the arc sine in radians */
|
||||
/* (between -PI/2 and PI/2). */
|
||||
/* If the argument is greater than 1 or less than -1 it returns */
|
||||
/* a NaN. */
|
||||
double uasin(double );
|
||||
|
||||
|
||||
/* The acos() function calculates the arc cosine of its argument. */
|
||||
/* The function returns the arc cosine in radians */
|
||||
/* (between -PI/2 and PI/2). */
|
||||
/* If the argument is greater than 1 or less than -1 it returns */
|
||||
/* a NaN. */
|
||||
double uacos(double );
|
||||
|
||||
/* The atan() function calculates the arctanget of its argument. */
|
||||
/* The function returns the arc tangent in radians */
|
||||
/* (between -PI/2 and PI/2). */
|
||||
double uatan(double );
|
||||
|
||||
|
||||
/* The uatan2() function calculates the arc tangent of the two arguments x */
|
||||
/* and y (x is the right argument and y is the left one).The signs of both */
|
||||
/* arguments are used to determine the quadrant of the result. */
|
||||
/* The function returns the result in radians, which is between -PI and PI */
|
||||
double uatan2(double ,double );
|
||||
|
||||
/* Compute log(x). The base of log is e (natural logarithm) */
|
||||
double ulog(double );
|
||||
|
||||
/* Compute e raised to the power of argument x. */
|
||||
double uexp(double );
|
||||
|
||||
/* Compute sin(x). The argument x is assumed to be given in radians.*/
|
||||
double usin(double );
|
||||
|
||||
/* Compute cos(x). The argument x is assumed to be given in radians.*/
|
||||
double ucos(double );
|
||||
|
||||
/* Compute tan(x). The argument x is assumed to be given in radians.*/
|
||||
double utan(double );
|
||||
|
||||
/* Compute the square root of non-negative argument x. */
|
||||
/* If x is negative the returned value is NaN. */
|
||||
double usqrt(double );
|
||||
|
||||
/* Compute x raised to the power of y, where x is the left argument */
|
||||
/* and y is the right argument. The function returns a NaN if x<0. */
|
||||
/* If x equals zero it returns -inf */
|
||||
double upow(double , double );
|
||||
|
||||
/* Computing x mod y, where x is the left argument and y is the */
|
||||
/* right one. */
|
||||
double uremainder(double , double );
|
||||
|
||||
|
||||
#endif
|
5169
libgcc-math/dbl-64/asincos.tbl
Normal file
5169
libgcc-math/dbl-64/asincos.tbl
Normal file
File diff suppressed because it is too large
Load diff
167
libgcc-math/dbl-64/atnat.h
Normal file
167
libgcc-math/dbl-64/atnat.h
Normal file
|
@ -0,0 +1,167 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: atnat.h */
|
||||
/* */
|
||||
/* */
|
||||
/* common data and variables definition for BIG or LITTLE ENDIAN */
|
||||
/************************************************************************/
|
||||
#ifndef ATNAT_H
|
||||
#define ATNAT_H
|
||||
|
||||
#define M 4
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const number
|
||||
/* polynomial I */
|
||||
/**/ d3 = {{0xbfd55555, 0x55555555} }, /* -0.333... */
|
||||
/**/ d5 = {{0x3fc99999, 0x999997fd} }, /* 0.199... */
|
||||
/**/ d7 = {{0xbfc24924, 0x923f7603} }, /* -0.142... */
|
||||
/**/ d9 = {{0x3fbc71c6, 0xe5129a3b} }, /* 0.111... */
|
||||
/**/ d11 = {{0xbfb74580, 0x22b13c25} }, /* -0.090... */
|
||||
/**/ d13 = {{0x3fb375f0, 0x8b31cbce} }, /* 0.076... */
|
||||
/* polynomial II */
|
||||
/**/ f3 = {{0xbfd55555, 0x55555555} }, /* -1/3 */
|
||||
/**/ ff3 = {{0xbc755555, 0x55555555} }, /* -1/3-f3 */
|
||||
/**/ f5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */
|
||||
/**/ ff5 = {{0xbc699999, 0x9999999a} }, /* 1/5-f5 */
|
||||
/**/ f7 = {{0xbfc24924, 0x92492492} }, /* -1/7 */
|
||||
/**/ ff7 = {{0xbc624924, 0x92492492} }, /* -1/7-f7 */
|
||||
/**/ f9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */
|
||||
/**/ ff9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-f9 */
|
||||
/**/ f11 = {{0xbfb745d1, 0x745d1746} }, /* -1/11 */
|
||||
/**/ f13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */
|
||||
/**/ f15 = {{0xbfb11111, 0x11111111} }, /* -1/15 */
|
||||
/**/ f17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */
|
||||
/**/ f19 = {{0xbfaaf286, 0xbca1af28} }, /* -1/19 */
|
||||
/* constants */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
/**/ a = {{0x3e4bb67a, 0x00000000} }, /* 1.290e-8 */
|
||||
/**/ b = {{0x3fb00000, 0x00000000} }, /* 1/16 */
|
||||
/**/ c = {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
/**/ d = {{0x40300000, 0x00000000} }, /* 16 */
|
||||
/**/ e = {{0x43349ff2, 0x00000000} }, /* 5.805e15 */
|
||||
/**/ hpi = {{0x3ff921fb, 0x54442d18} }, /* pi/2 */
|
||||
/**/ mhpi = {{0xbff921fb, 0x54442d18} }, /* -pi/2 */
|
||||
/**/ hpi1 = {{0x3c91a626, 0x33145c07} }, /* pi/2-hpi */
|
||||
/**/ u1 = {{0x3c2d3382, 0x00000000} }, /* 7.915e-19 */
|
||||
/**/ u21 = {{0x3c6dffc0, 0x00000000} }, /* 1.301e-17 */
|
||||
/**/ u22 = {{0x3c527bd0, 0x00000000} }, /* 4.008e-18 */
|
||||
/**/ u23 = {{0x3c3cd057, 0x00000000} }, /* 1.562e-18 */
|
||||
/**/ u24 = {{0x3c329cdf, 0x00000000} }, /* 1.009e-18 */
|
||||
/**/ u31 = {{0x3c3a1edf, 0x00000000} }, /* 1.416e-18 */
|
||||
/**/ u32 = {{0x3c33f0e1, 0x00000000} }, /* 1.081e-18 */
|
||||
/**/ u4 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
|
||||
/**/ u5 = {{0x3aaef2d1, 0x00000000} }, /* 5e-26 */
|
||||
/**/ u6 = {{0x3a98c56d, 0x00000000} }, /* 2.001e-26 */
|
||||
/**/ u7 = {{0x3a9375de, 0x00000000} }, /* 1.572e-26 */
|
||||
/**/ u8 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */
|
||||
/**/ u9[M] ={{{0x38c1aa5b, 0x00000000} }, /* 2.658e-35 */
|
||||
/**/ {{0x35c1aa4d, 0x00000000} }, /* 9.443e-50 */
|
||||
/**/ {{0x32c1aa88, 0x00000000} }, /* 3.355e-64 */
|
||||
/**/ {{0x11c1aa56, 0x00000000} }},/* 3.818e-223 */
|
||||
/**/ two8 = {{0x40700000, 0x00000000} }, /* 2**8=256 */
|
||||
/**/ two52 = {{0x43300000, 0x00000000} }; /* 2**52 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const number
|
||||
/* polynomial I */
|
||||
/**/ d3 = {{0x55555555, 0xbfd55555} }, /* -0.333... */
|
||||
/**/ d5 = {{0x999997fd, 0x3fc99999} }, /* 0.199... */
|
||||
/**/ d7 = {{0x923f7603, 0xbfc24924} }, /* -0.142... */
|
||||
/**/ d9 = {{0xe5129a3b, 0x3fbc71c6} }, /* 0.111... */
|
||||
/**/ d11 = {{0x22b13c25, 0xbfb74580} }, /* -0.090... */
|
||||
/**/ d13 = {{0x8b31cbce, 0x3fb375f0} }, /* 0.076... */
|
||||
/* polynomial II */
|
||||
/**/ f3 = {{0x55555555, 0xbfd55555} }, /* -1/3 */
|
||||
/**/ ff3 = {{0x55555555, 0xbc755555} }, /* -1/3-f3 */
|
||||
/**/ f5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */
|
||||
/**/ ff5 = {{0x9999999a, 0xbc699999} }, /* 1/5-f5 */
|
||||
/**/ f7 = {{0x92492492, 0xbfc24924} }, /* -1/7 */
|
||||
/**/ ff7 = {{0x92492492, 0xbc624924} }, /* -1/7-f7 */
|
||||
/**/ f9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */
|
||||
/**/ ff9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-f9 */
|
||||
/**/ f11 = {{0x745d1746, 0xbfb745d1} }, /* -1/11 */
|
||||
/**/ f13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */
|
||||
/**/ f15 = {{0x11111111, 0xbfb11111} }, /* -1/15 */
|
||||
/**/ f17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */
|
||||
/**/ f19 = {{0xbca1af28, 0xbfaaf286} }, /* -1/19 */
|
||||
/* constants */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
/**/ a = {{0x00000000, 0x3e4bb67a} }, /* 1.290e-8 */
|
||||
/**/ b = {{0x00000000, 0x3fb00000} }, /* 1/16 */
|
||||
/**/ c = {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
/**/ d = {{0x00000000, 0x40300000} }, /* 16 */
|
||||
/**/ e = {{0x00000000, 0x43349ff2} }, /* 5.805e15 */
|
||||
/**/ hpi = {{0x54442d18, 0x3ff921fb} }, /* pi/2 */
|
||||
/**/ mhpi = {{0x54442d18, 0xbff921fb} }, /* -pi/2 */
|
||||
/**/ hpi1 = {{0x33145c07, 0x3c91a626} }, /* pi/2-hpi */
|
||||
/**/ u1 = {{0x00000000, 0x3c2d3382} }, /* 7.915e-19 */
|
||||
/**/ u21 = {{0x00000000, 0x3c6dffc0} }, /* 1.301e-17 */
|
||||
/**/ u22 = {{0x00000000, 0x3c527bd0} }, /* 4.008e-18 */
|
||||
/**/ u23 = {{0x00000000, 0x3c3cd057} }, /* 1.562e-18 */
|
||||
/**/ u24 = {{0x00000000, 0x3c329cdf} }, /* 1.009e-18 */
|
||||
/**/ u31 = {{0x00000000, 0x3c3a1edf} }, /* 1.416e-18 */
|
||||
/**/ u32 = {{0x00000000, 0x3c33f0e1} }, /* 1.081e-18 */
|
||||
/**/ u4 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
|
||||
/**/ u5 = {{0x00000000, 0x3aaef2d1} }, /* 5e-26 */
|
||||
/**/ u6 = {{0x00000000, 0x3a98c56d} }, /* 2.001e-26 */
|
||||
/**/ u7 = {{0x00000000, 0x3a9375de} }, /* 1.572e-26 */
|
||||
/**/ u8 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */
|
||||
/**/ u9[M] ={{{0x00000000, 0x38c1aa5b} }, /* 2.658e-35 */
|
||||
/**/ {{0x00000000, 0x35c1aa4d} }, /* 9.443e-50 */
|
||||
/**/ {{0x00000000, 0x32c1aa88} }, /* 3.355e-64 */
|
||||
/**/ {{0x00000000, 0x11c1aa56} }},/* 3.818e-223 */
|
||||
/**/ two8 = {{0x00000000, 0x40700000} }, /* 2**8=256 */
|
||||
/**/ two52 = {{0x00000000, 0x43300000} }; /* 2**52 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define ZERO zero.d
|
||||
#define ONE one.d
|
||||
#define A a.d
|
||||
#define B b.d
|
||||
#define C c.d
|
||||
#define D d.d
|
||||
#define E e.d
|
||||
#define HPI hpi.d
|
||||
#define MHPI mhpi.d
|
||||
#define HPI1 hpi1.d
|
||||
#define U1 u1.d
|
||||
#define U21 u21.d
|
||||
#define U22 u22.d
|
||||
#define U23 u23.d
|
||||
#define U24 u24.d
|
||||
#define U31 u31.d
|
||||
#define U32 u32.d
|
||||
#define U4 u4.d
|
||||
#define U5 u5.d
|
||||
#define U6 u6.d
|
||||
#define U7 u7.d
|
||||
#define U8 u8.d
|
||||
#define TWO8 two8.d
|
||||
#define TWO52 two52.d
|
||||
|
||||
#endif
|
185
libgcc-math/dbl-64/atnat2.h
Normal file
185
libgcc-math/dbl-64/atnat2.h
Normal file
|
@ -0,0 +1,185 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: atnat2.h */
|
||||
/* */
|
||||
/* */
|
||||
/* common data and variables definition for BIG or LITTLE ENDIAN */
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
|
||||
#ifndef ATNAT2_H
|
||||
#define ATNAT2_H
|
||||
|
||||
|
||||
#define MM 5
|
||||
#ifdef BIG_ENDI
|
||||
|
||||
static const number
|
||||
/* polynomial I */
|
||||
/**/ d3 = {{0xbfd55555, 0x55555555} }, /* -0.333... */
|
||||
/**/ d5 = {{0x3fc99999, 0x999997fd} }, /* 0.199... */
|
||||
/**/ d7 = {{0xbfc24924, 0x923f7603} }, /* -0.142... */
|
||||
/**/ d9 = {{0x3fbc71c6, 0xe5129a3b} }, /* 0.111... */
|
||||
/**/ d11 = {{0xbfb74580, 0x22b13c25} }, /* -0.090... */
|
||||
/**/ d13 = {{0x3fb375f0, 0x8b31cbce} }, /* 0.076... */
|
||||
/* polynomial II */
|
||||
/**/ f3 = {{0xbfd55555, 0x55555555} }, /* -1/3 */
|
||||
/**/ ff3 = {{0xbc755555, 0x55555555} }, /* -1/3-f3 */
|
||||
/**/ f5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */
|
||||
/**/ ff5 = {{0xbc699999, 0x9999999a} }, /* 1/5-f5 */
|
||||
/**/ f7 = {{0xbfc24924, 0x92492492} }, /* -1/7 */
|
||||
/**/ ff7 = {{0xbc624924, 0x92492492} }, /* -1/7-f7 */
|
||||
/**/ f9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */
|
||||
/**/ ff9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-f9 */
|
||||
/**/ f11 = {{0xbfb745d1, 0x745d1746} }, /* -1/11 */
|
||||
/**/ f13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */
|
||||
/**/ f15 = {{0xbfb11111, 0x11111111} }, /* -1/15 */
|
||||
/**/ f17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */
|
||||
/**/ f19 = {{0xbfaaf286, 0xbca1af28} }, /* -1/19 */
|
||||
/* constants */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ mzero = {{0x80000000, 0x00000000} }, /* -0 */
|
||||
/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
/**/ inv16 = {{0x3fb00000, 0x00000000} }, /* 1/16 */
|
||||
/**/ opi = {{0x400921fb, 0x54442d18} }, /* pi */
|
||||
/**/ opi1 = {{0x3ca1a626, 0x33145c07} }, /* pi-opi */
|
||||
/**/ mopi = {{0xc00921fb, 0x54442d18} }, /* -pi */
|
||||
/**/ hpi = {{0x3ff921fb, 0x54442d18} }, /* pi/2 */
|
||||
/**/ hpi1 = {{0x3c91a626, 0x33145c07} }, /* pi/2-hpi */
|
||||
/**/ mhpi = {{0xbff921fb, 0x54442d18} }, /* -pi/2 */
|
||||
/**/ qpi = {{0x3fe921fb, 0x54442d18} }, /* pi/4 */
|
||||
/**/ qpi1 = {{0x3c81a626, 0x33145c07} }, /* pi/4-qpi */
|
||||
/**/ mqpi = {{0xbfe921fb, 0x54442d18} }, /* -pi/4 */
|
||||
/**/ tqpi = {{0x4002d97c, 0x7f3321d2} }, /* 3pi/4 */
|
||||
/**/ tqpi1 = {{0x3c9a7939, 0x4c9e8a0a} }, /* 3pi/4-tqpi */
|
||||
/**/ mtqpi = {{0xc002d97c, 0x7f3321d2} }, /* -3pi/4 */
|
||||
/**/ u1 = {{0x3c314c2a, 0x00000000} }, /* 9.377e-19 */
|
||||
/**/ u2 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
|
||||
/**/ u3 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
|
||||
/**/ u4 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
|
||||
/**/ u5 = {{0x3aaef2d1, 0x00000000} }, /* 5e-26 */
|
||||
/**/ u6 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */
|
||||
/**/ u7 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */
|
||||
/**/ u8 = {{0x3a6eeb36, 0x00000000} }, /* 3.122e-27 */
|
||||
/**/ u91 = {{0x3c6dffc0, 0x00000000} }, /* 1.301e-17 */
|
||||
/**/ u92 = {{0x3c527bd0, 0x00000000} }, /* 4.008e-18 */
|
||||
/**/ u93 = {{0x3c3cd057, 0x00000000} }, /* 1.562e-18 */
|
||||
/**/ u94 = {{0x3c329cdf, 0x00000000} }, /* 1.009e-18 */
|
||||
/**/ ua1 = {{0x3c3a1edf, 0x00000000} }, /* 1.416e-18 */
|
||||
/**/ ua2 = {{0x3c33f0e1, 0x00000000} }, /* 1.081e-18 */
|
||||
/**/ ub = {{0x3a98c56d, 0x00000000} }, /* 2.001e-26 */
|
||||
/**/ uc = {{0x3a9375de, 0x00000000} }, /* 1.572e-26 */
|
||||
/**/ ud[MM] ={{{0x38c6eddf, 0x00000000} }, /* 3.450e-35 */
|
||||
/**/ {{0x35c6ef60, 0x00000000} }, /* 1.226e-49 */
|
||||
/**/ {{0x32c6ed2f, 0x00000000} }, /* 4.354e-64 */
|
||||
/**/ {{0x23c6eee8, 0x00000000} }, /* 2.465e-136 */
|
||||
/**/ {{0x11c6ed16, 0x00000000} }},/* 4.955e-223 */
|
||||
/**/ ue = {{0x38900e9d, 0x00000000} }, /* 3.02e-36 */
|
||||
/**/ two8 = {{0x40700000, 0x00000000} }, /* 2**8=256 */
|
||||
/**/ two52 = {{0x43300000, 0x00000000} }, /* 2**52 */
|
||||
/**/ two500 = {{0x5f300000, 0x00000000} }, /* 2**500 */
|
||||
/**/ twom500 = {{0x20b00000, 0x00000000} }, /* 2**(-500) */
|
||||
/**/ twom1022 = {{0x00100000, 0x00000000} }; /* 2**(-1022) */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
|
||||
static const number
|
||||
/* polynomial I */
|
||||
/**/ d3 = {{0x55555555, 0xbfd55555} }, /* -0.333... */
|
||||
/**/ d5 = {{0x999997fd, 0x3fc99999} }, /* 0.199... */
|
||||
/**/ d7 = {{0x923f7603, 0xbfc24924} }, /* -0.142... */
|
||||
/**/ d9 = {{0xe5129a3b, 0x3fbc71c6} }, /* 0.111... */
|
||||
/**/ d11 = {{0x22b13c25, 0xbfb74580} }, /* -0.090... */
|
||||
/**/ d13 = {{0x8b31cbce, 0x3fb375f0} }, /* 0.076... */
|
||||
/* polynomial II */
|
||||
/**/ f3 = {{0x55555555, 0xbfd55555} }, /* -1/3 */
|
||||
/**/ ff3 = {{0x55555555, 0xbc755555} }, /* -1/3-f3 */
|
||||
/**/ f5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */
|
||||
/**/ ff5 = {{0x9999999a, 0xbc699999} }, /* 1/5-f5 */
|
||||
/**/ f7 = {{0x92492492, 0xbfc24924} }, /* -1/7 */
|
||||
/**/ ff7 = {{0x92492492, 0xbc624924} }, /* -1/7-f7 */
|
||||
/**/ f9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */
|
||||
/**/ ff9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-f9 */
|
||||
/**/ f11 = {{0x745d1746, 0xbfb745d1} }, /* -1/11 */
|
||||
/**/ f13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */
|
||||
/**/ f15 = {{0x11111111, 0xbfb11111} }, /* -1/15 */
|
||||
/**/ f17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */
|
||||
/**/ f19 = {{0xbca1af28, 0xbfaaf286} }, /* -1/19 */
|
||||
/* constants */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ mzero = {{0x00000000, 0x80000000} }, /* -0 */
|
||||
/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
/**/ inv16 = {{0x00000000, 0x3fb00000} }, /* 1/16 */
|
||||
/**/ opi = {{0x54442d18, 0x400921fb} }, /* pi */
|
||||
/**/ opi1 = {{0x33145c07, 0x3ca1a626} }, /* pi-opi */
|
||||
/**/ mopi = {{0x54442d18, 0xc00921fb} }, /* -pi */
|
||||
/**/ hpi = {{0x54442d18, 0x3ff921fb} }, /* pi/2 */
|
||||
/**/ hpi1 = {{0x33145c07, 0x3c91a626} }, /* pi/2-hpi */
|
||||
/**/ mhpi = {{0x54442d18, 0xbff921fb} }, /* -pi/2 */
|
||||
/**/ qpi = {{0x54442d18, 0x3fe921fb} }, /* pi/4 */
|
||||
/**/ qpi1 = {{0x33145c07, 0x3c81a626} }, /* pi/4-qpi */
|
||||
/**/ mqpi = {{0x54442d18, 0xbfe921fb} }, /* -pi/4 */
|
||||
/**/ tqpi = {{0x7f3321d2, 0x4002d97c} }, /* 3pi/4 */
|
||||
/**/ tqpi1 = {{0x4c9e8a0a, 0x3c9a7939} }, /* 3pi/4-tqpi */
|
||||
/**/ mtqpi = {{0x7f3321d2, 0xc002d97c} }, /* -3pi/4 */
|
||||
/**/ u1 = {{0x00000000, 0x3c314c2a} }, /* 9.377e-19 */
|
||||
/**/ u2 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
|
||||
/**/ u3 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
|
||||
/**/ u4 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
|
||||
/**/ u5 = {{0x00000000, 0x3aaef2d1} }, /* 5e-26 */
|
||||
/**/ u6 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */
|
||||
/**/ u7 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */
|
||||
/**/ u8 = {{0x00000000, 0x3a6eeb36} }, /* 3.122e-27 */
|
||||
/**/ u91 = {{0x00000000, 0x3c6dffc0} }, /* 1.301e-17 */
|
||||
/**/ u92 = {{0x00000000, 0x3c527bd0} }, /* 4.008e-18 */
|
||||
/**/ u93 = {{0x00000000, 0x3c3cd057} }, /* 1.562e-18 */
|
||||
/**/ u94 = {{0x00000000, 0x3c329cdf} }, /* 1.009e-18 */
|
||||
/**/ ua1 = {{0x00000000, 0x3c3a1edf} }, /* 1.416e-18 */
|
||||
/**/ ua2 = {{0x00000000, 0x3c33f0e1} }, /* 1.081e-18 */
|
||||
/**/ ub = {{0x00000000, 0x3a98c56d} }, /* 2.001e-26 */
|
||||
/**/ uc = {{0x00000000, 0x3a9375de} }, /* 1.572e-26 */
|
||||
/**/ ud[MM] ={{{0x00000000, 0x38c6eddf} }, /* 3.450e-35 */
|
||||
/**/ {{0x00000000, 0x35c6ef60} }, /* 1.226e-49 */
|
||||
/**/ {{0x00000000, 0x32c6ed2f} }, /* 4.354e-64 */
|
||||
/**/ {{0x00000000, 0x23c6eee8} }, /* 2.465e-136 */
|
||||
/**/ {{0x00000000, 0x11c6ed16} }},/* 4.955e-223 */
|
||||
/**/ ue = {{0x00000000, 0x38900e9d} }, /* 3.02e-36 */
|
||||
/**/ two8 = {{0x00000000, 0x40700000} }, /* 2**8=256 */
|
||||
/**/ two52 = {{0x00000000, 0x43300000} }, /* 2**52 */
|
||||
/**/ two500 = {{0x00000000, 0x5f300000} }, /* 2**500 */
|
||||
/**/ twom500 = {{0x00000000, 0x20b00000} }, /* 2**(-500) */
|
||||
/**/ twom1022 = {{0x00000000, 0x00100000} }; /* 2**(-1022) */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define ZERO zero.d
|
||||
#define MZERO mzero.d
|
||||
#define ONE one.d
|
||||
#define TWO8 two8.d
|
||||
#define TWO52 two52.d
|
||||
#define TWOM1022 twom1022.d
|
||||
|
||||
#endif
|
144
libgcc-math/dbl-64/branred.c
Normal file
144
libgcc-math/dbl-64/branred.c
Normal file
|
@ -0,0 +1,144 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/*******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME: branred.c */
|
||||
/* */
|
||||
/* FUNCTIONS: branred */
|
||||
/* */
|
||||
/* FILES NEEDED: branred.h mydefs.h endian.h mpa.h */
|
||||
/* mha.c */
|
||||
/* */
|
||||
/* Routine branred() performs range reduction of a double number */
|
||||
/* x into Double length number a+aa,such that */
|
||||
/* x=n*pi/2+(a+aa), abs(a+aa)<pi/4, n=0,+-1,+-2,.... */
|
||||
/* Routine returns the integer (n mod 4) of the above description */
|
||||
/* of x. */
|
||||
/*******************************************************************/
|
||||
|
||||
#include "endian.h"
|
||||
#include "mydefs.h"
|
||||
#include "branred.h"
|
||||
#include "math_private.h"
|
||||
|
||||
|
||||
/*******************************************************************/
|
||||
/* Routine branred() performs range reduction of a double number */
|
||||
/* x into Double length number a+aa,such that */
|
||||
/* x=n*pi/2+(a+aa), abs(a+aa)<pi/4, n=0,+-1,+-2,.... */
|
||||
/* Routine return integer (n mod 4) */
|
||||
/*******************************************************************/
|
||||
int __branred(double x, double *a, double *aa)
|
||||
{
|
||||
int i,k;
|
||||
#if 0
|
||||
int n;
|
||||
#endif
|
||||
mynumber u,gor;
|
||||
#if 0
|
||||
mynumber v;
|
||||
#endif
|
||||
double r[6],s,t,sum,b,bb,sum1,sum2,b1,bb1,b2,bb2,x1,x2,t1,t2;
|
||||
|
||||
x*=tm600.x;
|
||||
t=x*split; /* split x to two numbers */
|
||||
x1=t-(t-x);
|
||||
x2=x-x1;
|
||||
sum=0;
|
||||
u.x = x1;
|
||||
k = (u.i[HIGH_HALF]>>20)&2047;
|
||||
k = (k-450)/24;
|
||||
if (k<0)
|
||||
k=0;
|
||||
gor.x = t576.x;
|
||||
gor.i[HIGH_HALF] -= ((k*24)<<20);
|
||||
for (i=0;i<6;i++)
|
||||
{ r[i] = x1*toverp[k+i]*gor.x; gor.x *= tm24.x; }
|
||||
for (i=0;i<3;i++) {
|
||||
s=(r[i]+big.x)-big.x;
|
||||
sum+=s;
|
||||
r[i]-=s;
|
||||
}
|
||||
t=0;
|
||||
for (i=0;i<6;i++)
|
||||
t+=r[5-i];
|
||||
bb=(((((r[0]-t)+r[1])+r[2])+r[3])+r[4])+r[5];
|
||||
s=(t+big.x)-big.x;
|
||||
sum+=s;
|
||||
t-=s;
|
||||
b=t+bb;
|
||||
bb=(t-b)+bb;
|
||||
s=(sum+big1.x)-big1.x;
|
||||
sum-=s;
|
||||
b1=b;
|
||||
bb1=bb;
|
||||
sum1=sum;
|
||||
sum=0;
|
||||
|
||||
u.x = x2;
|
||||
k = (u.i[HIGH_HALF]>>20)&2047;
|
||||
k = (k-450)/24;
|
||||
if (k<0)
|
||||
k=0;
|
||||
gor.x = t576.x;
|
||||
gor.i[HIGH_HALF] -= ((k*24)<<20);
|
||||
for (i=0;i<6;i++)
|
||||
{ r[i] = x2*toverp[k+i]*gor.x; gor.x *= tm24.x; }
|
||||
for (i=0;i<3;i++) {
|
||||
s=(r[i]+big.x)-big.x;
|
||||
sum+=s;
|
||||
r[i]-=s;
|
||||
}
|
||||
t=0;
|
||||
for (i=0;i<6;i++)
|
||||
t+=r[5-i];
|
||||
bb=(((((r[0]-t)+r[1])+r[2])+r[3])+r[4])+r[5];
|
||||
s=(t+big.x)-big.x;
|
||||
sum+=s;
|
||||
t-=s;
|
||||
b=t+bb;
|
||||
bb=(t-b)+bb;
|
||||
s=(sum+big1.x)-big1.x;
|
||||
sum-=s;
|
||||
|
||||
b2=b;
|
||||
bb2=bb;
|
||||
sum2=sum;
|
||||
|
||||
sum=sum1+sum2;
|
||||
b=b1+b2;
|
||||
bb = (ABS(b1)>ABS(b2))? (b1-b)+b2 : (b2-b)+b1;
|
||||
if (b > 0.5)
|
||||
{b-=1.0; sum+=1.0;}
|
||||
else if (b < -0.5)
|
||||
{b+=1.0; sum-=1.0;}
|
||||
s=b+(bb+bb1+bb2);
|
||||
t=((b-s)+bb)+(bb1+bb2);
|
||||
b=s*split;
|
||||
t1=b-(b-s);
|
||||
t2=s-t1;
|
||||
b=s*hp0.x;
|
||||
bb=(((t1*mp1.x-b)+t1*mp2.x)+t2*mp1.x)+(t2*mp2.x+s*hp1.x+t*hp0.x);
|
||||
s=b+bb;
|
||||
t=(b-s)+bb;
|
||||
*a=s;
|
||||
*aa=t;
|
||||
return ((int) sum)&3; /* return quater of unit circle */
|
||||
}
|
80
libgcc-math/dbl-64/branred.h
Normal file
80
libgcc-math/dbl-64/branred.h
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: branred.h */
|
||||
/* */
|
||||
/* */
|
||||
/* common data and variables definition for BIG or LITTLE ENDIAN */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef BRANRED_H
|
||||
#define BRANRED_H
|
||||
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const mynumber
|
||||
|
||||
/**/ t576 = {{0x63f00000, 0x00000000}}, /* 2 ^ 576 */
|
||||
/**/ tm600 = {{0x1a700000, 0x00000000}}, /* 2 ^- 600 */
|
||||
/**/ tm24 = {{0x3e700000, 0x00000000}}, /* 2 ^- 24 */
|
||||
/**/ big = {{0x43380000, 0x00000000}}, /* 6755399441055744 */
|
||||
/**/ big1 = {{0x43580000, 0x00000000}}, /* 27021597764222976 */
|
||||
/**/ hp0 = {{0x3FF921FB, 0x54442D18}} ,/* 1.5707963267948966 */
|
||||
/**/ hp1 = {{0x3C91A626, 0x33145C07}} ,/* 6.123233995736766e-17 */
|
||||
/**/ mp1 = {{0x3FF921FB, 0x58000000}}, /* 1.5707963407039642 */
|
||||
/**/ mp2 = {{0xBE4DDE97, 0x40000000}}; /*-1.3909067675399456e-08 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const mynumber
|
||||
|
||||
/**/ t576 = {{0x00000000, 0x63f00000}}, /* 2 ^ 576 */
|
||||
/**/ tm600 = {{0x00000000, 0x1a700000}}, /* 2 ^- 600 */
|
||||
/**/ tm24 = {{0x00000000, 0x3e700000}}, /* 2 ^- 24 */
|
||||
/**/ big = {{0x00000000, 0x43380000}}, /* 6755399441055744 */
|
||||
/**/ big1 = {{0x00000000, 0x43580000}}, /* 27021597764222976 */
|
||||
/**/ hp0 = {{0x54442D18, 0x3FF921FB}}, /* 1.5707963267948966 */
|
||||
/**/ hp1 = {{0x33145C07, 0x3C91A626}}, /* 6.123233995736766e-17 */
|
||||
/**/ mp1 = {{0x58000000, 0x3FF921FB}}, /* 1.5707963407039642 */
|
||||
/**/ mp2 = {{0x40000000, 0xBE4DDE97}}; /*-1.3909067675399456e-08 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static const double toverp[75] = { /* 2/ PI base 24*/
|
||||
10680707.0, 7228996.0, 1387004.0, 2578385.0, 16069853.0,
|
||||
12639074.0, 9804092.0, 4427841.0, 16666979.0, 11263675.0,
|
||||
12935607.0, 2387514.0, 4345298.0, 14681673.0, 3074569.0,
|
||||
13734428.0, 16653803.0, 1880361.0, 10960616.0, 8533493.0,
|
||||
3062596.0, 8710556.0, 7349940.0, 6258241.0, 3772886.0,
|
||||
3769171.0, 3798172.0, 8675211.0, 12450088.0, 3874808.0,
|
||||
9961438.0, 366607.0, 15675153.0, 9132554.0, 7151469.0,
|
||||
3571407.0, 2607881.0, 12013382.0, 4155038.0, 6285869.0,
|
||||
7677882.0, 13102053.0, 15825725.0, 473591.0, 9065106.0,
|
||||
15363067.0, 6271263.0, 9264392.0, 5636912.0, 4652155.0,
|
||||
7056368.0, 13614112.0, 10155062.0, 1944035.0, 9527646.0,
|
||||
15080200.0, 6658437.0, 6231200.0, 6832269.0, 16767104.0,
|
||||
5075751.0, 3212806.0, 1398474.0, 7579849.0, 6349435.0,
|
||||
12618859.0, 4703257.0, 12806093.0, 14477321.0, 2786137.0,
|
||||
12875403.0, 9837734.0, 14528324.0, 13719321.0, 343717.0 };
|
||||
|
||||
static const double split = 134217729.0;
|
||||
|
||||
#endif
|
174
libgcc-math/dbl-64/dla.h
Normal file
174
libgcc-math/dbl-64/dla.h
Normal file
|
@ -0,0 +1,174 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/***********************************************************************/
|
||||
/*MODULE_NAME: dla.h */
|
||||
/* */
|
||||
/* This file holds C language macros for 'Double Length Floating Point */
|
||||
/* Arithmetic'. The macros are based on the paper: */
|
||||
/* T.J.Dekker, "A floating-point Technique for extending the */
|
||||
/* Available Precision", Number. Math. 18, 224-242 (1971). */
|
||||
/* A Double-Length number is defined by a pair (r,s), of IEEE double */
|
||||
/* precision floating point numbers that satisfy, */
|
||||
/* */
|
||||
/* abs(s) <= abs(r+s)*2**(-53)/(1+2**(-53)). */
|
||||
/* */
|
||||
/* The computer arithmetic assumed is IEEE double precision in */
|
||||
/* round to nearest mode. All variables in the macros must be of type */
|
||||
/* IEEE double. */
|
||||
/***********************************************************************/
|
||||
|
||||
/* CN = 1+2**27 = '41a0000002000000' IEEE double format */
|
||||
#define CN 134217729.0
|
||||
|
||||
|
||||
/* Exact addition of two single-length floating point numbers, Dekker. */
|
||||
/* The macro produces a double-length number (z,zz) that satisfies */
|
||||
/* z+zz = x+y exactly. */
|
||||
|
||||
#define EADD(x,y,z,zz) \
|
||||
z=(x)+(y); zz=(ABS(x)>ABS(y)) ? (((x)-(z))+(y)) : (((y)-(z))+(x));
|
||||
|
||||
|
||||
/* Exact subtraction of two single-length floating point numbers, Dekker. */
|
||||
/* The macro produces a double-length number (z,zz) that satisfies */
|
||||
/* z+zz = x-y exactly. */
|
||||
|
||||
#define ESUB(x,y,z,zz) \
|
||||
z=(x)-(y); zz=(ABS(x)>ABS(y)) ? (((x)-(z))-(y)) : ((x)-((y)+(z)));
|
||||
|
||||
|
||||
/* Exact multiplication of two single-length floating point numbers, */
|
||||
/* Veltkamp. The macro produces a double-length number (z,zz) that */
|
||||
/* satisfies z+zz = x*y exactly. p,hx,tx,hy,ty are temporary */
|
||||
/* storage variables of type double. */
|
||||
|
||||
#define EMULV(x,y,z,zz,p,hx,tx,hy,ty) \
|
||||
p=CN*(x); hx=((x)-p)+p; tx=(x)-hx; \
|
||||
p=CN*(y); hy=((y)-p)+p; ty=(y)-hy; \
|
||||
z=(x)*(y); zz=(((hx*hy-z)+hx*ty)+tx*hy)+tx*ty;
|
||||
|
||||
|
||||
/* Exact multiplication of two single-length floating point numbers, Dekker. */
|
||||
/* The macro produces a nearly double-length number (z,zz) (see Dekker) */
|
||||
/* that satisfies z+zz = x*y exactly. p,hx,tx,hy,ty,q are temporary */
|
||||
/* storage variables of type double. */
|
||||
|
||||
#define MUL12(x,y,z,zz,p,hx,tx,hy,ty,q) \
|
||||
p=CN*(x); hx=((x)-p)+p; tx=(x)-hx; \
|
||||
p=CN*(y); hy=((y)-p)+p; ty=(y)-hy; \
|
||||
p=hx*hy; q=hx*ty+tx*hy; z=p+q; zz=((p-z)+q)+tx*ty;
|
||||
|
||||
|
||||
/* Double-length addition, Dekker. The macro produces a double-length */
|
||||
/* number (z,zz) which satisfies approximately z+zz = x+xx + y+yy. */
|
||||
/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */
|
||||
/* are assumed to be double-length numbers. r,s are temporary */
|
||||
/* storage variables of type double. */
|
||||
|
||||
#define ADD2(x,xx,y,yy,z,zz,r,s) \
|
||||
r=(x)+(y); s=(ABS(x)>ABS(y)) ? \
|
||||
(((((x)-r)+(y))+(yy))+(xx)) : \
|
||||
(((((y)-r)+(x))+(xx))+(yy)); \
|
||||
z=r+s; zz=(r-z)+s;
|
||||
|
||||
|
||||
/* Double-length subtraction, Dekker. The macro produces a double-length */
|
||||
/* number (z,zz) which satisfies approximately z+zz = x+xx - (y+yy). */
|
||||
/* An error bound: (abs(x+xx)+abs(y+yy))*4.94e-32. (x,xx), (y,yy) */
|
||||
/* are assumed to be double-length numbers. r,s are temporary */
|
||||
/* storage variables of type double. */
|
||||
|
||||
#define SUB2(x,xx,y,yy,z,zz,r,s) \
|
||||
r=(x)-(y); s=(ABS(x)>ABS(y)) ? \
|
||||
(((((x)-r)-(y))-(yy))+(xx)) : \
|
||||
((((x)-((y)+r))+(xx))-(yy)); \
|
||||
z=r+s; zz=(r-z)+s;
|
||||
|
||||
|
||||
/* Double-length multiplication, Dekker. The macro produces a double-length */
|
||||
/* number (z,zz) which satisfies approximately z+zz = (x+xx)*(y+yy). */
|
||||
/* An error bound: abs((x+xx)*(y+yy))*1.24e-31. (x,xx), (y,yy) */
|
||||
/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc are */
|
||||
/* temporary storage variables of type double. */
|
||||
|
||||
#define MUL2(x,xx,y,yy,z,zz,p,hx,tx,hy,ty,q,c,cc) \
|
||||
MUL12(x,y,c,cc,p,hx,tx,hy,ty,q) \
|
||||
cc=((x)*(yy)+(xx)*(y))+cc; z=c+cc; zz=(c-z)+cc;
|
||||
|
||||
|
||||
/* Double-length division, Dekker. The macro produces a double-length */
|
||||
/* number (z,zz) which satisfies approximately z+zz = (x+xx)/(y+yy). */
|
||||
/* An error bound: abs((x+xx)/(y+yy))*1.50e-31. (x,xx), (y,yy) */
|
||||
/* are assumed to be double-length numbers. p,hx,tx,hy,ty,q,c,cc,u,uu */
|
||||
/* are temporary storage variables of type double. */
|
||||
|
||||
#define DIV2(x,xx,y,yy,z,zz,p,hx,tx,hy,ty,q,c,cc,u,uu) \
|
||||
c=(x)/(y); MUL12(c,y,u,uu,p,hx,tx,hy,ty,q) \
|
||||
cc=(((((x)-u)-uu)+(xx))-c*(yy))/(y); z=c+cc; zz=(c-z)+cc;
|
||||
|
||||
|
||||
/* Double-length addition, slower but more accurate than ADD2. */
|
||||
/* The macro produces a double-length */
|
||||
/* number (z,zz) which satisfies approximately z+zz = (x+xx)+(y+yy). */
|
||||
/* An error bound: abs(x+xx + y+yy)*1.50e-31. (x,xx), (y,yy) */
|
||||
/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */
|
||||
/* are temporary storage variables of type double. */
|
||||
|
||||
#define ADD2A(x,xx,y,yy,z,zz,r,rr,s,ss,u,uu,w) \
|
||||
r=(x)+(y); \
|
||||
if (ABS(x)>ABS(y)) { rr=((x)-r)+(y); s=(rr+(yy))+(xx); } \
|
||||
else { rr=((y)-r)+(x); s=(rr+(xx))+(yy); } \
|
||||
if (rr!=0.0) { \
|
||||
z=r+s; zz=(r-z)+s; } \
|
||||
else { \
|
||||
ss=(ABS(xx)>ABS(yy)) ? (((xx)-s)+(yy)) : (((yy)-s)+(xx)); \
|
||||
u=r+s; \
|
||||
uu=(ABS(r)>ABS(s)) ? ((r-u)+s) : ((s-u)+r) ; \
|
||||
w=uu+ss; z=u+w; \
|
||||
zz=(ABS(u)>ABS(w)) ? ((u-z)+w) : ((w-z)+u) ; }
|
||||
|
||||
|
||||
/* Double-length subtraction, slower but more accurate than SUB2. */
|
||||
/* The macro produces a double-length */
|
||||
/* number (z,zz) which satisfies approximately z+zz = (x+xx)-(y+yy). */
|
||||
/* An error bound: abs(x+xx - (y+yy))*1.50e-31. (x,xx), (y,yy) */
|
||||
/* are assumed to be double-length numbers. r,rr,s,ss,u,uu,w */
|
||||
/* are temporary storage variables of type double. */
|
||||
|
||||
#define SUB2A(x,xx,y,yy,z,zz,r,rr,s,ss,u,uu,w) \
|
||||
r=(x)-(y); \
|
||||
if (ABS(x)>ABS(y)) { rr=((x)-r)-(y); s=(rr-(yy))+(xx); } \
|
||||
else { rr=(x)-((y)+r); s=(rr+(xx))-(yy); } \
|
||||
if (rr!=0.0) { \
|
||||
z=r+s; zz=(r-z)+s; } \
|
||||
else { \
|
||||
ss=(ABS(xx)>ABS(yy)) ? (((xx)-s)-(yy)) : ((xx)-((yy)+s)); \
|
||||
u=r+s; \
|
||||
uu=(ABS(r)>ABS(s)) ? ((r-u)+s) : ((s-u)+r) ; \
|
||||
w=uu+ss; z=u+w; \
|
||||
zz=(ABS(u)>ABS(w)) ? ((u-z)+w) : ((w-z)+u) ; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
76
libgcc-math/dbl-64/doasin.c
Normal file
76
libgcc-math/dbl-64/doasin.c
Normal file
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/**********************************************************************/
|
||||
/* MODULE_NAME: doasin.c */
|
||||
/* */
|
||||
/* FUNCTION: doasin */
|
||||
/* */
|
||||
/* FILES NEEDED:endian.h mydefs.h dla.h doasin.h */
|
||||
/* mpa.c */
|
||||
/* */
|
||||
/* Compute arcsin(x,dx,v) of double-length number (x+dx) the result */
|
||||
/* stored in v where v= v[0]+v[1] =arcsin(x+dx) */
|
||||
/**********************************************************************/
|
||||
|
||||
#include "endian.h"
|
||||
#include "mydefs.h"
|
||||
#include "dla.h"
|
||||
#include "math_private.h"
|
||||
|
||||
/********************************************************************/
|
||||
/* Compute arcsin(x,dx,v) of double-length number (x+dx) the result */
|
||||
/* stored in v where v= v[0]+v[1] =arcsin(x+dx) */
|
||||
/********************************************************************/
|
||||
void __doasin(double x, double dx, double v[]) {
|
||||
|
||||
#include "doasin.h"
|
||||
|
||||
static const double
|
||||
d5 = 0.22372159090911789889975459505194491E-01,
|
||||
d6 = 0.17352764422456822913014975683014622E-01,
|
||||
d7 = 0.13964843843786693521653681033981614E-01,
|
||||
d8 = 0.11551791438485242609036067259086589E-01,
|
||||
d9 = 0.97622386568166960207425666787248914E-02,
|
||||
d10 = 0.83638737193775788576092749009744976E-02,
|
||||
d11 = 0.79470250400727425881446981833568758E-02;
|
||||
|
||||
double xx,p,pp,u,uu,r,s;
|
||||
double hx,tx,hy,ty,tp,tq,tc,tcc;
|
||||
|
||||
|
||||
/* Taylor series for arcsin for Double-Length numbers */
|
||||
xx = x*x+2.0*x*dx;
|
||||
p = ((((((d11*xx+d10)*xx+d9)*xx+d8)*xx+d7)*xx+d6)*xx+d5)*xx;
|
||||
pp = 0;
|
||||
|
||||
MUL2(x,dx,x,dx,u,uu,tp,hx,tx,hy,ty,tq,tc,tcc);
|
||||
ADD2(p,pp,c4.x,cc4.x,p,pp,r,s);
|
||||
MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
|
||||
ADD2(p,pp,c3.x,cc3.x,p,pp,r,s);
|
||||
MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
|
||||
ADD2(p,pp,c2.x,cc2.x,p,pp,r,s);
|
||||
MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
|
||||
ADD2(p,pp,c1.x,cc1.x,p,pp,r,s);
|
||||
MUL2(p,pp,u,uu,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
|
||||
MUL2(p,pp,x,dx,p,pp,tp,hx,tx,hy,ty,tq,tc,tcc);
|
||||
ADD2(p,pp,x,dx,p,pp,r,s);
|
||||
v[0]=p;
|
||||
v[1]=pp; /* arcsin(x+dx)=v[0]+v[1] */
|
||||
}
|
64
libgcc-math/dbl-64/doasin.h
Normal file
64
libgcc-math/dbl-64/doasin.h
Normal file
|
@ -0,0 +1,64 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: doasin.h */
|
||||
/* */
|
||||
/* */
|
||||
/* common data and variables definition for BIG or LITTLE ENDIAN */
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
|
||||
#ifndef DOASIN_H
|
||||
#define DOASIN_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
|
||||
static const mynumber
|
||||
/**/ c1 = {{0x3FC55555, 0x55555555}}, /* 0.16666666666666666 */
|
||||
/**/ cc1 = {{0x3C655555, 0x55775389}}, /* 9.2518585419753846e-18 */
|
||||
/**/ c2 = {{0x3FB33333, 0x33333333}}, /* 0.074999999999999997 */
|
||||
/**/ cc2 = {{0x3C499993, 0x63F1A115}}, /* 2.7755472886508899e-18 */
|
||||
/**/ c3 = {{0x3FA6DB6D, 0xB6DB6DB7}}, /* 0.044642857142857144 */
|
||||
/**/ cc3 = {{0xBC320FC0, 0x3D5CF0C5}}, /* -9.7911734574147224e-19 */
|
||||
/**/ c4 = {{0x3F9F1C71, 0xC71C71C5}}, /* 0.030381944444444437 */
|
||||
/**/ cc4 = {{0xBC02B240, 0xFF23ED1E}}; /* -1.2669108566898312e-19 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
|
||||
static const mynumber
|
||||
/**/ c1 = {{0x55555555, 0x3FC55555}}, /* 0.16666666666666666 */
|
||||
/**/ cc1 = {{0x55775389, 0x3C655555}}, /* 9.2518585419753846e-18 */
|
||||
/**/ c2 = {{0x33333333, 0x3FB33333}}, /* 0.074999999999999997 */
|
||||
/**/ cc2 = {{0x63F1A115, 0x3C499993}}, /* 2.7755472886508899e-18 */
|
||||
/**/ c3 = {{0xB6DB6DB7, 0x3FA6DB6D}}, /* 0.044642857142857144 */
|
||||
/**/ cc3 = {{0x3D5CF0C5, 0xBC320FC0}}, /* -9.7911734574147224e-19 */
|
||||
/**/ c4 = {{0xC71C71C5, 0x3F9F1C71}}, /* 0.030381944444444437 */
|
||||
/**/ cc4 = {{0xFF23ED1E, 0xBC02B240}}; /* -1.2669108566898312e-19 */
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
189
libgcc-math/dbl-64/dosincos.c
Normal file
189
libgcc-math/dbl-64/dosincos.c
Normal file
|
@ -0,0 +1,189 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/********************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME: dosincos.c */
|
||||
/* */
|
||||
/* */
|
||||
/* FUNCTIONS: dubsin */
|
||||
/* dubcos */
|
||||
/* docos */
|
||||
/* FILES NEEDED: endian.h mydefs.h dla.h dosincos.h */
|
||||
/* sincos.tbl */
|
||||
/* */
|
||||
/* Routines compute sin() and cos() as Double-Length numbers */
|
||||
/********************************************************************/
|
||||
|
||||
|
||||
|
||||
#include "endian.h"
|
||||
#include "mydefs.h"
|
||||
#include "sincos.tbl"
|
||||
#include "dla.h"
|
||||
#include "dosincos.h"
|
||||
#include "math_private.h"
|
||||
|
||||
/***********************************************************************/
|
||||
/* Routine receive Double-Length number (x+dx) and computing sin(x+dx) */
|
||||
/* as Double-Length number and store it at array v .It computes it by */
|
||||
/* arithmetic action on Double-Length numbers */
|
||||
/*(x+dx) between 0 and PI/4 */
|
||||
/***********************************************************************/
|
||||
|
||||
void __dubsin(double x, double dx, double v[]) {
|
||||
double r,s,p,hx,tx,hy,ty,q,c,cc,d,dd,d2,dd2,e,ee,
|
||||
sn,ssn,cs,ccs,ds,dss,dc,dcc;
|
||||
#if 0
|
||||
double xx,y,yy,z,zz;
|
||||
#endif
|
||||
mynumber u;
|
||||
int4 k;
|
||||
|
||||
u.x=x+big.x;
|
||||
k = u.i[LOW_HALF]<<2;
|
||||
x=x-(u.x-big.x);
|
||||
d=x+dx;
|
||||
dd=(x-d)+dx;
|
||||
/* sin(x+dx)=sin(Xi+t)=sin(Xi)*cos(t) + cos(Xi)sin(t) where t ->0 */
|
||||
MUL2(d,dd,d,dd,d2,dd2,p,hx,tx,hy,ty,q,c,cc);
|
||||
sn=sincos.x[k]; /* */
|
||||
ssn=sincos.x[k+1]; /* sin(Xi) and cos(Xi) */
|
||||
cs=sincos.x[k+2]; /* */
|
||||
ccs=sincos.x[k+3]; /* */
|
||||
MUL2(d2,dd2,s7.x,ss7.x,ds,dss,p,hx,tx,hy,ty,q,c,cc); /* Taylor */
|
||||
ADD2(ds,dss,s5.x,ss5.x,ds,dss,r,s);
|
||||
MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); /* series */
|
||||
ADD2(ds,dss,s3.x,ss3.x,ds,dss,r,s);
|
||||
MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc); /* for sin */
|
||||
MUL2(d,dd,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(ds,dss,d,dd,ds,dss,r,s); /* ds=sin(t) */
|
||||
|
||||
MUL2(d2,dd2,c8.x,cc8.x,dc,dcc,p,hx,tx,hy,ty,q,c,cc); ;/* Taylor */
|
||||
ADD2(dc,dcc,c6.x,cc6.x,dc,dcc,r,s);
|
||||
MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); /* series */
|
||||
ADD2(dc,dcc,c4.x,cc4.x,dc,dcc,r,s);
|
||||
MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); /* for cos */
|
||||
ADD2(dc,dcc,c2.x,cc2.x,dc,dcc,r,s);
|
||||
MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc); /* dc=cos(t) */
|
||||
|
||||
MUL2(cs,ccs,ds,dss,e,ee,p,hx,tx,hy,ty,q,c,cc);
|
||||
MUL2(dc,dcc,sn,ssn,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
SUB2(e,ee,dc,dcc,e,ee,r,s);
|
||||
ADD2(e,ee,sn,ssn,e,ee,r,s); /* e+ee=sin(x+dx) */
|
||||
|
||||
v[0]=e;
|
||||
v[1]=ee;
|
||||
}
|
||||
/**********************************************************************/
|
||||
/* Routine receive Double-Length number (x+dx) and computes cos(x+dx) */
|
||||
/* as Double-Length number and store it in array v .It computes it by */
|
||||
/* arithmetic action on Double-Length numbers */
|
||||
/*(x+dx) between 0 and PI/4 */
|
||||
/**********************************************************************/
|
||||
|
||||
void __dubcos(double x, double dx, double v[]) {
|
||||
double r,s,p,hx,tx,hy,ty,q,c,cc,d,dd,d2,dd2,e,ee,
|
||||
sn,ssn,cs,ccs,ds,dss,dc,dcc;
|
||||
#if 0
|
||||
double xx,y,yy,z,zz;
|
||||
#endif
|
||||
mynumber u;
|
||||
int4 k;
|
||||
u.x=x+big.x;
|
||||
k = u.i[LOW_HALF]<<2;
|
||||
x=x-(u.x-big.x);
|
||||
d=x+dx;
|
||||
dd=(x-d)+dx; /* cos(x+dx)=cos(Xi+t)=cos(Xi)cos(t) - sin(Xi)sin(t) */
|
||||
MUL2(d,dd,d,dd,d2,dd2,p,hx,tx,hy,ty,q,c,cc);
|
||||
sn=sincos.x[k]; /* */
|
||||
ssn=sincos.x[k+1]; /* sin(Xi) and cos(Xi) */
|
||||
cs=sincos.x[k+2]; /* */
|
||||
ccs=sincos.x[k+3]; /* */
|
||||
MUL2(d2,dd2,s7.x,ss7.x,ds,dss,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(ds,dss,s5.x,ss5.x,ds,dss,r,s);
|
||||
MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(ds,dss,s3.x,ss3.x,ds,dss,r,s);
|
||||
MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc);
|
||||
MUL2(d,dd,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(ds,dss,d,dd,ds,dss,r,s);
|
||||
|
||||
MUL2(d2,dd2,c8.x,cc8.x,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(dc,dcc,c6.x,cc6.x,dc,dcc,r,s);
|
||||
MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(dc,dcc,c4.x,cc4.x,dc,dcc,r,s);
|
||||
MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(dc,dcc,c2.x,cc2.x,dc,dcc,r,s);
|
||||
MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
|
||||
MUL2(cs,ccs,ds,dss,e,ee,p,hx,tx,hy,ty,q,c,cc);
|
||||
MUL2(dc,dcc,sn,ssn,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
|
||||
MUL2(d2,dd2,s7.x,ss7.x,ds,dss,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(ds,dss,s5.x,ss5.x,ds,dss,r,s);
|
||||
MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(ds,dss,s3.x,ss3.x,ds,dss,r,s);
|
||||
MUL2(d2,dd2,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc);
|
||||
MUL2(d,dd,ds,dss,ds,dss,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(ds,dss,d,dd,ds,dss,r,s);
|
||||
MUL2(d2,dd2,c8.x,cc8.x,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(dc,dcc,c6.x,cc6.x,dc,dcc,r,s);
|
||||
MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(dc,dcc,c4.x,cc4.x,dc,dcc,r,s);
|
||||
MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(dc,dcc,c2.x,cc2.x,dc,dcc,r,s);
|
||||
MUL2(d2,dd2,dc,dcc,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
MUL2(sn,ssn,ds,dss,e,ee,p,hx,tx,hy,ty,q,c,cc);
|
||||
MUL2(dc,dcc,cs,ccs,dc,dcc,p,hx,tx,hy,ty,q,c,cc);
|
||||
ADD2(e,ee,dc,dcc,e,ee,r,s);
|
||||
SUB2(cs,ccs,e,ee,e,ee,r,s);
|
||||
|
||||
v[0]=e;
|
||||
v[1]=ee;
|
||||
}
|
||||
/**********************************************************************/
|
||||
/* Routine receive Double-Length number (x+dx) and computes cos(x+dx) */
|
||||
/* as Double-Length number and store it in array v */
|
||||
/**********************************************************************/
|
||||
void __docos(double x, double dx, double v[]) {
|
||||
double y,yy,p,w[2];
|
||||
if (x>0) {y=x; yy=dx;}
|
||||
else {y=-x; yy=-dx;}
|
||||
if (y<0.5*hp0.x) /* y< PI/4 */
|
||||
{__dubcos(y,yy,w); v[0]=w[0]; v[1]=w[1];}
|
||||
else if (y<1.5*hp0.x) { /* y< 3/4 * PI */
|
||||
p=hp0.x-y; /* p = PI/2 - y */
|
||||
yy=hp1.x-yy;
|
||||
y=p+yy;
|
||||
yy=(p-y)+yy;
|
||||
if (y>0) {__dubsin(y,yy,w); v[0]=w[0]; v[1]=w[1];}
|
||||
/* cos(x) = sin ( 90 - x ) */
|
||||
else {__dubsin(-y,-yy,w); v[0]=-w[0]; v[1]=-w[1];
|
||||
}
|
||||
}
|
||||
else { /* y>= 3/4 * PI */
|
||||
p=2.0*hp0.x-y; /* p = PI- y */
|
||||
yy=2.0*hp1.x-yy;
|
||||
y=p+yy;
|
||||
yy=(p-y)+yy;
|
||||
__dubcos(y,yy,w);
|
||||
v[0]=-w[0];
|
||||
v[1]=-w[1];
|
||||
}
|
||||
}
|
81
libgcc-math/dbl-64/dosincos.h
Normal file
81
libgcc-math/dbl-64/dosincos.h
Normal file
|
@ -0,0 +1,81 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: dosincos.h */
|
||||
/* */
|
||||
/* */
|
||||
/* common data and variables definition for BIG or LITTLE ENDIAN */
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
|
||||
#ifndef DOSINCOS_H
|
||||
#define DOSINCOS_H
|
||||
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const mynumber
|
||||
/**/ s3 = {{0xBFC55555, 0x55555555}},/* -0.16666666666666666 */
|
||||
/**/ ss3 = {{0xBC6553AA, 0xE77EE482}},/* -9.2490366677784492e-18 */
|
||||
/**/ s5 = {{0x3F811111, 0x11110F15}},/* 0.008333333333332452 */
|
||||
/**/ ss5 = {{0xBC21AC06, 0xDA488820}},/* -4.7899996586987931e-19 */
|
||||
/**/ s7 = {{0xBF2A019F, 0x5816C78D}},/* -0.00019841261022928957 */
|
||||
/**/ ss7 = {{0x3BCDCEC9, 0x6A18BF2A}},/* 1.2624077757871259e-20 */
|
||||
/**/ c2 = {{0x3FE00000, 0x00000000}},/* 0.5 */
|
||||
/**/ cc2 = {{0xBA282FD8, 0x00000000}},/* -1.5264073330037701e-28 */
|
||||
/**/ c4 = {{0xBFA55555, 0x55555555}},/* -0.041666666666666664 */
|
||||
/**/ cc4 = {{0xBC4554BC, 0x2FFF257E}},/* -2.312711276085743e-18 */
|
||||
/**/ c6 = {{0x3F56C16C, 0x16C16A96}},/* 0.0013888888888888055 */
|
||||
/**/ cc6 = {{0xBBD2E846, 0xE6346F14}},/* -1.6015133010194884e-20 */
|
||||
/**/ c8 = {{0xBEFA019F, 0x821D5987}},/* -2.480157866754367e-05 */
|
||||
/**/ cc8 = {{0x3B7AB71E, 0x72FFE5CC}},/* 3.5357416224857556e-22 */
|
||||
|
||||
/**/ big = {{0x42c80000, 0x00000000}}, /* 52776558133248 */
|
||||
|
||||
/**/ hp0 = {{0x3FF921FB, 0x54442D18}}, /* PI / 2 */
|
||||
/**/ hp1 = {{0x3C91A626, 0x33145C07}}; /* 6.123233995736766e-17 */
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const mynumber
|
||||
/**/ s3 = {{0x55555555, 0xBFC55555}},/* -0.16666666666666666 */
|
||||
/**/ ss3 = {{0xE77EE482, 0xBC6553AA}},/* -9.2490366677784492e-18 */
|
||||
/**/ s5 = {{0x11110F15, 0x3F811111}},/* 0.008333333333332452 */
|
||||
/**/ ss5 = {{0xDA488820, 0xBC21AC06}},/* -4.7899996586987931e-19 */
|
||||
/**/ s7 = {{0x5816C78D, 0xBF2A019F}},/* -0.00019841261022928957 */
|
||||
/**/ ss7 = {{0x6A18BF2A, 0x3BCDCEC9}},/* 1.2624077757871259e-20 */
|
||||
/**/ c2 = {{0x00000000, 0x3FE00000}},/* 0.5 */
|
||||
/**/ cc2 = {{0x00000000, 0xBA282FD8}},/* -1.5264073330037701e-28 */
|
||||
/**/ c4 = {{0x55555555, 0xBFA55555}},/* -0.041666666666666664 */
|
||||
/**/ cc4 = {{0x2FFF257E, 0xBC4554BC}},/* -2.312711276085743e-18 */
|
||||
/**/ c6 = {{0x16C16A96, 0x3F56C16C}},/* 0.0013888888888888055 */
|
||||
/**/ cc6 = {{0xE6346F14, 0xBBD2E846}},/* -1.6015133010194884e-20 */
|
||||
/**/ c8 = {{0x821D5987, 0xBEFA019F}},/* -2.480157866754367e-05 */
|
||||
/**/ cc8 = {{0x72FFE5CC, 0x3B7AB71E}},/* 3.5357416224857556e-22 */
|
||||
|
||||
/**/ big = {{0x00000000, 0x42c80000}}, /* 52776558133248 */
|
||||
|
||||
/**/ hp0 = {{0x54442D18, 0x3FF921FB}}, /* PI / 2 */
|
||||
/**/ hp1 = {{0x33145C07, 0x3C91A626}}; /* 6.123233995736766e-17 */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
637
libgcc-math/dbl-64/e_asin.c
Normal file
637
libgcc-math/dbl-64/e_asin.c
Normal file
|
@ -0,0 +1,637 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/******************************************************************/
|
||||
/* MODULE_NAME:uasncs.c */
|
||||
/* */
|
||||
/* FUNCTIONS: uasin */
|
||||
/* uacos */
|
||||
/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h usncs.h */
|
||||
/* doasin.c sincos32.c dosincos.c mpa.c */
|
||||
/* sincos.tbl asincos.tbl powtwo.tbl root.tbl */
|
||||
/* */
|
||||
/* Ultimate asin/acos routines. Given an IEEE double machine */
|
||||
/* number x, compute the correctly rounded value of */
|
||||
/* arcsin(x)or arccos(x) according to the function called. */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round to nearest mode of IEEE 754 standard. */
|
||||
/* */
|
||||
/******************************************************************/
|
||||
#include "endian.h"
|
||||
#include "mydefs.h"
|
||||
#include "asincos.tbl"
|
||||
#include "root.tbl"
|
||||
#include "powtwo.tbl"
|
||||
#include "MathLib.h"
|
||||
#include "uasncs.h"
|
||||
#include "math_private.h"
|
||||
|
||||
void __doasin(double x, double dx, double w[]);
|
||||
void __dubsin(double x, double dx, double v[]);
|
||||
void __dubcos(double x, double dx, double v[]);
|
||||
void __docos(double x, double dx, double v[]);
|
||||
double __sin32(double x, double res, double res1);
|
||||
double __cos32(double x, double res, double res1);
|
||||
|
||||
/***************************************************************************/
|
||||
/* An ultimate asin routine. Given an IEEE double machine number x */
|
||||
/* it computes the correctly rounded (to nearest) value of arcsin(x) */
|
||||
/***************************************************************************/
|
||||
double __ieee754_asin(double x){
|
||||
double x1,x2,xx,s1,s2,res1,p,t,res,r,cor,cc,y,c,z,w[2];
|
||||
mynumber u,v;
|
||||
int4 k,m,n;
|
||||
#if 0
|
||||
int4 nn;
|
||||
#endif
|
||||
|
||||
u.x = x;
|
||||
m = u.i[HIGH_HALF];
|
||||
k = 0x7fffffff&m; /* no sign */
|
||||
|
||||
if (k < 0x3e500000) return x; /* for x->0 => sin(x)=x */
|
||||
/*----------------------2^-26 <= |x| < 2^ -3 -----------------*/
|
||||
else
|
||||
if (k < 0x3fc00000) {
|
||||
x2 = x*x;
|
||||
t = (((((f6*x2 + f5)*x2 + f4)*x2 + f3)*x2 + f2)*x2 + f1)*(x2*x);
|
||||
res = x+t; /* res=arcsin(x) according to Taylor series */
|
||||
cor = (x-res)+t;
|
||||
if (res == res+1.025*cor) return res;
|
||||
else {
|
||||
x1 = x+big;
|
||||
xx = x*x;
|
||||
x1 -= big;
|
||||
x2 = x - x1;
|
||||
p = x1*x1*x1;
|
||||
s1 = a1.x*p;
|
||||
s2 = ((((((c7*xx + c6)*xx + c5)*xx + c4)*xx + c3)*xx + c2)*xx*xx*x +
|
||||
((a1.x+a2.x)*x2*x2+ 0.5*x1*x)*x2) + a2.x*p;
|
||||
res1 = x+s1;
|
||||
s2 = ((x-res1)+s1)+s2;
|
||||
res = res1+s2;
|
||||
cor = (res1-res)+s2;
|
||||
if (res == res+1.00014*cor) return res;
|
||||
else {
|
||||
__doasin(x,0,w);
|
||||
if (w[0]==(w[0]+1.00000001*w[1])) return w[0];
|
||||
else {
|
||||
y=ABS(x);
|
||||
res=ABS(w[0]);
|
||||
res1=ABS(w[0]+1.1*w[1]);
|
||||
return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*---------------------0.125 <= |x| < 0.5 -----------------------------*/
|
||||
else if (k < 0x3fe00000) {
|
||||
if (k<0x3fd00000) n = 11*((k&0x000fffff)>>15);
|
||||
else n = 11*((k&0x000fffff)>>14)+352;
|
||||
if (m>0) xx = x - asncs.x[n];
|
||||
else xx = -x - asncs.x[n];
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+xx*(asncs.x[n+5]
|
||||
+xx*asncs.x[n+6]))))+asncs.x[n+7];
|
||||
t+=p;
|
||||
res =asncs.x[n+8] +t;
|
||||
cor = (asncs.x[n+8]-res)+t;
|
||||
if (res == res+1.05*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
r=asncs.x[n+8]+xx*asncs.x[n+9];
|
||||
t=((asncs.x[n+8]-r)+xx*asncs.x[n+9])+(p+xx*asncs.x[n+10]);
|
||||
res = r+t;
|
||||
cor = (r-res)+t;
|
||||
if (res == res+1.0005*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
__dubsin(res,z,w);
|
||||
z=(w[0]-ABS(x))+w[1];
|
||||
if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
|
||||
else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
|
||||
else {
|
||||
y=ABS(x);
|
||||
return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fe00000) */
|
||||
/*-------------------- 0.5 <= |x| < 0.75 -----------------------------*/
|
||||
else
|
||||
if (k < 0x3fe80000) {
|
||||
n = 1056+((k&0x000fe000)>>11)*3;
|
||||
if (m>0) xx = x - asncs.x[n];
|
||||
else xx = -x - asncs.x[n];
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+xx*(asncs.x[n+5]
|
||||
+xx*(asncs.x[n+6]+xx*asncs.x[n+7])))))+asncs.x[n+8];
|
||||
t+=p;
|
||||
res =asncs.x[n+9] +t;
|
||||
cor = (asncs.x[n+9]-res)+t;
|
||||
if (res == res+1.01*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
r=asncs.x[n+9]+xx*asncs.x[n+10];
|
||||
t=((asncs.x[n+9]-r)+xx*asncs.x[n+10])+(p+xx*asncs.x[n+11]);
|
||||
res = r+t;
|
||||
cor = (r-res)+t;
|
||||
if (res == res+1.0005*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
__dubsin(res,z,w);
|
||||
z=(w[0]-ABS(x))+w[1];
|
||||
if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
|
||||
else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
|
||||
else {
|
||||
y=ABS(x);
|
||||
return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fe80000) */
|
||||
/*--------------------- 0.75 <= |x|< 0.921875 ----------------------*/
|
||||
else
|
||||
if (k < 0x3fed8000) {
|
||||
n = 992+((k&0x000fe000)>>13)*13;
|
||||
if (m>0) xx = x - asncs.x[n];
|
||||
else xx = -x - asncs.x[n];
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+xx*(asncs.x[n+5]
|
||||
+xx*(asncs.x[n+6]+xx*(asncs.x[n+7]+xx*asncs.x[n+8]))))))+asncs.x[n+9];
|
||||
t+=p;
|
||||
res =asncs.x[n+10] +t;
|
||||
cor = (asncs.x[n+10]-res)+t;
|
||||
if (res == res+1.01*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
r=asncs.x[n+10]+xx*asncs.x[n+11];
|
||||
t=((asncs.x[n+10]-r)+xx*asncs.x[n+11])+(p+xx*asncs.x[n+12]);
|
||||
res = r+t;
|
||||
cor = (r-res)+t;
|
||||
if (res == res+1.0008*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
y=hp0.x-res;
|
||||
z=((hp0.x-y)-res)+(hp1.x-z);
|
||||
__dubcos(y,z,w);
|
||||
z=(w[0]-ABS(x))+w[1];
|
||||
if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
|
||||
else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
|
||||
else {
|
||||
y=ABS(x);
|
||||
return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fed8000) */
|
||||
/*-------------------0.921875 <= |x| < 0.953125 ------------------------*/
|
||||
else
|
||||
if (k < 0x3fee8000) {
|
||||
n = 884+((k&0x000fe000)>>13)*14;
|
||||
if (m>0) xx = x - asncs.x[n];
|
||||
else xx = -x - asncs.x[n];
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
|
||||
xx*(asncs.x[n+5]+xx*(asncs.x[n+6]
|
||||
+xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+
|
||||
xx*asncs.x[n+9])))))))+asncs.x[n+10];
|
||||
t+=p;
|
||||
res =asncs.x[n+11] +t;
|
||||
cor = (asncs.x[n+11]-res)+t;
|
||||
if (res == res+1.01*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
r=asncs.x[n+11]+xx*asncs.x[n+12];
|
||||
t=((asncs.x[n+11]-r)+xx*asncs.x[n+12])+(p+xx*asncs.x[n+13]);
|
||||
res = r+t;
|
||||
cor = (r-res)+t;
|
||||
if (res == res+1.0007*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
y=(hp0.x-res)-z;
|
||||
z=y+hp1.x;
|
||||
y=(y-z)+hp1.x;
|
||||
__dubcos(z,y,w);
|
||||
z=(w[0]-ABS(x))+w[1];
|
||||
if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
|
||||
else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
|
||||
else {
|
||||
y=ABS(x);
|
||||
return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fee8000) */
|
||||
|
||||
/*--------------------0.953125 <= |x| < 0.96875 ------------------------*/
|
||||
else
|
||||
if (k < 0x3fef0000) {
|
||||
n = 768+((k&0x000fe000)>>13)*15;
|
||||
if (m>0) xx = x - asncs.x[n];
|
||||
else xx = -x - asncs.x[n];
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
|
||||
xx*(asncs.x[n+5]+xx*(asncs.x[n+6]
|
||||
+xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+
|
||||
xx*(asncs.x[n+9]+xx*asncs.x[n+10]))))))))+asncs.x[n+11];
|
||||
t+=p;
|
||||
res =asncs.x[n+12] +t;
|
||||
cor = (asncs.x[n+12]-res)+t;
|
||||
if (res == res+1.01*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
r=asncs.x[n+12]+xx*asncs.x[n+13];
|
||||
t=((asncs.x[n+12]-r)+xx*asncs.x[n+13])+(p+xx*asncs.x[n+14]);
|
||||
res = r+t;
|
||||
cor = (r-res)+t;
|
||||
if (res == res+1.0007*cor) return (m>0)?res:-res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
y=(hp0.x-res)-z;
|
||||
z=y+hp1.x;
|
||||
y=(y-z)+hp1.x;
|
||||
__dubcos(z,y,w);
|
||||
z=(w[0]-ABS(x))+w[1];
|
||||
if (z>1.0e-27) return (m>0)?min(res,res1):-min(res,res1);
|
||||
else if (z<-1.0e-27) return (m>0)?max(res,res1):-max(res,res1);
|
||||
else {
|
||||
y=ABS(x);
|
||||
return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fef0000) */
|
||||
/*--------------------0.96875 <= |x| < 1 --------------------------------*/
|
||||
else
|
||||
if (k<0x3ff00000) {
|
||||
z = 0.5*((m>0)?(1.0-x):(1.0+x));
|
||||
v.x=z;
|
||||
k=v.i[HIGH_HALF];
|
||||
t=inroot[(k&0x001fffff)>>14]*powtwo[511-(k>>21)];
|
||||
r=1.0-t*t*z;
|
||||
t = t*(rt0+r*(rt1+r*(rt2+r*rt3)));
|
||||
c=t*z;
|
||||
t=c*(1.5-0.5*t*c);
|
||||
y=(c+t24)-t24;
|
||||
cc = (z-y*y)/(t+y);
|
||||
p=(((((f6*z+f5)*z+f4)*z+f3)*z+f2)*z+f1)*z;
|
||||
cor = (hp1.x - 2.0*cc)-2.0*(y+cc)*p;
|
||||
res1 = hp0.x - 2.0*y;
|
||||
res =res1 + cor;
|
||||
if (res == res+1.003*((res1-res)+cor)) return (m>0)?res:-res;
|
||||
else {
|
||||
c=y+cc;
|
||||
cc=(y-c)+cc;
|
||||
__doasin(c,cc,w);
|
||||
res1=hp0.x-2.0*w[0];
|
||||
cor=((hp0.x-res1)-2.0*w[0])+(hp1.x-2.0*w[1]);
|
||||
res = res1+cor;
|
||||
cor = (res1-res)+cor;
|
||||
if (res==(res+1.0000001*cor)) return (m>0)?res:-res;
|
||||
else {
|
||||
y=ABS(x);
|
||||
res1=res+1.1*cor;
|
||||
return (m>0)?__sin32(y,res,res1):-__sin32(y,res,res1);
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3ff00000) */
|
||||
/*---------------------------- |x|>=1 -------------------------------*/
|
||||
else if (k==0x3ff00000 && u.i[LOW_HALF]==0) return (m>0)?hp0.x:-hp0.x;
|
||||
else
|
||||
if (k>0x7ff00000 || (k == 0x7ff00000 && u.i[LOW_HALF] != 0)) return x;
|
||||
else {
|
||||
u.i[HIGH_HALF]=0x7ff00000;
|
||||
v.i[HIGH_HALF]=0x7ff00000;
|
||||
u.i[LOW_HALF]=0;
|
||||
v.i[LOW_HALF]=0;
|
||||
return u.x/v.x; /* NaN */
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************/
|
||||
/* */
|
||||
/* End of arcsine, below is arccosine */
|
||||
/* */
|
||||
/*******************************************************************/
|
||||
|
||||
double __ieee754_acos(double x)
|
||||
{
|
||||
double x1,x2,xx,s1,s2,res1,p,t,res,r,cor,cc,y,c,z,w[2],eps;
|
||||
#if 0
|
||||
double fc;
|
||||
#endif
|
||||
mynumber u,v;
|
||||
int4 k,m,n;
|
||||
#if 0
|
||||
int4 nn;
|
||||
#endif
|
||||
u.x = x;
|
||||
m = u.i[HIGH_HALF];
|
||||
k = 0x7fffffff&m;
|
||||
/*------------------- |x|<2.77556*10^-17 ----------------------*/
|
||||
if (k < 0x3c880000) return hp0.x;
|
||||
|
||||
/*----------------- 2.77556*10^-17 <= |x| < 2^-3 --------------*/
|
||||
else
|
||||
if (k < 0x3fc00000) {
|
||||
x2 = x*x;
|
||||
t = (((((f6*x2 + f5)*x2 + f4)*x2 + f3)*x2 + f2)*x2 + f1)*(x2*x);
|
||||
r=hp0.x-x;
|
||||
cor=(((hp0.x-r)-x)+hp1.x)-t;
|
||||
res = r+cor;
|
||||
cor = (r-res)+cor;
|
||||
if (res == res+1.004*cor) return res;
|
||||
else {
|
||||
x1 = x+big;
|
||||
xx = x*x;
|
||||
x1 -= big;
|
||||
x2 = x - x1;
|
||||
p = x1*x1*x1;
|
||||
s1 = a1.x*p;
|
||||
s2 = ((((((c7*xx + c6)*xx + c5)*xx + c4)*xx + c3)*xx + c2)*xx*xx*x +
|
||||
((a1.x+a2.x)*x2*x2+ 0.5*x1*x)*x2) + a2.x*p;
|
||||
res1 = x+s1;
|
||||
s2 = ((x-res1)+s1)+s2;
|
||||
r=hp0.x-res1;
|
||||
cor=(((hp0.x-r)-res1)+hp1.x)-s2;
|
||||
res = r+cor;
|
||||
cor = (r-res)+cor;
|
||||
if (res == res+1.00004*cor) return res;
|
||||
else {
|
||||
__doasin(x,0,w);
|
||||
r=hp0.x-w[0];
|
||||
cor=((hp0.x-r)-w[0])+(hp1.x-w[1]);
|
||||
res=r+cor;
|
||||
cor=(r-res)+cor;
|
||||
if (res ==(res +1.00000001*cor)) return res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
return __cos32(x,res,res1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fc00000) */
|
||||
/*---------------------- 0.125 <= |x| < 0.5 --------------------*/
|
||||
else
|
||||
if (k < 0x3fe00000) {
|
||||
if (k<0x3fd00000) n = 11*((k&0x000fffff)>>15);
|
||||
else n = 11*((k&0x000fffff)>>14)+352;
|
||||
if (m>0) xx = x - asncs.x[n];
|
||||
else xx = -x - asncs.x[n];
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
|
||||
xx*(asncs.x[n+5]+xx*asncs.x[n+6]))))+asncs.x[n+7];
|
||||
t+=p;
|
||||
y = (m>0)?(hp0.x-asncs.x[n+8]):(hp0.x+asncs.x[n+8]);
|
||||
t = (m>0)?(hp1.x-t):(hp1.x+t);
|
||||
res = y+t;
|
||||
if (res == res+1.02*((y-res)+t)) return res;
|
||||
else {
|
||||
r=asncs.x[n+8]+xx*asncs.x[n+9];
|
||||
t=((asncs.x[n+8]-r)+xx*asncs.x[n+9])+(p+xx*asncs.x[n+10]);
|
||||
if (m>0)
|
||||
{p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; }
|
||||
else
|
||||
{p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); }
|
||||
res = p+t;
|
||||
cor = (p-res)+t;
|
||||
if (res == (res+1.0002*cor)) return res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
__docos(res,z,w);
|
||||
z=(w[0]-x)+w[1];
|
||||
if (z>1.0e-27) return max(res,res1);
|
||||
else if (z<-1.0e-27) return min(res,res1);
|
||||
else return __cos32(x,res,res1);
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fe00000) */
|
||||
|
||||
/*--------------------------- 0.5 <= |x| < 0.75 ---------------------*/
|
||||
else
|
||||
if (k < 0x3fe80000) {
|
||||
n = 1056+((k&0x000fe000)>>11)*3;
|
||||
if (m>0) {xx = x - asncs.x[n]; eps=1.04; }
|
||||
else {xx = -x - asncs.x[n]; eps=1.02; }
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
|
||||
xx*(asncs.x[n+5]+xx*(asncs.x[n+6]+
|
||||
xx*asncs.x[n+7])))))+asncs.x[n+8];
|
||||
t+=p;
|
||||
y = (m>0)?(hp0.x-asncs.x[n+9]):(hp0.x+asncs.x[n+9]);
|
||||
t = (m>0)?(hp1.x-t):(hp1.x+t);
|
||||
res = y+t;
|
||||
if (res == res+eps*((y-res)+t)) return res;
|
||||
else {
|
||||
r=asncs.x[n+9]+xx*asncs.x[n+10];
|
||||
t=((asncs.x[n+9]-r)+xx*asncs.x[n+10])+(p+xx*asncs.x[n+11]);
|
||||
if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0004; }
|
||||
else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0002; }
|
||||
res = p+t;
|
||||
cor = (p-res)+t;
|
||||
if (res == (res+eps*cor)) return res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
__docos(res,z,w);
|
||||
z=(w[0]-x)+w[1];
|
||||
if (z>1.0e-27) return max(res,res1);
|
||||
else if (z<-1.0e-27) return min(res,res1);
|
||||
else return __cos32(x,res,res1);
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fe80000) */
|
||||
|
||||
/*------------------------- 0.75 <= |x| < 0.921875 -------------*/
|
||||
else
|
||||
if (k < 0x3fed8000) {
|
||||
n = 992+((k&0x000fe000)>>13)*13;
|
||||
if (m>0) {xx = x - asncs.x[n]; eps = 1.04; }
|
||||
else {xx = -x - asncs.x[n]; eps = 1.01; }
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
|
||||
xx*(asncs.x[n+5]+xx*(asncs.x[n+6]+xx*(asncs.x[n+7]+
|
||||
xx*asncs.x[n+8]))))))+asncs.x[n+9];
|
||||
t+=p;
|
||||
y = (m>0)?(hp0.x-asncs.x[n+10]):(hp0.x+asncs.x[n+10]);
|
||||
t = (m>0)?(hp1.x-t):(hp1.x+t);
|
||||
res = y+t;
|
||||
if (res == res+eps*((y-res)+t)) return res;
|
||||
else {
|
||||
r=asncs.x[n+10]+xx*asncs.x[n+11];
|
||||
t=((asncs.x[n+10]-r)+xx*asncs.x[n+11])+(p+xx*asncs.x[n+12]);
|
||||
if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0032; }
|
||||
else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0008; }
|
||||
res = p+t;
|
||||
cor = (p-res)+t;
|
||||
if (res == (res+eps*cor)) return res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
__docos(res,z,w);
|
||||
z=(w[0]-x)+w[1];
|
||||
if (z>1.0e-27) return max(res,res1);
|
||||
else if (z<-1.0e-27) return min(res,res1);
|
||||
else return __cos32(x,res,res1);
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fed8000) */
|
||||
|
||||
/*-------------------0.921875 <= |x| < 0.953125 ------------------*/
|
||||
else
|
||||
if (k < 0x3fee8000) {
|
||||
n = 884+((k&0x000fe000)>>13)*14;
|
||||
if (m>0) {xx = x - asncs.x[n]; eps=1.04; }
|
||||
else {xx = -x - asncs.x[n]; eps =1.005; }
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
|
||||
xx*(asncs.x[n+5]+xx*(asncs.x[n+6]
|
||||
+xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+
|
||||
xx*asncs.x[n+9])))))))+asncs.x[n+10];
|
||||
t+=p;
|
||||
y = (m>0)?(hp0.x-asncs.x[n+11]):(hp0.x+asncs.x[n+11]);
|
||||
t = (m>0)?(hp1.x-t):(hp1.x+t);
|
||||
res = y+t;
|
||||
if (res == res+eps*((y-res)+t)) return res;
|
||||
else {
|
||||
r=asncs.x[n+11]+xx*asncs.x[n+12];
|
||||
t=((asncs.x[n+11]-r)+xx*asncs.x[n+12])+(p+xx*asncs.x[n+13]);
|
||||
if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0030; }
|
||||
else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0005; }
|
||||
res = p+t;
|
||||
cor = (p-res)+t;
|
||||
if (res == (res+eps*cor)) return res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
__docos(res,z,w);
|
||||
z=(w[0]-x)+w[1];
|
||||
if (z>1.0e-27) return max(res,res1);
|
||||
else if (z<-1.0e-27) return min(res,res1);
|
||||
else return __cos32(x,res,res1);
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fee8000) */
|
||||
|
||||
/*--------------------0.953125 <= |x| < 0.96875 ----------------*/
|
||||
else
|
||||
if (k < 0x3fef0000) {
|
||||
n = 768+((k&0x000fe000)>>13)*15;
|
||||
if (m>0) {xx = x - asncs.x[n]; eps=1.04; }
|
||||
else {xx = -x - asncs.x[n]; eps=1.005;}
|
||||
t = asncs.x[n+1]*xx;
|
||||
p=xx*xx*(asncs.x[n+2]+xx*(asncs.x[n+3]+xx*(asncs.x[n+4]+
|
||||
xx*(asncs.x[n+5]+xx*(asncs.x[n+6]
|
||||
+xx*(asncs.x[n+7]+xx*(asncs.x[n+8]+xx*(asncs.x[n+9]+
|
||||
xx*asncs.x[n+10]))))))))+asncs.x[n+11];
|
||||
t+=p;
|
||||
y = (m>0)?(hp0.x-asncs.x[n+12]):(hp0.x+asncs.x[n+12]);
|
||||
t = (m>0)?(hp1.x-t):(hp1.x+t);
|
||||
res = y+t;
|
||||
if (res == res+eps*((y-res)+t)) return res;
|
||||
else {
|
||||
r=asncs.x[n+12]+xx*asncs.x[n+13];
|
||||
t=((asncs.x[n+12]-r)+xx*asncs.x[n+13])+(p+xx*asncs.x[n+14]);
|
||||
if (m>0) {p = hp0.x-r; t = (((hp0.x-p)-r)-t)+hp1.x; eps=1.0030; }
|
||||
else {p = hp0.x+r; t = ((hp0.x-p)+r)+(hp1.x+t); eps=1.0005; }
|
||||
res = p+t;
|
||||
cor = (p-res)+t;
|
||||
if (res == (res+eps*cor)) return res;
|
||||
else {
|
||||
res1=res+1.1*cor;
|
||||
z=0.5*(res1-res);
|
||||
__docos(res,z,w);
|
||||
z=(w[0]-x)+w[1];
|
||||
if (z>1.0e-27) return max(res,res1);
|
||||
else if (z<-1.0e-27) return min(res,res1);
|
||||
else return __cos32(x,res,res1);
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3fef0000) */
|
||||
/*-----------------0.96875 <= |x| < 1 ---------------------------*/
|
||||
|
||||
else
|
||||
if (k<0x3ff00000) {
|
||||
z = 0.5*((m>0)?(1.0-x):(1.0+x));
|
||||
v.x=z;
|
||||
k=v.i[HIGH_HALF];
|
||||
t=inroot[(k&0x001fffff)>>14]*powtwo[511-(k>>21)];
|
||||
r=1.0-t*t*z;
|
||||
t = t*(rt0+r*(rt1+r*(rt2+r*rt3)));
|
||||
c=t*z;
|
||||
t=c*(1.5-0.5*t*c);
|
||||
y = (t27*c+c)-t27*c;
|
||||
cc = (z-y*y)/(t+y);
|
||||
p=(((((f6*z+f5)*z+f4)*z+f3)*z+f2)*z+f1)*z;
|
||||
if (m<0) {
|
||||
cor = (hp1.x - cc)-(y+cc)*p;
|
||||
res1 = hp0.x - y;
|
||||
res =res1 + cor;
|
||||
if (res == res+1.002*((res1-res)+cor)) return (res+res);
|
||||
else {
|
||||
c=y+cc;
|
||||
cc=(y-c)+cc;
|
||||
__doasin(c,cc,w);
|
||||
res1=hp0.x-w[0];
|
||||
cor=((hp0.x-res1)-w[0])+(hp1.x-w[1]);
|
||||
res = res1+cor;
|
||||
cor = (res1-res)+cor;
|
||||
if (res==(res+1.000001*cor)) return (res+res);
|
||||
else {
|
||||
res=res+res;
|
||||
res1=res+1.2*cor;
|
||||
return __cos32(x,res,res1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
cor = cc+p*(y+cc);
|
||||
res = y + cor;
|
||||
if (res == res+1.03*((y-res)+cor)) return (res+res);
|
||||
else {
|
||||
c=y+cc;
|
||||
cc=(y-c)+cc;
|
||||
__doasin(c,cc,w);
|
||||
res = w[0];
|
||||
cor=w[1];
|
||||
if (res==(res+1.000001*cor)) return (res+res);
|
||||
else {
|
||||
res=res+res;
|
||||
res1=res+1.2*cor;
|
||||
return __cos32(x,res,res1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* else if (k < 0x3ff00000) */
|
||||
|
||||
/*---------------------------- |x|>=1 -----------------------*/
|
||||
else
|
||||
if (k==0x3ff00000 && u.i[LOW_HALF]==0) return (m>0)?0:2.0*hp0.x;
|
||||
else
|
||||
if (k>0x7ff00000 || (k == 0x7ff00000 && u.i[LOW_HALF] != 0)) return x;
|
||||
else {
|
||||
u.i[HIGH_HALF]=0x7ff00000;
|
||||
v.i[HIGH_HALF]=0x7ff00000;
|
||||
u.i[LOW_HALF]=0;
|
||||
v.i[LOW_HALF]=0;
|
||||
return u.x/v.x;
|
||||
}
|
||||
}
|
406
libgcc-math/dbl-64/e_atan2.c
Normal file
406
libgcc-math/dbl-64/e_atan2.c
Normal file
|
@ -0,0 +1,406 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: atnat2.c */
|
||||
/* */
|
||||
/* FUNCTIONS: uatan2 */
|
||||
/* atan2Mp */
|
||||
/* signArctan2 */
|
||||
/* normalized */
|
||||
/* */
|
||||
/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h atnat2.h */
|
||||
/* mpatan.c mpatan2.c mpsqrt.c */
|
||||
/* uatan.tbl */
|
||||
/* */
|
||||
/* An ultimate atan2() routine. Given two IEEE double machine numbers y,*/
|
||||
/* x it computes the correctly rounded (to nearest) value of atan2(y,x).*/
|
||||
/* */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round to nearest mode of IEEE 754 standard. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "dla.h"
|
||||
#include "mpa.h"
|
||||
#include "MathLib.h"
|
||||
#include "uatan.tbl"
|
||||
#include "atnat2.h"
|
||||
#include "math_private.h"
|
||||
|
||||
/************************************************************************/
|
||||
/* An ultimate atan2 routine. Given two IEEE double machine numbers y,x */
|
||||
/* it computes the correctly rounded (to nearest) value of atan2(y,x). */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round to nearest mode of IEEE 754 standard. */
|
||||
/************************************************************************/
|
||||
static double atan2Mp(double ,double ,const int[]);
|
||||
static double signArctan2(double ,double);
|
||||
static double normalized(double ,double,double ,double);
|
||||
void __mpatan2(mp_no *,mp_no *,mp_no *,int);
|
||||
|
||||
double __ieee754_atan2(double y,double x) {
|
||||
|
||||
int i,de,ux,dx,uy,dy;
|
||||
#if 0
|
||||
int p;
|
||||
#endif
|
||||
static const int pr[MM]={6,8,10,20,32};
|
||||
double ax,ay,u,du,u9,ua,v,vv,dv,t1,t2,t3,t4,t5,t6,t7,t8,
|
||||
z,zz,cor,s1,ss1,s2,ss2;
|
||||
#if 0
|
||||
double z1,z2;
|
||||
#endif
|
||||
number num;
|
||||
#if 0
|
||||
mp_no mperr,mpt1,mpx,mpy,mpz,mpz1,mpz2;
|
||||
#endif
|
||||
|
||||
static const int ep= 59768832, /* 57*16**5 */
|
||||
em=-59768832; /* -57*16**5 */
|
||||
|
||||
/* x=NaN or y=NaN */
|
||||
num.d = x; ux = num.i[HIGH_HALF]; dx = num.i[LOW_HALF];
|
||||
if ((ux&0x7ff00000) ==0x7ff00000) {
|
||||
if (((ux&0x000fffff)|dx)!=0x00000000) return x+x; }
|
||||
num.d = y; uy = num.i[HIGH_HALF]; dy = num.i[LOW_HALF];
|
||||
if ((uy&0x7ff00000) ==0x7ff00000) {
|
||||
if (((uy&0x000fffff)|dy)!=0x00000000) return y+y; }
|
||||
|
||||
/* y=+-0 */
|
||||
if (uy==0x00000000) {
|
||||
if (dy==0x00000000) {
|
||||
if ((ux&0x80000000)==0x00000000) return ZERO;
|
||||
else return opi.d; } }
|
||||
else if (uy==0x80000000) {
|
||||
if (dy==0x00000000) {
|
||||
if ((ux&0x80000000)==0x00000000) return MZERO;
|
||||
else return mopi.d;} }
|
||||
|
||||
/* x=+-0 */
|
||||
if (x==ZERO) {
|
||||
if ((uy&0x80000000)==0x00000000) return hpi.d;
|
||||
else return mhpi.d; }
|
||||
|
||||
/* x=+-INF */
|
||||
if (ux==0x7ff00000) {
|
||||
if (dx==0x00000000) {
|
||||
if (uy==0x7ff00000) {
|
||||
if (dy==0x00000000) return qpi.d; }
|
||||
else if (uy==0xfff00000) {
|
||||
if (dy==0x00000000) return mqpi.d; }
|
||||
else {
|
||||
if ((uy&0x80000000)==0x00000000) return ZERO;
|
||||
else return MZERO; }
|
||||
}
|
||||
}
|
||||
else if (ux==0xfff00000) {
|
||||
if (dx==0x00000000) {
|
||||
if (uy==0x7ff00000) {
|
||||
if (dy==0x00000000) return tqpi.d; }
|
||||
else if (uy==0xfff00000) {
|
||||
if (dy==0x00000000) return mtqpi.d; }
|
||||
else {
|
||||
if ((uy&0x80000000)==0x00000000) return opi.d;
|
||||
else return mopi.d; }
|
||||
}
|
||||
}
|
||||
|
||||
/* y=+-INF */
|
||||
if (uy==0x7ff00000) {
|
||||
if (dy==0x00000000) return hpi.d; }
|
||||
else if (uy==0xfff00000) {
|
||||
if (dy==0x00000000) return mhpi.d; }
|
||||
|
||||
/* either x/y or y/x is very close to zero */
|
||||
ax = (x<ZERO) ? -x : x; ay = (y<ZERO) ? -y : y;
|
||||
de = (uy & 0x7ff00000) - (ux & 0x7ff00000);
|
||||
if (de>=ep) { return ((y>ZERO) ? hpi.d : mhpi.d); }
|
||||
else if (de<=em) {
|
||||
if (x>ZERO) {
|
||||
if ((z=ay/ax)<TWOM1022) return normalized(ax,ay,y,z);
|
||||
else return signArctan2(y,z); }
|
||||
else { return ((y>ZERO) ? opi.d : mopi.d); } }
|
||||
|
||||
/* if either x or y is extremely close to zero, scale abs(x), abs(y). */
|
||||
if (ax<twom500.d || ay<twom500.d) { ax*=two500.d; ay*=two500.d; }
|
||||
|
||||
/* x,y which are neither special nor extreme */
|
||||
if (ay<ax) {
|
||||
u=ay/ax;
|
||||
EMULV(ax,u,v,vv,t1,t2,t3,t4,t5)
|
||||
du=((ay-v)-vv)/ax; }
|
||||
else {
|
||||
u=ax/ay;
|
||||
EMULV(ay,u,v,vv,t1,t2,t3,t4,t5)
|
||||
du=((ax-v)-vv)/ay; }
|
||||
|
||||
if (x>ZERO) {
|
||||
|
||||
/* (i) x>0, abs(y)< abs(x): atan(ay/ax) */
|
||||
if (ay<ax) {
|
||||
if (u<inv16.d) {
|
||||
v=u*u; zz=du+u*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d)))));
|
||||
if ((z=u+(zz-u1.d*u)) == u+(zz+u1.d*u)) return signArctan2(y,z);
|
||||
|
||||
MUL2(u,du,u,du,v,vv,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d))));
|
||||
ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(u,du,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(u,du,s2,ss2,s1,ss1,t1,t2)
|
||||
if ((z=s1+(ss1-u5.d*s1)) == s1+(ss1+u5.d*s1)) return signArctan2(y,z);
|
||||
return atan2Mp(x,y,pr);
|
||||
}
|
||||
else {
|
||||
i=(TWO52+TWO8*u)-TWO52; i-=16;
|
||||
t3=u-cij[i][0].d;
|
||||
EADD(t3,du,v,dv)
|
||||
t1=cij[i][1].d; t2=cij[i][2].d;
|
||||
zz=v*t2+(dv*t2+v*v*(cij[i][3].d+v*(cij[i][4].d+
|
||||
v*(cij[i][5].d+v* cij[i][6].d))));
|
||||
if (i<112) {
|
||||
if (i<48) u9=u91.d; /* u < 1/4 */
|
||||
else u9=u92.d; } /* 1/4 <= u < 1/2 */
|
||||
else {
|
||||
if (i<176) u9=u93.d; /* 1/2 <= u < 3/4 */
|
||||
else u9=u94.d; } /* 3/4 <= u <= 1 */
|
||||
if ((z=t1+(zz-u9*t1)) == t1+(zz+u9*t1)) return signArctan2(y,z);
|
||||
|
||||
t1=u-hij[i][0].d;
|
||||
EADD(t1,du,v,vv)
|
||||
s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+
|
||||
v*(hij[i][14].d+v* hij[i][15].d))));
|
||||
ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2)
|
||||
if ((z=s2+(ss2-ub.d*s2)) == s2+(ss2+ub.d*s2)) return signArctan2(y,z);
|
||||
return atan2Mp(x,y,pr);
|
||||
}
|
||||
}
|
||||
|
||||
/* (ii) x>0, abs(x)<=abs(y): pi/2-atan(ax/ay) */
|
||||
else {
|
||||
if (u<inv16.d) {
|
||||
v=u*u;
|
||||
zz=u*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d)))));
|
||||
ESUB(hpi.d,u,t2,cor)
|
||||
t3=((hpi1.d+cor)-du)-zz;
|
||||
if ((z=t2+(t3-u2.d)) == t2+(t3+u2.d)) return signArctan2(y,z);
|
||||
|
||||
MUL2(u,du,u,du,v,vv,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d))));
|
||||
ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(u,du,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(u,du,s2,ss2,s1,ss1,t1,t2)
|
||||
SUB2(hpi.d,hpi1.d,s1,ss1,s2,ss2,t1,t2)
|
||||
if ((z=s2+(ss2-u6.d)) == s2+(ss2+u6.d)) return signArctan2(y,z);
|
||||
return atan2Mp(x,y,pr);
|
||||
}
|
||||
else {
|
||||
i=(TWO52+TWO8*u)-TWO52; i-=16;
|
||||
v=(u-cij[i][0].d)+du;
|
||||
zz=hpi1.d-v*(cij[i][2].d+v*(cij[i][3].d+v*(cij[i][4].d+
|
||||
v*(cij[i][5].d+v* cij[i][6].d))));
|
||||
t1=hpi.d-cij[i][1].d;
|
||||
if (i<112) ua=ua1.d; /* w < 1/2 */
|
||||
else ua=ua2.d; /* w >= 1/2 */
|
||||
if ((z=t1+(zz-ua)) == t1+(zz+ua)) return signArctan2(y,z);
|
||||
|
||||
t1=u-hij[i][0].d;
|
||||
EADD(t1,du,v,vv)
|
||||
s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+
|
||||
v*(hij[i][14].d+v* hij[i][15].d))));
|
||||
ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2)
|
||||
SUB2(hpi.d,hpi1.d,s2,ss2,s1,ss1,t1,t2)
|
||||
if ((z=s1+(ss1-uc.d)) == s1+(ss1+uc.d)) return signArctan2(y,z);
|
||||
return atan2Mp(x,y,pr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
/* (iii) x<0, abs(x)< abs(y): pi/2+atan(ax/ay) */
|
||||
if (ax<ay) {
|
||||
if (u<inv16.d) {
|
||||
v=u*u;
|
||||
zz=u*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d)))));
|
||||
EADD(hpi.d,u,t2,cor)
|
||||
t3=((hpi1.d+cor)+du)+zz;
|
||||
if ((z=t2+(t3-u3.d)) == t2+(t3+u3.d)) return signArctan2(y,z);
|
||||
|
||||
MUL2(u,du,u,du,v,vv,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d))));
|
||||
ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(u,du,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(u,du,s2,ss2,s1,ss1,t1,t2)
|
||||
ADD2(hpi.d,hpi1.d,s1,ss1,s2,ss2,t1,t2)
|
||||
if ((z=s2+(ss2-u7.d)) == s2+(ss2+u7.d)) return signArctan2(y,z);
|
||||
return atan2Mp(x,y,pr);
|
||||
}
|
||||
else {
|
||||
i=(TWO52+TWO8*u)-TWO52; i-=16;
|
||||
v=(u-cij[i][0].d)+du;
|
||||
zz=hpi1.d+v*(cij[i][2].d+v*(cij[i][3].d+v*(cij[i][4].d+
|
||||
v*(cij[i][5].d+v* cij[i][6].d))));
|
||||
t1=hpi.d+cij[i][1].d;
|
||||
if (i<112) ua=ua1.d; /* w < 1/2 */
|
||||
else ua=ua2.d; /* w >= 1/2 */
|
||||
if ((z=t1+(zz-ua)) == t1+(zz+ua)) return signArctan2(y,z);
|
||||
|
||||
t1=u-hij[i][0].d;
|
||||
EADD(t1,du,v,vv)
|
||||
s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+
|
||||
v*(hij[i][14].d+v* hij[i][15].d))));
|
||||
ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2)
|
||||
ADD2(hpi.d,hpi1.d,s2,ss2,s1,ss1,t1,t2)
|
||||
if ((z=s1+(ss1-uc.d)) == s1+(ss1+uc.d)) return signArctan2(y,z);
|
||||
return atan2Mp(x,y,pr);
|
||||
}
|
||||
}
|
||||
|
||||
/* (iv) x<0, abs(y)<=abs(x): pi-atan(ax/ay) */
|
||||
else {
|
||||
if (u<inv16.d) {
|
||||
v=u*u;
|
||||
zz=u*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d)))));
|
||||
ESUB(opi.d,u,t2,cor)
|
||||
t3=((opi1.d+cor)-du)-zz;
|
||||
if ((z=t2+(t3-u4.d)) == t2+(t3+u4.d)) return signArctan2(y,z);
|
||||
|
||||
MUL2(u,du,u,du,v,vv,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d))));
|
||||
ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(u,du,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(u,du,s2,ss2,s1,ss1,t1,t2)
|
||||
SUB2(opi.d,opi1.d,s1,ss1,s2,ss2,t1,t2)
|
||||
if ((z=s2+(ss2-u8.d)) == s2+(ss2+u8.d)) return signArctan2(y,z);
|
||||
return atan2Mp(x,y,pr);
|
||||
}
|
||||
else {
|
||||
i=(TWO52+TWO8*u)-TWO52; i-=16;
|
||||
v=(u-cij[i][0].d)+du;
|
||||
zz=opi1.d-v*(cij[i][2].d+v*(cij[i][3].d+v*(cij[i][4].d+
|
||||
v*(cij[i][5].d+v* cij[i][6].d))));
|
||||
t1=opi.d-cij[i][1].d;
|
||||
if (i<112) ua=ua1.d; /* w < 1/2 */
|
||||
else ua=ua2.d; /* w >= 1/2 */
|
||||
if ((z=t1+(zz-ua)) == t1+(zz+ua)) return signArctan2(y,z);
|
||||
|
||||
t1=u-hij[i][0].d;
|
||||
EADD(t1,du,v,vv)
|
||||
s1=v*(hij[i][11].d+v*(hij[i][12].d+v*(hij[i][13].d+
|
||||
v*(hij[i][14].d+v* hij[i][15].d))));
|
||||
ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2)
|
||||
SUB2(opi.d,opi1.d,s2,ss2,s1,ss1,t1,t2)
|
||||
if ((z=s1+(ss1-uc.d)) == s1+(ss1+uc.d)) return signArctan2(y,z);
|
||||
return atan2Mp(x,y,pr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Treat the Denormalized case */
|
||||
static double normalized(double ax,double ay,double y, double z)
|
||||
{ int p;
|
||||
mp_no mpx,mpy,mpz,mperr,mpz2,mpt1;
|
||||
p=6;
|
||||
__dbl_mp(ax,&mpx,p); __dbl_mp(ay,&mpy,p); __dvd(&mpy,&mpx,&mpz,p);
|
||||
__dbl_mp(ue.d,&mpt1,p); __mul(&mpz,&mpt1,&mperr,p);
|
||||
__sub(&mpz,&mperr,&mpz2,p); __mp_dbl(&mpz2,&z,p);
|
||||
return signArctan2(y,z);
|
||||
}
|
||||
/* Fix the sign and return after stage 1 or stage 2 */
|
||||
static double signArctan2(double y,double z)
|
||||
{
|
||||
return ((y<ZERO) ? -z : z);
|
||||
}
|
||||
/* Stage 3: Perform a multi-Precision computation */
|
||||
static double atan2Mp(double x,double y,const int pr[])
|
||||
{
|
||||
double z1,z2;
|
||||
int i,p;
|
||||
mp_no mpx,mpy,mpz,mpz1,mpz2,mperr,mpt1;
|
||||
for (i=0; i<MM; i++) {
|
||||
p = pr[i];
|
||||
__dbl_mp(x,&mpx,p); __dbl_mp(y,&mpy,p);
|
||||
__mpatan2(&mpy,&mpx,&mpz,p);
|
||||
__dbl_mp(ud[i].d,&mpt1,p); __mul(&mpz,&mpt1,&mperr,p);
|
||||
__add(&mpz,&mperr,&mpz1,p); __sub(&mpz,&mperr,&mpz2,p);
|
||||
__mp_dbl(&mpz1,&z1,p); __mp_dbl(&mpz2,&z2,p);
|
||||
if (z1==z2) return z1;
|
||||
}
|
||||
return z1; /*if unpossible to do exact computing */
|
||||
}
|
252
libgcc-math/dbl-64/e_exp.c
Normal file
252
libgcc-math/dbl-64/e_exp.c
Normal file
|
@ -0,0 +1,252 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/***************************************************************************/
|
||||
/* MODULE_NAME:uexp.c */
|
||||
/* */
|
||||
/* FUNCTION:uexp */
|
||||
/* exp1 */
|
||||
/* */
|
||||
/* FILES NEEDED:dla.h endian.h mpa.h mydefs.h uexp.h */
|
||||
/* mpa.c mpexp.x slowexp.c */
|
||||
/* */
|
||||
/* An ultimate exp routine. Given an IEEE double machine number x */
|
||||
/* it computes the correctly rounded (to nearest) value of e^x */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round to nearest mode of IEEE 754 standard. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
#include "endian.h"
|
||||
#include "uexp.h"
|
||||
#include "mydefs.h"
|
||||
#include "MathLib.h"
|
||||
#include "uexp.tbl"
|
||||
#include "math_private.h"
|
||||
|
||||
double __slowexp(double);
|
||||
|
||||
/***************************************************************************/
|
||||
/* An ultimate exp routine. Given an IEEE double machine number x */
|
||||
/* it computes the correctly rounded (to nearest) value of e^x */
|
||||
/***************************************************************************/
|
||||
double __ieee754_exp(double x) {
|
||||
double bexp, t, eps, del, base, y, al, bet, res, rem, cor;
|
||||
mynumber junk1, junk2, binexp = {{0,0}};
|
||||
#if 0
|
||||
int4 k;
|
||||
#endif
|
||||
int4 i,j,m,n,ex;
|
||||
|
||||
junk1.x = x;
|
||||
m = junk1.i[HIGH_HALF];
|
||||
n = m&hugeint;
|
||||
|
||||
if (n > smallint && n < bigint) {
|
||||
|
||||
y = x*log2e.x + three51.x;
|
||||
bexp = y - three51.x; /* multiply the result by 2**bexp */
|
||||
|
||||
junk1.x = y;
|
||||
|
||||
eps = bexp*ln_two2.x; /* x = bexp*ln(2) + t - eps */
|
||||
t = x - bexp*ln_two1.x;
|
||||
|
||||
y = t + three33.x;
|
||||
base = y - three33.x; /* t rounded to a multiple of 2**-18 */
|
||||
junk2.x = y;
|
||||
del = (t - base) - eps; /* x = bexp*ln(2) + base + del */
|
||||
eps = del + del*del*(p3.x*del + p2.x);
|
||||
|
||||
binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+1023)<<20;
|
||||
|
||||
i = ((junk2.i[LOW_HALF]>>8)&0xfffffffe)+356;
|
||||
j = (junk2.i[LOW_HALF]&511)<<1;
|
||||
|
||||
al = coar.x[i]*fine.x[j];
|
||||
bet =(coar.x[i]*fine.x[j+1] + coar.x[i+1]*fine.x[j]) + coar.x[i+1]*fine.x[j+1];
|
||||
|
||||
rem=(bet + bet*eps)+al*eps;
|
||||
res = al + rem;
|
||||
cor = (al - res) + rem;
|
||||
if (res == (res+cor*err_0)) return res*binexp.x;
|
||||
else return __slowexp(x); /*if error is over bound */
|
||||
}
|
||||
|
||||
if (n <= smallint) return 1.0;
|
||||
|
||||
if (n >= badint) {
|
||||
if (n > infint) return(x+x); /* x is NaN */
|
||||
if (n < infint) return ( (x>0) ? (hhuge*hhuge) : (tiny*tiny) );
|
||||
/* x is finite, cause either overflow or underflow */
|
||||
if (junk1.i[LOW_HALF] != 0) return (x+x); /* x is NaN */
|
||||
return ((x>0)?inf.x:zero ); /* |x| = inf; return either inf or 0 */
|
||||
}
|
||||
|
||||
y = x*log2e.x + three51.x;
|
||||
bexp = y - three51.x;
|
||||
junk1.x = y;
|
||||
eps = bexp*ln_two2.x;
|
||||
t = x - bexp*ln_two1.x;
|
||||
y = t + three33.x;
|
||||
base = y - three33.x;
|
||||
junk2.x = y;
|
||||
del = (t - base) - eps;
|
||||
eps = del + del*del*(p3.x*del + p2.x);
|
||||
i = ((junk2.i[LOW_HALF]>>8)&0xfffffffe)+356;
|
||||
j = (junk2.i[LOW_HALF]&511)<<1;
|
||||
al = coar.x[i]*fine.x[j];
|
||||
bet =(coar.x[i]*fine.x[j+1] + coar.x[i+1]*fine.x[j]) + coar.x[i+1]*fine.x[j+1];
|
||||
rem=(bet + bet*eps)+al*eps;
|
||||
res = al + rem;
|
||||
cor = (al - res) + rem;
|
||||
if (m>>31) {
|
||||
ex=junk1.i[LOW_HALF];
|
||||
if (res < 1.0) {res+=res; cor+=cor; ex-=1;}
|
||||
if (ex >=-1022) {
|
||||
binexp.i[HIGH_HALF] = (1023+ex)<<20;
|
||||
if (res == (res+cor*err_0)) return res*binexp.x;
|
||||
else return __slowexp(x); /*if error is over bound */
|
||||
}
|
||||
ex = -(1022+ex);
|
||||
binexp.i[HIGH_HALF] = (1023-ex)<<20;
|
||||
res*=binexp.x;
|
||||
cor*=binexp.x;
|
||||
eps=1.0000000001+err_0*binexp.x;
|
||||
t=1.0+res;
|
||||
y = ((1.0-t)+res)+cor;
|
||||
res=t+y;
|
||||
cor = (t-res)+y;
|
||||
if (res == (res + eps*cor))
|
||||
{ binexp.i[HIGH_HALF] = 0x00100000;
|
||||
return (res-1.0)*binexp.x;
|
||||
}
|
||||
else return __slowexp(x); /* if error is over bound */
|
||||
}
|
||||
else {
|
||||
binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+767)<<20;
|
||||
if (res == (res+cor*err_0)) return res*binexp.x*t256.x;
|
||||
else return __slowexp(x);
|
||||
}
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/* Compute e^(x+xx)(Double-Length number) .The routine also receive */
|
||||
/* bound of error of previous calculation .If after computing exp */
|
||||
/* error bigger than allows routine return non positive number */
|
||||
/*else return e^(x + xx) (always positive ) */
|
||||
/************************************************************************/
|
||||
|
||||
double __exp1(double x, double xx, double error) {
|
||||
double bexp, t, eps, del, base, y, al, bet, res, rem, cor;
|
||||
mynumber junk1, junk2, binexp = {{0,0}};
|
||||
#if 0
|
||||
int4 k;
|
||||
#endif
|
||||
int4 i,j,m,n,ex;
|
||||
|
||||
junk1.x = x;
|
||||
m = junk1.i[HIGH_HALF];
|
||||
n = m&hugeint; /* no sign */
|
||||
|
||||
if (n > smallint && n < bigint) {
|
||||
y = x*log2e.x + three51.x;
|
||||
bexp = y - three51.x; /* multiply the result by 2**bexp */
|
||||
|
||||
junk1.x = y;
|
||||
|
||||
eps = bexp*ln_two2.x; /* x = bexp*ln(2) + t - eps */
|
||||
t = x - bexp*ln_two1.x;
|
||||
|
||||
y = t + three33.x;
|
||||
base = y - three33.x; /* t rounded to a multiple of 2**-18 */
|
||||
junk2.x = y;
|
||||
del = (t - base) + (xx-eps); /* x = bexp*ln(2) + base + del */
|
||||
eps = del + del*del*(p3.x*del + p2.x);
|
||||
|
||||
binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+1023)<<20;
|
||||
|
||||
i = ((junk2.i[LOW_HALF]>>8)&0xfffffffe)+356;
|
||||
j = (junk2.i[LOW_HALF]&511)<<1;
|
||||
|
||||
al = coar.x[i]*fine.x[j];
|
||||
bet =(coar.x[i]*fine.x[j+1] + coar.x[i+1]*fine.x[j]) + coar.x[i+1]*fine.x[j+1];
|
||||
|
||||
rem=(bet + bet*eps)+al*eps;
|
||||
res = al + rem;
|
||||
cor = (al - res) + rem;
|
||||
if (res == (res+cor*(1.0+error+err_1))) return res*binexp.x;
|
||||
else return -10.0;
|
||||
}
|
||||
|
||||
if (n <= smallint) return 1.0; /* if x->0 e^x=1 */
|
||||
|
||||
if (n >= badint) {
|
||||
if (n > infint) return(zero/zero); /* x is NaN, return invalid */
|
||||
if (n < infint) return ( (x>0) ? (hhuge*hhuge) : (tiny*tiny) );
|
||||
/* x is finite, cause either overflow or underflow */
|
||||
if (junk1.i[LOW_HALF] != 0) return (zero/zero); /* x is NaN */
|
||||
return ((x>0)?inf.x:zero ); /* |x| = inf; return either inf or 0 */
|
||||
}
|
||||
|
||||
y = x*log2e.x + three51.x;
|
||||
bexp = y - three51.x;
|
||||
junk1.x = y;
|
||||
eps = bexp*ln_two2.x;
|
||||
t = x - bexp*ln_two1.x;
|
||||
y = t + three33.x;
|
||||
base = y - three33.x;
|
||||
junk2.x = y;
|
||||
del = (t - base) + (xx-eps);
|
||||
eps = del + del*del*(p3.x*del + p2.x);
|
||||
i = ((junk2.i[LOW_HALF]>>8)&0xfffffffe)+356;
|
||||
j = (junk2.i[LOW_HALF]&511)<<1;
|
||||
al = coar.x[i]*fine.x[j];
|
||||
bet =(coar.x[i]*fine.x[j+1] + coar.x[i+1]*fine.x[j]) + coar.x[i+1]*fine.x[j+1];
|
||||
rem=(bet + bet*eps)+al*eps;
|
||||
res = al + rem;
|
||||
cor = (al - res) + rem;
|
||||
if (m>>31) {
|
||||
ex=junk1.i[LOW_HALF];
|
||||
if (res < 1.0) {res+=res; cor+=cor; ex-=1;}
|
||||
if (ex >=-1022) {
|
||||
binexp.i[HIGH_HALF] = (1023+ex)<<20;
|
||||
if (res == (res+cor*(1.0+error+err_1))) return res*binexp.x;
|
||||
else return -10.0;
|
||||
}
|
||||
ex = -(1022+ex);
|
||||
binexp.i[HIGH_HALF] = (1023-ex)<<20;
|
||||
res*=binexp.x;
|
||||
cor*=binexp.x;
|
||||
eps=1.00000000001+(error+err_1)*binexp.x;
|
||||
t=1.0+res;
|
||||
y = ((1.0-t)+res)+cor;
|
||||
res=t+y;
|
||||
cor = (t-res)+y;
|
||||
if (res == (res + eps*cor))
|
||||
{binexp.i[HIGH_HALF] = 0x00100000; return (res-1.0)*binexp.x;}
|
||||
else return -10.0;
|
||||
}
|
||||
else {
|
||||
binexp.i[HIGH_HALF] =(junk1.i[LOW_HALF]+767)<<20;
|
||||
if (res == (res+cor*(1.0+error+err_1)))
|
||||
return res*binexp.x*t256.x;
|
||||
else return -10.0;
|
||||
}
|
||||
}
|
203
libgcc-math/dbl-64/e_log.c
Normal file
203
libgcc-math/dbl-64/e_log.c
Normal file
|
@ -0,0 +1,203 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/*********************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:ulog.c */
|
||||
/* */
|
||||
/* FUNCTION:ulog */
|
||||
/* */
|
||||
/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h ulog.h */
|
||||
/* mpexp.c mplog.c mpa.c */
|
||||
/* ulog.tbl */
|
||||
/* */
|
||||
/* An ultimate log routine. Given an IEEE double machine number x */
|
||||
/* it computes the correctly rounded (to nearest) value of log(x). */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round to nearest mode of IEEE 754 standard. */
|
||||
/* */
|
||||
/*********************************************************************/
|
||||
|
||||
|
||||
#include "endian.h"
|
||||
#include "dla.h"
|
||||
#include "mpa.h"
|
||||
#include "MathLib.h"
|
||||
#include "math_private.h"
|
||||
|
||||
void __mplog(mp_no *, mp_no *, int);
|
||||
|
||||
/*********************************************************************/
|
||||
/* An ultimate log routine. Given an IEEE double machine number x */
|
||||
/* it computes the correctly rounded (to nearest) value of log(x). */
|
||||
/*********************************************************************/
|
||||
double __ieee754_log(double x) {
|
||||
#define M 4
|
||||
static const int pr[M]={8,10,18,32};
|
||||
int i,j,n,ux,dx,p;
|
||||
#if 0
|
||||
int k;
|
||||
#endif
|
||||
double dbl_n,u,p0,q,r0,w,nln2a,luai,lubi,lvaj,lvbj,
|
||||
sij,ssij,ttij,A,B,B0,y,y1,y2,polI,polII,sa,sb,
|
||||
t1,t2,t3,t4,t5,t6,t7,t8,t,ra,rb,ww,
|
||||
a0,aa0,s1,s2,ss2,s3,ss3,a1,aa1,a,aa,b,bb,c;
|
||||
number num;
|
||||
mp_no mpx,mpy,mpy1,mpy2,mperr;
|
||||
|
||||
#include "ulog.tbl"
|
||||
#include "ulog.h"
|
||||
|
||||
/* Treating special values of x ( x<=0, x=INF, x=NaN etc.). */
|
||||
|
||||
num.d = x; ux = num.i[HIGH_HALF]; dx = num.i[LOW_HALF];
|
||||
n=0;
|
||||
if (ux < 0x00100000) {
|
||||
if (((ux & 0x7fffffff) | dx) == 0) return MHALF/ZERO; /* return -INF */
|
||||
if (ux < 0) return (x-x)/ZERO; /* return NaN */
|
||||
n -= 54; x *= two54.d; /* scale x */
|
||||
num.d = x;
|
||||
}
|
||||
if (ux >= 0x7ff00000) return x+x; /* INF or NaN */
|
||||
|
||||
/* Regular values of x */
|
||||
|
||||
w = x-ONE;
|
||||
if (ABS(w) > U03) { goto case_03; }
|
||||
|
||||
|
||||
/*--- Stage I, the case abs(x-1) < 0.03 */
|
||||
|
||||
t8 = MHALF*w;
|
||||
EMULV(t8,w,a,aa,t1,t2,t3,t4,t5)
|
||||
EADD(w,a,b,bb)
|
||||
|
||||
/* Evaluate polynomial II */
|
||||
polII = (b0.d+w*(b1.d+w*(b2.d+w*(b3.d+w*(b4.d+
|
||||
w*(b5.d+w*(b6.d+w*(b7.d+w*b8.d))))))))*w*w*w;
|
||||
c = (aa+bb)+polII;
|
||||
|
||||
/* End stage I, case abs(x-1) < 0.03 */
|
||||
if ((y=b+(c+b*E2)) == b+(c-b*E2)) return y;
|
||||
|
||||
/*--- Stage II, the case abs(x-1) < 0.03 */
|
||||
|
||||
a = d11.d+w*(d12.d+w*(d13.d+w*(d14.d+w*(d15.d+w*(d16.d+
|
||||
w*(d17.d+w*(d18.d+w*(d19.d+w*d20.d))))))));
|
||||
EMULV(w,a,s2,ss2,t1,t2,t3,t4,t5)
|
||||
ADD2(d10.d,dd10.d,s2,ss2,s3,ss3,t1,t2)
|
||||
MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(d9.d,dd9.d,s2,ss2,s3,ss3,t1,t2)
|
||||
MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(d8.d,dd8.d,s2,ss2,s3,ss3,t1,t2)
|
||||
MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(d7.d,dd7.d,s2,ss2,s3,ss3,t1,t2)
|
||||
MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(d6.d,dd6.d,s2,ss2,s3,ss3,t1,t2)
|
||||
MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(d5.d,dd5.d,s2,ss2,s3,ss3,t1,t2)
|
||||
MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(d4.d,dd4.d,s2,ss2,s3,ss3,t1,t2)
|
||||
MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(d3.d,dd3.d,s2,ss2,s3,ss3,t1,t2)
|
||||
MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(d2.d,dd2.d,s2,ss2,s3,ss3,t1,t2)
|
||||
MUL2(w,ZERO,s3,ss3,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(w,ZERO,s2,ss2,s3,ss3,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(w,ZERO, s3,ss3, b, bb,t1,t2)
|
||||
|
||||
/* End stage II, case abs(x-1) < 0.03 */
|
||||
if ((y=b+(bb+b*E4)) == b+(bb-b*E4)) return y;
|
||||
goto stage_n;
|
||||
|
||||
/*--- Stage I, the case abs(x-1) > 0.03 */
|
||||
case_03:
|
||||
|
||||
/* Find n,u such that x = u*2**n, 1/sqrt(2) < u < sqrt(2) */
|
||||
n += (num.i[HIGH_HALF] >> 20) - 1023;
|
||||
num.i[HIGH_HALF] = (num.i[HIGH_HALF] & 0x000fffff) | 0x3ff00000;
|
||||
if (num.d > SQRT_2) { num.d *= HALF; n++; }
|
||||
u = num.d; dbl_n = (double) n;
|
||||
|
||||
/* Find i such that ui=1+(i-75)/2**8 is closest to u (i= 0,1,2,...,181) */
|
||||
num.d += h1.d;
|
||||
i = (num.i[HIGH_HALF] & 0x000fffff) >> 12;
|
||||
|
||||
/* Find j such that vj=1+(j-180)/2**16 is closest to v=u/ui (j= 0,...,361) */
|
||||
num.d = u*Iu[i].d + h2.d;
|
||||
j = (num.i[HIGH_HALF] & 0x000fffff) >> 4;
|
||||
|
||||
/* Compute w=(u-ui*vj)/(ui*vj) */
|
||||
p0=(ONE+(i-75)*DEL_U)*(ONE+(j-180)*DEL_V);
|
||||
q=u-p0; r0=Iu[i].d*Iv[j].d; w=q*r0;
|
||||
|
||||
/* Evaluate polynomial I */
|
||||
polI = w+(a2.d+a3.d*w)*w*w;
|
||||
|
||||
/* Add up everything */
|
||||
nln2a = dbl_n*LN2A;
|
||||
luai = Lu[i][0].d; lubi = Lu[i][1].d;
|
||||
lvaj = Lv[j][0].d; lvbj = Lv[j][1].d;
|
||||
EADD(luai,lvaj,sij,ssij)
|
||||
EADD(nln2a,sij,A ,ttij)
|
||||
B0 = (((lubi+lvbj)+ssij)+ttij)+dbl_n*LN2B;
|
||||
B = polI+B0;
|
||||
|
||||
/* End stage I, case abs(x-1) >= 0.03 */
|
||||
if ((y=A+(B+E1)) == A+(B-E1)) return y;
|
||||
|
||||
|
||||
/*--- Stage II, the case abs(x-1) > 0.03 */
|
||||
|
||||
/* Improve the accuracy of r0 */
|
||||
EMULV(p0,r0,sa,sb,t1,t2,t3,t4,t5)
|
||||
t=r0*((ONE-sa)-sb);
|
||||
EADD(r0,t,ra,rb)
|
||||
|
||||
/* Compute w */
|
||||
MUL2(q,ZERO,ra,rb,w,ww,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
|
||||
EADD(A,B0,a0,aa0)
|
||||
|
||||
/* Evaluate polynomial III */
|
||||
s1 = (c3.d+(c4.d+c5.d*w)*w)*w;
|
||||
EADD(c2.d,s1,s2,ss2)
|
||||
MUL2(s2,ss2,w,ww,s3,ss3,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(s3,ss3,w,ww,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(s2,ss2,w,ww,s3,ss3,t1,t2)
|
||||
ADD2(s3,ss3,a0,aa0,a1,aa1,t1,t2)
|
||||
|
||||
/* End stage II, case abs(x-1) >= 0.03 */
|
||||
if ((y=a1+(aa1+E3)) == a1+(aa1-E3)) return y;
|
||||
|
||||
|
||||
/* Final stages. Use multi-precision arithmetic. */
|
||||
stage_n:
|
||||
|
||||
for (i=0; i<M; i++) {
|
||||
p = pr[i];
|
||||
__dbl_mp(x,&mpx,p); __dbl_mp(y,&mpy,p);
|
||||
__mplog(&mpx,&mpy,p);
|
||||
__dbl_mp(e[i].d,&mperr,p);
|
||||
__add(&mpy,&mperr,&mpy1,p); __sub(&mpy,&mperr,&mpy2,p);
|
||||
__mp_dbl(&mpy1,&y1,p); __mp_dbl(&mpy2,&y2,p);
|
||||
if (y1==y2) return y1;
|
||||
}
|
||||
return y1;
|
||||
}
|
98
libgcc-math/dbl-64/e_log10.c
Normal file
98
libgcc-math/dbl-64/e_log10.c
Normal file
|
@ -0,0 +1,98 @@
|
|||
/* @(#)e_log10.c 5.1 93/09/24 */
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_log10.c,v 1.9 1995/05/10 20:45:51 jtc Exp $";
|
||||
#endif
|
||||
|
||||
/* __ieee754_log10(x)
|
||||
* Return the base 10 logarithm of x
|
||||
*
|
||||
* Method :
|
||||
* Let log10_2hi = leading 40 bits of log10(2) and
|
||||
* log10_2lo = log10(2) - log10_2hi,
|
||||
* ivln10 = 1/log(10) rounded.
|
||||
* Then
|
||||
* n = ilogb(x),
|
||||
* if(n<0) n = n+1;
|
||||
* x = scalbn(x,-n);
|
||||
* log10(x) := n*log10_2hi + (n*log10_2lo + ivln10*log(x))
|
||||
*
|
||||
* Note 1:
|
||||
* To guarantee log10(10**n)=n, where 10**n is normal, the rounding
|
||||
* mode must set to Round-to-Nearest.
|
||||
* Note 2:
|
||||
* [1/log(10)] rounded to 53 bits has error .198 ulps;
|
||||
* log10 is monotonic at all binary break points.
|
||||
*
|
||||
* Special cases:
|
||||
* log10(x) is NaN with signal if x < 0;
|
||||
* log10(+INF) is +INF with no signal; log10(0) is -INF with signal;
|
||||
* log10(NaN) is that NaN with no signal;
|
||||
* log10(10**N) = N for N=0,1,...,22.
|
||||
*
|
||||
* Constants:
|
||||
* The hexadecimal values are the intended ones for the following constants.
|
||||
* The decimal values may be used, provided that the compiler will convert
|
||||
* from decimal to binary accurately enough to produce the hexadecimal values
|
||||
* shown.
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const double
|
||||
#else
|
||||
static double
|
||||
#endif
|
||||
two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
|
||||
ivln10 = 4.34294481903251816668e-01, /* 0x3FDBCB7B, 0x1526E50E */
|
||||
log10_2hi = 3.01029995663611771306e-01, /* 0x3FD34413, 0x509F6000 */
|
||||
log10_2lo = 3.69423907715893078616e-13; /* 0x3D59FEF3, 0x11F12B36 */
|
||||
|
||||
#ifdef __STDC__
|
||||
static const double zero = 0.0;
|
||||
#else
|
||||
static double zero = 0.0;
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
double __ieee754_log10(double x)
|
||||
#else
|
||||
double __ieee754_log10(x)
|
||||
double x;
|
||||
#endif
|
||||
{
|
||||
double y,z;
|
||||
int32_t i,k,hx;
|
||||
u_int32_t lx;
|
||||
|
||||
EXTRACT_WORDS(hx,lx,x);
|
||||
|
||||
k=0;
|
||||
if (hx < 0x00100000) { /* x < 2**-1022 */
|
||||
if (((hx&0x7fffffff)|lx)==0)
|
||||
return -two54/(x-x); /* log(+-0)=-inf */
|
||||
if (hx<0) return (x-x)/(x-x); /* log(-#) = NaN */
|
||||
k -= 54; x *= two54; /* subnormal number, scale up x */
|
||||
GET_HIGH_WORD(hx,x);
|
||||
}
|
||||
if (hx >= 0x7ff00000) return x+x;
|
||||
k += (hx>>20)-1023;
|
||||
i = ((u_int32_t)k&0x80000000)>>31;
|
||||
hx = (hx&0x000fffff)|((0x3ff-i)<<20);
|
||||
y = (double)(k+i);
|
||||
SET_HIGH_WORD(x,hx);
|
||||
z = y*log10_2lo + ivln10*__ieee754_log(x);
|
||||
return z+y*log10_2hi;
|
||||
}
|
388
libgcc-math/dbl-64/e_pow.c
Normal file
388
libgcc-math/dbl-64/e_pow.c
Normal file
|
@ -0,0 +1,388 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001, 2002, 2004 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/***************************************************************************/
|
||||
/* MODULE_NAME: upow.c */
|
||||
/* */
|
||||
/* FUNCTIONS: upow */
|
||||
/* power1 */
|
||||
/* my_log2 */
|
||||
/* log1 */
|
||||
/* checkint */
|
||||
/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h */
|
||||
/* halfulp.c mpexp.c mplog.c slowexp.c slowpow.c mpa.c */
|
||||
/* uexp.c upow.c */
|
||||
/* root.tbl uexp.tbl upow.tbl */
|
||||
/* An ultimate power routine. Given two IEEE double machine numbers y,x */
|
||||
/* it computes the correctly rounded (to nearest) value of x^y. */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round to nearest mode of IEEE 754 standard. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
#include "endian.h"
|
||||
#include "upow.h"
|
||||
#include "dla.h"
|
||||
#include "mydefs.h"
|
||||
#include "MathLib.h"
|
||||
#include "upow.tbl"
|
||||
#include "math_private.h"
|
||||
|
||||
|
||||
double __exp1(double x, double xx, double error);
|
||||
static double log1(double x, double *delta, double *error);
|
||||
static double my_log2(double x, double *delta, double *error);
|
||||
double __slowpow(double x, double y,double z);
|
||||
static double power1(double x, double y);
|
||||
static int checkint(double x);
|
||||
|
||||
/***************************************************************************/
|
||||
/* An ultimate power routine. Given two IEEE double machine numbers y,x */
|
||||
/* it computes the correctly rounded (to nearest) value of X^y. */
|
||||
/***************************************************************************/
|
||||
double __ieee754_pow(double x, double y) {
|
||||
double z,a,aa,error, t,a1,a2,y1,y2;
|
||||
#if 0
|
||||
double gor=1.0;
|
||||
#endif
|
||||
mynumber u,v;
|
||||
int k;
|
||||
int4 qx,qy;
|
||||
v.x=y;
|
||||
u.x=x;
|
||||
if (v.i[LOW_HALF] == 0) { /* of y */
|
||||
qx = u.i[HIGH_HALF]&0x7fffffff;
|
||||
/* Checking if x is not too small to compute */
|
||||
if (((qx==0x7ff00000)&&(u.i[LOW_HALF]!=0))||(qx>0x7ff00000)) return NaNQ.x;
|
||||
if (y == 1.0) return x;
|
||||
if (y == 2.0) return x*x;
|
||||
if (y == -1.0) return 1.0/x;
|
||||
if (y == 0) return 1.0;
|
||||
}
|
||||
/* else */
|
||||
if(((u.i[HIGH_HALF]>0 && u.i[HIGH_HALF]<0x7ff00000)|| /* x>0 and not x->0 */
|
||||
(u.i[HIGH_HALF]==0 && u.i[LOW_HALF]!=0)) &&
|
||||
/* 2^-1023< x<= 2^-1023 * 0x1.0000ffffffff */
|
||||
(v.i[HIGH_HALF]&0x7fffffff) < 0x4ff00000) { /* if y<-1 or y>1 */
|
||||
z = log1(x,&aa,&error); /* x^y =e^(y log (X)) */
|
||||
t = y*134217729.0;
|
||||
y1 = t - (t-y);
|
||||
y2 = y - y1;
|
||||
t = z*134217729.0;
|
||||
a1 = t - (t-z);
|
||||
a2 = (z - a1)+aa;
|
||||
a = y1*a1;
|
||||
aa = y2*a1 + y*a2;
|
||||
a1 = a+aa;
|
||||
a2 = (a-a1)+aa;
|
||||
error = error*ABS(y);
|
||||
t = __exp1(a1,a2,1.9e16*error); /* return -10 or 0 if wasn't computed exactly */
|
||||
return (t>0)?t:power1(x,y);
|
||||
}
|
||||
|
||||
if (x == 0) {
|
||||
if (((v.i[HIGH_HALF] & 0x7fffffff) == 0x7ff00000 && v.i[LOW_HALF] != 0)
|
||||
|| (v.i[HIGH_HALF] & 0x7fffffff) > 0x7ff00000)
|
||||
return y;
|
||||
if (ABS(y) > 1.0e20) return (y>0)?0:INF.x;
|
||||
k = checkint(y);
|
||||
if (k == -1)
|
||||
return y < 0 ? 1.0/x : x;
|
||||
else
|
||||
return y < 0 ? 1.0/ABS(x) : 0.0; /* return 0 */
|
||||
}
|
||||
/* if x<0 */
|
||||
if (u.i[HIGH_HALF] < 0) {
|
||||
k = checkint(y);
|
||||
if (k==0) {
|
||||
if ((v.i[HIGH_HALF] & 0x7fffffff) == 0x7ff00000 && v.i[LOW_HALF] == 0) {
|
||||
if (x == -1.0) return 1.0;
|
||||
else if (x > -1.0) return v.i[HIGH_HALF] < 0 ? INF.x : 0.0;
|
||||
else return v.i[HIGH_HALF] < 0 ? 0.0 : INF.x;
|
||||
}
|
||||
else if (u.i[HIGH_HALF] == 0xfff00000 && u.i[LOW_HALF] == 0)
|
||||
return y < 0 ? 0.0 : INF.x;
|
||||
return NaNQ.x; /* y not integer and x<0 */
|
||||
}
|
||||
else if (u.i[HIGH_HALF] == 0xfff00000 && u.i[LOW_HALF] == 0)
|
||||
{
|
||||
if (k < 0)
|
||||
return y < 0 ? nZERO.x : nINF.x;
|
||||
else
|
||||
return y < 0 ? 0.0 : INF.x;
|
||||
}
|
||||
return (k==1)?__ieee754_pow(-x,y):-__ieee754_pow(-x,y); /* if y even or odd */
|
||||
}
|
||||
/* x>0 */
|
||||
qx = u.i[HIGH_HALF]&0x7fffffff; /* no sign */
|
||||
qy = v.i[HIGH_HALF]&0x7fffffff; /* no sign */
|
||||
|
||||
if (qx > 0x7ff00000 || (qx == 0x7ff00000 && u.i[LOW_HALF] != 0)) return NaNQ.x;
|
||||
/* if 0<x<2^-0x7fe */
|
||||
if (qy > 0x7ff00000 || (qy == 0x7ff00000 && v.i[LOW_HALF] != 0))
|
||||
return x == 1.0 ? 1.0 : NaNQ.x;
|
||||
/* if y<2^-0x7fe */
|
||||
|
||||
if (qx == 0x7ff00000) /* x= 2^-0x3ff */
|
||||
{if (y == 0) return NaNQ.x;
|
||||
return (y>0)?x:0; }
|
||||
|
||||
if (qy > 0x45f00000 && qy < 0x7ff00000) {
|
||||
if (x == 1.0) return 1.0;
|
||||
if (y>0) return (x>1.0)?INF.x:0;
|
||||
if (y<0) return (x<1.0)?INF.x:0;
|
||||
}
|
||||
|
||||
if (x == 1.0) return 1.0;
|
||||
if (y>0) return (x>1.0)?INF.x:0;
|
||||
if (y<0) return (x<1.0)?INF.x:0;
|
||||
return 0; /* unreachable, to make the compiler happy */
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
/* Computing x^y using more accurate but more slow log routine */
|
||||
/**************************************************************************/
|
||||
static double power1(double x, double y) {
|
||||
double z,a,aa,error, t,a1,a2,y1,y2;
|
||||
z = my_log2(x,&aa,&error);
|
||||
t = y*134217729.0;
|
||||
y1 = t - (t-y);
|
||||
y2 = y - y1;
|
||||
t = z*134217729.0;
|
||||
a1 = t - (t-z);
|
||||
a2 = z - a1;
|
||||
a = y*z;
|
||||
aa = ((y1*a1-a)+y1*a2+y2*a1)+y2*a2+aa*y;
|
||||
a1 = a+aa;
|
||||
a2 = (a-a1)+aa;
|
||||
error = error*ABS(y);
|
||||
t = __exp1(a1,a2,1.9e16*error);
|
||||
return (t >= 0)?t:__slowpow(x,y,z);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* Computing log(x) (x is left argument). The result is the returned double */
|
||||
/* + the parameter delta. */
|
||||
/* The result is bounded by error (rightmost argument) */
|
||||
/****************************************************************************/
|
||||
static double log1(double x, double *delta, double *error) {
|
||||
int i,j,m;
|
||||
#if 0
|
||||
int n;
|
||||
#endif
|
||||
double uu,vv,eps,nx,e,e1,e2,t,t1,t2,res,add=0;
|
||||
#if 0
|
||||
double cor;
|
||||
#endif
|
||||
mynumber u,v;
|
||||
#ifdef BIG_ENDI
|
||||
mynumber
|
||||
/**/ two52 = {{0x43300000, 0x00000000}}; /* 2**52 */
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
mynumber
|
||||
/**/ two52 = {{0x00000000, 0x43300000}}; /* 2**52 */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
u.x = x;
|
||||
m = u.i[HIGH_HALF];
|
||||
*error = 0;
|
||||
*delta = 0;
|
||||
if (m < 0x00100000) /* 1<x<2^-1007 */
|
||||
{ x = x*t52.x; add = -52.0; u.x = x; m = u.i[HIGH_HALF];}
|
||||
|
||||
if ((m&0x000fffff) < 0x0006a09e)
|
||||
{u.i[HIGH_HALF] = (m&0x000fffff)|0x3ff00000; two52.i[LOW_HALF]=(m>>20); }
|
||||
else
|
||||
{u.i[HIGH_HALF] = (m&0x000fffff)|0x3fe00000; two52.i[LOW_HALF]=(m>>20)+1; }
|
||||
|
||||
v.x = u.x + bigu.x;
|
||||
uu = v.x - bigu.x;
|
||||
i = (v.i[LOW_HALF]&0x000003ff)<<2;
|
||||
if (two52.i[LOW_HALF] == 1023) /* nx = 0 */
|
||||
{
|
||||
if (i > 1192 && i < 1208) /* |x-1| < 1.5*2**-10 */
|
||||
{
|
||||
t = x - 1.0;
|
||||
t1 = (t+5.0e6)-5.0e6;
|
||||
t2 = t-t1;
|
||||
e1 = t - 0.5*t1*t1;
|
||||
e2 = t*t*t*(r3+t*(r4+t*(r5+t*(r6+t*(r7+t*r8)))))-0.5*t2*(t+t1);
|
||||
res = e1+e2;
|
||||
*error = 1.0e-21*ABS(t);
|
||||
*delta = (e1-res)+e2;
|
||||
return res;
|
||||
} /* |x-1| < 1.5*2**-10 */
|
||||
else
|
||||
{
|
||||
v.x = u.x*(ui.x[i]+ui.x[i+1])+bigv.x;
|
||||
vv = v.x-bigv.x;
|
||||
j = v.i[LOW_HALF]&0x0007ffff;
|
||||
j = j+j+j;
|
||||
eps = u.x - uu*vv;
|
||||
e1 = eps*ui.x[i];
|
||||
e2 = eps*(ui.x[i+1]+vj.x[j]*(ui.x[i]+ui.x[i+1]));
|
||||
e = e1+e2;
|
||||
e2 = ((e1-e)+e2);
|
||||
t=ui.x[i+2]+vj.x[j+1];
|
||||
t1 = t+e;
|
||||
t2 = (((t-t1)+e)+(ui.x[i+3]+vj.x[j+2]))+e2+e*e*(p2+e*(p3+e*p4));
|
||||
res=t1+t2;
|
||||
*error = 1.0e-24;
|
||||
*delta = (t1-res)+t2;
|
||||
return res;
|
||||
}
|
||||
} /* nx = 0 */
|
||||
else /* nx != 0 */
|
||||
{
|
||||
eps = u.x - uu;
|
||||
nx = (two52.x - two52e.x)+add;
|
||||
e1 = eps*ui.x[i];
|
||||
e2 = eps*ui.x[i+1];
|
||||
e=e1+e2;
|
||||
e2 = (e1-e)+e2;
|
||||
t=nx*ln2a.x+ui.x[i+2];
|
||||
t1=t+e;
|
||||
t2=(((t-t1)+e)+nx*ln2b.x+ui.x[i+3]+e2)+e*e*(q2+e*(q3+e*(q4+e*(q5+e*q6))));
|
||||
res = t1+t2;
|
||||
*error = 1.0e-21;
|
||||
*delta = (t1-res)+t2;
|
||||
return res;
|
||||
} /* nx != 0 */
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* More slow but more accurate routine of log */
|
||||
/* Computing log(x)(x is left argument).The result is return double + delta.*/
|
||||
/* The result is bounded by error (right argument) */
|
||||
/****************************************************************************/
|
||||
static double my_log2(double x, double *delta, double *error) {
|
||||
int i,j,m;
|
||||
#if 0
|
||||
int n;
|
||||
#endif
|
||||
double uu,vv,eps,nx,e,e1,e2,t,t1,t2,res,add=0;
|
||||
#if 0
|
||||
double cor;
|
||||
#endif
|
||||
double ou1,ou2,lu1,lu2,ov,lv1,lv2,a,a1,a2;
|
||||
double y,yy,z,zz,j1,j2,j3,j4,j5,j6,j7,j8;
|
||||
mynumber u,v;
|
||||
#ifdef BIG_ENDI
|
||||
mynumber
|
||||
/**/ two52 = {{0x43300000, 0x00000000}}; /* 2**52 */
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
mynumber
|
||||
/**/ two52 = {{0x00000000, 0x43300000}}; /* 2**52 */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
u.x = x;
|
||||
m = u.i[HIGH_HALF];
|
||||
*error = 0;
|
||||
*delta = 0;
|
||||
add=0;
|
||||
if (m<0x00100000) { /* x < 2^-1022 */
|
||||
x = x*t52.x; add = -52.0; u.x = x; m = u.i[HIGH_HALF]; }
|
||||
|
||||
if ((m&0x000fffff) < 0x0006a09e)
|
||||
{u.i[HIGH_HALF] = (m&0x000fffff)|0x3ff00000; two52.i[LOW_HALF]=(m>>20); }
|
||||
else
|
||||
{u.i[HIGH_HALF] = (m&0x000fffff)|0x3fe00000; two52.i[LOW_HALF]=(m>>20)+1; }
|
||||
|
||||
v.x = u.x + bigu.x;
|
||||
uu = v.x - bigu.x;
|
||||
i = (v.i[LOW_HALF]&0x000003ff)<<2;
|
||||
/*------------------------------------- |x-1| < 2**-11------------------------------- */
|
||||
if ((two52.i[LOW_HALF] == 1023) && (i == 1200))
|
||||
{
|
||||
t = x - 1.0;
|
||||
EMULV(t,s3,y,yy,j1,j2,j3,j4,j5);
|
||||
ADD2(-0.5,0,y,yy,z,zz,j1,j2);
|
||||
MUL2(t,0,z,zz,y,yy,j1,j2,j3,j4,j5,j6,j7,j8);
|
||||
MUL2(t,0,y,yy,z,zz,j1,j2,j3,j4,j5,j6,j7,j8);
|
||||
|
||||
e1 = t+z;
|
||||
e2 = (((t-e1)+z)+zz)+t*t*t*(ss3+t*(s4+t*(s5+t*(s6+t*(s7+t*s8)))));
|
||||
res = e1+e2;
|
||||
*error = 1.0e-25*ABS(t);
|
||||
*delta = (e1-res)+e2;
|
||||
return res;
|
||||
}
|
||||
/*----------------------------- |x-1| > 2**-11 -------------------------- */
|
||||
else
|
||||
{ /*Computing log(x) according to log table */
|
||||
nx = (two52.x - two52e.x)+add;
|
||||
ou1 = ui.x[i];
|
||||
ou2 = ui.x[i+1];
|
||||
lu1 = ui.x[i+2];
|
||||
lu2 = ui.x[i+3];
|
||||
v.x = u.x*(ou1+ou2)+bigv.x;
|
||||
vv = v.x-bigv.x;
|
||||
j = v.i[LOW_HALF]&0x0007ffff;
|
||||
j = j+j+j;
|
||||
eps = u.x - uu*vv;
|
||||
ov = vj.x[j];
|
||||
lv1 = vj.x[j+1];
|
||||
lv2 = vj.x[j+2];
|
||||
a = (ou1+ou2)*(1.0+ov);
|
||||
a1 = (a+1.0e10)-1.0e10;
|
||||
a2 = a*(1.0-a1*uu*vv);
|
||||
e1 = eps*a1;
|
||||
e2 = eps*a2;
|
||||
e = e1+e2;
|
||||
e2 = (e1-e)+e2;
|
||||
t=nx*ln2a.x+lu1+lv1;
|
||||
t1 = t+e;
|
||||
t2 = (((t-t1)+e)+(lu2+lv2+nx*ln2b.x+e2))+e*e*(p2+e*(p3+e*p4));
|
||||
res=t1+t2;
|
||||
*error = 1.0e-27;
|
||||
*delta = (t1-res)+t2;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
/**********************************************************************/
|
||||
/* Routine receives a double x and checks if it is an integer. If not */
|
||||
/* it returns 0, else it returns 1 if even or -1 if odd. */
|
||||
/**********************************************************************/
|
||||
static int checkint(double x) {
|
||||
union {int4 i[2]; double x;} u;
|
||||
int k,m,n;
|
||||
#if 0
|
||||
int l;
|
||||
#endif
|
||||
u.x = x;
|
||||
m = u.i[HIGH_HALF]&0x7fffffff; /* no sign */
|
||||
if (m >= 0x7ff00000) return 0; /* x is +/-inf or NaN */
|
||||
if (m >= 0x43400000) return 1; /* |x| >= 2**53 */
|
||||
if (m < 0x40000000) return 0; /* |x| < 2, can not be 0 or 1 */
|
||||
n = u.i[LOW_HALF];
|
||||
k = (m>>20)-1023; /* 1 <= k <= 52 */
|
||||
if (k == 52) return (n&1)? -1:1; /* odd or even*/
|
||||
if (k>20) {
|
||||
if (n<<(k-20)) return 0; /* if not integer */
|
||||
return (n<<(k-21))?-1:1;
|
||||
}
|
||||
if (n) return 0; /*if not integer*/
|
||||
if (k == 20) return (m&1)? -1:1;
|
||||
if (m<<(k+12)) return 0;
|
||||
return (m<<(k+11))?-1:1;
|
||||
}
|
183
libgcc-math/dbl-64/e_rem_pio2.c
Normal file
183
libgcc-math/dbl-64/e_rem_pio2.c
Normal file
|
@ -0,0 +1,183 @@
|
|||
/* @(#)e_rem_pio2.c 5.1 93/09/24 */
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_rem_pio2.c,v 1.8 1995/05/10 20:46:02 jtc Exp $";
|
||||
#endif
|
||||
|
||||
/* __ieee754_rem_pio2(x,y)
|
||||
*
|
||||
* return the remainder of x rem pi/2 in y[0]+y[1]
|
||||
* use __kernel_rem_pio2()
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
/*
|
||||
* Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
|
||||
*/
|
||||
#ifdef __STDC__
|
||||
static const int32_t two_over_pi[] = {
|
||||
#else
|
||||
static int32_t two_over_pi[] = {
|
||||
#endif
|
||||
0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62,
|
||||
0x95993C, 0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, 0x246E3A,
|
||||
0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129,
|
||||
0xA73EE8, 0x8235F5, 0x2EBB44, 0x84E99C, 0x7026B4, 0x5F7E41,
|
||||
0x3991D6, 0x398353, 0x39F49C, 0x845F8B, 0xBDF928, 0x3B1FF8,
|
||||
0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, 0x367ECF,
|
||||
0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5,
|
||||
0xF17B3D, 0x0739F7, 0x8A5292, 0xEA6BFB, 0x5FB11F, 0x8D5D08,
|
||||
0x560330, 0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3,
|
||||
0x91615E, 0xE61B08, 0x659985, 0x5F14A0, 0x68408D, 0xFFD880,
|
||||
0x4D7327, 0x310606, 0x1556CA, 0x73A8C9, 0x60E27B, 0xC08C6B,
|
||||
};
|
||||
|
||||
#ifdef __STDC__
|
||||
static const int32_t npio2_hw[] = {
|
||||
#else
|
||||
static int32_t npio2_hw[] = {
|
||||
#endif
|
||||
0x3FF921FB, 0x400921FB, 0x4012D97C, 0x401921FB, 0x401F6A7A, 0x4022D97C,
|
||||
0x4025FDBB, 0x402921FB, 0x402C463A, 0x402F6A7A, 0x4031475C, 0x4032D97C,
|
||||
0x40346B9C, 0x4035FDBB, 0x40378FDB, 0x403921FB, 0x403AB41B, 0x403C463A,
|
||||
0x403DD85A, 0x403F6A7A, 0x40407E4C, 0x4041475C, 0x4042106C, 0x4042D97C,
|
||||
0x4043A28C, 0x40446B9C, 0x404534AC, 0x4045FDBB, 0x4046C6CB, 0x40478FDB,
|
||||
0x404858EB, 0x404921FB,
|
||||
};
|
||||
|
||||
/*
|
||||
* invpio2: 53 bits of 2/pi
|
||||
* pio2_1: first 33 bit of pi/2
|
||||
* pio2_1t: pi/2 - pio2_1
|
||||
* pio2_2: second 33 bit of pi/2
|
||||
* pio2_2t: pi/2 - (pio2_1+pio2_2)
|
||||
* pio2_3: third 33 bit of pi/2
|
||||
* pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3)
|
||||
*/
|
||||
|
||||
#ifdef __STDC__
|
||||
static const double
|
||||
#else
|
||||
static double
|
||||
#endif
|
||||
zero = 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
|
||||
half = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */
|
||||
two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */
|
||||
invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
|
||||
pio2_1 = 1.57079632673412561417e+00, /* 0x3FF921FB, 0x54400000 */
|
||||
pio2_1t = 6.07710050650619224932e-11, /* 0x3DD0B461, 0x1A626331 */
|
||||
pio2_2 = 6.07710050630396597660e-11, /* 0x3DD0B461, 0x1A600000 */
|
||||
pio2_2t = 2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */
|
||||
pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */
|
||||
pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */
|
||||
|
||||
#ifdef __STDC__
|
||||
int32_t __ieee754_rem_pio2(double x, double *y)
|
||||
#else
|
||||
int32_t __ieee754_rem_pio2(x,y)
|
||||
double x,y[];
|
||||
#endif
|
||||
{
|
||||
double z,w,t,r,fn;
|
||||
double tx[3];
|
||||
int32_t e0,i,j,nx,n,ix,hx;
|
||||
u_int32_t low;
|
||||
|
||||
GET_HIGH_WORD(hx,x); /* high word of x */
|
||||
ix = hx&0x7fffffff;
|
||||
if(ix<=0x3fe921fb) /* |x| ~<= pi/4 , no need for reduction */
|
||||
{y[0] = x; y[1] = 0; return 0;}
|
||||
if(ix<0x4002d97c) { /* |x| < 3pi/4, special case with n=+-1 */
|
||||
if(hx>0) {
|
||||
z = x - pio2_1;
|
||||
if(ix!=0x3ff921fb) { /* 33+53 bit pi is good enough */
|
||||
y[0] = z - pio2_1t;
|
||||
y[1] = (z-y[0])-pio2_1t;
|
||||
} else { /* near pi/2, use 33+33+53 bit pi */
|
||||
z -= pio2_2;
|
||||
y[0] = z - pio2_2t;
|
||||
y[1] = (z-y[0])-pio2_2t;
|
||||
}
|
||||
return 1;
|
||||
} else { /* negative x */
|
||||
z = x + pio2_1;
|
||||
if(ix!=0x3ff921fb) { /* 33+53 bit pi is good enough */
|
||||
y[0] = z + pio2_1t;
|
||||
y[1] = (z-y[0])+pio2_1t;
|
||||
} else { /* near pi/2, use 33+33+53 bit pi */
|
||||
z += pio2_2;
|
||||
y[0] = z + pio2_2t;
|
||||
y[1] = (z-y[0])+pio2_2t;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if(ix<=0x413921fb) { /* |x| ~<= 2^19*(pi/2), medium size */
|
||||
t = fabs(x);
|
||||
n = (int32_t) (t*invpio2+half);
|
||||
fn = (double)n;
|
||||
r = t-fn*pio2_1;
|
||||
w = fn*pio2_1t; /* 1st round good to 85 bit */
|
||||
if(n<32&&ix!=npio2_hw[n-1]) {
|
||||
y[0] = r-w; /* quick check no cancellation */
|
||||
} else {
|
||||
u_int32_t high;
|
||||
j = ix>>20;
|
||||
y[0] = r-w;
|
||||
GET_HIGH_WORD(high,y[0]);
|
||||
i = j-((high>>20)&0x7ff);
|
||||
if(i>16) { /* 2nd iteration needed, good to 118 */
|
||||
t = r;
|
||||
w = fn*pio2_2;
|
||||
r = t-w;
|
||||
w = fn*pio2_2t-((t-r)-w);
|
||||
y[0] = r-w;
|
||||
GET_HIGH_WORD(high,y[0]);
|
||||
i = j-((high>>20)&0x7ff);
|
||||
if(i>49) { /* 3rd iteration need, 151 bits acc */
|
||||
t = r; /* will cover all possible cases */
|
||||
w = fn*pio2_3;
|
||||
r = t-w;
|
||||
w = fn*pio2_3t-((t-r)-w);
|
||||
y[0] = r-w;
|
||||
}
|
||||
}
|
||||
}
|
||||
y[1] = (r-y[0])-w;
|
||||
if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;}
|
||||
else return n;
|
||||
}
|
||||
/*
|
||||
* all other (large) arguments
|
||||
*/
|
||||
if(ix>=0x7ff00000) { /* x is inf or NaN */
|
||||
y[0]=y[1]=x-x; return 0;
|
||||
}
|
||||
/* set z = scalbn(|x|,ilogb(x)-23) */
|
||||
GET_LOW_WORD(low,x);
|
||||
SET_LOW_WORD(z,low);
|
||||
e0 = (ix>>20)-1046; /* e0 = ilogb(z)-23; */
|
||||
SET_HIGH_WORD(z, ix - ((int32_t)(e0<<20)));
|
||||
for(i=0;i<2;i++) {
|
||||
tx[i] = (double)((int32_t)(z));
|
||||
z = (z-tx[i])*two24;
|
||||
}
|
||||
tx[2] = z;
|
||||
nx = 3;
|
||||
while(tx[nx-1]==zero) nx--; /* skip zero term */
|
||||
n = __kernel_rem_pio2(tx,y,e0,nx,2,two_over_pi);
|
||||
if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;}
|
||||
return n;
|
||||
}
|
88
libgcc-math/dbl-64/e_sqrt.c
Normal file
88
libgcc-math/dbl-64/e_sqrt.c
Normal file
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/*********************************************************************/
|
||||
/* MODULE_NAME: uroot.c */
|
||||
/* */
|
||||
/* FUNCTION: usqrt */
|
||||
/* */
|
||||
/* FILES NEEDED: dla.h endian.h mydefs.h uroot.h */
|
||||
/* uroot.tbl */
|
||||
/* */
|
||||
/* An ultimate sqrt routine. Given an IEEE double machine number x */
|
||||
/* it computes the correctly rounded (to nearest) value of square */
|
||||
/* root of x. */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round to nearest mode of IEEE 754 standard. */
|
||||
/* */
|
||||
/*********************************************************************/
|
||||
|
||||
#include "endian.h"
|
||||
#include "mydefs.h"
|
||||
#include "dla.h"
|
||||
#include "MathLib.h"
|
||||
#include "root.tbl"
|
||||
#include "math_private.h"
|
||||
|
||||
/*********************************************************************/
|
||||
/* An ultimate sqrt routine. Given an IEEE double machine number x */
|
||||
/* it computes the correctly rounded (to nearest) value of square */
|
||||
/* root of x. */
|
||||
/*********************************************************************/
|
||||
double __ieee754_sqrt(double x) {
|
||||
#include "uroot.h"
|
||||
static const double
|
||||
rt0 = 9.99999999859990725855365213134618E-01,
|
||||
rt1 = 4.99999999495955425917856814202739E-01,
|
||||
rt2 = 3.75017500867345182581453026130850E-01,
|
||||
rt3 = 3.12523626554518656309172508769531E-01;
|
||||
static const double big = 134217728.0;
|
||||
double y,t,del,res,res1,hy,z,zz,p,hx,tx,ty,s;
|
||||
mynumber a,c={{0,0}};
|
||||
int4 k;
|
||||
|
||||
a.x=x;
|
||||
k=a.i[HIGH_HALF];
|
||||
a.i[HIGH_HALF]=(k&0x001fffff)|0x3fe00000;
|
||||
t=inroot[(k&0x001fffff)>>14];
|
||||
s=a.x;
|
||||
/*----------------- 2^-1022 <= | x |< 2^1024 -----------------*/
|
||||
if (k>0x000fffff && k<0x7ff00000) {
|
||||
y=1.0-t*(t*s);
|
||||
t=t*(rt0+y*(rt1+y*(rt2+y*rt3)));
|
||||
c.i[HIGH_HALF]=0x20000000+((k&0x7fe00000)>>1);
|
||||
y=t*s;
|
||||
hy=(y+big)-big;
|
||||
del=0.5*t*((s-hy*hy)-(y-hy)*(y+hy));
|
||||
res=y+del;
|
||||
if (res == (res+1.002*((y-res)+del))) return res*c.x;
|
||||
else {
|
||||
res1=res+1.5*((y-res)+del);
|
||||
EMULV(res,res1,z,zz,p,hx,tx,hy,ty); /* (z+zz)=res*res1 */
|
||||
return ((((z-s)+zz)<0)?max(res,res1):min(res,res1))*c.x;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((k & 0x7ff00000) == 0x7ff00000)
|
||||
return x*x+x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
|
||||
if (x==0) return x; /* sqrt(+0)=+0, sqrt(-0)=-0 */
|
||||
if (k<0) return (x-x)/(x-x); /* sqrt(-ve)=sNaN */
|
||||
return tm256.x*__ieee754_sqrt(x*t512.x);
|
||||
}
|
||||
}
|
123
libgcc-math/dbl-64/halfulp.c
Normal file
123
libgcc-math/dbl-64/halfulp.c
Normal file
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001, 2005 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:halfulp.c */
|
||||
/* */
|
||||
/* FUNCTIONS:halfulp */
|
||||
/* FILES NEEDED: mydefs.h dla.h endian.h */
|
||||
/* uroot.c */
|
||||
/* */
|
||||
/*Routine halfulp(double x, double y) computes x^y where result does */
|
||||
/*not need rounding. If the result is closer to 0 than can be */
|
||||
/*represented it returns 0. */
|
||||
/* In the following cases the function does not compute anything */
|
||||
/*and returns a negative number: */
|
||||
/*1. if the result needs rounding, */
|
||||
/*2. if y is outside the interval [0, 2^20-1], */
|
||||
/*3. if x can be represented by x=2**n for some integer n. */
|
||||
/************************************************************************/
|
||||
|
||||
#include "endian.h"
|
||||
#include "mydefs.h"
|
||||
#include "dla.h"
|
||||
#include "math_private.h"
|
||||
|
||||
double __ieee754_sqrt(double x);
|
||||
|
||||
static const int4 tab54[32] = {
|
||||
262143, 11585, 1782, 511, 210, 107, 63, 42,
|
||||
30, 22, 17, 14, 12, 10, 9, 7,
|
||||
7, 6, 5, 5, 5, 4, 4, 4,
|
||||
3, 3, 3, 3, 3, 3, 3, 3 };
|
||||
|
||||
|
||||
double __halfulp(double x, double y)
|
||||
{
|
||||
mynumber v;
|
||||
double z,u,uu,j1,j2,j3,j4,j5;
|
||||
int4 k,l,m,n;
|
||||
if (y <= 0) { /*if power is negative or zero */
|
||||
v.x = y;
|
||||
if (v.i[LOW_HALF] != 0) return -10.0;
|
||||
v.x = x;
|
||||
if (v.i[LOW_HALF] != 0) return -10.0;
|
||||
if ((v.i[HIGH_HALF]&0x000fffff) != 0) return -10; /* if x =2 ^ n */
|
||||
k = ((v.i[HIGH_HALF]&0x7fffffff)>>20)-1023; /* find this n */
|
||||
z = (double) k;
|
||||
return (z*y == -1075.0)?0: -10.0;
|
||||
}
|
||||
/* if y > 0 */
|
||||
v.x = y;
|
||||
if (v.i[LOW_HALF] != 0) return -10.0;
|
||||
|
||||
v.x=x;
|
||||
/* case where x = 2**n for some integer n */
|
||||
if (((v.i[HIGH_HALF]&0x000fffff)|v.i[LOW_HALF]) == 0) {
|
||||
k=(v.i[HIGH_HALF]>>20)-1023;
|
||||
return (((double) k)*y == -1075.0)?0:-10.0;
|
||||
}
|
||||
|
||||
v.x = y;
|
||||
k = v.i[HIGH_HALF];
|
||||
m = k<<12;
|
||||
l = 0;
|
||||
while (m)
|
||||
{m = m<<1; l++; }
|
||||
n = (k&0x000fffff)|0x00100000;
|
||||
n = n>>(20-l); /* n is the odd integer of y */
|
||||
k = ((k>>20) -1023)-l; /* y = n*2**k */
|
||||
if (k>5) return -10.0;
|
||||
if (k>0) for (;k>0;k--) n *= 2;
|
||||
if (n > 34) return -10.0;
|
||||
k = -k;
|
||||
if (k>5) return -10.0;
|
||||
|
||||
/* now treat x */
|
||||
while (k>0) {
|
||||
z = __ieee754_sqrt(x);
|
||||
EMULV(z,z,u,uu,j1,j2,j3,j4,j5);
|
||||
if (((u-x)+uu) != 0) break;
|
||||
x = z;
|
||||
k--;
|
||||
}
|
||||
if (k) return -10.0;
|
||||
|
||||
/* it is impossible that n == 2, so the mantissa of x must be short */
|
||||
|
||||
v.x = x;
|
||||
if (v.i[LOW_HALF]) return -10.0;
|
||||
k = v.i[HIGH_HALF];
|
||||
m = k<<12;
|
||||
l = 0;
|
||||
while (m) {m = m<<1; l++; }
|
||||
m = (k&0x000fffff)|0x00100000;
|
||||
m = m>>(20-l); /* m is the odd integer of x */
|
||||
|
||||
/* now check whether the length of m**n is at most 54 bits */
|
||||
|
||||
if (m > tab54[n-3]) return -10.0;
|
||||
|
||||
/* yes, it is - now compute x**n by simple multiplications */
|
||||
|
||||
u = x;
|
||||
for (k=1;k<n;k++) u = u*x;
|
||||
return u;
|
||||
}
|
320
libgcc-math/dbl-64/k_rem_pio2.c
Normal file
320
libgcc-math/dbl-64/k_rem_pio2.c
Normal file
|
@ -0,0 +1,320 @@
|
|||
/* @(#)k_rem_pio2.c 5.1 93/09/24 */
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: k_rem_pio2.c,v 1.7 1995/05/10 20:46:25 jtc Exp $";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* __kernel_rem_pio2(x,y,e0,nx,prec,ipio2)
|
||||
* double x[],y[]; int e0,nx,prec; int ipio2[];
|
||||
*
|
||||
* __kernel_rem_pio2 return the last three digits of N with
|
||||
* y = x - N*pi/2
|
||||
* so that |y| < pi/2.
|
||||
*
|
||||
* The method is to compute the integer (mod 8) and fraction parts of
|
||||
* (2/pi)*x without doing the full multiplication. In general we
|
||||
* skip the part of the product that are known to be a huge integer (
|
||||
* more accurately, = 0 mod 8 ). Thus the number of operations are
|
||||
* independent of the exponent of the input.
|
||||
*
|
||||
* (2/pi) is represented by an array of 24-bit integers in ipio2[].
|
||||
*
|
||||
* Input parameters:
|
||||
* x[] The input value (must be positive) is broken into nx
|
||||
* pieces of 24-bit integers in double precision format.
|
||||
* x[i] will be the i-th 24 bit of x. The scaled exponent
|
||||
* of x[0] is given in input parameter e0 (i.e., x[0]*2^e0
|
||||
* match x's up to 24 bits.
|
||||
*
|
||||
* Example of breaking a double positive z into x[0]+x[1]+x[2]:
|
||||
* e0 = ilogb(z)-23
|
||||
* z = scalbn(z,-e0)
|
||||
* for i = 0,1,2
|
||||
* x[i] = floor(z)
|
||||
* z = (z-x[i])*2**24
|
||||
*
|
||||
*
|
||||
* y[] ouput result in an array of double precision numbers.
|
||||
* The dimension of y[] is:
|
||||
* 24-bit precision 1
|
||||
* 53-bit precision 2
|
||||
* 64-bit precision 2
|
||||
* 113-bit precision 3
|
||||
* The actual value is the sum of them. Thus for 113-bit
|
||||
* precision, one may have to do something like:
|
||||
*
|
||||
* long double t,w,r_head, r_tail;
|
||||
* t = (long double)y[2] + (long double)y[1];
|
||||
* w = (long double)y[0];
|
||||
* r_head = t+w;
|
||||
* r_tail = w - (r_head - t);
|
||||
*
|
||||
* e0 The exponent of x[0]
|
||||
*
|
||||
* nx dimension of x[]
|
||||
*
|
||||
* prec an integer indicating the precision:
|
||||
* 0 24 bits (single)
|
||||
* 1 53 bits (double)
|
||||
* 2 64 bits (extended)
|
||||
* 3 113 bits (quad)
|
||||
*
|
||||
* ipio2[]
|
||||
* integer array, contains the (24*i)-th to (24*i+23)-th
|
||||
* bit of 2/pi after binary point. The corresponding
|
||||
* floating value is
|
||||
*
|
||||
* ipio2[i] * 2^(-24(i+1)).
|
||||
*
|
||||
* External function:
|
||||
* double scalbn(), floor();
|
||||
*
|
||||
*
|
||||
* Here is the description of some local variables:
|
||||
*
|
||||
* jk jk+1 is the initial number of terms of ipio2[] needed
|
||||
* in the computation. The recommended value is 2,3,4,
|
||||
* 6 for single, double, extended,and quad.
|
||||
*
|
||||
* jz local integer variable indicating the number of
|
||||
* terms of ipio2[] used.
|
||||
*
|
||||
* jx nx - 1
|
||||
*
|
||||
* jv index for pointing to the suitable ipio2[] for the
|
||||
* computation. In general, we want
|
||||
* ( 2^e0*x[0] * ipio2[jv-1]*2^(-24jv) )/8
|
||||
* is an integer. Thus
|
||||
* e0-3-24*jv >= 0 or (e0-3)/24 >= jv
|
||||
* Hence jv = max(0,(e0-3)/24).
|
||||
*
|
||||
* jp jp+1 is the number of terms in PIo2[] needed, jp = jk.
|
||||
*
|
||||
* q[] double array with integral value, representing the
|
||||
* 24-bits chunk of the product of x and 2/pi.
|
||||
*
|
||||
* q0 the corresponding exponent of q[0]. Note that the
|
||||
* exponent for q[i] would be q0-24*i.
|
||||
*
|
||||
* PIo2[] double precision array, obtained by cutting pi/2
|
||||
* into 24 bits chunks.
|
||||
*
|
||||
* f[] ipio2[] in floating point
|
||||
*
|
||||
* iq[] integer array by breaking up q[] in 24-bits chunk.
|
||||
*
|
||||
* fq[] final product of x*(2/pi) in fq[0],..,fq[jk]
|
||||
*
|
||||
* ih integer. If >0 it indicates q[] is >= 0.5, hence
|
||||
* it also indicates the *sign* of the result.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Constants:
|
||||
* The hexadecimal values are the intended ones for the following
|
||||
* constants. The decimal values may be used, provided that the
|
||||
* compiler will convert from decimal to binary accurately enough
|
||||
* to produce the hexadecimal values shown.
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const int init_jk[] = {2,3,4,6}; /* initial value for jk */
|
||||
#else
|
||||
static int init_jk[] = {2,3,4,6};
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
static const double PIo2[] = {
|
||||
#else
|
||||
static double PIo2[] = {
|
||||
#endif
|
||||
1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */
|
||||
7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */
|
||||
5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */
|
||||
3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */
|
||||
1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */
|
||||
1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */
|
||||
2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */
|
||||
2.16741683877804819444e-51, /* 0x3569F31D, 0x00000000 */
|
||||
};
|
||||
|
||||
#ifdef __STDC__
|
||||
static const double
|
||||
#else
|
||||
static double
|
||||
#endif
|
||||
zero = 0.0,
|
||||
one = 1.0,
|
||||
two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */
|
||||
twon24 = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */
|
||||
|
||||
#ifdef __STDC__
|
||||
int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int32_t *ipio2)
|
||||
#else
|
||||
int __kernel_rem_pio2(x,y,e0,nx,prec,ipio2)
|
||||
double x[], y[]; int e0,nx,prec; int32_t ipio2[];
|
||||
#endif
|
||||
{
|
||||
int32_t jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih;
|
||||
double z,fw,f[20],fq[20],q[20];
|
||||
|
||||
/* initialize jk*/
|
||||
jk = init_jk[prec];
|
||||
jp = jk;
|
||||
|
||||
/* determine jx,jv,q0, note that 3>q0 */
|
||||
jx = nx-1;
|
||||
jv = (e0-3)/24; if(jv<0) jv=0;
|
||||
q0 = e0-24*(jv+1);
|
||||
|
||||
/* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */
|
||||
j = jv-jx; m = jx+jk;
|
||||
for(i=0;i<=m;i++,j++) f[i] = (j<0)? zero : (double) ipio2[j];
|
||||
|
||||
/* compute q[0],q[1],...q[jk] */
|
||||
for (i=0;i<=jk;i++) {
|
||||
for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; q[i] = fw;
|
||||
}
|
||||
|
||||
jz = jk;
|
||||
recompute:
|
||||
/* distill q[] into iq[] reversingly */
|
||||
for(i=0,j=jz,z=q[jz];j>0;i++,j--) {
|
||||
fw = (double)((int32_t)(twon24* z));
|
||||
iq[i] = (int32_t)(z-two24*fw);
|
||||
z = q[j-1]+fw;
|
||||
}
|
||||
|
||||
/* compute n */
|
||||
z = __scalbn(z,q0); /* actual value of z */
|
||||
z -= 8.0*__floor(z*0.125); /* trim off integer >= 8 */
|
||||
n = (int32_t) z;
|
||||
z -= (double)n;
|
||||
ih = 0;
|
||||
if(q0>0) { /* need iq[jz-1] to determine n */
|
||||
i = (iq[jz-1]>>(24-q0)); n += i;
|
||||
iq[jz-1] -= i<<(24-q0);
|
||||
ih = iq[jz-1]>>(23-q0);
|
||||
}
|
||||
else if(q0==0) ih = iq[jz-1]>>23;
|
||||
else if(z>=0.5) ih=2;
|
||||
|
||||
if(ih>0) { /* q > 0.5 */
|
||||
n += 1; carry = 0;
|
||||
for(i=0;i<jz ;i++) { /* compute 1-q */
|
||||
j = iq[i];
|
||||
if(carry==0) {
|
||||
if(j!=0) {
|
||||
carry = 1; iq[i] = 0x1000000- j;
|
||||
}
|
||||
} else iq[i] = 0xffffff - j;
|
||||
}
|
||||
if(q0>0) { /* rare case: chance is 1 in 12 */
|
||||
switch(q0) {
|
||||
case 1:
|
||||
iq[jz-1] &= 0x7fffff; break;
|
||||
case 2:
|
||||
iq[jz-1] &= 0x3fffff; break;
|
||||
}
|
||||
}
|
||||
if(ih==2) {
|
||||
z = one - z;
|
||||
if(carry!=0) z -= __scalbn(one,q0);
|
||||
}
|
||||
}
|
||||
|
||||
/* check if recomputation is needed */
|
||||
if(z==zero) {
|
||||
j = 0;
|
||||
for (i=jz-1;i>=jk;i--) j |= iq[i];
|
||||
if(j==0) { /* need recomputation */
|
||||
for(k=1;iq[jk-k]==0;k++); /* k = no. of terms needed */
|
||||
|
||||
for(i=jz+1;i<=jz+k;i++) { /* add q[jz+1] to q[jz+k] */
|
||||
f[jx+i] = (double) ipio2[jv+i];
|
||||
for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j];
|
||||
q[i] = fw;
|
||||
}
|
||||
jz += k;
|
||||
goto recompute;
|
||||
}
|
||||
}
|
||||
|
||||
/* chop off zero terms */
|
||||
if(z==0.0) {
|
||||
jz -= 1; q0 -= 24;
|
||||
while(iq[jz]==0) { jz--; q0-=24;}
|
||||
} else { /* break z into 24-bit if necessary */
|
||||
z = __scalbn(z,-q0);
|
||||
if(z>=two24) {
|
||||
fw = (double)((int32_t)(twon24*z));
|
||||
iq[jz] = (int32_t)(z-two24*fw);
|
||||
jz += 1; q0 += 24;
|
||||
iq[jz] = (int32_t) fw;
|
||||
} else iq[jz] = (int32_t) z ;
|
||||
}
|
||||
|
||||
/* convert integer "bit" chunk to floating-point value */
|
||||
fw = __scalbn(one,q0);
|
||||
for(i=jz;i>=0;i--) {
|
||||
q[i] = fw*(double)iq[i]; fw*=twon24;
|
||||
}
|
||||
|
||||
/* compute PIo2[0,...,jp]*q[jz,...,0] */
|
||||
for(i=jz;i>=0;i--) {
|
||||
for(fw=0.0,k=0;k<=jp&&k<=jz-i;k++) fw += PIo2[k]*q[i+k];
|
||||
fq[jz-i] = fw;
|
||||
}
|
||||
|
||||
/* compress fq[] into y[] */
|
||||
switch(prec) {
|
||||
case 0:
|
||||
fw = 0.0;
|
||||
for (i=jz;i>=0;i--) fw += fq[i];
|
||||
y[0] = (ih==0)? fw: -fw;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
fw = 0.0;
|
||||
for (i=jz;i>=0;i--) fw += fq[i];
|
||||
y[0] = (ih==0)? fw: -fw;
|
||||
fw = fq[0]-fw;
|
||||
for (i=1;i<=jz;i++) fw += fq[i];
|
||||
y[1] = (ih==0)? fw: -fw;
|
||||
break;
|
||||
case 3: /* painful */
|
||||
for (i=jz;i>0;i--) {
|
||||
fw = fq[i-1]+fq[i];
|
||||
fq[i] += fq[i-1]-fw;
|
||||
fq[i-1] = fw;
|
||||
}
|
||||
for (i=jz;i>1;i--) {
|
||||
fw = fq[i-1]+fq[i];
|
||||
fq[i] += fq[i-1]-fw;
|
||||
fq[i-1] = fw;
|
||||
}
|
||||
for (fw=0.0,i=jz;i>=2;i--) fw += fq[i];
|
||||
if(ih==0) {
|
||||
y[0] = fq[0]; y[1] = fq[1]; y[2] = fw;
|
||||
} else {
|
||||
y[0] = -fq[0]; y[1] = -fq[1]; y[2] = -fw;
|
||||
}
|
||||
}
|
||||
return n&7;
|
||||
}
|
508
libgcc-math/dbl-64/mpa.c
Normal file
508
libgcc-math/dbl-64/mpa.c
Normal file
|
@ -0,0 +1,508 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: mpa.c */
|
||||
/* */
|
||||
/* FUNCTIONS: */
|
||||
/* mcr */
|
||||
/* acr */
|
||||
/* cr */
|
||||
/* cpy */
|
||||
/* cpymn */
|
||||
/* norm */
|
||||
/* denorm */
|
||||
/* mp_dbl */
|
||||
/* dbl_mp */
|
||||
/* add_magnitudes */
|
||||
/* sub_magnitudes */
|
||||
/* add */
|
||||
/* sub */
|
||||
/* mul */
|
||||
/* inv */
|
||||
/* dvd */
|
||||
/* */
|
||||
/* Arithmetic functions for multiple precision numbers. */
|
||||
/* Relative errors are bounded */
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
#include "endian.h"
|
||||
#include "mpa.h"
|
||||
#include "mpa2.h"
|
||||
#include <sys/param.h> /* For MIN() */
|
||||
/* mcr() compares the sizes of the mantissas of two multiple precision */
|
||||
/* numbers. Mantissas are compared regardless of the signs of the */
|
||||
/* numbers, even if x->d[0] or y->d[0] are zero. Exponents are also */
|
||||
/* disregarded. */
|
||||
static int mcr(const mp_no *x, const mp_no *y, int p) {
|
||||
int i;
|
||||
for (i=1; i<=p; i++) {
|
||||
if (X[i] == Y[i]) continue;
|
||||
else if (X[i] > Y[i]) return 1;
|
||||
else return -1; }
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* acr() compares the absolute values of two multiple precision numbers */
|
||||
int __acr(const mp_no *x, const mp_no *y, int p) {
|
||||
int i;
|
||||
|
||||
if (X[0] == ZERO) {
|
||||
if (Y[0] == ZERO) i= 0;
|
||||
else i=-1;
|
||||
}
|
||||
else if (Y[0] == ZERO) i= 1;
|
||||
else {
|
||||
if (EX > EY) i= 1;
|
||||
else if (EX < EY) i=-1;
|
||||
else i= mcr(x,y,p);
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
/* cr90 compares the values of two multiple precision numbers */
|
||||
int __cr(const mp_no *x, const mp_no *y, int p) {
|
||||
int i;
|
||||
|
||||
if (X[0] > Y[0]) i= 1;
|
||||
else if (X[0] < Y[0]) i=-1;
|
||||
else if (X[0] < ZERO ) i= __acr(y,x,p);
|
||||
else i= __acr(x,y,p);
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
/* Copy a multiple precision number. Set *y=*x. x=y is permissible. */
|
||||
void __cpy(const mp_no *x, mp_no *y, int p) {
|
||||
int i;
|
||||
|
||||
EY = EX;
|
||||
for (i=0; i <= p; i++) Y[i] = X[i];
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Copy a multiple precision number x of precision m into a */
|
||||
/* multiple precision number y of precision n. In case n>m, */
|
||||
/* the digits of y beyond the m'th are set to zero. In case */
|
||||
/* n<m, the digits of x beyond the n'th are ignored. */
|
||||
/* x=y is permissible. */
|
||||
|
||||
void __cpymn(const mp_no *x, int m, mp_no *y, int n) {
|
||||
|
||||
int i,k;
|
||||
|
||||
EY = EX; k=MIN(m,n);
|
||||
for (i=0; i <= k; i++) Y[i] = X[i];
|
||||
for ( ; i <= n; i++) Y[i] = ZERO;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* Convert a multiple precision number *x into a double precision */
|
||||
/* number *y, normalized case (|x| >= 2**(-1022))) */
|
||||
static void norm(const mp_no *x, double *y, int p)
|
||||
{
|
||||
#define R radixi.d
|
||||
int i;
|
||||
#if 0
|
||||
int k;
|
||||
#endif
|
||||
double a,c,u,v,z[5];
|
||||
if (p<5) {
|
||||
if (p==1) c = X[1];
|
||||
else if (p==2) c = X[1] + R* X[2];
|
||||
else if (p==3) c = X[1] + R*(X[2] + R* X[3]);
|
||||
else if (p==4) c =(X[1] + R* X[2]) + R*R*(X[3] + R*X[4]);
|
||||
}
|
||||
else {
|
||||
for (a=ONE, z[1]=X[1]; z[1] < TWO23; )
|
||||
{a *= TWO; z[1] *= TWO; }
|
||||
|
||||
for (i=2; i<5; i++) {
|
||||
z[i] = X[i]*a;
|
||||
u = (z[i] + CUTTER)-CUTTER;
|
||||
if (u > z[i]) u -= RADIX;
|
||||
z[i] -= u;
|
||||
z[i-1] += u*RADIXI;
|
||||
}
|
||||
|
||||
u = (z[3] + TWO71) - TWO71;
|
||||
if (u > z[3]) u -= TWO19;
|
||||
v = z[3]-u;
|
||||
|
||||
if (v == TWO18) {
|
||||
if (z[4] == ZERO) {
|
||||
for (i=5; i <= p; i++) {
|
||||
if (X[i] == ZERO) continue;
|
||||
else {z[3] += ONE; break; }
|
||||
}
|
||||
}
|
||||
else z[3] += ONE;
|
||||
}
|
||||
|
||||
c = (z[1] + R *(z[2] + R * z[3]))/a;
|
||||
}
|
||||
|
||||
c *= X[0];
|
||||
|
||||
for (i=1; i<EX; i++) c *= RADIX;
|
||||
for (i=1; i>EX; i--) c *= RADIXI;
|
||||
|
||||
*y = c;
|
||||
return;
|
||||
#undef R
|
||||
}
|
||||
|
||||
/* Convert a multiple precision number *x into a double precision */
|
||||
/* number *y, denormalized case (|x| < 2**(-1022))) */
|
||||
static void denorm(const mp_no *x, double *y, int p)
|
||||
{
|
||||
int i,k;
|
||||
double c,u,z[5];
|
||||
#if 0
|
||||
double a,v;
|
||||
#endif
|
||||
|
||||
#define R radixi.d
|
||||
if (EX<-44 || (EX==-44 && X[1]<TWO5))
|
||||
{ *y=ZERO; return; }
|
||||
|
||||
if (p==1) {
|
||||
if (EX==-42) {z[1]=X[1]+TWO10; z[2]=ZERO; z[3]=ZERO; k=3;}
|
||||
else if (EX==-43) {z[1]= TWO10; z[2]=X[1]; z[3]=ZERO; k=2;}
|
||||
else {z[1]= TWO10; z[2]=ZERO; z[3]=X[1]; k=1;}
|
||||
}
|
||||
else if (p==2) {
|
||||
if (EX==-42) {z[1]=X[1]+TWO10; z[2]=X[2]; z[3]=ZERO; k=3;}
|
||||
else if (EX==-43) {z[1]= TWO10; z[2]=X[1]; z[3]=X[2]; k=2;}
|
||||
else {z[1]= TWO10; z[2]=ZERO; z[3]=X[1]; k=1;}
|
||||
}
|
||||
else {
|
||||
if (EX==-42) {z[1]=X[1]+TWO10; z[2]=X[2]; k=3;}
|
||||
else if (EX==-43) {z[1]= TWO10; z[2]=X[1]; k=2;}
|
||||
else {z[1]= TWO10; z[2]=ZERO; k=1;}
|
||||
z[3] = X[k];
|
||||
}
|
||||
|
||||
u = (z[3] + TWO57) - TWO57;
|
||||
if (u > z[3]) u -= TWO5;
|
||||
|
||||
if (u==z[3]) {
|
||||
for (i=k+1; i <= p; i++) {
|
||||
if (X[i] == ZERO) continue;
|
||||
else {z[3] += ONE; break; }
|
||||
}
|
||||
}
|
||||
|
||||
c = X[0]*((z[1] + R*(z[2] + R*z[3])) - TWO10);
|
||||
|
||||
*y = c*TWOM1032;
|
||||
return;
|
||||
|
||||
#undef R
|
||||
}
|
||||
|
||||
/* Convert a multiple precision number *x into a double precision number *y. */
|
||||
/* The result is correctly rounded to the nearest/even. *x is left unchanged */
|
||||
|
||||
void __mp_dbl(const mp_no *x, double *y, int p) {
|
||||
#if 0
|
||||
int i,k;
|
||||
double a,c,u,v,z[5];
|
||||
#endif
|
||||
|
||||
if (X[0] == ZERO) {*y = ZERO; return; }
|
||||
|
||||
if (EX> -42) norm(x,y,p);
|
||||
else if (EX==-42 && X[1]>=TWO10) norm(x,y,p);
|
||||
else denorm(x,y,p);
|
||||
}
|
||||
|
||||
|
||||
/* dbl_mp() converts a double precision number x into a multiple precision */
|
||||
/* number *y. If the precision p is too small the result is truncated. x is */
|
||||
/* left unchanged. */
|
||||
|
||||
void __dbl_mp(double x, mp_no *y, int p) {
|
||||
|
||||
int i,n;
|
||||
double u;
|
||||
|
||||
/* Sign */
|
||||
if (x == ZERO) {Y[0] = ZERO; return; }
|
||||
else if (x > ZERO) Y[0] = ONE;
|
||||
else {Y[0] = MONE; x=-x; }
|
||||
|
||||
/* Exponent */
|
||||
for (EY=ONE; x >= RADIX; EY += ONE) x *= RADIXI;
|
||||
for ( ; x < ONE; EY -= ONE) x *= RADIX;
|
||||
|
||||
/* Digits */
|
||||
n=MIN(p,4);
|
||||
for (i=1; i<=n; i++) {
|
||||
u = (x + TWO52) - TWO52;
|
||||
if (u>x) u -= ONE;
|
||||
Y[i] = u; x -= u; x *= RADIX; }
|
||||
for ( ; i<=p; i++) Y[i] = ZERO;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* add_magnitudes() adds the magnitudes of *x & *y assuming that */
|
||||
/* abs(*x) >= abs(*y) > 0. */
|
||||
/* The sign of the sum *z is undefined. x&y may overlap but not x&z or y&z. */
|
||||
/* No guard digit is used. The result equals the exact sum, truncated. */
|
||||
/* *x & *y are left unchanged. */
|
||||
|
||||
static void add_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
|
||||
|
||||
int i,j,k;
|
||||
|
||||
EZ = EX;
|
||||
|
||||
i=p; j=p+ EY - EX; k=p+1;
|
||||
|
||||
if (j<1)
|
||||
{__cpy(x,z,p); return; }
|
||||
else Z[k] = ZERO;
|
||||
|
||||
for (; j>0; i--,j--) {
|
||||
Z[k] += X[i] + Y[j];
|
||||
if (Z[k] >= RADIX) {
|
||||
Z[k] -= RADIX;
|
||||
Z[--k] = ONE; }
|
||||
else
|
||||
Z[--k] = ZERO;
|
||||
}
|
||||
|
||||
for (; i>0; i--) {
|
||||
Z[k] += X[i];
|
||||
if (Z[k] >= RADIX) {
|
||||
Z[k] -= RADIX;
|
||||
Z[--k] = ONE; }
|
||||
else
|
||||
Z[--k] = ZERO;
|
||||
}
|
||||
|
||||
if (Z[1] == ZERO) {
|
||||
for (i=1; i<=p; i++) Z[i] = Z[i+1]; }
|
||||
else EZ += ONE;
|
||||
}
|
||||
|
||||
|
||||
/* sub_magnitudes() subtracts the magnitudes of *x & *y assuming that */
|
||||
/* abs(*x) > abs(*y) > 0. */
|
||||
/* The sign of the difference *z is undefined. x&y may overlap but not x&z */
|
||||
/* or y&z. One guard digit is used. The error is less than one ulp. */
|
||||
/* *x & *y are left unchanged. */
|
||||
|
||||
static void sub_magnitudes(const mp_no *x, const mp_no *y, mp_no *z, int p) {
|
||||
|
||||
int i,j,k;
|
||||
|
||||
EZ = EX;
|
||||
|
||||
if (EX == EY) {
|
||||
i=j=k=p;
|
||||
Z[k] = Z[k+1] = ZERO; }
|
||||
else {
|
||||
j= EX - EY;
|
||||
if (j > p) {__cpy(x,z,p); return; }
|
||||
else {
|
||||
i=p; j=p+1-j; k=p;
|
||||
if (Y[j] > ZERO) {
|
||||
Z[k+1] = RADIX - Y[j--];
|
||||
Z[k] = MONE; }
|
||||
else {
|
||||
Z[k+1] = ZERO;
|
||||
Z[k] = ZERO; j--;}
|
||||
}
|
||||
}
|
||||
|
||||
for (; j>0; i--,j--) {
|
||||
Z[k] += (X[i] - Y[j]);
|
||||
if (Z[k] < ZERO) {
|
||||
Z[k] += RADIX;
|
||||
Z[--k] = MONE; }
|
||||
else
|
||||
Z[--k] = ZERO;
|
||||
}
|
||||
|
||||
for (; i>0; i--) {
|
||||
Z[k] += X[i];
|
||||
if (Z[k] < ZERO) {
|
||||
Z[k] += RADIX;
|
||||
Z[--k] = MONE; }
|
||||
else
|
||||
Z[--k] = ZERO;
|
||||
}
|
||||
|
||||
for (i=1; Z[i] == ZERO; i++) ;
|
||||
EZ = EZ - i + 1;
|
||||
for (k=1; i <= p+1; )
|
||||
Z[k++] = Z[i++];
|
||||
for (; k <= p; )
|
||||
Z[k++] = ZERO;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Add two multiple precision numbers. Set *z = *x + *y. x&y may overlap */
|
||||
/* but not x&z or y&z. One guard digit is used. The error is less than */
|
||||
/* one ulp. *x & *y are left unchanged. */
|
||||
|
||||
void __add(const mp_no *x, const mp_no *y, mp_no *z, int p) {
|
||||
|
||||
int n;
|
||||
|
||||
if (X[0] == ZERO) {__cpy(y,z,p); return; }
|
||||
else if (Y[0] == ZERO) {__cpy(x,z,p); return; }
|
||||
|
||||
if (X[0] == Y[0]) {
|
||||
if (__acr(x,y,p) > 0) {add_magnitudes(x,y,z,p); Z[0] = X[0]; }
|
||||
else {add_magnitudes(y,x,z,p); Z[0] = Y[0]; }
|
||||
}
|
||||
else {
|
||||
if ((n=__acr(x,y,p)) == 1) {sub_magnitudes(x,y,z,p); Z[0] = X[0]; }
|
||||
else if (n == -1) {sub_magnitudes(y,x,z,p); Z[0] = Y[0]; }
|
||||
else Z[0] = ZERO;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Subtract two multiple precision numbers. *z is set to *x - *y. x&y may */
|
||||
/* overlap but not x&z or y&z. One guard digit is used. The error is */
|
||||
/* less than one ulp. *x & *y are left unchanged. */
|
||||
|
||||
void __sub(const mp_no *x, const mp_no *y, mp_no *z, int p) {
|
||||
|
||||
int n;
|
||||
|
||||
if (X[0] == ZERO) {__cpy(y,z,p); Z[0] = -Z[0]; return; }
|
||||
else if (Y[0] == ZERO) {__cpy(x,z,p); return; }
|
||||
|
||||
if (X[0] != Y[0]) {
|
||||
if (__acr(x,y,p) > 0) {add_magnitudes(x,y,z,p); Z[0] = X[0]; }
|
||||
else {add_magnitudes(y,x,z,p); Z[0] = -Y[0]; }
|
||||
}
|
||||
else {
|
||||
if ((n=__acr(x,y,p)) == 1) {sub_magnitudes(x,y,z,p); Z[0] = X[0]; }
|
||||
else if (n == -1) {sub_magnitudes(y,x,z,p); Z[0] = -Y[0]; }
|
||||
else Z[0] = ZERO;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Multiply two multiple precision numbers. *z is set to *x * *y. x&y */
|
||||
/* may overlap but not x&z or y&z. In case p=1,2,3 the exact result is */
|
||||
/* truncated to p digits. In case p>3 the error is bounded by 1.001 ulp. */
|
||||
/* *x & *y are left unchanged. */
|
||||
|
||||
void __mul(const mp_no *x, const mp_no *y, mp_no *z, int p) {
|
||||
|
||||
int i, i1, i2, j, k, k2;
|
||||
double u;
|
||||
|
||||
/* Is z=0? */
|
||||
if (X[0]*Y[0]==ZERO)
|
||||
{ Z[0]=ZERO; return; }
|
||||
|
||||
/* Multiply, add and carry */
|
||||
k2 = (p<3) ? p+p : p+3;
|
||||
Z[k2]=ZERO;
|
||||
for (k=k2; k>1; ) {
|
||||
if (k > p) {i1=k-p; i2=p+1; }
|
||||
else {i1=1; i2=k; }
|
||||
for (i=i1,j=i2-1; i<i2; i++,j--) Z[k] += X[i]*Y[j];
|
||||
|
||||
u = (Z[k] + CUTTER)-CUTTER;
|
||||
if (u > Z[k]) u -= RADIX;
|
||||
Z[k] -= u;
|
||||
Z[--k] = u*RADIXI;
|
||||
}
|
||||
|
||||
/* Is there a carry beyond the most significant digit? */
|
||||
if (Z[1] == ZERO) {
|
||||
for (i=1; i<=p; i++) Z[i]=Z[i+1];
|
||||
EZ = EX + EY - 1; }
|
||||
else
|
||||
EZ = EX + EY;
|
||||
|
||||
Z[0] = X[0] * Y[0];
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Invert a multiple precision number. Set *y = 1 / *x. */
|
||||
/* Relative error bound = 1.001*r**(1-p) for p=2, 1.063*r**(1-p) for p=3, */
|
||||
/* 2.001*r**(1-p) for p>3. */
|
||||
/* *x=0 is not permissible. *x is left unchanged. */
|
||||
|
||||
void __inv(const mp_no *x, mp_no *y, int p) {
|
||||
int i;
|
||||
#if 0
|
||||
int l;
|
||||
#endif
|
||||
double t;
|
||||
mp_no z,w;
|
||||
static const int np1[] = {0,0,0,0,1,2,2,2,2,3,3,3,3,3,3,3,3,3,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4};
|
||||
const mp_no mptwo = {1,{1.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}};
|
||||
|
||||
__cpy(x,&z,p); z.e=0; __mp_dbl(&z,&t,p);
|
||||
t=ONE/t; __dbl_mp(t,y,p); EY -= EX;
|
||||
|
||||
for (i=0; i<np1[p]; i++) {
|
||||
__cpy(y,&w,p);
|
||||
__mul(x,&w,y,p);
|
||||
__sub(&mptwo,y,&z,p);
|
||||
__mul(&w,&z,y,p);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Divide one multiple precision number by another.Set *z = *x / *y. *x & *y */
|
||||
/* are left unchanged. x&y may overlap but not x&z or y&z. */
|
||||
/* Relative error bound = 2.001*r**(1-p) for p=2, 2.063*r**(1-p) for p=3 */
|
||||
/* and 3.001*r**(1-p) for p>3. *y=0 is not permissible. */
|
||||
|
||||
void __dvd(const mp_no *x, const mp_no *y, mp_no *z, int p) {
|
||||
|
||||
mp_no w;
|
||||
|
||||
if (X[0] == ZERO) Z[0] = ZERO;
|
||||
else {__inv(y,&w,p); __mul(x,&w,z,p);}
|
||||
return;
|
||||
}
|
89
libgcc-math/dbl-64/mpa.h
Normal file
89
libgcc-math/dbl-64/mpa.h
Normal file
|
@ -0,0 +1,89 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: mpa.h */
|
||||
/* */
|
||||
/* FUNCTIONS: */
|
||||
/* mcr */
|
||||
/* acr */
|
||||
/* cr */
|
||||
/* cpy */
|
||||
/* cpymn */
|
||||
/* mp_dbl */
|
||||
/* dbl_mp */
|
||||
/* add */
|
||||
/* sub */
|
||||
/* mul */
|
||||
/* inv */
|
||||
/* dvd */
|
||||
/* */
|
||||
/* Arithmetic functions for multiple precision numbers. */
|
||||
/* Common types and definition */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef MPA_H
|
||||
#define MPA_H
|
||||
|
||||
typedef struct {/* This structure holds the details of a multi-precision */
|
||||
int e; /* floating point number, x: d[0] holds its sign (-1,0 or 1) */
|
||||
double d[40]; /* e holds its exponent (...,-2,-1,0,1,2,...) and */
|
||||
} mp_no; /* d[1]...d[p] hold its mantissa digits. The value of x is, */
|
||||
/* x = d[1]*r**(e-1) + d[2]*r**(e-2) + ... + d[p]*r**(e-p). */
|
||||
/* Here r = 2**24, 0 <= d[i] < r and 1 <= p <= 32. */
|
||||
/* p is a global variable. A multi-precision number is */
|
||||
/* always normalized. Namely, d[1] > 0. An exception is */
|
||||
/* a zero which is characterized by d[0] = 0. The terms */
|
||||
/* d[p+1], d[p+2], ... of a none zero number have no */
|
||||
/* significance and so are the terms e, d[1],d[2],... */
|
||||
/* of a zero. */
|
||||
|
||||
typedef union { int i[2]; double d; } number;
|
||||
|
||||
#define X x->d
|
||||
#define Y y->d
|
||||
#define Z z->d
|
||||
#define EX x->e
|
||||
#define EY y->e
|
||||
#define EZ z->e
|
||||
|
||||
#define ABS(x) ((x) < 0 ? -(x) : (x))
|
||||
|
||||
int __acr(const mp_no *, const mp_no *, int);
|
||||
int __cr(const mp_no *, const mp_no *, int);
|
||||
void __cpy(const mp_no *, mp_no *, int);
|
||||
void __cpymn(const mp_no *, int, mp_no *, int);
|
||||
void __mp_dbl(const mp_no *, double *, int);
|
||||
void __dbl_mp(double, mp_no *, int);
|
||||
void __add(const mp_no *, const mp_no *, mp_no *, int);
|
||||
void __sub(const mp_no *, const mp_no *, mp_no *, int);
|
||||
void __mul(const mp_no *, const mp_no *, mp_no *, int);
|
||||
void __inv(const mp_no *, mp_no *, int);
|
||||
void __dvd(const mp_no *, const mp_no *, mp_no *, int);
|
||||
|
||||
extern void __mpatan (mp_no *, mp_no *, int);
|
||||
extern void __mpatan2 (mp_no *, mp_no *, mp_no *, int);
|
||||
extern void __mpsqrt (mp_no *, mp_no *, int);
|
||||
extern void __mpexp (mp_no *, mp_no *__y, int);
|
||||
extern void __c32 (mp_no *, mp_no *, mp_no *, int);
|
||||
extern int __mpranred (double, mp_no *, int);
|
||||
|
||||
#endif
|
98
libgcc-math/dbl-64/mpa2.h
Normal file
98
libgcc-math/dbl-64/mpa2.h
Normal file
|
@ -0,0 +1,98 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**************************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:mpa2.h */
|
||||
/* */
|
||||
/* */
|
||||
/* variables prototype and definition according to type of processor */
|
||||
/* types definition */
|
||||
/**************************************************************************/
|
||||
|
||||
#ifndef MPA2_H
|
||||
#define MPA2_H
|
||||
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const number
|
||||
/**/ radix = {{0x41700000, 0x00000000} }, /* 2**24 */
|
||||
/**/ radixi = {{0x3e700000, 0x00000000} }, /* 2**-24 */
|
||||
/**/ cutter = {{0x44b00000, 0x00000000} }, /* 2**76 */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
/**/ mone = {{0xbff00000, 0x00000000} }, /* -1 */
|
||||
/**/ two = {{0x40000000, 0x00000000} }, /* 2 */
|
||||
/**/ half = {{0x3fe00000, 0x00000000} }, /* 1/2 */
|
||||
/**/ two5 = {{0x40400000, 0x00000000} }, /* 2**5 */
|
||||
/**/ two10 = {{0x40900000, 0x00000000} }, /* 2**10 */
|
||||
/**/ two18 = {{0x41100000, 0x00000000} }, /* 2**18 */
|
||||
/**/ two19 = {{0x41200000, 0x00000000} }, /* 2**19 */
|
||||
/**/ two23 = {{0x41600000, 0x00000000} }, /* 2**23 */
|
||||
/**/ two52 = {{0x43300000, 0x00000000} }, /* 2**52 */
|
||||
/**/ two57 = {{0x43800000, 0x00000000} }, /* 2**57 */
|
||||
/**/ two71 = {{0x44600000, 0x00000000} }, /* 2**71 */
|
||||
/**/ twom1032 = {{0x00000400, 0x00000000} }; /* 2**-1032 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const number
|
||||
/**/ radix = {{0x00000000, 0x41700000} }, /* 2**24 */
|
||||
/**/ radixi = {{0x00000000, 0x3e700000} }, /* 2**-24 */
|
||||
/**/ cutter = {{0x00000000, 0x44b00000} }, /* 2**76 */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
/**/ mone = {{0x00000000, 0xbff00000} }, /* -1 */
|
||||
/**/ two = {{0x00000000, 0x40000000} }, /* 2 */
|
||||
/**/ half = {{0x00000000, 0x3fe00000} }, /* 1/2 */
|
||||
/**/ two5 = {{0x00000000, 0x40400000} }, /* 2**5 */
|
||||
/**/ two10 = {{0x00000000, 0x40900000} }, /* 2**10 */
|
||||
/**/ two18 = {{0x00000000, 0x41100000} }, /* 2**18 */
|
||||
/**/ two19 = {{0x00000000, 0x41200000} }, /* 2**19 */
|
||||
/**/ two23 = {{0x00000000, 0x41600000} }, /* 2**23 */
|
||||
/**/ two52 = {{0x00000000, 0x43300000} }, /* 2**52 */
|
||||
/**/ two57 = {{0x00000000, 0x43800000} }, /* 2**57 */
|
||||
/**/ two71 = {{0x00000000, 0x44600000} }, /* 2**71 */
|
||||
/**/ twom1032 = {{0x00000000, 0x00000400} }; /* 2**-1032 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define RADIX radix.d
|
||||
#define RADIXI radixi.d
|
||||
#define CUTTER cutter.d
|
||||
#define ZERO zero.d
|
||||
#define ONE one.d
|
||||
#define MONE mone.d
|
||||
#define TWO two.d
|
||||
#define HALF half.d
|
||||
#define TWO5 two5.d
|
||||
#define TWO10 two10.d
|
||||
#define TWO18 two18.d
|
||||
#define TWO19 two19.d
|
||||
#define TWO23 two23.d
|
||||
#define TWO52 two52.d
|
||||
#define TWO57 two57.d
|
||||
#define TWO71 two71.d
|
||||
#define TWOM1032 twom1032.d
|
||||
|
||||
|
||||
#endif
|
102
libgcc-math/dbl-64/mpatan.c
Normal file
102
libgcc-math/dbl-64/mpatan.c
Normal file
|
@ -0,0 +1,102 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:mpatan.c */
|
||||
/* */
|
||||
/* FUNCTIONS:mpatan */
|
||||
/* */
|
||||
/* FILES NEEDED: mpa.h endian.h mpatan.h */
|
||||
/* mpa.c */
|
||||
/* */
|
||||
/* Multi-Precision Atan function subroutine, for precision p >= 4.*/
|
||||
/* The relative error of the result is bounded by 34.32*r**(1-p), */
|
||||
/* where r=2**24. */
|
||||
/******************************************************************/
|
||||
|
||||
#include "endian.h"
|
||||
#include "mpa.h"
|
||||
void __mpsqrt(mp_no *, mp_no *, int);
|
||||
|
||||
void __mpatan(mp_no *x, mp_no *y, int p) {
|
||||
#include "mpatan.h"
|
||||
|
||||
int i,m,n;
|
||||
double dx;
|
||||
mp_no
|
||||
mpone = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}},
|
||||
mptwo = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}},
|
||||
mptwoim1 = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}};
|
||||
|
||||
mp_no mps,mpsm,mpt,mpt1,mpt2,mpt3;
|
||||
|
||||
/* Choose m and initiate mpone, mptwo & mptwoim1 */
|
||||
if (EX>0) m=7;
|
||||
else if (EX<0) m=0;
|
||||
else {
|
||||
__mp_dbl(x,&dx,p); dx=ABS(dx);
|
||||
for (m=6; m>0; m--)
|
||||
{if (dx>xm[m].d) break;}
|
||||
}
|
||||
mpone.e = mptwo.e = mptwoim1.e = 1;
|
||||
mpone.d[0] = mpone.d[1] = mptwo.d[0] = mptwoim1.d[0] = ONE;
|
||||
mptwo.d[1] = TWO;
|
||||
|
||||
/* Reduce x m times */
|
||||
__mul(x,x,&mpsm,p);
|
||||
if (m==0) __cpy(x,&mps,p);
|
||||
else {
|
||||
for (i=0; i<m; i++) {
|
||||
__add(&mpone,&mpsm,&mpt1,p);
|
||||
__mpsqrt(&mpt1,&mpt2,p);
|
||||
__add(&mpt2,&mpt2,&mpt1,p);
|
||||
__add(&mptwo,&mpsm,&mpt2,p);
|
||||
__add(&mpt1,&mpt2,&mpt3,p);
|
||||
__dvd(&mpsm,&mpt3,&mpt1,p);
|
||||
__cpy(&mpt1,&mpsm,p);
|
||||
}
|
||||
__mpsqrt(&mpsm,&mps,p); mps.d[0] = X[0];
|
||||
}
|
||||
|
||||
/* Evaluate a truncated power series for Atan(s) */
|
||||
n=np[p]; mptwoim1.d[1] = twonm1[p].d;
|
||||
__dvd(&mpsm,&mptwoim1,&mpt,p);
|
||||
for (i=n-1; i>1; i--) {
|
||||
mptwoim1.d[1] -= TWO;
|
||||
__dvd(&mpsm,&mptwoim1,&mpt1,p);
|
||||
__mul(&mpsm,&mpt,&mpt2,p);
|
||||
__sub(&mpt1,&mpt2,&mpt,p);
|
||||
}
|
||||
__mul(&mps,&mpt,&mpt1,p);
|
||||
__sub(&mps,&mpt1,&mpt,p);
|
||||
|
||||
/* Compute Atan(x) */
|
||||
mptwoim1.d[1] = twom[m].d;
|
||||
__mul(&mptwoim1,&mpt,y,p);
|
||||
|
||||
return;
|
||||
}
|
174
libgcc-math/dbl-64/mpatan.h
Normal file
174
libgcc-math/dbl-64/mpatan.h
Normal file
|
@ -0,0 +1,174 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:mpatan.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef MPATAN_H
|
||||
#define MPATAN_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const number
|
||||
xm[8] = { /* x[m] */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0.0 */
|
||||
/**/ {{0x3f8930be, 0x00000000} }, /* 0.0123 */
|
||||
/**/ {{0x3f991687, 0x00000000} }, /* 0.0245 */
|
||||
/**/ {{0x3fa923a2, 0x00000000} }, /* 0.0491 */
|
||||
/**/ {{0x3fb930be, 0x00000000} }, /* 0.0984 */
|
||||
/**/ {{0x3fc95810, 0x00000000} }, /* 0.198 */
|
||||
/**/ {{0x3fda7ef9, 0x00000000} }, /* 0.414 */
|
||||
/**/ {{0x3ff00000, 0x00000000} }, /* 1.0 */
|
||||
};
|
||||
static const number
|
||||
twonm1[33] = { /* 2n-1 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x40260000, 0x00000000} }, /* 11 */
|
||||
/**/ {{0x402e0000, 0x00000000} }, /* 15 */
|
||||
/**/ {{0x40330000, 0x00000000} }, /* 19 */
|
||||
/**/ {{0x40350000, 0x00000000} }, /* 21 */
|
||||
/**/ {{0x40390000, 0x00000000} }, /* 25 */
|
||||
/**/ {{0x403d0000, 0x00000000} }, /* 29 */
|
||||
/**/ {{0x40408000, 0x00000000} }, /* 33 */
|
||||
/**/ {{0x40428000, 0x00000000} }, /* 37 */
|
||||
/**/ {{0x40448000, 0x00000000} }, /* 41 */
|
||||
/**/ {{0x40468000, 0x00000000} }, /* 45 */
|
||||
/**/ {{0x40488000, 0x00000000} }, /* 49 */
|
||||
/**/ {{0x404a8000, 0x00000000} }, /* 53 */
|
||||
/**/ {{0x404b8000, 0x00000000} }, /* 55 */
|
||||
/**/ {{0x404d8000, 0x00000000} }, /* 59 */
|
||||
/**/ {{0x404f8000, 0x00000000} }, /* 63 */
|
||||
/**/ {{0x4050c000, 0x00000000} }, /* 67 */
|
||||
/**/ {{0x4051c000, 0x00000000} }, /* 71 */
|
||||
/**/ {{0x4052c000, 0x00000000} }, /* 75 */
|
||||
/**/ {{0x4053c000, 0x00000000} }, /* 79 */
|
||||
/**/ {{0x4054c000, 0x00000000} }, /* 83 */
|
||||
/**/ {{0x40554000, 0x00000000} }, /* 85 */
|
||||
/**/ {{0x40564000, 0x00000000} }, /* 89 */
|
||||
/**/ {{0x40574000, 0x00000000} }, /* 93 */
|
||||
/**/ {{0x40584000, 0x00000000} }, /* 97 */
|
||||
/**/ {{0x40594000, 0x00000000} }, /* 101 */
|
||||
/**/ {{0x405a4000, 0x00000000} }, /* 105 */
|
||||
/**/ {{0x405b4000, 0x00000000} }, /* 109 */
|
||||
/**/ {{0x405c4000, 0x00000000} }, /* 113 */
|
||||
/**/ {{0x405d4000, 0x00000000} }, /* 117 */
|
||||
};
|
||||
|
||||
static const number
|
||||
twom[8] = { /* 2**m */
|
||||
/**/ {{0x3ff00000, 0x00000000} }, /* 1.0 */
|
||||
/**/ {{0x40000000, 0x00000000} }, /* 2.0 */
|
||||
/**/ {{0x40100000, 0x00000000} }, /* 4.0 */
|
||||
/**/ {{0x40200000, 0x00000000} }, /* 8.0 */
|
||||
/**/ {{0x40300000, 0x00000000} }, /* 16.0 */
|
||||
/**/ {{0x40400000, 0x00000000} }, /* 32.0 */
|
||||
/**/ {{0x40500000, 0x00000000} }, /* 64.0 */
|
||||
/**/ {{0x40600000, 0x00000000} }, /* 128.0 */
|
||||
};
|
||||
|
||||
static const number
|
||||
/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
/**/ two = {{0x40000000, 0x00000000} }; /* 2 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
|
||||
static const number
|
||||
xm[8] = { /* x[m] */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0.0 */
|
||||
/**/ {{0x00000000, 0x3f8930be} }, /* 0.0123 */
|
||||
/**/ {{0x00000000, 0x3f991687} }, /* 0.0245 */
|
||||
/**/ {{0x00000000, 0x3fa923a2} }, /* 0.0491 */
|
||||
/**/ {{0x00000000, 0x3fb930be} }, /* 0.0984 */
|
||||
/**/ {{0x00000000, 0x3fc95810} }, /* 0.198 */
|
||||
/**/ {{0x00000000, 0x3fda7ef9} }, /* 0.414 */
|
||||
/**/ {{0x00000000, 0x3ff00000} }, /* 1.0 */
|
||||
};
|
||||
static const number
|
||||
twonm1[33] = { /* 2n-1 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x40260000} }, /* 11 */
|
||||
/**/ {{0x00000000, 0x402e0000} }, /* 15 */
|
||||
/**/ {{0x00000000, 0x40330000} }, /* 19 */
|
||||
/**/ {{0x00000000, 0x40350000} }, /* 21 */
|
||||
/**/ {{0x00000000, 0x40390000} }, /* 25 */
|
||||
/**/ {{0x00000000, 0x403d0000} }, /* 29 */
|
||||
/**/ {{0x00000000, 0x40408000} }, /* 33 */
|
||||
/**/ {{0x00000000, 0x40428000} }, /* 37 */
|
||||
/**/ {{0x00000000, 0x40448000} }, /* 41 */
|
||||
/**/ {{0x00000000, 0x40468000} }, /* 45 */
|
||||
/**/ {{0x00000000, 0x40488000} }, /* 49 */
|
||||
/**/ {{0x00000000, 0x404a8000} }, /* 53 */
|
||||
/**/ {{0x00000000, 0x404b8000} }, /* 55 */
|
||||
/**/ {{0x00000000, 0x404d8000} }, /* 59 */
|
||||
/**/ {{0x00000000, 0x404f8000} }, /* 63 */
|
||||
/**/ {{0x00000000, 0x4050c000} }, /* 67 */
|
||||
/**/ {{0x00000000, 0x4051c000} }, /* 71 */
|
||||
/**/ {{0x00000000, 0x4052c000} }, /* 75 */
|
||||
/**/ {{0x00000000, 0x4053c000} }, /* 79 */
|
||||
/**/ {{0x00000000, 0x4054c000} }, /* 83 */
|
||||
/**/ {{0x00000000, 0x40554000} }, /* 85 */
|
||||
/**/ {{0x00000000, 0x40564000} }, /* 89 */
|
||||
/**/ {{0x00000000, 0x40574000} }, /* 93 */
|
||||
/**/ {{0x00000000, 0x40584000} }, /* 97 */
|
||||
/**/ {{0x00000000, 0x40594000} }, /* 101 */
|
||||
/**/ {{0x00000000, 0x405a4000} }, /* 105 */
|
||||
/**/ {{0x00000000, 0x405b4000} }, /* 109 */
|
||||
/**/ {{0x00000000, 0x405c4000} }, /* 113 */
|
||||
/**/ {{0x00000000, 0x405d4000} }, /* 117 */
|
||||
};
|
||||
|
||||
static const number
|
||||
twom[8] = { /* 2**m */
|
||||
/**/ {{0x00000000, 0x3ff00000} }, /* 1.0 */
|
||||
/**/ {{0x00000000, 0x40000000} }, /* 2.0 */
|
||||
/**/ {{0x00000000, 0x40100000} }, /* 4.0 */
|
||||
/**/ {{0x00000000, 0x40200000} }, /* 8.0 */
|
||||
/**/ {{0x00000000, 0x40300000} }, /* 16.0 */
|
||||
/**/ {{0x00000000, 0x40400000} }, /* 32.0 */
|
||||
/**/ {{0x00000000, 0x40500000} }, /* 64.0 */
|
||||
/**/ {{0x00000000, 0x40600000} }, /* 128.0 */
|
||||
};
|
||||
|
||||
static const number
|
||||
/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
/**/ two = {{0x00000000, 0x40000000} }; /* 2 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define ONE one.d
|
||||
#define TWO two.d
|
||||
|
||||
static const int
|
||||
np[33] = { 0, 0, 0, 0, 6, 8,10,11,13,15,17,19,21,23,25,27,28,
|
||||
30,32,34,36,38,40,42,43,45,47,49,51,53,55,57,59};
|
||||
|
||||
#endif
|
70
libgcc-math/dbl-64/mpatan2.c
Normal file
70
libgcc-math/dbl-64/mpatan2.c
Normal file
|
@ -0,0 +1,70 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/******************************************************************/
|
||||
/* MODULE_NAME: mpatan2.c */
|
||||
/* */
|
||||
/* FUNCTIONS:mpatan2 */
|
||||
/* */
|
||||
/* FILES NEEDED: mpa.h */
|
||||
/* mpa.c mpatan.c mpsqrt.c */
|
||||
/* */
|
||||
/* Multi-Precision Atan2(y,x) function subroutine, */
|
||||
/* for precision p >= 4. */
|
||||
/* y=0 is not permitted if x<=0. No error messages are given. */
|
||||
/* The relative error of the result is bounded by 44.84*r**(1-p) */
|
||||
/* if x <= 0, y != 0 and by 37.33*r**(1-p) if x>0. here r=2**24. */
|
||||
/* */
|
||||
/******************************************************************/
|
||||
|
||||
|
||||
|
||||
#include "mpa.h"
|
||||
|
||||
void __mpsqrt(mp_no *, mp_no *, int);
|
||||
void __mpatan(mp_no *, mp_no *, int);
|
||||
|
||||
/* Multi-Precision Atan2(y,x) function subroutine, for p >= 4. */
|
||||
/* y=0 is not permitted if x<=0. No error messages are given. */
|
||||
void __mpatan2(mp_no *y, mp_no *x, mp_no *z, int p) {
|
||||
|
||||
static const double Zero = 0.0, One = 1.0;
|
||||
|
||||
mp_no mpone = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}};
|
||||
mp_no mpt1,mpt2,mpt3;
|
||||
|
||||
|
||||
if (X[0] <= Zero) {
|
||||
mpone.e = 1; mpone.d[0] = mpone.d[1] = One;
|
||||
__dvd(x,y,&mpt1,p); __mul(&mpt1,&mpt1,&mpt2,p);
|
||||
if (mpt1.d[0] != Zero) mpt1.d[0] = One;
|
||||
__add(&mpt2,&mpone,&mpt3,p); __mpsqrt(&mpt3,&mpt2,p);
|
||||
__add(&mpt1,&mpt2,&mpt3,p); mpt3.d[0]=Y[0];
|
||||
__mpatan(&mpt3,&mpt1,p); __add(&mpt1,&mpt1,z,p);
|
||||
}
|
||||
else
|
||||
{ __dvd(y,x,&mpt1,p);
|
||||
__mpatan(&mpt1,z,p);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
106
libgcc-math/dbl-64/mpexp.c
Normal file
106
libgcc-math/dbl-64/mpexp.c
Normal file
|
@ -0,0 +1,106 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/*************************************************************************/
|
||||
/* MODULE_NAME:mpexp.c */
|
||||
/* */
|
||||
/* FUNCTIONS: mpexp */
|
||||
/* */
|
||||
/* FILES NEEDED: mpa.h endian.h mpexp.h */
|
||||
/* mpa.c */
|
||||
/* */
|
||||
/* Multi-Precision exponential function subroutine */
|
||||
/* ( for p >= 4, 2**(-55) <= abs(x) <= 1024 ). */
|
||||
/*************************************************************************/
|
||||
|
||||
#include "endian.h"
|
||||
#include "mpa.h"
|
||||
#include "mpa2.h"
|
||||
#include "mpexp.h"
|
||||
|
||||
/* Multi-Precision exponential function subroutine (for p >= 4, */
|
||||
/* 2**(-55) <= abs(x) <= 1024). */
|
||||
void __mpexp(mp_no *x, mp_no *y, int p) {
|
||||
|
||||
int i,j,k,m,m1,m2,n;
|
||||
double a,b;
|
||||
static const int np[33] = {0,0,0,0,3,3,4,4,5,4,4,5,5,5,6,6,6,6,6,6,
|
||||
6,6,6,6,7,7,7,7,8,8,8,8,8};
|
||||
static const int m1p[33]= {0,0,0,0,17,23,23,28,27,38,42,39,43,47,43,47,50,54,
|
||||
57,60,64,67,71,74,68,71,74,77,70,73,76,78,81};
|
||||
static const int m1np[7][18] = {
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
{ 0, 0, 0, 0,36,48,60,72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
{ 0, 0, 0, 0,24,32,40,48,56,64,72, 0, 0, 0, 0, 0, 0, 0},
|
||||
{ 0, 0, 0, 0,17,23,29,35,41,47,53,59,65, 0, 0, 0, 0, 0},
|
||||
{ 0, 0, 0, 0, 0, 0,23,28,33,38,42,47,52,57,62,66, 0, 0},
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0,27, 0, 0,39,43,47,51,55,59,63},
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,43,47,50,54}};
|
||||
mp_no mpone = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}};
|
||||
mp_no mpk = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}};
|
||||
mp_no mps,mpak,mpt1,mpt2;
|
||||
|
||||
/* Choose m,n and compute a=2**(-m) */
|
||||
n = np[p]; m1 = m1p[p]; a = twomm1[p].d;
|
||||
for (i=0; i<EX; i++) a *= RADIXI;
|
||||
for ( ; i>EX; i--) a *= RADIX;
|
||||
b = X[1]*RADIXI; m2 = 24*EX;
|
||||
for (; b<HALF; m2--) { a *= TWO; b *= TWO; }
|
||||
if (b == HALF) {
|
||||
for (i=2; i<=p; i++) { if (X[i]!=ZERO) break; }
|
||||
if (i==p+1) { m2--; a *= TWO; }
|
||||
}
|
||||
if ((m=m1+m2) <= 0) {
|
||||
m=0; a=ONE;
|
||||
for (i=n-1; i>0; i--,n--) { if (m1np[i][p]+m2>0) break; }
|
||||
}
|
||||
|
||||
/* Compute s=x*2**(-m). Put result in mps */
|
||||
__dbl_mp(a,&mpt1,p);
|
||||
__mul(x,&mpt1,&mps,p);
|
||||
|
||||
/* Evaluate the polynomial. Put result in mpt2 */
|
||||
mpone.e=1; mpone.d[0]=ONE; mpone.d[1]=ONE;
|
||||
mpk.e = 1; mpk.d[0] = ONE; mpk.d[1]=nn[n].d;
|
||||
__dvd(&mps,&mpk,&mpt1,p);
|
||||
__add(&mpone,&mpt1,&mpak,p);
|
||||
for (k=n-1; k>1; k--) {
|
||||
__mul(&mps,&mpak,&mpt1,p);
|
||||
mpk.d[1]=nn[k].d;
|
||||
__dvd(&mpt1,&mpk,&mpt2,p);
|
||||
__add(&mpone,&mpt2,&mpak,p);
|
||||
}
|
||||
__mul(&mps,&mpak,&mpt1,p);
|
||||
__add(&mpone,&mpt1,&mpt2,p);
|
||||
|
||||
/* Raise polynomial value to the power of 2**m. Put result in y */
|
||||
for (k=0,j=0; k<m; ) {
|
||||
__mul(&mpt2,&mpt2,&mpt1,p); k++;
|
||||
if (k==m) { j=1; break; }
|
||||
__mul(&mpt1,&mpt1,&mpt2,p); k++;
|
||||
}
|
||||
if (j) __cpy(&mpt1,y,p);
|
||||
else __cpy(&mpt2,y,p);
|
||||
return;
|
||||
}
|
135
libgcc-math/dbl-64/mpexp.h
Normal file
135
libgcc-math/dbl-64/mpexp.h
Normal file
|
@ -0,0 +1,135 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:mpexp.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef MPEXP_H
|
||||
#define MPEXP_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const number
|
||||
twomm1[33] = { /* 2**-m1 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x3ee00000, 0x00000000} }, /* 2**-17 */
|
||||
/**/ {{0x3e800000, 0x00000000} }, /* 2**-23 */
|
||||
/**/ {{0x3e800000, 0x00000000} }, /* 2**-23 */
|
||||
/**/ {{0x3e300000, 0x00000000} }, /* 2**-28 */
|
||||
/**/ {{0x3e400000, 0x00000000} }, /* 2**-27 */
|
||||
/**/ {{0x3d900000, 0x00000000} }, /* 2**-38 */
|
||||
/**/ {{0x3d500000, 0x00000000} }, /* 2**-42 */
|
||||
/**/ {{0x3d800000, 0x00000000} }, /* 2**-39 */
|
||||
/**/ {{0x3d400000, 0x00000000} }, /* 2**-43 */
|
||||
/**/ {{0x3d000000, 0x00000000} }, /* 2**-47 */
|
||||
/**/ {{0x3d400000, 0x00000000} }, /* 2**-43 */
|
||||
/**/ {{0x3d000000, 0x00000000} }, /* 2**-47 */
|
||||
/**/ {{0x3cd00000, 0x00000000} }, /* 2**-50 */
|
||||
/**/ {{0x3c900000, 0x00000000} }, /* 2**-54 */
|
||||
/**/ {{0x3c600000, 0x00000000} }, /* 2**-57 */
|
||||
/**/ {{0x3c300000, 0x00000000} }, /* 2**-60 */
|
||||
/**/ {{0x3bf00000, 0x00000000} }, /* 2**-64 */
|
||||
/**/ {{0x3bc00000, 0x00000000} }, /* 2**-67 */
|
||||
/**/ {{0x3b800000, 0x00000000} }, /* 2**-71 */
|
||||
/**/ {{0x3b500000, 0x00000000} }, /* 2**-74 */
|
||||
/**/ {{0x3bb00000, 0x00000000} }, /* 2**-68 */
|
||||
/**/ {{0x3b800000, 0x00000000} }, /* 2**-71 */
|
||||
/**/ {{0x3b500000, 0x00000000} }, /* 2**-74 */
|
||||
/**/ {{0x3b200000, 0x00000000} }, /* 2**-77 */
|
||||
/**/ {{0x3b900000, 0x00000000} }, /* 2**-70 */
|
||||
/**/ {{0x3b600000, 0x00000000} }, /* 2**-73 */
|
||||
/**/ {{0x3b300000, 0x00000000} }, /* 2**-76 */
|
||||
/**/ {{0x3b100000, 0x00000000} }, /* 2**-78 */
|
||||
/**/ {{0x3ae00000, 0x00000000} }, /* 2**-81 */
|
||||
};
|
||||
static const number
|
||||
nn[9]={ /* n */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
/**/ {{0x40000000, 0x00000000} }, /* 2 */
|
||||
/**/ {{0x40080000, 0x00000000} }, /* 3 */
|
||||
/**/ {{0x40100000, 0x00000000} }, /* 4 */
|
||||
/**/ {{0x40140000, 0x00000000} }, /* 5 */
|
||||
/**/ {{0x40180000, 0x00000000} }, /* 6 */
|
||||
/**/ {{0x401c0000, 0x00000000} }, /* 7 */
|
||||
/**/ {{0x40200000, 0x00000000} }, /* 8 */
|
||||
};
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const number
|
||||
twomm1[33] = { /* 2**-m1 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x3ee00000} }, /* 2**-17 */
|
||||
/**/ {{0x00000000, 0x3e800000} }, /* 2**-23 */
|
||||
/**/ {{0x00000000, 0x3e800000} }, /* 2**-23 */
|
||||
/**/ {{0x00000000, 0x3e300000} }, /* 2**-28 */
|
||||
/**/ {{0x00000000, 0x3e400000} }, /* 2**-27 */
|
||||
/**/ {{0x00000000, 0x3d900000} }, /* 2**-38 */
|
||||
/**/ {{0x00000000, 0x3d500000} }, /* 2**-42 */
|
||||
/**/ {{0x00000000, 0x3d800000} }, /* 2**-39 */
|
||||
/**/ {{0x00000000, 0x3d400000} }, /* 2**-43 */
|
||||
/**/ {{0x00000000, 0x3d000000} }, /* 2**-47 */
|
||||
/**/ {{0x00000000, 0x3d400000} }, /* 2**-43 */
|
||||
/**/ {{0x00000000, 0x3d000000} }, /* 2**-47 */
|
||||
/**/ {{0x00000000, 0x3cd00000} }, /* 2**-50 */
|
||||
/**/ {{0x00000000, 0x3c900000} }, /* 2**-54 */
|
||||
/**/ {{0x00000000, 0x3c600000} }, /* 2**-57 */
|
||||
/**/ {{0x00000000, 0x3c300000} }, /* 2**-60 */
|
||||
/**/ {{0x00000000, 0x3bf00000} }, /* 2**-64 */
|
||||
/**/ {{0x00000000, 0x3bc00000} }, /* 2**-67 */
|
||||
/**/ {{0x00000000, 0x3b800000} }, /* 2**-71 */
|
||||
/**/ {{0x00000000, 0x3b500000} }, /* 2**-74 */
|
||||
/**/ {{0x00000000, 0x3bb00000} }, /* 2**-68 */
|
||||
/**/ {{0x00000000, 0x3b800000} }, /* 2**-71 */
|
||||
/**/ {{0x00000000, 0x3b500000} }, /* 2**-74 */
|
||||
/**/ {{0x00000000, 0x3b200000} }, /* 2**-77 */
|
||||
/**/ {{0x00000000, 0x3b900000} }, /* 2**-70 */
|
||||
/**/ {{0x00000000, 0x3b600000} }, /* 2**-73 */
|
||||
/**/ {{0x00000000, 0x3b300000} }, /* 2**-76 */
|
||||
/**/ {{0x00000000, 0x3b100000} }, /* 2**-78 */
|
||||
/**/ {{0x00000000, 0x3ae00000} }, /* 2**-81 */
|
||||
};
|
||||
static const number
|
||||
nn[9]={ /* n */
|
||||
/**/ {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
/**/ {{0x00000000, 0x40000000} }, /* 2 */
|
||||
/**/ {{0x00000000, 0x40080000} }, /* 3 */
|
||||
/**/ {{0x00000000, 0x40100000} }, /* 4 */
|
||||
/**/ {{0x00000000, 0x40140000} }, /* 5 */
|
||||
/**/ {{0x00000000, 0x40180000} }, /* 6 */
|
||||
/**/ {{0x00000000, 0x401c0000} }, /* 7 */
|
||||
/**/ {{0x00000000, 0x40200000} }, /* 8 */
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
72
libgcc-math/dbl-64/mplog.c
Normal file
72
libgcc-math/dbl-64/mplog.c
Normal file
|
@ -0,0 +1,72 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:mplog.c */
|
||||
/* */
|
||||
/* FUNCTIONS: mplog */
|
||||
/* */
|
||||
/* FILES NEEDED: endian.h mpa.h mplog.h */
|
||||
/* mpexp.c */
|
||||
/* */
|
||||
/* Multi-Precision logarithm function subroutine (for precision p >= 4, */
|
||||
/* 2**(-1024) < x < 2**1024) and x is outside of the interval */
|
||||
/* [1-2**(-54),1+2**(-54)]. Upon entry, x should be set to the */
|
||||
/* multi-precision value of the input and y should be set into a multi- */
|
||||
/* precision value of an approximation of log(x) with relative error */
|
||||
/* bound of at most 2**(-52). The routine improves the accuracy of y. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
#include "endian.h"
|
||||
#include "mpa.h"
|
||||
|
||||
void __mpexp(mp_no *, mp_no *, int);
|
||||
|
||||
void __mplog(mp_no *x, mp_no *y, int p) {
|
||||
#include "mplog.h"
|
||||
int i,m;
|
||||
#if 0
|
||||
int j,k,m1,m2,n;
|
||||
double a,b;
|
||||
#endif
|
||||
static const int mp[33] = {0,0,0,0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4};
|
||||
mp_no mpone = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}};
|
||||
mp_no mpt1,mpt2;
|
||||
|
||||
/* Choose m and initiate mpone */
|
||||
m = mp[p]; mpone.e = 1; mpone.d[0]=mpone.d[1]=ONE;
|
||||
|
||||
/* Perform m newton iterations to solve for y: exp(y)-x=0. */
|
||||
/* The iterations formula is: y(n+1)=y(n)+(x*exp(-y(n))-1). */
|
||||
__cpy(y,&mpt1,p);
|
||||
for (i=0; i<m; i++) {
|
||||
mpt1.d[0]=-mpt1.d[0];
|
||||
__mpexp(&mpt1,&mpt2,p);
|
||||
__mul(x,&mpt2,&mpt1,p);
|
||||
__sub(&mpt1,&mpone,&mpt2,p);
|
||||
__add(y,&mpt2,&mpt1,p);
|
||||
__cpy(&mpt1,y,p);
|
||||
}
|
||||
return;
|
||||
}
|
45
libgcc-math/dbl-64/mplog.h
Normal file
45
libgcc-math/dbl-64/mplog.h
Normal file
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:mplog.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef MPLOG_H
|
||||
#define MPLOG_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const number
|
||||
/**/ one = {{0x3ff00000, 0x00000000} }; /* 1 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const number
|
||||
/**/ one = {{0x00000000, 0x3ff00000} }; /* 1 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define ONE one.d
|
||||
|
||||
#endif
|
103
libgcc-math/dbl-64/mpsqrt.c
Normal file
103
libgcc-math/dbl-64/mpsqrt.c
Normal file
|
@ -0,0 +1,103 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/****************************************************************************/
|
||||
/* MODULE_NAME:mpsqrt.c */
|
||||
/* */
|
||||
/* FUNCTION:mpsqrt */
|
||||
/* fastiroot */
|
||||
/* */
|
||||
/* FILES NEEDED:endian.h mpa.h mpsqrt.h */
|
||||
/* mpa.c */
|
||||
/* Multi-Precision square root function subroutine for precision p >= 4. */
|
||||
/* The relative error is bounded by 3.501*r**(1-p), where r=2**24. */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
#include "endian.h"
|
||||
#include "mpa.h"
|
||||
|
||||
/****************************************************************************/
|
||||
/* Multi-Precision square root function subroutine for precision p >= 4. */
|
||||
/* The relative error is bounded by 3.501*r**(1-p), where r=2**24. */
|
||||
/* Routine receives two pointers to Multi Precision numbers: */
|
||||
/* x (left argument) and y (next argument). Routine also receives precision */
|
||||
/* p as integer. Routine computes sqrt(*x) and stores result in *y */
|
||||
/****************************************************************************/
|
||||
|
||||
double fastiroot(double);
|
||||
|
||||
void __mpsqrt(mp_no *x, mp_no *y, int p) {
|
||||
#include "mpsqrt.h"
|
||||
|
||||
int i,m,ex,ey;
|
||||
double dx,dy;
|
||||
mp_no
|
||||
mphalf = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}},
|
||||
mp3halfs = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
|
||||
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}};
|
||||
mp_no mpxn,mpz,mpu,mpt1,mpt2;
|
||||
|
||||
/* Prepare multi-precision 1/2 and 3/2 */
|
||||
mphalf.e =0; mphalf.d[0] =ONE; mphalf.d[1] =HALFRAD;
|
||||
mp3halfs.e=1; mp3halfs.d[0]=ONE; mp3halfs.d[1]=ONE; mp3halfs.d[2]=HALFRAD;
|
||||
|
||||
ex=EX; ey=EX/2; __cpy(x,&mpxn,p); mpxn.e -= (ey+ey);
|
||||
__mp_dbl(&mpxn,&dx,p); dy=fastiroot(dx); __dbl_mp(dy,&mpu,p);
|
||||
__mul(&mpxn,&mphalf,&mpz,p);
|
||||
|
||||
m=mp[p];
|
||||
for (i=0; i<m; i++) {
|
||||
__mul(&mpu,&mpu,&mpt1,p);
|
||||
__mul(&mpt1,&mpz,&mpt2,p);
|
||||
__sub(&mp3halfs,&mpt2,&mpt1,p);
|
||||
__mul(&mpu,&mpt1,&mpt2,p);
|
||||
__cpy(&mpt2,&mpu,p);
|
||||
}
|
||||
__mul(&mpxn,&mpu,y,p); EY += ey;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/***********************************************************/
|
||||
/* Compute a double precision approximation for 1/sqrt(x) */
|
||||
/* with the relative error bounded by 2**-51. */
|
||||
/***********************************************************/
|
||||
double fastiroot(double x) {
|
||||
union {int i[2]; double d;} p,q;
|
||||
double y,z, t;
|
||||
int n;
|
||||
static const double c0 = 0.99674, c1 = -0.53380, c2 = 0.45472, c3 = -0.21553;
|
||||
|
||||
p.d = x;
|
||||
p.i[HIGH_HALF] = (p.i[HIGH_HALF] & 0x3FFFFFFF ) | 0x3FE00000 ;
|
||||
q.d = x;
|
||||
y = p.d;
|
||||
z = y -1.0;
|
||||
n = (q.i[HIGH_HALF] - p.i[HIGH_HALF])>>1;
|
||||
z = ((c3*z + c2)*z + c1)*z + c0; /* 2**-7 */
|
||||
z = z*(1.5 - 0.5*y*z*z); /* 2**-14 */
|
||||
p.d = z*(1.5 - 0.5*y*z*z); /* 2**-28 */
|
||||
p.i[HIGH_HALF] -= n;
|
||||
t = x*p.d;
|
||||
return p.d*(1.5 - 0.5*p.d*t);
|
||||
}
|
51
libgcc-math/dbl-64/mpsqrt.h
Normal file
51
libgcc-math/dbl-64/mpsqrt.h
Normal file
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:mpatan.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef MPSQRT_H
|
||||
#define MPSQRT_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const number
|
||||
/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
/**/ halfrad = {{0x41600000, 0x00000000} }; /* 2**23 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const number
|
||||
/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
/**/ halfrad = {{0x00000000, 0x41600000} }; /* 2**23 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define ONE one.d
|
||||
#define HALFRAD halfrad.d
|
||||
|
||||
static const int mp[33] = {0,0,0,0,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4};
|
||||
|
||||
#endif
|
60
libgcc-math/dbl-64/mptan.c
Normal file
60
libgcc-math/dbl-64/mptan.c
Normal file
|
@ -0,0 +1,60 @@
|
|||
|
||||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/**********************************************************************/
|
||||
/* MODULE_NAME:mptan.c */
|
||||
/* */
|
||||
/* FUNCTION: mptan */
|
||||
/* */
|
||||
/* FILES NEEDED: endian.h mpa.h */
|
||||
/* mpa.c sincos32.c branred.c */
|
||||
/* */
|
||||
/* Multi-Precision tan() function subroutine, for p=32. It is based */
|
||||
/* on the routines mpranred() and c32(). mpranred() performs range */
|
||||
/* reduction of a double number x into a multiple precision number */
|
||||
/* y, such that y=x-n*pi/2, abs(y)<pi/4, n=0,+-1,+-2,.... c32() */
|
||||
/* computes both sin(y), cos(y). tan(x) is either sin(y)/cos(y) */
|
||||
/* or -cos(y)/sin(y). The precision of the result is of about 559 */
|
||||
/* significant bits. */
|
||||
/* */
|
||||
/**********************************************************************/
|
||||
#include "endian.h"
|
||||
#include "mpa.h"
|
||||
|
||||
int __mpranred(double, mp_no *, int);
|
||||
void __c32(mp_no *, mp_no *, mp_no *, int);
|
||||
|
||||
void __mptan(double x, mp_no *mpy, int p) {
|
||||
|
||||
static const double Mone = -1.0;
|
||||
|
||||
int n;
|
||||
mp_no mpw, mpc, mps;
|
||||
|
||||
n = __mpranred(x, &mpw, p) & 0x00000001; /* negative or positive result */
|
||||
__c32(&mpw, &mpc, &mps, p); /* computing sin(x) and cos(x) */
|
||||
if (n) /* second or fourth quarter of unit circle */
|
||||
{ __dvd(&mpc,&mps,mpy,p);
|
||||
mpy->d[0] *= Mone;
|
||||
} /* tan is negative in this area */
|
||||
else __dvd(&mps,&mpc,mpy,p);
|
||||
|
||||
return;
|
||||
}
|
38
libgcc-math/dbl-64/mydefs.h
Normal file
38
libgcc-math/dbl-64/mydefs.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:mydefs.h */
|
||||
/* */
|
||||
/* common data and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef MY_H
|
||||
#define MY_H
|
||||
|
||||
typedef int int4;
|
||||
typedef union {int4 i[2]; double x;} mynumber;
|
||||
|
||||
#define ABS(x) (((x)>0)?(x):-(x))
|
||||
#define max(x,y) (((y)>(x))?(y):(x))
|
||||
#define min(x,y) (((y)<(x))?(y):(x))
|
||||
|
||||
#endif
|
32
libgcc-math/dbl-64/powtwo.tbl
Normal file
32
libgcc-math/dbl-64/powtwo.tbl
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/****************************************************************/
|
||||
/* TABLES FOR THE upow() FUNCTION */
|
||||
/****************************************************************/
|
||||
|
||||
|
||||
|
||||
static const double powtwo[] = { 1.0, 2.0, 4.0,
|
||||
8.0, 16.0, 32.0, 64.0, 128.0,
|
||||
256.0, 512.0, 1024.0, 2048.0, 4096.0,
|
||||
8192.0, 16384.0, 32768.0, 65536.0, 131072.0,
|
||||
262144.0, 524288.0, 1048576.0, 2097152.0, 4194304.0,
|
||||
8388608.0, 16777216.0, 33554432.0, 67108864.0, 134217728.0 };
|
58
libgcc-math/dbl-64/root.tbl
Normal file
58
libgcc-math/dbl-64/root.tbl
Normal file
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/****************************************************************/
|
||||
/* TABLES FOR THE usqrt() FUNCTION */
|
||||
/****************************************************************/
|
||||
|
||||
|
||||
static const double inroot[128] = {
|
||||
1.40872145012100, 1.39792649065766, 1.38737595123859, 1.37706074531819,
|
||||
1.36697225234682, 1.35710228748795, 1.34744307370643, 1.33798721601135,
|
||||
1.32872767765984, 1.31965775814772, 1.31077107283046, 1.30206153403386,
|
||||
1.29352333352711, 1.28515092624400, 1.27693901514820, 1.26888253714903,
|
||||
1.26097664998256, 1.25321671998073, 1.24559831065844, 1.23811717205462,
|
||||
1.23076923076923, 1.22355058064300, 1.21645747403153, 1.20948631362953,
|
||||
1.20263364480453, 1.19589614840310, 1.18927063399547, 1.18275403352732,
|
||||
1.17634339535009, 1.17003587860341, 1.16382874792529, 1.15771936846787,
|
||||
1.15170520119791, 1.14578379846309, 1.13995279980655, 1.13420992801334,
|
||||
1.12855298537376, 1.12297985014975, 1.11748847323133, 1.11207687497107,
|
||||
1.10674314218572, 1.10148542531442, 1.09630193572405, 1.09119094315276,
|
||||
1.08615077328341, 1.08117980543918, 1.07627647039410, 1.07143924829188,
|
||||
1.06666666666667, 1.06195729855996, 1.05730976072814, 1.05272271193563,
|
||||
1.04819485132867, 1.04372491688551, 1.03931168393861, 1.03495396376504,
|
||||
1.03065060224133, 1.02640047855933, 1.02220250399990, 1.01805562076124,
|
||||
1.01395880083916, 1.00991104495649, 1.00591138153909, 1.00195886573624,
|
||||
0.99611649018350, 0.98848330114434, 0.98102294317595, 0.97372899112030,
|
||||
0.96659534932828, 0.95961623024651, 0.95278613468066, 0.94609983358253,
|
||||
0.93955235122353, 0.93313894963169, 0.92685511418159, 0.92069654023750,
|
||||
0.91465912076005, 0.90873893479530, 0.90293223677296, 0.89723544654727,
|
||||
0.89164514012056, 0.88615804099474, 0.88077101210109, 0.87548104826333,
|
||||
0.87028526915267, 0.86518091269740, 0.86016532891275, 0.85523597411976,
|
||||
0.85039040552437, 0.84562627613070, 0.84094132996422, 0.83633339758291,
|
||||
0.83180039185606, 0.82734030399203, 0.82295119979782, 0.81863121615464,
|
||||
0.81437855769486, 0.81019149366693, 0.80606835497581, 0.80200753138734,
|
||||
0.79800746888611, 0.79406666717674, 0.79018367731967, 0.78635709949278,
|
||||
0.78258558087123, 0.77886781361798, 0.77520253297841, 0.77158851547266,
|
||||
0.76802457717971, 0.76450957210799, 0.76104239064719, 0.75762195809661,
|
||||
0.75424723326565, 0.75091720714229, 0.74763090162560, 0.74438736831878,
|
||||
0.74118568737933, 0.73802496642311, 0.73490433947940, 0.73182296599416,
|
||||
0.72878002987884, 0.72577473860242, 0.72280632232420, 0.71987403306536,
|
||||
0.71697714391715, 0.71411494828392, 0.71128675915902, 0.70849190843208 };
|
230
libgcc-math/dbl-64/s_atan.c
Normal file
230
libgcc-math/dbl-64/s_atan.c
Normal file
|
@ -0,0 +1,230 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: atnat.c */
|
||||
/* */
|
||||
/* FUNCTIONS: uatan */
|
||||
/* atanMp */
|
||||
/* signArctan */
|
||||
/* */
|
||||
/* */
|
||||
/* FILES NEEDED: dla.h endian.h mpa.h mydefs.h atnat.h */
|
||||
/* mpatan.c mpatan2.c mpsqrt.c */
|
||||
/* uatan.tbl */
|
||||
/* */
|
||||
/* An ultimate atan() routine. Given an IEEE double machine number x */
|
||||
/* it computes the correctly rounded (to nearest) value of atan(x). */
|
||||
/* */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round to nearest mode of IEEE 754 standard. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "dla.h"
|
||||
#include "mpa.h"
|
||||
#include "MathLib.h"
|
||||
#include "uatan.tbl"
|
||||
#include "atnat.h"
|
||||
#include "math.h"
|
||||
|
||||
void __mpatan(mp_no *,mp_no *,int); /* see definition in mpatan.c */
|
||||
static double atanMp(double,const int[]);
|
||||
double __signArctan(double,double);
|
||||
/* An ultimate atan() routine. Given an IEEE double machine number x, */
|
||||
/* routine computes the correctly rounded (to nearest) value of atan(x). */
|
||||
double atan(double x) {
|
||||
|
||||
|
||||
double cor,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,u,u2,u3,
|
||||
v,vv,w,ww,y,yy,z,zz;
|
||||
#if 0
|
||||
double y1,y2;
|
||||
#endif
|
||||
int i,ux,dx;
|
||||
#if 0
|
||||
int p;
|
||||
#endif
|
||||
static const int pr[M]={6,8,10,32};
|
||||
number num;
|
||||
#if 0
|
||||
mp_no mpt1,mpx,mpy,mpy1,mpy2,mperr;
|
||||
#endif
|
||||
|
||||
num.d = x; ux = num.i[HIGH_HALF]; dx = num.i[LOW_HALF];
|
||||
|
||||
/* x=NaN */
|
||||
if (((ux&0x7ff00000)==0x7ff00000) && (((ux&0x000fffff)|dx)!=0x00000000))
|
||||
return x+x;
|
||||
|
||||
/* Regular values of x, including denormals +-0 and +-INF */
|
||||
u = (x<ZERO) ? -x : x;
|
||||
if (u<C) {
|
||||
if (u<B) {
|
||||
if (u<A) { /* u < A */
|
||||
return x; }
|
||||
else { /* A <= u < B */
|
||||
v=x*x; yy=x*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d)))));
|
||||
if ((y=x+(yy-U1*x)) == x+(yy+U1*x)) return y;
|
||||
|
||||
EMULV(x,x,v,vv,t1,t2,t3,t4,t5) /* v+vv=x^2 */
|
||||
s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d))));
|
||||
ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(x,ZERO,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(x,ZERO,s2,ss2,s1,ss1,t1,t2)
|
||||
if ((y=s1+(ss1-U5*s1)) == s1+(ss1+U5*s1)) return y;
|
||||
|
||||
return atanMp(x,pr);
|
||||
} }
|
||||
else { /* B <= u < C */
|
||||
i=(TWO52+TWO8*u)-TWO52; i-=16;
|
||||
z=u-cij[i][0].d;
|
||||
yy=z*(cij[i][2].d+z*(cij[i][3].d+z*(cij[i][4].d+
|
||||
z*(cij[i][5].d+z* cij[i][6].d))));
|
||||
t1=cij[i][1].d;
|
||||
if (i<112) {
|
||||
if (i<48) u2=U21; /* u < 1/4 */
|
||||
else u2=U22; } /* 1/4 <= u < 1/2 */
|
||||
else {
|
||||
if (i<176) u2=U23; /* 1/2 <= u < 3/4 */
|
||||
else u2=U24; } /* 3/4 <= u <= 1 */
|
||||
if ((y=t1+(yy-u2*t1)) == t1+(yy+u2*t1)) return __signArctan(x,y);
|
||||
|
||||
z=u-hij[i][0].d;
|
||||
s1=z*(hij[i][11].d+z*(hij[i][12].d+z*(hij[i][13].d+
|
||||
z*(hij[i][14].d+z* hij[i][15].d))));
|
||||
ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(z,ZERO,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(z,ZERO,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(z,ZERO,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(z,ZERO,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2)
|
||||
if ((y=s2+(ss2-U6*s2)) == s2+(ss2+U6*s2)) return __signArctan(x,y);
|
||||
|
||||
return atanMp(x,pr);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (u<D) { /* C <= u < D */
|
||||
w=ONE/u;
|
||||
EMULV(w,u,t1,t2,t3,t4,t5,t6,t7)
|
||||
ww=w*((ONE-t1)-t2);
|
||||
i=(TWO52+TWO8*w)-TWO52; i-=16;
|
||||
z=(w-cij[i][0].d)+ww;
|
||||
yy=HPI1-z*(cij[i][2].d+z*(cij[i][3].d+z*(cij[i][4].d+
|
||||
z*(cij[i][5].d+z* cij[i][6].d))));
|
||||
t1=HPI-cij[i][1].d;
|
||||
if (i<112) u3=U31; /* w < 1/2 */
|
||||
else u3=U32; /* w >= 1/2 */
|
||||
if ((y=t1+(yy-u3)) == t1+(yy+u3)) return __signArctan(x,y);
|
||||
|
||||
DIV2(ONE,ZERO,u,ZERO,w,ww,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
t1=w-hij[i][0].d;
|
||||
EADD(t1,ww,z,zz)
|
||||
s1=z*(hij[i][11].d+z*(hij[i][12].d+z*(hij[i][13].d+
|
||||
z*(hij[i][14].d+z* hij[i][15].d))));
|
||||
ADD2(hij[i][9].d,hij[i][10].d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][7].d,hij[i][8].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][5].d,hij[i][6].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][3].d,hij[i][4].d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(z,zz,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(hij[i][1].d,hij[i][2].d,s1,ss1,s2,ss2,t1,t2)
|
||||
SUB2(HPI,HPI1,s2,ss2,s1,ss1,t1,t2)
|
||||
if ((y=s1+(ss1-U7)) == s1+(ss1+U7)) return __signArctan(x,y);
|
||||
|
||||
return atanMp(x,pr);
|
||||
}
|
||||
else {
|
||||
if (u<E) { /* D <= u < E */
|
||||
w=ONE/u; v=w*w;
|
||||
EMULV(w,u,t1,t2,t3,t4,t5,t6,t7)
|
||||
yy=w*v*(d3.d+v*(d5.d+v*(d7.d+v*(d9.d+v*(d11.d+v*d13.d)))));
|
||||
ww=w*((ONE-t1)-t2);
|
||||
ESUB(HPI,w,t3,cor)
|
||||
yy=((HPI1+cor)-ww)-yy;
|
||||
if ((y=t3+(yy-U4)) == t3+(yy+U4)) return __signArctan(x,y);
|
||||
|
||||
DIV2(ONE,ZERO,u,ZERO,w,ww,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
MUL2(w,ww,w,ww,v,vv,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
s1=v*(f11.d+v*(f13.d+v*(f15.d+v*(f17.d+v*f19.d))));
|
||||
ADD2(f9.d,ff9.d,s1,ZERO,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f7.d,ff7.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f5.d,ff5.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(f3.d,ff3.d,s1,ss1,s2,ss2,t1,t2)
|
||||
MUL2(v,vv,s2,ss2,s1,ss1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(w,ww,s1,ss1,s2,ss2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(w,ww,s2,ss2,s1,ss1,t1,t2)
|
||||
SUB2(HPI,HPI1,s1,ss1,s2,ss2,t1,t2)
|
||||
if ((y=s2+(ss2-U8)) == s2+(ss2+U8)) return __signArctan(x,y);
|
||||
|
||||
return atanMp(x,pr);
|
||||
}
|
||||
else {
|
||||
/* u >= E */
|
||||
if (x>0) return HPI;
|
||||
else return MHPI; }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Fix the sign of y and return */
|
||||
double __signArctan(double x,double y){
|
||||
|
||||
if (x<ZERO) return -y;
|
||||
else return y;
|
||||
}
|
||||
|
||||
/* Final stages. Compute atan(x) by multiple precision arithmetic */
|
||||
static double atanMp(double x,const int pr[]){
|
||||
mp_no mpx,mpy,mpy2,mperr,mpt1,mpy1;
|
||||
double y1,y2;
|
||||
int i,p;
|
||||
|
||||
for (i=0; i<M; i++) {
|
||||
p = pr[i];
|
||||
__dbl_mp(x,&mpx,p); __mpatan(&mpx,&mpy,p);
|
||||
__dbl_mp(u9[i].d,&mpt1,p); __mul(&mpy,&mpt1,&mperr,p);
|
||||
__add(&mpy,&mperr,&mpy1,p); __sub(&mpy,&mperr,&mpy2,p);
|
||||
__mp_dbl(&mpy1,&y1,p); __mp_dbl(&mpy2,&y2,p);
|
||||
if (y1==y2) return y1;
|
||||
}
|
||||
return y1; /*if unpossible to do exact computing */
|
||||
}
|
||||
|
||||
#ifdef NO_LONG_DOUBLE
|
||||
weak_alias (atan, atanl)
|
||||
#endif
|
86
libgcc-math/dbl-64/s_floor.c
Normal file
86
libgcc-math/dbl-64/s_floor.c
Normal file
|
@ -0,0 +1,86 @@
|
|||
/* @(#)s_floor.c 5.1 93/09/24 */
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_floor.c,v 1.8 1995/05/10 20:47:20 jtc Exp $";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* floor(x)
|
||||
* Return x rounded toward -inf to integral value
|
||||
* Method:
|
||||
* Bit twiddling.
|
||||
* Exception:
|
||||
* Inexact flag raised if x not equal to floor(x).
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const double huge = 1.0e300;
|
||||
#else
|
||||
static double huge = 1.0e300;
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
double __floor(double x)
|
||||
#else
|
||||
double __floor(x)
|
||||
double x;
|
||||
#endif
|
||||
{
|
||||
int32_t i0,i1,j0;
|
||||
u_int32_t i,j;
|
||||
EXTRACT_WORDS(i0,i1,x);
|
||||
j0 = ((i0>>20)&0x7ff)-0x3ff;
|
||||
if(j0<20) {
|
||||
if(j0<0) { /* raise inexact if x != 0 */
|
||||
if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
|
||||
if(i0>=0) {i0=i1=0;}
|
||||
else if(((i0&0x7fffffff)|i1)!=0)
|
||||
{ i0=0xbff00000;i1=0;}
|
||||
}
|
||||
} else {
|
||||
i = (0x000fffff)>>j0;
|
||||
if(((i0&i)|i1)==0) return x; /* x is integral */
|
||||
if(huge+x>0.0) { /* raise inexact flag */
|
||||
if(i0<0) i0 += (0x00100000)>>j0;
|
||||
i0 &= (~i); i1=0;
|
||||
}
|
||||
}
|
||||
} else if (j0>51) {
|
||||
if(j0==0x400) return x+x; /* inf or NaN */
|
||||
else return x; /* x is integral */
|
||||
} else {
|
||||
i = ((u_int32_t)(0xffffffff))>>(j0-20);
|
||||
if((i1&i)==0) return x; /* x is integral */
|
||||
if(huge+x>0.0) { /* raise inexact flag */
|
||||
if(i0<0) {
|
||||
if(j0==20) i0+=1;
|
||||
else {
|
||||
j = i1+(1<<(52-j0));
|
||||
if(j<i1) i0 +=1 ; /* got a carry */
|
||||
i1=j;
|
||||
}
|
||||
}
|
||||
i1 &= (~i);
|
||||
}
|
||||
}
|
||||
INSERT_WORDS(x,i0,i1);
|
||||
return x;
|
||||
}
|
||||
weak_alias (__floor, floor)
|
||||
#ifdef NO_LONG_DOUBLE
|
||||
strong_alias (__floor, __floorl)
|
||||
weak_alias (__floor, floorl)
|
||||
#endif
|
33
libgcc-math/dbl-64/s_isinf.c
Normal file
33
libgcc-math/dbl-64/s_isinf.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Written by J.T. Conklin <jtc@netbsd.org>.
|
||||
* Changed to return -1 for -Inf by Ulrich Drepper <drepper@cygnus.com>.
|
||||
* Public domain.
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_isinf.c,v 1.3 1995/05/11 23:20:14 jtc Exp $";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* isinf(x) returns 1 is x is inf, -1 if x is -inf, else 0;
|
||||
* no branching!
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
int
|
||||
__isinf (double x)
|
||||
{
|
||||
int32_t hx,lx;
|
||||
EXTRACT_WORDS(hx,lx,x);
|
||||
lx |= (hx & 0x7fffffff) ^ 0x7ff00000;
|
||||
lx |= -lx;
|
||||
return ~(lx >> 31) & (hx >> 30);
|
||||
}
|
||||
hidden_def (__isinf)
|
||||
weak_alias (__isinf, isinf)
|
||||
#ifdef NO_LONG_DOUBLE
|
||||
strong_alias (__isinf, __isinfl)
|
||||
weak_alias (__isinf, isinfl)
|
||||
#endif
|
70
libgcc-math/dbl-64/s_scalbn.c
Normal file
70
libgcc-math/dbl-64/s_scalbn.c
Normal file
|
@ -0,0 +1,70 @@
|
|||
/* @(#)s_scalbn.c 5.1 93/09/24 */
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_scalbn.c,v 1.8 1995/05/10 20:48:08 jtc Exp $";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* scalbn (double x, int n)
|
||||
* scalbn(x,n) returns x* 2**n computed by exponent
|
||||
* manipulation rather than by actually performing an
|
||||
* exponentiation or a multiplication.
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const double
|
||||
#else
|
||||
static double
|
||||
#endif
|
||||
two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */
|
||||
twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */
|
||||
huge = 1.0e+300,
|
||||
tiny = 1.0e-300;
|
||||
|
||||
#ifdef __STDC__
|
||||
double __scalbn (double x, int n)
|
||||
#else
|
||||
double __scalbn (x,n)
|
||||
double x; int n;
|
||||
#endif
|
||||
{
|
||||
int32_t k,hx,lx;
|
||||
EXTRACT_WORDS(hx,lx,x);
|
||||
k = (hx&0x7ff00000)>>20; /* extract exponent */
|
||||
if (k==0) { /* 0 or subnormal x */
|
||||
if ((lx|(hx&0x7fffffff))==0) return x; /* +-0 */
|
||||
x *= two54;
|
||||
GET_HIGH_WORD(hx,x);
|
||||
k = ((hx&0x7ff00000)>>20) - 54;
|
||||
}
|
||||
if (k==0x7ff) return x+x; /* NaN or Inf */
|
||||
k = k+n;
|
||||
if (n> 50000 || k > 0x7fe)
|
||||
return huge*__builtin_copysign(huge,x); /* overflow */
|
||||
if (n< -50000) return tiny*__builtin_copysign(tiny,x); /*underflow*/
|
||||
if (k > 0) /* normal result */
|
||||
{SET_HIGH_WORD(x,(hx&0x800fffff)|(k<<20)); return x;}
|
||||
if (k <= -54)
|
||||
return tiny*__builtin_copysign(tiny,x); /*underflow*/
|
||||
k += 54; /* subnormal result */
|
||||
SET_HIGH_WORD(x,(hx&0x800fffff)|(k<<20));
|
||||
return x*twom54;
|
||||
}
|
||||
weak_alias (__scalbn, scalbn)
|
||||
#ifdef NO_LONG_DOUBLE
|
||||
strong_alias (__scalbn, __scalbnl)
|
||||
weak_alias (__scalbn, scalbnl)
|
||||
#endif
|
1129
libgcc-math/dbl-64/s_sin.c
Normal file
1129
libgcc-math/dbl-64/s_sin.c
Normal file
File diff suppressed because it is too large
Load diff
486
libgcc-math/dbl-64/s_tan.c
Normal file
486
libgcc-math/dbl-64/s_tan.c
Normal file
|
@ -0,0 +1,486 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/*********************************************************************/
|
||||
/* MODULE_NAME: utan.c */
|
||||
/* */
|
||||
/* FUNCTIONS: utan */
|
||||
/* tanMp */
|
||||
/* */
|
||||
/* FILES NEEDED:dla.h endian.h mpa.h mydefs.h utan.h */
|
||||
/* branred.c sincos32.c mptan.c */
|
||||
/* utan.tbl */
|
||||
/* */
|
||||
/* An ultimate tan routine. Given an IEEE double machine number x */
|
||||
/* it computes the correctly rounded (to nearest) value of tan(x). */
|
||||
/* Assumption: Machine arithmetic operations are performed in */
|
||||
/* round to nearest mode of IEEE 754 standard. */
|
||||
/* */
|
||||
/*********************************************************************/
|
||||
#include "endian.h"
|
||||
#include "dla.h"
|
||||
#include "mpa.h"
|
||||
#include "MathLib.h"
|
||||
#include "math.h"
|
||||
|
||||
static double tanMp(double);
|
||||
void __mptan(double, mp_no *, int);
|
||||
|
||||
double tan(double x) {
|
||||
#include "utan.h"
|
||||
#include "utan.tbl"
|
||||
|
||||
int ux,i,n;
|
||||
double a,da,a2,b,db,c,dc,c1,cc1,c2,cc2,c3,cc3,fi,ffi,gi,pz,s,sy,
|
||||
t,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,w,x2,xn,xx2,y,ya,yya,z0,z,zz,z2,zz2;
|
||||
int p;
|
||||
number num,v;
|
||||
mp_no mpa,mpt1,mpt2;
|
||||
#if 0
|
||||
mp_no mpy;
|
||||
#endif
|
||||
|
||||
int __branred(double, double *, double *);
|
||||
int __mpranred(double, mp_no *, int);
|
||||
|
||||
/* x=+-INF, x=NaN */
|
||||
num.d = x; ux = num.i[HIGH_HALF];
|
||||
if ((ux&0x7ff00000)==0x7ff00000) return x-x;
|
||||
|
||||
w=(x<ZERO) ? -x : x;
|
||||
|
||||
/* (I) The case abs(x) <= 1.259e-8 */
|
||||
if (w<=g1.d) return x;
|
||||
|
||||
/* (II) The case 1.259e-8 < abs(x) <= 0.0608 */
|
||||
if (w<=g2.d) {
|
||||
|
||||
/* First stage */
|
||||
x2 = x*x;
|
||||
t2 = x*x2*(d3.d+x2*(d5.d+x2*(d7.d+x2*(d9.d+x2*d11.d))));
|
||||
if ((y=x+(t2-u1.d*t2)) == x+(t2+u1.d*t2)) return y;
|
||||
|
||||
/* Second stage */
|
||||
c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+
|
||||
x2*a27.d))))));
|
||||
EMULV(x,x,x2,xx2,t1,t2,t3,t4,t5)
|
||||
ADD2(a13.d,aa13.d,c1,zero.d,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a11.d,aa11.d,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a9.d ,aa9.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a7.d ,aa7.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a5.d ,aa5.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a3.d ,aa3.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(x ,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(x ,zero.d,c2,cc2,c1,cc1,t1,t2)
|
||||
if ((y=c1+(cc1-u2.d*c1)) == c1+(cc1+u2.d*c1)) return y;
|
||||
return tanMp(x);
|
||||
}
|
||||
|
||||
/* (III) The case 0.0608 < abs(x) <= 0.787 */
|
||||
if (w<=g3.d) {
|
||||
|
||||
/* First stage */
|
||||
i = ((int) (mfftnhf.d+TWO8*w));
|
||||
z = w-xfg[i][0].d; z2 = z*z; s = (x<ZERO) ? MONE : ONE;
|
||||
pz = z+z*z2*(e0.d+z2*e1.d);
|
||||
fi = xfg[i][1].d; gi = xfg[i][2].d; t2 = pz*(gi+fi)/(gi-pz);
|
||||
if ((y=fi+(t2-fi*u3.d))==fi+(t2+fi*u3.d)) return (s*y);
|
||||
t3 = (t2<ZERO) ? -t2 : t2;
|
||||
if ((y=fi+(t2-(t4=fi*ua3.d+t3*ub3.d)))==fi+(t2+t4)) return (s*y);
|
||||
|
||||
/* Second stage */
|
||||
ffi = xfg[i][3].d;
|
||||
c1 = z2*(a7.d+z2*(a9.d+z2*a11.d));
|
||||
EMULV(z,z,z2,zz2,t1,t2,t3,t4,t5)
|
||||
ADD2(a5.d,aa5.d,c1,zero.d,c2,cc2,t1,t2)
|
||||
MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a3.d,aa3.d,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(z ,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(z ,zero.d,c2,cc2,c1,cc1,t1,t2)
|
||||
|
||||
ADD2(fi ,ffi,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(fi ,ffi,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
SUB2(one.d,zero.d,c3,cc3,c1,cc1,t1,t2)
|
||||
DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
|
||||
if ((y=c3+(cc3-u4.d*c3))==c3+(cc3+u4.d*c3)) return (s*y);
|
||||
return tanMp(x);
|
||||
}
|
||||
|
||||
/* (---) The case 0.787 < abs(x) <= 25 */
|
||||
if (w<=g4.d) {
|
||||
/* Range reduction by algorithm i */
|
||||
t = (x*hpinv.d + toint.d);
|
||||
xn = t - toint.d;
|
||||
v.d = t;
|
||||
t1 = (x - xn*mp1.d) - xn*mp2.d;
|
||||
n =v.i[LOW_HALF] & 0x00000001;
|
||||
da = xn*mp3.d;
|
||||
a=t1-da;
|
||||
da = (t1-a)-da;
|
||||
if (a<ZERO) {ya=-a; yya=-da; sy=MONE;}
|
||||
else {ya= a; yya= da; sy= ONE;}
|
||||
|
||||
/* (IV),(V) The case 0.787 < abs(x) <= 25, abs(y) <= 1e-7 */
|
||||
if (ya<=gy1.d) return tanMp(x);
|
||||
|
||||
/* (VI) The case 0.787 < abs(x) <= 25, 1e-7 < abs(y) <= 0.0608 */
|
||||
if (ya<=gy2.d) {
|
||||
a2 = a*a;
|
||||
t2 = da+a*a2*(d3.d+a2*(d5.d+a2*(d7.d+a2*(d9.d+a2*d11.d))));
|
||||
if (n) {
|
||||
/* First stage -cot */
|
||||
EADD(a,t2,b,db)
|
||||
DIV2(one.d,zero.d,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c+(dc-u6.d*c))==c+(dc+u6.d*c)) return (-y); }
|
||||
else {
|
||||
/* First stage tan */
|
||||
if ((y=a+(t2-u5.d*a))==a+(t2+u5.d*a)) return y; }
|
||||
/* Second stage */
|
||||
/* Range reduction by algorithm ii */
|
||||
t = (x*hpinv.d + toint.d);
|
||||
xn = t - toint.d;
|
||||
v.d = t;
|
||||
t1 = (x - xn*mp1.d) - xn*mp2.d;
|
||||
n =v.i[LOW_HALF] & 0x00000001;
|
||||
da = xn*pp3.d;
|
||||
t=t1-da;
|
||||
da = (t1-t)-da;
|
||||
t1 = xn*pp4.d;
|
||||
a = t - t1;
|
||||
da = ((t-a)-t1)+da;
|
||||
|
||||
/* Second stage */
|
||||
EADD(a,da,t1,t2) a=t1; da=t2;
|
||||
MUL2(a,da,a,da,x2,xx2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+
|
||||
x2*a27.d))))));
|
||||
ADD2(a13.d,aa13.d,c1,zero.d,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a11.d,aa11.d,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a9.d ,aa9.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a7.d ,aa7.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a5.d ,aa5.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a3.d ,aa3.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(a ,da ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a ,da ,c2,cc2,c1,cc1,t1,t2)
|
||||
|
||||
if (n) {
|
||||
/* Second stage -cot */
|
||||
DIV2(one.d,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c2+(cc2-u8.d*c2)) == c2+(cc2+u8.d*c2)) return (-y); }
|
||||
else {
|
||||
/* Second stage tan */
|
||||
if ((y=c1+(cc1-u7.d*c1)) == c1+(cc1+u7.d*c1)) return y; }
|
||||
return tanMp(x);
|
||||
}
|
||||
|
||||
/* (VII) The case 0.787 < abs(x) <= 25, 0.0608 < abs(y) <= 0.787 */
|
||||
|
||||
/* First stage */
|
||||
i = ((int) (mfftnhf.d+TWO8*ya));
|
||||
z = (z0=(ya-xfg[i][0].d))+yya; z2 = z*z;
|
||||
pz = z+z*z2*(e0.d+z2*e1.d);
|
||||
fi = xfg[i][1].d; gi = xfg[i][2].d;
|
||||
|
||||
if (n) {
|
||||
/* -cot */
|
||||
t2 = pz*(fi+gi)/(fi+pz);
|
||||
if ((y=gi-(t2-gi*u10.d))==gi-(t2+gi*u10.d)) return (-sy*y);
|
||||
t3 = (t2<ZERO) ? -t2 : t2;
|
||||
if ((y=gi-(t2-(t4=gi*ua10.d+t3*ub10.d)))==gi-(t2+t4)) return (-sy*y); }
|
||||
else {
|
||||
/* tan */
|
||||
t2 = pz*(gi+fi)/(gi-pz);
|
||||
if ((y=fi+(t2-fi*u9.d))==fi+(t2+fi*u9.d)) return (sy*y);
|
||||
t3 = (t2<ZERO) ? -t2 : t2;
|
||||
if ((y=fi+(t2-(t4=fi*ua9.d+t3*ub9.d)))==fi+(t2+t4)) return (sy*y); }
|
||||
|
||||
/* Second stage */
|
||||
ffi = xfg[i][3].d;
|
||||
EADD(z0,yya,z,zz)
|
||||
MUL2(z,zz,z,zz,z2,zz2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
c1 = z2*(a7.d+z2*(a9.d+z2*a11.d));
|
||||
ADD2(a5.d,aa5.d,c1,zero.d,c2,cc2,t1,t2)
|
||||
MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a3.d,aa3.d,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(z ,zz ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(z ,zz ,c2,cc2,c1,cc1,t1,t2)
|
||||
|
||||
ADD2(fi ,ffi,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(fi ,ffi,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
SUB2(one.d,zero.d,c3,cc3,c1,cc1,t1,t2)
|
||||
|
||||
if (n) {
|
||||
/* -cot */
|
||||
DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c3+(cc3-u12.d*c3))==c3+(cc3+u12.d*c3)) return (-sy*y); }
|
||||
else {
|
||||
/* tan */
|
||||
DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c3+(cc3-u11.d*c3))==c3+(cc3+u11.d*c3)) return (sy*y); }
|
||||
|
||||
return tanMp(x);
|
||||
}
|
||||
|
||||
/* (---) The case 25 < abs(x) <= 1e8 */
|
||||
if (w<=g5.d) {
|
||||
/* Range reduction by algorithm ii */
|
||||
t = (x*hpinv.d + toint.d);
|
||||
xn = t - toint.d;
|
||||
v.d = t;
|
||||
t1 = (x - xn*mp1.d) - xn*mp2.d;
|
||||
n =v.i[LOW_HALF] & 0x00000001;
|
||||
da = xn*pp3.d;
|
||||
t=t1-da;
|
||||
da = (t1-t)-da;
|
||||
t1 = xn*pp4.d;
|
||||
a = t - t1;
|
||||
da = ((t-a)-t1)+da;
|
||||
EADD(a,da,t1,t2) a=t1; da=t2;
|
||||
if (a<ZERO) {ya=-a; yya=-da; sy=MONE;}
|
||||
else {ya= a; yya= da; sy= ONE;}
|
||||
|
||||
/* (+++) The case 25 < abs(x) <= 1e8, abs(y) <= 1e-7 */
|
||||
if (ya<=gy1.d) return tanMp(x);
|
||||
|
||||
/* (VIII) The case 25 < abs(x) <= 1e8, 1e-7 < abs(y) <= 0.0608 */
|
||||
if (ya<=gy2.d) {
|
||||
a2 = a*a;
|
||||
t2 = da+a*a2*(d3.d+a2*(d5.d+a2*(d7.d+a2*(d9.d+a2*d11.d))));
|
||||
if (n) {
|
||||
/* First stage -cot */
|
||||
EADD(a,t2,b,db)
|
||||
DIV2(one.d,zero.d,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c+(dc-u14.d*c))==c+(dc+u14.d*c)) return (-y); }
|
||||
else {
|
||||
/* First stage tan */
|
||||
if ((y=a+(t2-u13.d*a))==a+(t2+u13.d*a)) return y; }
|
||||
|
||||
/* Second stage */
|
||||
MUL2(a,da,a,da,x2,xx2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+
|
||||
x2*a27.d))))));
|
||||
ADD2(a13.d,aa13.d,c1,zero.d,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a11.d,aa11.d,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a9.d ,aa9.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a7.d ,aa7.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a5.d ,aa5.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a3.d ,aa3.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(a ,da ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a ,da ,c2,cc2,c1,cc1,t1,t2)
|
||||
|
||||
if (n) {
|
||||
/* Second stage -cot */
|
||||
DIV2(one.d,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c2+(cc2-u16.d*c2)) == c2+(cc2+u16.d*c2)) return (-y); }
|
||||
else {
|
||||
/* Second stage tan */
|
||||
if ((y=c1+(cc1-u15.d*c1)) == c1+(cc1+u15.d*c1)) return (y); }
|
||||
return tanMp(x);
|
||||
}
|
||||
|
||||
/* (IX) The case 25 < abs(x) <= 1e8, 0.0608 < abs(y) <= 0.787 */
|
||||
/* First stage */
|
||||
i = ((int) (mfftnhf.d+TWO8*ya));
|
||||
z = (z0=(ya-xfg[i][0].d))+yya; z2 = z*z;
|
||||
pz = z+z*z2*(e0.d+z2*e1.d);
|
||||
fi = xfg[i][1].d; gi = xfg[i][2].d;
|
||||
|
||||
if (n) {
|
||||
/* -cot */
|
||||
t2 = pz*(fi+gi)/(fi+pz);
|
||||
if ((y=gi-(t2-gi*u18.d))==gi-(t2+gi*u18.d)) return (-sy*y);
|
||||
t3 = (t2<ZERO) ? -t2 : t2;
|
||||
if ((y=gi-(t2-(t4=gi*ua18.d+t3*ub18.d)))==gi-(t2+t4)) return (-sy*y); }
|
||||
else {
|
||||
/* tan */
|
||||
t2 = pz*(gi+fi)/(gi-pz);
|
||||
if ((y=fi+(t2-fi*u17.d))==fi+(t2+fi*u17.d)) return (sy*y);
|
||||
t3 = (t2<ZERO) ? -t2 : t2;
|
||||
if ((y=fi+(t2-(t4=fi*ua17.d+t3*ub17.d)))==fi+(t2+t4)) return (sy*y); }
|
||||
|
||||
/* Second stage */
|
||||
ffi = xfg[i][3].d;
|
||||
EADD(z0,yya,z,zz)
|
||||
MUL2(z,zz,z,zz,z2,zz2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
c1 = z2*(a7.d+z2*(a9.d+z2*a11.d));
|
||||
ADD2(a5.d,aa5.d,c1,zero.d,c2,cc2,t1,t2)
|
||||
MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a3.d,aa3.d,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(z ,zz ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(z ,zz ,c2,cc2,c1,cc1,t1,t2)
|
||||
|
||||
ADD2(fi ,ffi,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(fi ,ffi,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
SUB2(one.d,zero.d,c3,cc3,c1,cc1,t1,t2)
|
||||
|
||||
if (n) {
|
||||
/* -cot */
|
||||
DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c3+(cc3-u20.d*c3))==c3+(cc3+u20.d*c3)) return (-sy*y); }
|
||||
else {
|
||||
/* tan */
|
||||
DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c3+(cc3-u19.d*c3))==c3+(cc3+u19.d*c3)) return (sy*y); }
|
||||
return tanMp(x);
|
||||
}
|
||||
|
||||
/* (---) The case 1e8 < abs(x) < 2**1024 */
|
||||
/* Range reduction by algorithm iii */
|
||||
n = (__branred(x,&a,&da)) & 0x00000001;
|
||||
EADD(a,da,t1,t2) a=t1; da=t2;
|
||||
if (a<ZERO) {ya=-a; yya=-da; sy=MONE;}
|
||||
else {ya= a; yya= da; sy= ONE;}
|
||||
|
||||
/* (+++) The case 1e8 < abs(x) < 2**1024, abs(y) <= 1e-7 */
|
||||
if (ya<=gy1.d) return tanMp(x);
|
||||
|
||||
/* (X) The case 1e8 < abs(x) < 2**1024, 1e-7 < abs(y) <= 0.0608 */
|
||||
if (ya<=gy2.d) {
|
||||
a2 = a*a;
|
||||
t2 = da+a*a2*(d3.d+a2*(d5.d+a2*(d7.d+a2*(d9.d+a2*d11.d))));
|
||||
if (n) {
|
||||
/* First stage -cot */
|
||||
EADD(a,t2,b,db)
|
||||
DIV2(one.d,zero.d,b,db,c,dc,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c+(dc-u22.d*c))==c+(dc+u22.d*c)) return (-y); }
|
||||
else {
|
||||
/* First stage tan */
|
||||
if ((y=a+(t2-u21.d*a))==a+(t2+u21.d*a)) return y; }
|
||||
|
||||
/* Second stage */
|
||||
/* Reduction by algorithm iv */
|
||||
p=10; n = (__mpranred(x,&mpa,p)) & 0x00000001;
|
||||
__mp_dbl(&mpa,&a,p); __dbl_mp(a,&mpt1,p);
|
||||
__sub(&mpa,&mpt1,&mpt2,p); __mp_dbl(&mpt2,&da,p);
|
||||
|
||||
MUL2(a,da,a,da,x2,xx2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
c1 = x2*(a15.d+x2*(a17.d+x2*(a19.d+x2*(a21.d+x2*(a23.d+x2*(a25.d+
|
||||
x2*a27.d))))));
|
||||
ADD2(a13.d,aa13.d,c1,zero.d,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a11.d,aa11.d,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a9.d ,aa9.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a7.d ,aa7.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a5.d ,aa5.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a3.d ,aa3.d ,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(x2,xx2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(a ,da ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a ,da ,c2,cc2,c1,cc1,t1,t2)
|
||||
|
||||
if (n) {
|
||||
/* Second stage -cot */
|
||||
DIV2(one.d,zero.d,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c2+(cc2-u24.d*c2)) == c2+(cc2+u24.d*c2)) return (-y); }
|
||||
else {
|
||||
/* Second stage tan */
|
||||
if ((y=c1+(cc1-u23.d*c1)) == c1+(cc1+u23.d*c1)) return y; }
|
||||
return tanMp(x);
|
||||
}
|
||||
|
||||
/* (XI) The case 1e8 < abs(x) < 2**1024, 0.0608 < abs(y) <= 0.787 */
|
||||
/* First stage */
|
||||
i = ((int) (mfftnhf.d+TWO8*ya));
|
||||
z = (z0=(ya-xfg[i][0].d))+yya; z2 = z*z;
|
||||
pz = z+z*z2*(e0.d+z2*e1.d);
|
||||
fi = xfg[i][1].d; gi = xfg[i][2].d;
|
||||
|
||||
if (n) {
|
||||
/* -cot */
|
||||
t2 = pz*(fi+gi)/(fi+pz);
|
||||
if ((y=gi-(t2-gi*u26.d))==gi-(t2+gi*u26.d)) return (-sy*y);
|
||||
t3 = (t2<ZERO) ? -t2 : t2;
|
||||
if ((y=gi-(t2-(t4=gi*ua26.d+t3*ub26.d)))==gi-(t2+t4)) return (-sy*y); }
|
||||
else {
|
||||
/* tan */
|
||||
t2 = pz*(gi+fi)/(gi-pz);
|
||||
if ((y=fi+(t2-fi*u25.d))==fi+(t2+fi*u25.d)) return (sy*y);
|
||||
t3 = (t2<ZERO) ? -t2 : t2;
|
||||
if ((y=fi+(t2-(t4=fi*ua25.d+t3*ub25.d)))==fi+(t2+t4)) return (sy*y); }
|
||||
|
||||
/* Second stage */
|
||||
ffi = xfg[i][3].d;
|
||||
EADD(z0,yya,z,zz)
|
||||
MUL2(z,zz,z,zz,z2,zz2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
c1 = z2*(a7.d+z2*(a9.d+z2*a11.d));
|
||||
ADD2(a5.d,aa5.d,c1,zero.d,c2,cc2,t1,t2)
|
||||
MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(a3.d,aa3.d,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(z2,zz2,c2,cc2,c1,cc1,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
MUL2(z ,zz ,c1,cc1,c2,cc2,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
ADD2(z ,zz ,c2,cc2,c1,cc1,t1,t2)
|
||||
|
||||
ADD2(fi ,ffi,c1,cc1,c2,cc2,t1,t2)
|
||||
MUL2(fi ,ffi,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8)
|
||||
SUB2(one.d,zero.d,c3,cc3,c1,cc1,t1,t2)
|
||||
|
||||
if (n) {
|
||||
/* -cot */
|
||||
DIV2(c1,cc1,c2,cc2,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c3+(cc3-u28.d*c3))==c3+(cc3+u28.d*c3)) return (-sy*y); }
|
||||
else {
|
||||
/* tan */
|
||||
DIV2(c2,cc2,c1,cc1,c3,cc3,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)
|
||||
if ((y=c3+(cc3-u27.d*c3))==c3+(cc3+u27.d*c3)) return (sy*y); }
|
||||
return tanMp(x);
|
||||
}
|
||||
|
||||
|
||||
/* multiple precision stage */
|
||||
/* Convert x to multi precision number,compute tan(x) by mptan() routine */
|
||||
/* and converts result back to double */
|
||||
static double tanMp(double x)
|
||||
{
|
||||
int p;
|
||||
double y;
|
||||
mp_no mpy;
|
||||
p=32;
|
||||
__mptan(x, &mpy, p);
|
||||
__mp_dbl(&mpy,&y,p);
|
||||
return y;
|
||||
}
|
||||
|
||||
#ifdef NO_LONG_DOUBLE
|
||||
weak_alias (tan, tanl)
|
||||
#endif
|
912
libgcc-math/dbl-64/sincos.tbl
Normal file
912
libgcc-math/dbl-64/sincos.tbl
Normal file
|
@ -0,0 +1,912 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/****************************************************************/
|
||||
/* TABLES FOR THE usin() and ucos() FUNCTION */
|
||||
/****************************************************************/
|
||||
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const union {int4 i[880]; double x[40];}sincos = { .i = {
|
||||
/**/ 0x00000000, 0x00000000,
|
||||
/**/ 0x00000000, 0x00000000,
|
||||
/**/ 0x3FF00000, 0x00000000,
|
||||
/**/ 0x00000000, 0x00000000,
|
||||
/**/ 0x3F7FFFEA, 0xAAAEEEEF,
|
||||
/**/ 0xBC1E45E2, 0xEC67B77C,
|
||||
/**/ 0x3FEFFFC0, 0x00155552,
|
||||
/**/ 0x3C8F4A01, 0xA0196DAE,
|
||||
/**/ 0x3F8FFFAA, 0xAAEEEED5,
|
||||
/**/ 0xBC02AB63, 0x9A9F0777,
|
||||
/**/ 0x3FEFFF00, 0x0155549F,
|
||||
/**/ 0x3C828A28, 0xA03A5EF3,
|
||||
/**/ 0x3F97FF70, 0x01033255,
|
||||
/**/ 0x3BFEFE2B, 0x51527336,
|
||||
/**/ 0x3FEFFDC0, 0x06BFF7E6,
|
||||
/**/ 0x3C8AE6DA, 0xE86977BD,
|
||||
/**/ 0x3F9FFEAA, 0xAEEEE86F,
|
||||
/**/ 0xBC3CD406, 0xFB224AE2,
|
||||
/**/ 0x3FEFFC00, 0x155527D3,
|
||||
/**/ 0xBC83B544, 0x92D89B5B,
|
||||
/**/ 0x3FA3FEB2, 0xB12D45D5,
|
||||
/**/ 0x3C34EC54, 0x203D1C11,
|
||||
/**/ 0x3FEFF9C0, 0x3414A7BA,
|
||||
/**/ 0x3C6991F4, 0xBE6C59BF,
|
||||
/**/ 0x3FA7FDC0, 0x1032FBA9,
|
||||
/**/ 0xBC4599BD, 0xF46E997A,
|
||||
/**/ 0x3FEFF700, 0x6BFDF99F,
|
||||
/**/ 0xBC78B3B5, 0x60648D5F,
|
||||
/**/ 0x3FABFC6D, 0x78586DAC,
|
||||
/**/ 0x3C18E4FD, 0x03DBF236,
|
||||
/**/ 0x3FEFF3C0, 0xC8103A31,
|
||||
/**/ 0x3C74856D, 0xBDDC0E66,
|
||||
/**/ 0x3FAFFAAA, 0xEEED4EDB,
|
||||
/**/ 0xBC42D16D, 0x32684B69,
|
||||
/**/ 0x3FEFF001, 0x5549F4D3,
|
||||
/**/ 0x3C832838, 0x7B99426F,
|
||||
/**/ 0x3FB1FC34, 0x3D808BEF,
|
||||
/**/ 0xBC5F3D32, 0xE6F3BE4F,
|
||||
/**/ 0x3FEFEBC2, 0x22A8EF9F,
|
||||
/**/ 0x3C579349, 0x34F54C77,
|
||||
/**/ 0x3FB3FACB, 0x12D1755B,
|
||||
/**/ 0xBC592191, 0x5299468C,
|
||||
/**/ 0x3FEFE703, 0x4129EF6F,
|
||||
/**/ 0xBC6CBF43, 0x37C96F97,
|
||||
/**/ 0x3FB5F911, 0xFD10B737,
|
||||
/**/ 0xBC50184F, 0x02BE9102,
|
||||
/**/ 0x3FEFE1C4, 0xC3C873EB,
|
||||
/**/ 0xBC35A9C9, 0x057C4A02,
|
||||
/**/ 0x3FB7F701, 0x032550E4,
|
||||
/**/ 0x3C3AFC2D, 0x1800501A,
|
||||
/**/ 0x3FEFDC06, 0xBF7E6B9B,
|
||||
/**/ 0x3C831902, 0xB535F8DB,
|
||||
/**/ 0x3FB9F490, 0x2D55D1F9,
|
||||
/**/ 0x3C52696D, 0x7EAC1DC1,
|
||||
/**/ 0x3FEFD5C9, 0x4B43E000,
|
||||
/**/ 0xBC62E768, 0xCB4F92F9,
|
||||
/**/ 0x3FBBF1B7, 0x8568391D,
|
||||
/**/ 0x3C5E9184, 0x1DEA4CC8,
|
||||
/**/ 0x3FEFCF0C, 0x800E99B1,
|
||||
/**/ 0x3C6EA3D7, 0x86D186AC,
|
||||
/**/ 0x3FBDEE6F, 0x16C1CCE6,
|
||||
/**/ 0xBC450F8E, 0x2FB71673,
|
||||
/**/ 0x3FEFC7D0, 0x78D1BC88,
|
||||
/**/ 0x3C8075D2, 0x447DB685,
|
||||
/**/ 0x3FBFEAAE, 0xEE86EE36,
|
||||
/**/ 0xBC4AFCB2, 0xBCC6F03B,
|
||||
/**/ 0x3FEFC015, 0x527D5BD3,
|
||||
/**/ 0x3C8B68F3, 0x5094EFB8,
|
||||
/**/ 0x3FC0F337, 0x8DDD71D1,
|
||||
/**/ 0x3C6D8468, 0x724F0F9E,
|
||||
/**/ 0x3FEFB7DB, 0x2BFE0695,
|
||||
/**/ 0x3C821DAD, 0xF4F65AB1,
|
||||
/**/ 0x3FC1F0D3, 0xD7AFCEAF,
|
||||
/**/ 0xBC66EF95, 0x099769A5,
|
||||
/**/ 0x3FEFAF22, 0x263C4BD3,
|
||||
/**/ 0xBC552ACE, 0x133A2769,
|
||||
/**/ 0x3FC2EE28, 0x5E4AB88F,
|
||||
/**/ 0xBC6E4D0F, 0x05DEE058,
|
||||
/**/ 0x3FEFA5EA, 0x641C36F2,
|
||||
/**/ 0x3C404DA6, 0xED17CC7C,
|
||||
/**/ 0x3FC3EB31, 0x2C5D66CB,
|
||||
/**/ 0x3C647D66, 0x6B66CB91,
|
||||
/**/ 0x3FEF9C34, 0x0A7CC428,
|
||||
/**/ 0x3C8C5B6B, 0x063B7462,
|
||||
/**/ 0x3FC4E7EA, 0x4DC5F27B,
|
||||
/**/ 0x3C5949DB, 0x2AC072FC,
|
||||
/**/ 0x3FEF91FF, 0x40374D01,
|
||||
/**/ 0xBC67D03F, 0x4D3A9E4C,
|
||||
/**/ 0x3FC5E44F, 0xCFA126F3,
|
||||
/**/ 0xBC66F443, 0x063F89B6,
|
||||
/**/ 0x3FEF874C, 0x2E1EECF6,
|
||||
/**/ 0xBC8C6514, 0xE1332B16,
|
||||
/**/ 0x3FC6E05D, 0xC05A4D4C,
|
||||
/**/ 0xBBD32C5C, 0x8B81C940,
|
||||
/**/ 0x3FEF7C1A, 0xFEFFDE24,
|
||||
/**/ 0xBC78F55B, 0xC47540B1,
|
||||
/**/ 0x3FC7DC10, 0x2FBAF2B5,
|
||||
/**/ 0x3C45AB50, 0xE23C97C3,
|
||||
/**/ 0x3FEF706B, 0xDF9ECE1C,
|
||||
/**/ 0xBC8698C8, 0x0C36DCB4,
|
||||
/**/ 0x3FC8D763, 0x2EFAA944,
|
||||
/**/ 0xBC620FA2, 0x62CBB953,
|
||||
/**/ 0x3FEF643E, 0xFEB82ACD,
|
||||
/**/ 0x3C76B00A, 0xC1FE28AC,
|
||||
/**/ 0x3FC9D252, 0xD0CEC312,
|
||||
/**/ 0x3C59C43D, 0x80B1137D,
|
||||
/**/ 0x3FEF5794, 0x8CFF6797,
|
||||
/**/ 0x3C6E3A0D, 0x3E03B1D5,
|
||||
/**/ 0x3FCACCDB, 0x297A0765,
|
||||
/**/ 0xBC59883B, 0x57D6CDEB,
|
||||
/**/ 0x3FEF4A6C, 0xBD1E3A79,
|
||||
/**/ 0x3C813DF0, 0xEDAEBB57,
|
||||
/**/ 0x3FCBC6F8, 0x4EDC6199,
|
||||
/**/ 0x3C69C1A5, 0x6A7B0CAB,
|
||||
/**/ 0x3FEF3CC7, 0xC3B3D16E,
|
||||
/**/ 0xBC621A3A, 0xD28A3494,
|
||||
/**/ 0x3FCCC0A6, 0x588289A3,
|
||||
/**/ 0xBC6868D0, 0x9BC87C6B,
|
||||
/**/ 0x3FEF2EA5, 0xD753FFED,
|
||||
/**/ 0x3C8CC421, 0x5F56D583,
|
||||
/**/ 0x3FCDB9E1, 0x5FB5A5D0,
|
||||
/**/ 0xBC632E20, 0xD6CC6FC2,
|
||||
/**/ 0x3FEF2007, 0x3086649F,
|
||||
/**/ 0x3C7B9404, 0x16C1984B,
|
||||
/**/ 0x3FCEB2A5, 0x7F8AE5A3,
|
||||
/**/ 0xBC60BE06, 0xAF572CEB,
|
||||
/**/ 0x3FEF10EC, 0x09C5873B,
|
||||
/**/ 0x3C8D9072, 0x762C1283,
|
||||
/**/ 0x3FCFAAEE, 0xD4F31577,
|
||||
/**/ 0xBC615D88, 0x508E32B8,
|
||||
/**/ 0x3FEF0154, 0x9F7DEEA1,
|
||||
/**/ 0x3C8D3C1E, 0x99E5CAFD,
|
||||
/**/ 0x3FD0515C, 0xBF65155C,
|
||||
/**/ 0xBC79B8C2, 0x9DFD8EC8,
|
||||
/**/ 0x3FEEF141, 0x300D2F26,
|
||||
/**/ 0xBC82AA1B, 0x08DED372,
|
||||
/**/ 0x3FD0CD00, 0xCEF36436,
|
||||
/**/ 0xBC79FB0A, 0x0C93E2B5,
|
||||
/**/ 0x3FEEE0B1, 0xFBC0F11C,
|
||||
/**/ 0xBC4BFD23, 0x80BBC3B1,
|
||||
/**/ 0x3FD14861, 0xAA94DDEB,
|
||||
/**/ 0xBC6BE881, 0xB5B615A4,
|
||||
/**/ 0x3FEECFA7, 0x44D5EFA1,
|
||||
/**/ 0xBC556D0A, 0x4AF541D0,
|
||||
/**/ 0x3FD1C37D, 0x64C6B876,
|
||||
/**/ 0x3C746076, 0xFE0DCFF5,
|
||||
/**/ 0x3FEEBE21, 0x4F76EFA8,
|
||||
/**/ 0xBC802F9F, 0x12BA543E,
|
||||
/**/ 0x3FD23E52, 0x111AAF36,
|
||||
/**/ 0xBC74F080, 0x334EFF18,
|
||||
/**/ 0x3FEEAC20, 0x61BBAF4F,
|
||||
/**/ 0x3C62C1D5, 0x3E94658D,
|
||||
/**/ 0x3FD2B8DD, 0xC43EB49F,
|
||||
/**/ 0x3C615538, 0x99F2D807,
|
||||
/**/ 0x3FEE99A4, 0xC3A7CD83,
|
||||
/**/ 0xBC82264B, 0x1BC53CE8,
|
||||
/**/ 0x3FD3331E, 0x94049F87,
|
||||
/**/ 0x3C7E0CB6, 0xB40C302C,
|
||||
/**/ 0x3FEE86AE, 0xBF29A9ED,
|
||||
/**/ 0x3C89397A, 0xFDBB58A7,
|
||||
/**/ 0x3FD3AD12, 0x9769D3D8,
|
||||
/**/ 0x3C003D55, 0x04878398,
|
||||
/**/ 0x3FEE733E, 0xA0193D40,
|
||||
/**/ 0xBC86428B, 0x3546CE13,
|
||||
/**/ 0x3FD426B7, 0xE69EE697,
|
||||
/**/ 0xBC7F09C7, 0x5705C59F,
|
||||
/**/ 0x3FEE5F54, 0xB436E9D0,
|
||||
/**/ 0x3C87EB0F, 0xD02FC8BC,
|
||||
/**/ 0x3FD4A00C, 0x9B0F3D20,
|
||||
/**/ 0x3C7823BA, 0x6BB08EAD,
|
||||
/**/ 0x3FEE4AF1, 0x4B2A449C,
|
||||
/**/ 0xBC868CA0, 0x2E8A6833,
|
||||
/**/ 0x3FD5190E, 0xCF68A77A,
|
||||
/**/ 0x3C7B3571, 0x55EEF0F3,
|
||||
/**/ 0x3FEE3614, 0xB680D6A5,
|
||||
/**/ 0xBC727793, 0xAA015237,
|
||||
/**/ 0x3FD591BC, 0x9FA2F597,
|
||||
/**/ 0x3C67C74B, 0xAC3FE0CB,
|
||||
/**/ 0x3FEE20BF, 0x49ACD6C1,
|
||||
/**/ 0xBC5660AE, 0xC7EF636C,
|
||||
/**/ 0x3FD60A14, 0x29078775,
|
||||
/**/ 0x3C5B1FD8, 0x0BA89133,
|
||||
/**/ 0x3FEE0AF1, 0x5A03DBCE,
|
||||
/**/ 0x3C5FE8E7, 0x02771AE6,
|
||||
/**/ 0x3FD68213, 0x8A38D7F7,
|
||||
/**/ 0xBC7D8892, 0x02444AAD,
|
||||
/**/ 0x3FEDF4AB, 0x3EBD875E,
|
||||
/**/ 0xBC8E2D8A, 0x7E6736C4,
|
||||
/**/ 0x3FD6F9B8, 0xE33A0255,
|
||||
/**/ 0x3C742BC1, 0x4EE9DA0D,
|
||||
/**/ 0x3FEDDDED, 0x50F228D6,
|
||||
/**/ 0xBC6E80C8, 0xD42BA2BF,
|
||||
/**/ 0x3FD77102, 0x55764214,
|
||||
/**/ 0xBC66EAD7, 0x314BB6CE,
|
||||
/**/ 0x3FEDC6B7, 0xEB995912,
|
||||
/**/ 0x3C54B364, 0x776DCD35,
|
||||
/**/ 0x3FD7E7EE, 0x03C86D4E,
|
||||
/**/ 0xBC7B63BC, 0xDABF5AF2,
|
||||
/**/ 0x3FEDAF0B, 0x6B888E83,
|
||||
/**/ 0x3C8A249E, 0x2B5E5CEA,
|
||||
/**/ 0x3FD85E7A, 0x12826949,
|
||||
/**/ 0x3C78A40E, 0x9B5FACE0,
|
||||
/**/ 0x3FED96E8, 0x2F71A9DC,
|
||||
/**/ 0x3C8FF61B, 0xD5D2039D,
|
||||
/**/ 0x3FD8D4A4, 0xA774992F,
|
||||
/**/ 0x3C744A02, 0xEA766326,
|
||||
/**/ 0x3FED7E4E, 0x97E17B4A,
|
||||
/**/ 0xBC63B770, 0x352BED94,
|
||||
/**/ 0x3FD94A6B, 0xE9F546C5,
|
||||
/**/ 0xBC769CE1, 0x3E683F58,
|
||||
/**/ 0x3FED653F, 0x073E4040,
|
||||
/**/ 0xBC876236, 0x434BEC37,
|
||||
/**/ 0x3FD9BFCE, 0x02E80510,
|
||||
/**/ 0x3C709E39, 0xA320B0A4,
|
||||
/**/ 0x3FED4BB9, 0xE1C619E0,
|
||||
/**/ 0x3C8F34BB, 0x77858F61,
|
||||
/**/ 0x3FDA34C9, 0x1CC50CCA,
|
||||
/**/ 0xBC5A310E, 0x3B50CECD,
|
||||
/**/ 0x3FED31BF, 0x8D8D7C06,
|
||||
/**/ 0x3C7E60DD, 0x3089CBDD,
|
||||
/**/ 0x3FDAA95B, 0x63A09277,
|
||||
/**/ 0xBC66293E, 0xB13C0381,
|
||||
/**/ 0x3FED1750, 0x727D94F0,
|
||||
/**/ 0x3C80D52B, 0x1EC1A48E,
|
||||
/**/ 0x3FDB1D83, 0x05321617,
|
||||
/**/ 0xBC7AE242, 0xCB99F519,
|
||||
/**/ 0x3FECFC6C, 0xFA52AD9F,
|
||||
/**/ 0x3C88B5B5, 0x508F2A0D,
|
||||
/**/ 0x3FDB913E, 0x30DBAC43,
|
||||
/**/ 0xBC7E38AD, 0x2F6C3FF1,
|
||||
/**/ 0x3FECE115, 0x909A82E5,
|
||||
/**/ 0x3C81F139, 0xBB31109A,
|
||||
/**/ 0x3FDC048B, 0x17B140A3,
|
||||
/**/ 0x3C619FE6, 0x757E9FA7,
|
||||
/**/ 0x3FECC54A, 0xA2B2972E,
|
||||
/**/ 0x3C64EE16, 0x2BA83A98,
|
||||
/**/ 0x3FDC7767, 0xEC7FD19E,
|
||||
/**/ 0xBC5EB14D, 0x1A3D5826,
|
||||
/**/ 0x3FECA90C, 0x9FC67D0B,
|
||||
/**/ 0xBC646A81, 0x485E3462,
|
||||
/**/ 0x3FDCE9D2, 0xE3D4A51F,
|
||||
/**/ 0xBC62FC8A, 0x12DAE298,
|
||||
/**/ 0x3FEC8C5B, 0xF8CE1A84,
|
||||
/**/ 0x3C7AB3D1, 0xA1590123,
|
||||
/**/ 0x3FDD5BCA, 0x34047661,
|
||||
/**/ 0x3C728A44, 0xA75FC29C,
|
||||
/**/ 0x3FEC6F39, 0x208BE53B,
|
||||
/**/ 0xBC8741DB, 0xFBAADB42,
|
||||
/**/ 0x3FDDCD4C, 0x15329C9A,
|
||||
/**/ 0x3C70D4C6, 0xE171FD9A,
|
||||
/**/ 0x3FEC51A4, 0x8B8B175E,
|
||||
/**/ 0xBC61BBB4, 0x3B9AA880,
|
||||
/**/ 0x3FDE3E56, 0xC1582A69,
|
||||
/**/ 0xBC50A482, 0x1099F88F,
|
||||
/**/ 0x3FEC339E, 0xB01DDD81,
|
||||
/**/ 0xBC8CAAF5, 0xEE82C5C0,
|
||||
/**/ 0x3FDEAEE8, 0x744B05F0,
|
||||
/**/ 0xBC5789B4, 0x3C9B027D,
|
||||
/**/ 0x3FEC1528, 0x065B7D50,
|
||||
/**/ 0xBC889211, 0x1312E828,
|
||||
/**/ 0x3FDF1EFF, 0x6BC4F97B,
|
||||
/**/ 0x3C717212, 0xF8A7525C,
|
||||
/**/ 0x3FEBF641, 0x081E7536,
|
||||
/**/ 0x3C8B7BD7, 0x1628A9A1,
|
||||
/**/ 0x3FDF8E99, 0xE76ABC97,
|
||||
/**/ 0x3C59D950, 0xAF2D00A3,
|
||||
/**/ 0x3FEBD6EA, 0x310294F5,
|
||||
/**/ 0x3C731BBC, 0xC88C109D,
|
||||
/**/ 0x3FDFFDB6, 0x28D2F57A,
|
||||
/**/ 0x3C6F4A99, 0x2E905B6A,
|
||||
/**/ 0x3FEBB723, 0xFE630F32,
|
||||
/**/ 0x3C772BD2, 0x452D0A39,
|
||||
/**/ 0x3FE03629, 0x39C69955,
|
||||
/**/ 0xBC82D8CD, 0x78397B01,
|
||||
/**/ 0x3FEB96EE, 0xEF58840E,
|
||||
/**/ 0x3C545A3C, 0xC78FADE0,
|
||||
/**/ 0x3FE06D36, 0x86946E5B,
|
||||
/**/ 0x3C83F5AE, 0x4538FF1B,
|
||||
/**/ 0x3FEB764B, 0x84B704C2,
|
||||
/**/ 0xBC8F5848, 0xC21B389B,
|
||||
/**/ 0x3FE0A402, 0x1E9E1001,
|
||||
/**/ 0xBC86F643, 0xA13914F6,
|
||||
/**/ 0x3FEB553A, 0x410C104E,
|
||||
/**/ 0x3C58FF79, 0x47027A16,
|
||||
/**/ 0x3FE0DA8B, 0x26B5672E,
|
||||
/**/ 0xBC8A58DE, 0xF0BEE909,
|
||||
/**/ 0x3FEB33BB, 0xA89C8948,
|
||||
/**/ 0x3C8EA6A5, 0x1D1F6CA9,
|
||||
/**/ 0x3FE110D0, 0xC4B69C3B,
|
||||
/**/ 0x3C8D9189, 0x98809981,
|
||||
/**/ 0x3FEB11D0, 0x4162A4C6,
|
||||
/**/ 0x3C71DD56, 0x1EFBC0C2,
|
||||
/**/ 0x3FE146D2, 0x1F8B7F82,
|
||||
/**/ 0x3C7BF953, 0x5E2739A8,
|
||||
/**/ 0x3FEAEF78, 0x930BD275,
|
||||
/**/ 0xBC7F8362, 0x79746F94,
|
||||
/**/ 0x3FE17C8E, 0x5F2EEDB0,
|
||||
/**/ 0x3C635E57, 0x102E2488,
|
||||
/**/ 0x3FEACCB5, 0x26F69DE5,
|
||||
/**/ 0x3C88FB6A, 0x8DD6B6CC,
|
||||
/**/ 0x3FE1B204, 0xACB02FDD,
|
||||
/**/ 0xBC5F190C, 0x70CBB5FF,
|
||||
/**/ 0x3FEAA986, 0x88308913,
|
||||
/**/ 0xBC0B83D6, 0x07CD5070,
|
||||
/**/ 0x3FE1E734, 0x3236574C,
|
||||
/**/ 0x3C722A3F, 0xA4F41D5A,
|
||||
/**/ 0x3FEA85ED, 0x4373E02D,
|
||||
/**/ 0x3C69BE06, 0x385EC792,
|
||||
/**/ 0x3FE21C1C, 0x1B0394CF,
|
||||
/**/ 0x3C5E5B32, 0x4B23AA31,
|
||||
/**/ 0x3FEA61E9, 0xE72586AF,
|
||||
/**/ 0x3C858330, 0xE2FD453F,
|
||||
/**/ 0x3FE250BB, 0x93788BBB,
|
||||
/**/ 0x3C7EA3D0, 0x2457BCCE,
|
||||
/**/ 0x3FEA3D7D, 0x0352BDCF,
|
||||
/**/ 0xBC868DBA, 0xECA19669,
|
||||
/**/ 0x3FE28511, 0xC917A067,
|
||||
/**/ 0xBC801DF1, 0xD9A16B70,
|
||||
/**/ 0x3FEA18A7, 0x29AEE445,
|
||||
/**/ 0x3C395E25, 0x736C0358,
|
||||
/**/ 0x3FE2B91D, 0xEA88421E,
|
||||
/**/ 0xBC8FA371, 0xDB216AB0,
|
||||
/**/ 0x3FE9F368, 0xED912F85,
|
||||
/**/ 0xBC81D200, 0xC5791606,
|
||||
/**/ 0x3FE2ECDF, 0x279A3082,
|
||||
/**/ 0x3C8D3557, 0xE0E7E37E,
|
||||
/**/ 0x3FE9CDC2, 0xE3F25E5C,
|
||||
/**/ 0x3C83F991, 0x12993F62,
|
||||
/**/ 0x3FE32054, 0xB148BC4F,
|
||||
/**/ 0x3C8F6B42, 0x095A135B,
|
||||
/**/ 0x3FE9A7B5, 0xA36A6514,
|
||||
/**/ 0x3C8722CF, 0xCC9FA7A9,
|
||||
/**/ 0x3FE3537D, 0xB9BE0367,
|
||||
/**/ 0x3C6B327E, 0x7AF040F0,
|
||||
/**/ 0x3FE98141, 0xC42E1310,
|
||||
/**/ 0x3C8D1FF8, 0x0488F08D,
|
||||
/**/ 0x3FE38659, 0x7456282B,
|
||||
/**/ 0xBC710FAD, 0xA93B07A8,
|
||||
/**/ 0x3FE95A67, 0xE00CB1FD,
|
||||
/**/ 0xBC80BEFD, 0xA21F862D,
|
||||
/**/ 0x3FE3B8E7, 0x15A2840A,
|
||||
/**/ 0xBC797653, 0xA7D2F07B,
|
||||
/**/ 0x3FE93328, 0x926D9E92,
|
||||
/**/ 0xBC8BB770, 0x03600CDA,
|
||||
/**/ 0x3FE3EB25, 0xD36CD53A,
|
||||
/**/ 0xBC5BE570, 0xE1570FC0,
|
||||
/**/ 0x3FE90B84, 0x784DDAF7,
|
||||
/**/ 0xBC70FEB1, 0x0AB93B87,
|
||||
/**/ 0x3FE41D14, 0xE4BA6790,
|
||||
/**/ 0x3C84608F, 0xD287ECF5,
|
||||
/**/ 0x3FE8E37C, 0x303D9AD1,
|
||||
/**/ 0xBC6463A4, 0xB53D4BF8,
|
||||
/**/ 0x3FE44EB3, 0x81CF386B,
|
||||
/**/ 0xBC83ED6C, 0x1E6A5505,
|
||||
/**/ 0x3FE8BB10, 0x5A5DC900,
|
||||
/**/ 0x3C8863E0, 0x3E9474C1,
|
||||
/**/ 0x3FE48000, 0xE431159F,
|
||||
/**/ 0xBC8B194A, 0x7463ED10,
|
||||
/**/ 0x3FE89241, 0x985D871F,
|
||||
/**/ 0x3C8C48D9, 0xC413ED84,
|
||||
/**/ 0x3FE4B0FC, 0x46AAB761,
|
||||
/**/ 0x3C20DA05, 0x738CC59A,
|
||||
/**/ 0x3FE86910, 0x8D77A6C6,
|
||||
/**/ 0x3C7338FF, 0xE2BFE9DD,
|
||||
/**/ 0x3FE4E1A4, 0xE54ED51B,
|
||||
/**/ 0xBC8A492F, 0x89B7C76A,
|
||||
/**/ 0x3FE83F7D, 0xDE701CA0,
|
||||
/**/ 0xBC4152CF, 0x609BC6E8,
|
||||
/**/ 0x3FE511F9, 0xFD7B351C,
|
||||
/**/ 0xBC85C0E8, 0x61C48831,
|
||||
/**/ 0x3FE8158A, 0x31916D5D,
|
||||
/**/ 0xBC6DE8B9, 0x0B8228DE,
|
||||
/**/ 0x3FE541FA, 0xCDDBB724,
|
||||
/**/ 0x3C7232C2, 0x8520D391,
|
||||
/**/ 0x3FE7EB36, 0x2EAA1488,
|
||||
/**/ 0x3C5A1D65, 0xA4A5959F,
|
||||
/**/ 0x3FE571A6, 0x966D59B3,
|
||||
/**/ 0x3C5C843B, 0x4D0FB198,
|
||||
/**/ 0x3FE7C082, 0x7F09E54F,
|
||||
/**/ 0xBC6C73D6, 0xD72AEE68,
|
||||
/**/ 0x3FE5A0FC, 0x98813A12,
|
||||
/**/ 0xBC8D82E2, 0xB7D4227B,
|
||||
/**/ 0x3FE7956F, 0xCD7F6543,
|
||||
/**/ 0xBC8AB276, 0xE9D45AE4,
|
||||
/**/ 0x3FE5CFFC, 0x16BF8F0D,
|
||||
/**/ 0x3C896CB3, 0x70EB578A,
|
||||
/**/ 0x3FE769FE, 0xC655211F,
|
||||
/**/ 0xBC6827D5, 0xCF8C68C5,
|
||||
/**/ 0x3FE5FEA4, 0x552A9E57,
|
||||
/**/ 0x3C80B6CE, 0xF7EE20B7,
|
||||
/**/ 0x3FE73E30, 0x174EFBA1,
|
||||
/**/ 0xBC65D3AE, 0x3D94AD5F,
|
||||
/**/ 0x3FE62CF4, 0x9921AC79,
|
||||
/**/ 0xBC8EDD98, 0x55B6241A,
|
||||
/**/ 0x3FE71204, 0x6FA77678,
|
||||
/**/ 0x3C8425B0, 0xA5029C81,
|
||||
/**/ 0x3FE65AEC, 0x2963E755,
|
||||
/**/ 0x3C8126F9, 0x6B71053C,
|
||||
/**/ 0x3FE6E57C, 0x800CF55E,
|
||||
/**/ 0x3C860286, 0xDEDBD0A6,
|
||||
/**/ 0x3FE6888A, 0x4E134B2F,
|
||||
/**/ 0xBC86B7D3, 0x7644D5E6,
|
||||
/**/ 0x3FE6B898, 0xFA9EFB5D,
|
||||
/**/ 0x3C715AC7, 0x86CCF4B2,
|
||||
/**/ 0x3FE6B5CE, 0x50B7821A,
|
||||
/**/ 0xBC65D515, 0x8F702E0F,
|
||||
/**/ 0x3FE68B5A, 0x92EB6253,
|
||||
/**/ 0xBC89A91A, 0xD985F89C,
|
||||
/**/ 0x3FE6E2B7, 0x7C40BDE1,
|
||||
/**/ 0xBC70E729, 0x857FAD53,
|
||||
/**/ 0x3FE65DC1, 0xFDEB8CBA,
|
||||
/**/ 0xBC597C1B, 0x47337C77,
|
||||
/**/ 0x3FE70F45, 0x1D0A8C40,
|
||||
/**/ 0x3C697EDE, 0x3885770D,
|
||||
/**/ 0x3FE62FCF, 0xF20191C7,
|
||||
/**/ 0x3C6D9143, 0x895756EF,
|
||||
/**/ 0x3FE73B76, 0x80DEA578,
|
||||
/**/ 0xBC722483, 0x06DC12A2,
|
||||
/**/ 0x3FE60185, 0x26F563DF,
|
||||
/**/ 0x3C846CA5, 0xE0E432D0,
|
||||
/**/ 0x3FE7674A, 0xF6F7B524,
|
||||
/**/ 0x3C7E9D3F, 0x94AC84A8,
|
||||
/**/ 0x3FE5D2E2, 0x55F1F17A,
|
||||
/**/ 0x3C803141, 0x04C8892B,
|
||||
/**/ 0x3FE792C1, 0xD0041D52,
|
||||
/**/ 0xBC8ABF05, 0xEEB354EB,
|
||||
/**/ 0x3FE5A3E8, 0x39824077,
|
||||
/**/ 0x3C8428AA, 0x2759BE62,
|
||||
/**/ 0x3FE7BDDA, 0x5E28B3C2,
|
||||
/**/ 0x3C4AD119, 0x7CCD0393,
|
||||
/**/ 0x3FE57497, 0x8D8E83F2,
|
||||
/**/ 0x3C8F4714, 0xAF282D23,
|
||||
/**/ 0x3FE7E893, 0xF5037959,
|
||||
/**/ 0x3C80EEFB, 0xAA650C4C,
|
||||
/**/ 0x3FE544F1, 0x0F592CA5,
|
||||
/**/ 0xBC8E7AE8, 0xE6C7A62F,
|
||||
/**/ 0x3FE812ED, 0xE9AE4BA4,
|
||||
/**/ 0xBC87830A, 0xDF402DDA,
|
||||
/**/ 0x3FE514F5, 0x7D7BF3DA,
|
||||
/**/ 0x3C747A10, 0x8073C259 } };
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const union {int4 i[880]; double x[440];} sincos = { .i = {
|
||||
/**/ 0x00000000, 0x00000000,
|
||||
/**/ 0x00000000, 0x00000000,
|
||||
/**/ 0x00000000, 0x3FF00000,
|
||||
/**/ 0x00000000, 0x00000000,
|
||||
/**/ 0xAAAEEEEF, 0x3F7FFFEA,
|
||||
/**/ 0xEC67B77C, 0xBC1E45E2,
|
||||
/**/ 0x00155552, 0x3FEFFFC0,
|
||||
/**/ 0xA0196DAE, 0x3C8F4A01,
|
||||
/**/ 0xAAEEEED5, 0x3F8FFFAA,
|
||||
/**/ 0x9A9F0777, 0xBC02AB63,
|
||||
/**/ 0x0155549F, 0x3FEFFF00,
|
||||
/**/ 0xA03A5EF3, 0x3C828A28,
|
||||
/**/ 0x01033255, 0x3F97FF70,
|
||||
/**/ 0x51527336, 0x3BFEFE2B,
|
||||
/**/ 0x06BFF7E6, 0x3FEFFDC0,
|
||||
/**/ 0xE86977BD, 0x3C8AE6DA,
|
||||
/**/ 0xAEEEE86F, 0x3F9FFEAA,
|
||||
/**/ 0xFB224AE2, 0xBC3CD406,
|
||||
/**/ 0x155527D3, 0x3FEFFC00,
|
||||
/**/ 0x92D89B5B, 0xBC83B544,
|
||||
/**/ 0xB12D45D5, 0x3FA3FEB2,
|
||||
/**/ 0x203D1C11, 0x3C34EC54,
|
||||
/**/ 0x3414A7BA, 0x3FEFF9C0,
|
||||
/**/ 0xBE6C59BF, 0x3C6991F4,
|
||||
/**/ 0x1032FBA9, 0x3FA7FDC0,
|
||||
/**/ 0xF46E997A, 0xBC4599BD,
|
||||
/**/ 0x6BFDF99F, 0x3FEFF700,
|
||||
/**/ 0x60648D5F, 0xBC78B3B5,
|
||||
/**/ 0x78586DAC, 0x3FABFC6D,
|
||||
/**/ 0x03DBF236, 0x3C18E4FD,
|
||||
/**/ 0xC8103A31, 0x3FEFF3C0,
|
||||
/**/ 0xBDDC0E66, 0x3C74856D,
|
||||
/**/ 0xEEED4EDB, 0x3FAFFAAA,
|
||||
/**/ 0x32684B69, 0xBC42D16D,
|
||||
/**/ 0x5549F4D3, 0x3FEFF001,
|
||||
/**/ 0x7B99426F, 0x3C832838,
|
||||
/**/ 0x3D808BEF, 0x3FB1FC34,
|
||||
/**/ 0xE6F3BE4F, 0xBC5F3D32,
|
||||
/**/ 0x22A8EF9F, 0x3FEFEBC2,
|
||||
/**/ 0x34F54C77, 0x3C579349,
|
||||
/**/ 0x12D1755B, 0x3FB3FACB,
|
||||
/**/ 0x5299468C, 0xBC592191,
|
||||
/**/ 0x4129EF6F, 0x3FEFE703,
|
||||
/**/ 0x37C96F97, 0xBC6CBF43,
|
||||
/**/ 0xFD10B737, 0x3FB5F911,
|
||||
/**/ 0x02BE9102, 0xBC50184F,
|
||||
/**/ 0xC3C873EB, 0x3FEFE1C4,
|
||||
/**/ 0x057C4A02, 0xBC35A9C9,
|
||||
/**/ 0x032550E4, 0x3FB7F701,
|
||||
/**/ 0x1800501A, 0x3C3AFC2D,
|
||||
/**/ 0xBF7E6B9B, 0x3FEFDC06,
|
||||
/**/ 0xB535F8DB, 0x3C831902,
|
||||
/**/ 0x2D55D1F9, 0x3FB9F490,
|
||||
/**/ 0x7EAC1DC1, 0x3C52696D,
|
||||
/**/ 0x4B43E000, 0x3FEFD5C9,
|
||||
/**/ 0xCB4F92F9, 0xBC62E768,
|
||||
/**/ 0x8568391D, 0x3FBBF1B7,
|
||||
/**/ 0x1DEA4CC8, 0x3C5E9184,
|
||||
/**/ 0x800E99B1, 0x3FEFCF0C,
|
||||
/**/ 0x86D186AC, 0x3C6EA3D7,
|
||||
/**/ 0x16C1CCE6, 0x3FBDEE6F,
|
||||
/**/ 0x2FB71673, 0xBC450F8E,
|
||||
/**/ 0x78D1BC88, 0x3FEFC7D0,
|
||||
/**/ 0x447DB685, 0x3C8075D2,
|
||||
/**/ 0xEE86EE36, 0x3FBFEAAE,
|
||||
/**/ 0xBCC6F03B, 0xBC4AFCB2,
|
||||
/**/ 0x527D5BD3, 0x3FEFC015,
|
||||
/**/ 0x5094EFB8, 0x3C8B68F3,
|
||||
/**/ 0x8DDD71D1, 0x3FC0F337,
|
||||
/**/ 0x724F0F9E, 0x3C6D8468,
|
||||
/**/ 0x2BFE0695, 0x3FEFB7DB,
|
||||
/**/ 0xF4F65AB1, 0x3C821DAD,
|
||||
/**/ 0xD7AFCEAF, 0x3FC1F0D3,
|
||||
/**/ 0x099769A5, 0xBC66EF95,
|
||||
/**/ 0x263C4BD3, 0x3FEFAF22,
|
||||
/**/ 0x133A2769, 0xBC552ACE,
|
||||
/**/ 0x5E4AB88F, 0x3FC2EE28,
|
||||
/**/ 0x05DEE058, 0xBC6E4D0F,
|
||||
/**/ 0x641C36F2, 0x3FEFA5EA,
|
||||
/**/ 0xED17CC7C, 0x3C404DA6,
|
||||
/**/ 0x2C5D66CB, 0x3FC3EB31,
|
||||
/**/ 0x6B66CB91, 0x3C647D66,
|
||||
/**/ 0x0A7CC428, 0x3FEF9C34,
|
||||
/**/ 0x063B7462, 0x3C8C5B6B,
|
||||
/**/ 0x4DC5F27B, 0x3FC4E7EA,
|
||||
/**/ 0x2AC072FC, 0x3C5949DB,
|
||||
/**/ 0x40374D01, 0x3FEF91FF,
|
||||
/**/ 0x4D3A9E4C, 0xBC67D03F,
|
||||
/**/ 0xCFA126F3, 0x3FC5E44F,
|
||||
/**/ 0x063F89B6, 0xBC66F443,
|
||||
/**/ 0x2E1EECF6, 0x3FEF874C,
|
||||
/**/ 0xE1332B16, 0xBC8C6514,
|
||||
/**/ 0xC05A4D4C, 0x3FC6E05D,
|
||||
/**/ 0x8B81C940, 0xBBD32C5C,
|
||||
/**/ 0xFEFFDE24, 0x3FEF7C1A,
|
||||
/**/ 0xC47540B1, 0xBC78F55B,
|
||||
/**/ 0x2FBAF2B5, 0x3FC7DC10,
|
||||
/**/ 0xE23C97C3, 0x3C45AB50,
|
||||
/**/ 0xDF9ECE1C, 0x3FEF706B,
|
||||
/**/ 0x0C36DCB4, 0xBC8698C8,
|
||||
/**/ 0x2EFAA944, 0x3FC8D763,
|
||||
/**/ 0x62CBB953, 0xBC620FA2,
|
||||
/**/ 0xFEB82ACD, 0x3FEF643E,
|
||||
/**/ 0xC1FE28AC, 0x3C76B00A,
|
||||
/**/ 0xD0CEC312, 0x3FC9D252,
|
||||
/**/ 0x80B1137D, 0x3C59C43D,
|
||||
/**/ 0x8CFF6797, 0x3FEF5794,
|
||||
/**/ 0x3E03B1D5, 0x3C6E3A0D,
|
||||
/**/ 0x297A0765, 0x3FCACCDB,
|
||||
/**/ 0x57D6CDEB, 0xBC59883B,
|
||||
/**/ 0xBD1E3A79, 0x3FEF4A6C,
|
||||
/**/ 0xEDAEBB57, 0x3C813DF0,
|
||||
/**/ 0x4EDC6199, 0x3FCBC6F8,
|
||||
/**/ 0x6A7B0CAB, 0x3C69C1A5,
|
||||
/**/ 0xC3B3D16E, 0x3FEF3CC7,
|
||||
/**/ 0xD28A3494, 0xBC621A3A,
|
||||
/**/ 0x588289A3, 0x3FCCC0A6,
|
||||
/**/ 0x9BC87C6B, 0xBC6868D0,
|
||||
/**/ 0xD753FFED, 0x3FEF2EA5,
|
||||
/**/ 0x5F56D583, 0x3C8CC421,
|
||||
/**/ 0x5FB5A5D0, 0x3FCDB9E1,
|
||||
/**/ 0xD6CC6FC2, 0xBC632E20,
|
||||
/**/ 0x3086649F, 0x3FEF2007,
|
||||
/**/ 0x16C1984B, 0x3C7B9404,
|
||||
/**/ 0x7F8AE5A3, 0x3FCEB2A5,
|
||||
/**/ 0xAF572CEB, 0xBC60BE06,
|
||||
/**/ 0x09C5873B, 0x3FEF10EC,
|
||||
/**/ 0x762C1283, 0x3C8D9072,
|
||||
/**/ 0xD4F31577, 0x3FCFAAEE,
|
||||
/**/ 0x508E32B8, 0xBC615D88,
|
||||
/**/ 0x9F7DEEA1, 0x3FEF0154,
|
||||
/**/ 0x99E5CAFD, 0x3C8D3C1E,
|
||||
/**/ 0xBF65155C, 0x3FD0515C,
|
||||
/**/ 0x9DFD8EC8, 0xBC79B8C2,
|
||||
/**/ 0x300D2F26, 0x3FEEF141,
|
||||
/**/ 0x08DED372, 0xBC82AA1B,
|
||||
/**/ 0xCEF36436, 0x3FD0CD00,
|
||||
/**/ 0x0C93E2B5, 0xBC79FB0A,
|
||||
/**/ 0xFBC0F11C, 0x3FEEE0B1,
|
||||
/**/ 0x80BBC3B1, 0xBC4BFD23,
|
||||
/**/ 0xAA94DDEB, 0x3FD14861,
|
||||
/**/ 0xB5B615A4, 0xBC6BE881,
|
||||
/**/ 0x44D5EFA1, 0x3FEECFA7,
|
||||
/**/ 0x4AF541D0, 0xBC556D0A,
|
||||
/**/ 0x64C6B876, 0x3FD1C37D,
|
||||
/**/ 0xFE0DCFF5, 0x3C746076,
|
||||
/**/ 0x4F76EFA8, 0x3FEEBE21,
|
||||
/**/ 0x12BA543E, 0xBC802F9F,
|
||||
/**/ 0x111AAF36, 0x3FD23E52,
|
||||
/**/ 0x334EFF18, 0xBC74F080,
|
||||
/**/ 0x61BBAF4F, 0x3FEEAC20,
|
||||
/**/ 0x3E94658D, 0x3C62C1D5,
|
||||
/**/ 0xC43EB49F, 0x3FD2B8DD,
|
||||
/**/ 0x99F2D807, 0x3C615538,
|
||||
/**/ 0xC3A7CD83, 0x3FEE99A4,
|
||||
/**/ 0x1BC53CE8, 0xBC82264B,
|
||||
/**/ 0x94049F87, 0x3FD3331E,
|
||||
/**/ 0xB40C302C, 0x3C7E0CB6,
|
||||
/**/ 0xBF29A9ED, 0x3FEE86AE,
|
||||
/**/ 0xFDBB58A7, 0x3C89397A,
|
||||
/**/ 0x9769D3D8, 0x3FD3AD12,
|
||||
/**/ 0x04878398, 0x3C003D55,
|
||||
/**/ 0xA0193D40, 0x3FEE733E,
|
||||
/**/ 0x3546CE13, 0xBC86428B,
|
||||
/**/ 0xE69EE697, 0x3FD426B7,
|
||||
/**/ 0x5705C59F, 0xBC7F09C7,
|
||||
/**/ 0xB436E9D0, 0x3FEE5F54,
|
||||
/**/ 0xD02FC8BC, 0x3C87EB0F,
|
||||
/**/ 0x9B0F3D20, 0x3FD4A00C,
|
||||
/**/ 0x6BB08EAD, 0x3C7823BA,
|
||||
/**/ 0x4B2A449C, 0x3FEE4AF1,
|
||||
/**/ 0x2E8A6833, 0xBC868CA0,
|
||||
/**/ 0xCF68A77A, 0x3FD5190E,
|
||||
/**/ 0x55EEF0F3, 0x3C7B3571,
|
||||
/**/ 0xB680D6A5, 0x3FEE3614,
|
||||
/**/ 0xAA015237, 0xBC727793,
|
||||
/**/ 0x9FA2F597, 0x3FD591BC,
|
||||
/**/ 0xAC3FE0CB, 0x3C67C74B,
|
||||
/**/ 0x49ACD6C1, 0x3FEE20BF,
|
||||
/**/ 0xC7EF636C, 0xBC5660AE,
|
||||
/**/ 0x29078775, 0x3FD60A14,
|
||||
/**/ 0x0BA89133, 0x3C5B1FD8,
|
||||
/**/ 0x5A03DBCE, 0x3FEE0AF1,
|
||||
/**/ 0x02771AE6, 0x3C5FE8E7,
|
||||
/**/ 0x8A38D7F7, 0x3FD68213,
|
||||
/**/ 0x02444AAD, 0xBC7D8892,
|
||||
/**/ 0x3EBD875E, 0x3FEDF4AB,
|
||||
/**/ 0x7E6736C4, 0xBC8E2D8A,
|
||||
/**/ 0xE33A0255, 0x3FD6F9B8,
|
||||
/**/ 0x4EE9DA0D, 0x3C742BC1,
|
||||
/**/ 0x50F228D6, 0x3FEDDDED,
|
||||
/**/ 0xD42BA2BF, 0xBC6E80C8,
|
||||
/**/ 0x55764214, 0x3FD77102,
|
||||
/**/ 0x314BB6CE, 0xBC66EAD7,
|
||||
/**/ 0xEB995912, 0x3FEDC6B7,
|
||||
/**/ 0x776DCD35, 0x3C54B364,
|
||||
/**/ 0x03C86D4E, 0x3FD7E7EE,
|
||||
/**/ 0xDABF5AF2, 0xBC7B63BC,
|
||||
/**/ 0x6B888E83, 0x3FEDAF0B,
|
||||
/**/ 0x2B5E5CEA, 0x3C8A249E,
|
||||
/**/ 0x12826949, 0x3FD85E7A,
|
||||
/**/ 0x9B5FACE0, 0x3C78A40E,
|
||||
/**/ 0x2F71A9DC, 0x3FED96E8,
|
||||
/**/ 0xD5D2039D, 0x3C8FF61B,
|
||||
/**/ 0xA774992F, 0x3FD8D4A4,
|
||||
/**/ 0xEA766326, 0x3C744A02,
|
||||
/**/ 0x97E17B4A, 0x3FED7E4E,
|
||||
/**/ 0x352BED94, 0xBC63B770,
|
||||
/**/ 0xE9F546C5, 0x3FD94A6B,
|
||||
/**/ 0x3E683F58, 0xBC769CE1,
|
||||
/**/ 0x073E4040, 0x3FED653F,
|
||||
/**/ 0x434BEC37, 0xBC876236,
|
||||
/**/ 0x02E80510, 0x3FD9BFCE,
|
||||
/**/ 0xA320B0A4, 0x3C709E39,
|
||||
/**/ 0xE1C619E0, 0x3FED4BB9,
|
||||
/**/ 0x77858F61, 0x3C8F34BB,
|
||||
/**/ 0x1CC50CCA, 0x3FDA34C9,
|
||||
/**/ 0x3B50CECD, 0xBC5A310E,
|
||||
/**/ 0x8D8D7C06, 0x3FED31BF,
|
||||
/**/ 0x3089CBDD, 0x3C7E60DD,
|
||||
/**/ 0x63A09277, 0x3FDAA95B,
|
||||
/**/ 0xB13C0381, 0xBC66293E,
|
||||
/**/ 0x727D94F0, 0x3FED1750,
|
||||
/**/ 0x1EC1A48E, 0x3C80D52B,
|
||||
/**/ 0x05321617, 0x3FDB1D83,
|
||||
/**/ 0xCB99F519, 0xBC7AE242,
|
||||
/**/ 0xFA52AD9F, 0x3FECFC6C,
|
||||
/**/ 0x508F2A0D, 0x3C88B5B5,
|
||||
/**/ 0x30DBAC43, 0x3FDB913E,
|
||||
/**/ 0x2F6C3FF1, 0xBC7E38AD,
|
||||
/**/ 0x909A82E5, 0x3FECE115,
|
||||
/**/ 0xBB31109A, 0x3C81F139,
|
||||
/**/ 0x17B140A3, 0x3FDC048B,
|
||||
/**/ 0x757E9FA7, 0x3C619FE6,
|
||||
/**/ 0xA2B2972E, 0x3FECC54A,
|
||||
/**/ 0x2BA83A98, 0x3C64EE16,
|
||||
/**/ 0xEC7FD19E, 0x3FDC7767,
|
||||
/**/ 0x1A3D5826, 0xBC5EB14D,
|
||||
/**/ 0x9FC67D0B, 0x3FECA90C,
|
||||
/**/ 0x485E3462, 0xBC646A81,
|
||||
/**/ 0xE3D4A51F, 0x3FDCE9D2,
|
||||
/**/ 0x12DAE298, 0xBC62FC8A,
|
||||
/**/ 0xF8CE1A84, 0x3FEC8C5B,
|
||||
/**/ 0xA1590123, 0x3C7AB3D1,
|
||||
/**/ 0x34047661, 0x3FDD5BCA,
|
||||
/**/ 0xA75FC29C, 0x3C728A44,
|
||||
/**/ 0x208BE53B, 0x3FEC6F39,
|
||||
/**/ 0xFBAADB42, 0xBC8741DB,
|
||||
/**/ 0x15329C9A, 0x3FDDCD4C,
|
||||
/**/ 0xE171FD9A, 0x3C70D4C6,
|
||||
/**/ 0x8B8B175E, 0x3FEC51A4,
|
||||
/**/ 0x3B9AA880, 0xBC61BBB4,
|
||||
/**/ 0xC1582A69, 0x3FDE3E56,
|
||||
/**/ 0x1099F88F, 0xBC50A482,
|
||||
/**/ 0xB01DDD81, 0x3FEC339E,
|
||||
/**/ 0xEE82C5C0, 0xBC8CAAF5,
|
||||
/**/ 0x744B05F0, 0x3FDEAEE8,
|
||||
/**/ 0x3C9B027D, 0xBC5789B4,
|
||||
/**/ 0x065B7D50, 0x3FEC1528,
|
||||
/**/ 0x1312E828, 0xBC889211,
|
||||
/**/ 0x6BC4F97B, 0x3FDF1EFF,
|
||||
/**/ 0xF8A7525C, 0x3C717212,
|
||||
/**/ 0x081E7536, 0x3FEBF641,
|
||||
/**/ 0x1628A9A1, 0x3C8B7BD7,
|
||||
/**/ 0xE76ABC97, 0x3FDF8E99,
|
||||
/**/ 0xAF2D00A3, 0x3C59D950,
|
||||
/**/ 0x310294F5, 0x3FEBD6EA,
|
||||
/**/ 0xC88C109D, 0x3C731BBC,
|
||||
/**/ 0x28D2F57A, 0x3FDFFDB6,
|
||||
/**/ 0x2E905B6A, 0x3C6F4A99,
|
||||
/**/ 0xFE630F32, 0x3FEBB723,
|
||||
/**/ 0x452D0A39, 0x3C772BD2,
|
||||
/**/ 0x39C69955, 0x3FE03629,
|
||||
/**/ 0x78397B01, 0xBC82D8CD,
|
||||
/**/ 0xEF58840E, 0x3FEB96EE,
|
||||
/**/ 0xC78FADE0, 0x3C545A3C,
|
||||
/**/ 0x86946E5B, 0x3FE06D36,
|
||||
/**/ 0x4538FF1B, 0x3C83F5AE,
|
||||
/**/ 0x84B704C2, 0x3FEB764B,
|
||||
/**/ 0xC21B389B, 0xBC8F5848,
|
||||
/**/ 0x1E9E1001, 0x3FE0A402,
|
||||
/**/ 0xA13914F6, 0xBC86F643,
|
||||
/**/ 0x410C104E, 0x3FEB553A,
|
||||
/**/ 0x47027A16, 0x3C58FF79,
|
||||
/**/ 0x26B5672E, 0x3FE0DA8B,
|
||||
/**/ 0xF0BEE909, 0xBC8A58DE,
|
||||
/**/ 0xA89C8948, 0x3FEB33BB,
|
||||
/**/ 0x1D1F6CA9, 0x3C8EA6A5,
|
||||
/**/ 0xC4B69C3B, 0x3FE110D0,
|
||||
/**/ 0x98809981, 0x3C8D9189,
|
||||
/**/ 0x4162A4C6, 0x3FEB11D0,
|
||||
/**/ 0x1EFBC0C2, 0x3C71DD56,
|
||||
/**/ 0x1F8B7F82, 0x3FE146D2,
|
||||
/**/ 0x5E2739A8, 0x3C7BF953,
|
||||
/**/ 0x930BD275, 0x3FEAEF78,
|
||||
/**/ 0x79746F94, 0xBC7F8362,
|
||||
/**/ 0x5F2EEDB0, 0x3FE17C8E,
|
||||
/**/ 0x102E2488, 0x3C635E57,
|
||||
/**/ 0x26F69DE5, 0x3FEACCB5,
|
||||
/**/ 0x8DD6B6CC, 0x3C88FB6A,
|
||||
/**/ 0xACB02FDD, 0x3FE1B204,
|
||||
/**/ 0x70CBB5FF, 0xBC5F190C,
|
||||
/**/ 0x88308913, 0x3FEAA986,
|
||||
/**/ 0x07CD5070, 0xBC0B83D6,
|
||||
/**/ 0x3236574C, 0x3FE1E734,
|
||||
/**/ 0xA4F41D5A, 0x3C722A3F,
|
||||
/**/ 0x4373E02D, 0x3FEA85ED,
|
||||
/**/ 0x385EC792, 0x3C69BE06,
|
||||
/**/ 0x1B0394CF, 0x3FE21C1C,
|
||||
/**/ 0x4B23AA31, 0x3C5E5B32,
|
||||
/**/ 0xE72586AF, 0x3FEA61E9,
|
||||
/**/ 0xE2FD453F, 0x3C858330,
|
||||
/**/ 0x93788BBB, 0x3FE250BB,
|
||||
/**/ 0x2457BCCE, 0x3C7EA3D0,
|
||||
/**/ 0x0352BDCF, 0x3FEA3D7D,
|
||||
/**/ 0xECA19669, 0xBC868DBA,
|
||||
/**/ 0xC917A067, 0x3FE28511,
|
||||
/**/ 0xD9A16B70, 0xBC801DF1,
|
||||
/**/ 0x29AEE445, 0x3FEA18A7,
|
||||
/**/ 0x736C0358, 0x3C395E25,
|
||||
/**/ 0xEA88421E, 0x3FE2B91D,
|
||||
/**/ 0xDB216AB0, 0xBC8FA371,
|
||||
/**/ 0xED912F85, 0x3FE9F368,
|
||||
/**/ 0xC5791606, 0xBC81D200,
|
||||
/**/ 0x279A3082, 0x3FE2ECDF,
|
||||
/**/ 0xE0E7E37E, 0x3C8D3557,
|
||||
/**/ 0xE3F25E5C, 0x3FE9CDC2,
|
||||
/**/ 0x12993F62, 0x3C83F991,
|
||||
/**/ 0xB148BC4F, 0x3FE32054,
|
||||
/**/ 0x095A135B, 0x3C8F6B42,
|
||||
/**/ 0xA36A6514, 0x3FE9A7B5,
|
||||
/**/ 0xCC9FA7A9, 0x3C8722CF,
|
||||
/**/ 0xB9BE0367, 0x3FE3537D,
|
||||
/**/ 0x7AF040F0, 0x3C6B327E,
|
||||
/**/ 0xC42E1310, 0x3FE98141,
|
||||
/**/ 0x0488F08D, 0x3C8D1FF8,
|
||||
/**/ 0x7456282B, 0x3FE38659,
|
||||
/**/ 0xA93B07A8, 0xBC710FAD,
|
||||
/**/ 0xE00CB1FD, 0x3FE95A67,
|
||||
/**/ 0xA21F862D, 0xBC80BEFD,
|
||||
/**/ 0x15A2840A, 0x3FE3B8E7,
|
||||
/**/ 0xA7D2F07B, 0xBC797653,
|
||||
/**/ 0x926D9E92, 0x3FE93328,
|
||||
/**/ 0x03600CDA, 0xBC8BB770,
|
||||
/**/ 0xD36CD53A, 0x3FE3EB25,
|
||||
/**/ 0xE1570FC0, 0xBC5BE570,
|
||||
/**/ 0x784DDAF7, 0x3FE90B84,
|
||||
/**/ 0x0AB93B87, 0xBC70FEB1,
|
||||
/**/ 0xE4BA6790, 0x3FE41D14,
|
||||
/**/ 0xD287ECF5, 0x3C84608F,
|
||||
/**/ 0x303D9AD1, 0x3FE8E37C,
|
||||
/**/ 0xB53D4BF8, 0xBC6463A4,
|
||||
/**/ 0x81CF386B, 0x3FE44EB3,
|
||||
/**/ 0x1E6A5505, 0xBC83ED6C,
|
||||
/**/ 0x5A5DC900, 0x3FE8BB10,
|
||||
/**/ 0x3E9474C1, 0x3C8863E0,
|
||||
/**/ 0xE431159F, 0x3FE48000,
|
||||
/**/ 0x7463ED10, 0xBC8B194A,
|
||||
/**/ 0x985D871F, 0x3FE89241,
|
||||
/**/ 0xC413ED84, 0x3C8C48D9,
|
||||
/**/ 0x46AAB761, 0x3FE4B0FC,
|
||||
/**/ 0x738CC59A, 0x3C20DA05,
|
||||
/**/ 0x8D77A6C6, 0x3FE86910,
|
||||
/**/ 0xE2BFE9DD, 0x3C7338FF,
|
||||
/**/ 0xE54ED51B, 0x3FE4E1A4,
|
||||
/**/ 0x89B7C76A, 0xBC8A492F,
|
||||
/**/ 0xDE701CA0, 0x3FE83F7D,
|
||||
/**/ 0x609BC6E8, 0xBC4152CF,
|
||||
/**/ 0xFD7B351C, 0x3FE511F9,
|
||||
/**/ 0x61C48831, 0xBC85C0E8,
|
||||
/**/ 0x31916D5D, 0x3FE8158A,
|
||||
/**/ 0x0B8228DE, 0xBC6DE8B9,
|
||||
/**/ 0xCDDBB724, 0x3FE541FA,
|
||||
/**/ 0x8520D391, 0x3C7232C2,
|
||||
/**/ 0x2EAA1488, 0x3FE7EB36,
|
||||
/**/ 0xA4A5959F, 0x3C5A1D65,
|
||||
/**/ 0x966D59B3, 0x3FE571A6,
|
||||
/**/ 0x4D0FB198, 0x3C5C843B,
|
||||
/**/ 0x7F09E54F, 0x3FE7C082,
|
||||
/**/ 0xD72AEE68, 0xBC6C73D6,
|
||||
/**/ 0x98813A12, 0x3FE5A0FC,
|
||||
/**/ 0xB7D4227B, 0xBC8D82E2,
|
||||
/**/ 0xCD7F6543, 0x3FE7956F,
|
||||
/**/ 0xE9D45AE4, 0xBC8AB276,
|
||||
/**/ 0x16BF8F0D, 0x3FE5CFFC,
|
||||
/**/ 0x70EB578A, 0x3C896CB3,
|
||||
/**/ 0xC655211F, 0x3FE769FE,
|
||||
/**/ 0xCF8C68C5, 0xBC6827D5,
|
||||
/**/ 0x552A9E57, 0x3FE5FEA4,
|
||||
/**/ 0xF7EE20B7, 0x3C80B6CE,
|
||||
/**/ 0x174EFBA1, 0x3FE73E30,
|
||||
/**/ 0x3D94AD5F, 0xBC65D3AE,
|
||||
/**/ 0x9921AC79, 0x3FE62CF4,
|
||||
/**/ 0x55B6241A, 0xBC8EDD98,
|
||||
/**/ 0x6FA77678, 0x3FE71204,
|
||||
/**/ 0xA5029C81, 0x3C8425B0,
|
||||
/**/ 0x2963E755, 0x3FE65AEC,
|
||||
/**/ 0x6B71053C, 0x3C8126F9,
|
||||
/**/ 0x800CF55E, 0x3FE6E57C,
|
||||
/**/ 0xDEDBD0A6, 0x3C860286,
|
||||
/**/ 0x4E134B2F, 0x3FE6888A,
|
||||
/**/ 0x7644D5E6, 0xBC86B7D3,
|
||||
/**/ 0xFA9EFB5D, 0x3FE6B898,
|
||||
/**/ 0x86CCF4B2, 0x3C715AC7,
|
||||
/**/ 0x50B7821A, 0x3FE6B5CE,
|
||||
/**/ 0x8F702E0F, 0xBC65D515,
|
||||
/**/ 0x92EB6253, 0x3FE68B5A,
|
||||
/**/ 0xD985F89C, 0xBC89A91A,
|
||||
/**/ 0x7C40BDE1, 0x3FE6E2B7,
|
||||
/**/ 0x857FAD53, 0xBC70E729,
|
||||
/**/ 0xFDEB8CBA, 0x3FE65DC1,
|
||||
/**/ 0x47337C77, 0xBC597C1B,
|
||||
/**/ 0x1D0A8C40, 0x3FE70F45,
|
||||
/**/ 0x3885770D, 0x3C697EDE,
|
||||
/**/ 0xF20191C7, 0x3FE62FCF,
|
||||
/**/ 0x895756EF, 0x3C6D9143,
|
||||
/**/ 0x80DEA578, 0x3FE73B76,
|
||||
/**/ 0x06DC12A2, 0xBC722483,
|
||||
/**/ 0x26F563DF, 0x3FE60185,
|
||||
/**/ 0xE0E432D0, 0x3C846CA5,
|
||||
/**/ 0xF6F7B524, 0x3FE7674A,
|
||||
/**/ 0x94AC84A8, 0x3C7E9D3F,
|
||||
/**/ 0x55F1F17A, 0x3FE5D2E2,
|
||||
/**/ 0x04C8892B, 0x3C803141,
|
||||
/**/ 0xD0041D52, 0x3FE792C1,
|
||||
/**/ 0xEEB354EB, 0xBC8ABF05,
|
||||
/**/ 0x39824077, 0x3FE5A3E8,
|
||||
/**/ 0x2759BE62, 0x3C8428AA,
|
||||
/**/ 0x5E28B3C2, 0x3FE7BDDA,
|
||||
/**/ 0x7CCD0393, 0x3C4AD119,
|
||||
/**/ 0x8D8E83F2, 0x3FE57497,
|
||||
/**/ 0xAF282D23, 0x3C8F4714,
|
||||
/**/ 0xF5037959, 0x3FE7E893,
|
||||
/**/ 0xAA650C4C, 0x3C80EEFB,
|
||||
/**/ 0x0F592CA5, 0x3FE544F1,
|
||||
/**/ 0xE6C7A62F, 0xBC8E7AE8,
|
||||
/**/ 0xE9AE4BA4, 0x3FE812ED,
|
||||
/**/ 0xDF402DDA, 0xBC87830A,
|
||||
/**/ 0x7D7BF3DA, 0x3FE514F5,
|
||||
/**/ 0x8073C259, 0x3C747A10 } };
|
||||
#endif
|
||||
#endif
|
352
libgcc-math/dbl-64/sincos32.c
Normal file
352
libgcc-math/dbl-64/sincos32.c
Normal file
|
@ -0,0 +1,352 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/****************************************************************/
|
||||
/* MODULE_NAME: sincos32.c */
|
||||
/* */
|
||||
/* FUNCTIONS: ss32 */
|
||||
/* cc32 */
|
||||
/* c32 */
|
||||
/* sin32 */
|
||||
/* cos32 */
|
||||
/* mpsin */
|
||||
/* mpcos */
|
||||
/* mpranred */
|
||||
/* mpsin1 */
|
||||
/* mpcos1 */
|
||||
/* */
|
||||
/* FILES NEEDED: endian.h mpa.h sincos32.h */
|
||||
/* mpa.c */
|
||||
/* */
|
||||
/* Multi Precision sin() and cos() function with p=32 for sin()*/
|
||||
/* cos() arcsin() and arccos() routines */
|
||||
/* In addition mpranred() routine performs range reduction of */
|
||||
/* a double number x into multi precision number y, */
|
||||
/* such that y=x-n*pi/2, abs(y)<pi/4, n=0,+-1,+-2,.... */
|
||||
/****************************************************************/
|
||||
#include "endian.h"
|
||||
#include "mpa.h"
|
||||
#include "sincos32.h"
|
||||
#include "math_private.h"
|
||||
|
||||
/****************************************************************/
|
||||
/* Compute Multi-Precision sin() function for given p. Receive */
|
||||
/* Multi Precision number x and result stored at y */
|
||||
/****************************************************************/
|
||||
static void ss32(mp_no *x, mp_no *y, int p) {
|
||||
int i;
|
||||
double a;
|
||||
#if 0
|
||||
double b;
|
||||
static const mp_no mpone = {1,{1.0,1.0}};
|
||||
#endif
|
||||
mp_no mpt1,x2,gor,sum ,mpk={1,{1.0}};
|
||||
#if 0
|
||||
mp_no mpt2;
|
||||
#endif
|
||||
for (i=1;i<=p;i++) mpk.d[i]=0;
|
||||
|
||||
__mul(x,x,&x2,p);
|
||||
__cpy(&oofac27,&gor,p);
|
||||
__cpy(&gor,&sum,p);
|
||||
for (a=27.0;a>1.0;a-=2.0) {
|
||||
mpk.d[1]=a*(a-1.0);
|
||||
__mul(&gor,&mpk,&mpt1,p);
|
||||
__cpy(&mpt1,&gor,p);
|
||||
__mul(&x2,&sum,&mpt1,p);
|
||||
__sub(&gor,&mpt1,&sum,p);
|
||||
}
|
||||
__mul(x,&sum,y,p);
|
||||
}
|
||||
|
||||
/**********************************************************************/
|
||||
/* Compute Multi-Precision cos() function for given p. Receive Multi */
|
||||
/* Precision number x and result stored at y */
|
||||
/**********************************************************************/
|
||||
static void cc32(mp_no *x, mp_no *y, int p) {
|
||||
int i;
|
||||
double a;
|
||||
#if 0
|
||||
double b;
|
||||
static const mp_no mpone = {1,{1.0,1.0}};
|
||||
#endif
|
||||
mp_no mpt1,x2,gor,sum ,mpk={1,{1.0}};
|
||||
#if 0
|
||||
mp_no mpt2;
|
||||
#endif
|
||||
for (i=1;i<=p;i++) mpk.d[i]=0;
|
||||
|
||||
__mul(x,x,&x2,p);
|
||||
mpk.d[1]=27.0;
|
||||
__mul(&oofac27,&mpk,&gor,p);
|
||||
__cpy(&gor,&sum,p);
|
||||
for (a=26.0;a>2.0;a-=2.0) {
|
||||
mpk.d[1]=a*(a-1.0);
|
||||
__mul(&gor,&mpk,&mpt1,p);
|
||||
__cpy(&mpt1,&gor,p);
|
||||
__mul(&x2,&sum,&mpt1,p);
|
||||
__sub(&gor,&mpt1,&sum,p);
|
||||
}
|
||||
__mul(&x2,&sum,y,p);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
/* c32() computes both sin(x), cos(x) as Multi precision numbers */
|
||||
/***************************************************************************/
|
||||
void __c32(mp_no *x, mp_no *y, mp_no *z, int p) {
|
||||
static const mp_no mpt={1,{1.0,2.0}}, one={1,{1.0,1.0}};
|
||||
mp_no u,t,t1,t2,c,s;
|
||||
int i;
|
||||
__cpy(x,&u,p);
|
||||
u.e=u.e-1;
|
||||
cc32(&u,&c,p);
|
||||
ss32(&u,&s,p);
|
||||
for (i=0;i<24;i++) {
|
||||
__mul(&c,&s,&t,p);
|
||||
__sub(&s,&t,&t1,p);
|
||||
__add(&t1,&t1,&s,p);
|
||||
__sub(&mpt,&c,&t1,p);
|
||||
__mul(&t1,&c,&t2,p);
|
||||
__add(&t2,&t2,&c,p);
|
||||
}
|
||||
__sub(&one,&c,y,p);
|
||||
__cpy(&s,z,p);
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/*Routine receive double x and two double results of sin(x) and return */
|
||||
/*result which is more accurate */
|
||||
/*Computing sin(x) with multi precision routine c32 */
|
||||
/************************************************************************/
|
||||
double __sin32(double x, double res, double res1) {
|
||||
int p;
|
||||
mp_no a,b,c;
|
||||
p=32;
|
||||
__dbl_mp(res,&a,p);
|
||||
__dbl_mp(0.5*(res1-res),&b,p);
|
||||
__add(&a,&b,&c,p);
|
||||
if (x>0.8)
|
||||
{ __sub(&hp,&c,&a,p);
|
||||
__c32(&a,&b,&c,p);
|
||||
}
|
||||
else __c32(&c,&a,&b,p); /* b=sin(0.5*(res+res1)) */
|
||||
__dbl_mp(x,&c,p); /* c = x */
|
||||
__sub(&b,&c,&a,p);
|
||||
/* if a>0 return min(res,res1), otherwise return max(res,res1) */
|
||||
if (a.d[0]>0) return (res<res1)?res:res1;
|
||||
else return (res>res1)?res:res1;
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/*Routine receive double x and two double results of cos(x) and return */
|
||||
/*result which is more accurate */
|
||||
/*Computing cos(x) with multi precision routine c32 */
|
||||
/************************************************************************/
|
||||
double __cos32(double x, double res, double res1) {
|
||||
int p;
|
||||
mp_no a,b,c;
|
||||
p=32;
|
||||
__dbl_mp(res,&a,p);
|
||||
__dbl_mp(0.5*(res1-res),&b,p);
|
||||
__add(&a,&b,&c,p);
|
||||
if (x>2.4)
|
||||
{ __sub(&pi,&c,&a,p);
|
||||
__c32(&a,&b,&c,p);
|
||||
b.d[0]=-b.d[0];
|
||||
}
|
||||
else if (x>0.8)
|
||||
{ __sub(&hp,&c,&a,p);
|
||||
__c32(&a,&c,&b,p);
|
||||
}
|
||||
else __c32(&c,&b,&a,p); /* b=cos(0.5*(res+res1)) */
|
||||
__dbl_mp(x,&c,p); /* c = x */
|
||||
__sub(&b,&c,&a,p);
|
||||
/* if a>0 return max(res,res1), otherwise return min(res,res1) */
|
||||
if (a.d[0]>0) return (res>res1)?res:res1;
|
||||
else return (res<res1)?res:res1;
|
||||
}
|
||||
|
||||
/*******************************************************************/
|
||||
/*Compute sin(x+dx) as Multi Precision number and return result as */
|
||||
/* double */
|
||||
/*******************************************************************/
|
||||
double __mpsin(double x, double dx) {
|
||||
int p;
|
||||
double y;
|
||||
mp_no a,b,c;
|
||||
p=32;
|
||||
__dbl_mp(x,&a,p);
|
||||
__dbl_mp(dx,&b,p);
|
||||
__add(&a,&b,&c,p);
|
||||
if (x>0.8) { __sub(&hp,&c,&a,p); __c32(&a,&b,&c,p); }
|
||||
else __c32(&c,&a,&b,p); /* b = sin(x+dx) */
|
||||
__mp_dbl(&b,&y,p);
|
||||
return y;
|
||||
}
|
||||
|
||||
/*******************************************************************/
|
||||
/* Compute cos()of double-length number (x+dx) as Multi Precision */
|
||||
/* number and return result as double */
|
||||
/*******************************************************************/
|
||||
double __mpcos(double x, double dx) {
|
||||
int p;
|
||||
double y;
|
||||
mp_no a,b,c;
|
||||
p=32;
|
||||
__dbl_mp(x,&a,p);
|
||||
__dbl_mp(dx,&b,p);
|
||||
__add(&a,&b,&c,p);
|
||||
if (x>0.8)
|
||||
{ __sub(&hp,&c,&b,p);
|
||||
__c32(&b,&c,&a,p);
|
||||
}
|
||||
else __c32(&c,&a,&b,p); /* a = cos(x+dx) */
|
||||
__mp_dbl(&a,&y,p);
|
||||
return y;
|
||||
}
|
||||
|
||||
/******************************************************************/
|
||||
/* mpranred() performs range reduction of a double number x into */
|
||||
/* multi precision number y, such that y=x-n*pi/2, abs(y)<pi/4, */
|
||||
/* n=0,+-1,+-2,.... */
|
||||
/* Return int which indicates in which quarter of circle x is */
|
||||
/******************************************************************/
|
||||
int __mpranred(double x, mp_no *y, int p)
|
||||
{
|
||||
number v;
|
||||
double t,xn;
|
||||
int i,k,n;
|
||||
static const mp_no one = {1,{1.0,1.0}};
|
||||
mp_no a,b,c;
|
||||
|
||||
if (ABS(x) < 2.8e14) {
|
||||
t = (x*hpinv.d + toint.d);
|
||||
xn = t - toint.d;
|
||||
v.d = t;
|
||||
n =v.i[LOW_HALF]&3;
|
||||
__dbl_mp(xn,&a,p);
|
||||
__mul(&a,&hp,&b,p);
|
||||
__dbl_mp(x,&c,p);
|
||||
__sub(&c,&b,y,p);
|
||||
return n;
|
||||
}
|
||||
else { /* if x is very big more precision required */
|
||||
__dbl_mp(x,&a,p);
|
||||
a.d[0]=1.0;
|
||||
k = a.e-5;
|
||||
if (k < 0) k=0;
|
||||
b.e = -k;
|
||||
b.d[0] = 1.0;
|
||||
for (i=0;i<p;i++) b.d[i+1] = toverp[i+k];
|
||||
__mul(&a,&b,&c,p);
|
||||
t = c.d[c.e];
|
||||
for (i=1;i<=p-c.e;i++) c.d[i]=c.d[i+c.e];
|
||||
for (i=p+1-c.e;i<=p;i++) c.d[i]=0;
|
||||
c.e=0;
|
||||
if (c.d[1] >= 8388608.0)
|
||||
{ t +=1.0;
|
||||
__sub(&c,&one,&b,p);
|
||||
__mul(&b,&hp,y,p);
|
||||
}
|
||||
else __mul(&c,&hp,y,p);
|
||||
n = (int) t;
|
||||
if (x < 0) { y->d[0] = - y->d[0]; n = -n; }
|
||||
return (n&3);
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************/
|
||||
/* Multi-Precision sin() function subroutine, for p=32. It is */
|
||||
/* based on the routines mpranred() and c32(). */
|
||||
/*******************************************************************/
|
||||
double __mpsin1(double x)
|
||||
{
|
||||
int p;
|
||||
int n;
|
||||
mp_no u,s,c;
|
||||
double y;
|
||||
p=32;
|
||||
n=__mpranred(x,&u,p); /* n is 0, 1, 2 or 3 */
|
||||
__c32(&u,&c,&s,p);
|
||||
switch (n) { /* in which quarter of unit circle y is*/
|
||||
case 0:
|
||||
__mp_dbl(&s,&y,p);
|
||||
return y;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
__mp_dbl(&s,&y,p);
|
||||
return -y;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
__mp_dbl(&c,&y,p);
|
||||
return y;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
__mp_dbl(&c,&y,p);
|
||||
return -y;
|
||||
break;
|
||||
|
||||
}
|
||||
return 0; /* unreachable, to make the compiler happy */
|
||||
}
|
||||
|
||||
/*****************************************************************/
|
||||
/* Multi-Precision cos() function subroutine, for p=32. It is */
|
||||
/* based on the routines mpranred() and c32(). */
|
||||
/*****************************************************************/
|
||||
|
||||
double __mpcos1(double x)
|
||||
{
|
||||
int p;
|
||||
int n;
|
||||
mp_no u,s,c;
|
||||
double y;
|
||||
|
||||
p=32;
|
||||
n=__mpranred(x,&u,p); /* n is 0, 1, 2 or 3 */
|
||||
__c32(&u,&c,&s,p);
|
||||
switch (n) { /* in what quarter of unit circle y is*/
|
||||
|
||||
case 0:
|
||||
__mp_dbl(&c,&y,p);
|
||||
return y;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
__mp_dbl(&c,&y,p);
|
||||
return -y;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
__mp_dbl(&s,&y,p);
|
||||
return -y;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
__mp_dbl(&s,&y,p);
|
||||
return y;
|
||||
break;
|
||||
|
||||
}
|
||||
return 0; /* unreachable, to make the compiler happy */
|
||||
}
|
||||
/******************************************************************/
|
82
libgcc-math/dbl-64/sincos32.h
Normal file
82
libgcc-math/dbl-64/sincos32.h
Normal file
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:sincos32.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef SINCOS32_H
|
||||
#define SINCCOS32_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const number
|
||||
/**/ hpinv = {{0x3FE45F30, 0x6DC9C883}}, /* 0.63661977236758138 */
|
||||
/**/ toint = {{0x43380000, 0x00000000}}; /* 6755399441055744 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const number
|
||||
/**/ hpinv = {{0x6DC9C883, 0x3FE45F30}}, /* 0.63661977236758138 */
|
||||
/**/ toint = {{0x00000000, 0x43380000}}; /* 6755399441055744 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static const mp_no
|
||||
oofac27 = {-3,{1.0,7.0,4631664.0,12006312.0,13118056.0,6538613.0,646354.0,
|
||||
8508025.0,9131256.0,7548776.0,2529842.0,8864927.0,660489.0,15595125.0,12777885.0,
|
||||
11618489.0,13348664.0,5486686.0,514518.0,11275535.0,4727621.0,3575562.0,
|
||||
13579710.0,5829745.0,7531862.0,9507898.0,6915060.0,4079264.0,1907586.0,
|
||||
6078398.0,13789314.0,5504104.0,14136.0}},
|
||||
pi = {1,{1.0,3.0,
|
||||
2375530.0,8947107.0,578323.0,1673774.0,225395.0,4498441.0,3678761.0,
|
||||
10432976.0,536314.0,10021966.0,7113029.0,2630118.0,3723283.0,7847508.0,
|
||||
6737716.0,15273068.0,12626985.0,12044668.0,5299519.0,8705461.0,11880201.0,
|
||||
1544726.0,14014857.0,7994139.0,13709579.0,10918111.0,11906095.0,16610011.0,
|
||||
13638367.0,12040417.0,11529578.0,2522774.0}},
|
||||
hp = {1,{1.0, 1.0,
|
||||
9576373.0,4473553.0,8677769.0,9225495.0,112697.0,10637828.0,
|
||||
10227988.0,13605096.0,268157.0,5010983.0,3556514.0,9703667.0,
|
||||
1861641.0,12312362.0,3368858.0,7636534.0,6313492.0,14410942.0,
|
||||
2649759.0,12741338.0,14328708.0,9160971.0,7007428.0,12385677.0,
|
||||
15243397.0,13847663.0,14341655.0,16693613.0,15207791.0,14408816.0,
|
||||
14153397.0,1261387.0,6110792.0,2291862.0,4181138.0,5295267.0}};
|
||||
|
||||
static const double toverp[75] = {
|
||||
10680707.0, 7228996.0, 1387004.0, 2578385.0, 16069853.0,
|
||||
12639074.0, 9804092.0, 4427841.0, 16666979.0, 11263675.0,
|
||||
12935607.0, 2387514.0, 4345298.0, 14681673.0, 3074569.0,
|
||||
13734428.0, 16653803.0, 1880361.0, 10960616.0, 8533493.0,
|
||||
3062596.0, 8710556.0, 7349940.0, 6258241.0, 3772886.0,
|
||||
3769171.0, 3798172.0, 8675211.0, 12450088.0, 3874808.0,
|
||||
9961438.0, 366607.0, 15675153.0, 9132554.0, 7151469.0,
|
||||
3571407.0, 2607881.0, 12013382.0, 4155038.0, 6285869.0,
|
||||
7677882.0, 13102053.0, 15825725.0, 473591.0, 9065106.0,
|
||||
15363067.0, 6271263.0, 9264392.0, 5636912.0, 4652155.0,
|
||||
7056368.0, 13614112.0, 10155062.0, 1944035.0, 9527646.0,
|
||||
15080200.0, 6658437.0, 6231200.0, 6832269.0, 16767104.0,
|
||||
5075751.0, 3212806.0, 1398474.0, 7579849.0, 6349435.0,
|
||||
12618859.0, 4703257.0, 12806093.0, 14477321.0, 2786137.0,
|
||||
12875403.0, 9837734.0, 14528324.0, 13719321.0, 343717.0 };
|
||||
|
||||
#endif
|
66
libgcc-math/dbl-64/slowexp.c
Normal file
66
libgcc-math/dbl-64/slowexp.c
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/**************************************************************************/
|
||||
/* MODULE_NAME:slowexp.c */
|
||||
/* */
|
||||
/* FUNCTION:slowexp */
|
||||
/* */
|
||||
/* FILES NEEDED:mpa.h */
|
||||
/* mpa.c mpexp.c */
|
||||
/* */
|
||||
/*Converting from double precision to Multi-precision and calculating */
|
||||
/* e^x */
|
||||
/**************************************************************************/
|
||||
#include "mpa.h"
|
||||
#include "math_private.h"
|
||||
|
||||
void __mpexp(mp_no *x, mp_no *y, int p);
|
||||
|
||||
/*Converting from double precision to Multi-precision and calculating e^x */
|
||||
double __slowexp(double x) {
|
||||
double w,z,res,eps=3.0e-26;
|
||||
#if 0
|
||||
double y;
|
||||
#endif
|
||||
int p;
|
||||
#if 0
|
||||
int orig,i;
|
||||
#endif
|
||||
mp_no mpx, mpy, mpz,mpw,mpeps,mpcor;
|
||||
|
||||
p=6;
|
||||
__dbl_mp(x,&mpx,p); /* Convert a double precision number x */
|
||||
/* into a multiple precision number mpx with prec. p. */
|
||||
__mpexp(&mpx, &mpy, p); /* Multi-Precision exponential function */
|
||||
__dbl_mp(eps,&mpeps,p);
|
||||
__mul(&mpeps,&mpy,&mpcor,p);
|
||||
__add(&mpy,&mpcor,&mpw,p);
|
||||
__sub(&mpy,&mpcor,&mpz,p);
|
||||
__mp_dbl(&mpw, &w, p);
|
||||
__mp_dbl(&mpz, &z, p);
|
||||
if (w == z) return w;
|
||||
else { /* if calculating is not exactly */
|
||||
p = 32;
|
||||
__dbl_mp(x,&mpx,p);
|
||||
__mpexp(&mpx, &mpy, p);
|
||||
__mp_dbl(&mpy, &res, p);
|
||||
return res;
|
||||
}
|
||||
}
|
74
libgcc-math/dbl-64/slowpow.c
Normal file
74
libgcc-math/dbl-64/slowpow.c
Normal file
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/*************************************************************************/
|
||||
/* MODULE_NAME:slowpow.c */
|
||||
/* */
|
||||
/* FUNCTION:slowpow */
|
||||
/* */
|
||||
/*FILES NEEDED:mpa.h */
|
||||
/* mpa.c mpexp.c mplog.c halfulp.c */
|
||||
/* */
|
||||
/* Given two IEEE double machine numbers y,x , routine computes the */
|
||||
/* correctly rounded (to nearest) value of x^y. Result calculated by */
|
||||
/* multiplication (in halfulp.c) or if result isn't accurate enough */
|
||||
/* then routine converts x and y into multi-precision doubles and */
|
||||
/* calls to mpexp routine */
|
||||
/*************************************************************************/
|
||||
|
||||
#include "mpa.h"
|
||||
#include "math_private.h"
|
||||
|
||||
void __mpexp(mp_no *x, mp_no *y, int p);
|
||||
void __mplog(mp_no *x, mp_no *y, int p);
|
||||
double ulog(double);
|
||||
double __halfulp(double x,double y);
|
||||
|
||||
double __slowpow(double x, double y, double z) {
|
||||
double res,res1;
|
||||
mp_no mpx, mpy, mpz,mpw,mpp,mpr,mpr1;
|
||||
static const mp_no eps = {-3,{1.0,4.0}};
|
||||
int p;
|
||||
|
||||
res = __halfulp(x,y); /* halfulp() returns -10 or x^y */
|
||||
if (res >= 0) return res; /* if result was really computed by halfulp */
|
||||
/* else, if result was not really computed by halfulp */
|
||||
p = 10; /* p=precision */
|
||||
__dbl_mp(x,&mpx,p);
|
||||
__dbl_mp(y,&mpy,p);
|
||||
__dbl_mp(z,&mpz,p);
|
||||
__mplog(&mpx, &mpz, p); /* log(x) = z */
|
||||
__mul(&mpy,&mpz,&mpw,p); /* y * z =w */
|
||||
__mpexp(&mpw, &mpp, p); /* e^w =pp */
|
||||
__add(&mpp,&eps,&mpr,p); /* pp+eps =r */
|
||||
__mp_dbl(&mpr, &res, p);
|
||||
__sub(&mpp,&eps,&mpr1,p); /* pp -eps =r1 */
|
||||
__mp_dbl(&mpr1, &res1, p); /* converting into double precision */
|
||||
if (res == res1) return res;
|
||||
|
||||
p = 32; /* if we get here result wasn't calculated exactly, continue */
|
||||
__dbl_mp(x,&mpx,p); /* for more exact calculation */
|
||||
__dbl_mp(y,&mpy,p);
|
||||
__dbl_mp(z,&mpz,p);
|
||||
__mplog(&mpx, &mpz, p); /* log(c)=z */
|
||||
__mul(&mpy,&mpz,&mpw,p); /* y*z =w */
|
||||
__mpexp(&mpw, &mpp, p); /* e^w=pp */
|
||||
__mp_dbl(&mpp, &res, p); /* converting into double precision */
|
||||
return res;
|
||||
}
|
436
libgcc-math/dbl-64/t_exp.c
Normal file
436
libgcc-math/dbl-64/t_exp.c
Normal file
|
@ -0,0 +1,436 @@
|
|||
/* Accurate tables for exp().
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/* This table has the property that, for all integers -177 <= i <= 177,
|
||||
exp(i/512.0 + __exp_deltatable[abs(i)]) == __exp_atable[i+177] + r
|
||||
for some -2^-64 < r < 2^-64 (abs(r) < 2^-65 if i <= 0); and that
|
||||
__exp_deltatable[abs(i)] == t * 2^-60
|
||||
for integer t so that abs(t) <= 8847927 * 2^8. */
|
||||
|
||||
#define W52 (2.22044605e-16)
|
||||
#define W55 (2.77555756e-17)
|
||||
#define W58 (3.46944695e-18)
|
||||
#define W59 (1.73472348e-18)
|
||||
#define W60 (8.67361738e-19)
|
||||
const float __exp_deltatable[178] = {
|
||||
0*W60, 16558714*W60, -10672149*W59, 1441652*W60,
|
||||
-15787963*W55, 462888*W60, 7291806*W60, 1698880*W60,
|
||||
-14375103*W58, -2021016*W60, 728829*W60, -3759654*W60,
|
||||
3202123*W60, -10916019*W58, -251570*W60, -1043086*W60,
|
||||
8207536*W60, -409964*W60, -5993931*W60, -475500*W60,
|
||||
2237522*W60, 324170*W60, -244117*W60, 32077*W60,
|
||||
123907*W60, -1019734*W60, -143*W60, 813077*W60,
|
||||
743345*W60, 462461*W60, 629794*W60, 2125066*W60,
|
||||
-2339121*W60, -337951*W60, 9922067*W60, -648704*W60,
|
||||
149407*W60, -2687209*W60, -631608*W60, 2128280*W60,
|
||||
-4882082*W60, 2001360*W60, 175074*W60, 2923216*W60,
|
||||
-538947*W60, -1212193*W60, -1920926*W60, -1080577*W60,
|
||||
3690196*W60, 2643367*W60, 2911937*W60, 671455*W60,
|
||||
-1128674*W60, 593282*W60, -5219347*W60, -1941490*W60,
|
||||
11007953*W60, 239609*W60, -2969658*W60, -1183650*W60,
|
||||
942998*W60, 699063*W60, 450569*W60, -329250*W60,
|
||||
-7257875*W60, -312436*W60, 51626*W60, 555877*W60,
|
||||
-641761*W60, 1565666*W60, 884327*W60, -10960035*W60,
|
||||
-2004679*W60, -995793*W60, -2229051*W60, -146179*W60,
|
||||
-510327*W60, 1453482*W60, -3778852*W60, -2238056*W60,
|
||||
-4895983*W60, 3398883*W60, -252738*W60, 1230155*W60,
|
||||
346918*W60, 1109352*W60, 268941*W60, -2930483*W60,
|
||||
-1036263*W60, -1159280*W60, 1328176*W60, 2937642*W60,
|
||||
-9371420*W60, -6902650*W60, -1419134*W60, 1442904*W60,
|
||||
-1319056*W60, -16369*W60, 696555*W60, -279987*W60,
|
||||
-7919763*W60, 252741*W60, 459711*W60, -1709645*W60,
|
||||
354913*W60, 6025867*W60, -421460*W60, -853103*W60,
|
||||
-338649*W60, 962151*W60, 955965*W60, 784419*W60,
|
||||
-3633653*W60, 2277133*W60, -8847927*W52, 1223028*W60,
|
||||
5907079*W60, 623167*W60, 5142888*W60, 2599099*W60,
|
||||
1214280*W60, 4870359*W60, 593349*W60, -57705*W60,
|
||||
7761209*W60, -5564097*W60, 2051261*W60, 6216869*W60,
|
||||
4692163*W60, 601691*W60, -5264906*W60, 1077872*W60,
|
||||
-3205949*W60, 1833082*W60, 2081746*W60, -987363*W60,
|
||||
-1049535*W60, 2015244*W60, 874230*W60, 2168259*W60,
|
||||
-1740124*W60, -10068269*W60, -18242*W60, -3013583*W60,
|
||||
580601*W60, -2547161*W60, -535689*W60, 2220815*W60,
|
||||
1285067*W60, 2806933*W60, -983086*W60, -1729097*W60,
|
||||
-1162985*W60, -2561904*W60, 801988*W60, 244351*W60,
|
||||
1441893*W60, -7517981*W60, 271781*W60, -15021588*W60,
|
||||
-2341588*W60, -919198*W60, 1642232*W60, 4771771*W60,
|
||||
-1220099*W60, -3062372*W60, 628624*W60, 1278114*W60,
|
||||
13083513*W60, -10521925*W60, 3180310*W60, -1659307*W60,
|
||||
3543773*W60, 2501203*W60, 4151*W60, -340748*W60,
|
||||
-2285625*W60, 2495202*W60
|
||||
};
|
||||
|
||||
const double __exp_atable[355] /* __attribute__((mode(DF))) */ = {
|
||||
0.707722561055888932371, /* 0x0.b52d4e46605c27ffd */
|
||||
0.709106182438804188967, /* 0x0.b587fb96f75097ffb */
|
||||
0.710492508843861281234, /* 0x0.b5e2d649899167ffd */
|
||||
0.711881545564593931623, /* 0x0.b63dde74d36bdfffe */
|
||||
0.713273297897442870573, /* 0x0.b699142f945f87ffc */
|
||||
0.714667771153751463236, /* 0x0.b6f477909c4ea0001 */
|
||||
0.716064970655995725059, /* 0x0.b75008aec758f8004 */
|
||||
0.717464901723956938193, /* 0x0.b7abc7a0eea7e0002 */
|
||||
0.718867569715736398602, /* 0x0.b807b47e1586c7ff8 */
|
||||
0.720272979947266023271, /* 0x0.b863cf5d10e380003 */
|
||||
0.721681137825144314297, /* 0x0.b8c01855195c37ffb */
|
||||
0.723092048691992950199, /* 0x0.b91c8f7d213740004 */
|
||||
0.724505717938892290800, /* 0x0.b97934ec5002d0007 */
|
||||
0.725922150953176470431, /* 0x0.b9d608b9c92ea7ffc */
|
||||
0.727341353138962865022, /* 0x0.ba330afcc29e98003 */
|
||||
0.728763329918453162104, /* 0x0.ba903bcc8618b7ffc */
|
||||
0.730188086709957051568, /* 0x0.baed9b40591ba0000 */
|
||||
0.731615628948127705309, /* 0x0.bb4b296f931e30002 */
|
||||
0.733045962086486091436, /* 0x0.bba8e671a05617ff9 */
|
||||
0.734479091556371366251, /* 0x0.bc06d25dd49568001 */
|
||||
0.735915022857225542529, /* 0x0.bc64ed4bce8f6fff9 */
|
||||
0.737353761441304711410, /* 0x0.bcc33752f915d7ff9 */
|
||||
0.738795312814142124419, /* 0x0.bd21b08af98e78005 */
|
||||
0.740239682467211168593, /* 0x0.bd80590b65e9a8000 */
|
||||
0.741686875913991849885, /* 0x0.bddf30ebec4a10000 */
|
||||
0.743136898669507939299, /* 0x0.be3e38443c84e0007 */
|
||||
0.744589756269486091620, /* 0x0.be9d6f2c1d32a0002 */
|
||||
0.746045454254026796384, /* 0x0.befcd5bb59baf8004 */
|
||||
0.747503998175051087583, /* 0x0.bf5c6c09ca84c0003 */
|
||||
0.748965393601880857739, /* 0x0.bfbc322f5b18b7ff8 */
|
||||
0.750429646104262104698, /* 0x0.c01c2843f776fffff */
|
||||
0.751896761271877989160, /* 0x0.c07c4e5fa18b88002 */
|
||||
0.753366744698445112140, /* 0x0.c0dca49a5fb18fffd */
|
||||
0.754839601988627206827, /* 0x0.c13d2b0c444db0005 */
|
||||
0.756315338768691947122, /* 0x0.c19de1cd798578006 */
|
||||
0.757793960659406629066, /* 0x0.c1fec8f623723fffd */
|
||||
0.759275473314173443536, /* 0x0.c25fe09e8a0f47ff8 */
|
||||
0.760759882363831851927, /* 0x0.c2c128dedc88f8000 */
|
||||
0.762247193485956486805, /* 0x0.c322a1cf7d6e7fffa */
|
||||
0.763737412354726363781, /* 0x0.c3844b88cb9347ffc */
|
||||
0.765230544649828092739, /* 0x0.c3e626232bd8f7ffc */
|
||||
0.766726596071518051729, /* 0x0.c44831b719bf18002 */
|
||||
0.768225572321911687194, /* 0x0.c4aa6e5d12d078001 */
|
||||
0.769727479119219348810, /* 0x0.c50cdc2da64a37ffb */
|
||||
0.771232322196981678892, /* 0x0.c56f7b41744490001 */
|
||||
0.772740107296721268087, /* 0x0.c5d24bb1259e70004 */
|
||||
0.774250840160724651565, /* 0x0.c6354d95640dd0007 */
|
||||
0.775764526565368872643, /* 0x0.c6988106fec447fff */
|
||||
0.777281172269557396602, /* 0x0.c6fbe61eb1bd0ffff */
|
||||
0.778800783068235302750, /* 0x0.c75f7cf560942fffc */
|
||||
0.780323364758801041312, /* 0x0.c7c345a3f1983fffe */
|
||||
0.781848923151573727006, /* 0x0.c8274043594cb0002 */
|
||||
0.783377464064598849602, /* 0x0.c88b6cec94b3b7ff9 */
|
||||
0.784908993312207869935, /* 0x0.c8efcbb89cba27ffe */
|
||||
0.786443516765346961618, /* 0x0.c9545cc0a88c70003 */
|
||||
0.787981040257604625744, /* 0x0.c9b9201dc643bfffa */
|
||||
0.789521569657452682047, /* 0x0.ca1e15e92a5410007 */
|
||||
0.791065110849462849192, /* 0x0.ca833e3c1ae510005 */
|
||||
0.792611669712891875319, /* 0x0.cae8992fd84667ffd */
|
||||
0.794161252150049179450, /* 0x0.cb4e26ddbc207fff8 */
|
||||
0.795713864077794763584, /* 0x0.cbb3e75f301b60003 */
|
||||
0.797269511407239561694, /* 0x0.cc19dacd978cd8002 */
|
||||
0.798828200086368567220, /* 0x0.cc8001427e55d7ffb */
|
||||
0.800389937624300440456, /* 0x0.cce65ade24d360006 */
|
||||
0.801954725261124767840, /* 0x0.cd4ce7a5de839fffb */
|
||||
0.803522573691593189330, /* 0x0.cdb3a7c79a678fffd */
|
||||
0.805093487311204114563, /* 0x0.ce1a9b563965ffffc */
|
||||
0.806667472122675088819, /* 0x0.ce81c26b838db8000 */
|
||||
0.808244534127439906441, /* 0x0.cee91d213f8428002 */
|
||||
0.809824679342317166307, /* 0x0.cf50ab9144d92fff9 */
|
||||
0.811407913793616542005, /* 0x0.cfb86dd5758c2ffff */
|
||||
0.812994243520784198882, /* 0x0.d0206407c20e20005 */
|
||||
0.814583674571603966162, /* 0x0.d0888e4223facfff9 */
|
||||
0.816176213022088536960, /* 0x0.d0f0ec9eb3f7c8002 */
|
||||
0.817771864936188586101, /* 0x0.d1597f377d6768002 */
|
||||
0.819370636400374108252, /* 0x0.d1c24626a46eafff8 */
|
||||
0.820972533518165570298, /* 0x0.d22b41865ff1e7ff9 */
|
||||
0.822577562404315121269, /* 0x0.d2947170f32ec7ff9 */
|
||||
0.824185729164559344159, /* 0x0.d2fdd60097795fff8 */
|
||||
0.825797039949601741075, /* 0x0.d3676f4fb796d0001 */
|
||||
0.827411500902565544264, /* 0x0.d3d13d78b5f68fffb */
|
||||
0.829029118181348834154, /* 0x0.d43b40960546d8001 */
|
||||
0.830649897953322891022, /* 0x0.d4a578c222a058000 */
|
||||
0.832273846408250750368, /* 0x0.d50fe617a3ba78005 */
|
||||
0.833900969738858188772, /* 0x0.d57a88b1218e90002 */
|
||||
0.835531274148056613016, /* 0x0.d5e560a94048f8006 */
|
||||
0.837164765846411529371, /* 0x0.d6506e1aac8078003 */
|
||||
0.838801451086016225394, /* 0x0.d6bbb1204074e0001 */
|
||||
0.840441336100884561780, /* 0x0.d72729d4c28518004 */
|
||||
0.842084427144139224814, /* 0x0.d792d8530e12b0001 */
|
||||
0.843730730487052604790, /* 0x0.d7febcb61273e7fff */
|
||||
0.845380252404570153833, /* 0x0.d86ad718c308dfff9 */
|
||||
0.847032999194574087728, /* 0x0.d8d727962c69d7fff */
|
||||
0.848688977161248581090, /* 0x0.d943ae49621ce7ffb */
|
||||
0.850348192619261200615, /* 0x0.d9b06b4d832ef8005 */
|
||||
0.852010651900976245816, /* 0x0.da1d5ebdc22220005 */
|
||||
0.853676361342631029337, /* 0x0.da8a88b555baa0006 */
|
||||
0.855345327311054837175, /* 0x0.daf7e94f965f98004 */
|
||||
0.857017556155879489641, /* 0x0.db6580a7c98f7fff8 */
|
||||
0.858693054267390953857, /* 0x0.dbd34ed9617befff8 */
|
||||
0.860371828028939855647, /* 0x0.dc4153ffc8b65fff9 */
|
||||
0.862053883854957292436, /* 0x0.dcaf90368bfca8004 */
|
||||
0.863739228154875360306, /* 0x0.dd1e0399328d87ffe */
|
||||
0.865427867361348468455, /* 0x0.dd8cae435d303fff9 */
|
||||
0.867119807911702289458, /* 0x0.ddfb9050b1cee8006 */
|
||||
0.868815056264353846599, /* 0x0.de6aa9dced8448001 */
|
||||
0.870513618890481399881, /* 0x0.ded9fb03db7320006 */
|
||||
0.872215502247877139094, /* 0x0.df4983e1380657ff8 */
|
||||
0.873920712852848668986, /* 0x0.dfb94490ffff77ffd */
|
||||
0.875629257204025623884, /* 0x0.e0293d2f1cb01fff9 */
|
||||
0.877341141814212965880, /* 0x0.e0996dd786fff0007 */
|
||||
0.879056373217612985183, /* 0x0.e109d6a64f5d57ffc */
|
||||
0.880774957955916648615, /* 0x0.e17a77b78e72a7ffe */
|
||||
0.882496902590150900078, /* 0x0.e1eb5127722cc7ff8 */
|
||||
0.884222213673356738383, /* 0x0.e25c63121fb0c8006 */
|
||||
0.885950897802399772740, /* 0x0.e2cdad93ec5340003 */
|
||||
0.887682961567391237685, /* 0x0.e33f30c925fb97ffb */
|
||||
0.889418411575228162725, /* 0x0.e3b0ecce2d05ffff9 */
|
||||
0.891157254447957902797, /* 0x0.e422e1bf727718006 */
|
||||
0.892899496816652704641, /* 0x0.e4950fb9713fc7ffe */
|
||||
0.894645145323828439008, /* 0x0.e50776d8b0e60fff8 */
|
||||
0.896394206626591749641, /* 0x0.e57a1739c8fadfffc */
|
||||
0.898146687421414902124, /* 0x0.e5ecf0f97c5798007 */
|
||||
0.899902594367530173098, /* 0x0.e660043464e378005 */
|
||||
0.901661934163603406867, /* 0x0.e6d3510747e150006 */
|
||||
0.903424713533971135418, /* 0x0.e746d78f06cd97ffd */
|
||||
0.905190939194458810123, /* 0x0.e7ba97e879c91fffc */
|
||||
0.906960617885092856864, /* 0x0.e82e92309390b0007 */
|
||||
0.908733756358986566306, /* 0x0.e8a2c6845544afffa */
|
||||
0.910510361377119825629, /* 0x0.e9173500c8abc7ff8 */
|
||||
0.912290439722343249336, /* 0x0.e98bddc30f98b0002 */
|
||||
0.914073998177417412765, /* 0x0.ea00c0e84bc4c7fff */
|
||||
0.915861043547953501680, /* 0x0.ea75de8db8094fffe */
|
||||
0.917651582652244779397, /* 0x0.eaeb36d09d3137ffe */
|
||||
0.919445622318405764159, /* 0x0.eb60c9ce4ed3dffff */
|
||||
0.921243169397334638073, /* 0x0.ebd697a43995b0007 */
|
||||
0.923044230737526172328, /* 0x0.ec4ca06fc7768fffa */
|
||||
0.924848813220121135342, /* 0x0.ecc2e44e865b6fffb */
|
||||
0.926656923710931002014, /* 0x0.ed39635df34e70006 */
|
||||
0.928468569126343790092, /* 0x0.edb01dbbc2f5b7ffa */
|
||||
0.930283756368834757725, /* 0x0.ee2713859aab57ffa */
|
||||
0.932102492359406786818, /* 0x0.ee9e44d9342870004 */
|
||||
0.933924784042873379360, /* 0x0.ef15b1d4635438005 */
|
||||
0.935750638358567643520, /* 0x0.ef8d5a94f60f50007 */
|
||||
0.937580062297704630580, /* 0x0.f0053f38f345cffff */
|
||||
0.939413062815381727516, /* 0x0.f07d5fde3a2d98001 */
|
||||
0.941249646905368053689, /* 0x0.f0f5bca2d481a8004 */
|
||||
0.943089821583810716806, /* 0x0.f16e55a4e497d7ffe */
|
||||
0.944933593864477061592, /* 0x0.f1e72b028a2827ffb */
|
||||
0.946780970781518460559, /* 0x0.f2603cd9fb5430001 */
|
||||
0.948631959382661205081, /* 0x0.f2d98b497d2a87ff9 */
|
||||
0.950486566729423554277, /* 0x0.f353166f63e3dffff */
|
||||
0.952344799896018723290, /* 0x0.f3ccde6a11ae37ffe */
|
||||
0.954206665969085765512, /* 0x0.f446e357f66120000 */
|
||||
0.956072172053890279009, /* 0x0.f4c12557964f0fff9 */
|
||||
0.957941325265908139014, /* 0x0.f53ba48781046fffb */
|
||||
0.959814132734539637840, /* 0x0.f5b66106555d07ffa */
|
||||
0.961690601603558903308, /* 0x0.f6315af2c2027fffc */
|
||||
0.963570739036113010927, /* 0x0.f6ac926b8aeb80004 */
|
||||
0.965454552202857141381, /* 0x0.f728078f7c5008002 */
|
||||
0.967342048278315158608, /* 0x0.f7a3ba7d66a908001 */
|
||||
0.969233234469444204768, /* 0x0.f81fab543e1897ffb */
|
||||
0.971128118008140250896, /* 0x0.f89bda33122c78007 */
|
||||
0.973026706099345495256, /* 0x0.f9184738d4cf97ff8 */
|
||||
0.974929006031422851235, /* 0x0.f994f284d3a5c0008 */
|
||||
0.976835024947348973265, /* 0x0.fa11dc35bc7820002 */
|
||||
0.978744770239899142285, /* 0x0.fa8f046b4fb7f8007 */
|
||||
0.980658249138918636210, /* 0x0.fb0c6b449ab1cfff9 */
|
||||
0.982575468959622777535, /* 0x0.fb8a10e1088fb7ffa */
|
||||
0.984496437054508843888, /* 0x0.fc07f5602d79afffc */
|
||||
0.986421160608523028820, /* 0x0.fc8618e0e55e47ffb */
|
||||
0.988349647107594098099, /* 0x0.fd047b83571b1fffa */
|
||||
0.990281903873210800357, /* 0x0.fd831d66f4c018002 */
|
||||
0.992217938695037382475, /* 0x0.fe01fead3320bfff8 */
|
||||
0.994157757657894713987, /* 0x0.fe811f703491e8006 */
|
||||
0.996101369488558541238, /* 0x0.ff007fd5744490005 */
|
||||
0.998048781093141101932, /* 0x0.ff801ffa9b9280007 */
|
||||
1.000000000000000000000, /* 0x1.00000000000000000 */
|
||||
1.001955033605393285965, /* 0x1.0080200565d29ffff */
|
||||
1.003913889319761887310, /* 0x1.0100802aa0e80fff0 */
|
||||
1.005876574715736104818, /* 0x1.01812090377240007 */
|
||||
1.007843096764807100351, /* 0x1.020201541aad7fff6 */
|
||||
1.009813464316352327214, /* 0x1.0283229c4c9820007 */
|
||||
1.011787683565730677817, /* 0x1.030484836910a000e */
|
||||
1.013765762469146736174, /* 0x1.0386272b9c077fffe */
|
||||
1.015747708536026694351, /* 0x1.04080ab526304fff0 */
|
||||
1.017733529475172815584, /* 0x1.048a2f412375ffff0 */
|
||||
1.019723232714418781378, /* 0x1.050c94ef7ad5e000a */
|
||||
1.021716825883923762690, /* 0x1.058f3be0f1c2d0004 */
|
||||
1.023714316605201180057, /* 0x1.06122436442e2000e */
|
||||
1.025715712440059545995, /* 0x1.06954e0fec63afff2 */
|
||||
1.027721021151397406936, /* 0x1.0718b98f41c92fff6 */
|
||||
1.029730250269221158939, /* 0x1.079c66d49bb2ffff1 */
|
||||
1.031743407506447551857, /* 0x1.082056011a9230009 */
|
||||
1.033760500517691527387, /* 0x1.08a487359ebd50002 */
|
||||
1.035781537016238873464, /* 0x1.0928fa93490d4fff3 */
|
||||
1.037806524719013578963, /* 0x1.09adb03b3e5b3000d */
|
||||
1.039835471338248051878, /* 0x1.0a32a84e9e5760004 */
|
||||
1.041868384612101516848, /* 0x1.0ab7e2eea5340ffff */
|
||||
1.043905272300907460835, /* 0x1.0b3d603ca784f0009 */
|
||||
1.045946142174331239262, /* 0x1.0bc3205a042060000 */
|
||||
1.047991002016745332165, /* 0x1.0c4923682a086fffe */
|
||||
1.050039859627715177527, /* 0x1.0ccf698898f3a000d */
|
||||
1.052092722826109660856, /* 0x1.0d55f2dce5d1dfffb */
|
||||
1.054149599440827866881, /* 0x1.0ddcbf86b09a5fff6 */
|
||||
1.056210497317612961855, /* 0x1.0e63cfa7abc97fffd */
|
||||
1.058275424318780855142, /* 0x1.0eeb23619c146fffb */
|
||||
1.060344388322010722446, /* 0x1.0f72bad65714bffff */
|
||||
1.062417397220589476718, /* 0x1.0ffa9627c38d30004 */
|
||||
1.064494458915699715017, /* 0x1.1082b577d0eef0003 */
|
||||
1.066575581342167566880, /* 0x1.110b18e893a90000a */
|
||||
1.068660772440545025953, /* 0x1.1193c09c267610006 */
|
||||
1.070750040138235936705, /* 0x1.121cacb4959befff6 */
|
||||
1.072843392435016474095, /* 0x1.12a5dd543cf36ffff */
|
||||
1.074940837302467588937, /* 0x1.132f529d59552000b */
|
||||
1.077042382749654914030, /* 0x1.13b90cb250d08fff5 */
|
||||
1.079148036789447484528, /* 0x1.14430bb58da3dfff9 */
|
||||
1.081257807444460983297, /* 0x1.14cd4fc984c4a000e */
|
||||
1.083371702785017154417, /* 0x1.1557d910df9c7000e */
|
||||
1.085489730853784307038, /* 0x1.15e2a7ae292d30002 */
|
||||
1.087611899742884524772, /* 0x1.166dbbc422d8c0004 */
|
||||
1.089738217537583819804, /* 0x1.16f9157586772ffff */
|
||||
1.091868692357631731528, /* 0x1.1784b4e533cacfff0 */
|
||||
1.094003332327482702577, /* 0x1.18109a360fc23fff2 */
|
||||
1.096142145591650907149, /* 0x1.189cc58b155a70008 */
|
||||
1.098285140311341168136, /* 0x1.1929370751ea50002 */
|
||||
1.100432324652149906842, /* 0x1.19b5eecdd79cefff0 */
|
||||
1.102583706811727015711, /* 0x1.1a42ed01dbdba000e */
|
||||
1.104739294993289488947, /* 0x1.1ad031c69a2eafff0 */
|
||||
1.106899097422573863281, /* 0x1.1b5dbd3f66e120003 */
|
||||
1.109063122341542140286, /* 0x1.1beb8f8fa8150000b */
|
||||
1.111231377994659874592, /* 0x1.1c79a8dac6ad0fff4 */
|
||||
1.113403872669181282605, /* 0x1.1d0809445a97ffffc */
|
||||
1.115580614653132185460, /* 0x1.1d96b0effc9db000e */
|
||||
1.117761612217810673898, /* 0x1.1e25a001332190000 */
|
||||
1.119946873713312474002, /* 0x1.1eb4d69bdb2a9fff1 */
|
||||
1.122136407473298902480, /* 0x1.1f4454e3bfae00006 */
|
||||
1.124330221845670330058, /* 0x1.1fd41afcbb48bfff8 */
|
||||
1.126528325196519908506, /* 0x1.2064290abc98c0001 */
|
||||
1.128730725913251964394, /* 0x1.20f47f31c9aa7000f */
|
||||
1.130937432396844410880, /* 0x1.21851d95f776dfff0 */
|
||||
1.133148453059692917203, /* 0x1.2216045b6784efffa */
|
||||
1.135363796355857157764, /* 0x1.22a733a6692ae0004 */
|
||||
1.137583470716100553249, /* 0x1.2338ab9b3221a0004 */
|
||||
1.139807484614418608939, /* 0x1.23ca6c5e27aadfff7 */
|
||||
1.142035846532929888057, /* 0x1.245c7613b7f6c0004 */
|
||||
1.144268564977221958089, /* 0x1.24eec8e06b035000c */
|
||||
1.146505648458203463465, /* 0x1.258164e8cea85fff8 */
|
||||
1.148747105501412235671, /* 0x1.26144a5180d380009 */
|
||||
1.150992944689175123667, /* 0x1.26a7793f5de2efffa */
|
||||
1.153243174560058870217, /* 0x1.273af1d712179000d */
|
||||
1.155497803703682491111, /* 0x1.27ceb43d81d42fff1 */
|
||||
1.157756840726344771440, /* 0x1.2862c097a3d29000c */
|
||||
1.160020294239811677834, /* 0x1.28f7170a74cf4fff1 */
|
||||
1.162288172883275239058, /* 0x1.298bb7bb0faed0004 */
|
||||
1.164560485298402170388, /* 0x1.2a20a2ce920dffff4 */
|
||||
1.166837240167474476460, /* 0x1.2ab5d86a4631ffff6 */
|
||||
1.169118446164539637555, /* 0x1.2b4b58b36d5220009 */
|
||||
1.171404112007080167155, /* 0x1.2be123cf786790002 */
|
||||
1.173694246390975415341, /* 0x1.2c7739e3c0aac000d */
|
||||
1.175988858069749065617, /* 0x1.2d0d9b15deb58fff6 */
|
||||
1.178287955789017793514, /* 0x1.2da4478b627040002 */
|
||||
1.180591548323240091978, /* 0x1.2e3b3f69fb794fffc */
|
||||
1.182899644456603782686, /* 0x1.2ed282d76421d0004 */
|
||||
1.185212252993012693694, /* 0x1.2f6a11f96c685fff3 */
|
||||
1.187529382762033236513, /* 0x1.3001ecf60082ffffa */
|
||||
1.189851042595508889847, /* 0x1.309a13f30f28a0004 */
|
||||
1.192177241354644978669, /* 0x1.31328716a758cfff7 */
|
||||
1.194507987909589896687, /* 0x1.31cb4686e1e85fffb */
|
||||
1.196843291137896336843, /* 0x1.32645269dfd04000a */
|
||||
1.199183159977805113226, /* 0x1.32fdaae604c39000f */
|
||||
1.201527603343041317132, /* 0x1.339750219980dfff3 */
|
||||
1.203876630171082595692, /* 0x1.3431424300e480007 */
|
||||
1.206230249419600664189, /* 0x1.34cb8170b3fee000e */
|
||||
1.208588470077065268869, /* 0x1.35660dd14dbd4fffc */
|
||||
1.210951301134513435915, /* 0x1.3600e78b6bdfc0005 */
|
||||
1.213318751604272271958, /* 0x1.369c0ec5c38ebfff2 */
|
||||
1.215690830512196507537, /* 0x1.373783a718d29000f */
|
||||
1.218067546930756250870, /* 0x1.37d3465662f480007 */
|
||||
1.220448909901335365929, /* 0x1.386f56fa770fe0008 */
|
||||
1.222834928513994334780, /* 0x1.390bb5ba5fc540004 */
|
||||
1.225225611877684750397, /* 0x1.39a862bd3c7a8fff3 */
|
||||
1.227620969111500981433, /* 0x1.3a455e2a37bcafffd */
|
||||
1.230021009336254911271, /* 0x1.3ae2a8287dfbefff6 */
|
||||
1.232425741726685064472, /* 0x1.3b8040df76f39fffa */
|
||||
1.234835175450728295084, /* 0x1.3c1e287682e48fff1 */
|
||||
1.237249319699482263931, /* 0x1.3cbc5f151b86bfff8 */
|
||||
1.239668183679933477545, /* 0x1.3d5ae4e2cc0a8000f */
|
||||
1.242091776620540377629, /* 0x1.3df9ba07373bf0006 */
|
||||
1.244520107762172811399, /* 0x1.3e98deaa0d8cafffe */
|
||||
1.246953186383919165383, /* 0x1.3f3852f32973efff0 */
|
||||
1.249391019292643401078, /* 0x1.3fd816ffc72b90001 */
|
||||
1.251833623164381181797, /* 0x1.40782b17863250005 */
|
||||
1.254280999953110153911, /* 0x1.41188f42caf400000 */
|
||||
1.256733161434815393410, /* 0x1.41b943b42945bfffd */
|
||||
1.259190116985283935980, /* 0x1.425a4893e5f10000a */
|
||||
1.261651875958665236542, /* 0x1.42fb9e0a2df4c0009 */
|
||||
1.264118447754797758244, /* 0x1.439d443f608c4fff9 */
|
||||
1.266589841787181258708, /* 0x1.443f3b5bebf850008 */
|
||||
1.269066067469190262045, /* 0x1.44e183883e561fff7 */
|
||||
1.271547134259576328224, /* 0x1.45841cecf7a7a0001 */
|
||||
1.274033051628237434048, /* 0x1.462707b2c43020009 */
|
||||
1.276523829025464573684, /* 0x1.46ca44023aa410007 */
|
||||
1.279019475999373156531, /* 0x1.476dd2045d46ffff0 */
|
||||
1.281520002043128991825, /* 0x1.4811b1e1f1f19000b */
|
||||
1.284025416692967214122, /* 0x1.48b5e3c3edd74fff4 */
|
||||
1.286535729509738823464, /* 0x1.495a67d3613c8fff7 */
|
||||
1.289050950070396384145, /* 0x1.49ff3e396e19d000b */
|
||||
1.291571087985403654081, /* 0x1.4aa4671f5b401fff1 */
|
||||
1.294096152842774794011, /* 0x1.4b49e2ae56d19000d */
|
||||
1.296626154297237043484, /* 0x1.4befb10fd84a3fff4 */
|
||||
1.299161101984141142272, /* 0x1.4c95d26d41d84fff8 */
|
||||
1.301701005575179204100, /* 0x1.4d3c46f01d9f0fff3 */
|
||||
1.304245874766450485904, /* 0x1.4de30ec21097d0003 */
|
||||
1.306795719266019562007, /* 0x1.4e8a2a0ccce3d0002 */
|
||||
1.309350548792467483458, /* 0x1.4f3198fa10346fff5 */
|
||||
1.311910373099227200545, /* 0x1.4fd95bb3be8cffffd */
|
||||
1.314475201942565174546, /* 0x1.50817263bf0e5fffb */
|
||||
1.317045045107389400535, /* 0x1.5129dd3418575000e */
|
||||
1.319619912422941299109, /* 0x1.51d29c4f01c54ffff */
|
||||
1.322199813675649204855, /* 0x1.527bafde83a310009 */
|
||||
1.324784758729532718739, /* 0x1.5325180cfb8b3fffd */
|
||||
1.327374757430096474625, /* 0x1.53ced504b2bd0fff4 */
|
||||
1.329969819671041886272, /* 0x1.5478e6f02775e0001 */
|
||||
1.332569955346704748651, /* 0x1.55234df9d8a59fff8 */
|
||||
1.335175174370685002822, /* 0x1.55ce0a4c5a6a9fff6 */
|
||||
1.337785486688218616860, /* 0x1.56791c1263abefff7 */
|
||||
1.340400902247843806217, /* 0x1.57248376aef21fffa */
|
||||
1.343021431036279800211, /* 0x1.57d040a420c0bfff3 */
|
||||
1.345647083048053138662, /* 0x1.587c53c5a630f0002 */
|
||||
1.348277868295411074918, /* 0x1.5928bd063fd7bfff9 */
|
||||
1.350913796821875845231, /* 0x1.59d57c9110ad60006 */
|
||||
1.353554878672557082439, /* 0x1.5a8292913d68cfffc */
|
||||
1.356201123929036356254, /* 0x1.5b2fff3212db00007 */
|
||||
1.358852542671913132777, /* 0x1.5bddc29edcc06fff3 */
|
||||
1.361509145047255398051, /* 0x1.5c8bdd032ed16000f */
|
||||
1.364170941142184734180, /* 0x1.5d3a4e8a5bf61fff4 */
|
||||
1.366837941171020309735, /* 0x1.5de9176042f1effff */
|
||||
1.369510155261156381121, /* 0x1.5e9837b062f4e0005 */
|
||||
1.372187593620959988833, /* 0x1.5f47afa69436cfff1 */
|
||||
1.374870266463378287715, /* 0x1.5ff77f6eb3f8cfffd */
|
||||
1.377558184010425845733, /* 0x1.60a7a734a9742fff9 */
|
||||
1.380251356531521533853, /* 0x1.6158272490016000c */
|
||||
1.382949794301995272203, /* 0x1.6208ff6a8978a000f */
|
||||
1.385653507605306700170, /* 0x1.62ba3032c0a280004 */
|
||||
1.388362506772382154503, /* 0x1.636bb9a994784000f */
|
||||
1.391076802081129493127, /* 0x1.641d9bfb29a7bfff6 */
|
||||
1.393796403973427855412, /* 0x1.64cfd7545928b0002 */
|
||||
1.396521322756352656542, /* 0x1.65826be167badfff8 */
|
||||
1.399251568859207761660, /* 0x1.663559cf20826000c */
|
||||
1.401987152677323100733, /* 0x1.66e8a14a29486fffc */
|
||||
1.404728084651919228815, /* 0x1.679c427f5a4b6000b */
|
||||
1.407474375243217723560, /* 0x1.68503d9ba0add000f */
|
||||
1.410226034922914983815, /* 0x1.690492cbf6303fff9 */
|
||||
1.412983074197955213304, /* 0x1.69b9423d7b548fff6 */
|
||||
};
|
585
libgcc-math/dbl-64/t_exp2.h
Normal file
585
libgcc-math/dbl-64/t_exp2.h
Normal file
|
@ -0,0 +1,585 @@
|
|||
/* These values are accurate to 52+12 bits when represented as
|
||||
a double. */
|
||||
static const double exp2_accuratetable[512] = {
|
||||
0.707106781187802013759 /* 0x0.b504f333fb3f80007 */,
|
||||
0.708064712808760599040 /* 0x0.b543baa0f71b38000 */,
|
||||
0.709023942160304065938 /* 0x0.b58297d3a8d518002 */,
|
||||
0.709984470998547667624 /* 0x0.b5c18ad39b4ba0001 */,
|
||||
0.710946301084324217006 /* 0x0.b60093a85e8d30001 */,
|
||||
0.711909434180505784637 /* 0x0.b63fb25984e628005 */,
|
||||
0.712873872052760648733 /* 0x0.b67ee6eea3b5f8003 */,
|
||||
0.713839616467838999908 /* 0x0.b6be316f518c98001 */,
|
||||
0.714806669195984345523 /* 0x0.b6fd91e328d148007 */,
|
||||
0.715775032009894562898 /* 0x0.b73d0851c69e20002 */,
|
||||
0.716744706683768884058 /* 0x0.b77c94c2c9b3d0003 */,
|
||||
0.717715694995770148178 /* 0x0.b7bc373dd52eb0003 */,
|
||||
0.718687998724665488852 /* 0x0.b7fbefca8cd530004 */,
|
||||
0.719661619652575468291 /* 0x0.b83bbe70981da8001 */,
|
||||
0.720636559564428180758 /* 0x0.b87ba337a194b0006 */,
|
||||
0.721612820246623098989 /* 0x0.b8bb9e27556508004 */,
|
||||
0.722590403488338473025 /* 0x0.b8fbaf4762c798006 */,
|
||||
0.723569311081411870036 /* 0x0.b93bd69f7be1d0000 */,
|
||||
0.724549544820974333906 /* 0x0.b97c1437567828007 */,
|
||||
0.725531106502312561633 /* 0x0.b9bc6816a87ae8002 */,
|
||||
0.726513997924421062181 /* 0x0.b9fcd2452bee00000 */,
|
||||
0.727498220889519875430 /* 0x0.ba3d52ca9e6148002 */,
|
||||
0.728483777200401694265 /* 0x0.ba7de9aebe05c8003 */,
|
||||
0.729470668664712662563 /* 0x0.babe96f94e62a8002 */,
|
||||
0.730458897090379144517 /* 0x0.baff5ab2134df0004 */,
|
||||
0.731448464287988597833 /* 0x0.bb4034e0d38ab0000 */,
|
||||
0.732439372072965166897 /* 0x0.bb81258d5b2d60001 */,
|
||||
0.733431622260458326859 /* 0x0.bbc22cbf75fd28001 */,
|
||||
0.734425216668725511232 /* 0x0.bc034a7ef32c00001 */,
|
||||
0.735420157118880535324 /* 0x0.bc447ed3a50fe0005 */,
|
||||
0.736416445434497690674 /* 0x0.bc85c9c560b350001 */,
|
||||
0.737414083433310718618 /* 0x0.bcc72b5bf4b4e0000 */,
|
||||
0.738413072966152328496 /* 0x0.bd08a39f5417a8007 */,
|
||||
0.739413415848264365956 /* 0x0.bd4a32974abcd0002 */,
|
||||
0.740415113911250699637 /* 0x0.bd8bd84bb68300002 */,
|
||||
0.741418168994518067562 /* 0x0.bdcd94c47ddd30003 */,
|
||||
0.742422582936659858376 /* 0x0.be0f6809865968006 */,
|
||||
0.743428357577745613238 /* 0x0.be515222b72530003 */,
|
||||
0.744435494762383687126 /* 0x0.be935317fc6ba0002 */,
|
||||
0.745443996335090397492 /* 0x0.bed56af1423de8001 */,
|
||||
0.746453864145572798553 /* 0x0.bf1799b67a6248007 */,
|
||||
0.747465100043933849969 /* 0x0.bf59df6f970e70002 */,
|
||||
0.748477705883256683178 /* 0x0.bf9c3c248dbee8001 */,
|
||||
0.749491683518965001732 /* 0x0.bfdeafdd568308000 */,
|
||||
0.750507034813367890373 /* 0x0.c0213aa1f0fc38004 */,
|
||||
0.751523761622240105153 /* 0x0.c063dc7a559ca0003 */,
|
||||
0.752541865811731880422 /* 0x0.c0a6956e883ed8000 */,
|
||||
0.753561349247157341600 /* 0x0.c0e965868bd220006 */,
|
||||
0.754582213796583967110 /* 0x0.c12c4cca664cb8002 */,
|
||||
0.755604461332336940791 /* 0x0.c16f4b42225350006 */,
|
||||
0.756628093726406381068 /* 0x0.c1b260f5ca2c48002 */,
|
||||
0.757653112855631305506 /* 0x0.c1f58ded6d72d8001 */,
|
||||
0.758679520599333412360 /* 0x0.c238d2311e7d08001 */,
|
||||
0.759707318837184453227 /* 0x0.c27c2dc8f00368005 */,
|
||||
0.760736509456435783249 /* 0x0.c2bfa0bcfd1400000 */,
|
||||
0.761767094336480043995 /* 0x0.c3032b155818d0000 */,
|
||||
0.762799075372231349951 /* 0x0.c346ccda248cc0001 */,
|
||||
0.763832454453522768941 /* 0x0.c38a8613805488005 */,
|
||||
0.764867233473625618441 /* 0x0.c3ce56c98d1ca8005 */,
|
||||
0.765903414329434539816 /* 0x0.c4123f04708d80002 */,
|
||||
0.766940998920452976510 /* 0x0.c4563ecc532dc0001 */,
|
||||
0.767979989148100838946 /* 0x0.c49a56295f9f88006 */,
|
||||
0.769020386915772125040 /* 0x0.c4de8523c2b0a0001 */,
|
||||
0.770062194131770905170 /* 0x0.c522cbc3ae94e0003 */,
|
||||
0.771105412703856241146 /* 0x0.c5672a1154e6b8004 */,
|
||||
0.772150044545352520777 /* 0x0.c5aba014ed5f18003 */,
|
||||
0.773196091570364285606 /* 0x0.c5f02dd6b09288003 */,
|
||||
0.774243555696622731700 /* 0x0.c634d35edb1260003 */,
|
||||
0.775292438842697939641 /* 0x0.c67990b5aa5c18004 */,
|
||||
0.776342742931542928455 /* 0x0.c6be65e360bed8000 */,
|
||||
0.777394469888802008854 /* 0x0.c70352f0437f50004 */,
|
||||
0.778447621641124243320 /* 0x0.c74857e498fd00006 */,
|
||||
0.779502200118583399303 /* 0x0.c78d74c8ab5b60000 */,
|
||||
0.780558207255445668515 /* 0x0.c7d2a9a4c959f8000 */,
|
||||
0.781615644985491186966 /* 0x0.c817f681412f80002 */,
|
||||
0.782674515247667956808 /* 0x0.c85d5b6666c150006 */,
|
||||
0.783734819983036512536 /* 0x0.c8a2d85c904760003 */,
|
||||
0.784796561133562109454 /* 0x0.c8e86d6c14f850002 */,
|
||||
0.785859740645942328471 /* 0x0.c92e1a9d513ec8002 */,
|
||||
0.786924360469767103536 /* 0x0.c973dff8a4b390007 */,
|
||||
0.787990422552312885808 /* 0x0.c9b9bd866c6440007 */,
|
||||
0.789057928854407064640 /* 0x0.c9ffb34f1444b0001 */,
|
||||
0.790126881326406182996 /* 0x0.ca45c15afcc570001 */,
|
||||
0.791197281930050233534 /* 0x0.ca8be7b292db38000 */,
|
||||
0.792269132620954885659 /* 0x0.cad2265e3cbee8000 */,
|
||||
0.793342435380726906957 /* 0x0.cb187d667d3d38006 */,
|
||||
0.794417192158282659010 /* 0x0.cb5eecd3b33158006 */,
|
||||
0.795493404931386649540 /* 0x0.cba574ae5d2e80001 */,
|
||||
0.796571075671306805268 /* 0x0.cbec14fef2a348004 */,
|
||||
0.797650206352955137846 /* 0x0.cc32cdcdef0000000 */,
|
||||
0.798730798954342069432 /* 0x0.cc799f23d11d18000 */,
|
||||
0.799812855456121796232 /* 0x0.ccc089091abb28004 */,
|
||||
0.800896377841454287795 /* 0x0.cd078b86505c18003 */,
|
||||
0.801981368096190028208 /* 0x0.cd4ea6a3f97720007 */,
|
||||
0.803067828208752554378 /* 0x0.cd95da6aa057b8007 */,
|
||||
0.804155760170129796375 /* 0x0.cddd26e2d21b28001 */,
|
||||
0.805245165974338261710 /* 0x0.ce248c151f3330001 */,
|
||||
0.806336047619038653883 /* 0x0.ce6c0a0a1c1350001 */,
|
||||
0.807428407102107836855 /* 0x0.ceb3a0ca5d6be0006 */,
|
||||
0.808522246427078927792 /* 0x0.cefb505e7e2550007 */,
|
||||
0.809617567597010201484 /* 0x0.cf4318cf18a268002 */,
|
||||
0.810714372621179513182 /* 0x0.cf8afa24ce1c98004 */,
|
||||
0.811812663508675536069 /* 0x0.cfd2f4683f9810005 */,
|
||||
0.812912442272482604912 /* 0x0.d01b07a2126188003 */,
|
||||
0.814013710929394895825 /* 0x0.d06333daeff618001 */,
|
||||
0.815116471495287542325 /* 0x0.d0ab791b80d028006 */,
|
||||
0.816220725993571205593 /* 0x0.d0f3d76c75b330000 */,
|
||||
0.817326476447408967199 /* 0x0.d13c4ed67f1cf8000 */,
|
||||
0.818433724883006474832 /* 0x0.d184df6250e3b0001 */,
|
||||
0.819542473330909460055 /* 0x0.d1cd8918a3a328004 */,
|
||||
0.820652723822034690935 /* 0x0.d2164c02305fa0002 */,
|
||||
0.821764478391968422618 /* 0x0.d25f2827b53fb0005 */,
|
||||
0.822877739077315761840 /* 0x0.d2a81d91f188b8000 */,
|
||||
0.823992507918612782109 /* 0x0.d2f12c49a8d290005 */,
|
||||
0.825108786960634610365 /* 0x0.d33a5457a35e40003 */,
|
||||
0.826226578247117093869 /* 0x0.d38395c4a84848007 */,
|
||||
0.827345883828319528258 /* 0x0.d3ccf09985d958004 */,
|
||||
0.828466705754248966560 /* 0x0.d41664df0a1320005 */,
|
||||
0.829589046080638992111 /* 0x0.d45ff29e094330000 */,
|
||||
0.830712906863802391671 /* 0x0.d4a999df585a20005 */,
|
||||
0.831838290163696481037 /* 0x0.d4f35aabd04a60006 */,
|
||||
0.832965198041969556729 /* 0x0.d53d350c4be258002 */,
|
||||
0.834093632565442222342 /* 0x0.d5872909aba050007 */,
|
||||
0.835223595802037643865 /* 0x0.d5d136acd138e8006 */,
|
||||
0.836355089820669306292 /* 0x0.d61b5dfe9f7780004 */,
|
||||
0.837488116698010487424 /* 0x0.d6659f0801afa8005 */,
|
||||
0.838622678508982644113 /* 0x0.d6aff9d1e147d8004 */,
|
||||
0.839758777333464490056 /* 0x0.d6fa6e652d19e0000 */,
|
||||
0.840896415254110962690 /* 0x0.d744fccad70d00003 */,
|
||||
0.842035594355151628676 /* 0x0.d78fa50bd2c3b0000 */,
|
||||
0.843176316724478125433 /* 0x0.d7da673117e730007 */,
|
||||
0.844318584453106590905 /* 0x0.d8254343a19038003 */,
|
||||
0.845462399634695271912 /* 0x0.d870394c6dbf30003 */,
|
||||
0.846607764365415071965 /* 0x0.d8bb49547d37c0004 */,
|
||||
0.847754680744707056494 /* 0x0.d9067364d45608003 */,
|
||||
0.848903150873708822763 /* 0x0.d951b7867953b0006 */,
|
||||
0.850053176859071113491 /* 0x0.d99d15c2787a30006 */,
|
||||
0.851204760807439786431 /* 0x0.d9e88e21de11a0003 */,
|
||||
0.852357904828824897169 /* 0x0.da3420adba1508003 */,
|
||||
0.853512611037803181642 /* 0x0.da7fcd6f2184d8005 */,
|
||||
0.854668881550406100980 /* 0x0.dacb946f2afaf8000 */,
|
||||
0.855826718478671755185 /* 0x0.db1775b6e8ad48000 */,
|
||||
0.856986123964844970247 /* 0x0.db63714f8e0818006 */,
|
||||
0.858147100114499461478 /* 0x0.dbaf87422625b8000 */,
|
||||
0.859309649060962410524 /* 0x0.dbfbb797daa460002 */,
|
||||
0.860473772936213743282 /* 0x0.dc480259d3a710001 */,
|
||||
0.861639473872910177676 /* 0x0.dc9467913a0f48006 */,
|
||||
0.862806754008130227807 /* 0x0.dce0e7473b9b28003 */,
|
||||
0.863975615481124226159 /* 0x0.dd2d8185086c20006 */,
|
||||
0.865146060433749419813 /* 0x0.dd7a3653d38168005 */,
|
||||
0.866318091005120138881 /* 0x0.ddc705bcccd628000 */,
|
||||
0.867491709362415264210 /* 0x0.de13efc9434100004 */,
|
||||
0.868666917636779056818 /* 0x0.de60f4825df9b8005 */,
|
||||
0.869843717989716047624 /* 0x0.deae13f16599c0003 */,
|
||||
0.871022112578215268471 /* 0x0.defb4e1f9dc388002 */,
|
||||
0.872202103559697183859 /* 0x0.df48a3164a92f0001 */,
|
||||
0.873383693097737778847 /* 0x0.df9612deb6e878007 */,
|
||||
0.874566883362160263365 /* 0x0.dfe39d82348310001 */,
|
||||
0.875751676517234511901 /* 0x0.e031430a0f0688000 */,
|
||||
0.876938074732511840819 /* 0x0.e07f037f97e548001 */,
|
||||
0.878126080186539592654 /* 0x0.e0ccdeec2a75e0006 */,
|
||||
0.879315695055312818168 /* 0x0.e11ad5591f4078001 */,
|
||||
0.880506921518618312932 /* 0x0.e168e6cfd2f880004 */,
|
||||
0.881699761760385225541 /* 0x0.e1b71359a6df60003 */,
|
||||
0.882894217964411143207 /* 0x0.e2055afffc1178000 */,
|
||||
0.884090292325693805080 /* 0x0.e253bdcc3ffbb8001 */,
|
||||
0.885287987031581180559 /* 0x0.e2a23bc7d7a1d8002 */,
|
||||
0.886487304278189114386 /* 0x0.e2f0d4fc31ab80004 */,
|
||||
0.887688246263368285778 /* 0x0.e33f8972bea8a8005 */,
|
||||
0.888890815189881999840 /* 0x0.e38e5934f49010007 */,
|
||||
0.890095013257492739835 /* 0x0.e3dd444c460bd0007 */,
|
||||
0.891300842677948068626 /* 0x0.e42c4ac232f380000 */,
|
||||
0.892508305659222567226 /* 0x0.e47b6ca036f8b8005 */,
|
||||
0.893717404414979710310 /* 0x0.e4caa9efd40e58002 */,
|
||||
0.894928141160697743242 /* 0x0.e51a02ba8e2610007 */,
|
||||
0.896140518115016826430 /* 0x0.e5697709ecab90000 */,
|
||||
0.897354537501434679237 /* 0x0.e5b906e77c61d0006 */,
|
||||
0.898570201543732793877 /* 0x0.e608b25cca5ba8005 */,
|
||||
0.899787512470129891014 /* 0x0.e6587973688ce8002 */,
|
||||
0.901006472512270728537 /* 0x0.e6a85c34ecadb8000 */,
|
||||
0.902227083902570559127 /* 0x0.e6f85aaaed4f20006 */,
|
||||
0.903449348881299796343 /* 0x0.e74874df09a530003 */,
|
||||
0.904673269686823378091 /* 0x0.e798aadadecba0007 */,
|
||||
0.905898848559668845585 /* 0x0.e7e8fca80c3ee0001 */,
|
||||
0.907126087750156795426 /* 0x0.e8396a503c3fe0005 */,
|
||||
0.908354989505901100354 /* 0x0.e889f3dd1615b0002 */,
|
||||
0.909585556079328783087 /* 0x0.e8da9958465228007 */,
|
||||
0.910817789726044213523 /* 0x0.e92b5acb7d0578001 */,
|
||||
0.912051692703457872481 /* 0x0.e97c38406c3c30003 */,
|
||||
0.913287267274154990210 /* 0x0.e9cd31c0cbb370001 */,
|
||||
0.914524515702244578108 /* 0x0.ea1e475654d540000 */,
|
||||
0.915763440256158633982 /* 0x0.ea6f790ac5cc78001 */,
|
||||
0.917004043205012497909 /* 0x0.eac0c6e7dd8448007 */,
|
||||
0.918246326823137892807 /* 0x0.eb1230f760a428007 */,
|
||||
0.919490293387826285200 /* 0x0.eb63b7431714a8007 */,
|
||||
0.920735945178816406225 /* 0x0.ebb559d4cb6f30007 */,
|
||||
0.921983284479243714322 /* 0x0.ec0718b64c0940002 */,
|
||||
0.923232313574974705626 /* 0x0.ec58f3f16a3910002 */,
|
||||
0.924483034755387955725 /* 0x0.ecaaeb8ffb3168005 */,
|
||||
0.925735450311948926408 /* 0x0.ecfcff9bd67078000 */,
|
||||
0.926989562542820610982 /* 0x0.ed4f301edad1a0007 */,
|
||||
0.928245373740515189457 /* 0x0.eda17d22e0f9b0001 */,
|
||||
0.929502886213858126045 /* 0x0.edf3e6b1d37d40001 */,
|
||||
0.930762102264245716494 /* 0x0.ee466cd594c5c8005 */,
|
||||
0.932023024199046146183 /* 0x0.ee990f980dcdb0005 */,
|
||||
0.933285654329454095216 /* 0x0.eeebcf032bc470007 */,
|
||||
0.934549994971191289044 /* 0x0.ef3eab20e0d3c0001 */,
|
||||
0.935816048439005676599 /* 0x0.ef91a3fb1e1340004 */,
|
||||
0.937083817055075818404 /* 0x0.efe4b99bdcc618006 */,
|
||||
0.938353303143720007819 /* 0x0.f037ec0d1889b8000 */,
|
||||
0.939624509028518128972 /* 0x0.f08b3b58cc2bb8006 */,
|
||||
0.940897437041863904384 /* 0x0.f0dea788fc2a90000 */,
|
||||
0.942172089516254085427 /* 0x0.f13230a7ad21b8003 */,
|
||||
0.943448468787511540534 /* 0x0.f185d6bee754e0006 */,
|
||||
0.944726577195256100890 /* 0x0.f1d999d8b73478005 */,
|
||||
0.946006417082291717338 /* 0x0.f22d79ff2cb130000 */,
|
||||
0.947287990793413858827 /* 0x0.f281773c59ec48007 */,
|
||||
0.948571300678290207925 /* 0x0.f2d5919a566268001 */,
|
||||
0.949856349088629370320 /* 0x0.f329c9233bceb0001 */,
|
||||
0.951143138379053731954 /* 0x0.f37e1de1272068002 */,
|
||||
0.952431670908847949364 /* 0x0.f3d28fde3a6728006 */,
|
||||
0.953721949039916472305 /* 0x0.f4271f249a93f0001 */,
|
||||
0.955013975135367898520 /* 0x0.f47bcbbe6deab0001 */,
|
||||
0.956307751564417496418 /* 0x0.f4d095b5e16638004 */,
|
||||
0.957603280698967163097 /* 0x0.f5257d1524f590006 */,
|
||||
0.958900564911197350604 /* 0x0.f57a81e668d628000 */,
|
||||
0.960199606581278120057 /* 0x0.f5cfa433e60e50007 */,
|
||||
0.961500408088936442422 /* 0x0.f624e407d527a0007 */,
|
||||
0.962802971817578789903 /* 0x0.f67a416c72b760006 */,
|
||||
0.964107300155846558292 /* 0x0.f6cfbc6c011458004 */,
|
||||
0.965413395493874504368 /* 0x0.f7255510c439a8002 */,
|
||||
0.966721260225105960572 /* 0x0.f77b0b6503c5b8006 */,
|
||||
0.968030896745834645873 /* 0x0.f7d0df730a7940005 */,
|
||||
0.969342307458006424716 /* 0x0.f826d145294be8003 */,
|
||||
0.970655494764855020231 /* 0x0.f87ce0e5b29fd8000 */,
|
||||
0.971970461071268720958 /* 0x0.f8d30e5efaa8f0004 */,
|
||||
0.973287208789983648852 /* 0x0.f92959bb5e3c08001 */,
|
||||
0.974605740331924708124 /* 0x0.f97fc305383028004 */,
|
||||
0.975926058115625383329 /* 0x0.f9d64a46ebb9f8004 */,
|
||||
0.977248164559556209435 /* 0x0.fa2cef8adbfc68004 */,
|
||||
0.978572062087848637573 /* 0x0.fa83b2db7253d0007 */,
|
||||
0.979897753126343307191 /* 0x0.fada944319fda0005 */,
|
||||
0.981225240104636631254 /* 0x0.fb3193cc425870002 */,
|
||||
0.982554525455618277276 /* 0x0.fb88b1815e61d0003 */,
|
||||
0.983885611617111077747 /* 0x0.fbdfed6ce683e0007 */,
|
||||
0.985218501026348891812 /* 0x0.fc3747995282f8006 */,
|
||||
0.986553196127724962867 /* 0x0.fc8ec0112202a0005 */,
|
||||
0.987889699367056062238 /* 0x0.fce656ded63710002 */,
|
||||
0.989228013193998778636 /* 0x0.fd3e0c0cf48d50005 */,
|
||||
0.990568140061241164686 /* 0x0.fd95dfa605c7b0003 */,
|
||||
0.991910082424819927754 /* 0x0.fdedd1b4965710004 */,
|
||||
0.993253842749249660216 /* 0x0.fe45e2433bfea0000 */,
|
||||
0.994599423484053835071 /* 0x0.fe9e115c7c05f0005 */,
|
||||
0.995946827107488830167 /* 0x0.fef65f0afb4c28006 */,
|
||||
0.997296056085008264529 /* 0x0.ff4ecb59509cc8001 */,
|
||||
0.998647112892057764479 /* 0x0.ffa756521dbfd0007 */,
|
||||
1.000000000000000000000 /* 0x1.00000000000000000 */,
|
||||
1.001354719891689004659 /* 0x1.0058c86da14aa0005 */,
|
||||
1.002711275050312211844 /* 0x1.00b1afa5abead0003 */,
|
||||
1.004069667960743483835 /* 0x1.010ab5b2cc0660009 */,
|
||||
1.005429901112333324093 /* 0x1.0163da9fb2af30008 */,
|
||||
1.006791976999887428009 /* 0x1.01bd1e7716f6a0008 */,
|
||||
1.008155898118476168101 /* 0x1.02168143b03890006 */,
|
||||
1.009521666967782227439 /* 0x1.027003103ae320002 */,
|
||||
1.010889286051850133326 /* 0x1.02c9a3e7783030002 */,
|
||||
1.012258757875921233497 /* 0x1.032363d42aaa8000e */,
|
||||
1.013630084952214405194 /* 0x1.037d42e11c88d0000 */,
|
||||
1.015003269791313389451 /* 0x1.03d741191635a0001 */,
|
||||
1.016378314911229763267 /* 0x1.04315e86e84630008 */,
|
||||
1.017755222831652872635 /* 0x1.048b9b35652800002 */,
|
||||
1.019133996077934645224 /* 0x1.04e5f72f65827000b */,
|
||||
1.020514637175266248212 /* 0x1.0540727fc1cfa0006 */,
|
||||
1.021897148653734488385 /* 0x1.059b0d3157ebb0002 */,
|
||||
1.023281533050062419584 /* 0x1.05f5c74f0cfeb0002 */,
|
||||
1.024667792897328677539 /* 0x1.0650a0e3c22ee0003 */,
|
||||
1.026055930738840826806 /* 0x1.06ab99fa63e1b0008 */,
|
||||
1.027445949118511947550 /* 0x1.0706b29ddf2700009 */,
|
||||
1.028837850584049418178 /* 0x1.0761ead9253ab0009 */,
|
||||
1.030231637685799839262 /* 0x1.07bd42b72a3f80008 */,
|
||||
1.031627312979383592802 /* 0x1.0818ba42e824a000c */,
|
||||
1.033024879021186448496 /* 0x1.0874518759b0b0008 */,
|
||||
1.034424338374263729911 /* 0x1.08d0088f80ffa0006 */,
|
||||
1.035825693601787333992 /* 0x1.092bdf66604e30005 */,
|
||||
1.037228947273990842283 /* 0x1.0987d617019cd000a */,
|
||||
1.038634101961269928846 /* 0x1.09e3ecac6f199000f */,
|
||||
1.040041160239590700707 /* 0x1.0a402331b91270002 */,
|
||||
1.041450124688240164200 /* 0x1.0a9c79b1f37c3000b */,
|
||||
1.042860997889083929381 /* 0x1.0af8f038352160000 */,
|
||||
1.044273782427270314011 /* 0x1.0b5586cf986890006 */,
|
||||
1.045688480893644856116 /* 0x1.0bb23d833dfbf0006 */,
|
||||
1.047105095879385272564 /* 0x1.0c0f145e46e330007 */,
|
||||
1.048523629981608529302 /* 0x1.0c6c0b6bdaadc000f */,
|
||||
1.049944085800634585634 /* 0x1.0cc922b72470a000f */,
|
||||
1.051366465939483019223 /* 0x1.0d265a4b5238b0007 */,
|
||||
1.052790773004648849929 /* 0x1.0d83b23395e510002 */,
|
||||
1.054217009607077093512 /* 0x1.0de12a7b263970006 */,
|
||||
1.055645178360430591625 /* 0x1.0e3ec32d3cf680000 */,
|
||||
1.057075281882416506511 /* 0x1.0e9c7c55184f5000e */,
|
||||
1.058507322794714378170 /* 0x1.0efa55fdfad51000a */,
|
||||
1.059941303721639416236 /* 0x1.0f58503329fed0003 */,
|
||||
1.061377227289284297385 /* 0x1.0fb66affed37f0000 */,
|
||||
1.062815096132297298980 /* 0x1.1014a66f95540000c */,
|
||||
1.064254912884593951029 /* 0x1.1073028d725850007 */,
|
||||
1.065696680185205469411 /* 0x1.10d17f64d9ea2000b */,
|
||||
1.067140400676658718053 /* 0x1.11301d012586a0007 */,
|
||||
1.068586077004890055886 /* 0x1.118edb6db26ab0003 */,
|
||||
1.070033711820396415998 /* 0x1.11edbab5e2d6e000b */,
|
||||
1.071483307775789262099 /* 0x1.124cbae51b5ef0001 */,
|
||||
1.072934867526001312439 /* 0x1.12abdc06c3240000c */,
|
||||
1.074388393734249103080 /* 0x1.130b1e264a62e0005 */,
|
||||
1.075843889063253344684 /* 0x1.136a814f20ccd0003 */,
|
||||
1.077301356179926061823 /* 0x1.13ca058cbaaed000b */,
|
||||
1.078760797756675327056 /* 0x1.1429aaea9260e000e */,
|
||||
1.080222216468626150775 /* 0x1.148971742537c0009 */,
|
||||
1.081685614993597610617 /* 0x1.14e95934f37e8000b */,
|
||||
1.083150996013011013776 /* 0x1.1549623881762000d */,
|
||||
1.084618362213087383633 /* 0x1.15a98c8a58a6a000b */,
|
||||
1.086087716284427351384 /* 0x1.1609d8360768c0008 */,
|
||||
1.087559060917626885283 /* 0x1.166a45471c13f0008 */,
|
||||
1.089032398810997337465 /* 0x1.16cad3c92d7b50009 */,
|
||||
1.090507732647478578212 /* 0x1.172b83c7c18b5000f */,
|
||||
1.091985065182095926460 /* 0x1.178c554ead72a000c */,
|
||||
1.093464399073070136880 /* 0x1.17ed48695befe000c */,
|
||||
1.094945737045367906172 /* 0x1.184e5d23812500007 */,
|
||||
1.096429081816546080591 /* 0x1.18af9388c90e40005 */,
|
||||
1.097914436104650892651 /* 0x1.1910eba4e031a0001 */,
|
||||
1.099401802629782043408 /* 0x1.19726583755720003 */,
|
||||
1.100891184121537858001 /* 0x1.19d4013041b860007 */,
|
||||
1.102382583308144647940 /* 0x1.1a35beb6fd0cd0007 */,
|
||||
1.103876002922312915544 /* 0x1.1a979e2363fa10000 */,
|
||||
1.105371445702084232160 /* 0x1.1af99f8139025000e */,
|
||||
1.106868914387219016199 /* 0x1.1b5bc2dc408b9000e */,
|
||||
1.108368411723785085252 /* 0x1.1bbe084045eb30002 */,
|
||||
1.109869940458469095340 /* 0x1.1c206fb91524c000e */,
|
||||
1.111373503344554869449 /* 0x1.1c82f952817cc0001 */,
|
||||
1.112879103137133007859 /* 0x1.1ce5a51860344000f */,
|
||||
1.114386742595953938610 /* 0x1.1d4873168babf000e */,
|
||||
1.115896424484008608911 /* 0x1.1dab6358e1d4a000f */,
|
||||
1.117408151567338414664 /* 0x1.1e0e75eb43f9c000c */,
|
||||
1.118921926613465345265 /* 0x1.1e71aad995078000f */,
|
||||
1.120437752409564780022 /* 0x1.1ed5022fcd8600003 */,
|
||||
1.121955631720569668277 /* 0x1.1f387bf9cd88b0000 */,
|
||||
1.123475567332998359439 /* 0x1.1f9c18438cdec000a */,
|
||||
1.124997562033035469759 /* 0x1.1fffd71902f970002 */,
|
||||
1.126521618608448571713 /* 0x1.2063b88629079000e */,
|
||||
1.128047739853580200284 /* 0x1.20c7bc96ff72a0002 */,
|
||||
1.129575928566289189112 /* 0x1.212be3578a81e0006 */,
|
||||
1.131106187546149888259 /* 0x1.21902cd3d05f70007 */,
|
||||
1.132638519598779369743 /* 0x1.21f49917ddda5000c */,
|
||||
1.134172927531616359481 /* 0x1.2259282fc1c24000e */,
|
||||
1.135709414157753949251 /* 0x1.22bdda27911e90007 */,
|
||||
1.137247982292643566662 /* 0x1.2322af0b638e60007 */,
|
||||
1.138788634756517259562 /* 0x1.2387a6e755f270000 */,
|
||||
1.140331374372893558110 /* 0x1.23ecc1c788c890006 */,
|
||||
1.141876203969685699176 /* 0x1.2451ffb821639000c */,
|
||||
1.143423126377846266197 /* 0x1.24b760c5486dc0009 */,
|
||||
1.144972144431494420774 /* 0x1.251ce4fb2a0cc0005 */,
|
||||
1.146523260971646252006 /* 0x1.25828c65f9fb8000d */,
|
||||
1.148076478839068270690 /* 0x1.25e85711ebaeb0000 */,
|
||||
1.149631800883562204903 /* 0x1.264e450b3c8a30008 */,
|
||||
1.151189229953253789786 /* 0x1.26b4565e281a20003 */,
|
||||
1.152748768902654319399 /* 0x1.271a8b16f0f000002 */,
|
||||
1.154310420590433317050 /* 0x1.2780e341de2fc0001 */,
|
||||
1.155874187878668246681 /* 0x1.27e75eeb3abc90007 */,
|
||||
1.157440073633736243899 /* 0x1.284dfe1f5633e000a */,
|
||||
1.159008080725518974322 /* 0x1.28b4c0ea840d90001 */,
|
||||
1.160578212048386514965 /* 0x1.291ba75932ae60000 */,
|
||||
1.162150470417516290340 /* 0x1.2982b177796850008 */,
|
||||
1.163724858777502646494 /* 0x1.29e9df51fdd900001 */,
|
||||
1.165301379991388053320 /* 0x1.2a5130f50bf34000e */,
|
||||
1.166880036952526289469 /* 0x1.2ab8a66d10fdc0008 */,
|
||||
1.168460832550151540268 /* 0x1.2b203fc675b7a000a */,
|
||||
1.170043769683112966389 /* 0x1.2b87fd0dad7260008 */,
|
||||
1.171628851252754177681 /* 0x1.2befde4f2e3da000d */,
|
||||
1.173216080163546060084 /* 0x1.2c57e397719940002 */,
|
||||
1.174805459325657830448 /* 0x1.2cc00cf2f7491000c */,
|
||||
1.176396991650083379037 /* 0x1.2d285a6e3ff90000b */,
|
||||
1.177990680055698513602 /* 0x1.2d90cc15d4ff90005 */,
|
||||
1.179586527463262646306 /* 0x1.2df961f641c57000c */,
|
||||
1.181184536796979545103 /* 0x1.2e621c1c157cd000d */,
|
||||
1.182784710984701836994 /* 0x1.2ecafa93e35af0004 */,
|
||||
1.184387052960675701386 /* 0x1.2f33fd6a459cb0000 */,
|
||||
1.185991565661414393112 /* 0x1.2f9d24abd8fd1000e */,
|
||||
1.187598252026902612178 /* 0x1.300670653e083000a */,
|
||||
1.189207115003001469262 /* 0x1.306fe0a31bc040008 */,
|
||||
1.190818157535919796833 /* 0x1.30d9757219895000e */,
|
||||
1.192431382587621380206 /* 0x1.31432edef01a1000f */,
|
||||
1.194046793097208292195 /* 0x1.31ad0cf63f0630008 */,
|
||||
1.195664392040319823392 /* 0x1.32170fc4ce0db000c */,
|
||||
1.197284182375793593084 /* 0x1.32813757527750005 */,
|
||||
1.198906167074650808198 /* 0x1.32eb83ba8eef3000f */,
|
||||
1.200530349107333139048 /* 0x1.3355f4fb457e5000d */,
|
||||
1.202156731453099647353 /* 0x1.33c08b2641df9000c */,
|
||||
1.203785317090505513368 /* 0x1.342b46484f07b0005 */,
|
||||
1.205416109005122526928 /* 0x1.3496266e3fa270005 */,
|
||||
1.207049110184904572310 /* 0x1.35012ba4e8fa10000 */,
|
||||
1.208684323627194912036 /* 0x1.356c55f92aabb0004 */,
|
||||
1.210321752322854882437 /* 0x1.35d7a577dd33f0004 */,
|
||||
1.211961399276747286580 /* 0x1.36431a2de8748000d */,
|
||||
1.213603267492579629347 /* 0x1.36aeb4283309e000c */,
|
||||
1.215247359985374142610 /* 0x1.371a7373b00160000 */,
|
||||
1.216893679753690671322 /* 0x1.3786581d404e90000 */,
|
||||
1.218542229828181611183 /* 0x1.37f26231e82e4000c */,
|
||||
1.220193013225231215567 /* 0x1.385e91be9c2d20002 */,
|
||||
1.221846032973555429280 /* 0x1.38cae6d05e66f0000 */,
|
||||
1.223501292099485437962 /* 0x1.393761742e5830001 */,
|
||||
1.225158793636904830441 /* 0x1.39a401b713cb3000e */,
|
||||
1.226818540625497444577 /* 0x1.3a10c7a61ceae0007 */,
|
||||
1.228480536107136034131 /* 0x1.3a7db34e5a4a50003 */,
|
||||
1.230144783126481566885 /* 0x1.3aeac4bcdf8d60001 */,
|
||||
1.231811284734168454619 /* 0x1.3b57fbfec6e950008 */,
|
||||
1.233480043984379381835 /* 0x1.3bc559212e7a2000f */,
|
||||
1.235151063936380300149 /* 0x1.3c32dc3139f2a0004 */,
|
||||
1.236824347652524913647 /* 0x1.3ca0853c106ac000e */,
|
||||
1.238499898199571624970 /* 0x1.3d0e544eddd240003 */,
|
||||
1.240177718649636107175 /* 0x1.3d7c4976d3fcd0000 */,
|
||||
1.241857812073360767273 /* 0x1.3dea64c1231f70004 */,
|
||||
1.243540181554270152039 /* 0x1.3e58a63b099920005 */,
|
||||
1.245224830175077013244 /* 0x1.3ec70df1c4e46000e */,
|
||||
1.246911761022835740725 /* 0x1.3f359bf29741c000e */,
|
||||
1.248600977188942806639 /* 0x1.3fa4504ac7b800009 */,
|
||||
1.250292481770148400634 /* 0x1.40132b07a330d000a */,
|
||||
1.251986277866492969263 /* 0x1.40822c367a340000b */,
|
||||
1.253682368581898742876 /* 0x1.40f153e4a18e0000d */,
|
||||
1.255380757024939564249 /* 0x1.4160a21f73289000d */,
|
||||
1.257081446308726757662 /* 0x1.41d016f44deaa000c */,
|
||||
1.258784439550028944083 /* 0x1.423fb27094c090008 */,
|
||||
1.260489739869405489991 /* 0x1.42af74a1aec1c0006 */,
|
||||
1.262197350394008266193 /* 0x1.431f5d950a453000c */,
|
||||
1.263907274252603851764 /* 0x1.438f6d58176860004 */,
|
||||
1.265619514578811388761 /* 0x1.43ffa3f84b9eb000d */,
|
||||
1.267334074511444086425 /* 0x1.44700183221180008 */,
|
||||
1.269050957191869555296 /* 0x1.44e0860618b930006 */,
|
||||
1.270770165768063009230 /* 0x1.4551318eb4d20000e */,
|
||||
1.272491703389059036805 /* 0x1.45c2042a7cc26000b */,
|
||||
1.274215573211836316547 /* 0x1.4632fde6ffacd000d */,
|
||||
1.275941778396075143580 /* 0x1.46a41ed1cfac40001 */,
|
||||
1.277670322103555911043 /* 0x1.471566f8812ac0000 */,
|
||||
1.279401207505722393185 /* 0x1.4786d668b33260005 */,
|
||||
1.281134437771823675369 /* 0x1.47f86d3002637000a */,
|
||||
1.282870016078732078362 /* 0x1.486a2b5c13c00000e */,
|
||||
1.284607945607987078432 /* 0x1.48dc10fa916bd0004 */,
|
||||
1.286348229545787758022 /* 0x1.494e1e192aaa30007 */,
|
||||
1.288090871080605159846 /* 0x1.49c052c5913df000c */,
|
||||
1.289835873406902644341 /* 0x1.4a32af0d7d8090002 */,
|
||||
1.291583239722392528754 /* 0x1.4aa532feab5e10002 */,
|
||||
1.293332973229098792374 /* 0x1.4b17dea6db8010008 */,
|
||||
1.295085077135345708087 /* 0x1.4b8ab213d57d9000d */,
|
||||
1.296839554650994097442 /* 0x1.4bfdad53629e10003 */,
|
||||
1.298596408992440220988 /* 0x1.4c70d0735358a000d */,
|
||||
1.300355643380135983739 /* 0x1.4ce41b817c99e0001 */,
|
||||
1.302117261036232376282 /* 0x1.4d578e8bb52cb0003 */,
|
||||
1.303881265192249561154 /* 0x1.4dcb299fde2920008 */,
|
||||
1.305647659079073541490 /* 0x1.4e3eeccbd7f4c0003 */,
|
||||
1.307416445934474813521 /* 0x1.4eb2d81d8a86f000b */,
|
||||
1.309187629001237640529 /* 0x1.4f26eba2e35a5000e */,
|
||||
1.310961211525240921493 /* 0x1.4f9b2769d35090009 */,
|
||||
1.312737196755087820678 /* 0x1.500f8b804e4a30000 */,
|
||||
1.314515587949291131086 /* 0x1.508417f4530d00009 */,
|
||||
1.316296388365203462468 /* 0x1.50f8ccd3df1840003 */,
|
||||
1.318079601265708777911 /* 0x1.516daa2cf60020002 */,
|
||||
1.319865229921343141607 /* 0x1.51e2b00da3c2b0007 */,
|
||||
1.321653277603506371251 /* 0x1.5257de83f5512000d */,
|
||||
1.323443747588034513690 /* 0x1.52cd359dfc7d5000e */,
|
||||
1.325236643161341820781 /* 0x1.5342b569d6baa000f */,
|
||||
1.327031967602244177939 /* 0x1.53b85df59921b0000 */,
|
||||
1.328829724206201046165 /* 0x1.542e2f4f6b17e0006 */,
|
||||
1.330629916266568235675 /* 0x1.54a4298571b27000e */,
|
||||
1.332432547083447937938 /* 0x1.551a4ca5d97190009 */,
|
||||
1.334237619959296017340 /* 0x1.559098bed16bf0008 */,
|
||||
1.336045138203900251029 /* 0x1.56070dde90c800000 */,
|
||||
1.337855105129210686631 /* 0x1.567dac13510cd0009 */,
|
||||
1.339667524053662184301 /* 0x1.56f4736b52e2c000c */,
|
||||
1.341482398296830025383 /* 0x1.576b63f4d8333000f */,
|
||||
1.343299731186792467254 /* 0x1.57e27dbe2c40e0003 */,
|
||||
1.345119526053918823702 /* 0x1.5859c0d59cd37000f */,
|
||||
1.346941786233264881662 /* 0x1.58d12d497cd9a0005 */,
|
||||
1.348766515064854010261 /* 0x1.5948c32824b87000c */,
|
||||
1.350593715891792223641 /* 0x1.59c0827ff03890007 */,
|
||||
1.352423392064920459908 /* 0x1.5a386b5f43a3e0006 */,
|
||||
1.354255546937278120764 /* 0x1.5ab07dd485af1000c */,
|
||||
1.356090183865519494030 /* 0x1.5b28b9ee21085000f */,
|
||||
1.357927306213322804534 /* 0x1.5ba11fba8816e000b */,
|
||||
1.359766917346459269620 /* 0x1.5c19af482f8f2000f */,
|
||||
1.361609020638567812980 /* 0x1.5c9268a594cc00004 */,
|
||||
1.363453619463660171403 /* 0x1.5d0b4be135916000c */,
|
||||
1.365300717204201985683 /* 0x1.5d84590998eeb0005 */,
|
||||
1.367150317245710233754 /* 0x1.5dfd902d494e40001 */,
|
||||
1.369002422974674892971 /* 0x1.5e76f15ad22c40008 */,
|
||||
1.370857037789471544224 /* 0x1.5ef07ca0cc166000b */,
|
||||
1.372714165088220639199 /* 0x1.5f6a320dcf5280006 */,
|
||||
1.374573808273481745378 /* 0x1.5fe411b0790800009 */,
|
||||
1.376435970755022220096 /* 0x1.605e1b976e4b1000e */,
|
||||
1.378300655944092456600 /* 0x1.60d84fd155d15000e */,
|
||||
1.380167867259843417228 /* 0x1.6152ae6cdf0030003 */,
|
||||
1.382037608124419003675 /* 0x1.61cd3778bc879000d */,
|
||||
1.383909881963391264069 /* 0x1.6247eb03a4dc40009 */,
|
||||
1.385784692209972801544 /* 0x1.62c2c91c56d9b0002 */,
|
||||
1.387662042298923203992 /* 0x1.633dd1d1930ec0001 */,
|
||||
1.389541935670444372533 /* 0x1.63b90532200630004 */,
|
||||
1.391424375772021271329 /* 0x1.6434634ccc4cc0007 */,
|
||||
1.393309366052102982208 /* 0x1.64afec30677e90008 */,
|
||||
1.395196909966106124701 /* 0x1.652b9febc8e0f000d */,
|
||||
1.397087010973788290271 /* 0x1.65a77e8dcc7f10004 */,
|
||||
1.398979672539331309267 /* 0x1.66238825534170000 */,
|
||||
1.400874898129892187656 /* 0x1.669fbcc1415600008 */,
|
||||
1.402772691220124823310 /* 0x1.671c1c708328e000a */,
|
||||
1.404673055288671035301 /* 0x1.6798a7420988b000d */,
|
||||
1.406575993818903302975 /* 0x1.68155d44ca77a000f */,
|
||||
1.408481510297352468121 /* 0x1.68923e87bf70e000a */,
|
||||
1.410389608216942924956 /* 0x1.690f4b19e8f74000c */,
|
||||
1.412300291075172076232 /* 0x1.698c830a4c94c0008 */
|
||||
};
|
||||
#define S (1.0/4503599627370496.0) /* 2^-52 */
|
||||
static const float exp2_deltatable[512] = {
|
||||
11527*S, -963*S, 884*S, -781*S, -2363*S, -3441*S, 123*S, 526*S,
|
||||
-6*S, 1254*S, -1138*S, 1519*S, 1576*S, -65*S, 1040*S, 793*S,
|
||||
-1662*S, -5063*S, -387*S, 968*S, -941*S, 984*S, -2856*S, -545*S,
|
||||
495*S, -5246*S, -2109*S, 1281*S, 2075*S, 909*S, -1642*S,-78233*S,
|
||||
-31653*S, -265*S, 130*S, 430*S, 2482*S, -742*S, 1616*S, -2213*S,
|
||||
-519*S, 20*S, -3134*S,-13981*S, 1343*S, -1740*S, 247*S, 1679*S,
|
||||
-1097*S, 3131*S, 871*S, -1480*S, 1936*S, -1827*S, 17325*S, 528*S,
|
||||
-322*S, 1404*S, -152*S, -1845*S, -212*S, 2639*S, -476*S, 2960*S,
|
||||
-962*S, -1012*S, -1231*S, 3030*S, 1659*S, -486*S, 2154*S, 1728*S,
|
||||
-2793*S, 699*S, -1560*S, -2125*S, 2156*S, 142*S, -1888*S, 4426*S,
|
||||
-13443*S, 1970*S, -50*S, 1771*S,-43399*S, 4979*S, -2448*S, -370*S,
|
||||
1414*S, 1075*S, 232*S, 206*S, 873*S, 2141*S, 2970*S, 1279*S,
|
||||
-2331*S, 336*S, -2595*S, 753*S, -3384*S, -616*S, 89*S, -818*S,
|
||||
5755*S, -241*S, -528*S, -661*S, -3777*S, -354*S, 250*S, 3881*S,
|
||||
2632*S, -2131*S, 2565*S, -316*S, 1746*S, -2541*S, -1324*S, -50*S,
|
||||
2564*S, -782*S, 1176*S, 6452*S, -1002*S, 1288*S, 336*S, -185*S,
|
||||
3063*S, 3784*S, 2169*S, 686*S, 328*S, -400*S, 312*S, -4517*S,
|
||||
-1457*S, 1046*S, -1530*S, -685*S, 1328*S,-49815*S, -895*S, 1063*S,
|
||||
-2091*S, -672*S, -1710*S, -665*S, 1545*S, 1819*S,-45265*S, 3548*S,
|
||||
-554*S, -568*S, 4752*S, -1907*S,-13738*S, 675*S, 9611*S, -1115*S,
|
||||
-815*S, 408*S, -1281*S, -937*S,-16376*S, -4772*S, -1440*S, 992*S,
|
||||
788*S, 10364*S, -1602*S, -661*S, -1783*S, -265*S, -20*S, -3781*S,
|
||||
-861*S, -345*S, -994*S, 1364*S, -5339*S, 1620*S, 9390*S, -1066*S,
|
||||
-305*S, -170*S, 175*S, 2461*S, -490*S, -769*S, -1450*S, 3315*S,
|
||||
2418*S, -45*S, -852*S, -1295*S, -488*S, -96*S, 1142*S, -2639*S,
|
||||
7905*S, -9306*S, -3859*S, 760*S, 1057*S, -1570*S, 3977*S, 209*S,
|
||||
-514*S, 7151*S, 1646*S, 627*S, 599*S, -774*S, -1468*S, 633*S,
|
||||
-473*S, 851*S, 2406*S, 143*S, 74*S, 4260*S, 1177*S, -913*S,
|
||||
2670*S, -3298*S, -1662*S, -120*S, -3264*S, -2148*S, 410*S, 2078*S,
|
||||
-2098*S, -926*S, 3580*S, -1289*S, 2450*S, -1158*S, 907*S, -590*S,
|
||||
986*S, 1801*S, 1145*S, -1677*S, 3455*S, 956*S, 710*S, 144*S,
|
||||
153*S, -255*S, -1898*S, 28102*S, 2748*S, 1194*S, -3009*S, 7076*S,
|
||||
0*S, -2720*S, 711*S, 1225*S, -3034*S, -473*S, 378*S, -1046*S,
|
||||
962*S, -2006*S, 4647*S, 3206*S, 1769*S, -2665*S, 1254*S, 2025*S,
|
||||
-2430*S, 6193*S, 1224*S, -856*S, -1592*S, -325*S, -1521*S, 1827*S,
|
||||
-264*S, 2403*S, -1065*S, 967*S, -681*S, -2106*S, -474*S, 1333*S,
|
||||
-893*S, 2296*S, 592*S, -1220*S, -326*S, 990*S, 139*S, 206*S,
|
||||
-779*S, -1683*S, 1238*S, 6098*S, 136*S, 1197*S, 790*S, -107*S,
|
||||
-1004*S, -2449*S, 939*S, 5568*S, 156*S, 1812*S, 2792*S, -1094*S,
|
||||
-2677*S, -251*S, 2297*S, 943*S, -1329*S, 2883*S, -853*S, -2626*S,
|
||||
-105929*S, -6552*S, 1095*S, -1508*S, 1003*S, 5039*S, -2600*S, -749*S,
|
||||
1790*S, 890*S, 2016*S, -1073*S, 624*S, -2084*S, -1536*S, -1330*S,
|
||||
358*S, 2444*S, -179*S,-25759*S, -243*S, -552*S, -124*S, 3766*S,
|
||||
1192*S, -1614*S, 6*S, -1227*S, 345*S, -981*S, -295*S, -1006*S,
|
||||
-995*S, -1195*S, 706*S, 2512*S, -1758*S, -734*S, -6286*S, -922*S,
|
||||
1530*S, 1542*S, 1223*S, 61*S, -83*S, 522*S,116937*S, -914*S,
|
||||
-418*S, -7339*S, 249*S, -520*S, -762*S, 426*S, -505*S, 2664*S,
|
||||
-1093*S, -1035*S, 2130*S, 4878*S, 1982*S, 1551*S, 2304*S, 193*S,
|
||||
1532*S, -7268*S, 24357*S, 531*S, 2676*S, -1170*S, 1465*S, -1917*S,
|
||||
2143*S, 1466*S, -7*S, -7300*S, 3297*S, -1197*S, -289*S, -1548*S,
|
||||
26226*S, 4401*S, 4123*S, -1588*S, 4243*S, 4069*S, -1276*S, -2010*S,
|
||||
1407*S, 1478*S, 488*S, -2366*S, -2909*S, -2534*S, -1285*S, 7095*S,
|
||||
-645*S, -2089*S, -944*S, -40*S, -1363*S, -833*S, 917*S, 1609*S,
|
||||
1286*S, 1677*S, 1613*S, -2295*S, -1248*S, 40*S, 26*S, 2038*S,
|
||||
698*S, 2675*S, -1755*S, -3522*S, -1614*S, -6111*S, 270*S, 1822*S,
|
||||
-234*S, -2844*S, -1201*S, -830*S, 1193*S, 2354*S, 47*S, 1522*S,
|
||||
-78*S, -640*S, 2425*S, -1596*S, 1563*S, 1169*S, -1006*S, -83*S,
|
||||
2362*S, -3521*S, -314*S, 1814*S, -1751*S, 305*S, 1715*S, -3741*S,
|
||||
7847*S, 1291*S, 1206*S, 36*S, 1397*S, -1419*S, -1194*S, -2014*S,
|
||||
1742*S, -578*S, -207*S, 875*S, 1539*S, 2826*S, -1165*S, -909*S,
|
||||
1849*S, 927*S, 2018*S, -981*S, 1637*S, -463*S, 905*S, 6618*S,
|
||||
400*S, 630*S, 2614*S, 900*S, 2323*S, -1094*S, -1858*S, -212*S,
|
||||
-2069*S, 747*S, 1845*S, -1450*S, 444*S, -213*S, -438*S, 1158*S,
|
||||
4738*S, 2497*S, -370*S, -2016*S, -518*S, -1160*S, -1510*S, 123*S
|
||||
};
|
||||
/* Maximum magnitude in above table: 116937 */
|
||||
#undef S
|
70
libgcc-math/dbl-64/uasncs.h
Normal file
70
libgcc-math/dbl-64/uasncs.h
Normal file
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:uasncs.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef UANSNCS_H
|
||||
#define UANSNCS_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const mynumber
|
||||
/**/ a1 = {{0x3FC55580, 0x00000000 }}, /* 0.1666717529296875 */
|
||||
/**/ a2 = {{0xBED55555, 0x55552330 }}, /* -5.0862630208224597e-06 */
|
||||
/**/ hp0 = {{0x3FF921FB, 0x54442D18 }}, /* 1.5707963267948966 */
|
||||
/**/ hp1 = {{0x3C91A626, 0x33145C07 }}; /* 6.123233995736766e-17 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const mynumber
|
||||
/**/ a1 = {{0x00000000, 0x3FC55580 }}, /* 0.1666717529296875 */
|
||||
/**/ a2 = {{0x55552330, 0xBED55555 }}, /* -5.0862630208224597e-06 */
|
||||
/**/ hp0 = {{0x54442D18, 0x3FF921FB }}, /* 1.5707963267948966 */
|
||||
/**/ hp1 = {{0x33145C07, 0x3C91A626 }}; /* 6.123233995736766e-17 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static const double
|
||||
f1 = 1.66666666666664110590506577996662E-01,
|
||||
f2 = 7.50000000026122686814431784722623E-02,
|
||||
f3 = 4.46428561421059750978517350006940E-02,
|
||||
f4 = 3.03821268582119319911193410625235E-02,
|
||||
f5 = 2.23551211026525610742786300334557E-02,
|
||||
f6 = 1.81382903404565056280372531963613E-02;
|
||||
static const double
|
||||
c2 = 0.74999999999985410757087492918602258E-01,
|
||||
c3 = 0.44642857150311968932423372477866076E-01,
|
||||
c4 = 0.30381942574778615766200591683810471E-01,
|
||||
c5 = 0.22372413472984868331447708777000650E-01,
|
||||
c6 = 0.17333630246451830686009693735025490E-01,
|
||||
c7 = 0.14710362893628210269950864741085777E-01;
|
||||
|
||||
static const double big = 103079215104.0, t24 = 16777216.0, t27 = 134217728.0;
|
||||
static const double
|
||||
rt0 = 9.99999999859990725855365213134618E-01,
|
||||
rt1 = 4.99999999495955425917856814202739E-01,
|
||||
rt2 = 3.75017500867345182581453026130850E-01,
|
||||
rt3 = 3.12523626554518656309172508769531E-01;
|
||||
#endif
|
11135
libgcc-math/dbl-64/uatan.tbl
Normal file
11135
libgcc-math/dbl-64/uatan.tbl
Normal file
File diff suppressed because it is too large
Load diff
70
libgcc-math/dbl-64/uexp.h
Normal file
70
libgcc-math/dbl-64/uexp.h
Normal file
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:uexp.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef UEXP_H
|
||||
#define UEXP_H
|
||||
|
||||
#include "mydefs.h"
|
||||
|
||||
const static double one = 1.0, zero = 0.0, hhuge = 1.0e300, tiny = 1.0e-300,
|
||||
err_0 = 1.000014, err_1 = 0.000016;
|
||||
const static int4 bigint = 0x40862002,
|
||||
badint = 0x40876000,smallint = 0x3C8fffff;
|
||||
const static int4 hugeint = 0x7FFFFFFF, infint = 0x7ff00000;
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
const static mynumber inf = {{0x7FF00000, 0}}; /* inf */
|
||||
const static mynumber t256 = {{0x4ff00000, 0}}; /* 2^256 */
|
||||
|
||||
const static mynumber ln_two1 = {{0x3FE62E42, 0xFEFA3800}};/*0.69314718055989033 */
|
||||
const static mynumber ln_two2 = {{0x3D2EF357, 0x93C76730}};/*5.4979230187083712e-14*/
|
||||
const static mynumber log2e = {{0x3FF71547, 0x652B82FE}};/* 1.4426950408889634 */
|
||||
|
||||
const static mynumber p2 = {{0x3FE00000, 0x000004DC}};/* 0.50000000000013811 */
|
||||
const static mynumber p3 = {{0x3FC55555, 0x55555A0F}};/* 0.16666666666670024 */
|
||||
|
||||
const static mynumber three33 = {{0x42180000, 0}}; /* 25769803776 */
|
||||
const static mynumber three51 = {{0x43380000, 0}}; /* 6755399441055744 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
const static mynumber inf = {{0, 0x7FF00000}}; /* inf */
|
||||
const static mynumber t256 = {{0, 0x4ff00000}}; /* 2^256 */
|
||||
|
||||
const static mynumber ln_two1 = {{0xFEFA3800, 0x3FE62E42}};/*0.69314718055989033 */
|
||||
const static mynumber ln_two2 = {{0x93C76730, 0x3D2EF357}};/*5.4979230187083712e-14*/
|
||||
const static mynumber log2e = {{0x652B82FE, 0x3FF71547}};/* 1.4426950408889634 */
|
||||
|
||||
const static mynumber p2 = {{0x000004DC, 0x3FE00000}};/* 0.50000000000013811 */
|
||||
const static mynumber p3 = {{0x55555A0F, 0x3FC55555}};/* 0.16666666666670024 */
|
||||
|
||||
const static mynumber three33 = {{0, 0x42180000}}; /* 25769803776 */
|
||||
const static mynumber three51 = {{0, 0x43380000}}; /* 6755399441055744 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
1787
libgcc-math/dbl-64/uexp.tbl
Normal file
1787
libgcc-math/dbl-64/uexp.tbl
Normal file
File diff suppressed because it is too large
Load diff
200
libgcc-math/dbl-64/ulog.h
Normal file
200
libgcc-math/dbl-64/ulog.h
Normal file
|
@ -0,0 +1,200 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:ulog.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef ULOG_H
|
||||
#define ULOG_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const number
|
||||
/* polynomial I */
|
||||
/**/ a2 = {{0xbfe00000, 0x0001aa8f} }, /* -0.500... */
|
||||
/**/ a3 = {{0x3fd55555, 0x55588d2e} }, /* 0.333... */
|
||||
/* polynomial II */
|
||||
/**/ b0 = {{0x3fd55555, 0x55555555} }, /* 0.333... */
|
||||
/**/ b1 = {{0xbfcfffff, 0xffffffbb} }, /* -0.249... */
|
||||
/**/ b2 = {{0x3fc99999, 0x9999992f} }, /* 0.199... */
|
||||
/**/ b3 = {{0xbfc55555, 0x556503fd} }, /* -0.166... */
|
||||
/**/ b4 = {{0x3fc24924, 0x925b3d62} }, /* 0.142... */
|
||||
/**/ b5 = {{0xbfbffffe, 0x160472fc} }, /* -0.124... */
|
||||
/**/ b6 = {{0x3fbc71c5, 0x25db58ac} }, /* 0.111... */
|
||||
/**/ b7 = {{0xbfb9a4ac, 0x11a2a61c} }, /* -0.100... */
|
||||
/**/ b8 = {{0x3fb75077, 0x0df2b591} }, /* 0.091... */
|
||||
/* polynomial III */
|
||||
#if 0
|
||||
/**/ c1 = {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
#endif
|
||||
/**/ c2 = {{0xbfe00000, 0x00000000} }, /* -1/2 */
|
||||
/**/ c3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */
|
||||
/**/ c4 = {{0xbfd00000, 0x00000000} }, /* -1/4 */
|
||||
/**/ c5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */
|
||||
/* polynomial IV */
|
||||
/**/ d2 = {{0xbfe00000, 0x00000000} }, /* -1/2 */
|
||||
/**/ dd2 = {{0x00000000, 0x00000000} }, /* -1/2-d2 */
|
||||
/**/ d3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */
|
||||
/**/ dd3 = {{0x3c755555, 0x55555555} }, /* 1/3-d3 */
|
||||
/**/ d4 = {{0xbfd00000, 0x00000000} }, /* -1/4 */
|
||||
/**/ dd4 = {{0x00000000, 0x00000000} }, /* -1/4-d4 */
|
||||
/**/ d5 = {{0x3fc99999, 0x9999999a} }, /* 1/5 */
|
||||
/**/ dd5 = {{0xbc699999, 0x9999999a} }, /* 1/5-d5 */
|
||||
/**/ d6 = {{0xbfc55555, 0x55555555} }, /* -1/6 */
|
||||
/**/ dd6 = {{0xbc655555, 0x55555555} }, /* -1/6-d6 */
|
||||
/**/ d7 = {{0x3fc24924, 0x92492492} }, /* 1/7 */
|
||||
/**/ dd7 = {{0x3c624924, 0x92492492} }, /* 1/7-d7 */
|
||||
/**/ d8 = {{0xbfc00000, 0x00000000} }, /* -1/8 */
|
||||
/**/ dd8 = {{0x00000000, 0x00000000} }, /* -1/8-d8 */
|
||||
/**/ d9 = {{0x3fbc71c7, 0x1c71c71c} }, /* 1/9 */
|
||||
/**/ dd9 = {{0x3c5c71c7, 0x1c71c71c} }, /* 1/9-d9 */
|
||||
/**/ d10 = {{0xbfb99999, 0x9999999a} }, /* -1/10 */
|
||||
/**/ dd10 = {{0x3c599999, 0x9999999a} }, /* -1/10-d10 */
|
||||
/**/ d11 = {{0x3fb745d1, 0x745d1746} }, /* 1/11 */
|
||||
/**/ d12 = {{0xbfb55555, 0x55555555} }, /* -1/12 */
|
||||
/**/ d13 = {{0x3fb3b13b, 0x13b13b14} }, /* 1/13 */
|
||||
/**/ d14 = {{0xbfb24924, 0x92492492} }, /* -1/14 */
|
||||
/**/ d15 = {{0x3fb11111, 0x11111111} }, /* 1/15 */
|
||||
/**/ d16 = {{0xbfb00000, 0x00000000} }, /* -1/16 */
|
||||
/**/ d17 = {{0x3fae1e1e, 0x1e1e1e1e} }, /* 1/17 */
|
||||
/**/ d18 = {{0xbfac71c7, 0x1c71c71c} }, /* -1/18 */
|
||||
/**/ d19 = {{0x3faaf286, 0xbca1af28} }, /* 1/19 */
|
||||
/**/ d20 = {{0xbfa99999, 0x9999999a} }, /* -1/20 */
|
||||
/* constants */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
/**/ half = {{0x3fe00000, 0x00000000} }, /* 1/2 */
|
||||
/**/ mhalf = {{0xbfe00000, 0x00000000} }, /* -1/2 */
|
||||
/**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc} }, /* sqrt(2) */
|
||||
/**/ h1 = {{0x3fd2e000, 0x00000000} }, /* 151/2**9 */
|
||||
/**/ h2 = {{0x3f669000, 0x00000000} }, /* 361/2**17 */
|
||||
/**/ delu = {{0x3f700000, 0x00000000} }, /* 1/2**8 */
|
||||
/**/ delv = {{0x3ef00000, 0x00000000} }, /* 1/2**16 */
|
||||
/**/ ln2a = {{0x3fe62e42, 0xfefa3800} }, /* ln(2) 43 bits */
|
||||
/**/ ln2b = {{0x3d2ef357, 0x93c76730} }, /* ln(2)-ln2a */
|
||||
/**/ e1 = {{0x3bbcc868, 0x00000000} }, /* 6.095e-21 */
|
||||
/**/ e2 = {{0x3c1138ce, 0x00000000} }, /* 2.334e-19 */
|
||||
/**/ e3 = {{0x3aa1565d, 0x00000000} }, /* 2.801e-26 */
|
||||
/**/ e4 = {{0x39809d88, 0x00000000} }, /* 1.024e-31 */
|
||||
/**/ e[M] ={{{0x37da223a, 0x00000000} }, /* 1.2e-39 */
|
||||
/**/ {{0x35c851c4, 0x00000000} }, /* 1.3e-49 */
|
||||
/**/ {{0x2ab85e51, 0x00000000} }, /* 6.8e-103 */
|
||||
/**/ {{0x17383827, 0x00000000} }},/* 8.1e-197 */
|
||||
/**/ two54 = {{0x43500000, 0x00000000} }, /* 2**54 */
|
||||
/**/ u03 = {{0x3f9eb851, 0xeb851eb8} }; /* 0.03 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const number
|
||||
/* polynomial I */
|
||||
/**/ a2 = {{0x0001aa8f, 0xbfe00000} }, /* -0.500... */
|
||||
/**/ a3 = {{0x55588d2e, 0x3fd55555} }, /* 0.333... */
|
||||
/* polynomial II */
|
||||
/**/ b0 = {{0x55555555, 0x3fd55555} }, /* 0.333... */
|
||||
/**/ b1 = {{0xffffffbb, 0xbfcfffff} }, /* -0.249... */
|
||||
/**/ b2 = {{0x9999992f, 0x3fc99999} }, /* 0.199... */
|
||||
/**/ b3 = {{0x556503fd, 0xbfc55555} }, /* -0.166... */
|
||||
/**/ b4 = {{0x925b3d62, 0x3fc24924} }, /* 0.142... */
|
||||
/**/ b5 = {{0x160472fc, 0xbfbffffe} }, /* -0.124... */
|
||||
/**/ b6 = {{0x25db58ac, 0x3fbc71c5} }, /* 0.111... */
|
||||
/**/ b7 = {{0x11a2a61c, 0xbfb9a4ac} }, /* -0.100... */
|
||||
/**/ b8 = {{0x0df2b591, 0x3fb75077} }, /* 0.091... */
|
||||
/* polynomial III */
|
||||
#if 0
|
||||
/**/ c1 = {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
#endif
|
||||
/**/ c2 = {{0x00000000, 0xbfe00000} }, /* -1/2 */
|
||||
/**/ c3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */
|
||||
/**/ c4 = {{0x00000000, 0xbfd00000} }, /* -1/4 */
|
||||
/**/ c5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */
|
||||
/* polynomial IV */
|
||||
/**/ d2 = {{0x00000000, 0xbfe00000} }, /* -1/2 */
|
||||
/**/ dd2 = {{0x00000000, 0x00000000} }, /* -1/2-d2 */
|
||||
/**/ d3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */
|
||||
/**/ dd3 = {{0x55555555, 0x3c755555} }, /* 1/3-d3 */
|
||||
/**/ d4 = {{0x00000000, 0xbfd00000} }, /* -1/4 */
|
||||
/**/ dd4 = {{0x00000000, 0x00000000} }, /* -1/4-d4 */
|
||||
/**/ d5 = {{0x9999999a, 0x3fc99999} }, /* 1/5 */
|
||||
/**/ dd5 = {{0x9999999a, 0xbc699999} }, /* 1/5-d5 */
|
||||
/**/ d6 = {{0x55555555, 0xbfc55555} }, /* -1/6 */
|
||||
/**/ dd6 = {{0x55555555, 0xbc655555} }, /* -1/6-d6 */
|
||||
/**/ d7 = {{0x92492492, 0x3fc24924} }, /* 1/7 */
|
||||
/**/ dd7 = {{0x92492492, 0x3c624924} }, /* 1/7-d7 */
|
||||
/**/ d8 = {{0x00000000, 0xbfc00000} }, /* -1/8 */
|
||||
/**/ dd8 = {{0x00000000, 0x00000000} }, /* -1/8-d8 */
|
||||
/**/ d9 = {{0x1c71c71c, 0x3fbc71c7} }, /* 1/9 */
|
||||
/**/ dd9 = {{0x1c71c71c, 0x3c5c71c7} }, /* 1/9-d9 */
|
||||
/**/ d10 = {{0x9999999a, 0xbfb99999} }, /* -1/10 */
|
||||
/**/ dd10 = {{0x9999999a, 0x3c599999} }, /* -1/10-d10 */
|
||||
/**/ d11 = {{0x745d1746, 0x3fb745d1} }, /* 1/11 */
|
||||
/**/ d12 = {{0x55555555, 0xbfb55555} }, /* -1/12 */
|
||||
/**/ d13 = {{0x13b13b14, 0x3fb3b13b} }, /* 1/13 */
|
||||
/**/ d14 = {{0x92492492, 0xbfb24924} }, /* -1/14 */
|
||||
/**/ d15 = {{0x11111111, 0x3fb11111} }, /* 1/15 */
|
||||
/**/ d16 = {{0x00000000, 0xbfb00000} }, /* -1/16 */
|
||||
/**/ d17 = {{0x1e1e1e1e, 0x3fae1e1e} }, /* 1/17 */
|
||||
/**/ d18 = {{0x1c71c71c, 0xbfac71c7} }, /* -1/18 */
|
||||
/**/ d19 = {{0xbca1af28, 0x3faaf286} }, /* 1/19 */
|
||||
/**/ d20 = {{0x9999999a, 0xbfa99999} }, /* -1/20 */
|
||||
/* constants */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
/**/ half = {{0x00000000, 0x3fe00000} }, /* 1/2 */
|
||||
/**/ mhalf = {{0x00000000, 0xbfe00000} }, /* -1/2 */
|
||||
/**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e} }, /* sqrt(2) */
|
||||
/**/ h1 = {{0x00000000, 0x3fd2e000} }, /* 151/2**9 */
|
||||
/**/ h2 = {{0x00000000, 0x3f669000} }, /* 361/2**17 */
|
||||
/**/ delu = {{0x00000000, 0x3f700000} }, /* 1/2**8 */
|
||||
/**/ delv = {{0x00000000, 0x3ef00000} }, /* 1/2**16 */
|
||||
/**/ ln2a = {{0xfefa3800, 0x3fe62e42} }, /* ln(2) 43 bits */
|
||||
/**/ ln2b = {{0x93c76730, 0x3d2ef357} }, /* ln(2)-ln2a */
|
||||
/**/ e1 = {{0x00000000, 0x3bbcc868} }, /* 6.095e-21 */
|
||||
/**/ e2 = {{0x00000000, 0x3c1138ce} }, /* 2.334e-19 */
|
||||
/**/ e3 = {{0x00000000, 0x3aa1565d} }, /* 2.801e-26 */
|
||||
/**/ e4 = {{0x00000000, 0x39809d88} }, /* 1.024e-31 */
|
||||
/**/ e[M] ={{{0x00000000, 0x37da223a} }, /* 1.2e-39 */
|
||||
/**/ {{0x00000000, 0x35c851c4} }, /* 1.3e-49 */
|
||||
/**/ {{0x00000000, 0x2ab85e51} }, /* 6.8e-103 */
|
||||
/**/ {{0x00000000, 0x17383827} }},/* 8.1e-197 */
|
||||
/**/ two54 = {{0x00000000, 0x43500000} }, /* 2**54 */
|
||||
/**/ u03 = {{0xeb851eb8, 0x3f9eb851} }; /* 0.03 */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define ZERO zero.d
|
||||
#define ONE one.d
|
||||
#define HALF half.d
|
||||
#define MHALF mhalf.d
|
||||
#define SQRT_2 sqrt_2.d
|
||||
#define DEL_U delu.d
|
||||
#define DEL_V delv.d
|
||||
#define LN2A ln2a.d
|
||||
#define LN2B ln2b.d
|
||||
#define E1 e1.d
|
||||
#define E2 e2.d
|
||||
#define E3 e3.d
|
||||
#define E4 e4.d
|
||||
#define U03 u03.d
|
||||
|
||||
#endif
|
3327
libgcc-math/dbl-64/ulog.tbl
Normal file
3327
libgcc-math/dbl-64/ulog.tbl
Normal file
File diff suppressed because it is too large
Load diff
81
libgcc-math/dbl-64/upow.h
Normal file
81
libgcc-math/dbl-64/upow.h
Normal file
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:upow.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef UPOW_H
|
||||
#define UPOW_H
|
||||
|
||||
#include "mydefs.h"
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
const static mynumber
|
||||
/**/ nZERO = {{0x80000000, 0}}, /* -0.0 */
|
||||
/**/ INF = {{0x7ff00000, 0x00000000}}, /* INF */
|
||||
/**/ nINF = {{0xfff00000, 0x00000000}}, /* -INF */
|
||||
/**/ NaNQ = {{0x7ff80000, 0x00000000}}, /* NaNQ */
|
||||
/**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc}}, /* sqrt(2) */
|
||||
/**/ ln2a = {{0x3fe62e42, 0xfefa3800}}, /* ln(2) 43 bits */
|
||||
/**/ ln2b = {{0x3d2ef357, 0x93c76730}}, /* ln(2)-ln2a */
|
||||
/**/ bigu = {{0x4297ffff, 0xfffffd2c}}, /* 1.5*2**42 -724*2**-10 */
|
||||
/**/ bigv = {{0x4207ffff, 0xfff8016a}}, /* 1.5*2**33-1+362*2**-19 */
|
||||
/**/ t52 = {{0x43300000, 0x00000000}}, /* 2**52 */
|
||||
/**/ two52e = {{0x43300000, 0x000003ff}}; /* 2**52' */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
const static mynumber
|
||||
/**/ nZERO = {{0, 0x80000000}}, /* -0.0 */
|
||||
/**/ INF = {{0x00000000, 0x7ff00000}}, /* INF */
|
||||
/**/ nINF = {{0x00000000, 0xfff00000}}, /* -INF */
|
||||
/**/ NaNQ = {{0x00000000, 0x7ff80000}}, /* NaNQ */
|
||||
/**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e}}, /* sqrt(2) */
|
||||
/**/ ln2a = {{0xfefa3800, 0x3fe62e42}}, /* ln(2) 43 bits */
|
||||
/**/ ln2b = {{0x93c76730, 0x3d2ef357}}, /* ln(2)-ln2a */
|
||||
/**/ bigu = {{0xfffffd2c, 0x4297ffff}}, /* 1.5*2**42 -724*2**-10 */
|
||||
/**/ bigv = {{0xfff8016a, 0x4207ffff}}, /* 1.5*2**33-1+362*2**-19 */
|
||||
/**/ t52 = {{0x00000000, 0x43300000}}, /* 2**52 */
|
||||
/**/ two52e = {{0x000003ff, 0x43300000}}; /* 2**52' */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
const static double p2=-0.5, p3 = 3.3333333333333333333e-1, p4 = -0.25,
|
||||
q2 = -0.5, q3 = 3.3333333333331404e-01, q4 = -2.4999999999996436e-01,
|
||||
q5 = 2.0000010500004459e-01, q6 = -1.6666678916688004e-01,
|
||||
r3 = 3.33333333333333333372884096563030E-01,
|
||||
r4 = -2.50000000000000000213574153875908E-01,
|
||||
r5 = 1.99999999999683593814072199830603E-01,
|
||||
r6 = -1.66666666666065494878165510225378E-01,
|
||||
r7 = 1.42857517857114380606360005067609E-01,
|
||||
r8 = -1.25000449999974370683775964001702E-01,
|
||||
s3 = 0.333251953125000000e0,
|
||||
ss3 = 8.138020833333333333e-05,
|
||||
s4 = -2.500000000000000000e-01,
|
||||
s5 = 1.999999999999960937e-01,
|
||||
s6 = -1.666666666666592447e-01,
|
||||
s7 = 1.428571845238194705e-01,
|
||||
s8 = -1.250000500000149097e-01;
|
||||
#endif
|
10189
libgcc-math/dbl-64/upow.tbl
Normal file
10189
libgcc-math/dbl-64/upow.tbl
Normal file
File diff suppressed because it is too large
Load diff
51
libgcc-math/dbl-64/urem.h
Normal file
51
libgcc-math/dbl-64/urem.h
Normal file
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: urem.h */
|
||||
/* */
|
||||
/* */
|
||||
/* common data and variables definition for BIG or LITTLE ENDIAN */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef UREM_H
|
||||
#define UREM_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const mynumber big = {{0x43380000, 0}}, /* 6755399441055744 */
|
||||
t128 = {{0x47f00000, 0}}, /* 2^ 128 */
|
||||
tm128 = {{0x37f00000, 0}}, /* 2^-128 */
|
||||
ZERO = {{0, 0}}, /* 0.0 */
|
||||
nZERO = {{0x80000000, 0}}, /* -0.0 */
|
||||
NAN = {{0x7ff80000, 0}}, /* NaN */
|
||||
nNAN = {{0xfff80000, 0}}; /* -NaN */
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const mynumber big = {{0, 0x43380000}}, /* 6755399441055744 */
|
||||
t128 = {{0, 0x47f00000}}, /* 2^ 128 */
|
||||
tm128 = {{0, 0x37f00000}}, /* 2^-128 */
|
||||
ZERO = {{0, 0}}, /* 0.0 */
|
||||
nZERO = {{0, 0x80000000}}, /* -0.0 */
|
||||
NAN = {{0, 0x7ff80000}}, /* NaN */
|
||||
nNAN = {{0, 0xfff80000}}; /* -NaN */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
44
libgcc-math/dbl-64/uroot.h
Normal file
44
libgcc-math/dbl-64/uroot.h
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:uroot.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef UROOT_H
|
||||
#define UROOT_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const mynumber
|
||||
/**/ t512 = {{0x5ff00000, 0x00000000 }}, /* 2^512 */
|
||||
/**/ tm256 = {{0x2ff00000, 0x00000000 }}; /* 2^-256 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const mynumber
|
||||
/**/ t512 = {{0x00000000, 0x5ff00000 }}, /* 2^512 */
|
||||
/**/ tm256 = {{0x00000000, 0x2ff00000 }}; /* 2^-256 */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
80
libgcc-math/dbl-64/usncs.h
Normal file
80
libgcc-math/dbl-64/usncs.h
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/************************************************************************/
|
||||
/* MODULE_NAME: dosincos.h */
|
||||
/* */
|
||||
/* */
|
||||
/* common data and variables definition for BIG or LITTLE ENDIAN */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef USNCS_H
|
||||
#define USNCS_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const mynumber
|
||||
|
||||
/**/ NAN = {{0x7ff80000, 0x00000000 }}, /* NaN */
|
||||
/**/ s1 = {{0xBFC55555, 0x55555555 }}, /* -0.16666666666666666 */
|
||||
/**/ s2 = {{0x3F811111, 0x11110ECE }}, /* 0.0083333333333323288 */
|
||||
/**/ s3 = {{0xBF2A01A0, 0x19DB08B8 }}, /* -0.00019841269834414642 */
|
||||
/**/ s4 = {{0x3EC71DE2, 0x7B9A7ED9 }}, /* 2.755729806860771e-06 */
|
||||
/**/ s5 = {{0xBE5ADDFF, 0xC2FCDF59 }}, /* -2.5022014848318398e-08 */
|
||||
/**/ aa = {{0xBFC55580, 0x00000000 }}, /* -0.1666717529296875 */
|
||||
/**/ bb = {{0x3ED55555, 0x55556E24 }}, /* 5.0862630208387126e-06 */
|
||||
/**/ big = {{0x42c80000, 0x00000000 }}, /* 52776558133248 */
|
||||
/**/ hp0 = {{0x3FF921FB, 0x54442D18 }}, /* 1.5707963267948966 */
|
||||
/**/ hp1 = {{0x3C91A626, 0x33145C07 }}, /* 6.123233995736766e-17 */
|
||||
/**/ mp1 = {{0x3FF921FB, 0x58000000 }}, /* 1.5707963407039642 */
|
||||
/**/ mp2 = {{0xBE4DDE97, 0x3C000000 }}, /* -1.3909067564377153e-08 */
|
||||
/**/ mp3 = {{0xBC8CB3B3, 0x99D747F2 }}, /* -4.9789962505147994e-17 */
|
||||
/**/ pp3 = {{0xBC8CB3B3, 0x98000000 }}, /* -4.9789962314799099e-17 */
|
||||
/**/ pp4 = {{0xbacd747f, 0x23e32ed7 }}, /* -1.9034889620193266e-25 */
|
||||
/**/ hpinv = {{0x3FE45F30, 0x6DC9C883 }}, /* 0.63661977236758138 */
|
||||
/**/ toint = {{0x43380000, 0x00000000 }}; /* 6755399441055744 */
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
static const mynumber
|
||||
|
||||
/**/ NAN = {{0x00000000, 0x7ff80000 }},/* NaN */
|
||||
/**/ s1 = {{0x55555555, 0xBFC55555 }},/* -0.16666666666666666 */
|
||||
/**/ s2 = {{0x11110ECE, 0x3F811111 }},/* 0.0083333333333323288 */
|
||||
/**/ s3 = {{0x19DB08B8, 0xBF2A01A0 }},/* -0.00019841269834414642 */
|
||||
/**/ s4 = {{0x7B9A7ED9, 0x3EC71DE2 }},/* 2.755729806860771e-06 */
|
||||
/**/ s5 = {{0xC2FCDF59, 0xBE5ADDFF }},/* -2.5022014848318398e-08 */
|
||||
/**/ aa = {{0x00000000, 0xBFC55580 }},/* -0.1666717529296875 */
|
||||
/**/ bb = {{0x55556E24, 0x3ED55555 }},/* 5.0862630208387126e-06 */
|
||||
/**/ big = {{0x00000000, 0x42c80000 }},/* 52776558133248 */
|
||||
/**/ hp0 = {{0x54442D18, 0x3FF921FB }},/* 1.5707963267948966 */
|
||||
/**/ hp1 = {{0x33145C07, 0x3C91A626 }},/* 6.123233995736766e-17 */
|
||||
/**/ mp1 = {{0x58000000, 0x3FF921FB }},/* 1.5707963407039642 */
|
||||
/**/ mp2 = {{0x3C000000, 0xBE4DDE97 }},/* -1.3909067564377153e-08 */
|
||||
/**/ mp3 = {{0x99D747F2, 0xBC8CB3B3 }},/* -4.9789962505147994e-17 */
|
||||
/**/ pp3 = {{0x98000000, 0xBC8CB3B3 }},/* -4.9789962314799099e-17 */
|
||||
/**/ pp4 = {{0x23e32ed7, 0xbacd747f }},/* -1.9034889620193266e-25 */
|
||||
/**/ hpinv = {{0x6DC9C883, 0x3FE45F30 }},/* 0.63661977236758138 */
|
||||
/**/ toint = {{0x00000000, 0x43380000 }};/* 6755399441055744 */
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
280
libgcc-math/dbl-64/utan.h
Normal file
280
libgcc-math/dbl-64/utan.h
Normal file
|
@ -0,0 +1,280 @@
|
|||
/*
|
||||
* IBM Accurate Mathematical Library
|
||||
* Written by International Business Machines Corp.
|
||||
* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/******************************************************************/
|
||||
/* */
|
||||
/* MODULE_NAME:utan.h */
|
||||
/* */
|
||||
/* common data and variables prototype and definition */
|
||||
/******************************************************************/
|
||||
|
||||
#ifndef UTAN_H
|
||||
#define UTAN_H
|
||||
|
||||
#ifdef BIG_ENDI
|
||||
static const number
|
||||
/* polynomial I */
|
||||
/**/ d3 = {{0x3FD55555, 0x55555555} }, /* 0.333... */
|
||||
/**/ d5 = {{0x3FC11111, 0x111107C6} }, /* 0.133... */
|
||||
/**/ d7 = {{0x3FABA1BA, 0x1CDB8745} }, /* . */
|
||||
/**/ d9 = {{0x3F9664ED, 0x49CFC666} }, /* . */
|
||||
/**/ d11 = {{0x3F82385A, 0x3CF2E4EA} }, /* . */
|
||||
/* polynomial II */
|
||||
/**/ a3 = {{0x3fd55555, 0x55555555} }, /* 1/3 */
|
||||
/**/ aa3 = {{0x3c755555, 0x55555555} }, /* 1/3-a3 */
|
||||
/**/ a5 = {{0x3fc11111, 0x11111111} }, /* 2/15 */
|
||||
/**/ aa5 = {{0x3c411111, 0x11111111} }, /* 2/15-a5 */
|
||||
/**/ a7 = {{0x3faba1ba, 0x1ba1ba1c} }, /* 17/315 */
|
||||
/**/ aa7 = {{0xbc479179, 0x17917918} }, /* ()-a7 */
|
||||
/**/ a9 = {{0x3f9664f4, 0x882c10fa} }, /* 62/2835 */
|
||||
/**/ aa9 = {{0xbc09a528, 0x8b6c44fd} }, /* ()-a9 */
|
||||
/**/ a11 = {{0x3f8226e3, 0x55e6c23d} }, /* . */
|
||||
/**/ aa11 = {{0xbc2c292b, 0x8f1a2c13} }, /* . */
|
||||
/**/ a13 = {{0x3f6d6d3d, 0x0e157de0} }, /* . */
|
||||
/**/ aa13 = {{0xbc0280cf, 0xc968d971} }, /* . */
|
||||
/**/ a15 = {{0x3f57da36, 0x452b75e3} }, /* . */
|
||||
#if 0
|
||||
/**/ aa15 = {{0xbbf25789, 0xb285d2ed} }, /* . */
|
||||
#endif
|
||||
/**/ a17 = {{0x3f435582, 0x48036744} }, /* . */
|
||||
#if 0
|
||||
/**/ aa17 = {{0x3be488d9, 0x563f1f23} }, /* . */
|
||||
#endif
|
||||
/**/ a19 = {{0x3f2f57d7, 0x734d1664} }, /* . */
|
||||
#if 0
|
||||
/**/ aa19 = {{0x3bb0d55a, 0x913ccb50} }, /* . */
|
||||
#endif
|
||||
/**/ a21 = {{0x3f1967e1, 0x8afcafad} }, /* . */
|
||||
#if 0
|
||||
/**/ aa21 = {{0xbbbd7614, 0xa42d44e6} }, /* . */
|
||||
#endif
|
||||
/**/ a23 = {{0x3f0497d8, 0xeea25259} }, /* . */
|
||||
#if 0
|
||||
/**/ aa23 = {{0x3b99f2d0, 0x2e4d2863} }, /* . */
|
||||
#endif
|
||||
/**/ a25 = {{0x3ef0b132, 0xd39a6050} }, /* . */
|
||||
#if 0
|
||||
/**/ aa25 = {{0x3b93b274, 0xc2c19614} }, /* . */
|
||||
#endif
|
||||
/**/ a27 = {{0x3edb0f72, 0xd3ee24e9} }, /* . */
|
||||
#if 0
|
||||
/**/ aa27 = {{0x3b61688d, 0xdd595609} }, /* . */
|
||||
#endif
|
||||
/* polynomial III */
|
||||
/**/ e0 = {{0x3FD55555, 0x55554DBD} }, /* . */
|
||||
/**/ e1 = {{0x3FC11112, 0xE0A6B45F} }, /* . */
|
||||
|
||||
/* constants */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ one = {{0x3ff00000, 0x00000000} }, /* 1 */
|
||||
/**/ mone = {{0xbff00000, 0x00000000} }, /*-1 */
|
||||
/**/ mfftnhf = {{0xc02f0000, 0x00000000} }, /*-15.5 */
|
||||
/**/ two8 = {{0x40700000, 0x00000000} }, /* 256 */
|
||||
|
||||
/**/ g1 = {{0x3e4b096c, 0x00000000} }, /* 1.259e-8 */
|
||||
/**/ g2 = {{0x3faf212d, 0x00000000} }, /* 0.0608 */
|
||||
/**/ g3 = {{0x3fe92f1a, 0x00000000} }, /* 0.787 */
|
||||
/**/ g4 = {{0x40390000, 0x00000000} }, /* 25.0 */
|
||||
/**/ g5 = {{0x4197d784, 0x00000000} }, /* 1e8 */
|
||||
/**/ gy1 = {{0x3e7ad7f2, 0x9abcaf48} }, /* 1e-7 */
|
||||
/**/ gy2 = {{0x3faf212d, 0x00000000} }, /* 0.0608 */
|
||||
|
||||
/**/ u1 = {{0x3cc8c33a, 0x00000000} }, /* 6.873e-16 */
|
||||
/**/ u2 = {{0x3983dc4d, 0x00000000} }, /* 1.224e-31 */
|
||||
/**/ u3 = {{0x3c78e14b, 0x00000000} }, /* 2.158e-17 */
|
||||
/**/ ua3 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
|
||||
/**/ ub3 = {{0x3cc81898, 0x00000000} }, /* 6.688e-16 */
|
||||
/**/ u4 = {{0x399856c2, 0x00000000} }, /* 3e-31 */
|
||||
/**/ u5 = {{0x3c39d80a, 0x00000000} }, /* 1.401e-18 */
|
||||
/**/ u6 = {{0x3c374c5a, 0x00000000} }, /* 1.263e-18 */
|
||||
/**/ u7 = {{0x39903beb, 0x00000000} }, /* 2.001e-31 */
|
||||
/**/ u8 = {{0x399c56ae, 0x00000000} }, /* 3.493e-31 */
|
||||
/**/ u9 = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */
|
||||
/**/ ua9 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
|
||||
/**/ ub9 = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */
|
||||
/**/ u10 = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */
|
||||
/**/ ua10 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
|
||||
/**/ ub10 = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */
|
||||
/**/ u11 = {{0x39e509b6, 0x00000000} }, /* 8.298e-30 */
|
||||
/**/ u12 = {{0x39e509b6, 0x00000000} }, /* 8.298e-30 */
|
||||
/**/ u13 = {{0x3c39d80a, 0x00000000} }, /* 1.401e-18 */
|
||||
/**/ u14 = {{0x3c374c5a, 0x00000000} }, /* 1.263e-18 */
|
||||
/**/ u15 = {{0x3ab5767a, 0x00000000} }, /* 6.935e-26 */
|
||||
/**/ u16 = {{0x3ab57744, 0x00000000} }, /* 6.936e-26 */
|
||||
/**/ u17 = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */
|
||||
/**/ ua17 = {{0x3bfdb11f, 0x00000000} }, /* 1.006e-19 */
|
||||
/**/ ub17 = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */
|
||||
/**/ u18 = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */
|
||||
/**/ ua18 = {{0x3bfdb11f, 0x00000000} }, /* 1.006e-19 */
|
||||
/**/ ub18 = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */
|
||||
/**/ u19 = {{0x39a13b61, 0x00000000} }, /* 4.248e-31 */
|
||||
/**/ u20 = {{0x39a13b61, 0x00000000} }, /* 4.248e-31 */
|
||||
/**/ u21 = {{0x3c3bb9b8, 0x00000000} }, /* 1.503e-18 */
|
||||
/**/ u22 = {{0x3c392e08, 0x00000000} }, /* 1.365e-18 */
|
||||
/**/ u23 = {{0x3a0ce706, 0x00000000} }, /* 4.560e-29 */
|
||||
/**/ u24 = {{0x3a0cff5d, 0x00000000} }, /* 4.575e-29 */
|
||||
/**/ u25 = {{0x3c7d0ac7, 0x00000000} }, /* 2.519e-17 */
|
||||
/**/ ua25 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
|
||||
/**/ ub25 = {{0x3ccc2375, 0x00000000} }, /* 7.810e-16 */
|
||||
/**/ u26 = {{0x3c7e40af, 0x00000000} }, /* 2.624e-17 */
|
||||
/**/ ua26 = {{0x3bfd8b58, 0x00000000} }, /* 1.001e-19 */
|
||||
/**/ ub26 = {{0x3ccc6405, 0x00000000} }, /* 7.880e-16 */
|
||||
/**/ u27 = {{0x3ad421cb, 0x00000000} }, /* 2.602e-25 */
|
||||
/**/ u28 = {{0x3ad421cb, 0x00000000} }, /* 2.602e-25 */
|
||||
|
||||
/**/ mp1 = {{0x3FF921FB, 0x58000000} },
|
||||
/**/ mp2 = {{0xBE4DDE97, 0x3C000000} },
|
||||
/**/ mp3 = {{0xBC8CB3B3, 0x99D747F2} },
|
||||
/**/ pp3 = {{0xBC8CB3B3, 0x98000000} },
|
||||
/**/ pp4 = {{0xbacd747f, 0x23e32ed7} },
|
||||
/**/ hpinv = {{0x3FE45F30, 0x6DC9C883} },
|
||||
/**/ toint = {{0x43380000, 0x00000000} };
|
||||
|
||||
#else
|
||||
#ifdef LITTLE_ENDI
|
||||
|
||||
static const number
|
||||
/* polynomial I */
|
||||
/**/ d3 = {{0x55555555, 0x3FD55555} }, /* 0.333... */
|
||||
/**/ d5 = {{0x111107C6, 0x3FC11111} }, /* 0.133... */
|
||||
/**/ d7 = {{0x1CDB8745, 0x3FABA1BA} }, /* . */
|
||||
/**/ d9 = {{0x49CFC666, 0x3F9664ED} }, /* . */
|
||||
/**/ d11 = {{0x3CF2E4EA, 0x3F82385A} }, /* . */
|
||||
/* polynomial II */
|
||||
/**/ a3 = {{0x55555555, 0x3fd55555} }, /* 1/3 */
|
||||
/**/ aa3 = {{0x55555555, 0x3c755555} }, /* 1/3-a3 */
|
||||
/**/ a5 = {{0x11111111, 0x3fc11111} }, /* 2/15 */
|
||||
/**/ aa5 = {{0x11111111, 0x3c411111} }, /* 2/15-a5 */
|
||||
/**/ a7 = {{0x1ba1ba1c, 0x3faba1ba} }, /* 17/315 */
|
||||
/**/ aa7 = {{0x17917918, 0xbc479179} }, /* ()-a7 */
|
||||
/**/ a9 = {{0x882c10fa, 0x3f9664f4} }, /* 62/2835 */
|
||||
/**/ aa9 = {{0x8b6c44fd, 0xbc09a528} }, /* ()-a9 */
|
||||
/**/ a11 = {{0x55e6c23d, 0x3f8226e3} }, /* . */
|
||||
/**/ aa11 = {{0x8f1a2c13, 0xbc2c292b} }, /* . */
|
||||
/**/ a13 = {{0x0e157de0, 0x3f6d6d3d} }, /* . */
|
||||
/**/ aa13 = {{0xc968d971, 0xbc0280cf} }, /* . */
|
||||
/**/ a15 = {{0x452b75e3, 0x3f57da36} }, /* . */
|
||||
#if 0
|
||||
/**/ aa15 = {{0xb285d2ed, 0xbbf25789} }, /* . */
|
||||
#endif
|
||||
/**/ a17 = {{0x48036744, 0x3f435582} }, /* . */
|
||||
#if 0
|
||||
/**/ aa17 = {{0x563f1f23, 0x3be488d9} }, /* . */
|
||||
#endif
|
||||
/**/ a19 = {{0x734d1664, 0x3f2f57d7} }, /* . */
|
||||
#if 0
|
||||
/**/ aa19 = {{0x913ccb50, 0x3bb0d55a} }, /* . */
|
||||
#endif
|
||||
/**/ a21 = {{0x8afcafad, 0x3f1967e1} }, /* . */
|
||||
#if 0
|
||||
/**/ aa21 = {{0xa42d44e6, 0xbbbd7614} }, /* . */
|
||||
#endif
|
||||
/**/ a23 = {{0xeea25259, 0x3f0497d8} }, /* . */
|
||||
#if 0
|
||||
/**/ aa23 = {{0x2e4d2863, 0x3b99f2d0} }, /* . */
|
||||
#endif
|
||||
/**/ a25 = {{0xd39a6050, 0x3ef0b132} }, /* . */
|
||||
#if 0
|
||||
/**/ aa25 = {{0xc2c19614, 0x3b93b274} }, /* . */
|
||||
#endif
|
||||
/**/ a27 = {{0xd3ee24e9, 0x3edb0f72} }, /* . */
|
||||
#if 0
|
||||
/**/ aa27 = {{0xdd595609, 0x3b61688d} }, /* . */
|
||||
#endif
|
||||
/* polynomial III */
|
||||
/**/ e0 = {{0x55554DBD, 0x3FD55555} }, /* . */
|
||||
/**/ e1 = {{0xE0A6B45F, 0x3FC11112} }, /* . */
|
||||
|
||||
/* constants */
|
||||
/**/ zero = {{0x00000000, 0x00000000} }, /* 0 */
|
||||
/**/ one = {{0x00000000, 0x3ff00000} }, /* 1 */
|
||||
/**/ mone = {{0x00000000, 0xbff00000} }, /*-1 */
|
||||
/**/ mfftnhf = {{0x00000000, 0xc02f0000} }, /*-15.5 */
|
||||
/**/ two8 = {{0x00000000, 0x40700000} }, /* 256 */
|
||||
|
||||
/**/ g1 = {{0x00000000, 0x3e4b096c} }, /* 1.259e-8 */
|
||||
/**/ g2 = {{0x00000000, 0x3faf212d} }, /* 0.0608 */
|
||||
/**/ g3 = {{0x00000000, 0x3fe92f1a} }, /* 0.787 */
|
||||
/**/ g4 = {{0x00000000, 0x40390000} }, /* 25.0 */
|
||||
/**/ g5 = {{0x00000000, 0x4197d784} }, /* 1e8 */
|
||||
/**/ gy1 = {{0x9abcaf48, 0x3e7ad7f2} }, /* 1e-7 */
|
||||
/**/ gy2 = {{0x00000000, 0x3faf212d} }, /* 0.0608 */
|
||||
|
||||
/**/ u1 = {{0x00000000, 0x3cc8c33a} }, /* 6.873e-16 */
|
||||
/**/ u2 = {{0x00000000, 0x3983dc4d} }, /* 1.224e-31 */
|
||||
/**/ u3 = {{0x00000000, 0x3c78e14b} }, /* 2.158e-17 */
|
||||
/**/ ua3 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
|
||||
/**/ ub3 = {{0x00000000, 0x3cc81898} }, /* 6.688e-16 */
|
||||
/**/ u4 = {{0x00000000, 0x399856c2} }, /* 3e-31 */
|
||||
/**/ u5 = {{0x00000000, 0x3c39d80a} }, /* 1.401e-18 */
|
||||
/**/ u6 = {{0x00000000, 0x3c374c5a} }, /* 1.263e-18 */
|
||||
/**/ u7 = {{0x00000000, 0x39903beb} }, /* 2.001e-31 */
|
||||
/**/ u8 = {{0x00000000, 0x399c56ae} }, /* 3.493e-31 */
|
||||
/**/ u9 = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */
|
||||
/**/ ua9 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
|
||||
/**/ ub9 = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */
|
||||
/**/ u10 = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */
|
||||
/**/ ua10 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
|
||||
/**/ ub10 = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */
|
||||
/**/ u11 = {{0x00000000, 0x39e509b6} }, /* 8.298e-30 */
|
||||
/**/ u12 = {{0x00000000, 0x39e509b6} }, /* 8.298e-30 */
|
||||
/**/ u13 = {{0x00000000, 0x3c39d80a} }, /* 1.401e-18 */
|
||||
/**/ u14 = {{0x00000000, 0x3c374c5a} }, /* 1.263e-18 */
|
||||
/**/ u15 = {{0x00000000, 0x3ab5767a} }, /* 6.935e-26 */
|
||||
/**/ u16 = {{0x00000000, 0x3ab57744} }, /* 6.936e-26 */
|
||||
/**/ u17 = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */
|
||||
/**/ ua17 = {{0x00000000, 0x3bfdb11f} }, /* 1.006e-19 */
|
||||
/**/ ub17 = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */
|
||||
/**/ u18 = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */
|
||||
/**/ ua18 = {{0x00000000, 0x3bfdb11f} }, /* 1.006e-19 */
|
||||
/**/ ub18 = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */
|
||||
/**/ u19 = {{0x00000000, 0x39a13b61} }, /* 4.248e-31 */
|
||||
/**/ u20 = {{0x00000000, 0x39a13b61} }, /* 4.248e-31 */
|
||||
/**/ u21 = {{0x00000000, 0x3c3bb9b8} }, /* 1.503e-18 */
|
||||
/**/ u22 = {{0x00000000, 0x3c392e08} }, /* 1.365e-18 */
|
||||
/**/ u23 = {{0x00000000, 0x3a0ce706} }, /* 4.560e-29 */
|
||||
/**/ u24 = {{0x00000000, 0x3a0cff5d} }, /* 4.575e-29 */
|
||||
/**/ u25 = {{0x00000000, 0x3c7d0ac7} }, /* 2.519e-17 */
|
||||
/**/ ua25 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
|
||||
/**/ ub25 = {{0x00000000, 0x3ccc2375} }, /* 7.810e-16 */
|
||||
/**/ u26 = {{0x00000000, 0x3c7e40af} }, /* 2.624e-17 */
|
||||
/**/ ua26 = {{0x00000000, 0x3bfd8b58} }, /* 1.001e-19 */
|
||||
/**/ ub26 = {{0x00000000, 0x3ccc6405} }, /* 7.880e-16 */
|
||||
/**/ u27 = {{0x00000000, 0x3ad421cb} }, /* 2.602e-25 */
|
||||
/**/ u28 = {{0x00000000, 0x3ad421cb} }, /* 2.602e-25 */
|
||||
|
||||
/**/ mp1 = {{0x58000000, 0x3FF921FB} },
|
||||
/**/ mp2 = {{0x3C000000, 0xBE4DDE97} },
|
||||
/**/ mp3 = {{0x99D747F2, 0xBC8CB3B3} },
|
||||
/**/ pp3 = {{0x98000000, 0xBC8CB3B3} },
|
||||
/**/ pp4 = {{0x23e32ed7, 0xbacd747f} },
|
||||
/**/ hpinv = {{0x6DC9C883, 0x3FE45F30} },
|
||||
/**/ toint = {{0x00000000, 0x43380000} };
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#define ZERO zero.d
|
||||
#define ONE one.d
|
||||
#define MONE mone.d
|
||||
#define TWO8 two8.d
|
||||
|
||||
#endif
|
1526
libgcc-math/dbl-64/utan.tbl
Normal file
1526
libgcc-math/dbl-64/utan.tbl
Normal file
File diff suppressed because it is too large
Load diff
89
libgcc-math/flt-32/e_acosf.c
Normal file
89
libgcc-math/flt-32/e_acosf.c
Normal file
|
@ -0,0 +1,89 @@
|
|||
/* e_acosf.c -- float version of e_acos.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_acosf.c,v 1.5 1995/05/12 04:57:16 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
one = 1.0000000000e+00, /* 0x3F800000 */
|
||||
pi = 3.1415925026e+00, /* 0x40490fda */
|
||||
pio2_hi = 1.5707962513e+00, /* 0x3fc90fda */
|
||||
pio2_lo = 7.5497894159e-08, /* 0x33a22168 */
|
||||
pS0 = 1.6666667163e-01, /* 0x3e2aaaab */
|
||||
pS1 = -3.2556581497e-01, /* 0xbea6b090 */
|
||||
pS2 = 2.0121252537e-01, /* 0x3e4e0aa8 */
|
||||
pS3 = -4.0055535734e-02, /* 0xbd241146 */
|
||||
pS4 = 7.9153501429e-04, /* 0x3a4f7f04 */
|
||||
pS5 = 3.4793309169e-05, /* 0x3811ef08 */
|
||||
qS1 = -2.4033949375e+00, /* 0xc019d139 */
|
||||
qS2 = 2.0209457874e+00, /* 0x4001572d */
|
||||
qS3 = -6.8828397989e-01, /* 0xbf303361 */
|
||||
qS4 = 7.7038154006e-02; /* 0x3d9dc62e */
|
||||
|
||||
#ifdef __STDC__
|
||||
float __ieee754_acosf(float x)
|
||||
#else
|
||||
float __ieee754_acosf(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
float z,p,q,r,w,s,c,df;
|
||||
int32_t hx,ix;
|
||||
GET_FLOAT_WORD(hx,x);
|
||||
ix = hx&0x7fffffff;
|
||||
if(ix==0x3f800000) { /* |x|==1 */
|
||||
if(hx>0) return 0.0; /* acos(1) = 0 */
|
||||
else return pi+(float)2.0*pio2_lo; /* acos(-1)= pi */
|
||||
} else if(ix>0x3f800000) { /* |x| >= 1 */
|
||||
return (x-x)/(x-x); /* acos(|x|>1) is NaN */
|
||||
}
|
||||
if(ix<0x3f000000) { /* |x| < 0.5 */
|
||||
if(ix<=0x23000000) return pio2_hi+pio2_lo;/*if|x|<2**-57*/
|
||||
z = x*x;
|
||||
p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
|
||||
q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4)));
|
||||
r = p/q;
|
||||
return pio2_hi - (x - (pio2_lo-x*r));
|
||||
} else if (hx<0) { /* x < -0.5 */
|
||||
z = (one+x)*(float)0.5;
|
||||
p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
|
||||
q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4)));
|
||||
s = __ieee754_sqrtf(z);
|
||||
r = p/q;
|
||||
w = r*s-pio2_lo;
|
||||
return pi - (float)2.0*(s+w);
|
||||
} else { /* x > 0.5 */
|
||||
int32_t idf;
|
||||
z = (one-x)*(float)0.5;
|
||||
s = __ieee754_sqrtf(z);
|
||||
df = s;
|
||||
GET_FLOAT_WORD(idf,df);
|
||||
SET_FLOAT_WORD(df,idf&0xfffff000);
|
||||
c = (z-df*df)/(s+df);
|
||||
p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
|
||||
q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4)));
|
||||
r = p/q;
|
||||
w = r*s+c;
|
||||
return (float)2.0*(df+w);
|
||||
}
|
||||
}
|
110
libgcc-math/flt-32/e_asinf.c
Normal file
110
libgcc-math/flt-32/e_asinf.c
Normal file
|
@ -0,0 +1,110 @@
|
|||
/* e_asinf.c -- float version of e_asin.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
Modifications for single precision expansion are
|
||||
Copyright (C) 2001 Stephen L. Moshier <moshier@na-net.ornl.gov>
|
||||
and are incorporated herein by permission of the author. The author
|
||||
reserves the right to distribute this material elsewhere under different
|
||||
copying permissions. These modifications are distributed here under
|
||||
the following terms:
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_asinf.c,v 1.5 1995/05/12 04:57:25 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
one = 1.0000000000e+00, /* 0x3F800000 */
|
||||
huge = 1.000e+30,
|
||||
|
||||
pio2_hi = 1.57079637050628662109375f,
|
||||
pio2_lo = -4.37113900018624283e-8f,
|
||||
pio4_hi = 0.785398185253143310546875f,
|
||||
|
||||
/* asin x = x + x^3 p(x^2)
|
||||
-0.5 <= x <= 0.5;
|
||||
Peak relative error 4.8e-9 */
|
||||
p0 = 1.666675248e-1f,
|
||||
p1 = 7.495297643e-2f,
|
||||
p2 = 4.547037598e-2f,
|
||||
p3 = 2.417951451e-2f,
|
||||
p4 = 4.216630880e-2f;
|
||||
|
||||
#ifdef __STDC__
|
||||
float __ieee754_asinf(float x)
|
||||
#else
|
||||
float __ieee754_asinf(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
float t,w,p,q,c,r,s;
|
||||
int32_t hx,ix;
|
||||
GET_FLOAT_WORD(hx,x);
|
||||
ix = hx&0x7fffffff;
|
||||
if(ix==0x3f800000) {
|
||||
/* asin(1)=+-pi/2 with inexact */
|
||||
return x*pio2_hi+x*pio2_lo;
|
||||
} else if(ix> 0x3f800000) { /* |x|>= 1 */
|
||||
return (x-x)/(x-x); /* asin(|x|>1) is NaN */
|
||||
} else if (ix<0x3f000000) { /* |x|<0.5 */
|
||||
if(ix<0x32000000) { /* if |x| < 2**-27 */
|
||||
if(huge+x>one) return x;/* return x with inexact if x!=0*/
|
||||
} else {
|
||||
t = x*x;
|
||||
w = t * (p0 + t * (p1 + t * (p2 + t * (p3 + t * p4))));
|
||||
return x+x*w;
|
||||
}
|
||||
}
|
||||
/* 1> |x|>= 0.5 */
|
||||
w = one-fabsf(x);
|
||||
t = w*0.5f;
|
||||
p = t * (p0 + t * (p1 + t * (p2 + t * (p3 + t * p4))));
|
||||
s = __ieee754_sqrtf(t);
|
||||
if(ix>=0x3F79999A) { /* if |x| > 0.975 */
|
||||
t = pio2_hi-(2.0f*(s+s*p)-pio2_lo);
|
||||
} else {
|
||||
int32_t iw;
|
||||
w = s;
|
||||
GET_FLOAT_WORD(iw,w);
|
||||
SET_FLOAT_WORD(w,iw&0xfffff000);
|
||||
c = (t-w*w)/(s+w);
|
||||
r = p;
|
||||
p = 2.0f*s*r-(pio2_lo-2.0f*c);
|
||||
q = pio4_hi-2.0f*w;
|
||||
t = pio4_hi-(p-q);
|
||||
}
|
||||
if(hx>0) return t; else return -t;
|
||||
}
|
105
libgcc-math/flt-32/e_atan2f.c
Normal file
105
libgcc-math/flt-32/e_atan2f.c
Normal file
|
@ -0,0 +1,105 @@
|
|||
/* e_atan2f.c -- float version of e_atan2.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_atan2f.c,v 1.4 1995/05/10 20:44:53 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
tiny = 1.0e-30,
|
||||
zero = 0.0,
|
||||
pi_o_4 = 7.8539818525e-01, /* 0x3f490fdb */
|
||||
pi_o_2 = 1.5707963705e+00, /* 0x3fc90fdb */
|
||||
pi = 3.1415927410e+00, /* 0x40490fdb */
|
||||
pi_lo = -8.7422776573e-08; /* 0xb3bbbd2e */
|
||||
|
||||
#ifdef __STDC__
|
||||
float __ieee754_atan2f(float y, float x)
|
||||
#else
|
||||
float __ieee754_atan2f(y,x)
|
||||
float y,x;
|
||||
#endif
|
||||
{
|
||||
float z;
|
||||
int32_t k,m,hx,hy,ix,iy;
|
||||
|
||||
GET_FLOAT_WORD(hx,x);
|
||||
ix = hx&0x7fffffff;
|
||||
GET_FLOAT_WORD(hy,y);
|
||||
iy = hy&0x7fffffff;
|
||||
if((ix>0x7f800000)||
|
||||
(iy>0x7f800000)) /* x or y is NaN */
|
||||
return x+y;
|
||||
if(hx==0x3f800000) return __atanf(y); /* x=1.0 */
|
||||
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */
|
||||
|
||||
/* when y = 0 */
|
||||
if(iy==0) {
|
||||
switch(m) {
|
||||
case 0:
|
||||
case 1: return y; /* atan(+-0,+anything)=+-0 */
|
||||
case 2: return pi+tiny;/* atan(+0,-anything) = pi */
|
||||
case 3: return -pi-tiny;/* atan(-0,-anything) =-pi */
|
||||
}
|
||||
}
|
||||
/* when x = 0 */
|
||||
if(ix==0) return (hy<0)? -pi_o_2-tiny: pi_o_2+tiny;
|
||||
|
||||
/* when x is INF */
|
||||
if(ix==0x7f800000) {
|
||||
if(iy==0x7f800000) {
|
||||
switch(m) {
|
||||
case 0: return pi_o_4+tiny;/* atan(+INF,+INF) */
|
||||
case 1: return -pi_o_4-tiny;/* atan(-INF,+INF) */
|
||||
case 2: return (float)3.0*pi_o_4+tiny;/*atan(+INF,-INF)*/
|
||||
case 3: return (float)-3.0*pi_o_4-tiny;/*atan(-INF,-INF)*/
|
||||
}
|
||||
} else {
|
||||
switch(m) {
|
||||
case 0: return zero ; /* atan(+...,+INF) */
|
||||
case 1: return -zero ; /* atan(-...,+INF) */
|
||||
case 2: return pi+tiny ; /* atan(+...,-INF) */
|
||||
case 3: return -pi-tiny ; /* atan(-...,-INF) */
|
||||
}
|
||||
}
|
||||
}
|
||||
/* when y is INF */
|
||||
if(iy==0x7f800000) return (hy<0)? -pi_o_2-tiny: pi_o_2+tiny;
|
||||
|
||||
/* compute y/x */
|
||||
k = (iy-ix)>>23;
|
||||
if(k > 60) z=pi_o_2+(float)0.5*pi_lo; /* |y/x| > 2**60 */
|
||||
else if(hx<0&&k<-60) z=0.0; /* |y|/x < -2**60 */
|
||||
else z=__atanf(fabsf(y/x)); /* safe to do y/x */
|
||||
switch (m) {
|
||||
case 0: return z ; /* atan(+,+) */
|
||||
case 1: {
|
||||
u_int32_t zh;
|
||||
GET_FLOAT_WORD(zh,z);
|
||||
SET_FLOAT_WORD(z,zh ^ 0x80000000);
|
||||
}
|
||||
return z ; /* atan(-,+) */
|
||||
case 2: return pi-(z-pi_lo);/* atan(+,-) */
|
||||
default: /* case 3 */
|
||||
return (z-pi_lo)-pi;/* atan(-,-) */
|
||||
}
|
||||
}
|
140
libgcc-math/flt-32/e_expf.c
Normal file
140
libgcc-math/flt-32/e_expf.c
Normal file
|
@ -0,0 +1,140 @@
|
|||
/* Single-precision floating point e^x.
|
||||
Copyright (C) 1997, 1998, 2005, 2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/* How this works:
|
||||
|
||||
The input value, x, is written as
|
||||
|
||||
x = n * ln(2) + t/512 + delta[t] + x;
|
||||
|
||||
where:
|
||||
- n is an integer, 127 >= n >= -150;
|
||||
- t is an integer, 177 >= t >= -177
|
||||
- delta is based on a table entry, delta[t] < 2^-28
|
||||
- x is whatever is left, |x| < 2^-10
|
||||
|
||||
Then e^x is approximated as
|
||||
|
||||
e^x = 2^n ( e^(t/512 + delta[t])
|
||||
+ ( e^(t/512 + delta[t])
|
||||
* ( p(x + delta[t] + n * ln(2)) - delta ) ) )
|
||||
|
||||
where
|
||||
- p(x) is a polynomial approximating e(x)-1;
|
||||
- e^(t/512 + delta[t]) is obtained from a table.
|
||||
|
||||
The table used is the same one as for the double precision version;
|
||||
since we have the table, we might as well use it.
|
||||
|
||||
It turns out to be faster to do calculations in double precision than
|
||||
to perform an 'accurate table method' expf, because of the range reduction
|
||||
overhead (compare exp2f).
|
||||
*/
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
#include <float.h>
|
||||
#include <ieee754.h>
|
||||
#include <math.h>
|
||||
#include <fenv.h>
|
||||
#include <inttypes.h>
|
||||
#include <math_private.h>
|
||||
|
||||
extern const float __exp_deltatable[178];
|
||||
extern const double __exp_atable[355] /* __attribute__((mode(DF))) */;
|
||||
|
||||
static const volatile float TWOM100 = 7.88860905e-31;
|
||||
static const volatile float TWO127 = 1.7014118346e+38;
|
||||
|
||||
float
|
||||
__ieee754_expf (float x)
|
||||
{
|
||||
static const float himark = 88.72283935546875;
|
||||
static const float lomark = -103.972084045410;
|
||||
/* Check for usual case. */
|
||||
if (isless (x, himark) && isgreater (x, lomark))
|
||||
{
|
||||
static const float THREEp42 = 13194139533312.0;
|
||||
static const float THREEp22 = 12582912.0;
|
||||
/* 1/ln(2). */
|
||||
#undef M_1_LN2
|
||||
static const float M_1_LN2 = 1.44269502163f;
|
||||
/* ln(2) */
|
||||
#undef M_LN2
|
||||
static const double M_LN2 = .6931471805599452862;
|
||||
|
||||
int tval;
|
||||
double x22, t, result, dx;
|
||||
float n, delta;
|
||||
union ieee754_double ex2_u;
|
||||
fenv_t oldenv;
|
||||
|
||||
feholdexcept (&oldenv);
|
||||
#ifdef FE_TONEAREST
|
||||
fesetround (FE_TONEAREST);
|
||||
#endif
|
||||
|
||||
/* Calculate n. */
|
||||
n = x * M_1_LN2 + THREEp22;
|
||||
n -= THREEp22;
|
||||
dx = x - n*M_LN2;
|
||||
|
||||
/* Calculate t/512. */
|
||||
t = dx + THREEp42;
|
||||
t -= THREEp42;
|
||||
dx -= t;
|
||||
|
||||
/* Compute tval = t. */
|
||||
tval = (int) (t * 512.0);
|
||||
|
||||
if (t >= 0)
|
||||
delta = - __exp_deltatable[tval];
|
||||
else
|
||||
delta = __exp_deltatable[-tval];
|
||||
|
||||
/* Compute ex2 = 2^n e^(t/512+delta[t]). */
|
||||
ex2_u.d = __exp_atable[tval+177];
|
||||
ex2_u.ieee.exponent += (int) n;
|
||||
|
||||
/* Approximate e^(dx+delta) - 1, using a second-degree polynomial,
|
||||
with maximum error in [-2^-10-2^-28,2^-10+2^-28]
|
||||
less than 5e-11. */
|
||||
x22 = (0.5000000496709180453 * dx + 1.0000001192102037084) * dx + delta;
|
||||
|
||||
/* Return result. */
|
||||
fesetenv (&oldenv);
|
||||
|
||||
result = x22 * ex2_u.d + ex2_u.d;
|
||||
return (float) result;
|
||||
}
|
||||
/* Exceptional cases: */
|
||||
else if (isless (x, himark))
|
||||
{
|
||||
if (__isinff (x))
|
||||
/* e^-inf == 0, with no error. */
|
||||
return 0;
|
||||
else
|
||||
/* Underflow */
|
||||
return TWOM100 * TWOM100;
|
||||
}
|
||||
else
|
||||
/* Return x, if x is a NaN or Inf; or overflow, otherwise. */
|
||||
return TWO127*x;
|
||||
}
|
67
libgcc-math/flt-32/e_log10f.c
Normal file
67
libgcc-math/flt-32/e_log10f.c
Normal file
|
@ -0,0 +1,67 @@
|
|||
/* e_log10f.c -- float version of e_log10.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_log10f.c,v 1.5 1995/05/10 20:45:53 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
two25 = 3.3554432000e+07, /* 0x4c000000 */
|
||||
ivln10 = 4.3429449201e-01, /* 0x3ede5bd9 */
|
||||
log10_2hi = 3.0102920532e-01, /* 0x3e9a2080 */
|
||||
log10_2lo = 7.9034151668e-07; /* 0x355427db */
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float zero = 0.0;
|
||||
#else
|
||||
static float zero = 0.0;
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
float __ieee754_log10f(float x)
|
||||
#else
|
||||
float __ieee754_log10f(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
float y,z;
|
||||
int32_t i,k,hx;
|
||||
|
||||
GET_FLOAT_WORD(hx,x);
|
||||
|
||||
k=0;
|
||||
if (hx < 0x00800000) { /* x < 2**-126 */
|
||||
if ((hx&0x7fffffff)==0)
|
||||
return -two25/(x-x); /* log(+-0)=-inf */
|
||||
if (hx<0) return (x-x)/(x-x); /* log(-#) = NaN */
|
||||
k -= 25; x *= two25; /* subnormal number, scale up x */
|
||||
GET_FLOAT_WORD(hx,x);
|
||||
}
|
||||
if (hx >= 0x7f800000) return x+x;
|
||||
k += (hx>>23)-127;
|
||||
i = ((u_int32_t)k&0x80000000)>>31;
|
||||
hx = (hx&0x007fffff)|((0x7f-i)<<23);
|
||||
y = (float)(k+i);
|
||||
SET_FLOAT_WORD(x,hx);
|
||||
z = y*log10_2lo + ivln10*__ieee754_logf(x);
|
||||
return z+y*log10_2hi;
|
||||
}
|
99
libgcc-math/flt-32/e_logf.c
Normal file
99
libgcc-math/flt-32/e_logf.c
Normal file
|
@ -0,0 +1,99 @@
|
|||
/* e_logf.c -- float version of e_log.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_logf.c,v 1.4 1995/05/10 20:45:54 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
|
||||
ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */
|
||||
two25 = 3.355443200e+07, /* 0x4c000000 */
|
||||
Lg1 = 6.6666668653e-01, /* 3F2AAAAB */
|
||||
Lg2 = 4.0000000596e-01, /* 3ECCCCCD */
|
||||
Lg3 = 2.8571429849e-01, /* 3E924925 */
|
||||
Lg4 = 2.2222198546e-01, /* 3E638E29 */
|
||||
Lg5 = 1.8183572590e-01, /* 3E3A3325 */
|
||||
Lg6 = 1.5313838422e-01, /* 3E1CD04F */
|
||||
Lg7 = 1.4798198640e-01; /* 3E178897 */
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float zero = 0.0;
|
||||
#else
|
||||
static float zero = 0.0;
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
float __ieee754_logf(float x)
|
||||
#else
|
||||
float __ieee754_logf(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
float hfsq,f,s,z,R,w,t1,t2,dk;
|
||||
int32_t k,ix,i,j;
|
||||
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
|
||||
k=0;
|
||||
if (ix < 0x00800000) { /* x < 2**-126 */
|
||||
if ((ix&0x7fffffff)==0)
|
||||
return -two25/(x-x); /* log(+-0)=-inf */
|
||||
if (ix<0) return (x-x)/(x-x); /* log(-#) = NaN */
|
||||
k -= 25; x *= two25; /* subnormal number, scale up x */
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
}
|
||||
if (ix >= 0x7f800000) return x+x;
|
||||
k += (ix>>23)-127;
|
||||
ix &= 0x007fffff;
|
||||
i = (ix+(0x95f64<<3))&0x800000;
|
||||
SET_FLOAT_WORD(x,ix|(i^0x3f800000)); /* normalize x or x/2 */
|
||||
k += (i>>23);
|
||||
f = x-(float)1.0;
|
||||
if((0x007fffff&(15+ix))<16) { /* |f| < 2**-20 */
|
||||
if(f==zero) {
|
||||
if(k==0) return zero; else {dk=(float)k;
|
||||
return dk*ln2_hi+dk*ln2_lo;}
|
||||
}
|
||||
R = f*f*((float)0.5-(float)0.33333333333333333*f);
|
||||
if(k==0) return f-R; else {dk=(float)k;
|
||||
return dk*ln2_hi-((R-dk*ln2_lo)-f);}
|
||||
}
|
||||
s = f/((float)2.0+f);
|
||||
dk = (float)k;
|
||||
z = s*s;
|
||||
i = ix-(0x6147a<<3);
|
||||
w = z*z;
|
||||
j = (0x6b851<<3)-ix;
|
||||
t1= w*(Lg2+w*(Lg4+w*Lg6));
|
||||
t2= z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7)));
|
||||
i |= j;
|
||||
R = t2+t1;
|
||||
if(i>0) {
|
||||
hfsq=(float)0.5*f*f;
|
||||
if(k==0) return f-(hfsq-s*(hfsq+R)); else
|
||||
return dk*ln2_hi-((hfsq-(s*(hfsq+R)+dk*ln2_lo))-f);
|
||||
} else {
|
||||
if(k==0) return f-s*(f-R); else
|
||||
return dk*ln2_hi-((s*(f-R)-dk*ln2_lo)-f);
|
||||
}
|
||||
}
|
257
libgcc-math/flt-32/e_powf.c
Normal file
257
libgcc-math/flt-32/e_powf.c
Normal file
|
@ -0,0 +1,257 @@
|
|||
/* e_powf.c -- float version of e_pow.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_powf.c,v 1.7 1996/04/08 15:43:44 phil Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
static const float huge = 1.0e+30, tiny = 1.0e-30;
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
bp[] = {1.0, 1.5,},
|
||||
dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */
|
||||
dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */
|
||||
zero = 0.0,
|
||||
one = 1.0,
|
||||
two = 2.0,
|
||||
two24 = 16777216.0, /* 0x4b800000 */
|
||||
/* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */
|
||||
L1 = 6.0000002384e-01, /* 0x3f19999a */
|
||||
L2 = 4.2857143283e-01, /* 0x3edb6db7 */
|
||||
L3 = 3.3333334327e-01, /* 0x3eaaaaab */
|
||||
L4 = 2.7272811532e-01, /* 0x3e8ba305 */
|
||||
L5 = 2.3066075146e-01, /* 0x3e6c3255 */
|
||||
L6 = 2.0697501302e-01, /* 0x3e53f142 */
|
||||
P1 = 1.6666667163e-01, /* 0x3e2aaaab */
|
||||
P2 = -2.7777778450e-03, /* 0xbb360b61 */
|
||||
P3 = 6.6137559770e-05, /* 0x388ab355 */
|
||||
P4 = -1.6533901999e-06, /* 0xb5ddea0e */
|
||||
P5 = 4.1381369442e-08, /* 0x3331bb4c */
|
||||
lg2 = 6.9314718246e-01, /* 0x3f317218 */
|
||||
lg2_h = 6.93145752e-01, /* 0x3f317200 */
|
||||
lg2_l = 1.42860654e-06, /* 0x35bfbe8c */
|
||||
ovt = 4.2995665694e-08, /* -(128-log2(ovfl+.5ulp)) */
|
||||
cp = 9.6179670095e-01, /* 0x3f76384f =2/(3ln2) */
|
||||
cp_h = 9.6179199219e-01, /* 0x3f763800 =head of cp */
|
||||
cp_l = 4.7017383622e-06, /* 0x369dc3a0 =tail of cp_h */
|
||||
ivln2 = 1.4426950216e+00, /* 0x3fb8aa3b =1/ln2 */
|
||||
ivln2_h = 1.4426879883e+00, /* 0x3fb8aa00 =16b 1/ln2*/
|
||||
ivln2_l = 7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
|
||||
|
||||
#ifdef __STDC__
|
||||
float __ieee754_powf(float x, float y)
|
||||
#else
|
||||
float __ieee754_powf(x,y)
|
||||
float x, y;
|
||||
#endif
|
||||
{
|
||||
float z,ax,z_h,z_l,p_h,p_l;
|
||||
float y1,t1,t2,r,s,t,u,v,w;
|
||||
int32_t i,j,k,yisint,n;
|
||||
int32_t hx,hy,ix,iy,is;
|
||||
|
||||
GET_FLOAT_WORD(hx,x);
|
||||
GET_FLOAT_WORD(hy,y);
|
||||
ix = hx&0x7fffffff; iy = hy&0x7fffffff;
|
||||
|
||||
/* y==zero: x**0 = 1 */
|
||||
if(iy==0) return one;
|
||||
|
||||
/* x==+-1 */
|
||||
if(x == 1.0) return one;
|
||||
if(x == -1.0 && __isinff(y)) return one;
|
||||
|
||||
/* +-NaN return x+y */
|
||||
if(ix > 0x7f800000 ||
|
||||
iy > 0x7f800000)
|
||||
return x+y;
|
||||
|
||||
/* determine if y is an odd int when x < 0
|
||||
* yisint = 0 ... y is not an integer
|
||||
* yisint = 1 ... y is an odd int
|
||||
* yisint = 2 ... y is an even int
|
||||
*/
|
||||
yisint = 0;
|
||||
if(hx<0) {
|
||||
if(iy>=0x4b800000) yisint = 2; /* even integer y */
|
||||
else if(iy>=0x3f800000) {
|
||||
k = (iy>>23)-0x7f; /* exponent */
|
||||
j = iy>>(23-k);
|
||||
if((j<<(23-k))==iy) yisint = 2-(j&1);
|
||||
}
|
||||
}
|
||||
|
||||
/* special value of y */
|
||||
if (iy==0x7f800000) { /* y is +-inf */
|
||||
if (ix==0x3f800000)
|
||||
return y - y; /* inf**+-1 is NaN */
|
||||
else if (ix > 0x3f800000)/* (|x|>1)**+-inf = inf,0 */
|
||||
return (hy>=0)? y: zero;
|
||||
else /* (|x|<1)**-,+inf = inf,0 */
|
||||
return (hy<0)?-y: zero;
|
||||
}
|
||||
if(iy==0x3f800000) { /* y is +-1 */
|
||||
if(hy<0) return one/x; else return x;
|
||||
}
|
||||
if(hy==0x40000000) return x*x; /* y is 2 */
|
||||
if(hy==0x3f000000) { /* y is 0.5 */
|
||||
if(hx>=0) /* x >= +0 */
|
||||
return __ieee754_sqrtf(x);
|
||||
}
|
||||
|
||||
ax = fabsf(x);
|
||||
/* special value of x */
|
||||
if(ix==0x7f800000||ix==0||ix==0x3f800000){
|
||||
z = ax; /*x is +-0,+-inf,+-1*/
|
||||
if(hy<0) z = one/z; /* z = (1/|x|) */
|
||||
if(hx<0) {
|
||||
if(((ix-0x3f800000)|yisint)==0) {
|
||||
z = (z-z)/(z-z); /* (-1)**non-int is NaN */
|
||||
} else if(yisint==1)
|
||||
z = -z; /* (x<0)**odd = -(|x|**odd) */
|
||||
}
|
||||
return z;
|
||||
}
|
||||
|
||||
/* (x<0)**(non-int) is NaN */
|
||||
if(((((u_int32_t)hx>>31)-1)|yisint)==0) return (x-x)/(x-x);
|
||||
|
||||
/* |y| is huge */
|
||||
if(iy>0x4d000000) { /* if |y| > 2**27 */
|
||||
/* over/underflow if x is not close to one */
|
||||
if(ix<0x3f7ffff8) return (hy<0)? huge*huge:tiny*tiny;
|
||||
if(ix>0x3f800007) return (hy>0)? huge*huge:tiny*tiny;
|
||||
/* now |1-x| is tiny <= 2**-20, suffice to compute
|
||||
log(x) by x-x^2/2+x^3/3-x^4/4 */
|
||||
t = x-1; /* t has 20 trailing zeros */
|
||||
w = (t*t)*((float)0.5-t*((float)0.333333333333-t*(float)0.25));
|
||||
u = ivln2_h*t; /* ivln2_h has 16 sig. bits */
|
||||
v = t*ivln2_l-w*ivln2;
|
||||
t1 = u+v;
|
||||
GET_FLOAT_WORD(is,t1);
|
||||
SET_FLOAT_WORD(t1,is&0xfffff000);
|
||||
t2 = v-(t1-u);
|
||||
} else {
|
||||
float s2,s_h,s_l,t_h,t_l;
|
||||
n = 0;
|
||||
/* take care subnormal number */
|
||||
if(ix<0x00800000)
|
||||
{ax *= two24; n -= 24; GET_FLOAT_WORD(ix,ax); }
|
||||
n += ((ix)>>23)-0x7f;
|
||||
j = ix&0x007fffff;
|
||||
/* determine interval */
|
||||
ix = j|0x3f800000; /* normalize ix */
|
||||
if(j<=0x1cc471) k=0; /* |x|<sqrt(3/2) */
|
||||
else if(j<0x5db3d7) k=1; /* |x|<sqrt(3) */
|
||||
else {k=0;n+=1;ix -= 0x00800000;}
|
||||
SET_FLOAT_WORD(ax,ix);
|
||||
|
||||
/* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
|
||||
u = ax-bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
|
||||
v = one/(ax+bp[k]);
|
||||
s = u*v;
|
||||
s_h = s;
|
||||
GET_FLOAT_WORD(is,s_h);
|
||||
SET_FLOAT_WORD(s_h,is&0xfffff000);
|
||||
/* t_h=ax+bp[k] High */
|
||||
SET_FLOAT_WORD(t_h,((ix>>1)|0x20000000)+0x0040000+(k<<21));
|
||||
t_l = ax - (t_h-bp[k]);
|
||||
s_l = v*((u-s_h*t_h)-s_h*t_l);
|
||||
/* compute log(ax) */
|
||||
s2 = s*s;
|
||||
r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
|
||||
r += s_l*(s_h+s);
|
||||
s2 = s_h*s_h;
|
||||
t_h = (float)3.0+s2+r;
|
||||
GET_FLOAT_WORD(is,t_h);
|
||||
SET_FLOAT_WORD(t_h,is&0xfffff000);
|
||||
t_l = r-((t_h-(float)3.0)-s2);
|
||||
/* u+v = s*(1+...) */
|
||||
u = s_h*t_h;
|
||||
v = s_l*t_h+t_l*s;
|
||||
/* 2/(3log2)*(s+...) */
|
||||
p_h = u+v;
|
||||
GET_FLOAT_WORD(is,p_h);
|
||||
SET_FLOAT_WORD(p_h,is&0xfffff000);
|
||||
p_l = v-(p_h-u);
|
||||
z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
|
||||
z_l = cp_l*p_h+p_l*cp+dp_l[k];
|
||||
/* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
|
||||
t = (float)n;
|
||||
t1 = (((z_h+z_l)+dp_h[k])+t);
|
||||
GET_FLOAT_WORD(is,t1);
|
||||
SET_FLOAT_WORD(t1,is&0xfffff000);
|
||||
t2 = z_l-(((t1-t)-dp_h[k])-z_h);
|
||||
}
|
||||
|
||||
s = one; /* s (sign of result -ve**odd) = -1 else = 1 */
|
||||
if(((((u_int32_t)hx>>31)-1)|(yisint-1))==0)
|
||||
s = -one; /* (-ve)**(odd int) */
|
||||
|
||||
/* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
|
||||
GET_FLOAT_WORD(is,y);
|
||||
SET_FLOAT_WORD(y1,is&0xfffff000);
|
||||
p_l = (y-y1)*t1+y*t2;
|
||||
p_h = y1*t1;
|
||||
z = p_l+p_h;
|
||||
GET_FLOAT_WORD(j,z);
|
||||
if (j>0x43000000) /* if z > 128 */
|
||||
return s*huge*huge; /* overflow */
|
||||
else if (j==0x43000000) { /* if z == 128 */
|
||||
if(p_l+ovt>z-p_h) return s*huge*huge; /* overflow */
|
||||
}
|
||||
else if ((j&0x7fffffff)>0x43160000) /* z <= -150 */
|
||||
return s*tiny*tiny; /* underflow */
|
||||
else if ((u_int32_t) j==0xc3160000){ /* z == -150 */
|
||||
if(p_l<=z-p_h) return s*tiny*tiny; /* underflow */
|
||||
}
|
||||
/*
|
||||
* compute 2**(p_h+p_l)
|
||||
*/
|
||||
i = j&0x7fffffff;
|
||||
k = (i>>23)-0x7f;
|
||||
n = 0;
|
||||
if(i>0x3f000000) { /* if |z| > 0.5, set n = [z+0.5] */
|
||||
n = j+(0x00800000>>(k+1));
|
||||
k = ((n&0x7fffffff)>>23)-0x7f; /* new k for n */
|
||||
SET_FLOAT_WORD(t,n&~(0x007fffff>>k));
|
||||
n = ((n&0x007fffff)|0x00800000)>>(23-k);
|
||||
if(j<0) n = -n;
|
||||
p_h -= t;
|
||||
}
|
||||
t = p_l+p_h;
|
||||
GET_FLOAT_WORD(is,t);
|
||||
SET_FLOAT_WORD(t,is&0xfffff000);
|
||||
u = t*lg2_h;
|
||||
v = (p_l-(t-p_h))*lg2+t*lg2_l;
|
||||
z = u+v;
|
||||
w = v-(z-u);
|
||||
t = z*z;
|
||||
t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5))));
|
||||
r = (z*t1)/(t1-two)-(w+z*w);
|
||||
z = one-(r-z);
|
||||
GET_FLOAT_WORD(j,z);
|
||||
j += (n<<23);
|
||||
if((j>>23)<=0) z = __scalbnf(z,n); /* subnormal output */
|
||||
else SET_FLOAT_WORD(z,j);
|
||||
return s*z;
|
||||
}
|
196
libgcc-math/flt-32/e_rem_pio2f.c
Normal file
196
libgcc-math/flt-32/e_rem_pio2f.c
Normal file
|
@ -0,0 +1,196 @@
|
|||
/* e_rem_pio2f.c -- float version of e_rem_pio2.c
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_rem_pio2f.c,v 1.5 1995/05/10 20:46:03 jtc Exp $";
|
||||
#endif
|
||||
|
||||
/* __ieee754_rem_pio2f(x,y)
|
||||
*
|
||||
* return the remainder of x rem pi/2 in y[0]+y[1]
|
||||
* use __kernel_rem_pio2f()
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
/*
|
||||
* Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
|
||||
*/
|
||||
#ifdef __STDC__
|
||||
static const int32_t two_over_pi[] = {
|
||||
#else
|
||||
static int32_t two_over_pi[] = {
|
||||
#endif
|
||||
0xA2, 0xF9, 0x83, 0x6E, 0x4E, 0x44, 0x15, 0x29, 0xFC,
|
||||
0x27, 0x57, 0xD1, 0xF5, 0x34, 0xDD, 0xC0, 0xDB, 0x62,
|
||||
0x95, 0x99, 0x3C, 0x43, 0x90, 0x41, 0xFE, 0x51, 0x63,
|
||||
0xAB, 0xDE, 0xBB, 0xC5, 0x61, 0xB7, 0x24, 0x6E, 0x3A,
|
||||
0x42, 0x4D, 0xD2, 0xE0, 0x06, 0x49, 0x2E, 0xEA, 0x09,
|
||||
0xD1, 0x92, 0x1C, 0xFE, 0x1D, 0xEB, 0x1C, 0xB1, 0x29,
|
||||
0xA7, 0x3E, 0xE8, 0x82, 0x35, 0xF5, 0x2E, 0xBB, 0x44,
|
||||
0x84, 0xE9, 0x9C, 0x70, 0x26, 0xB4, 0x5F, 0x7E, 0x41,
|
||||
0x39, 0x91, 0xD6, 0x39, 0x83, 0x53, 0x39, 0xF4, 0x9C,
|
||||
0x84, 0x5F, 0x8B, 0xBD, 0xF9, 0x28, 0x3B, 0x1F, 0xF8,
|
||||
0x97, 0xFF, 0xDE, 0x05, 0x98, 0x0F, 0xEF, 0x2F, 0x11,
|
||||
0x8B, 0x5A, 0x0A, 0x6D, 0x1F, 0x6D, 0x36, 0x7E, 0xCF,
|
||||
0x27, 0xCB, 0x09, 0xB7, 0x4F, 0x46, 0x3F, 0x66, 0x9E,
|
||||
0x5F, 0xEA, 0x2D, 0x75, 0x27, 0xBA, 0xC7, 0xEB, 0xE5,
|
||||
0xF1, 0x7B, 0x3D, 0x07, 0x39, 0xF7, 0x8A, 0x52, 0x92,
|
||||
0xEA, 0x6B, 0xFB, 0x5F, 0xB1, 0x1F, 0x8D, 0x5D, 0x08,
|
||||
0x56, 0x03, 0x30, 0x46, 0xFC, 0x7B, 0x6B, 0xAB, 0xF0,
|
||||
0xCF, 0xBC, 0x20, 0x9A, 0xF4, 0x36, 0x1D, 0xA9, 0xE3,
|
||||
0x91, 0x61, 0x5E, 0xE6, 0x1B, 0x08, 0x65, 0x99, 0x85,
|
||||
0x5F, 0x14, 0xA0, 0x68, 0x40, 0x8D, 0xFF, 0xD8, 0x80,
|
||||
0x4D, 0x73, 0x27, 0x31, 0x06, 0x06, 0x15, 0x56, 0xCA,
|
||||
0x73, 0xA8, 0xC9, 0x60, 0xE2, 0x7B, 0xC0, 0x8C, 0x6B,
|
||||
};
|
||||
|
||||
/* This array is like the one in e_rem_pio2.c, but the numbers are
|
||||
single precision and the last 8 bits are forced to 0. */
|
||||
#ifdef __STDC__
|
||||
static const int32_t npio2_hw[] = {
|
||||
#else
|
||||
static int32_t npio2_hw[] = {
|
||||
#endif
|
||||
0x3fc90f00, 0x40490f00, 0x4096cb00, 0x40c90f00, 0x40fb5300, 0x4116cb00,
|
||||
0x412fed00, 0x41490f00, 0x41623100, 0x417b5300, 0x418a3a00, 0x4196cb00,
|
||||
0x41a35c00, 0x41afed00, 0x41bc7e00, 0x41c90f00, 0x41d5a000, 0x41e23100,
|
||||
0x41eec200, 0x41fb5300, 0x4203f200, 0x420a3a00, 0x42108300, 0x4216cb00,
|
||||
0x421d1400, 0x42235c00, 0x4229a500, 0x422fed00, 0x42363600, 0x423c7e00,
|
||||
0x4242c700, 0x42490f00
|
||||
};
|
||||
|
||||
/*
|
||||
* invpio2: 24 bits of 2/pi
|
||||
* pio2_1: first 17 bit of pi/2
|
||||
* pio2_1t: pi/2 - pio2_1
|
||||
* pio2_2: second 17 bit of pi/2
|
||||
* pio2_2t: pi/2 - (pio2_1+pio2_2)
|
||||
* pio2_3: third 17 bit of pi/2
|
||||
* pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3)
|
||||
*/
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
zero = 0.0000000000e+00, /* 0x00000000 */
|
||||
half = 5.0000000000e-01, /* 0x3f000000 */
|
||||
two8 = 2.5600000000e+02, /* 0x43800000 */
|
||||
invpio2 = 6.3661980629e-01, /* 0x3f22f984 */
|
||||
pio2_1 = 1.5707855225e+00, /* 0x3fc90f80 */
|
||||
pio2_1t = 1.0804334124e-05, /* 0x37354443 */
|
||||
pio2_2 = 1.0804273188e-05, /* 0x37354400 */
|
||||
pio2_2t = 6.0770999344e-11, /* 0x2e85a308 */
|
||||
pio2_3 = 6.0770943833e-11, /* 0x2e85a300 */
|
||||
pio2_3t = 6.1232342629e-17; /* 0x248d3132 */
|
||||
|
||||
#ifdef __STDC__
|
||||
int32_t __ieee754_rem_pio2f(float x, float *y)
|
||||
#else
|
||||
int32_t __ieee754_rem_pio2f(x,y)
|
||||
float x,y[];
|
||||
#endif
|
||||
{
|
||||
float z,w,t,r,fn;
|
||||
float tx[3];
|
||||
int32_t e0,i,j,nx,n,ix,hx;
|
||||
|
||||
GET_FLOAT_WORD(hx,x);
|
||||
ix = hx&0x7fffffff;
|
||||
if(ix<=0x3f490fd8) /* |x| ~<= pi/4 , no need for reduction */
|
||||
{y[0] = x; y[1] = 0; return 0;}
|
||||
if(ix<0x4016cbe4) { /* |x| < 3pi/4, special case with n=+-1 */
|
||||
if(hx>0) {
|
||||
z = x - pio2_1;
|
||||
if((ix&0xfffffff0)!=0x3fc90fd0) { /* 24+24 bit pi OK */
|
||||
y[0] = z - pio2_1t;
|
||||
y[1] = (z-y[0])-pio2_1t;
|
||||
} else { /* near pi/2, use 24+24+24 bit pi */
|
||||
z -= pio2_2;
|
||||
y[0] = z - pio2_2t;
|
||||
y[1] = (z-y[0])-pio2_2t;
|
||||
}
|
||||
return 1;
|
||||
} else { /* negative x */
|
||||
z = x + pio2_1;
|
||||
if((ix&0xfffffff0)!=0x3fc90fd0) { /* 24+24 bit pi OK */
|
||||
y[0] = z + pio2_1t;
|
||||
y[1] = (z-y[0])+pio2_1t;
|
||||
} else { /* near pi/2, use 24+24+24 bit pi */
|
||||
z += pio2_2;
|
||||
y[0] = z + pio2_2t;
|
||||
y[1] = (z-y[0])+pio2_2t;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if(ix<=0x43490f80) { /* |x| ~<= 2^7*(pi/2), medium size */
|
||||
t = fabsf(x);
|
||||
n = (int32_t) (t*invpio2+half);
|
||||
fn = (float)n;
|
||||
r = t-fn*pio2_1;
|
||||
w = fn*pio2_1t; /* 1st round good to 40 bit */
|
||||
if(n<32&&(int32_t)(ix&0xffffff00)!=npio2_hw[n-1]) {
|
||||
y[0] = r-w; /* quick check no cancellation */
|
||||
} else {
|
||||
u_int32_t high;
|
||||
j = ix>>23;
|
||||
y[0] = r-w;
|
||||
GET_FLOAT_WORD(high,y[0]);
|
||||
i = j-((high>>23)&0xff);
|
||||
if(i>8) { /* 2nd iteration needed, good to 57 */
|
||||
t = r;
|
||||
w = fn*pio2_2;
|
||||
r = t-w;
|
||||
w = fn*pio2_2t-((t-r)-w);
|
||||
y[0] = r-w;
|
||||
GET_FLOAT_WORD(high,y[0]);
|
||||
i = j-((high>>23)&0xff);
|
||||
if(i>25) { /* 3rd iteration need, 74 bits acc */
|
||||
t = r; /* will cover all possible cases */
|
||||
w = fn*pio2_3;
|
||||
r = t-w;
|
||||
w = fn*pio2_3t-((t-r)-w);
|
||||
y[0] = r-w;
|
||||
}
|
||||
}
|
||||
}
|
||||
y[1] = (r-y[0])-w;
|
||||
if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;}
|
||||
else return n;
|
||||
}
|
||||
/*
|
||||
* all other (large) arguments
|
||||
*/
|
||||
if(ix>=0x7f800000) { /* x is inf or NaN */
|
||||
y[0]=y[1]=x-x; return 0;
|
||||
}
|
||||
/* set z = scalbn(|x|,ilogb(x)-7) */
|
||||
e0 = (ix>>23)-134; /* e0 = ilogb(z)-7; */
|
||||
SET_FLOAT_WORD(z, ix - ((int32_t)(e0<<23)));
|
||||
for(i=0;i<2;i++) {
|
||||
tx[i] = (float)((int32_t)(z));
|
||||
z = (z-tx[i])*two8;
|
||||
}
|
||||
tx[2] = z;
|
||||
nx = 3;
|
||||
while(tx[nx-1]==zero) nx--; /* skip zero term */
|
||||
n = __kernel_rem_pio2f(tx,y,e0,nx,2,two_over_pi);
|
||||
if(hx<0) {y[0] = -y[0]; y[1] = -y[1]; return -n;}
|
||||
return n;
|
||||
}
|
97
libgcc-math/flt-32/e_sqrtf.c
Normal file
97
libgcc-math/flt-32/e_sqrtf.c
Normal file
|
@ -0,0 +1,97 @@
|
|||
/* e_sqrtf.c -- float version of e_sqrt.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: e_sqrtf.c,v 1.4 1995/05/10 20:46:19 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float one = 1.0, tiny=1.0e-30;
|
||||
#else
|
||||
static float one = 1.0, tiny=1.0e-30;
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
float __ieee754_sqrtf(float x)
|
||||
#else
|
||||
float __ieee754_sqrtf(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
float z;
|
||||
int32_t sign = (int)0x80000000;
|
||||
int32_t ix,s,q,m,t,i;
|
||||
u_int32_t r;
|
||||
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
|
||||
/* take care of Inf and NaN */
|
||||
if((ix&0x7f800000)==0x7f800000) {
|
||||
return x*x+x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf
|
||||
sqrt(-inf)=sNaN */
|
||||
}
|
||||
/* take care of zero */
|
||||
if(ix<=0) {
|
||||
if((ix&(~sign))==0) return x;/* sqrt(+-0) = +-0 */
|
||||
else if(ix<0)
|
||||
return (x-x)/(x-x); /* sqrt(-ve) = sNaN */
|
||||
}
|
||||
/* normalize x */
|
||||
m = (ix>>23);
|
||||
if(m==0) { /* subnormal x */
|
||||
for(i=0;(ix&0x00800000)==0;i++) ix<<=1;
|
||||
m -= i-1;
|
||||
}
|
||||
m -= 127; /* unbias exponent */
|
||||
ix = (ix&0x007fffff)|0x00800000;
|
||||
if(m&1) /* odd m, double x to make it even */
|
||||
ix += ix;
|
||||
m >>= 1; /* m = [m/2] */
|
||||
|
||||
/* generate sqrt(x) bit by bit */
|
||||
ix += ix;
|
||||
q = s = 0; /* q = sqrt(x) */
|
||||
r = 0x01000000; /* r = moving bit from right to left */
|
||||
|
||||
while(r!=0) {
|
||||
t = s+r;
|
||||
if(t<=ix) {
|
||||
s = t+r;
|
||||
ix -= t;
|
||||
q += r;
|
||||
}
|
||||
ix += ix;
|
||||
r>>=1;
|
||||
}
|
||||
|
||||
/* use floating add to find out rounding direction */
|
||||
if(ix!=0) {
|
||||
z = one-tiny; /* trigger inexact flag */
|
||||
if (z>=one) {
|
||||
z = one+tiny;
|
||||
if (z>one)
|
||||
q += 2;
|
||||
else
|
||||
q += (q&1);
|
||||
}
|
||||
}
|
||||
ix = (q>>1)+0x3f000000;
|
||||
ix += (m <<23);
|
||||
SET_FLOAT_WORD(z,ix);
|
||||
return z;
|
||||
}
|
64
libgcc-math/flt-32/k_cosf.c
Normal file
64
libgcc-math/flt-32/k_cosf.c
Normal file
|
@ -0,0 +1,64 @@
|
|||
/* k_cosf.c -- float version of k_cos.c
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: k_cosf.c,v 1.4 1995/05/10 20:46:23 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
one = 1.0000000000e+00, /* 0x3f800000 */
|
||||
C1 = 4.1666667908e-02, /* 0x3d2aaaab */
|
||||
C2 = -1.3888889225e-03, /* 0xbab60b61 */
|
||||
C3 = 2.4801587642e-05, /* 0x37d00d01 */
|
||||
C4 = -2.7557314297e-07, /* 0xb493f27c */
|
||||
C5 = 2.0875723372e-09, /* 0x310f74f6 */
|
||||
C6 = -1.1359647598e-11; /* 0xad47d74e */
|
||||
|
||||
#ifdef __STDC__
|
||||
float __kernel_cosf(float x, float y)
|
||||
#else
|
||||
float __kernel_cosf(x, y)
|
||||
float x,y;
|
||||
#endif
|
||||
{
|
||||
float a,hz,z,r,qx;
|
||||
int32_t ix;
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
ix &= 0x7fffffff; /* ix = |x|'s high word*/
|
||||
if(ix<0x32000000) { /* if x < 2**27 */
|
||||
if(((int)x)==0) return one; /* generate inexact */
|
||||
}
|
||||
z = x*x;
|
||||
r = z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*C6)))));
|
||||
if(ix < 0x3e99999a) /* if |x| < 0.3 */
|
||||
return one - ((float)0.5*z - (z*r - x*y));
|
||||
else {
|
||||
if(ix > 0x3f480000) { /* x > 0.78125 */
|
||||
qx = (float)0.28125;
|
||||
} else {
|
||||
SET_FLOAT_WORD(qx,ix-0x01000000); /* x/4 */
|
||||
}
|
||||
hz = (float)0.5*z-qx;
|
||||
a = one-qx;
|
||||
return a - (hz - (z*r-x*y));
|
||||
}
|
||||
}
|
213
libgcc-math/flt-32/k_rem_pio2f.c
Normal file
213
libgcc-math/flt-32/k_rem_pio2f.c
Normal file
|
@ -0,0 +1,213 @@
|
|||
/* k_rem_pio2f.c -- float version of k_rem_pio2.c
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: k_rem_pio2f.c,v 1.4 1995/05/10 20:46:28 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
/* In the float version, the input parameter x contains 8 bit
|
||||
integers, not 24 bit integers. 113 bit precision is not supported. */
|
||||
|
||||
#ifdef __STDC__
|
||||
static const int init_jk[] = {4,7,9}; /* initial value for jk */
|
||||
#else
|
||||
static int init_jk[] = {4,7,9};
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float PIo2[] = {
|
||||
#else
|
||||
static float PIo2[] = {
|
||||
#endif
|
||||
1.5703125000e+00, /* 0x3fc90000 */
|
||||
4.5776367188e-04, /* 0x39f00000 */
|
||||
2.5987625122e-05, /* 0x37da0000 */
|
||||
7.5437128544e-08, /* 0x33a20000 */
|
||||
6.0026650317e-11, /* 0x2e840000 */
|
||||
7.3896444519e-13, /* 0x2b500000 */
|
||||
5.3845816694e-15, /* 0x27c20000 */
|
||||
5.6378512969e-18, /* 0x22d00000 */
|
||||
8.3009228831e-20, /* 0x1fc40000 */
|
||||
3.2756352257e-22, /* 0x1bc60000 */
|
||||
6.3331015649e-25, /* 0x17440000 */
|
||||
};
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
zero = 0.0,
|
||||
one = 1.0,
|
||||
two8 = 2.5600000000e+02, /* 0x43800000 */
|
||||
twon8 = 3.9062500000e-03; /* 0x3b800000 */
|
||||
|
||||
#ifdef __STDC__
|
||||
int __kernel_rem_pio2f(float *x, float *y, int e0, int nx, int prec, const int32_t *ipio2)
|
||||
#else
|
||||
int __kernel_rem_pio2f(x,y,e0,nx,prec,ipio2)
|
||||
float x[], y[]; int e0,nx,prec; int32_t ipio2[];
|
||||
#endif
|
||||
{
|
||||
int32_t jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih;
|
||||
float z,fw,f[20],fq[20],q[20];
|
||||
|
||||
/* initialize jk*/
|
||||
jk = init_jk[prec];
|
||||
jp = jk;
|
||||
|
||||
/* determine jx,jv,q0, note that 3>q0 */
|
||||
jx = nx-1;
|
||||
jv = (e0-3)/8; if(jv<0) jv=0;
|
||||
q0 = e0-8*(jv+1);
|
||||
|
||||
/* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */
|
||||
j = jv-jx; m = jx+jk;
|
||||
for(i=0;i<=m;i++,j++) f[i] = (j<0)? zero : (float) ipio2[j];
|
||||
|
||||
/* compute q[0],q[1],...q[jk] */
|
||||
for (i=0;i<=jk;i++) {
|
||||
for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; q[i] = fw;
|
||||
}
|
||||
|
||||
jz = jk;
|
||||
recompute:
|
||||
/* distill q[] into iq[] reversingly */
|
||||
for(i=0,j=jz,z=q[jz];j>0;i++,j--) {
|
||||
fw = (float)((int32_t)(twon8* z));
|
||||
iq[i] = (int32_t)(z-two8*fw);
|
||||
z = q[j-1]+fw;
|
||||
}
|
||||
|
||||
/* compute n */
|
||||
z = __scalbnf(z,q0); /* actual value of z */
|
||||
z -= (float)8.0*__floorf(z*(float)0.125); /* trim off integer >= 8 */
|
||||
n = (int32_t) z;
|
||||
z -= (float)n;
|
||||
ih = 0;
|
||||
if(q0>0) { /* need iq[jz-1] to determine n */
|
||||
i = (iq[jz-1]>>(8-q0)); n += i;
|
||||
iq[jz-1] -= i<<(8-q0);
|
||||
ih = iq[jz-1]>>(7-q0);
|
||||
}
|
||||
else if(q0==0) ih = iq[jz-1]>>8;
|
||||
else if(z>=(float)0.5) ih=2;
|
||||
|
||||
if(ih>0) { /* q > 0.5 */
|
||||
n += 1; carry = 0;
|
||||
for(i=0;i<jz ;i++) { /* compute 1-q */
|
||||
j = iq[i];
|
||||
if(carry==0) {
|
||||
if(j!=0) {
|
||||
carry = 1; iq[i] = 0x100- j;
|
||||
}
|
||||
} else iq[i] = 0xff - j;
|
||||
}
|
||||
if(q0>0) { /* rare case: chance is 1 in 12 */
|
||||
switch(q0) {
|
||||
case 1:
|
||||
iq[jz-1] &= 0x7f; break;
|
||||
case 2:
|
||||
iq[jz-1] &= 0x3f; break;
|
||||
}
|
||||
}
|
||||
if(ih==2) {
|
||||
z = one - z;
|
||||
if(carry!=0) z -= __scalbnf(one,q0);
|
||||
}
|
||||
}
|
||||
|
||||
/* check if recomputation is needed */
|
||||
if(z==zero) {
|
||||
j = 0;
|
||||
for (i=jz-1;i>=jk;i--) j |= iq[i];
|
||||
if(j==0) { /* need recomputation */
|
||||
for(k=1;iq[jk-k]==0;k++); /* k = no. of terms needed */
|
||||
|
||||
for(i=jz+1;i<=jz+k;i++) { /* add q[jz+1] to q[jz+k] */
|
||||
f[jx+i] = (float) ipio2[jv+i];
|
||||
for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j];
|
||||
q[i] = fw;
|
||||
}
|
||||
jz += k;
|
||||
goto recompute;
|
||||
}
|
||||
}
|
||||
|
||||
/* chop off zero terms */
|
||||
if(z==(float)0.0) {
|
||||
jz -= 1; q0 -= 8;
|
||||
while(iq[jz]==0) { jz--; q0-=8;}
|
||||
} else { /* break z into 8-bit if necessary */
|
||||
z = __scalbnf(z,-q0);
|
||||
if(z>=two8) {
|
||||
fw = (float)((int32_t)(twon8*z));
|
||||
iq[jz] = (int32_t)(z-two8*fw);
|
||||
jz += 1; q0 += 8;
|
||||
iq[jz] = (int32_t) fw;
|
||||
} else iq[jz] = (int32_t) z ;
|
||||
}
|
||||
|
||||
/* convert integer "bit" chunk to floating-point value */
|
||||
fw = __scalbnf(one,q0);
|
||||
for(i=jz;i>=0;i--) {
|
||||
q[i] = fw*(float)iq[i]; fw*=twon8;
|
||||
}
|
||||
|
||||
/* compute PIo2[0,...,jp]*q[jz,...,0] */
|
||||
for(i=jz;i>=0;i--) {
|
||||
for(fw=0.0,k=0;k<=jp&&k<=jz-i;k++) fw += PIo2[k]*q[i+k];
|
||||
fq[jz-i] = fw;
|
||||
}
|
||||
|
||||
/* compress fq[] into y[] */
|
||||
switch(prec) {
|
||||
case 0:
|
||||
fw = 0.0;
|
||||
for (i=jz;i>=0;i--) fw += fq[i];
|
||||
y[0] = (ih==0)? fw: -fw;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
fw = 0.0;
|
||||
for (i=jz;i>=0;i--) fw += fq[i];
|
||||
y[0] = (ih==0)? fw: -fw;
|
||||
fw = fq[0]-fw;
|
||||
for (i=1;i<=jz;i++) fw += fq[i];
|
||||
y[1] = (ih==0)? fw: -fw;
|
||||
break;
|
||||
case 3: /* painful */
|
||||
for (i=jz;i>0;i--) {
|
||||
fw = fq[i-1]+fq[i];
|
||||
fq[i] += fq[i-1]-fw;
|
||||
fq[i-1] = fw;
|
||||
}
|
||||
for (i=jz;i>1;i--) {
|
||||
fw = fq[i-1]+fq[i];
|
||||
fq[i] += fq[i-1]-fw;
|
||||
fq[i-1] = fw;
|
||||
}
|
||||
for (fw=0.0,i=jz;i>=2;i--) fw += fq[i];
|
||||
if(ih==0) {
|
||||
y[0] = fq[0]; y[1] = fq[1]; y[2] = fw;
|
||||
} else {
|
||||
y[0] = -fq[0]; y[1] = -fq[1]; y[2] = -fw;
|
||||
}
|
||||
}
|
||||
return n&7;
|
||||
}
|
54
libgcc-math/flt-32/k_sinf.c
Normal file
54
libgcc-math/flt-32/k_sinf.c
Normal file
|
@ -0,0 +1,54 @@
|
|||
/* k_sinf.c -- float version of k_sin.c
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: k_sinf.c,v 1.4 1995/05/10 20:46:33 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
half = 5.0000000000e-01,/* 0x3f000000 */
|
||||
S1 = -1.6666667163e-01, /* 0xbe2aaaab */
|
||||
S2 = 8.3333337680e-03, /* 0x3c088889 */
|
||||
S3 = -1.9841270114e-04, /* 0xb9500d01 */
|
||||
S4 = 2.7557314297e-06, /* 0x3638ef1b */
|
||||
S5 = -2.5050759689e-08, /* 0xb2d72f34 */
|
||||
S6 = 1.5896910177e-10; /* 0x2f2ec9d3 */
|
||||
|
||||
#ifdef __STDC__
|
||||
float __kernel_sinf(float x, float y, int iy)
|
||||
#else
|
||||
float __kernel_sinf(x, y, iy)
|
||||
float x,y; int iy; /* iy=0 if y is zero */
|
||||
#endif
|
||||
{
|
||||
float z,r,v;
|
||||
int32_t ix;
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
ix &= 0x7fffffff; /* high word of x */
|
||||
if(ix<0x32000000) /* |x| < 2**-27 */
|
||||
{if((int)x==0) return x;} /* generate inexact */
|
||||
z = x*x;
|
||||
v = z*x;
|
||||
r = S2+z*(S3+z*(S4+z*(S5+z*S6)));
|
||||
if(iy==0) return x+v*(S1+z*r);
|
||||
else return x-((z*(half*y-v*r)-y)-v*S1);
|
||||
}
|
101
libgcc-math/flt-32/k_tanf.c
Normal file
101
libgcc-math/flt-32/k_tanf.c
Normal file
|
@ -0,0 +1,101 @@
|
|||
/* k_tanf.c -- float version of k_tan.c
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: k_tanf.c,v 1.4 1995/05/10 20:46:39 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
one = 1.0000000000e+00, /* 0x3f800000 */
|
||||
pio4 = 7.8539812565e-01, /* 0x3f490fda */
|
||||
pio4lo= 3.7748947079e-08, /* 0x33222168 */
|
||||
T[] = {
|
||||
3.3333334327e-01, /* 0x3eaaaaab */
|
||||
1.3333334029e-01, /* 0x3e088889 */
|
||||
5.3968254477e-02, /* 0x3d5d0dd1 */
|
||||
2.1869488060e-02, /* 0x3cb327a4 */
|
||||
8.8632395491e-03, /* 0x3c11371f */
|
||||
3.5920790397e-03, /* 0x3b6b6916 */
|
||||
1.4562094584e-03, /* 0x3abede48 */
|
||||
5.8804126456e-04, /* 0x3a1a26c8 */
|
||||
2.4646313977e-04, /* 0x398137b9 */
|
||||
7.8179444245e-05, /* 0x38a3f445 */
|
||||
7.1407252108e-05, /* 0x3895c07a */
|
||||
-1.8558637748e-05, /* 0xb79bae5f */
|
||||
2.5907305826e-05, /* 0x37d95384 */
|
||||
};
|
||||
|
||||
#ifdef __STDC__
|
||||
float __kernel_tanf(float x, float y, int iy)
|
||||
#else
|
||||
float __kernel_tanf(x, y, iy)
|
||||
float x,y; int iy;
|
||||
#endif
|
||||
{
|
||||
float z,r,v,w,s;
|
||||
int32_t ix,hx;
|
||||
GET_FLOAT_WORD(hx,x);
|
||||
ix = hx&0x7fffffff; /* high word of |x| */
|
||||
if(ix<0x31800000) /* x < 2**-28 */
|
||||
{if((int)x==0) { /* generate inexact */
|
||||
if((ix|(iy+1))==0) return one/fabsf(x);
|
||||
else return (iy==1)? x: -one/x;
|
||||
}
|
||||
}
|
||||
if(ix>=0x3f2ca140) { /* |x|>=0.6744 */
|
||||
if(hx<0) {x = -x; y = -y;}
|
||||
z = pio4-x;
|
||||
w = pio4lo-y;
|
||||
x = z+w; y = 0.0;
|
||||
}
|
||||
z = x*x;
|
||||
w = z*z;
|
||||
/* Break x^5*(T[1]+x^2*T[2]+...) into
|
||||
* x^5(T[1]+x^4*T[3]+...+x^20*T[11]) +
|
||||
* x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12]))
|
||||
*/
|
||||
r = T[1]+w*(T[3]+w*(T[5]+w*(T[7]+w*(T[9]+w*T[11]))));
|
||||
v = z*(T[2]+w*(T[4]+w*(T[6]+w*(T[8]+w*(T[10]+w*T[12])))));
|
||||
s = z*x;
|
||||
r = y + z*(s*(r+v)+y);
|
||||
r += T[0]*s;
|
||||
w = x+r;
|
||||
if(ix>=0x3f2ca140) {
|
||||
v = (float)iy;
|
||||
return (float)(1-((hx>>30)&2))*(v-(float)2.0*(x-(w*w/(w+v)-r)));
|
||||
}
|
||||
if(iy==1) return w;
|
||||
else { /* if allow error up to 2 ulp,
|
||||
simply return -1.0/(x+r) here */
|
||||
/* compute -1.0/(x+r) accurately */
|
||||
float a,t;
|
||||
int32_t i;
|
||||
z = w;
|
||||
GET_FLOAT_WORD(i,z);
|
||||
SET_FLOAT_WORD(z,i&0xfffff000);
|
||||
v = r-(z - x); /* z+v = r+x */
|
||||
t = a = -(float)1.0/w; /* a = -1.0/w */
|
||||
GET_FLOAT_WORD(i,t);
|
||||
SET_FLOAT_WORD(t,i&0xfffff000);
|
||||
s = (float)1.0+t*z;
|
||||
return t+a*(s+t*v);
|
||||
}
|
||||
}
|
120
libgcc-math/flt-32/s_atanf.c
Normal file
120
libgcc-math/flt-32/s_atanf.c
Normal file
|
@ -0,0 +1,120 @@
|
|||
/* s_atanf.c -- float version of s_atan.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_atanf.c,v 1.4 1995/05/10 20:46:47 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float atanhi[] = {
|
||||
#else
|
||||
static float atanhi[] = {
|
||||
#endif
|
||||
4.6364760399e-01, /* atan(0.5)hi 0x3eed6338 */
|
||||
7.8539812565e-01, /* atan(1.0)hi 0x3f490fda */
|
||||
9.8279368877e-01, /* atan(1.5)hi 0x3f7b985e */
|
||||
1.5707962513e+00, /* atan(inf)hi 0x3fc90fda */
|
||||
};
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float atanlo[] = {
|
||||
#else
|
||||
static float atanlo[] = {
|
||||
#endif
|
||||
5.0121582440e-09, /* atan(0.5)lo 0x31ac3769 */
|
||||
3.7748947079e-08, /* atan(1.0)lo 0x33222168 */
|
||||
3.4473217170e-08, /* atan(1.5)lo 0x33140fb4 */
|
||||
7.5497894159e-08, /* atan(inf)lo 0x33a22168 */
|
||||
};
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float aT[] = {
|
||||
#else
|
||||
static float aT[] = {
|
||||
#endif
|
||||
3.3333334327e-01, /* 0x3eaaaaaa */
|
||||
-2.0000000298e-01, /* 0xbe4ccccd */
|
||||
1.4285714924e-01, /* 0x3e124925 */
|
||||
-1.1111110449e-01, /* 0xbde38e38 */
|
||||
9.0908870101e-02, /* 0x3dba2e6e */
|
||||
-7.6918758452e-02, /* 0xbd9d8795 */
|
||||
6.6610731184e-02, /* 0x3d886b35 */
|
||||
-5.8335702866e-02, /* 0xbd6ef16b */
|
||||
4.9768779427e-02, /* 0x3d4bda59 */
|
||||
-3.6531571299e-02, /* 0xbd15a221 */
|
||||
1.6285819933e-02, /* 0x3c8569d7 */
|
||||
};
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
one = 1.0,
|
||||
huge = 1.0e30;
|
||||
|
||||
#ifdef __STDC__
|
||||
float __atanf(float x)
|
||||
#else
|
||||
float __atanf(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
float w,s1,s2,z;
|
||||
int32_t ix,hx,id;
|
||||
|
||||
GET_FLOAT_WORD(hx,x);
|
||||
ix = hx&0x7fffffff;
|
||||
if(ix>=0x50800000) { /* if |x| >= 2^34 */
|
||||
if(ix>0x7f800000)
|
||||
return x+x; /* NaN */
|
||||
if(hx>0) return atanhi[3]+atanlo[3];
|
||||
else return -atanhi[3]-atanlo[3];
|
||||
} if (ix < 0x3ee00000) { /* |x| < 0.4375 */
|
||||
if (ix < 0x31000000) { /* |x| < 2^-29 */
|
||||
if(huge+x>one) return x; /* raise inexact */
|
||||
}
|
||||
id = -1;
|
||||
} else {
|
||||
x = fabsf(x);
|
||||
if (ix < 0x3f980000) { /* |x| < 1.1875 */
|
||||
if (ix < 0x3f300000) { /* 7/16 <=|x|<11/16 */
|
||||
id = 0; x = ((float)2.0*x-one)/((float)2.0+x);
|
||||
} else { /* 11/16<=|x|< 19/16 */
|
||||
id = 1; x = (x-one)/(x+one);
|
||||
}
|
||||
} else {
|
||||
if (ix < 0x401c0000) { /* |x| < 2.4375 */
|
||||
id = 2; x = (x-(float)1.5)/(one+(float)1.5*x);
|
||||
} else { /* 2.4375 <= |x| < 2^66 */
|
||||
id = 3; x = -(float)1.0/x;
|
||||
}
|
||||
}}
|
||||
/* end of argument reduction */
|
||||
z = x*x;
|
||||
w = z*z;
|
||||
/* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */
|
||||
s1 = z*(aT[0]+w*(aT[2]+w*(aT[4]+w*(aT[6]+w*(aT[8]+w*aT[10])))));
|
||||
s2 = w*(aT[1]+w*(aT[3]+w*(aT[5]+w*(aT[7]+w*aT[9]))));
|
||||
if (id<0) return x - x*(s1+s2);
|
||||
else {
|
||||
z = atanhi[id] - ((x*(s1+s2) - atanlo[id]) - x);
|
||||
return (hx<0)? -z:z;
|
||||
}
|
||||
}
|
||||
weak_alias (__atanf, atanf)
|
60
libgcc-math/flt-32/s_cosf.c
Normal file
60
libgcc-math/flt-32/s_cosf.c
Normal file
|
@ -0,0 +1,60 @@
|
|||
/* s_cosf.c -- float version of s_cos.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_cosf.c,v 1.4 1995/05/10 20:47:03 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float one=1.0;
|
||||
#else
|
||||
static float one=1.0;
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
float __cosf(float x)
|
||||
#else
|
||||
float __cosf(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
float y[2],z=0.0;
|
||||
int32_t n,ix;
|
||||
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
|
||||
/* |x| ~< pi/4 */
|
||||
ix &= 0x7fffffff;
|
||||
if(ix <= 0x3f490fd8) return __kernel_cosf(x,z);
|
||||
|
||||
/* cos(Inf or NaN) is NaN */
|
||||
else if (ix>=0x7f800000) return x-x;
|
||||
|
||||
/* argument reduction needed */
|
||||
else {
|
||||
n = __ieee754_rem_pio2f(x,y);
|
||||
switch(n&3) {
|
||||
case 0: return __kernel_cosf(y[0],y[1]);
|
||||
case 1: return -__kernel_sinf(y[0],y[1],1);
|
||||
case 2: return -__kernel_cosf(y[0],y[1]);
|
||||
default:
|
||||
return __kernel_sinf(y[0],y[1],1);
|
||||
}
|
||||
}
|
||||
}
|
||||
weak_alias (__cosf, cosf)
|
71
libgcc-math/flt-32/s_floorf.c
Normal file
71
libgcc-math/flt-32/s_floorf.c
Normal file
|
@ -0,0 +1,71 @@
|
|||
/* s_floorf.c -- float version of s_floor.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_floorf.c,v 1.4 1995/05/10 20:47:22 jtc Exp $";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* floorf(x)
|
||||
* Return x rounded toward -inf to integral value
|
||||
* Method:
|
||||
* Bit twiddling.
|
||||
* Exception:
|
||||
* Inexact flag raised if x not equal to floorf(x).
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float huge = 1.0e30;
|
||||
#else
|
||||
static float huge = 1.0e30;
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
float __floorf(float x)
|
||||
#else
|
||||
float __floorf(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
int32_t i0,j0;
|
||||
u_int32_t i;
|
||||
GET_FLOAT_WORD(i0,x);
|
||||
j0 = ((i0>>23)&0xff)-0x7f;
|
||||
if(j0<23) {
|
||||
if(j0<0) { /* raise inexact if x != 0 */
|
||||
if(huge+x>(float)0.0) {/* return 0*sign(x) if |x|<1 */
|
||||
if(i0>=0) {i0=0;}
|
||||
else if((i0&0x7fffffff)!=0)
|
||||
{ i0=0xbf800000;}
|
||||
}
|
||||
} else {
|
||||
i = (0x007fffff)>>j0;
|
||||
if((i0&i)==0) return x; /* x is integral */
|
||||
if(huge+x>(float)0.0) { /* raise inexact flag */
|
||||
if(i0<0) i0 += (0x00800000)>>j0;
|
||||
i0 &= (~i);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(j0==0x80) return x+x; /* inf or NaN */
|
||||
else return x; /* x is integral */
|
||||
}
|
||||
SET_FLOAT_WORD(x,i0);
|
||||
return x;
|
||||
}
|
||||
weak_alias (__floorf, floorf)
|
29
libgcc-math/flt-32/s_isinff.c
Normal file
29
libgcc-math/flt-32/s_isinff.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Written by J.T. Conklin <jtc@netbsd.org>.
|
||||
* Public domain.
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_isinff.c,v 1.3 1995/05/11 23:20:21 jtc Exp $";
|
||||
#endif
|
||||
|
||||
/*
|
||||
* isinff(x) returns 1 if x is inf, -1 if x is -inf, else 0;
|
||||
* no branching!
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
int
|
||||
__isinff (float x)
|
||||
{
|
||||
int32_t ix,t;
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
t = ix & 0x7fffffff;
|
||||
t ^= 0x7f800000;
|
||||
t |= -t;
|
||||
return ~(t >> 31) & (ix >> 30);
|
||||
}
|
||||
hidden_def (__isinff)
|
||||
weak_alias (__isinff, isinff)
|
63
libgcc-math/flt-32/s_scalbnf.c
Normal file
63
libgcc-math/flt-32/s_scalbnf.c
Normal file
|
@ -0,0 +1,63 @@
|
|||
/* s_scalbnf.c -- float version of s_scalbn.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_scalbnf.c,v 1.4 1995/05/10 20:48:10 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static const float
|
||||
#else
|
||||
static float
|
||||
#endif
|
||||
two25 = 3.355443200e+07, /* 0x4c000000 */
|
||||
twom25 = 2.9802322388e-08, /* 0x33000000 */
|
||||
huge = 1.0e+30,
|
||||
tiny = 1.0e-30;
|
||||
|
||||
#ifdef __STDC__
|
||||
float __scalbnf (float x, int n)
|
||||
#else
|
||||
float __scalbnf (x,n)
|
||||
float x; int n;
|
||||
#endif
|
||||
{
|
||||
int32_t k,ix;
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
k = (ix&0x7f800000)>>23; /* extract exponent */
|
||||
if (k==0) { /* 0 or subnormal x */
|
||||
if ((ix&0x7fffffff)==0) return x; /* +-0 */
|
||||
x *= two25;
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
k = ((ix&0x7f800000)>>23) - 25;
|
||||
}
|
||||
if (k==0xff) return x+x; /* NaN or Inf */
|
||||
k = k+n;
|
||||
if (n> 50000 || k > 0xfe)
|
||||
return huge*__builtin_copysignf(huge,x); /* overflow */
|
||||
if (n< -50000)
|
||||
return tiny*__builtin_copysignf(tiny,x); /*underflow*/
|
||||
if (k > 0) /* normal result */
|
||||
{SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23)); return x;}
|
||||
if (k <= -25)
|
||||
return tiny*__builtin_copysignf(tiny,x); /*underflow*/
|
||||
k += 25; /* subnormal result */
|
||||
SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23));
|
||||
return x*twom25;
|
||||
}
|
||||
weak_alias (__scalbnf, scalbnf)
|
54
libgcc-math/flt-32/s_sinf.c
Normal file
54
libgcc-math/flt-32/s_sinf.c
Normal file
|
@ -0,0 +1,54 @@
|
|||
/* s_sinf.c -- float version of s_sin.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_sinf.c,v 1.4 1995/05/10 20:48:16 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
float __sinf(float x)
|
||||
#else
|
||||
float __sinf(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
float y[2],z=0.0;
|
||||
int32_t n, ix;
|
||||
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
|
||||
/* |x| ~< pi/4 */
|
||||
ix &= 0x7fffffff;
|
||||
if(ix <= 0x3f490fd8) return __kernel_sinf(x,z,0);
|
||||
|
||||
/* sin(Inf or NaN) is NaN */
|
||||
else if (ix>=0x7f800000) return x-x;
|
||||
|
||||
/* argument reduction needed */
|
||||
else {
|
||||
n = __ieee754_rem_pio2f(x,y);
|
||||
switch(n&3) {
|
||||
case 0: return __kernel_sinf(y[0],y[1],1);
|
||||
case 1: return __kernel_cosf(y[0],y[1]);
|
||||
case 2: return -__kernel_sinf(y[0],y[1],1);
|
||||
default:
|
||||
return -__kernel_cosf(y[0],y[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
weak_alias (__sinf, sinf)
|
49
libgcc-math/flt-32/s_tanf.c
Normal file
49
libgcc-math/flt-32/s_tanf.c
Normal file
|
@ -0,0 +1,49 @@
|
|||
/* s_tanf.c -- float version of s_tan.c.
|
||||
* Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ====================================================
|
||||
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#if defined(LIBM_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$NetBSD: s_tanf.c,v 1.4 1995/05/10 20:48:20 jtc Exp $";
|
||||
#endif
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
float __tanf(float x)
|
||||
#else
|
||||
float __tanf(x)
|
||||
float x;
|
||||
#endif
|
||||
{
|
||||
float y[2],z=0.0;
|
||||
int32_t n, ix;
|
||||
|
||||
GET_FLOAT_WORD(ix,x);
|
||||
|
||||
/* |x| ~< pi/4 */
|
||||
ix &= 0x7fffffff;
|
||||
if(ix <= 0x3f490fda) return __kernel_tanf(x,z,1);
|
||||
|
||||
/* tan(Inf or NaN) is NaN */
|
||||
else if (ix>=0x7f800000) return x-x; /* NaN */
|
||||
|
||||
/* argument reduction needed */
|
||||
else {
|
||||
n = __ieee754_rem_pio2f(x,y);
|
||||
return __kernel_tanf(y[0],y[1],1-((n&1)<<1)); /* 1 -- n even
|
||||
-1 -- n odd */
|
||||
}
|
||||
}
|
||||
weak_alias (__tanf, tanf)
|
352
libgcc-math/flt-32/t_exp2f.h
Normal file
352
libgcc-math/flt-32/t_exp2f.h
Normal file
|
@ -0,0 +1,352 @@
|
|||
/* Accurate tables for exp2f().
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Geoffrey Keating <geoffk@ozemail.com.au>
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
/* This table has the property that, for all integers -128 <= i <= 127,
|
||||
exp(i/256.0 + __exp2f_deltatable[i-128]) == __exp2f_atable[i+128] + r
|
||||
for some -2^-35 < r < 2^-35 (abs(r) < 2^-36 if i <= 0); and that
|
||||
__exp2f_deltatable[i+128] == t * 2^-30
|
||||
for integer t so that abs(t) <= 43447 * 2^0. */
|
||||
|
||||
#define W30 (9.31322575e-10)
|
||||
static const float __exp2f_deltatable[256] = {
|
||||
-810*W30, 283*W30, -1514*W30, 1304*W30,
|
||||
-1148*W30, -98*W30, -744*W30, -156*W30,
|
||||
-419*W30, -155*W30, 474*W30, 167*W30,
|
||||
-1984*W30, -826*W30, 692*W30, 781*W30,
|
||||
-578*W30, -411*W30, -129*W30, -1500*W30,
|
||||
654*W30, -141*W30, -816*W30, -53*W30,
|
||||
148*W30, 493*W30, -2214*W30, 760*W30,
|
||||
260*W30, 750*W30, -1300*W30, 1424*W30,
|
||||
-1445*W30, -339*W30, -680*W30, -349*W30,
|
||||
-922*W30, 531*W30, 193*W30, -2892*W30,
|
||||
290*W30, -2145*W30, -276*W30, 485*W30,
|
||||
-695*W30, 215*W30, -7093*W30, 412*W30,
|
||||
-4596*W30, 367*W30, 592*W30, -615*W30,
|
||||
-97*W30, -1066*W30, 972*W30, -226*W30,
|
||||
-625*W30, -374*W30, -5647*W30, -180*W30,
|
||||
20349*W30, -447*W30, 111*W30, -4164*W30,
|
||||
-87*W30, -21*W30, -251*W30, 66*W30,
|
||||
-517*W30, 2093*W30, -263*W30, 182*W30,
|
||||
-601*W30, 475*W30, -483*W30, -1251*W30,
|
||||
-373*W30, 1471*W30, -92*W30, -215*W30,
|
||||
-97*W30, -190*W30, 0*W30, -290*W30,
|
||||
-2647*W30, 1940*W30, -582*W30, 28*W30,
|
||||
833*W30, 1493*W30, 34*W30, 321*W30,
|
||||
3327*W30, -35*W30, 177*W30, -135*W30,
|
||||
-796*W30, -428*W30, 129*W30, 9332*W30,
|
||||
-12*W30, -69*W30, -1743*W30, 6508*W30,
|
||||
-60*W30, 359*W30, 43447*W30, 15*W30,
|
||||
-23*W30, -305*W30, -375*W30, -652*W30,
|
||||
667*W30, 269*W30, -1575*W30, 185*W30,
|
||||
-329*W30, 200*W30, 6002*W30, 163*W30,
|
||||
-647*W30, 19*W30, -603*W30, -755*W30,
|
||||
742*W30, -438*W30, 3587*W30, 2560*W30,
|
||||
0*W30, -520*W30, -241*W30, -299*W30,
|
||||
-1270*W30, -991*W30, -1138*W30, 255*W30,
|
||||
-1192*W30, 1722*W30, 1023*W30, 3700*W30,
|
||||
-1388*W30, -1551*W30, -2549*W30, 27*W30,
|
||||
282*W30, 673*W30, 113*W30, 1561*W30,
|
||||
72*W30, 873*W30, 87*W30, -395*W30,
|
||||
-433*W30, 629*W30, 3440*W30, -284*W30,
|
||||
-592*W30, -103*W30, -46*W30, -3844*W30,
|
||||
1712*W30, 303*W30, 1555*W30, -631*W30,
|
||||
-1400*W30, -961*W30, -854*W30, -276*W30,
|
||||
407*W30, 833*W30, -345*W30, -1501*W30,
|
||||
121*W30, -1581*W30, 400*W30, 150*W30,
|
||||
1224*W30, -139*W30, -563*W30, 879*W30,
|
||||
933*W30, 2939*W30, 788*W30, 211*W30,
|
||||
530*W30, -192*W30, 706*W30, -13347*W30,
|
||||
1065*W30, 3*W30, 111*W30, -208*W30,
|
||||
-360*W30, -532*W30, -291*W30, 483*W30,
|
||||
987*W30, -33*W30, -1373*W30, -166*W30,
|
||||
-1174*W30, -3955*W30, 1601*W30, -280*W30,
|
||||
1405*W30, 600*W30, -1659*W30, -23*W30,
|
||||
390*W30, 449*W30, 570*W30, -13143*W30,
|
||||
-9*W30, -1646*W30, 1201*W30, 294*W30,
|
||||
2181*W30, -1173*W30, 1388*W30, -4504*W30,
|
||||
190*W30, -2304*W30, 211*W30, 239*W30,
|
||||
48*W30, -817*W30, 1018*W30, 1828*W30,
|
||||
-663*W30, 1408*W30, 408*W30, -36*W30,
|
||||
1295*W30, -230*W30, 1341*W30, 9*W30,
|
||||
40*W30, 705*W30, 186*W30, 376*W30,
|
||||
557*W30, 5866*W30, 363*W30, -1558*W30,
|
||||
718*W30, 669*W30, 1369*W30, -2972*W30,
|
||||
-468*W30, -121*W30, -219*W30, 667*W30,
|
||||
29954*W30, 366*W30, 48*W30, -203*W30
|
||||
};
|
||||
|
||||
static const float __exp2f_atable[256] /* __attribute__((mode(SF))) */ = {
|
||||
0.707106411447, /* 0x0.b504ecfff */
|
||||
0.709024071690, /* 0x0.b58299fff */
|
||||
0.710945606239, /* 0x0.b60088000 */
|
||||
0.712874472142, /* 0x0.b67ef1000 */
|
||||
0.714806139464, /* 0x0.b6fd88fff */
|
||||
0.716744661340, /* 0x0.b77c94000 */
|
||||
0.718687653549, /* 0x0.b7fbea000 */
|
||||
0.720636486992, /* 0x0.b87ba1fff */
|
||||
0.722590208040, /* 0x0.b8fbabfff */
|
||||
0.724549472323, /* 0x0.b97c12fff */
|
||||
0.726514220228, /* 0x0.b9fcd5fff */
|
||||
0.728483855735, /* 0x0.ba7deb000 */
|
||||
0.730457961549, /* 0x0.baff4afff */
|
||||
0.732438981522, /* 0x0.bb811efff */
|
||||
0.734425544748, /* 0x0.bc0350000 */
|
||||
0.736416816713, /* 0x0.bc85d0000 */
|
||||
0.738412797450, /* 0x0.bd089efff */
|
||||
0.740414917465, /* 0x0.bd8bd4fff */
|
||||
0.742422521111, /* 0x0.be0f66fff */
|
||||
0.744434773914, /* 0x0.be9346fff */
|
||||
0.746454179287, /* 0x0.bf179f000 */
|
||||
0.748477637755, /* 0x0.bf9c3afff */
|
||||
0.750506639473, /* 0x0.c02133fff */
|
||||
0.752541840064, /* 0x0.c0a694fff */
|
||||
0.754582285889, /* 0x0.c12c4e000 */
|
||||
0.756628334525, /* 0x0.c1b265000 */
|
||||
0.758678436269, /* 0x0.c238bffff */
|
||||
0.760736882681, /* 0x0.c2bfa6fff */
|
||||
0.762799203401, /* 0x0.c346cf000 */
|
||||
0.764867603790, /* 0x0.c3ce5d000 */
|
||||
0.766940355298, /* 0x0.c45633fff */
|
||||
0.769021093841, /* 0x0.c4de90fff */
|
||||
0.771104693409, /* 0x0.c5671dfff */
|
||||
0.773195922364, /* 0x0.c5f02afff */
|
||||
0.775292098512, /* 0x0.c6798afff */
|
||||
0.777394294745, /* 0x0.c70350000 */
|
||||
0.779501736166, /* 0x0.c78d6d000 */
|
||||
0.781615912910, /* 0x0.c817fafff */
|
||||
0.783734917628, /* 0x0.c8a2d9fff */
|
||||
0.785858273516, /* 0x0.c92e02000 */
|
||||
0.787990570071, /* 0x0.c9b9c0000 */
|
||||
0.790125787245, /* 0x0.ca45aefff */
|
||||
0.792268991467, /* 0x0.cad223fff */
|
||||
0.794417440881, /* 0x0.cb5ef0fff */
|
||||
0.796570718287, /* 0x0.cbec0efff */
|
||||
0.798730909811, /* 0x0.cc79a0fff */
|
||||
0.800892710672, /* 0x0.cd074dfff */
|
||||
0.803068041795, /* 0x0.cd95ddfff */
|
||||
0.805242776881, /* 0x0.ce2464000 */
|
||||
0.807428598393, /* 0x0.ceb3a3fff */
|
||||
0.809617877002, /* 0x0.cf431dfff */
|
||||
0.811812341211, /* 0x0.cfd2eefff */
|
||||
0.814013659956, /* 0x0.d06333000 */
|
||||
0.816220164311, /* 0x0.d0f3ce000 */
|
||||
0.818434238424, /* 0x0.d184e7fff */
|
||||
0.820652604094, /* 0x0.d21649fff */
|
||||
0.822877407074, /* 0x0.d2a818000 */
|
||||
0.825108587751, /* 0x0.d33a51000 */
|
||||
0.827342867839, /* 0x0.d3ccbdfff */
|
||||
0.829588949684, /* 0x0.d45ff1000 */
|
||||
0.831849217401, /* 0x0.d4f411fff */
|
||||
0.834093391880, /* 0x0.d58724fff */
|
||||
0.836355149750, /* 0x0.d61b5f000 */
|
||||
0.838620424257, /* 0x0.d6afd3fff */
|
||||
0.840896368027, /* 0x0.d744fc000 */
|
||||
0.843176305293, /* 0x0.d7da66fff */
|
||||
0.845462262643, /* 0x0.d87037000 */
|
||||
0.847754716864, /* 0x0.d90673fff */
|
||||
0.850052893157, /* 0x0.d99d10fff */
|
||||
0.852359056469, /* 0x0.da3433fff */
|
||||
0.854668736446, /* 0x0.dacb91fff */
|
||||
0.856986224651, /* 0x0.db6373000 */
|
||||
0.859309315673, /* 0x0.dbfbb1fff */
|
||||
0.861639738080, /* 0x0.dc946bfff */
|
||||
0.863975346095, /* 0x0.dd2d7d000 */
|
||||
0.866317391394, /* 0x0.ddc6f9fff */
|
||||
0.868666708472, /* 0x0.de60f1000 */
|
||||
0.871022939695, /* 0x0.defb5c000 */
|
||||
0.873383641229, /* 0x0.df9611fff */
|
||||
0.875751554968, /* 0x0.e03141000 */
|
||||
0.878126025200, /* 0x0.e0ccde000 */
|
||||
0.880506813521, /* 0x0.e168e4fff */
|
||||
0.882894217966, /* 0x0.e2055afff */
|
||||
0.885287821299, /* 0x0.e2a239000 */
|
||||
0.887686729423, /* 0x0.e33f6ffff */
|
||||
0.890096127973, /* 0x0.e3dd56fff */
|
||||
0.892507970338, /* 0x0.e47b67000 */
|
||||
0.894928157336, /* 0x0.e51a03000 */
|
||||
0.897355020043, /* 0x0.e5b90efff */
|
||||
0.899788379682, /* 0x0.e65888000 */
|
||||
0.902227103705, /* 0x0.e6f85afff */
|
||||
0.904673457151, /* 0x0.e798ae000 */
|
||||
0.907128036008, /* 0x0.e8398afff */
|
||||
0.909585535528, /* 0x0.e8da99000 */
|
||||
0.912051796915, /* 0x0.e97c3a000 */
|
||||
0.914524436003, /* 0x0.ea1e46000 */
|
||||
0.917003571999, /* 0x0.eac0bf000 */
|
||||
0.919490039339, /* 0x0.eb63b2fff */
|
||||
0.921983361257, /* 0x0.ec071a000 */
|
||||
0.924488604054, /* 0x0.ecab48fff */
|
||||
0.926989555360, /* 0x0.ed4f30000 */
|
||||
0.929502844812, /* 0x0.edf3e6000 */
|
||||
0.932021975503, /* 0x0.ee98fdfff */
|
||||
0.934553921208, /* 0x0.ef3eecfff */
|
||||
0.937083780759, /* 0x0.efe4b8fff */
|
||||
0.939624726786, /* 0x0.f08b3f000 */
|
||||
0.942198514924, /* 0x0.f133ebfff */
|
||||
0.944726586343, /* 0x0.f1d99a000 */
|
||||
0.947287976728, /* 0x0.f28176fff */
|
||||
0.949856162070, /* 0x0.f329c5fff */
|
||||
0.952431440345, /* 0x0.f3d28bfff */
|
||||
0.955013573175, /* 0x0.f47bc5000 */
|
||||
0.957603693021, /* 0x0.f52584000 */
|
||||
0.960199773321, /* 0x0.f5cfa7000 */
|
||||
0.962801992906, /* 0x0.f67a31000 */
|
||||
0.965413510788, /* 0x0.f72556fff */
|
||||
0.968030691152, /* 0x0.f7d0dc000 */
|
||||
0.970655620084, /* 0x0.f87ce2fff */
|
||||
0.973290979849, /* 0x0.f92998fff */
|
||||
0.975926160805, /* 0x0.f9d64bfff */
|
||||
0.978571653370, /* 0x0.fa83ac000 */
|
||||
0.981225252139, /* 0x0.fb3193fff */
|
||||
0.983885228626, /* 0x0.fbdfe6fff */
|
||||
0.986552715296, /* 0x0.fc8eb7fff */
|
||||
0.989228487027, /* 0x0.fd3e14000 */
|
||||
0.991909801964, /* 0x0.fdedcd000 */
|
||||
0.994601726545, /* 0x0.fe9e38000 */
|
||||
0.997297704209, /* 0x0.ff4ee6fff */
|
||||
1.000000000000, /* 0x1.000000000 */
|
||||
1.002710938457, /* 0x1.00b1aa000 */
|
||||
1.005429744692, /* 0x1.0163d7ffe */
|
||||
1.008155703526, /* 0x1.02167dffe */
|
||||
1.010888457284, /* 0x1.02c995fff */
|
||||
1.013629436498, /* 0x1.037d38000 */
|
||||
1.016377568250, /* 0x1.043152000 */
|
||||
1.019134163841, /* 0x1.04e5f9ffe */
|
||||
1.021896362316, /* 0x1.059b00000 */
|
||||
1.024668931945, /* 0x1.0650b3ffe */
|
||||
1.027446627635, /* 0x1.0706be001 */
|
||||
1.030234098408, /* 0x1.07bd6bffe */
|
||||
1.033023953416, /* 0x1.087441ffe */
|
||||
1.035824656494, /* 0x1.092bce000 */
|
||||
1.038632392900, /* 0x1.09e3d0001 */
|
||||
1.041450142840, /* 0x1.0a9c79ffe */
|
||||
1.044273972530, /* 0x1.0b558a001 */
|
||||
1.047105550795, /* 0x1.0c0f1c001 */
|
||||
1.049944162390, /* 0x1.0cc924001 */
|
||||
1.052791833895, /* 0x1.0d83c4001 */
|
||||
1.055645227426, /* 0x1.0e3ec3fff */
|
||||
1.058507919326, /* 0x1.0efa60001 */
|
||||
1.061377286898, /* 0x1.0fb66bfff */
|
||||
1.064254641510, /* 0x1.1072fdffe */
|
||||
1.067140102389, /* 0x1.113018000 */
|
||||
1.070034146304, /* 0x1.11edc1fff */
|
||||
1.072937250162, /* 0x1.12ac04001 */
|
||||
1.075843691823, /* 0x1.136a7dfff */
|
||||
1.078760385496, /* 0x1.1429a3ffe */
|
||||
1.081685543070, /* 0x1.14e958000 */
|
||||
1.084618330005, /* 0x1.15a98c000 */
|
||||
1.087556362176, /* 0x1.166a18001 */
|
||||
1.090508937863, /* 0x1.172b98001 */
|
||||
1.093464612954, /* 0x1.17ed4bfff */
|
||||
1.096430182434, /* 0x1.18afa5ffe */
|
||||
1.099401354802, /* 0x1.19725e000 */
|
||||
1.102381587017, /* 0x1.1a35adfff */
|
||||
1.105370759965, /* 0x1.1af994000 */
|
||||
1.108367800686, /* 0x1.1bbdfdffe */
|
||||
1.111373305331, /* 0x1.1c82f6000 */
|
||||
1.114387035385, /* 0x1.1d4878001 */
|
||||
1.117408752440, /* 0x1.1e0e7ffff */
|
||||
1.120437502874, /* 0x1.1ed4fe000 */
|
||||
1.123474478729, /* 0x1.1f9c06000 */
|
||||
1.126521706601, /* 0x1.2063ba001 */
|
||||
1.129574775716, /* 0x1.212bd0001 */
|
||||
1.132638812065, /* 0x1.21f49e000 */
|
||||
1.135709524130, /* 0x1.22bddbffe */
|
||||
1.138789534565, /* 0x1.2387b5fff */
|
||||
1.141876101508, /* 0x1.2451fe000 */
|
||||
1.144971728301, /* 0x1.251cddffe */
|
||||
1.148077130296, /* 0x1.25e861ffe */
|
||||
1.151189923305, /* 0x1.26b462001 */
|
||||
1.154312610610, /* 0x1.278107ffe */
|
||||
1.157440662410, /* 0x1.284e08001 */
|
||||
1.160578370109, /* 0x1.291baa001 */
|
||||
1.163725256932, /* 0x1.29e9e6000 */
|
||||
1.166879892324, /* 0x1.2ab8a3ffe */
|
||||
1.170044302935, /* 0x1.2b8805fff */
|
||||
1.173205971694, /* 0x1.2c5739ffe */
|
||||
1.176397800428, /* 0x1.2d2867ffe */
|
||||
1.179586529747, /* 0x1.2df962001 */
|
||||
1.182784795737, /* 0x1.2ecafbffe */
|
||||
1.185991406414, /* 0x1.2f9d21ffe */
|
||||
1.189206838636, /* 0x1.306fdc001 */
|
||||
1.192430973067, /* 0x1.314328000 */
|
||||
1.195664167430, /* 0x1.32170c001 */
|
||||
1.198906540890, /* 0x1.32eb8a001 */
|
||||
1.202157497408, /* 0x1.33c098000 */
|
||||
1.205416083326, /* 0x1.349625fff */
|
||||
1.208683252332, /* 0x1.356c43fff */
|
||||
1.211961269402, /* 0x1.364318001 */
|
||||
1.215246438983, /* 0x1.371a64000 */
|
||||
1.218539118740, /* 0x1.37f22dffe */
|
||||
1.221847295770, /* 0x1.38cafc000 */
|
||||
1.225158572187, /* 0x1.39a3fdfff */
|
||||
1.228481650325, /* 0x1.3a7dc5ffe */
|
||||
1.231811761846, /* 0x1.3b5803fff */
|
||||
1.235149741144, /* 0x1.3c32c5ffe */
|
||||
1.238499879811, /* 0x1.3d0e53ffe */
|
||||
1.241858124726, /* 0x1.3dea69fff */
|
||||
1.245225191102, /* 0x1.3ec713fff */
|
||||
1.248601436624, /* 0x1.3fa458000 */
|
||||
1.251975655584, /* 0x1.40817a001 */
|
||||
1.255380749731, /* 0x1.4160a2001 */
|
||||
1.258783102010, /* 0x1.423f9bffe */
|
||||
1.262198328973, /* 0x1.431f6e000 */
|
||||
1.265619754780, /* 0x1.43ffa7fff */
|
||||
1.269052743928, /* 0x1.44e0a4001 */
|
||||
1.272490739830, /* 0x1.45c1f4000 */
|
||||
1.275942921659, /* 0x1.46a432001 */
|
||||
1.279397487615, /* 0x1.478697ffe */
|
||||
1.282870173427, /* 0x1.486a2dffe */
|
||||
1.286346316319, /* 0x1.494dfdffe */
|
||||
1.289836049094, /* 0x1.4a32b2001 */
|
||||
1.293333172770, /* 0x1.4b17e1ffe */
|
||||
1.296839594835, /* 0x1.4bfdadfff */
|
||||
1.300354957560, /* 0x1.4ce40fffe */
|
||||
1.303882122055, /* 0x1.4dcb38001 */
|
||||
1.307417988757, /* 0x1.4eb2f1ffe */
|
||||
1.310960650439, /* 0x1.4f9b1dfff */
|
||||
1.314516782746, /* 0x1.50842bfff */
|
||||
1.318079948424, /* 0x1.516daffff */
|
||||
1.321653246888, /* 0x1.5257de000 */
|
||||
1.325237751030, /* 0x1.5342c8001 */
|
||||
1.328829526907, /* 0x1.542e2c000 */
|
||||
1.332433700535, /* 0x1.551a5fffe */
|
||||
1.336045145966, /* 0x1.56070dffe */
|
||||
1.339667558645, /* 0x1.56f473ffe */
|
||||
1.343300342533, /* 0x1.57e287ffe */
|
||||
1.346941947961, /* 0x1.58d130001 */
|
||||
1.350594043714, /* 0x1.59c087ffe */
|
||||
1.354256033883, /* 0x1.5ab085fff */
|
||||
1.357932448365, /* 0x1.5ba175ffe */
|
||||
1.361609339707, /* 0x1.5c926dfff */
|
||||
1.365299344044, /* 0x1.5d8441ffe */
|
||||
1.369003057507, /* 0x1.5e76fc001 */
|
||||
1.372714757920, /* 0x1.5f6a3c000 */
|
||||
1.376437187179, /* 0x1.605e2fffe */
|
||||
1.380165219333, /* 0x1.615282001 */
|
||||
1.383909463864, /* 0x1.6247e3ffe */
|
||||
1.387661933907, /* 0x1.633dd0000 */
|
||||
1.391424179060, /* 0x1.64345fffe */
|
||||
1.395197510706, /* 0x1.652ba9fff */
|
||||
1.399006724329, /* 0x1.66254dffe */
|
||||
1.402773022651, /* 0x1.671c22000 */
|
||||
1.406576037403, /* 0x1.68155dfff */
|
||||
1.410389423392, /* 0x1.690f48001 */
|
||||
};
|
117
libgcc-math/i386/Makefile.am
Normal file
117
libgcc-math/i386/Makefile.am
Normal file
|
@ -0,0 +1,117 @@
|
|||
## Makefile for the i386 directory of the libgcc-math library.
|
||||
##
|
||||
## Copyright (C) 2006
|
||||
## Free Software Foundation, Inc.
|
||||
##
|
||||
|
||||
# May be used by various substitution variables.
|
||||
gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
|
||||
|
||||
|
||||
noinst_LTLIBRARIES = libsse2.la
|
||||
|
||||
libsse2_la_CFLAGS = -I@srcdir@/../include -include @srcdir@/sse2.h \
|
||||
-Wall -O2 -g -msse2 -msseregparm -mfpmath=sse -march=pentium3 \
|
||||
-fno-math-errno -fno-trapping-math -ffinite-math-only \
|
||||
-fno-rounding-math -fno-signaling-nans -D__NO_MATH_INLINES
|
||||
|
||||
libsse2_la_SOURCES = \
|
||||
@srcdir@/../flt-32/e_acosf.c \
|
||||
@srcdir@/../flt-32/e_asinf.c \
|
||||
@srcdir@/../flt-32/e_atan2f.c \
|
||||
@srcdir@/../flt-32/s_atanf.c \
|
||||
@srcdir@/../flt-32/s_cosf.c \
|
||||
@srcdir@/../flt-32/e_expf.c \
|
||||
@srcdir@/../flt-32/e_log10f.c \
|
||||
@srcdir@/../flt-32/e_logf.c \
|
||||
@srcdir@/../flt-32/e_powf.c \
|
||||
@srcdir@/../flt-32/s_sinf.c \
|
||||
@srcdir@/../flt-32/s_tanf.c \
|
||||
@srcdir@/../flt-32/k_cosf.c \
|
||||
@srcdir@/../flt-32/k_rem_pio2f.c \
|
||||
@srcdir@/../flt-32/k_sinf.c \
|
||||
@srcdir@/../flt-32/k_tanf.c \
|
||||
@srcdir@/../flt-32/e_rem_pio2f.c \
|
||||
@srcdir@/../flt-32/e_sqrtf.c \
|
||||
@srcdir@/../flt-32/s_scalbnf.c \
|
||||
@srcdir@/../flt-32/s_floorf.c \
|
||||
@srcdir@/../flt-32/s_isinff.c \
|
||||
@srcdir@/../dbl-64/t_exp.c \
|
||||
@srcdir@/../dbl-64/e_asin.c \
|
||||
@srcdir@/../dbl-64/e_atan2.c \
|
||||
@srcdir@/../dbl-64/s_atan.c \
|
||||
@srcdir@/../dbl-64/branred.c \
|
||||
@srcdir@/../dbl-64/doasin.c \
|
||||
@srcdir@/../dbl-64/dosincos.c \
|
||||
@srcdir@/../dbl-64/e_exp.c \
|
||||
@srcdir@/../dbl-64/halfulp.c \
|
||||
@srcdir@/../dbl-64/k_rem_pio2.c \
|
||||
@srcdir@/../dbl-64/e_log10.c \
|
||||
@srcdir@/../dbl-64/e_log.c \
|
||||
@srcdir@/../dbl-64/mpa.c \
|
||||
@srcdir@/../dbl-64/mpatan2.c \
|
||||
@srcdir@/../dbl-64/mpatan.c \
|
||||
@srcdir@/../dbl-64/mpexp.c \
|
||||
@srcdir@/../dbl-64/mplog.c \
|
||||
@srcdir@/../dbl-64/mpsqrt.c \
|
||||
@srcdir@/../dbl-64/mptan.c \
|
||||
@srcdir@/../dbl-64/e_pow.c \
|
||||
@srcdir@/../dbl-64/e_rem_pio2.c \
|
||||
@srcdir@/../dbl-64/s_sin.c \
|
||||
@srcdir@/../dbl-64/sincos32.c \
|
||||
@srcdir@/../dbl-64/slowexp.c \
|
||||
@srcdir@/../dbl-64/slowpow.c \
|
||||
@srcdir@/../dbl-64/e_sqrt.c \
|
||||
@srcdir@/../dbl-64/s_tan.c \
|
||||
@srcdir@/../dbl-64/s_scalbn.c \
|
||||
@srcdir@/../dbl-64/s_floor.c \
|
||||
@srcdir@/../dbl-64/s_isinf.c
|
||||
|
||||
|
||||
# XXX hack alert
|
||||
# From libffi/Makefile.am
|
||||
|
||||
# Work around what appears to be a GNU make bug handling MAKEFLAGS
|
||||
# values defined in terms of make variables, as is the case for CC and
|
||||
# friends when we are called from the top level Makefile.
|
||||
AM_MAKEFLAGS = \
|
||||
"AR_FLAGS=$(AR_FLAGS)" \
|
||||
"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
|
||||
"CFLAGS=$(CFLAGS)" \
|
||||
"CXXFLAGS=$(CXXFLAGS)" \
|
||||
"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
|
||||
"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
|
||||
"INSTALL=$(INSTALL)" \
|
||||
"INSTALL_DATA=$(INSTALL_DATA)" \
|
||||
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
|
||||
"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
|
||||
"JC1FLAGS=$(JC1FLAGS)" \
|
||||
"LDFLAGS=$(LDFLAGS)" \
|
||||
"LIBCFLAGS=$(LIBCFLAGS)" \
|
||||
"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
|
||||
"MAKE=$(MAKE)" \
|
||||
"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
|
||||
"PICFLAG=$(PICFLAG)" \
|
||||
"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
|
||||
"SHELL=$(SHELL)" \
|
||||
"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
|
||||
"exec_prefix=$(exec_prefix)" \
|
||||
"infodir=$(infodir)" \
|
||||
"libdir=$(libdir)" \
|
||||
"prefix=$(prefix)" \
|
||||
"includedir=$(includedir)" \
|
||||
"AR=$(AR)" \
|
||||
"AS=$(AS)" \
|
||||
"CC=$(CC)" \
|
||||
"CXX=$(CXX)" \
|
||||
"LD=$(LD)" \
|
||||
"LIBCFLAGS=$(LIBCFLAGS)" \
|
||||
"NM=$(NM)" \
|
||||
"PICFLAG=$(PICFLAG)" \
|
||||
"RANLIB=$(RANLIB)" \
|
||||
"DESTDIR=$(DESTDIR)"
|
||||
|
||||
MAKEOVERRIDES=
|
||||
|
||||
## ################################################################
|
||||
|
953
libgcc-math/i386/Makefile.in
Normal file
953
libgcc-math/i386/Makefile.in
Normal file
|
@ -0,0 +1,953 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = i386
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
|
||||
$(top_srcdir)/../config/lead-dot.m4 \
|
||||
$(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
libsse2_la_LIBADD =
|
||||
am_libsse2_la_OBJECTS = libsse2_la-e_acosf.lo libsse2_la-e_asinf.lo \
|
||||
libsse2_la-e_atan2f.lo libsse2_la-s_atanf.lo \
|
||||
libsse2_la-s_cosf.lo libsse2_la-e_expf.lo \
|
||||
libsse2_la-e_log10f.lo libsse2_la-e_logf.lo \
|
||||
libsse2_la-e_powf.lo libsse2_la-s_sinf.lo libsse2_la-s_tanf.lo \
|
||||
libsse2_la-k_cosf.lo libsse2_la-k_rem_pio2f.lo \
|
||||
libsse2_la-k_sinf.lo libsse2_la-k_tanf.lo \
|
||||
libsse2_la-e_rem_pio2f.lo libsse2_la-e_sqrtf.lo \
|
||||
libsse2_la-s_scalbnf.lo libsse2_la-s_floorf.lo \
|
||||
libsse2_la-s_isinff.lo libsse2_la-t_exp.lo \
|
||||
libsse2_la-e_asin.lo libsse2_la-e_atan2.lo \
|
||||
libsse2_la-s_atan.lo libsse2_la-branred.lo \
|
||||
libsse2_la-doasin.lo libsse2_la-dosincos.lo \
|
||||
libsse2_la-e_exp.lo libsse2_la-halfulp.lo \
|
||||
libsse2_la-k_rem_pio2.lo libsse2_la-e_log10.lo \
|
||||
libsse2_la-e_log.lo libsse2_la-mpa.lo libsse2_la-mpatan2.lo \
|
||||
libsse2_la-mpatan.lo libsse2_la-mpexp.lo libsse2_la-mplog.lo \
|
||||
libsse2_la-mpsqrt.lo libsse2_la-mptan.lo libsse2_la-e_pow.lo \
|
||||
libsse2_la-e_rem_pio2.lo libsse2_la-s_sin.lo \
|
||||
libsse2_la-sincos32.lo libsse2_la-slowexp.lo \
|
||||
libsse2_la-slowpow.lo libsse2_la-e_sqrt.lo libsse2_la-s_tan.lo \
|
||||
libsse2_la-s_scalbn.lo libsse2_la-s_floor.lo \
|
||||
libsse2_la-s_isinf.lo
|
||||
libsse2_la_OBJECTS = $(am_libsse2_la_OBJECTS)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/../depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(libsse2_la_SOURCES)
|
||||
DIST_SOURCES = $(libsse2_la_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_LIBGCC_MATH_FALSE = @BUILD_LIBGCC_MATH_FALSE@
|
||||
BUILD_LIBGCC_MATH_TRUE = @BUILD_LIBGCC_MATH_TRUE@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LIBGCCM_USE_SYMVER_FALSE = @LIBGCCM_USE_SYMVER_FALSE@
|
||||
LIBGCCM_USE_SYMVER_TRUE = @LIBGCCM_USE_SYMVER_TRUE@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TARGET_ILP32_FALSE = @TARGET_ILP32_FALSE@
|
||||
TARGET_ILP32_TRUE = @TARGET_ILP32_TRUE@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
arch_libraries = @arch_libraries@
|
||||
arch_maps = @arch_maps@
|
||||
arch_subdirs = @arch_subdirs@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
enable_shared = @enable_shared@
|
||||
enable_static = @enable_static@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
multi_basedir = @multi_basedir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
toolexecdir = @toolexecdir@
|
||||
toolexeclibdir = @toolexeclibdir@
|
||||
|
||||
# May be used by various substitution variables.
|
||||
gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
|
||||
noinst_LTLIBRARIES = libsse2.la
|
||||
libsse2_la_CFLAGS = -I@srcdir@/../include -include @srcdir@/sse2.h \
|
||||
-Wall -O2 -g -msse2 -msseregparm -mfpmath=sse -march=pentium3 \
|
||||
-fno-math-errno -fno-trapping-math -ffinite-math-only \
|
||||
-fno-rounding-math -fno-signaling-nans -D__NO_MATH_INLINES
|
||||
|
||||
libsse2_la_SOURCES = \
|
||||
@srcdir@/../flt-32/e_acosf.c \
|
||||
@srcdir@/../flt-32/e_asinf.c \
|
||||
@srcdir@/../flt-32/e_atan2f.c \
|
||||
@srcdir@/../flt-32/s_atanf.c \
|
||||
@srcdir@/../flt-32/s_cosf.c \
|
||||
@srcdir@/../flt-32/e_expf.c \
|
||||
@srcdir@/../flt-32/e_log10f.c \
|
||||
@srcdir@/../flt-32/e_logf.c \
|
||||
@srcdir@/../flt-32/e_powf.c \
|
||||
@srcdir@/../flt-32/s_sinf.c \
|
||||
@srcdir@/../flt-32/s_tanf.c \
|
||||
@srcdir@/../flt-32/k_cosf.c \
|
||||
@srcdir@/../flt-32/k_rem_pio2f.c \
|
||||
@srcdir@/../flt-32/k_sinf.c \
|
||||
@srcdir@/../flt-32/k_tanf.c \
|
||||
@srcdir@/../flt-32/e_rem_pio2f.c \
|
||||
@srcdir@/../flt-32/e_sqrtf.c \
|
||||
@srcdir@/../flt-32/s_scalbnf.c \
|
||||
@srcdir@/../flt-32/s_floorf.c \
|
||||
@srcdir@/../flt-32/s_isinff.c \
|
||||
@srcdir@/../dbl-64/t_exp.c \
|
||||
@srcdir@/../dbl-64/e_asin.c \
|
||||
@srcdir@/../dbl-64/e_atan2.c \
|
||||
@srcdir@/../dbl-64/s_atan.c \
|
||||
@srcdir@/../dbl-64/branred.c \
|
||||
@srcdir@/../dbl-64/doasin.c \
|
||||
@srcdir@/../dbl-64/dosincos.c \
|
||||
@srcdir@/../dbl-64/e_exp.c \
|
||||
@srcdir@/../dbl-64/halfulp.c \
|
||||
@srcdir@/../dbl-64/k_rem_pio2.c \
|
||||
@srcdir@/../dbl-64/e_log10.c \
|
||||
@srcdir@/../dbl-64/e_log.c \
|
||||
@srcdir@/../dbl-64/mpa.c \
|
||||
@srcdir@/../dbl-64/mpatan2.c \
|
||||
@srcdir@/../dbl-64/mpatan.c \
|
||||
@srcdir@/../dbl-64/mpexp.c \
|
||||
@srcdir@/../dbl-64/mplog.c \
|
||||
@srcdir@/../dbl-64/mpsqrt.c \
|
||||
@srcdir@/../dbl-64/mptan.c \
|
||||
@srcdir@/../dbl-64/e_pow.c \
|
||||
@srcdir@/../dbl-64/e_rem_pio2.c \
|
||||
@srcdir@/../dbl-64/s_sin.c \
|
||||
@srcdir@/../dbl-64/sincos32.c \
|
||||
@srcdir@/../dbl-64/slowexp.c \
|
||||
@srcdir@/../dbl-64/slowpow.c \
|
||||
@srcdir@/../dbl-64/e_sqrt.c \
|
||||
@srcdir@/../dbl-64/s_tan.c \
|
||||
@srcdir@/../dbl-64/s_scalbn.c \
|
||||
@srcdir@/../dbl-64/s_floor.c \
|
||||
@srcdir@/../dbl-64/s_isinf.c
|
||||
|
||||
|
||||
# XXX hack alert
|
||||
# From libffi/Makefile.am
|
||||
|
||||
# Work around what appears to be a GNU make bug handling MAKEFLAGS
|
||||
# values defined in terms of make variables, as is the case for CC and
|
||||
# friends when we are called from the top level Makefile.
|
||||
AM_MAKEFLAGS = \
|
||||
"AR_FLAGS=$(AR_FLAGS)" \
|
||||
"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
|
||||
"CFLAGS=$(CFLAGS)" \
|
||||
"CXXFLAGS=$(CXXFLAGS)" \
|
||||
"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
|
||||
"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
|
||||
"INSTALL=$(INSTALL)" \
|
||||
"INSTALL_DATA=$(INSTALL_DATA)" \
|
||||
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
|
||||
"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
|
||||
"JC1FLAGS=$(JC1FLAGS)" \
|
||||
"LDFLAGS=$(LDFLAGS)" \
|
||||
"LIBCFLAGS=$(LIBCFLAGS)" \
|
||||
"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
|
||||
"MAKE=$(MAKE)" \
|
||||
"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
|
||||
"PICFLAG=$(PICFLAG)" \
|
||||
"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
|
||||
"SHELL=$(SHELL)" \
|
||||
"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
|
||||
"exec_prefix=$(exec_prefix)" \
|
||||
"infodir=$(infodir)" \
|
||||
"libdir=$(libdir)" \
|
||||
"prefix=$(prefix)" \
|
||||
"includedir=$(includedir)" \
|
||||
"AR=$(AR)" \
|
||||
"AS=$(AS)" \
|
||||
"CC=$(CC)" \
|
||||
"CXX=$(CXX)" \
|
||||
"LD=$(LD)" \
|
||||
"LIBCFLAGS=$(LIBCFLAGS)" \
|
||||
"NM=$(NM)" \
|
||||
"PICFLAG=$(PICFLAG)" \
|
||||
"RANLIB=$(RANLIB)" \
|
||||
"DESTDIR=$(DESTDIR)"
|
||||
|
||||
MAKEOVERRIDES =
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu i386/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu i386/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
clean-noinstLTLIBRARIES:
|
||||
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||
test "$$dir" != "$$p" || dir=.; \
|
||||
echo "rm -f \"$${dir}/so_locations\""; \
|
||||
rm -f "$${dir}/so_locations"; \
|
||||
done
|
||||
libsse2.la: $(libsse2_la_OBJECTS) $(libsse2_la_DEPENDENCIES)
|
||||
$(LINK) $(libsse2_la_LDFLAGS) $(libsse2_la_OBJECTS) $(libsse2_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-branred.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-doasin.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-dosincos.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_acosf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_asin.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_asinf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_atan2.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_atan2f.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_exp.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_expf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_log.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_log10.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_log10f.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_logf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_pow.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_powf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_rem_pio2.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_rem_pio2f.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_sqrt.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-e_sqrtf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-halfulp.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_cosf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_rem_pio2.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_rem_pio2f.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_sinf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-k_tanf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpa.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpatan.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpatan2.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpexp.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mplog.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mpsqrt.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-mptan.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_atan.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_atanf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_cosf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_floor.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_floorf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_isinf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_isinff.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_scalbn.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_scalbnf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_sin.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_sinf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_tan.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-s_tanf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-sincos32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-slowexp.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-slowpow.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsse2_la-t_exp.Plo@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
libsse2_la-e_acosf.lo: @srcdir@/../flt-32/e_acosf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_acosf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_acosf.Tpo" -c -o libsse2_la-e_acosf.lo `test -f '@srcdir@/../flt-32/e_acosf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_acosf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_acosf.Tpo" "$(DEPDIR)/libsse2_la-e_acosf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_acosf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/e_acosf.c' object='libsse2_la-e_acosf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_acosf.lo `test -f '@srcdir@/../flt-32/e_acosf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_acosf.c
|
||||
|
||||
libsse2_la-e_asinf.lo: @srcdir@/../flt-32/e_asinf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_asinf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_asinf.Tpo" -c -o libsse2_la-e_asinf.lo `test -f '@srcdir@/../flt-32/e_asinf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_asinf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_asinf.Tpo" "$(DEPDIR)/libsse2_la-e_asinf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_asinf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/e_asinf.c' object='libsse2_la-e_asinf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_asinf.lo `test -f '@srcdir@/../flt-32/e_asinf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_asinf.c
|
||||
|
||||
libsse2_la-e_atan2f.lo: @srcdir@/../flt-32/e_atan2f.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_atan2f.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_atan2f.Tpo" -c -o libsse2_la-e_atan2f.lo `test -f '@srcdir@/../flt-32/e_atan2f.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_atan2f.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_atan2f.Tpo" "$(DEPDIR)/libsse2_la-e_atan2f.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_atan2f.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/e_atan2f.c' object='libsse2_la-e_atan2f.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_atan2f.lo `test -f '@srcdir@/../flt-32/e_atan2f.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_atan2f.c
|
||||
|
||||
libsse2_la-s_atanf.lo: @srcdir@/../flt-32/s_atanf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_atanf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_atanf.Tpo" -c -o libsse2_la-s_atanf.lo `test -f '@srcdir@/../flt-32/s_atanf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_atanf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_atanf.Tpo" "$(DEPDIR)/libsse2_la-s_atanf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_atanf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/s_atanf.c' object='libsse2_la-s_atanf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_atanf.lo `test -f '@srcdir@/../flt-32/s_atanf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_atanf.c
|
||||
|
||||
libsse2_la-s_cosf.lo: @srcdir@/../flt-32/s_cosf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_cosf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_cosf.Tpo" -c -o libsse2_la-s_cosf.lo `test -f '@srcdir@/../flt-32/s_cosf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_cosf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_cosf.Tpo" "$(DEPDIR)/libsse2_la-s_cosf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_cosf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/s_cosf.c' object='libsse2_la-s_cosf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_cosf.lo `test -f '@srcdir@/../flt-32/s_cosf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_cosf.c
|
||||
|
||||
libsse2_la-e_expf.lo: @srcdir@/../flt-32/e_expf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_expf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_expf.Tpo" -c -o libsse2_la-e_expf.lo `test -f '@srcdir@/../flt-32/e_expf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_expf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_expf.Tpo" "$(DEPDIR)/libsse2_la-e_expf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_expf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/e_expf.c' object='libsse2_la-e_expf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_expf.lo `test -f '@srcdir@/../flt-32/e_expf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_expf.c
|
||||
|
||||
libsse2_la-e_log10f.lo: @srcdir@/../flt-32/e_log10f.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_log10f.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_log10f.Tpo" -c -o libsse2_la-e_log10f.lo `test -f '@srcdir@/../flt-32/e_log10f.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_log10f.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_log10f.Tpo" "$(DEPDIR)/libsse2_la-e_log10f.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_log10f.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/e_log10f.c' object='libsse2_la-e_log10f.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_log10f.lo `test -f '@srcdir@/../flt-32/e_log10f.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_log10f.c
|
||||
|
||||
libsse2_la-e_logf.lo: @srcdir@/../flt-32/e_logf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_logf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_logf.Tpo" -c -o libsse2_la-e_logf.lo `test -f '@srcdir@/../flt-32/e_logf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_logf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_logf.Tpo" "$(DEPDIR)/libsse2_la-e_logf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_logf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/e_logf.c' object='libsse2_la-e_logf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_logf.lo `test -f '@srcdir@/../flt-32/e_logf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_logf.c
|
||||
|
||||
libsse2_la-e_powf.lo: @srcdir@/../flt-32/e_powf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_powf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_powf.Tpo" -c -o libsse2_la-e_powf.lo `test -f '@srcdir@/../flt-32/e_powf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_powf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_powf.Tpo" "$(DEPDIR)/libsse2_la-e_powf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_powf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/e_powf.c' object='libsse2_la-e_powf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_powf.lo `test -f '@srcdir@/../flt-32/e_powf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_powf.c
|
||||
|
||||
libsse2_la-s_sinf.lo: @srcdir@/../flt-32/s_sinf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_sinf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_sinf.Tpo" -c -o libsse2_la-s_sinf.lo `test -f '@srcdir@/../flt-32/s_sinf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_sinf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_sinf.Tpo" "$(DEPDIR)/libsse2_la-s_sinf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_sinf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/s_sinf.c' object='libsse2_la-s_sinf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_sinf.lo `test -f '@srcdir@/../flt-32/s_sinf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_sinf.c
|
||||
|
||||
libsse2_la-s_tanf.lo: @srcdir@/../flt-32/s_tanf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_tanf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_tanf.Tpo" -c -o libsse2_la-s_tanf.lo `test -f '@srcdir@/../flt-32/s_tanf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_tanf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_tanf.Tpo" "$(DEPDIR)/libsse2_la-s_tanf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_tanf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/s_tanf.c' object='libsse2_la-s_tanf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_tanf.lo `test -f '@srcdir@/../flt-32/s_tanf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_tanf.c
|
||||
|
||||
libsse2_la-k_cosf.lo: @srcdir@/../flt-32/k_cosf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-k_cosf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-k_cosf.Tpo" -c -o libsse2_la-k_cosf.lo `test -f '@srcdir@/../flt-32/k_cosf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/k_cosf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-k_cosf.Tpo" "$(DEPDIR)/libsse2_la-k_cosf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-k_cosf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/k_cosf.c' object='libsse2_la-k_cosf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-k_cosf.lo `test -f '@srcdir@/../flt-32/k_cosf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/k_cosf.c
|
||||
|
||||
libsse2_la-k_rem_pio2f.lo: @srcdir@/../flt-32/k_rem_pio2f.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-k_rem_pio2f.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-k_rem_pio2f.Tpo" -c -o libsse2_la-k_rem_pio2f.lo `test -f '@srcdir@/../flt-32/k_rem_pio2f.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/k_rem_pio2f.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-k_rem_pio2f.Tpo" "$(DEPDIR)/libsse2_la-k_rem_pio2f.Plo"; else rm -f "$(DEPDIR)/libsse2_la-k_rem_pio2f.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/k_rem_pio2f.c' object='libsse2_la-k_rem_pio2f.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-k_rem_pio2f.lo `test -f '@srcdir@/../flt-32/k_rem_pio2f.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/k_rem_pio2f.c
|
||||
|
||||
libsse2_la-k_sinf.lo: @srcdir@/../flt-32/k_sinf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-k_sinf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-k_sinf.Tpo" -c -o libsse2_la-k_sinf.lo `test -f '@srcdir@/../flt-32/k_sinf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/k_sinf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-k_sinf.Tpo" "$(DEPDIR)/libsse2_la-k_sinf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-k_sinf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/k_sinf.c' object='libsse2_la-k_sinf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-k_sinf.lo `test -f '@srcdir@/../flt-32/k_sinf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/k_sinf.c
|
||||
|
||||
libsse2_la-k_tanf.lo: @srcdir@/../flt-32/k_tanf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-k_tanf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-k_tanf.Tpo" -c -o libsse2_la-k_tanf.lo `test -f '@srcdir@/../flt-32/k_tanf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/k_tanf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-k_tanf.Tpo" "$(DEPDIR)/libsse2_la-k_tanf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-k_tanf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/k_tanf.c' object='libsse2_la-k_tanf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-k_tanf.lo `test -f '@srcdir@/../flt-32/k_tanf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/k_tanf.c
|
||||
|
||||
libsse2_la-e_rem_pio2f.lo: @srcdir@/../flt-32/e_rem_pio2f.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_rem_pio2f.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_rem_pio2f.Tpo" -c -o libsse2_la-e_rem_pio2f.lo `test -f '@srcdir@/../flt-32/e_rem_pio2f.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_rem_pio2f.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_rem_pio2f.Tpo" "$(DEPDIR)/libsse2_la-e_rem_pio2f.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_rem_pio2f.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/e_rem_pio2f.c' object='libsse2_la-e_rem_pio2f.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_rem_pio2f.lo `test -f '@srcdir@/../flt-32/e_rem_pio2f.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_rem_pio2f.c
|
||||
|
||||
libsse2_la-e_sqrtf.lo: @srcdir@/../flt-32/e_sqrtf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_sqrtf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_sqrtf.Tpo" -c -o libsse2_la-e_sqrtf.lo `test -f '@srcdir@/../flt-32/e_sqrtf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_sqrtf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_sqrtf.Tpo" "$(DEPDIR)/libsse2_la-e_sqrtf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_sqrtf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/e_sqrtf.c' object='libsse2_la-e_sqrtf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_sqrtf.lo `test -f '@srcdir@/../flt-32/e_sqrtf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/e_sqrtf.c
|
||||
|
||||
libsse2_la-s_scalbnf.lo: @srcdir@/../flt-32/s_scalbnf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_scalbnf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_scalbnf.Tpo" -c -o libsse2_la-s_scalbnf.lo `test -f '@srcdir@/../flt-32/s_scalbnf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_scalbnf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_scalbnf.Tpo" "$(DEPDIR)/libsse2_la-s_scalbnf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_scalbnf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/s_scalbnf.c' object='libsse2_la-s_scalbnf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_scalbnf.lo `test -f '@srcdir@/../flt-32/s_scalbnf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_scalbnf.c
|
||||
|
||||
libsse2_la-s_floorf.lo: @srcdir@/../flt-32/s_floorf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_floorf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_floorf.Tpo" -c -o libsse2_la-s_floorf.lo `test -f '@srcdir@/../flt-32/s_floorf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_floorf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_floorf.Tpo" "$(DEPDIR)/libsse2_la-s_floorf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_floorf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/s_floorf.c' object='libsse2_la-s_floorf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_floorf.lo `test -f '@srcdir@/../flt-32/s_floorf.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_floorf.c
|
||||
|
||||
libsse2_la-s_isinff.lo: @srcdir@/../flt-32/s_isinff.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_isinff.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_isinff.Tpo" -c -o libsse2_la-s_isinff.lo `test -f '@srcdir@/../flt-32/s_isinff.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_isinff.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_isinff.Tpo" "$(DEPDIR)/libsse2_la-s_isinff.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_isinff.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../flt-32/s_isinff.c' object='libsse2_la-s_isinff.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_isinff.lo `test -f '@srcdir@/../flt-32/s_isinff.c' || echo '$(srcdir)/'`@srcdir@/../flt-32/s_isinff.c
|
||||
|
||||
libsse2_la-t_exp.lo: @srcdir@/../dbl-64/t_exp.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-t_exp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-t_exp.Tpo" -c -o libsse2_la-t_exp.lo `test -f '@srcdir@/../dbl-64/t_exp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/t_exp.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-t_exp.Tpo" "$(DEPDIR)/libsse2_la-t_exp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-t_exp.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/t_exp.c' object='libsse2_la-t_exp.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-t_exp.lo `test -f '@srcdir@/../dbl-64/t_exp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/t_exp.c
|
||||
|
||||
libsse2_la-e_asin.lo: @srcdir@/../dbl-64/e_asin.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_asin.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_asin.Tpo" -c -o libsse2_la-e_asin.lo `test -f '@srcdir@/../dbl-64/e_asin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_asin.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_asin.Tpo" "$(DEPDIR)/libsse2_la-e_asin.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_asin.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_asin.c' object='libsse2_la-e_asin.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_asin.lo `test -f '@srcdir@/../dbl-64/e_asin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_asin.c
|
||||
|
||||
libsse2_la-e_atan2.lo: @srcdir@/../dbl-64/e_atan2.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_atan2.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_atan2.Tpo" -c -o libsse2_la-e_atan2.lo `test -f '@srcdir@/../dbl-64/e_atan2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_atan2.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_atan2.Tpo" "$(DEPDIR)/libsse2_la-e_atan2.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_atan2.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_atan2.c' object='libsse2_la-e_atan2.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_atan2.lo `test -f '@srcdir@/../dbl-64/e_atan2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_atan2.c
|
||||
|
||||
libsse2_la-s_atan.lo: @srcdir@/../dbl-64/s_atan.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_atan.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_atan.Tpo" -c -o libsse2_la-s_atan.lo `test -f '@srcdir@/../dbl-64/s_atan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_atan.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_atan.Tpo" "$(DEPDIR)/libsse2_la-s_atan.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_atan.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_atan.c' object='libsse2_la-s_atan.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_atan.lo `test -f '@srcdir@/../dbl-64/s_atan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_atan.c
|
||||
|
||||
libsse2_la-branred.lo: @srcdir@/../dbl-64/branred.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-branred.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-branred.Tpo" -c -o libsse2_la-branred.lo `test -f '@srcdir@/../dbl-64/branred.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/branred.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-branred.Tpo" "$(DEPDIR)/libsse2_la-branred.Plo"; else rm -f "$(DEPDIR)/libsse2_la-branred.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/branred.c' object='libsse2_la-branred.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-branred.lo `test -f '@srcdir@/../dbl-64/branred.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/branred.c
|
||||
|
||||
libsse2_la-doasin.lo: @srcdir@/../dbl-64/doasin.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-doasin.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-doasin.Tpo" -c -o libsse2_la-doasin.lo `test -f '@srcdir@/../dbl-64/doasin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/doasin.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-doasin.Tpo" "$(DEPDIR)/libsse2_la-doasin.Plo"; else rm -f "$(DEPDIR)/libsse2_la-doasin.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/doasin.c' object='libsse2_la-doasin.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-doasin.lo `test -f '@srcdir@/../dbl-64/doasin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/doasin.c
|
||||
|
||||
libsse2_la-dosincos.lo: @srcdir@/../dbl-64/dosincos.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-dosincos.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-dosincos.Tpo" -c -o libsse2_la-dosincos.lo `test -f '@srcdir@/../dbl-64/dosincos.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/dosincos.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-dosincos.Tpo" "$(DEPDIR)/libsse2_la-dosincos.Plo"; else rm -f "$(DEPDIR)/libsse2_la-dosincos.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/dosincos.c' object='libsse2_la-dosincos.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-dosincos.lo `test -f '@srcdir@/../dbl-64/dosincos.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/dosincos.c
|
||||
|
||||
libsse2_la-e_exp.lo: @srcdir@/../dbl-64/e_exp.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_exp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_exp.Tpo" -c -o libsse2_la-e_exp.lo `test -f '@srcdir@/../dbl-64/e_exp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_exp.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_exp.Tpo" "$(DEPDIR)/libsse2_la-e_exp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_exp.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_exp.c' object='libsse2_la-e_exp.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_exp.lo `test -f '@srcdir@/../dbl-64/e_exp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_exp.c
|
||||
|
||||
libsse2_la-halfulp.lo: @srcdir@/../dbl-64/halfulp.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-halfulp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-halfulp.Tpo" -c -o libsse2_la-halfulp.lo `test -f '@srcdir@/../dbl-64/halfulp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/halfulp.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-halfulp.Tpo" "$(DEPDIR)/libsse2_la-halfulp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-halfulp.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/halfulp.c' object='libsse2_la-halfulp.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-halfulp.lo `test -f '@srcdir@/../dbl-64/halfulp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/halfulp.c
|
||||
|
||||
libsse2_la-k_rem_pio2.lo: @srcdir@/../dbl-64/k_rem_pio2.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-k_rem_pio2.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-k_rem_pio2.Tpo" -c -o libsse2_la-k_rem_pio2.lo `test -f '@srcdir@/../dbl-64/k_rem_pio2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/k_rem_pio2.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-k_rem_pio2.Tpo" "$(DEPDIR)/libsse2_la-k_rem_pio2.Plo"; else rm -f "$(DEPDIR)/libsse2_la-k_rem_pio2.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/k_rem_pio2.c' object='libsse2_la-k_rem_pio2.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-k_rem_pio2.lo `test -f '@srcdir@/../dbl-64/k_rem_pio2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/k_rem_pio2.c
|
||||
|
||||
libsse2_la-e_log10.lo: @srcdir@/../dbl-64/e_log10.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_log10.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_log10.Tpo" -c -o libsse2_la-e_log10.lo `test -f '@srcdir@/../dbl-64/e_log10.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_log10.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_log10.Tpo" "$(DEPDIR)/libsse2_la-e_log10.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_log10.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_log10.c' object='libsse2_la-e_log10.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_log10.lo `test -f '@srcdir@/../dbl-64/e_log10.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_log10.c
|
||||
|
||||
libsse2_la-e_log.lo: @srcdir@/../dbl-64/e_log.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_log.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_log.Tpo" -c -o libsse2_la-e_log.lo `test -f '@srcdir@/../dbl-64/e_log.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_log.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_log.Tpo" "$(DEPDIR)/libsse2_la-e_log.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_log.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_log.c' object='libsse2_la-e_log.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_log.lo `test -f '@srcdir@/../dbl-64/e_log.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_log.c
|
||||
|
||||
libsse2_la-mpa.lo: @srcdir@/../dbl-64/mpa.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpa.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpa.Tpo" -c -o libsse2_la-mpa.lo `test -f '@srcdir@/../dbl-64/mpa.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpa.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpa.Tpo" "$(DEPDIR)/libsse2_la-mpa.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpa.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpa.c' object='libsse2_la-mpa.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpa.lo `test -f '@srcdir@/../dbl-64/mpa.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpa.c
|
||||
|
||||
libsse2_la-mpatan2.lo: @srcdir@/../dbl-64/mpatan2.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpatan2.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpatan2.Tpo" -c -o libsse2_la-mpatan2.lo `test -f '@srcdir@/../dbl-64/mpatan2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpatan2.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpatan2.Tpo" "$(DEPDIR)/libsse2_la-mpatan2.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpatan2.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpatan2.c' object='libsse2_la-mpatan2.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpatan2.lo `test -f '@srcdir@/../dbl-64/mpatan2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpatan2.c
|
||||
|
||||
libsse2_la-mpatan.lo: @srcdir@/../dbl-64/mpatan.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpatan.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpatan.Tpo" -c -o libsse2_la-mpatan.lo `test -f '@srcdir@/../dbl-64/mpatan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpatan.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpatan.Tpo" "$(DEPDIR)/libsse2_la-mpatan.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpatan.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpatan.c' object='libsse2_la-mpatan.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpatan.lo `test -f '@srcdir@/../dbl-64/mpatan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpatan.c
|
||||
|
||||
libsse2_la-mpexp.lo: @srcdir@/../dbl-64/mpexp.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpexp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpexp.Tpo" -c -o libsse2_la-mpexp.lo `test -f '@srcdir@/../dbl-64/mpexp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpexp.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpexp.Tpo" "$(DEPDIR)/libsse2_la-mpexp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpexp.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpexp.c' object='libsse2_la-mpexp.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpexp.lo `test -f '@srcdir@/../dbl-64/mpexp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpexp.c
|
||||
|
||||
libsse2_la-mplog.lo: @srcdir@/../dbl-64/mplog.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mplog.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mplog.Tpo" -c -o libsse2_la-mplog.lo `test -f '@srcdir@/../dbl-64/mplog.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mplog.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mplog.Tpo" "$(DEPDIR)/libsse2_la-mplog.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mplog.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mplog.c' object='libsse2_la-mplog.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mplog.lo `test -f '@srcdir@/../dbl-64/mplog.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mplog.c
|
||||
|
||||
libsse2_la-mpsqrt.lo: @srcdir@/../dbl-64/mpsqrt.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mpsqrt.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mpsqrt.Tpo" -c -o libsse2_la-mpsqrt.lo `test -f '@srcdir@/../dbl-64/mpsqrt.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpsqrt.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mpsqrt.Tpo" "$(DEPDIR)/libsse2_la-mpsqrt.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mpsqrt.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mpsqrt.c' object='libsse2_la-mpsqrt.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mpsqrt.lo `test -f '@srcdir@/../dbl-64/mpsqrt.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mpsqrt.c
|
||||
|
||||
libsse2_la-mptan.lo: @srcdir@/../dbl-64/mptan.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-mptan.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-mptan.Tpo" -c -o libsse2_la-mptan.lo `test -f '@srcdir@/../dbl-64/mptan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mptan.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-mptan.Tpo" "$(DEPDIR)/libsse2_la-mptan.Plo"; else rm -f "$(DEPDIR)/libsse2_la-mptan.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/mptan.c' object='libsse2_la-mptan.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-mptan.lo `test -f '@srcdir@/../dbl-64/mptan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/mptan.c
|
||||
|
||||
libsse2_la-e_pow.lo: @srcdir@/../dbl-64/e_pow.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_pow.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_pow.Tpo" -c -o libsse2_la-e_pow.lo `test -f '@srcdir@/../dbl-64/e_pow.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_pow.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_pow.Tpo" "$(DEPDIR)/libsse2_la-e_pow.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_pow.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_pow.c' object='libsse2_la-e_pow.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_pow.lo `test -f '@srcdir@/../dbl-64/e_pow.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_pow.c
|
||||
|
||||
libsse2_la-e_rem_pio2.lo: @srcdir@/../dbl-64/e_rem_pio2.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_rem_pio2.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_rem_pio2.Tpo" -c -o libsse2_la-e_rem_pio2.lo `test -f '@srcdir@/../dbl-64/e_rem_pio2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_rem_pio2.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_rem_pio2.Tpo" "$(DEPDIR)/libsse2_la-e_rem_pio2.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_rem_pio2.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_rem_pio2.c' object='libsse2_la-e_rem_pio2.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_rem_pio2.lo `test -f '@srcdir@/../dbl-64/e_rem_pio2.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_rem_pio2.c
|
||||
|
||||
libsse2_la-s_sin.lo: @srcdir@/../dbl-64/s_sin.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_sin.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_sin.Tpo" -c -o libsse2_la-s_sin.lo `test -f '@srcdir@/../dbl-64/s_sin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_sin.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_sin.Tpo" "$(DEPDIR)/libsse2_la-s_sin.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_sin.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_sin.c' object='libsse2_la-s_sin.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_sin.lo `test -f '@srcdir@/../dbl-64/s_sin.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_sin.c
|
||||
|
||||
libsse2_la-sincos32.lo: @srcdir@/../dbl-64/sincos32.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-sincos32.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-sincos32.Tpo" -c -o libsse2_la-sincos32.lo `test -f '@srcdir@/../dbl-64/sincos32.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/sincos32.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-sincos32.Tpo" "$(DEPDIR)/libsse2_la-sincos32.Plo"; else rm -f "$(DEPDIR)/libsse2_la-sincos32.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/sincos32.c' object='libsse2_la-sincos32.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-sincos32.lo `test -f '@srcdir@/../dbl-64/sincos32.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/sincos32.c
|
||||
|
||||
libsse2_la-slowexp.lo: @srcdir@/../dbl-64/slowexp.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-slowexp.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-slowexp.Tpo" -c -o libsse2_la-slowexp.lo `test -f '@srcdir@/../dbl-64/slowexp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/slowexp.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-slowexp.Tpo" "$(DEPDIR)/libsse2_la-slowexp.Plo"; else rm -f "$(DEPDIR)/libsse2_la-slowexp.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/slowexp.c' object='libsse2_la-slowexp.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-slowexp.lo `test -f '@srcdir@/../dbl-64/slowexp.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/slowexp.c
|
||||
|
||||
libsse2_la-slowpow.lo: @srcdir@/../dbl-64/slowpow.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-slowpow.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-slowpow.Tpo" -c -o libsse2_la-slowpow.lo `test -f '@srcdir@/../dbl-64/slowpow.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/slowpow.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-slowpow.Tpo" "$(DEPDIR)/libsse2_la-slowpow.Plo"; else rm -f "$(DEPDIR)/libsse2_la-slowpow.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/slowpow.c' object='libsse2_la-slowpow.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-slowpow.lo `test -f '@srcdir@/../dbl-64/slowpow.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/slowpow.c
|
||||
|
||||
libsse2_la-e_sqrt.lo: @srcdir@/../dbl-64/e_sqrt.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-e_sqrt.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-e_sqrt.Tpo" -c -o libsse2_la-e_sqrt.lo `test -f '@srcdir@/../dbl-64/e_sqrt.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_sqrt.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-e_sqrt.Tpo" "$(DEPDIR)/libsse2_la-e_sqrt.Plo"; else rm -f "$(DEPDIR)/libsse2_la-e_sqrt.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/e_sqrt.c' object='libsse2_la-e_sqrt.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-e_sqrt.lo `test -f '@srcdir@/../dbl-64/e_sqrt.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/e_sqrt.c
|
||||
|
||||
libsse2_la-s_tan.lo: @srcdir@/../dbl-64/s_tan.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_tan.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_tan.Tpo" -c -o libsse2_la-s_tan.lo `test -f '@srcdir@/../dbl-64/s_tan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_tan.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_tan.Tpo" "$(DEPDIR)/libsse2_la-s_tan.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_tan.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_tan.c' object='libsse2_la-s_tan.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_tan.lo `test -f '@srcdir@/../dbl-64/s_tan.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_tan.c
|
||||
|
||||
libsse2_la-s_scalbn.lo: @srcdir@/../dbl-64/s_scalbn.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_scalbn.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_scalbn.Tpo" -c -o libsse2_la-s_scalbn.lo `test -f '@srcdir@/../dbl-64/s_scalbn.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_scalbn.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_scalbn.Tpo" "$(DEPDIR)/libsse2_la-s_scalbn.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_scalbn.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_scalbn.c' object='libsse2_la-s_scalbn.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_scalbn.lo `test -f '@srcdir@/../dbl-64/s_scalbn.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_scalbn.c
|
||||
|
||||
libsse2_la-s_floor.lo: @srcdir@/../dbl-64/s_floor.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_floor.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_floor.Tpo" -c -o libsse2_la-s_floor.lo `test -f '@srcdir@/../dbl-64/s_floor.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_floor.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_floor.Tpo" "$(DEPDIR)/libsse2_la-s_floor.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_floor.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_floor.c' object='libsse2_la-s_floor.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_floor.lo `test -f '@srcdir@/../dbl-64/s_floor.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_floor.c
|
||||
|
||||
libsse2_la-s_isinf.lo: @srcdir@/../dbl-64/s_isinf.c
|
||||
@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -MT libsse2_la-s_isinf.lo -MD -MP -MF "$(DEPDIR)/libsse2_la-s_isinf.Tpo" -c -o libsse2_la-s_isinf.lo `test -f '@srcdir@/../dbl-64/s_isinf.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_isinf.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libsse2_la-s_isinf.Tpo" "$(DEPDIR)/libsse2_la-s_isinf.Plo"; else rm -f "$(DEPDIR)/libsse2_la-s_isinf.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='@srcdir@/../dbl-64/s_isinf.c' object='libsse2_la-s_isinf.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsse2_la_CFLAGS) $(CFLAGS) -c -o libsse2_la-s_isinf.lo `test -f '@srcdir@/../dbl-64/s_isinf.c' || echo '$(srcdir)/'`@srcdir@/../dbl-64/s_isinf.c
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||
uninstall-info-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
57
libgcc-math/i386/endian.h
Normal file
57
libgcc-math/i386/endian.h
Normal file
|
@ -0,0 +1,57 @@
|
|||
/* endian.h file crafted from relevant parts of libc include/endian.h
|
||||
string/endian.h and arch-specific bits/endian.h.
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2, or (at your option) any later
|
||||
version.
|
||||
|
||||
In addition to the permissions in the GNU General Public License, the
|
||||
Free Software Foundation gives you unlimited permission to link the
|
||||
compiled version of this file into combinations with other programs,
|
||||
and to distribute those combinations without any restriction coming
|
||||
from the use of this file. (The General Public License restrictions
|
||||
do apply in other respects; for example, they cover modification of
|
||||
the file, and distribution when not linked into a combine
|
||||
executable.)
|
||||
|
||||
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
#ifndef LIBGCCM_ENDIAN_H
|
||||
#define LIBGCCM_ENDIAN_H
|
||||
|
||||
#define __BIG_ENDIAN 4321
|
||||
#define __LITTLE_ENDIAN 1234
|
||||
#define BIG_ENDIAN 4321
|
||||
#define LITTLE_ENDIAN 1234
|
||||
|
||||
/* Change this. */
|
||||
#define __FLOAT_WORD_ORDER 1234
|
||||
#define __BYTE_ORDER 1234
|
||||
|
||||
#if __FLOAT_WORD_ORDER == BIG_ENDIAN
|
||||
# define BIG_ENDI 1
|
||||
# undef LITTLE_ENDI
|
||||
# define HIGH_HALF 0
|
||||
# define LOW_HALF 1
|
||||
#else
|
||||
# if __FLOAT_WORD_ORDER == LITTLE_ENDIAN
|
||||
# undef BIG_ENDI
|
||||
# define LITTLE_ENDI 1
|
||||
# define HIGH_HALF 1
|
||||
# define LOW_HALF 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue