mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-01 10:06:57 +03:00
Update.
1999-10-18 Andreas Jaeger <aj@suse.de> Added improved math testsuite: * math/libm-test.inc: New file, contains all tests from libm-test.c but in a different form. * math/libm-test.c: Removed. * sysdeps/generic/libm-test-ulps: New file: Fallback ulps file. * math/gen-libm-test.pl: New file: Preprocessor. * math/test-double.c: Adopted to new testsuite. * math/test-idouble.c: Likewise. * math/test-float.c: Likewise. * math/test-ifloat.c: Likewise. * math/test-ldouble.c: Likewise. * math/test-ildoubl.c: Likewise. * math/Makefile: Added rules to generate new suite.
This commit is contained in:
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
|||||||
|
1999-10-18 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
|
Added improved math testsuite:
|
||||||
|
* math/libm-test.inc: New file, contains all tests from
|
||||||
|
libm-test.c but in a different form.
|
||||||
|
* math/libm-test.c: Removed.
|
||||||
|
* sysdeps/generic/libm-test-ulps: New file: Fallback ulps file.
|
||||||
|
* math/gen-libm-test.pl: New file: Preprocessor.
|
||||||
|
* math/test-double.c: Adopted to new testsuite.
|
||||||
|
* math/test-idouble.c: Likewise.
|
||||||
|
* math/test-float.c: Likewise.
|
||||||
|
* math/test-ifloat.c: Likewise.
|
||||||
|
* math/test-ldouble.c: Likewise.
|
||||||
|
* math/test-ildoubl.c: Likewise.
|
||||||
|
* math/Makefile: Added rules to generate new suite.
|
||||||
|
|
||||||
1999-10-18 Ulrich Drepper <drepper@cygnus.com>
|
1999-10-18 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
* inet/rcmd.c (iruserok2): Initialize isbad to -1 [PR libc/1405].
|
* inet/rcmd.c (iruserok2): Initialize isbad to -1 [PR libc/1405].
|
||||||
|
@ -74,14 +74,38 @@ routines = $(calls) $(calls:=f) $(long-c-$(long-double-fcts))
|
|||||||
long-c-yes = $(calls:=l)
|
long-c-yes = $(calls:=l)
|
||||||
distribute += $(long-c-yes:=.c)
|
distribute += $(long-c-yes:=.c)
|
||||||
|
|
||||||
|
include ../Makeconfig
|
||||||
|
|
||||||
# Rules for the test suite.
|
# Rules for the test suite.
|
||||||
tests = test-float test-double $(test-longdouble-$(long-double-fcts)) \
|
tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test
|
||||||
test-ifloat test-idouble test-matherr test-fenv \
|
|
||||||
atest-exp atest-sincos atest-exp2 basic-test
|
|
||||||
# We do the `long double' tests only if this data type is available and
|
# We do the `long double' tests only if this data type is available and
|
||||||
# distinct from `double'.
|
# distinct from `double'.
|
||||||
test-longdouble-yes = test-ldouble test-ildoubl
|
test-longdouble-yes = test-ldouble test-ildoubl
|
||||||
|
|
||||||
|
ifneq (no,$(PERL))
|
||||||
|
libm-tests = test-float test-double $(test-longdouble-$(long-double-fcts)) \
|
||||||
|
test-ifloat test-idouble
|
||||||
|
libm-tests.o = $(addsuffix .o,$(libm-tests))
|
||||||
|
|
||||||
|
tests += $(libm-tests)
|
||||||
|
libm-tests-generated = libm-test-ulps.h libm-test.c libm-test.stmp
|
||||||
|
generated += $(libm-tests-generated)
|
||||||
|
|
||||||
|
|
||||||
|
ulps-file= $(firstword $(wildcard $(config-sysdirs:%=$(..)%/libm-test-ulps)))
|
||||||
|
|
||||||
|
$(objpfx)libm-test.stmp: $(ulps-file) libm-test.inc gen-libm-test.pl
|
||||||
|
$(PERL) gen-libm-test.pl -u $< -o $(objdir)/math/
|
||||||
|
@echo > $@
|
||||||
|
|
||||||
|
$(objpfx)test-float.o: $(objpfx)libm-test.stmp
|
||||||
|
$(objpfx)test-ifloat.o: $(objpfx)libm-test.stmp
|
||||||
|
$(objpfx)test-double.o: $(objpfx)libm-test.stmp
|
||||||
|
$(objpfx)test-idouble.o: $(objpfx)libm-test.stmp
|
||||||
|
$(objpfx)test-ldouble.o: $(objpfx)libm-test.stmp
|
||||||
|
$(objpfx)test-ildoubl.o: $(objpfx)libm-test.stmp
|
||||||
|
endif
|
||||||
|
|
||||||
CFLAGS-test-float.c = -fno-inline -ffloat-store
|
CFLAGS-test-float.c = -fno-inline -ffloat-store
|
||||||
CFLAGS-test-double.c = -fno-inline -ffloat-store
|
CFLAGS-test-double.c = -fno-inline -ffloat-store
|
||||||
CFLAGS-test-ldouble.c = -fno-inline -ffloat-store
|
CFLAGS-test-ldouble.c = -fno-inline -ffloat-store
|
||||||
@ -100,7 +124,7 @@ LDLIBS-atest-exp = math/libm
|
|||||||
LDLIBS-atest-sincos = math/libm
|
LDLIBS-atest-sincos = math/libm
|
||||||
LDLIBS-atest-exp2 = math/libm
|
LDLIBS-atest-exp2 = math/libm
|
||||||
|
|
||||||
distribute += libm-test.c
|
distribute += libm-test.inc gen-libm-test.pl
|
||||||
|
|
||||||
|
|
||||||
# The -lieee module sets the _LIB_VERSION_ switch to IEEE mode
|
# The -lieee module sets the _LIB_VERSION_ switch to IEEE mode
|
||||||
|
606
math/gen-libm-test.pl
Executable file
606
math/gen-libm-test.pl
Executable file
@ -0,0 +1,606 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
# Copyright (C) 1999 Free Software Foundation, Inc.
|
||||||
|
# This file is part of the GNU C Library.
|
||||||
|
# Contributed by Andreas Jaeger <aj@suse.de>, 1999.
|
||||||
|
|
||||||
|
# The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Library General Public License as
|
||||||
|
# published by the Free Software Foundation; either version 2 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
|
||||||
|
# Library General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU Library General Public
|
||||||
|
# License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||||
|
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
# Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
# This file needs to be tidied up
|
||||||
|
# Note that functions and tests share the same namespace.
|
||||||
|
|
||||||
|
use Getopt::Std;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use vars qw ($input $output);
|
||||||
|
use vars qw (@tests @functions);
|
||||||
|
use vars qw ($count);
|
||||||
|
use vars qw (%ulps %failures);
|
||||||
|
use vars qw (%beautify);
|
||||||
|
use vars qw ($output_dir $ulps_file);
|
||||||
|
|
||||||
|
%beautify =
|
||||||
|
( "minus_zero" => "-0",
|
||||||
|
"plus_zero" => "+0",
|
||||||
|
"minus_infty" => "-inf",
|
||||||
|
"plus_infty" => "inf",
|
||||||
|
"nan_value" => "NaN",
|
||||||
|
"M_El" => "e",
|
||||||
|
"M_E2l" => "e^2",
|
||||||
|
"M_E3l" => "e^3",
|
||||||
|
"M_LOG10El", "log10(e)",
|
||||||
|
"M_PIl" => "pi",
|
||||||
|
"M_PI_34l" => "3/4 pi",
|
||||||
|
"M_PI_2l" => "pi/2",
|
||||||
|
"M_PI_4l" => "pi/4",
|
||||||
|
"M_PI_6l" => "pi/6",
|
||||||
|
"M_PI_34_LOG10El" => "3/4 pi*log10(e)",
|
||||||
|
"M_PI_LOG10El" => "pi*log10(e)",
|
||||||
|
"M_PI2_LOG10El" => "pi/2*log10(e)",
|
||||||
|
"M_PI4_LOG10El" => "pi/4*log10(e)",
|
||||||
|
"M_LOG_SQRT_PIl" => "log(sqrt(pi))",
|
||||||
|
"M_LOG_2_SQRT_PIl" => "log(2*sqrt(pi))",
|
||||||
|
"M_2_SQRT_PIl" => "2 sqrt (pi)",
|
||||||
|
"M_SQRT_PIl" => "sqrt (pi)",
|
||||||
|
"INVALID_EXCEPTION" => "invalid exception",
|
||||||
|
"DIVIDE_BY_ZERO_EXCEPTION" => "division by zero exception",
|
||||||
|
"INVALID_EXCEPTION_OK" => "invalid exception allowed",
|
||||||
|
"DIVIDE_BY_ZERO_EXCEPTION_OK" => "division by zero exception allowed",
|
||||||
|
"EXCEPTIONS_OK" => "exceptions allowed",
|
||||||
|
"IGNORE_ZERO_INF_SIGN" => "sign of zero/inf not specified",
|
||||||
|
"INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN" => "invalid exception and sign of zero/inf not specified"
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
# get Options
|
||||||
|
# Options:
|
||||||
|
# u: ulps-file
|
||||||
|
# h: help
|
||||||
|
# o: output-directory
|
||||||
|
# n: generate new ulps file
|
||||||
|
use vars qw($opt_u $opt_h $opt_o $opt_n);
|
||||||
|
getopts('u:o:nh');
|
||||||
|
|
||||||
|
$ulps_file = 'libm-test-ulps';
|
||||||
|
$output_dir = '';
|
||||||
|
|
||||||
|
if ($opt_h) {
|
||||||
|
print "Usage: generate.pl [OPTIONS]\n";
|
||||||
|
print " -h print this help, then exit\n";
|
||||||
|
print " -o DIR directory where generated files will be placed\n";
|
||||||
|
print " -n generate sorted file NewUlps from libm-test-ulps\n";
|
||||||
|
print " -u FILE input file with ulps\n";
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$ulps_file = $opt_u if ($opt_u);
|
||||||
|
$output_dir = $opt_o if ($opt_o);
|
||||||
|
|
||||||
|
$input = "libm-test.inc";
|
||||||
|
$output = "${output_dir}libm-test.c";
|
||||||
|
|
||||||
|
$count = 0;
|
||||||
|
|
||||||
|
&parse_ulps ($ulps_file);
|
||||||
|
&generate_testfile ($input, $output);
|
||||||
|
&output_ulps ("${output_dir}libm-test-ulps.h");
|
||||||
|
&print_ulps_file ("${output_dir}NewUlps") if ($opt_n);
|
||||||
|
|
||||||
|
# Return a nicer representation
|
||||||
|
sub beautify {
|
||||||
|
my ($arg) = @_;
|
||||||
|
my ($tmp);
|
||||||
|
|
||||||
|
if (exists $beautify{$arg}) {
|
||||||
|
return $beautify{$arg};
|
||||||
|
}
|
||||||
|
if ($arg =~ /^-/) {
|
||||||
|
$tmp = $arg;
|
||||||
|
$tmp =~ s/^-//;
|
||||||
|
if (exists $beautify{$tmp}) {
|
||||||
|
return '-' . $beautify{$tmp};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($arg =~ /[0-9]L$/) {
|
||||||
|
$arg =~ s/L$//;
|
||||||
|
}
|
||||||
|
return $arg;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Return a nicer representation of a complex number
|
||||||
|
sub build_complex_beautify {
|
||||||
|
my ($r, $i) = @_;
|
||||||
|
my ($str1, $str2);
|
||||||
|
|
||||||
|
$str1 = &beautify ($r);
|
||||||
|
$str2 = &beautify ($i);
|
||||||
|
if ($str2 =~ /^-/) {
|
||||||
|
$str2 =~ s/^-//;
|
||||||
|
$str1 .= ' - ' . $str2;
|
||||||
|
} else {
|
||||||
|
$str1 .= ' + ' . $str2;
|
||||||
|
}
|
||||||
|
$str1 .= ' i';
|
||||||
|
return $str1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Return name of a variable
|
||||||
|
sub get_variable {
|
||||||
|
my ($number) = @_;
|
||||||
|
|
||||||
|
return "x" if ($number == 1);
|
||||||
|
return "y" if ($number == 2);
|
||||||
|
return "z" if ($number == 3);
|
||||||
|
# return x1,x2,...
|
||||||
|
$number =-3;
|
||||||
|
return "x$number";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add a new test to internal data structures and fill in the
|
||||||
|
# ulps, failures and exception information for the C line.
|
||||||
|
sub new_test {
|
||||||
|
my ($test, $exception) = @_;
|
||||||
|
my $rest;
|
||||||
|
|
||||||
|
# Add ulp, xfail
|
||||||
|
if (exists $ulps{$test}) {
|
||||||
|
$rest = ", DELTA$count";
|
||||||
|
} else {
|
||||||
|
$rest = ', 0';
|
||||||
|
}
|
||||||
|
if (exists $failures{$test}) {
|
||||||
|
$rest .= ", FAIL$count";
|
||||||
|
} else {
|
||||||
|
$rest .= ', 0';
|
||||||
|
}
|
||||||
|
if (defined $exception) {
|
||||||
|
$rest .= ", $exception";
|
||||||
|
} else {
|
||||||
|
$rest .= ', 0';
|
||||||
|
}
|
||||||
|
$rest .= ");\n";
|
||||||
|
# We must increment here to keep @tests and count in sync
|
||||||
|
push @tests, $test;
|
||||||
|
++$count;
|
||||||
|
return $rest;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Treat some functions especially.
|
||||||
|
# Currently only sincos needs extra treatment.
|
||||||
|
sub special_functions {
|
||||||
|
my ($file, $args) = @_;
|
||||||
|
my (@args, $str, $test, $cline);
|
||||||
|
|
||||||
|
@args = split /,\s*/, $args;
|
||||||
|
|
||||||
|
unless ($args[0] =~ /sincos/) {
|
||||||
|
die ("Don't know how to handle $args[0] extra.");
|
||||||
|
}
|
||||||
|
print $file " FUNC (sincos) ($args[1], &sin_res, &cos_res);\n";
|
||||||
|
|
||||||
|
$str = 'sincos (' . &beautify ($args[1]) . ', &sin_res, &cos_res)';
|
||||||
|
# handle sin
|
||||||
|
$test = $str . ' puts ' . &beautify ($args[2]) . ' in sin_res';
|
||||||
|
if ($#args == 4) {
|
||||||
|
$test .= " plus " . &beautify ($args[4]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$cline = " check_float (\"$test\", sin_res, $args[2]";
|
||||||
|
$cline .= &new_test ($test, $args[4]);
|
||||||
|
print $file $cline;
|
||||||
|
|
||||||
|
# handle cos
|
||||||
|
$test = $str . ' puts ' . &beautify ($args[3]) . ' in cos_res';
|
||||||
|
$cline = " check_float (\"$test\", cos_res, $args[3]";
|
||||||
|
# only tests once for exception
|
||||||
|
$cline .= &new_test ($test, undef);
|
||||||
|
print $file $cline;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse the arguments to TEST_x_y
|
||||||
|
sub parse_args {
|
||||||
|
my ($file, $descr, $args) = @_;
|
||||||
|
my (@args, $str, $descr_args, $descr_res, @descr);
|
||||||
|
my ($current_arg, $cline, $i);
|
||||||
|
my ($pre, $post, @special);
|
||||||
|
my ($extra_var, $call, $c_call);
|
||||||
|
|
||||||
|
if ($descr eq 'extra') {
|
||||||
|
&special_functions ($file, $args);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
($descr_args, $descr_res) = split /_/,$descr, 2;
|
||||||
|
|
||||||
|
@args = split /,\s*/, $args;
|
||||||
|
|
||||||
|
$call = "$args[0] (";
|
||||||
|
|
||||||
|
# Generate first the string that's shown to the user
|
||||||
|
$current_arg = 1;
|
||||||
|
$extra_var = 0;
|
||||||
|
@descr = split //,$descr_args;
|
||||||
|
for ($i = 0; $i <= $#descr; $i++) {
|
||||||
|
if ($i >= 1) {
|
||||||
|
$call .= ', ';
|
||||||
|
}
|
||||||
|
# FLOAT, int, long int, long long int
|
||||||
|
if ($descr[$i] =~ /f|i|l|L/) {
|
||||||
|
$call .= &beautify ($args[$current_arg]);
|
||||||
|
++$current_arg;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
# &FLOAT, &int - argument is added here
|
||||||
|
if ($descr[$i] =~ /F|I/) {
|
||||||
|
++$extra_var;
|
||||||
|
$call .= '&' . &get_variable ($extra_var);
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
# complex
|
||||||
|
if ($descr[$i] eq 'c') {
|
||||||
|
$call .= &build_complex_beautify ($args[$current_arg], $args[$current_arg+1]);
|
||||||
|
$current_arg += 2;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
die ("$descr[$i] is unknown");
|
||||||
|
}
|
||||||
|
$call .= ')';
|
||||||
|
$str = "$call == ";
|
||||||
|
|
||||||
|
# Result
|
||||||
|
@descr = split //,$descr_res;
|
||||||
|
foreach (@descr) {
|
||||||
|
if ($_ =~ /f|i|l|L/) {
|
||||||
|
$str .= &beautify ($args[$current_arg]);
|
||||||
|
++$current_arg;
|
||||||
|
} elsif ($_ eq 'c') {
|
||||||
|
$str .= &build_complex_beautify ($args[$current_arg], $args[$current_arg+1]);
|
||||||
|
$current_arg += 2;
|
||||||
|
} elsif ($_ eq 'b') {
|
||||||
|
# boolean
|
||||||
|
$str .= ($args[$current_arg] == 0) ? "false" : "true";
|
||||||
|
++$current_arg;
|
||||||
|
} elsif ($_ eq '1') {
|
||||||
|
++$current_arg;
|
||||||
|
} else {
|
||||||
|
die ("$_ is unknown");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# consistency check
|
||||||
|
if ($current_arg == $#args) {
|
||||||
|
die ("wrong number of arguments")
|
||||||
|
unless ($args[$current_arg] =~ /EXCEPTION|IGNORE_ZERO_INF_SIGN/);
|
||||||
|
} elsif ($current_arg < $#args) {
|
||||||
|
die ("wrong number of arguments");
|
||||||
|
} elsif ($current_arg > ($#args+1)) {
|
||||||
|
die ("wrong number of arguments");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# check for exceptions
|
||||||
|
if ($current_arg <= $#args) {
|
||||||
|
$str .= " plus " . &beautify ($args[$current_arg]);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Put the C program line together
|
||||||
|
# Reset some variables to start again
|
||||||
|
$current_arg = 1;
|
||||||
|
$extra_var = 0;
|
||||||
|
if (substr($descr_res,0,1) eq 'f') {
|
||||||
|
$cline = 'check_float'
|
||||||
|
} elsif (substr($descr_res,0,1) eq 'b') {
|
||||||
|
$cline = 'check_bool';
|
||||||
|
} elsif (substr($descr_res,0,1) eq 'c') {
|
||||||
|
$cline = 'check_complex';
|
||||||
|
} elsif (substr($descr_res,0,1) eq 'i') {
|
||||||
|
$cline = 'check_int';
|
||||||
|
} elsif (substr($descr_res,0,1) eq 'l') {
|
||||||
|
$cline = 'check_long';
|
||||||
|
} elsif (substr($descr_res,0,1) eq 'L') {
|
||||||
|
$cline = 'check_longlong';
|
||||||
|
}
|
||||||
|
# Special handling for some macros:
|
||||||
|
$cline .= " (\"$str\", ";
|
||||||
|
if ($args[0] =~ /fpclassify|isnormal|isfinite|signbit/) {
|
||||||
|
$c_call = "$args[0] (";
|
||||||
|
} else {
|
||||||
|
$c_call = " FUNC($args[0]) (";
|
||||||
|
}
|
||||||
|
@descr = split //,$descr_args;
|
||||||
|
for ($i=0; $i <= $#descr; $i++) {
|
||||||
|
if ($i >= 1) {
|
||||||
|
$c_call .= ', ';
|
||||||
|
}
|
||||||
|
# FLOAT, int, long int, long long int
|
||||||
|
if ($descr[$i] =~ /f|i|l|L/) {
|
||||||
|
$c_call .= $args[$current_arg];
|
||||||
|
$current_arg++;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
# &FLOAT, &int
|
||||||
|
if ($descr[$i] =~ /F|I/) {
|
||||||
|
++$extra_var;
|
||||||
|
$c_call .= '&' . &get_variable ($extra_var);
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
# complex
|
||||||
|
if ($descr[$i] eq 'c') {
|
||||||
|
$c_call .= "BUILD_COMPLEX ($args[$current_arg], $args[$current_arg+1])";
|
||||||
|
$current_arg += 2;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$c_call .= ')';
|
||||||
|
$cline .= "$c_call, ";
|
||||||
|
|
||||||
|
@descr = split //,$descr_res;
|
||||||
|
foreach (@descr) {
|
||||||
|
if ($_ =~ /b|f|i|l|L/ ) {
|
||||||
|
$cline .= $args[$current_arg];
|
||||||
|
$current_arg++;
|
||||||
|
} elsif ($_ eq 'c') {
|
||||||
|
$cline .= "BUILD_COMPLEX ($args[$current_arg], $args[$current_arg+1])";
|
||||||
|
$current_arg += 2;
|
||||||
|
} elsif ($_ eq '1') {
|
||||||
|
push @special, $args[$current_arg];
|
||||||
|
++$current_arg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Add ulp, xfail
|
||||||
|
$cline .= &new_test ($str, ($current_arg <= $#args) ? $args[$current_arg] : undef);
|
||||||
|
|
||||||
|
# special treatment for some functions
|
||||||
|
if ($args[0] eq 'frexp') {
|
||||||
|
if (defined $special[0] && $special[0] ne "IGNORE") {
|
||||||
|
my ($str) = "$call sets x to $special[0]";
|
||||||
|
$post = " check_int (\"$str\", x, $special[0]";
|
||||||
|
$post .= &new_test ($str, undef);
|
||||||
|
}
|
||||||
|
} elsif ($args[0] eq 'gamma' || $args[0] eq 'lgamma') {
|
||||||
|
$pre = " signgam = 0;\n";
|
||||||
|
if (defined $special[0] && $special[0] ne "IGNORE") {
|
||||||
|
my ($str) = "$call sets signgam to $special[0]";
|
||||||
|
$post = " check_int (\"$str\", signgam, $special[0]";
|
||||||
|
$post .= &new_test ($str, undef);
|
||||||
|
}
|
||||||
|
} elsif ($args[0] eq 'modf') {
|
||||||
|
if (defined $special[0] && $special[0] ne "IGNORE") {
|
||||||
|
my ($str) = "$call sets x to $special[0]";
|
||||||
|
$post = " check_float (\"$str\", x, $special[0]";
|
||||||
|
$post .= &new_test ($str, undef);
|
||||||
|
}
|
||||||
|
} elsif ($args[0] eq 'remquo') {
|
||||||
|
if (defined $special[0] && $special[0] ne "IGNORE") {
|
||||||
|
my ($str) = "$call sets x to $special[0]";
|
||||||
|
$post = " check_int (\"$str\", x, $special[0]";
|
||||||
|
$post .= &new_test ($str, undef);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print $file $pre if (defined $pre);
|
||||||
|
|
||||||
|
print $file " $cline\n";
|
||||||
|
|
||||||
|
print $file $post if (defined $post);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate libm-test.c
|
||||||
|
sub generate_testfile {
|
||||||
|
my ($input, $output) = @_;
|
||||||
|
my ($lasttext);
|
||||||
|
my (@args, $i, $str);
|
||||||
|
|
||||||
|
open INPUT, $input or die ("Can't open $input: $!");
|
||||||
|
open OUTPUT, ">$output" or die ("Can't open $output: $!");
|
||||||
|
|
||||||
|
# Replace the special macros
|
||||||
|
while (<INPUT>) {
|
||||||
|
|
||||||
|
# TEST_...
|
||||||
|
if (/^\s*TEST_/) {
|
||||||
|
my ($descr, $args);
|
||||||
|
chop;
|
||||||
|
($descr, $args) = ($_ =~ /TEST_(\w+)\s*\((.*)\)/);
|
||||||
|
&parse_args (\*OUTPUT, $descr, $args);
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
# START (function)
|
||||||
|
if (/START/) {
|
||||||
|
print OUTPUT " init_max_error ();\n";
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
# END (function)
|
||||||
|
if (/END/) {
|
||||||
|
my ($fct, $line);
|
||||||
|
($fct) = ($_ =~ /END\s*\((.*)\)/);
|
||||||
|
$line = " print_max_error (\"$fct\", ";
|
||||||
|
if (exists $ulps{$fct}) {
|
||||||
|
$line .= "DELTA$fct";
|
||||||
|
} else {
|
||||||
|
$line .= '0';
|
||||||
|
}
|
||||||
|
if (exists $failures{$fct}) {
|
||||||
|
$line .= ", FAIL$fct";
|
||||||
|
} else {
|
||||||
|
$line .= ', 0';
|
||||||
|
}
|
||||||
|
$line .= ");\n";
|
||||||
|
print OUTPUT $line;
|
||||||
|
push @functions, $fct;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
print OUTPUT;
|
||||||
|
}
|
||||||
|
close INPUT;
|
||||||
|
close OUTPUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Parse ulps file
|
||||||
|
sub parse_ulps {
|
||||||
|
my ($file) = @_;
|
||||||
|
my ($test, $type, $eps);
|
||||||
|
|
||||||
|
open ULP, $file or die ("Can't open $file: $!");
|
||||||
|
while (<ULP>) {
|
||||||
|
chop;
|
||||||
|
# ignore comments and empty lines
|
||||||
|
next if /^#/;
|
||||||
|
next if /^\s*$/;
|
||||||
|
if (/^Test/) {
|
||||||
|
s/^.+\"(.*)\".*$/$1/;
|
||||||
|
$test = $_;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if (/^Function/) {
|
||||||
|
($test) = ($_ =~ /^Function\s*\"([a-zA-Z0-9_]+)\"/);
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if (/^i?(float|double|ldouble):/) {
|
||||||
|
($type, $eps) = split /\s*:\s*/,$_,2;
|
||||||
|
if ($eps eq "fail") {
|
||||||
|
$failures{$test}{$type} = 1;
|
||||||
|
} else {
|
||||||
|
$ulps{$test}{$type} = $eps;
|
||||||
|
}
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
print "Skipping unknown entry: `$_'\n";
|
||||||
|
}
|
||||||
|
close ULP;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Just for testing: Print all ulps
|
||||||
|
sub print_ulps {
|
||||||
|
my ($test, $type, $eps);
|
||||||
|
|
||||||
|
foreach $test (keys %ulps) {
|
||||||
|
print "$test:\n";
|
||||||
|
foreach $type (keys %{$ulps{$test}}) {
|
||||||
|
print "$test: $type $ulps{$test}{$type}\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clean up a floating point number
|
||||||
|
sub clean_up_number {
|
||||||
|
my ($number) = @_;
|
||||||
|
|
||||||
|
# Remove trailing zeros
|
||||||
|
$number =~ s/0+$//;
|
||||||
|
$number =~ s/\.$//;
|
||||||
|
return $number;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Output a file which can be read in as ulps file.
|
||||||
|
sub print_ulps_file {
|
||||||
|
my ($file) = @_;
|
||||||
|
my ($test, $type, $eps, $fct, $last_fct);
|
||||||
|
|
||||||
|
$last_fct = '';
|
||||||
|
open NEWULP, ">$file" or die ("Can't open $file: $!");
|
||||||
|
print NEWULP "# Begin of automatic generation\n";
|
||||||
|
foreach $test (sort @tests) {
|
||||||
|
if (defined $ulps{$test} || defined $failures{$test}) {
|
||||||
|
($fct) = ($test =~ /^(\w+)\s/);
|
||||||
|
if ($fct ne $last_fct) {
|
||||||
|
$last_fct = $fct;
|
||||||
|
print NEWULP "\n# $fct\n";
|
||||||
|
}
|
||||||
|
print NEWULP "Test \"$test\":\n";
|
||||||
|
foreach $type (sort keys %{$ulps{$test}}) {
|
||||||
|
print NEWULP "$type: ", &clean_up_number ($ulps{$test}{$type}), "\n";
|
||||||
|
}
|
||||||
|
foreach $type (sort keys %{$failures{$test}}) {
|
||||||
|
print NEWULP "$type: fail\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print NEWULP "\n# Maximal error of functions:\n";
|
||||||
|
|
||||||
|
foreach $fct (sort @functions) {
|
||||||
|
if (defined $ulps{$fct} || defined $failures{$fct}) {
|
||||||
|
print NEWULP "Function \"$fct\":\n";
|
||||||
|
foreach $type (sort keys %{$ulps{$fct}}) {
|
||||||
|
print NEWULP "$type: ", &clean_up_number ($ulps{$fct}{$type}), "\n";
|
||||||
|
}
|
||||||
|
foreach $type (sort keys %{$failures{$fct}}) {
|
||||||
|
print NEWULP "$type: fail\n";
|
||||||
|
}
|
||||||
|
print NEWULP "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print NEWULP "# end of automatic generation\n";
|
||||||
|
close NEWULP;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_ulps {
|
||||||
|
my ($test, $float) = @_;
|
||||||
|
return exists $ulps{$test}{$float} ? $ulps{$test}{$float} : "0";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_failure {
|
||||||
|
my ($test, $float) = @_;
|
||||||
|
return exists $failures{$test}{$float} ? $failures{$test}{$float} : "0";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Output the defines for a single test
|
||||||
|
sub output_test {
|
||||||
|
my ($file, $test, $name) = @_;
|
||||||
|
my ($ldouble, $double, $float, $ildouble, $idouble, $ifloat);
|
||||||
|
|
||||||
|
if (exists $ulps{$test}) {
|
||||||
|
$ldouble = &get_ulps ($test, "ldouble");
|
||||||
|
$double = &get_ulps ($test, "double");
|
||||||
|
$float = &get_ulps ($test, "float");
|
||||||
|
$ildouble = &get_ulps ($test, "ildouble");
|
||||||
|
$idouble = &get_ulps ($test, "idouble");
|
||||||
|
$ifloat = &get_ulps ($test, "ifloat");
|
||||||
|
print $file "#define DELTA$name CHOOSE($ldouble, $double, $float, $ildouble, $idouble, $ifloat)\t/* $test */\n";
|
||||||
|
}
|
||||||
|
if (exists $failures{$test}) {
|
||||||
|
$ldouble = &get_failure ($test, "ldouble");
|
||||||
|
$double = &get_failure ($test, "double");
|
||||||
|
$float = &get_failure ($test, "float");
|
||||||
|
$ildouble = &get_failure ($test, "ildouble");
|
||||||
|
$idouble = &get_failure ($test, "idouble");
|
||||||
|
$ifloat = &get_failure ($test, "ifloat");
|
||||||
|
print $file "#define FAIL$name CHOOSE($ldouble, $double, $float $ildouble, $idouble, $ifloat)\t/* $test */\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Print include file
|
||||||
|
sub output_ulps {
|
||||||
|
my ($file) = @_;
|
||||||
|
my ($i, $fct);
|
||||||
|
|
||||||
|
open ULP, ">$file" or die ("Can't open $file: $!");
|
||||||
|
|
||||||
|
print ULP "/* This file is automatically generated.\n";
|
||||||
|
print ULP " Don't change it - change instead the master files. */\n\n";
|
||||||
|
|
||||||
|
foreach $fct (@functions) {
|
||||||
|
output_test (\*ULP, $fct, $fct);
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($i = 0; $i < $count; $i++) {
|
||||||
|
output_test (\*ULP, $tests[$i], $i);
|
||||||
|
}
|
||||||
|
close ULP;
|
||||||
|
}
|
||||||
|
|
6327
math/libm-test.c
6327
math/libm-test.c
File diff suppressed because it is too large
Load Diff
3950
math/libm-test.inc
Normal file
3950
math/libm-test.inc
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Andreas Jaeger <aj@arthur.pfalz.de>, 1997.
|
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public License as
|
modify it under the terms of the GNU Library General Public License as
|
||||||
@ -18,12 +18,13 @@
|
|||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define FUNC(function) function
|
#define FUNC(function) function
|
||||||
#define MATHTYPE double
|
#define FLOAT double
|
||||||
#define TEST_MSG "testing double (without inline functions)\n"
|
#define TEST_MSG "testing double (without inline functions)\n"
|
||||||
#define MATHCONST(x) x
|
#define MATHCONST(x) x
|
||||||
#define CHOOSE(Clongdouble,Cdouble,Cfloat) Cdouble
|
#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cdouble
|
||||||
#define PRINTF_EXPR "e"
|
#define PRINTF_EXPR "e"
|
||||||
#define PRINTF_XEXPR "a"
|
#define PRINTF_XEXPR "a"
|
||||||
|
#define PRINTF_NEXPR "f"
|
||||||
#define TEST_DOUBLE 1
|
#define TEST_DOUBLE 1
|
||||||
|
|
||||||
#ifndef __NO_MATH_INLINES
|
#ifndef __NO_MATH_INLINES
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Andreas Jaeger <aj@arthur.pfalz.de>, 1997.
|
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public License as
|
modify it under the terms of the GNU Library General Public License as
|
||||||
@ -18,12 +18,13 @@
|
|||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define FUNC(function) function ## f
|
#define FUNC(function) function ## f
|
||||||
#define MATHTYPE float
|
#define FLOAT float
|
||||||
#define TEST_MSG "testing float (without inline functions)\n"
|
#define TEST_MSG "testing float (without inline functions)\n"
|
||||||
#define MATHCONST(x) x
|
#define MATHCONST(x) x
|
||||||
#define CHOOSE(Clongdouble,Cdouble,Cfloat) Cfloat
|
#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cfloat
|
||||||
#define PRINTF_EXPR "e"
|
#define PRINTF_EXPR "e"
|
||||||
#define PRINTF_XEXPR "a"
|
#define PRINTF_XEXPR "a"
|
||||||
|
#define PRINTF_NEXPR "f"
|
||||||
#define TEST_FLOAT 1
|
#define TEST_FLOAT 1
|
||||||
|
|
||||||
#ifndef __NO_MATH_INLINES
|
#ifndef __NO_MATH_INLINES
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Andreas Jaeger <aj@arthur.rhein-neckar.de>, 1997.
|
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public License as
|
modify it under the terms of the GNU Library General Public License as
|
||||||
@ -19,12 +19,13 @@
|
|||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define FUNC(function) function
|
#define FUNC(function) function
|
||||||
#define MATHTYPE double
|
#define FLOAT double
|
||||||
#define TEST_MSG "testing double (inline functions)\n"
|
#define TEST_MSG "testing double (inline functions)\n"
|
||||||
#define MATHCONST(x) x
|
#define MATHCONST(x) x
|
||||||
#define CHOOSE(Clongdouble,Cdouble,Cfloat) Cdouble
|
#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cinlinedouble
|
||||||
#define PRINTF_EXPR "e"
|
#define PRINTF_EXPR "e"
|
||||||
#define PRINTF_XEXPR "a"
|
#define PRINTF_XEXPR "a"
|
||||||
|
#define PRINTF_NEXPR "f"
|
||||||
#define TEST_DOUBLE 1
|
#define TEST_DOUBLE 1
|
||||||
#define TEST_INLINE
|
#define TEST_INLINE
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Andreas Jaeger <aj@arthur.rhein-neckar.de>, 1997.
|
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public License as
|
modify it under the terms of the GNU Library General Public License as
|
||||||
@ -18,12 +18,13 @@
|
|||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define FUNC(function) function ## f
|
#define FUNC(function) function ## f
|
||||||
#define MATHTYPE float
|
#define FLOAT float
|
||||||
#define TEST_MSG "testing float (inline functions)\n"
|
#define TEST_MSG "testing float (inline functions)\n"
|
||||||
#define MATHCONST(x) x
|
#define MATHCONST(x) x
|
||||||
#define CHOOSE(Clongdouble,Cdouble,Cfloat) Cfloat
|
#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cinlinefloat
|
||||||
#define PRINTF_EXPR "e"
|
#define PRINTF_EXPR "e"
|
||||||
#define PRINTF_XEXPR "a"
|
#define PRINTF_XEXPR "a"
|
||||||
|
#define PRINTF_NEXPR "f"
|
||||||
#define TEST_FLOAT 1
|
#define TEST_FLOAT 1
|
||||||
#define TEST_INLINE 1
|
#define TEST_INLINE 1
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Andreas Jaeger <aj@arthur.rhein-neckar.de>, 1997.
|
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public License as
|
modify it under the terms of the GNU Library General Public License as
|
||||||
@ -19,12 +19,13 @@
|
|||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define FUNC(function) function##l
|
#define FUNC(function) function##l
|
||||||
#define MATHTYPE long double
|
#define FLOAT long double
|
||||||
#define TEST_MSG "testing long double (inline functions)\n"
|
#define TEST_MSG "testing long double (inline functions)\n"
|
||||||
#define MATHCONST(x) x##L
|
#define MATHCONST(x) x##L
|
||||||
#define CHOOSE(Clongdouble,Cdouble,Cfloat) Clongdouble
|
#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cinlinelongdouble
|
||||||
#define PRINTF_EXPR "Le"
|
#define PRINTF_EXPR "Le"
|
||||||
#define PRINTF_XEXPR "La"
|
#define PRINTF_XEXPR "La"
|
||||||
|
#define PRINTF_NEXPR "Lf"
|
||||||
#define TEST_INLINE
|
#define TEST_INLINE
|
||||||
|
|
||||||
#ifdef __NO_MATH_INLINES
|
#ifdef __NO_MATH_INLINES
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Copyright (C) 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Andreas Jaeger <aj@arthur.pfalz.de>, 1997.
|
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public License as
|
modify it under the terms of the GNU Library General Public License as
|
||||||
@ -18,12 +18,13 @@
|
|||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#define FUNC(function) function##l
|
#define FUNC(function) function##l
|
||||||
#define MATHTYPE long double
|
#define FLOAT long double
|
||||||
#define TEST_MSG "testing long double (without inline functions)\n"
|
#define TEST_MSG "testing long double (without inline functions)\n"
|
||||||
#define MATHCONST(x) x##L
|
#define MATHCONST(x) x##L
|
||||||
#define CHOOSE(Clongdouble,Cdouble,Cfloat) Clongdouble
|
#define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Clongdouble
|
||||||
#define PRINTF_EXPR "Le"
|
#define PRINTF_EXPR "Le"
|
||||||
#define PRINTF_XEXPR "La"
|
#define PRINTF_XEXPR "La"
|
||||||
|
#define PRINTF_NEXPR "Lf"
|
||||||
|
|
||||||
#ifndef __NO_MATH_INLINES
|
#ifndef __NO_MATH_INLINES
|
||||||
# define __NO_MATH_INLINES
|
# define __NO_MATH_INLINES
|
||||||
|
5
sysdeps/generic/libm-test-ulps
Normal file
5
sysdeps/generic/libm-test-ulps
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# File with deltas for math/libm-test
|
||||||
|
# This file is the fallback and contains
|
||||||
|
# no data
|
||||||
|
# You can create a new file with e.g. `test-double -u'
|
||||||
|
# followed by `gen-libm-test.pl -u ULPs -n'.
|
920
sysdeps/i386/libm-test-ulps
Normal file
920
sysdeps/i386/libm-test-ulps
Normal file
@ -0,0 +1,920 @@
|
|||||||
|
# Begin of automatic generation
|
||||||
|
|
||||||
|
# acos
|
||||||
|
Test "acos (0.7) == 0.7953988301841435554":
|
||||||
|
ildouble: 1149
|
||||||
|
ldouble: 1149
|
||||||
|
|
||||||
|
# asin
|
||||||
|
Test "asin (0.7) == 0.7753974966107530637":
|
||||||
|
double: 1
|
||||||
|
ildouble: 1147
|
||||||
|
ldouble: 1147
|
||||||
|
|
||||||
|
# asinh
|
||||||
|
Test "asinh (-0) == -0":
|
||||||
|
idouble: 0
|
||||||
|
ifloat: 0
|
||||||
|
ildouble: 0
|
||||||
|
Test "asinh (0.7) == 0.652666566082355786":
|
||||||
|
ildouble: 656
|
||||||
|
ldouble: 656
|
||||||
|
|
||||||
|
# atan
|
||||||
|
Test "atan (0.7) == 0.6107259643892086165":
|
||||||
|
ildouble: 549
|
||||||
|
ldouble: 549
|
||||||
|
|
||||||
|
# atan2
|
||||||
|
Test "atan2 (0.4, 0.0003) == 1.5700463269355215718":
|
||||||
|
ildouble: 1
|
||||||
|
ldouble: 1
|
||||||
|
Test "atan2 (0.7, 1) == 0.6107259643892086165":
|
||||||
|
ildouble: 549
|
||||||
|
ldouble: 549
|
||||||
|
|
||||||
|
# atanh
|
||||||
|
Test "atanh (-0) == -0":
|
||||||
|
idouble: 0
|
||||||
|
ifloat: 0
|
||||||
|
ildouble: 0
|
||||||
|
Test "atanh (0.7) == 0.8673005276940531944":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 1605
|
||||||
|
ldouble: 1605
|
||||||
|
|
||||||
|
# cabs
|
||||||
|
Test "cabs (-0.7 + 12.4 i) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "cabs (-0.7 - 12.4 i) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "cabs (-12.4 + 0.7 i) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "cabs (-12.4 - 0.7 i) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 560
|
||||||
|
ldouble: 560
|
||||||
|
Test "cabs (0.7 + 12.4 i) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
# cbrt
|
||||||
|
Test "cbrt (-0.001) == -0.1":
|
||||||
|
ildouble: 716
|
||||||
|
ldouble: 716
|
||||||
|
Test "cbrt (-27.0) == -3.0":
|
||||||
|
ildouble: 1
|
||||||
|
ldouble: 1
|
||||||
|
Test "cbrt (0.7) == 0.8879040017426007084":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 346
|
||||||
|
ldouble: 346
|
||||||
|
Test "cbrt (0.970299) == 0.99":
|
||||||
|
ildouble: 306
|
||||||
|
ldouble: 306
|
||||||
|
|
||||||
|
# cos
|
||||||
|
Test "cos (0.7) == 0.7648421872844884262":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 529
|
||||||
|
ldouble: 529
|
||||||
|
Test "cos (M_PI_6l * 2.0) == 0.5":
|
||||||
|
double: 1
|
||||||
|
float: 0.5
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 0.5
|
||||||
|
Test "cos (M_PI_6l * 4.0) == -0.5":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 0.5
|
||||||
|
ldouble: 0.5
|
||||||
|
Test "cos (pi/2) == 0":
|
||||||
|
double: 0.2758
|
||||||
|
float: 0.3667
|
||||||
|
idouble: 0.2758
|
||||||
|
ifloat: 0.3667
|
||||||
|
ildouble: 0.25
|
||||||
|
ldouble: 0.25
|
||||||
|
|
||||||
|
# cosh
|
||||||
|
Test "cosh (0.7) == 1.255169005630943018":
|
||||||
|
ildouble: 309
|
||||||
|
ldouble: 309
|
||||||
|
|
||||||
|
# erfc
|
||||||
|
Test "erfc (0.7) == 0.32219880616258152702":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
Test "erfc (1.2) == 0.089686021770364619762":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "erfc (2.0) == 0.0046777349810472658379":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
Test "erfc (4.1) == 0.67000276540848983727e-8":
|
||||||
|
double: 24
|
||||||
|
float: 12
|
||||||
|
idouble: 24
|
||||||
|
ifloat: 12
|
||||||
|
|
||||||
|
# exp
|
||||||
|
Test "exp (0.7) == 2.0137527074704765216":
|
||||||
|
ildouble: 412
|
||||||
|
ldouble: 412
|
||||||
|
|
||||||
|
# exp10
|
||||||
|
Test "exp10 (-1) == 0.1":
|
||||||
|
ildouble: 818
|
||||||
|
ldouble: 818
|
||||||
|
Test "exp10 (0.7) == 5.0118723362727228500":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 1182
|
||||||
|
ldouble: 1182
|
||||||
|
Test "exp10 (3) == 1000":
|
||||||
|
ildouble: 8
|
||||||
|
ldouble: 8
|
||||||
|
|
||||||
|
# exp2
|
||||||
|
Test "exp2 (0.7) == 1.6245047927124710452":
|
||||||
|
ildouble: 462
|
||||||
|
ldouble: 462
|
||||||
|
|
||||||
|
# expm1
|
||||||
|
Test "expm1 (-0) == -0":
|
||||||
|
idouble: 0
|
||||||
|
ifloat: 0
|
||||||
|
ildouble: 0
|
||||||
|
Test "expm1 (0.7) == 1.0137527074704765216":
|
||||||
|
ildouble: 825
|
||||||
|
ldouble: 825
|
||||||
|
|
||||||
|
# fmod
|
||||||
|
Test "fmod (-6.5, -2.3) == -1.9":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 4096
|
||||||
|
ldouble: 4096
|
||||||
|
Test "fmod (-6.5, 2.3) == -1.9":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 4096
|
||||||
|
ldouble: 4096
|
||||||
|
Test "fmod (6.5, -2.3) == 1.9":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 4096
|
||||||
|
ldouble: 4096
|
||||||
|
Test "fmod (6.5, 2.3) == 1.9":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 4096
|
||||||
|
ldouble: 4096
|
||||||
|
|
||||||
|
# hypot
|
||||||
|
Test "hypot (-0.7, -12.4) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ildouble: 406
|
||||||
|
ldouble: 406
|
||||||
|
Test "hypot (-0.7, 12.4) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ildouble: 406
|
||||||
|
ldouble: 406
|
||||||
|
Test "hypot (-12.4, -0.7) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ildouble: 406
|
||||||
|
ldouble: 406
|
||||||
|
Test "hypot (-12.4, 0.7) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ildouble: 406
|
||||||
|
ldouble: 406
|
||||||
|
Test "hypot (0.7, -12.4) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ildouble: 406
|
||||||
|
ldouble: 406
|
||||||
|
Test "hypot (0.7, 1.2) == 1.3892443989449804508":
|
||||||
|
double: 1
|
||||||
|
ildouble: 560
|
||||||
|
ldouble: 560
|
||||||
|
Test "hypot (0.7, 12.4) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ildouble: 406
|
||||||
|
ldouble: 406
|
||||||
|
Test "hypot (12.4, -0.7) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ildouble: 406
|
||||||
|
ldouble: 406
|
||||||
|
Test "hypot (12.4, 0.7) == 12.41974234837422060118":
|
||||||
|
float: 1
|
||||||
|
ildouble: 406
|
||||||
|
ldouble: 406
|
||||||
|
|
||||||
|
# j0
|
||||||
|
Test "j0 (10.0) == -0.24593576445134833520":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "j0 (2.0) == 0.22389077914123566805":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "j0 (8.0) == 0.17165080713755390609":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
# j1
|
||||||
|
Test "j1 (10.0) == 0.043472746168861436670":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "j1 (2.0) == 0.57672480775687338720":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
Test "j1 (8.0) == 0.23463634685391462438":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
# jn
|
||||||
|
Test "jn (0, 10.0) == -0.24593576445134833520":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "jn (0, 2.0) == 0.22389077914123566805":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "jn (0, 8.0) == 0.17165080713755390609":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "jn (1, 10.0) == 0.043472746168861436670":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "jn (1, 2.0) == 0.57672480775687338720":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
Test "jn (1, 8.0) == 0.23463634685391462438":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "jn (10, 0.1) == 0.26905328954342155795e-19":
|
||||||
|
double: 4
|
||||||
|
float: 2
|
||||||
|
idouble: 4
|
||||||
|
ifloat: 2
|
||||||
|
Test "jn (10, 0.7) == 0.75175911502153953928e-11":
|
||||||
|
double: 3
|
||||||
|
float: 1
|
||||||
|
idouble: 3
|
||||||
|
ifloat: 1
|
||||||
|
Test "jn (10, 10.0) == 0.20748610663335885770":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "jn (3, 0.1) == 0.000020820315754756261429":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
Test "jn (3, 0.7) == 0.0069296548267508408077":
|
||||||
|
double: 2
|
||||||
|
idouble: 2
|
||||||
|
Test "jn (3, 10.0) == 0.058379379305186812343":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
# lgamma
|
||||||
|
Test "lgamma (0.7) == 0.26086724653166651439":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "lgamma (1.2) == -0.853740900033158497197e-1":
|
||||||
|
double: 1
|
||||||
|
float: 2
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 2
|
||||||
|
|
||||||
|
# log
|
||||||
|
Test "log (0.7) == -0.35667494393873237891":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 2341
|
||||||
|
ldouble: 2341
|
||||||
|
Test "log (e) == 1":
|
||||||
|
float: 0.5
|
||||||
|
ifloat: 0.5
|
||||||
|
|
||||||
|
# log10
|
||||||
|
Test "log10 (0.7) == -0.15490195998574316929":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 2033
|
||||||
|
ldouble: 2033
|
||||||
|
Test "log10 (e) == log10(e)":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1
|
||||||
|
ldouble: 1
|
||||||
|
|
||||||
|
# log1p
|
||||||
|
Test "log1p (-0.3) == -0.35667494393873237891":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 585
|
||||||
|
ldouble: 585
|
||||||
|
|
||||||
|
# log2
|
||||||
|
Test "log2 (0.7) == -0.51457317282975824043":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1688
|
||||||
|
ldouble: 1688
|
||||||
|
|
||||||
|
# pow
|
||||||
|
Test "pow (-0, 1) == -0":
|
||||||
|
idouble: 0
|
||||||
|
ifloat: 0
|
||||||
|
ildouble: 0
|
||||||
|
Test "pow (-0, 11) == -0":
|
||||||
|
idouble: 0
|
||||||
|
ifloat: 0
|
||||||
|
ildouble: 0
|
||||||
|
Test "pow (-0, 27) == -0":
|
||||||
|
idouble: 0
|
||||||
|
ifloat: 0
|
||||||
|
ildouble: 0
|
||||||
|
Test "pow (0.7, 1.2) == 0.65180494056638638188":
|
||||||
|
ildouble: 725
|
||||||
|
ldouble: 725
|
||||||
|
|
||||||
|
# sin
|
||||||
|
Test "sin (0.7) == 0.64421768723769105367":
|
||||||
|
ildouble: 627
|
||||||
|
ldouble: 627
|
||||||
|
|
||||||
|
# sincos
|
||||||
|
Test "sincos (0.7, &sin_res, &cos_res) puts 0.64421768723769105367 in sin_res":
|
||||||
|
ildouble: 627
|
||||||
|
ldouble: 627
|
||||||
|
Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842626 in cos_res":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 528
|
||||||
|
ldouble: 528
|
||||||
|
Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
|
||||||
|
double: 1
|
||||||
|
float: 0.5
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 0.5
|
||||||
|
Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.866025403784438646764 in sin_res":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1
|
||||||
|
ldouble: 1
|
||||||
|
Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
|
||||||
|
double: 0.2758
|
||||||
|
float: 0.3667
|
||||||
|
idouble: 0.2758
|
||||||
|
ifloat: 0.3667
|
||||||
|
ildouble: 0.25
|
||||||
|
ldouble: 0.25
|
||||||
|
|
||||||
|
# sinh
|
||||||
|
Test "sinh (-0) == -0":
|
||||||
|
idouble: 0
|
||||||
|
ifloat: 0
|
||||||
|
ildouble: 0
|
||||||
|
Test "sinh (0.7) == 0.75858370183953350346":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1028
|
||||||
|
ldouble: 1029
|
||||||
|
|
||||||
|
# sqrt
|
||||||
|
Test "sqrt (0.7) == 0.83666002653407554798":
|
||||||
|
ildouble: 489
|
||||||
|
ldouble: 489
|
||||||
|
Test "sqrt (15239.9025) == 123.45":
|
||||||
|
ildouble: 325
|
||||||
|
ldouble: 325
|
||||||
|
|
||||||
|
# tan
|
||||||
|
Test "tan (0.7) == 0.84228838046307944813":
|
||||||
|
ildouble: 1401
|
||||||
|
ldouble: 1401
|
||||||
|
Test "tan (pi/4) == 1":
|
||||||
|
double: 0.5
|
||||||
|
idouble: 0.5
|
||||||
|
|
||||||
|
# tanh
|
||||||
|
Test "tanh (-0) == -0":
|
||||||
|
idouble: 0
|
||||||
|
ifloat: 0
|
||||||
|
ildouble: 0
|
||||||
|
Test "tanh (0.7) == 0.60436777711716349631":
|
||||||
|
ildouble: 521
|
||||||
|
ldouble: 521
|
||||||
|
|
||||||
|
# tgamma
|
||||||
|
Test "tgamma (-0.5) == -2 sqrt (pi)":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "tgamma (0.5) == sqrt (pi)":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "tgamma (0.7) == 1.29805533264755778568":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
# y0
|
||||||
|
Test "y0 (0.1) == -1.5342386513503668441":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "y0 (0.7) == -0.19066492933739506743":
|
||||||
|
double: 2
|
||||||
|
idouble: 2
|
||||||
|
Test "y0 (1.0) == 0.088256964215676957983":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "y0 (1.5) == 0.38244892379775884396":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "y0 (10.0) == 0.055671167283599391424":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "y0 (8.0) == 0.22352148938756622053":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
# y1
|
||||||
|
Test "y1 (0.1) == -6.4589510947020269877":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "y1 (0.7) == -1.1032498719076333697":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
Test "y1 (1.0) == -0.78121282130028871655":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
Test "y1 (1.5) == -0.41230862697391129595":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "y1 (10.0) == 0.24901542420695388392":
|
||||||
|
double: 2
|
||||||
|
float: 2
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 2
|
||||||
|
Test "y1 (2.0) == -0.10703243154093754689":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "y1 (8.0) == -0.15806046173124749426":
|
||||||
|
float: 2
|
||||||
|
ifloat: 2
|
||||||
|
|
||||||
|
# yn
|
||||||
|
Test "yn (0, 0.1) == -1.5342386513503668441":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (0, 0.7) == -0.19066492933739506743":
|
||||||
|
double: 2
|
||||||
|
idouble: 2
|
||||||
|
Test "yn (0, 1.0) == 0.088256964215676957983":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (0, 1.5) == 0.38244892379775884396":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (0, 10.0) == 0.055671167283599391424":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (0, 8.0) == 0.22352148938756622053":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (1, 0.1) == -6.4589510947020269877":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (1, 0.7) == -1.1032498719076333697":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
Test "yn (1, 1.0) == -0.78121282130028871655":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
Test "yn (1, 1.5) == -0.41230862697391129595":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (1, 10.0) == 0.24901542420695388392":
|
||||||
|
double: 2
|
||||||
|
float: 2
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 2
|
||||||
|
Test "yn (1, 2.0) == -0.10703243154093754689":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (1, 8.0) == -0.15806046173124749426":
|
||||||
|
float: 2
|
||||||
|
ifloat: 2
|
||||||
|
Test "yn (10, 0.1) == -0.11831335132045197885e19":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (10, 0.7) == -0.42447194260703866924e10":
|
||||||
|
double: 6
|
||||||
|
float: 3
|
||||||
|
idouble: 6
|
||||||
|
ifloat: 3
|
||||||
|
Test "yn (10, 1.0) == -0.12161801427868918929e9":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (10, 10.0) == -0.35981415218340272205":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (10, 2.0) == -129184.54220803928264":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (3, 0.1) == -5099.3323786129048894":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
Test "yn (3, 0.7) == -15.819479052819633505":
|
||||||
|
double: 2
|
||||||
|
idouble: 2
|
||||||
|
Test "yn (3, 10.0) == -0.25136265718383732978":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
# Maximal error of functions:
|
||||||
|
Function "acos":
|
||||||
|
ildouble: 1149
|
||||||
|
ldouble: 1149
|
||||||
|
|
||||||
|
Function "asin":
|
||||||
|
double: 1
|
||||||
|
ildouble: 1147
|
||||||
|
ldouble: 1147
|
||||||
|
|
||||||
|
Function "asinh":
|
||||||
|
ildouble: 656
|
||||||
|
ldouble: 656
|
||||||
|
|
||||||
|
Function "atan":
|
||||||
|
ildouble: 549
|
||||||
|
ldouble: 549
|
||||||
|
|
||||||
|
Function "atan2":
|
||||||
|
ildouble: 549
|
||||||
|
ldouble: 549
|
||||||
|
|
||||||
|
Function "atanh":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 1605
|
||||||
|
ldouble: 1605
|
||||||
|
|
||||||
|
Function "cabs":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 560
|
||||||
|
ldouble: 560
|
||||||
|
|
||||||
|
Function "cacos":
|
||||||
|
double: 1
|
||||||
|
float: 2
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 2
|
||||||
|
ildouble: 329
|
||||||
|
ldouble: 329
|
||||||
|
|
||||||
|
Function "cacosh":
|
||||||
|
double: 1
|
||||||
|
float: 4
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 4
|
||||||
|
ildouble: 328
|
||||||
|
ldouble: 328
|
||||||
|
|
||||||
|
Function "casin":
|
||||||
|
double: 3
|
||||||
|
float: 2
|
||||||
|
idouble: 3
|
||||||
|
ifloat: 2
|
||||||
|
ildouble: 603
|
||||||
|
ldouble: 603
|
||||||
|
|
||||||
|
Function "casinh":
|
||||||
|
double: 5
|
||||||
|
float: 6
|
||||||
|
idouble: 5
|
||||||
|
ifloat: 6
|
||||||
|
ildouble: 892
|
||||||
|
ldouble: 892
|
||||||
|
|
||||||
|
Function "catan":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 474
|
||||||
|
ldouble: 474
|
||||||
|
|
||||||
|
Function "catanh":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 447
|
||||||
|
ldouble: 447
|
||||||
|
|
||||||
|
Function "cbrt":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 716
|
||||||
|
ldouble: 716
|
||||||
|
|
||||||
|
Function "ccos":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1901
|
||||||
|
ldouble: 1901
|
||||||
|
|
||||||
|
Function "ccosh":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1467
|
||||||
|
ldouble: 1467
|
||||||
|
|
||||||
|
Function "cexp":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1067
|
||||||
|
ldouble: 1067
|
||||||
|
|
||||||
|
Function "clog":
|
||||||
|
ildouble: 1
|
||||||
|
ldouble: 1
|
||||||
|
|
||||||
|
Function "clog10":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1402
|
||||||
|
ldouble: 1402
|
||||||
|
|
||||||
|
Function "cos":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 529
|
||||||
|
ldouble: 529
|
||||||
|
|
||||||
|
Function "cosh":
|
||||||
|
ildouble: 309
|
||||||
|
ldouble: 309
|
||||||
|
|
||||||
|
Function "cpow":
|
||||||
|
double: 1.103
|
||||||
|
float: 4
|
||||||
|
idouble: 1.103
|
||||||
|
ifloat: 4
|
||||||
|
ildouble: 2
|
||||||
|
ldouble: 2
|
||||||
|
|
||||||
|
Function "csin":
|
||||||
|
ildouble: 966
|
||||||
|
ldouble: 966
|
||||||
|
|
||||||
|
Function "csinh":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 477
|
||||||
|
ldouble: 477
|
||||||
|
|
||||||
|
Function "csqrt":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 237
|
||||||
|
ldouble: 237
|
||||||
|
|
||||||
|
Function "ctan":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 690
|
||||||
|
ldouble: 690
|
||||||
|
|
||||||
|
Function "ctanh":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 3074
|
||||||
|
ldouble: 3074
|
||||||
|
|
||||||
|
Function "erfc":
|
||||||
|
double: 24
|
||||||
|
float: 12
|
||||||
|
idouble: 24
|
||||||
|
ifloat: 12
|
||||||
|
|
||||||
|
Function "exp":
|
||||||
|
ildouble: 412
|
||||||
|
ldouble: 412
|
||||||
|
|
||||||
|
Function "exp10":
|
||||||
|
double: 1
|
||||||
|
idouble: 1
|
||||||
|
ildouble: 1182
|
||||||
|
ldouble: 1182
|
||||||
|
|
||||||
|
Function "exp2":
|
||||||
|
ildouble: 462
|
||||||
|
ldouble: 462
|
||||||
|
|
||||||
|
Function "expm1":
|
||||||
|
ildouble: 825
|
||||||
|
ldouble: 825
|
||||||
|
|
||||||
|
Function "fmod":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 4096
|
||||||
|
ldouble: 4096
|
||||||
|
|
||||||
|
Function "hypot":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
ildouble: 560
|
||||||
|
ldouble: 560
|
||||||
|
|
||||||
|
Function "j0":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
Function "j1":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
Function "jn":
|
||||||
|
double: 4
|
||||||
|
float: 2
|
||||||
|
idouble: 4
|
||||||
|
ifloat: 2
|
||||||
|
|
||||||
|
Function "lgamma":
|
||||||
|
double: 1
|
||||||
|
float: 2
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 2
|
||||||
|
|
||||||
|
Function "log":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 2341
|
||||||
|
ldouble: 2341
|
||||||
|
|
||||||
|
Function "log10":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 2033
|
||||||
|
ldouble: 2033
|
||||||
|
|
||||||
|
Function "log1p":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 585
|
||||||
|
ldouble: 585
|
||||||
|
|
||||||
|
Function "log2":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1688
|
||||||
|
ldouble: 1688
|
||||||
|
|
||||||
|
Function "pow":
|
||||||
|
ildouble: 725
|
||||||
|
ldouble: 725
|
||||||
|
|
||||||
|
Function "sin":
|
||||||
|
ildouble: 627
|
||||||
|
ldouble: 627
|
||||||
|
|
||||||
|
Function "sincos":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 627
|
||||||
|
ldouble: 627
|
||||||
|
|
||||||
|
Function "sinh":
|
||||||
|
float: 1
|
||||||
|
ifloat: 1
|
||||||
|
ildouble: 1028
|
||||||
|
ldouble: 1029
|
||||||
|
|
||||||
|
Function "sqrt":
|
||||||
|
ildouble: 489
|
||||||
|
ldouble: 489
|
||||||
|
|
||||||
|
Function "tan":
|
||||||
|
double: 0.5
|
||||||
|
idouble: 0.5
|
||||||
|
ildouble: 1401
|
||||||
|
ldouble: 1401
|
||||||
|
|
||||||
|
Function "tanh":
|
||||||
|
ildouble: 521
|
||||||
|
ldouble: 521
|
||||||
|
|
||||||
|
Function "tgamma":
|
||||||
|
double: 1
|
||||||
|
float: 1
|
||||||
|
idouble: 1
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
Function "y0":
|
||||||
|
double: 2
|
||||||
|
float: 1
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 1
|
||||||
|
|
||||||
|
Function "y1":
|
||||||
|
double: 2
|
||||||
|
float: 2
|
||||||
|
idouble: 2
|
||||||
|
ifloat: 2
|
||||||
|
|
||||||
|
Function "yn":
|
||||||
|
double: 6
|
||||||
|
float: 3
|
||||||
|
idouble: 6
|
||||||
|
ifloat: 3
|
||||||
|
|
||||||
|
# end of automatic generation
|
Reference in New Issue
Block a user