⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 该文件为c++的数学函数库!是一个非常有用的编程工具.它含有各种数学函数,为科学计算、工程应用等程序编写提供方便!
💻 C
📖 第 1 页 / 共 4 页
字号:
/* cdf/test.c *  * Copyright (C) 2002 Jason H Stover. *  * This program 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 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 * General Public License for more details. *  * You should have received a copy of the GNU 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. */#include <config.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <gsl/gsl_math.h>#include <gsl/gsl_cdf.h>#include <gsl/gsl_test.h>#include <gsl/gsl_ieee_utils.h>#define TEST(func, args, value, tol) { double res = func args ; gsl_test_rel (res, value, tol, #func #args); } ;#define TEST_TOL0  (2.0*GSL_DBL_EPSILON)#define TEST_TOL1  (16.0*GSL_DBL_EPSILON)#define TEST_TOL2  (256.0*GSL_DBL_EPSILON)#define TEST_TOL3  (2048.0*GSL_DBL_EPSILON)#define TEST_TOL4  (16384.0*GSL_DBL_EPSILON)#define TEST_TOL5  (131072.0*GSL_DBL_EPSILON)#define TEST_TOL6  (1048576.0*GSL_DBL_EPSILON)void test_ugaussian (void);void test_ugaussianinv (void);void test_exponential (void);void test_exponentialinv (void);void test_tdist (void);void test_fdist (void);void test_gamma (void);void test_chisq (void);void test_beta (void);void test_gammainv (void);void test_chisqinv (void);void test_tdistinv (void);#include "test_auto.c"intmain (void){  gsl_ieee_env_setup ();    /* Tests for gaussian cumulative distribution function      Function values computed with PARI, 28 digits precision */    test_ugaussian ();  test_exponential ();  test_tdist ();   test_fdist ();   test_gamma ();  test_chisq ();   test_beta ();   test_ugaussianinv ();  test_exponentialinv ();  test_gammainv ();   test_chisqinv ();   test_tdistinv ();   test_auto_beta ();  test_auto_fdist ();  test_auto_cauchy ();  test_auto_gaussian ();  test_auto_laplace ();  test_auto_rayleigh ();  test_auto_flat ();  test_auto_lognormal ();  test_auto_gamma ();  test_auto_chisq ();  test_auto_tdist ();  test_auto_gumbel1 ();  test_auto_gumbel2 ();  test_auto_weibull ();  test_auto_pareto ();  test_auto_logistic ();  test_auto_gammalarge ();    exit (gsl_test_summary ());}void test_ugaussian (void){  TEST (gsl_cdf_ugaussian_P, (0.0), 0.5, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (1e-32), 0.5, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (1e-16), 0.5000000000000000398942280401, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (1e-8), 0.5000000039894228040143267129, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (0.5), 0.6914624612740131036377046105, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (0.7), 0.7580363477769269852506495717, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (5.0), 0.9999997133484281208060883262, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (10.0), 0.9999999999999999999999923801, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (30.0), 1.000000000000000000000000000, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (40.0), 1.000000000000000000000000000, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (1e10), 1.000000000000000000000000000, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (-1e-32), 0.5, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (-1e-16), 0.4999999999999999601057719598, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (-1e-8), 0.4999999960105771959856732870, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (-0.5), 0.3085375387259868963622953894, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (-0.7), 0.2419636522230730147493504282, TEST_TOL0);  TEST (gsl_cdf_ugaussian_P, (-5.0), 0.0000002866515718791939116737523329, TEST_TOL1);  TEST (gsl_cdf_ugaussian_P, (-10.0), 7.619853024160526065973343257e-24, TEST_TOL3);  TEST (gsl_cdf_ugaussian_P, (-30.0), 4.906713927148187059533809288e-198, TEST_TOL3);  TEST (gsl_cdf_ugaussian_P, (-40.0), 3.655893540915029703748985850e-350, TEST_TOL3);  TEST (gsl_cdf_ugaussian_P, (-1e10), 0.0, 0.0);  TEST (gsl_cdf_ugaussian_Q, (0.0), 0.5, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (1e-32), 0.5, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (1e-16), 0.4999999999999999601057719598, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (1e-8), 0.4999999960105771959856732870, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (0.5), 0.3085375387259868963622953894, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (0.7), 0.2419636522230730147493504282, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (5.0), 0.0000002866515718791939116737523329, TEST_TOL3);  TEST (gsl_cdf_ugaussian_Q, (10.0), 7.619853024160526065973343257e-24, TEST_TOL3);  TEST (gsl_cdf_ugaussian_Q, (30.0), 4.906713927148187059533809288e-198, TEST_TOL3);  TEST (gsl_cdf_ugaussian_Q, (40.0), 3.655893540915029703748985850e-350, TEST_TOL3);  TEST (gsl_cdf_ugaussian_Q, (1e10), 0.0, 0.0);  TEST (gsl_cdf_ugaussian_Q, (-1e-32), 0.5, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (-1e-16), 0.5000000000000000398942280401, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (-1e-8), 0.5000000039894228040143267129, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (-0.5), 0.6914624612740131036377046105, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (-0.7), 0.7580363477769269852506495717, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (-5.0), 0.9999997133484281208060883262, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (-10.0), 0.9999999999999999999999923801, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (-30.0), 1.000000000000000000000000000, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (-40.0), 1.000000000000000000000000000, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Q, (-1e10), 1.000000000000000000000000000, TEST_TOL0);}  /* Test values from Abramowitz & Stegun, Handbook of Mathematical     Functions, Table 26.1.  Error term is given by dx = dP / Z(x) */void test_ugaussianinv (void) {  TEST (gsl_cdf_ugaussian_Pinv, (0.9999997133), 5.0, 1e-4);  TEST (gsl_cdf_ugaussian_Pinv, (0.9999683288), 4.0, 1e-6);  TEST (gsl_cdf_ugaussian_Pinv, (0.9986501020), 3.0, 1e-8);  TEST (gsl_cdf_ugaussian_Pinv, (0.977249868051821), 2.0, 1e-14);  TEST (gsl_cdf_ugaussian_Pinv, (0.841344746068543), 1.0, TEST_TOL3);  TEST (gsl_cdf_ugaussian_Pinv, (0.691462461274013), 0.5, TEST_TOL2);  TEST (gsl_cdf_ugaussian_Pinv, (0.655421741610324), 0.4, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Pinv, (0.617911422188953), 0.3, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Pinv, (0.579259709439103), 0.2, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Pinv, (0.539827837277029), 0.1, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Pinv, (0.5), 0.0, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Pinv, (4.60172162722971e-1), -0.1, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Pinv, (4.20740290560897e-1), -0.2, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Pinv, (3.82088577811047e-1), -0.3, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Pinv, (3.44578258389676e-1), -0.4, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Pinv, (3.08537538725987e-1), -0.5, TEST_TOL2);  TEST (gsl_cdf_ugaussian_Pinv, (1.58655253931457e-1), -1.0, TEST_TOL3);  TEST (gsl_cdf_ugaussian_Pinv, (2.2750131948179e-2), -2.0, 1e-14);  TEST (gsl_cdf_ugaussian_Pinv, (1.349898e-3), -3.0, 1e-8);  TEST (gsl_cdf_ugaussian_Pinv, (3.16712e-5), -4.0, 1e-6);  TEST (gsl_cdf_ugaussian_Pinv, (2.86648e-7), -5.0, 1e-4);  TEST (gsl_cdf_ugaussian_Pinv, (7.61985302416052e-24), -10.0, 1e-4);  TEST (gsl_cdf_ugaussian_Qinv, (7.61985302416052e-24), 10.0, 1e-4);  TEST (gsl_cdf_ugaussian_Qinv, (2.86648e-7), 5.0, 1e-4);  TEST (gsl_cdf_ugaussian_Qinv, (3.16712e-5), 4.0, 1e-6);  TEST (gsl_cdf_ugaussian_Qinv, (1.349898e-3), 3.0, 1e-8);  TEST (gsl_cdf_ugaussian_Qinv, (2.2750131948179e-2), 2.0, 1e-14);  TEST (gsl_cdf_ugaussian_Qinv, (1.58655253931457e-1), 1.0, TEST_TOL3);  TEST (gsl_cdf_ugaussian_Qinv, (3.08537538725987e-1), 0.5, TEST_TOL2);  TEST (gsl_cdf_ugaussian_Qinv, (3.44578258389676e-1), 0.4, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Qinv, (3.82088577811047e-1), 0.3, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Qinv, (4.20740290560897e-1), 0.2, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Qinv, (4.60172162722971e-1), 0.1, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Qinv, (0.5), 0.0, TEST_TOL0);  TEST (gsl_cdf_ugaussian_Qinv, (0.539827837277029), -0.1, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Qinv, (0.579259709439103), -0.2, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Qinv, (0.617911422188953), -0.3, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Qinv, (0.655421741610324), -0.4, TEST_TOL1);  TEST (gsl_cdf_ugaussian_Qinv, (0.691462461274013), -0.5, TEST_TOL2);  TEST (gsl_cdf_ugaussian_Qinv, (0.841344746068543), -1.0, TEST_TOL3);  TEST (gsl_cdf_ugaussian_Qinv, (0.977249868051821), -2.0, 1e-14);  TEST (gsl_cdf_ugaussian_Qinv, (0.9986501020), -3.0, 1e-8);  TEST (gsl_cdf_ugaussian_Qinv, (0.9999683288), -4.0, 1e-6);  TEST (gsl_cdf_ugaussian_Qinv, (0.9999997133), -5.0, 1e-4);}  /* Tests for exponential cumulative distribution function     Function values computed with PARI, 28 digits precision */void test_exponential (void){  TEST (gsl_cdf_exponential_P, (0.1, 0.7), 1.33122100249818372e-1, TEST_TOL0);  TEST (gsl_cdf_exponential_P, (1e-32, 0.7), 1.42857142857142857e-32, TEST_TOL0);  TEST (gsl_cdf_exponential_P, (1000.0, 0.7), 1.0, TEST_TOL6);  TEST (gsl_cdf_exponential_Q, (0.1, 0.7), 8.66877899750181628e-1, TEST_TOL0);  TEST (gsl_cdf_exponential_Q, (1e-32, 0.7), 1.0, TEST_TOL0);  TEST (gsl_cdf_exponential_Q, (1000.0, 0.7), 0.0, TEST_TOL6);}void test_exponentialinv (void) {  TEST (gsl_cdf_exponential_Pinv, (0.13, 0.7), 9.74834471334553546e-2, TEST_TOL0);  TEST (gsl_cdf_exponential_Pinv, (1.42e-32, 0.7), 9.94000000000000000e-33, TEST_TOL0);  TEST (gsl_cdf_exponential_Qinv, (0.86, 0.7), 1.05576022814208545e-1, TEST_TOL0);  TEST (gsl_cdf_exponential_Qinv, (0.99999, 0.7), 7.00003500023333508e-6, TEST_TOL6);}  /* Tests for student's T distribution */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -