|
Packit |
67cb25 |
/* specfunc/test_sincos_pi.c
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Copyright (C) 2017 Konrad Griessinger
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
67cb25 |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
67cb25 |
* the Free Software Foundation; either version 3 of the License, or (at
|
|
Packit |
67cb25 |
* your option) any later version.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is distributed in the hope that it will be useful, but
|
|
Packit |
67cb25 |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
67cb25 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
67cb25 |
* General Public License for more details.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
67cb25 |
* along with this program; if not, write to the Free Software
|
|
Packit |
67cb25 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Author: Konrad Griessinger */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#include <config.h>
|
|
Packit |
67cb25 |
#include <stdio.h>
|
|
Packit |
67cb25 |
#include <stdlib.h>
|
|
Packit |
67cb25 |
#include <string.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_math.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_errno.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_ieee_utils.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_test.h>
|
|
Packit |
67cb25 |
#include <gsl/gsl_sf.h>
|
|
Packit |
67cb25 |
#include "test_sf.h"
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Any double precision number bigger than this is automatically an even integer. */
|
|
Packit |
67cb25 |
#define BIGDBL (2.0 / GSL_DBL_EPSILON)
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int
|
|
Packit |
67cb25 |
test_sincos_pi(void)
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
gsl_sf_result r;
|
|
Packit |
67cb25 |
int s = 0;
|
|
Packit |
67cb25 |
int k = 0, kmax = 12;
|
|
Packit |
67cb25 |
double x = 0.0, ix = 0.0, fx = 0.0, exact = 0.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* sin_pi tests */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.5;
|
|
Packit |
67cb25 |
exact = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
fx = -0.5;
|
|
Packit |
67cb25 |
exact = -1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 1.5;
|
|
Packit |
67cb25 |
exact = -1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
fx = -1.5;
|
|
Packit |
67cb25 |
exact = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 2.5;
|
|
Packit |
67cb25 |
exact = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
fx = -2.5;
|
|
Packit |
67cb25 |
exact = -1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 3.5;
|
|
Packit |
67cb25 |
exact = -1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
fx = -3.5;
|
|
Packit |
67cb25 |
exact = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.375;
|
|
Packit |
67cb25 |
exact = 0.923879532511286756128183189397;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = -0.375;
|
|
Packit |
67cb25 |
exact = -0.923879532511286756128183189397;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.0;
|
|
Packit |
67cb25 |
exact = 0.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.5;
|
|
Packit |
67cb25 |
exact = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.03125;
|
|
Packit |
67cb25 |
exact = 0.0980171403295606019941955638886;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.0625;
|
|
Packit |
67cb25 |
exact = 0.195090322016128267848284868477;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.75;
|
|
Packit |
67cb25 |
exact = 0.707106781186547524400844362105;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.0078125;
|
|
Packit |
67cb25 |
exact = 0.0245412285229122880317345294593;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* sin_pi tests for very large arguments */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.0625;
|
|
Packit |
67cb25 |
exact = 0.195090322016128267848284868477;
|
|
Packit |
67cb25 |
ix = LONG_MAX + 1.0;
|
|
Packit |
67cb25 |
ix += fabs(fmod(ix,2.0)); /* make sure of even number */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
x = ix + fx;
|
|
Packit |
67cb25 |
x -= ix; /* careful with compiler optimization */
|
|
Packit |
67cb25 |
if ( ( x != fx ) || ( fabs(ix+fx) >= BIGDBL ) ) break;
|
|
Packit |
67cb25 |
printf("ix+fx= %.18e\n", ix+fx);
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix += 101.0;
|
|
Packit |
67cb25 |
exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = -0.0625;
|
|
Packit |
67cb25 |
exact = -0.195090322016128267848284868477;
|
|
Packit |
67cb25 |
ix = LONG_MIN - 1.0;
|
|
Packit |
67cb25 |
ix -= fabs(fmod(ix,2.0)); /* make sure of even number */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
x = ix + fx;
|
|
Packit |
67cb25 |
x -= ix; /* careful with compiler optimization */
|
|
Packit |
67cb25 |
if ( ( x != fx ) || ( fabs(ix+fx) >= BIGDBL ) ) break;
|
|
Packit |
67cb25 |
printf("ix+fx= %.18e\n", ix+fx);
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_sin_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix -= 101.0;
|
|
Packit |
67cb25 |
exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* cos_pi tests */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
fx = 0.0;
|
|
Packit |
67cb25 |
exact = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 1.0;
|
|
Packit |
67cb25 |
exact = -1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = -1.0;
|
|
Packit |
67cb25 |
exact = -1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 2.0;
|
|
Packit |
67cb25 |
exact = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = -2.0;
|
|
Packit |
67cb25 |
exact = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 3.0;
|
|
Packit |
67cb25 |
exact = -1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = -3.0;
|
|
Packit |
67cb25 |
exact = -1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.375;
|
|
Packit |
67cb25 |
exact = 0.382683432365089771728459984030;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = -0.375;
|
|
Packit |
67cb25 |
exact = 0.382683432365089771728459984030;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.0;
|
|
Packit |
67cb25 |
exact = 1.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.5;
|
|
Packit |
67cb25 |
exact = 0.0;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.0625;
|
|
Packit |
67cb25 |
exact = 0.980785280403230449126182236134;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.4375;
|
|
Packit |
67cb25 |
exact = 0.195090322016128267848284868477;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.4921875;
|
|
Packit |
67cb25 |
exact = 0.0245412285229122880317345294593;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(3.0,k+1);
|
|
Packit |
67cb25 |
if (k==0) exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
exact = fabs(exact);
|
|
Packit |
67cb25 |
ix = 0.0;
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix = pow(10.0,k+1);
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* cos_pi tests for very large arguments */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = 0.0625;
|
|
Packit |
67cb25 |
exact = 0.980785280403230449126182236134;
|
|
Packit |
67cb25 |
ix = LONG_MAX + 1.0;
|
|
Packit |
67cb25 |
ix += fabs(fmod(ix,2.0)); /* make sure of even number */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
x = ix + fx;
|
|
Packit |
67cb25 |
x -= ix; /* careful with compiler optimization */
|
|
Packit |
67cb25 |
if ( ( x != fx ) || ( fabs(ix+fx) >= BIGDBL ) ) break;
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix += 101.0;
|
|
Packit |
67cb25 |
exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
fx = -0.0625;
|
|
Packit |
67cb25 |
exact = 0.980785280403230449126182236134;
|
|
Packit |
67cb25 |
ix = LONG_MIN - 1.0;
|
|
Packit |
67cb25 |
ix -= fabs(fmod(ix,2.0)); /* make sure of even number */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
for (k=0; k
|
|
Packit |
67cb25 |
x = ix + fx;
|
|
Packit |
67cb25 |
x -= ix; /* careful with compiler optimization */
|
|
Packit |
67cb25 |
if ( ( x != fx ) || ( fabs(ix+fx) >= BIGDBL ) ) break;
|
|
Packit |
67cb25 |
TEST_SF(s, gsl_sf_cos_pi_e, (ix+fx, &r), exact, TEST_TOL0, GSL_SUCCESS);
|
|
Packit |
67cb25 |
ix -= 101.0;
|
|
Packit |
67cb25 |
exact = -exact;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
return s;
|
|
Packit |
67cb25 |
}
|
|
Packit |
67cb25 |
|