LCOV - code coverage report
Current view: top level - synthesis/MeasurementEquations/lbfgs - statistics.cc (source / functions) Hit Total Coverage
Test: ctest_coverage.info Lines: 0 9008 0.0 %
Date: 2023-11-06 10:06:49 Functions: 0 266 0.0 %

          Line data    Source code
       1             : /*************************************************************************
       2             : ALGLIB 3.17.0 (source code generated 2020-12-27)
       3             : Copyright (c) Sergey Bochkanov (ALGLIB project).
       4             : 
       5             : >>> SOURCE LICENSE >>>
       6             : This program is free software; you can redistribute it and/or modify
       7             : it under the terms of the GNU General Public License as published by
       8             : the Free Software Foundation (www.fsf.org); either version 2 of the 
       9             : License, or (at your option) any later version.
      10             : 
      11             : This program is distributed in the hope that it will be useful,
      12             : but WITHOUT ANY WARRANTY; without even the implied warranty of
      13             : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14             : GNU General Public License for more details.
      15             : 
      16             : A copy of the GNU General Public License is available at
      17             : http://www.fsf.org/licensing/licenses
      18             : >>> END OF LICENSE >>>
      19             : *************************************************************************/
      20             : #ifdef _MSC_VER
      21             : #define _CRT_SECURE_NO_WARNINGS
      22             : #endif
      23             : #include "stdafx.h"
      24             : #include "statistics.h"
      25             : 
      26             : // disable some irrelevant warnings
      27             : #if (AE_COMPILER==AE_MSVC) && !defined(AE_ALL_WARNINGS)
      28             : #pragma warning(disable:4100)
      29             : #pragma warning(disable:4127)
      30             : #pragma warning(disable:4611)
      31             : #pragma warning(disable:4702)
      32             : #pragma warning(disable:4996)
      33             : #endif
      34             : 
      35             : /////////////////////////////////////////////////////////////////////////
      36             : //
      37             : // THIS SECTION CONTAINS IMPLEMENTATION OF C++ INTERFACE
      38             : //
      39             : /////////////////////////////////////////////////////////////////////////
      40             : namespace alglib
      41             : {
      42             : 
      43             : #if defined(AE_COMPILE_BASESTAT) || !defined(AE_PARTIAL_BUILD)
      44             : 
      45             : #endif
      46             : 
      47             : #if defined(AE_COMPILE_WSR) || !defined(AE_PARTIAL_BUILD)
      48             : 
      49             : #endif
      50             : 
      51             : #if defined(AE_COMPILE_STEST) || !defined(AE_PARTIAL_BUILD)
      52             : 
      53             : #endif
      54             : 
      55             : #if defined(AE_COMPILE_CORRELATIONTESTS) || !defined(AE_PARTIAL_BUILD)
      56             : 
      57             : #endif
      58             : 
      59             : #if defined(AE_COMPILE_STUDENTTTESTS) || !defined(AE_PARTIAL_BUILD)
      60             : 
      61             : #endif
      62             : 
      63             : #if defined(AE_COMPILE_MANNWHITNEYU) || !defined(AE_PARTIAL_BUILD)
      64             : 
      65             : #endif
      66             : 
      67             : #if defined(AE_COMPILE_JARQUEBERA) || !defined(AE_PARTIAL_BUILD)
      68             : 
      69             : #endif
      70             : 
      71             : #if defined(AE_COMPILE_VARIANCETESTS) || !defined(AE_PARTIAL_BUILD)
      72             : 
      73             : #endif
      74             : 
      75             : #if defined(AE_COMPILE_BASESTAT) || !defined(AE_PARTIAL_BUILD)
      76             : /*************************************************************************
      77             : Calculation of the distribution moments: mean, variance, skewness, kurtosis.
      78             : 
      79             : INPUT PARAMETERS:
      80             :     X       -   sample
      81             :     N       -   N>=0, sample size:
      82             :                 * if given, only leading N elements of X are processed
      83             :                 * if not given, automatically determined from size of X
      84             : 
      85             : OUTPUT PARAMETERS
      86             :     Mean    -   mean.
      87             :     Variance-   variance.
      88             :     Skewness-   skewness (if variance<>0; zero otherwise).
      89             :     Kurtosis-   kurtosis (if variance<>0; zero otherwise).
      90             : 
      91             : NOTE: variance is calculated by dividing sum of squares by N-1, not N.
      92             : 
      93             :   -- ALGLIB --
      94             :      Copyright 06.09.2006 by Bochkanov Sergey
      95             : *************************************************************************/
      96           0 : void samplemoments(const real_1d_array &x, const ae_int_t n, double &mean, double &variance, double &skewness, double &kurtosis, const xparams _xparams)
      97             : {
      98             :     jmp_buf _break_jump;
      99             :     alglib_impl::ae_state _alglib_env_state;
     100           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     101           0 :     if( setjmp(_break_jump) )
     102             :     {
     103             : #if !defined(AE_NO_EXCEPTIONS)
     104           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     105             : #else
     106             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     107             :         return;
     108             : #endif
     109             :     }
     110           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     111           0 :     if( _xparams.flags!=0x0 )
     112           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     113           0 :     alglib_impl::samplemoments(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &mean, &variance, &skewness, &kurtosis, &_alglib_env_state);
     114           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     115           0 :     return;
     116             : }
     117             : 
     118             : /*************************************************************************
     119             : Calculation of the distribution moments: mean, variance, skewness, kurtosis.
     120             : 
     121             : INPUT PARAMETERS:
     122             :     X       -   sample
     123             :     N       -   N>=0, sample size:
     124             :                 * if given, only leading N elements of X are processed
     125             :                 * if not given, automatically determined from size of X
     126             : 
     127             : OUTPUT PARAMETERS
     128             :     Mean    -   mean.
     129             :     Variance-   variance.
     130             :     Skewness-   skewness (if variance<>0; zero otherwise).
     131             :     Kurtosis-   kurtosis (if variance<>0; zero otherwise).
     132             : 
     133             : NOTE: variance is calculated by dividing sum of squares by N-1, not N.
     134             : 
     135             :   -- ALGLIB --
     136             :      Copyright 06.09.2006 by Bochkanov Sergey
     137             : *************************************************************************/
     138             : #if !defined(AE_NO_EXCEPTIONS)
     139           0 : void samplemoments(const real_1d_array &x, double &mean, double &variance, double &skewness, double &kurtosis, const xparams _xparams)
     140             : {
     141             :     jmp_buf _break_jump;
     142             :     alglib_impl::ae_state _alglib_env_state;    
     143             :     ae_int_t n;
     144             : 
     145           0 :     n = x.length();
     146           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     147           0 :     if( setjmp(_break_jump) )
     148           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     149           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     150           0 :     if( _xparams.flags!=0x0 )
     151           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     152           0 :     alglib_impl::samplemoments(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &mean, &variance, &skewness, &kurtosis, &_alglib_env_state);
     153             : 
     154           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     155           0 :     return;
     156             : }
     157             : #endif
     158             : 
     159             : /*************************************************************************
     160             : Calculation of the mean.
     161             : 
     162             : INPUT PARAMETERS:
     163             :     X       -   sample
     164             :     N       -   N>=0, sample size:
     165             :                 * if given, only leading N elements of X are processed
     166             :                 * if not given, automatically determined from size of X
     167             : 
     168             : NOTE:
     169             : 
     170             : This function return result  which calculated by 'SampleMoments' function
     171             : and stored at 'Mean' variable.
     172             : 
     173             : 
     174             :   -- ALGLIB --
     175             :      Copyright 06.09.2006 by Bochkanov Sergey
     176             : *************************************************************************/
     177           0 : double samplemean(const real_1d_array &x, const ae_int_t n, const xparams _xparams)
     178             : {
     179             :     jmp_buf _break_jump;
     180             :     alglib_impl::ae_state _alglib_env_state;
     181           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     182           0 :     if( setjmp(_break_jump) )
     183             :     {
     184             : #if !defined(AE_NO_EXCEPTIONS)
     185           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     186             : #else
     187             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     188             :         return 0;
     189             : #endif
     190             :     }
     191           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     192           0 :     if( _xparams.flags!=0x0 )
     193           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     194           0 :     double result = alglib_impl::samplemean(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &_alglib_env_state);
     195           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     196           0 :     return *(reinterpret_cast<double*>(&result));
     197             : }
     198             : 
     199             : /*************************************************************************
     200             : Calculation of the mean.
     201             : 
     202             : INPUT PARAMETERS:
     203             :     X       -   sample
     204             :     N       -   N>=0, sample size:
     205             :                 * if given, only leading N elements of X are processed
     206             :                 * if not given, automatically determined from size of X
     207             : 
     208             : NOTE:
     209             : 
     210             : This function return result  which calculated by 'SampleMoments' function
     211             : and stored at 'Mean' variable.
     212             : 
     213             : 
     214             :   -- ALGLIB --
     215             :      Copyright 06.09.2006 by Bochkanov Sergey
     216             : *************************************************************************/
     217             : #if !defined(AE_NO_EXCEPTIONS)
     218           0 : double samplemean(const real_1d_array &x, const xparams _xparams)
     219             : {
     220             :     jmp_buf _break_jump;
     221             :     alglib_impl::ae_state _alglib_env_state;    
     222             :     ae_int_t n;
     223             : 
     224           0 :     n = x.length();
     225           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     226           0 :     if( setjmp(_break_jump) )
     227           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     228           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     229           0 :     if( _xparams.flags!=0x0 )
     230           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     231           0 :     double result = alglib_impl::samplemean(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &_alglib_env_state);
     232             : 
     233           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     234           0 :     return *(reinterpret_cast<double*>(&result));
     235             : }
     236             : #endif
     237             : 
     238             : /*************************************************************************
     239             : Calculation of the variance.
     240             : 
     241             : INPUT PARAMETERS:
     242             :     X       -   sample
     243             :     N       -   N>=0, sample size:
     244             :                 * if given, only leading N elements of X are processed
     245             :                 * if not given, automatically determined from size of X
     246             : 
     247             : NOTE:
     248             : 
     249             : This function return result  which calculated by 'SampleMoments' function
     250             : and stored at 'Variance' variable.
     251             : 
     252             : 
     253             :   -- ALGLIB --
     254             :      Copyright 06.09.2006 by Bochkanov Sergey
     255             : *************************************************************************/
     256           0 : double samplevariance(const real_1d_array &x, const ae_int_t n, const xparams _xparams)
     257             : {
     258             :     jmp_buf _break_jump;
     259             :     alglib_impl::ae_state _alglib_env_state;
     260           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     261           0 :     if( setjmp(_break_jump) )
     262             :     {
     263             : #if !defined(AE_NO_EXCEPTIONS)
     264           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     265             : #else
     266             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     267             :         return 0;
     268             : #endif
     269             :     }
     270           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     271           0 :     if( _xparams.flags!=0x0 )
     272           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     273           0 :     double result = alglib_impl::samplevariance(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &_alglib_env_state);
     274           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     275           0 :     return *(reinterpret_cast<double*>(&result));
     276             : }
     277             : 
     278             : /*************************************************************************
     279             : Calculation of the variance.
     280             : 
     281             : INPUT PARAMETERS:
     282             :     X       -   sample
     283             :     N       -   N>=0, sample size:
     284             :                 * if given, only leading N elements of X are processed
     285             :                 * if not given, automatically determined from size of X
     286             : 
     287             : NOTE:
     288             : 
     289             : This function return result  which calculated by 'SampleMoments' function
     290             : and stored at 'Variance' variable.
     291             : 
     292             : 
     293             :   -- ALGLIB --
     294             :      Copyright 06.09.2006 by Bochkanov Sergey
     295             : *************************************************************************/
     296             : #if !defined(AE_NO_EXCEPTIONS)
     297           0 : double samplevariance(const real_1d_array &x, const xparams _xparams)
     298             : {
     299             :     jmp_buf _break_jump;
     300             :     alglib_impl::ae_state _alglib_env_state;    
     301             :     ae_int_t n;
     302             : 
     303           0 :     n = x.length();
     304           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     305           0 :     if( setjmp(_break_jump) )
     306           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     307           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     308           0 :     if( _xparams.flags!=0x0 )
     309           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     310           0 :     double result = alglib_impl::samplevariance(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &_alglib_env_state);
     311             : 
     312           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     313           0 :     return *(reinterpret_cast<double*>(&result));
     314             : }
     315             : #endif
     316             : 
     317             : /*************************************************************************
     318             : Calculation of the skewness.
     319             : 
     320             : INPUT PARAMETERS:
     321             :     X       -   sample
     322             :     N       -   N>=0, sample size:
     323             :                 * if given, only leading N elements of X are processed
     324             :                 * if not given, automatically determined from size of X
     325             : 
     326             : NOTE:
     327             : 
     328             : This function return result  which calculated by 'SampleMoments' function
     329             : and stored at 'Skewness' variable.
     330             : 
     331             : 
     332             :   -- ALGLIB --
     333             :      Copyright 06.09.2006 by Bochkanov Sergey
     334             : *************************************************************************/
     335           0 : double sampleskewness(const real_1d_array &x, const ae_int_t n, const xparams _xparams)
     336             : {
     337             :     jmp_buf _break_jump;
     338             :     alglib_impl::ae_state _alglib_env_state;
     339           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     340           0 :     if( setjmp(_break_jump) )
     341             :     {
     342             : #if !defined(AE_NO_EXCEPTIONS)
     343           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     344             : #else
     345             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     346             :         return 0;
     347             : #endif
     348             :     }
     349           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     350           0 :     if( _xparams.flags!=0x0 )
     351           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     352           0 :     double result = alglib_impl::sampleskewness(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &_alglib_env_state);
     353           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     354           0 :     return *(reinterpret_cast<double*>(&result));
     355             : }
     356             : 
     357             : /*************************************************************************
     358             : Calculation of the skewness.
     359             : 
     360             : INPUT PARAMETERS:
     361             :     X       -   sample
     362             :     N       -   N>=0, sample size:
     363             :                 * if given, only leading N elements of X are processed
     364             :                 * if not given, automatically determined from size of X
     365             : 
     366             : NOTE:
     367             : 
     368             : This function return result  which calculated by 'SampleMoments' function
     369             : and stored at 'Skewness' variable.
     370             : 
     371             : 
     372             :   -- ALGLIB --
     373             :      Copyright 06.09.2006 by Bochkanov Sergey
     374             : *************************************************************************/
     375             : #if !defined(AE_NO_EXCEPTIONS)
     376           0 : double sampleskewness(const real_1d_array &x, const xparams _xparams)
     377             : {
     378             :     jmp_buf _break_jump;
     379             :     alglib_impl::ae_state _alglib_env_state;    
     380             :     ae_int_t n;
     381             : 
     382           0 :     n = x.length();
     383           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     384           0 :     if( setjmp(_break_jump) )
     385           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     386           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     387           0 :     if( _xparams.flags!=0x0 )
     388           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     389           0 :     double result = alglib_impl::sampleskewness(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &_alglib_env_state);
     390             : 
     391           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     392           0 :     return *(reinterpret_cast<double*>(&result));
     393             : }
     394             : #endif
     395             : 
     396             : /*************************************************************************
     397             : Calculation of the kurtosis.
     398             : 
     399             : INPUT PARAMETERS:
     400             :     X       -   sample
     401             :     N       -   N>=0, sample size:
     402             :                 * if given, only leading N elements of X are processed
     403             :                 * if not given, automatically determined from size of X
     404             : 
     405             : NOTE:
     406             : 
     407             : This function return result  which calculated by 'SampleMoments' function
     408             : and stored at 'Kurtosis' variable.
     409             : 
     410             : 
     411             :   -- ALGLIB --
     412             :      Copyright 06.09.2006 by Bochkanov Sergey
     413             : *************************************************************************/
     414           0 : double samplekurtosis(const real_1d_array &x, const ae_int_t n, const xparams _xparams)
     415             : {
     416             :     jmp_buf _break_jump;
     417             :     alglib_impl::ae_state _alglib_env_state;
     418           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     419           0 :     if( setjmp(_break_jump) )
     420             :     {
     421             : #if !defined(AE_NO_EXCEPTIONS)
     422           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     423             : #else
     424             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     425             :         return 0;
     426             : #endif
     427             :     }
     428           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     429           0 :     if( _xparams.flags!=0x0 )
     430           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     431           0 :     double result = alglib_impl::samplekurtosis(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &_alglib_env_state);
     432           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     433           0 :     return *(reinterpret_cast<double*>(&result));
     434             : }
     435             : 
     436             : /*************************************************************************
     437             : Calculation of the kurtosis.
     438             : 
     439             : INPUT PARAMETERS:
     440             :     X       -   sample
     441             :     N       -   N>=0, sample size:
     442             :                 * if given, only leading N elements of X are processed
     443             :                 * if not given, automatically determined from size of X
     444             : 
     445             : NOTE:
     446             : 
     447             : This function return result  which calculated by 'SampleMoments' function
     448             : and stored at 'Kurtosis' variable.
     449             : 
     450             : 
     451             :   -- ALGLIB --
     452             :      Copyright 06.09.2006 by Bochkanov Sergey
     453             : *************************************************************************/
     454             : #if !defined(AE_NO_EXCEPTIONS)
     455           0 : double samplekurtosis(const real_1d_array &x, const xparams _xparams)
     456             : {
     457             :     jmp_buf _break_jump;
     458             :     alglib_impl::ae_state _alglib_env_state;    
     459             :     ae_int_t n;
     460             : 
     461           0 :     n = x.length();
     462           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     463           0 :     if( setjmp(_break_jump) )
     464           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     465           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     466           0 :     if( _xparams.flags!=0x0 )
     467           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     468           0 :     double result = alglib_impl::samplekurtosis(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &_alglib_env_state);
     469             : 
     470           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     471           0 :     return *(reinterpret_cast<double*>(&result));
     472             : }
     473             : #endif
     474             : 
     475             : /*************************************************************************
     476             : ADev
     477             : 
     478             : Input parameters:
     479             :     X   -   sample
     480             :     N   -   N>=0, sample size:
     481             :             * if given, only leading N elements of X are processed
     482             :             * if not given, automatically determined from size of X
     483             : 
     484             : Output parameters:
     485             :     ADev-   ADev
     486             : 
     487             :   -- ALGLIB --
     488             :      Copyright 06.09.2006 by Bochkanov Sergey
     489             : *************************************************************************/
     490           0 : void sampleadev(const real_1d_array &x, const ae_int_t n, double &adev, const xparams _xparams)
     491             : {
     492             :     jmp_buf _break_jump;
     493             :     alglib_impl::ae_state _alglib_env_state;
     494           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     495           0 :     if( setjmp(_break_jump) )
     496             :     {
     497             : #if !defined(AE_NO_EXCEPTIONS)
     498           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     499             : #else
     500             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     501             :         return;
     502             : #endif
     503             :     }
     504           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     505           0 :     if( _xparams.flags!=0x0 )
     506           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     507           0 :     alglib_impl::sampleadev(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &adev, &_alglib_env_state);
     508           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     509           0 :     return;
     510             : }
     511             : 
     512             : /*************************************************************************
     513             : ADev
     514             : 
     515             : Input parameters:
     516             :     X   -   sample
     517             :     N   -   N>=0, sample size:
     518             :             * if given, only leading N elements of X are processed
     519             :             * if not given, automatically determined from size of X
     520             : 
     521             : Output parameters:
     522             :     ADev-   ADev
     523             : 
     524             :   -- ALGLIB --
     525             :      Copyright 06.09.2006 by Bochkanov Sergey
     526             : *************************************************************************/
     527             : #if !defined(AE_NO_EXCEPTIONS)
     528           0 : void sampleadev(const real_1d_array &x, double &adev, const xparams _xparams)
     529             : {
     530             :     jmp_buf _break_jump;
     531             :     alglib_impl::ae_state _alglib_env_state;    
     532             :     ae_int_t n;
     533             : 
     534           0 :     n = x.length();
     535           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     536           0 :     if( setjmp(_break_jump) )
     537           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     538           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     539           0 :     if( _xparams.flags!=0x0 )
     540           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     541           0 :     alglib_impl::sampleadev(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &adev, &_alglib_env_state);
     542             : 
     543           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     544           0 :     return;
     545             : }
     546             : #endif
     547             : 
     548             : /*************************************************************************
     549             : Median calculation.
     550             : 
     551             : Input parameters:
     552             :     X   -   sample (array indexes: [0..N-1])
     553             :     N   -   N>=0, sample size:
     554             :             * if given, only leading N elements of X are processed
     555             :             * if not given, automatically determined from size of X
     556             : 
     557             : Output parameters:
     558             :     Median
     559             : 
     560             :   -- ALGLIB --
     561             :      Copyright 06.09.2006 by Bochkanov Sergey
     562             : *************************************************************************/
     563           0 : void samplemedian(const real_1d_array &x, const ae_int_t n, double &median, const xparams _xparams)
     564             : {
     565             :     jmp_buf _break_jump;
     566             :     alglib_impl::ae_state _alglib_env_state;
     567           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     568           0 :     if( setjmp(_break_jump) )
     569             :     {
     570             : #if !defined(AE_NO_EXCEPTIONS)
     571           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     572             : #else
     573             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     574             :         return;
     575             : #endif
     576             :     }
     577           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     578           0 :     if( _xparams.flags!=0x0 )
     579           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     580           0 :     alglib_impl::samplemedian(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &median, &_alglib_env_state);
     581           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     582           0 :     return;
     583             : }
     584             : 
     585             : /*************************************************************************
     586             : Median calculation.
     587             : 
     588             : Input parameters:
     589             :     X   -   sample (array indexes: [0..N-1])
     590             :     N   -   N>=0, sample size:
     591             :             * if given, only leading N elements of X are processed
     592             :             * if not given, automatically determined from size of X
     593             : 
     594             : Output parameters:
     595             :     Median
     596             : 
     597             :   -- ALGLIB --
     598             :      Copyright 06.09.2006 by Bochkanov Sergey
     599             : *************************************************************************/
     600             : #if !defined(AE_NO_EXCEPTIONS)
     601           0 : void samplemedian(const real_1d_array &x, double &median, const xparams _xparams)
     602             : {
     603             :     jmp_buf _break_jump;
     604             :     alglib_impl::ae_state _alglib_env_state;    
     605             :     ae_int_t n;
     606             : 
     607           0 :     n = x.length();
     608           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     609           0 :     if( setjmp(_break_jump) )
     610           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     611           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     612           0 :     if( _xparams.flags!=0x0 )
     613           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     614           0 :     alglib_impl::samplemedian(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &median, &_alglib_env_state);
     615             : 
     616           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     617           0 :     return;
     618             : }
     619             : #endif
     620             : 
     621             : /*************************************************************************
     622             : Percentile calculation.
     623             : 
     624             : Input parameters:
     625             :     X   -   sample (array indexes: [0..N-1])
     626             :     N   -   N>=0, sample size:
     627             :             * if given, only leading N elements of X are processed
     628             :             * if not given, automatically determined from size of X
     629             :     P   -   percentile (0<=P<=1)
     630             : 
     631             : Output parameters:
     632             :     V   -   percentile
     633             : 
     634             :   -- ALGLIB --
     635             :      Copyright 01.03.2008 by Bochkanov Sergey
     636             : *************************************************************************/
     637           0 : void samplepercentile(const real_1d_array &x, const ae_int_t n, const double p, double &v, const xparams _xparams)
     638             : {
     639             :     jmp_buf _break_jump;
     640             :     alglib_impl::ae_state _alglib_env_state;
     641           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     642           0 :     if( setjmp(_break_jump) )
     643             :     {
     644             : #if !defined(AE_NO_EXCEPTIONS)
     645           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     646             : #else
     647             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     648             :         return;
     649             : #endif
     650             :     }
     651           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     652           0 :     if( _xparams.flags!=0x0 )
     653           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     654           0 :     alglib_impl::samplepercentile(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, p, &v, &_alglib_env_state);
     655           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     656           0 :     return;
     657             : }
     658             : 
     659             : /*************************************************************************
     660             : Percentile calculation.
     661             : 
     662             : Input parameters:
     663             :     X   -   sample (array indexes: [0..N-1])
     664             :     N   -   N>=0, sample size:
     665             :             * if given, only leading N elements of X are processed
     666             :             * if not given, automatically determined from size of X
     667             :     P   -   percentile (0<=P<=1)
     668             : 
     669             : Output parameters:
     670             :     V   -   percentile
     671             : 
     672             :   -- ALGLIB --
     673             :      Copyright 01.03.2008 by Bochkanov Sergey
     674             : *************************************************************************/
     675             : #if !defined(AE_NO_EXCEPTIONS)
     676           0 : void samplepercentile(const real_1d_array &x, const double p, double &v, const xparams _xparams)
     677             : {
     678             :     jmp_buf _break_jump;
     679             :     alglib_impl::ae_state _alglib_env_state;    
     680             :     ae_int_t n;
     681             : 
     682           0 :     n = x.length();
     683           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     684           0 :     if( setjmp(_break_jump) )
     685           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     686           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     687           0 :     if( _xparams.flags!=0x0 )
     688           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     689           0 :     alglib_impl::samplepercentile(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, p, &v, &_alglib_env_state);
     690             : 
     691           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     692           0 :     return;
     693             : }
     694             : #endif
     695             : 
     696             : /*************************************************************************
     697             : 2-sample covariance
     698             : 
     699             : Input parameters:
     700             :     X       -   sample 1 (array indexes: [0..N-1])
     701             :     Y       -   sample 2 (array indexes: [0..N-1])
     702             :     N       -   N>=0, sample size:
     703             :                 * if given, only N leading elements of X/Y are processed
     704             :                 * if not given, automatically determined from input sizes
     705             : 
     706             : Result:
     707             :     covariance (zero for N=0 or N=1)
     708             : 
     709             :   -- ALGLIB --
     710             :      Copyright 28.10.2010 by Bochkanov Sergey
     711             : *************************************************************************/
     712           0 : double cov2(const real_1d_array &x, const real_1d_array &y, const ae_int_t n, const xparams _xparams)
     713             : {
     714             :     jmp_buf _break_jump;
     715             :     alglib_impl::ae_state _alglib_env_state;
     716           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     717           0 :     if( setjmp(_break_jump) )
     718             :     {
     719             : #if !defined(AE_NO_EXCEPTIONS)
     720           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     721             : #else
     722             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     723             :         return 0;
     724             : #endif
     725             :     }
     726           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     727           0 :     if( _xparams.flags!=0x0 )
     728           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     729           0 :     double result = alglib_impl::cov2(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), const_cast<alglib_impl::ae_vector*>(y.c_ptr()), n, &_alglib_env_state);
     730           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     731           0 :     return *(reinterpret_cast<double*>(&result));
     732             : }
     733             : 
     734             : /*************************************************************************
     735             : 2-sample covariance
     736             : 
     737             : Input parameters:
     738             :     X       -   sample 1 (array indexes: [0..N-1])
     739             :     Y       -   sample 2 (array indexes: [0..N-1])
     740             :     N       -   N>=0, sample size:
     741             :                 * if given, only N leading elements of X/Y are processed
     742             :                 * if not given, automatically determined from input sizes
     743             : 
     744             : Result:
     745             :     covariance (zero for N=0 or N=1)
     746             : 
     747             :   -- ALGLIB --
     748             :      Copyright 28.10.2010 by Bochkanov Sergey
     749             : *************************************************************************/
     750             : #if !defined(AE_NO_EXCEPTIONS)
     751           0 : double cov2(const real_1d_array &x, const real_1d_array &y, const xparams _xparams)
     752             : {
     753             :     jmp_buf _break_jump;
     754             :     alglib_impl::ae_state _alglib_env_state;    
     755             :     ae_int_t n;
     756           0 :     if( (x.length()!=y.length()))
     757           0 :         _ALGLIB_CPP_EXCEPTION("Error while calling 'cov2': looks like one of arguments has wrong size");
     758           0 :     n = x.length();
     759           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     760           0 :     if( setjmp(_break_jump) )
     761           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     762           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     763           0 :     if( _xparams.flags!=0x0 )
     764           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     765           0 :     double result = alglib_impl::cov2(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), const_cast<alglib_impl::ae_vector*>(y.c_ptr()), n, &_alglib_env_state);
     766             : 
     767           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     768           0 :     return *(reinterpret_cast<double*>(&result));
     769             : }
     770             : #endif
     771             : 
     772             : /*************************************************************************
     773             : Pearson product-moment correlation coefficient
     774             : 
     775             : Input parameters:
     776             :     X       -   sample 1 (array indexes: [0..N-1])
     777             :     Y       -   sample 2 (array indexes: [0..N-1])
     778             :     N       -   N>=0, sample size:
     779             :                 * if given, only N leading elements of X/Y are processed
     780             :                 * if not given, automatically determined from input sizes
     781             : 
     782             : Result:
     783             :     Pearson product-moment correlation coefficient
     784             :     (zero for N=0 or N=1)
     785             : 
     786             :   -- ALGLIB --
     787             :      Copyright 28.10.2010 by Bochkanov Sergey
     788             : *************************************************************************/
     789           0 : double pearsoncorr2(const real_1d_array &x, const real_1d_array &y, const ae_int_t n, const xparams _xparams)
     790             : {
     791             :     jmp_buf _break_jump;
     792             :     alglib_impl::ae_state _alglib_env_state;
     793           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     794           0 :     if( setjmp(_break_jump) )
     795             :     {
     796             : #if !defined(AE_NO_EXCEPTIONS)
     797           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     798             : #else
     799             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     800             :         return 0;
     801             : #endif
     802             :     }
     803           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     804           0 :     if( _xparams.flags!=0x0 )
     805           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     806           0 :     double result = alglib_impl::pearsoncorr2(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), const_cast<alglib_impl::ae_vector*>(y.c_ptr()), n, &_alglib_env_state);
     807           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     808           0 :     return *(reinterpret_cast<double*>(&result));
     809             : }
     810             : 
     811             : /*************************************************************************
     812             : Pearson product-moment correlation coefficient
     813             : 
     814             : Input parameters:
     815             :     X       -   sample 1 (array indexes: [0..N-1])
     816             :     Y       -   sample 2 (array indexes: [0..N-1])
     817             :     N       -   N>=0, sample size:
     818             :                 * if given, only N leading elements of X/Y are processed
     819             :                 * if not given, automatically determined from input sizes
     820             : 
     821             : Result:
     822             :     Pearson product-moment correlation coefficient
     823             :     (zero for N=0 or N=1)
     824             : 
     825             :   -- ALGLIB --
     826             :      Copyright 28.10.2010 by Bochkanov Sergey
     827             : *************************************************************************/
     828             : #if !defined(AE_NO_EXCEPTIONS)
     829           0 : double pearsoncorr2(const real_1d_array &x, const real_1d_array &y, const xparams _xparams)
     830             : {
     831             :     jmp_buf _break_jump;
     832             :     alglib_impl::ae_state _alglib_env_state;    
     833             :     ae_int_t n;
     834           0 :     if( (x.length()!=y.length()))
     835           0 :         _ALGLIB_CPP_EXCEPTION("Error while calling 'pearsoncorr2': looks like one of arguments has wrong size");
     836           0 :     n = x.length();
     837           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     838           0 :     if( setjmp(_break_jump) )
     839           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     840           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     841           0 :     if( _xparams.flags!=0x0 )
     842           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     843           0 :     double result = alglib_impl::pearsoncorr2(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), const_cast<alglib_impl::ae_vector*>(y.c_ptr()), n, &_alglib_env_state);
     844             : 
     845           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     846           0 :     return *(reinterpret_cast<double*>(&result));
     847             : }
     848             : #endif
     849             : 
     850             : /*************************************************************************
     851             : Spearman's rank correlation coefficient
     852             : 
     853             : Input parameters:
     854             :     X       -   sample 1 (array indexes: [0..N-1])
     855             :     Y       -   sample 2 (array indexes: [0..N-1])
     856             :     N       -   N>=0, sample size:
     857             :                 * if given, only N leading elements of X/Y are processed
     858             :                 * if not given, automatically determined from input sizes
     859             : 
     860             : Result:
     861             :     Spearman's rank correlation coefficient
     862             :     (zero for N=0 or N=1)
     863             : 
     864             :   -- ALGLIB --
     865             :      Copyright 09.04.2007 by Bochkanov Sergey
     866             : *************************************************************************/
     867           0 : double spearmancorr2(const real_1d_array &x, const real_1d_array &y, const ae_int_t n, const xparams _xparams)
     868             : {
     869             :     jmp_buf _break_jump;
     870             :     alglib_impl::ae_state _alglib_env_state;
     871           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     872           0 :     if( setjmp(_break_jump) )
     873             :     {
     874             : #if !defined(AE_NO_EXCEPTIONS)
     875           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     876             : #else
     877             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     878             :         return 0;
     879             : #endif
     880             :     }
     881           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     882           0 :     if( _xparams.flags!=0x0 )
     883           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     884           0 :     double result = alglib_impl::spearmancorr2(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), const_cast<alglib_impl::ae_vector*>(y.c_ptr()), n, &_alglib_env_state);
     885           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     886           0 :     return *(reinterpret_cast<double*>(&result));
     887             : }
     888             : 
     889             : /*************************************************************************
     890             : Spearman's rank correlation coefficient
     891             : 
     892             : Input parameters:
     893             :     X       -   sample 1 (array indexes: [0..N-1])
     894             :     Y       -   sample 2 (array indexes: [0..N-1])
     895             :     N       -   N>=0, sample size:
     896             :                 * if given, only N leading elements of X/Y are processed
     897             :                 * if not given, automatically determined from input sizes
     898             : 
     899             : Result:
     900             :     Spearman's rank correlation coefficient
     901             :     (zero for N=0 or N=1)
     902             : 
     903             :   -- ALGLIB --
     904             :      Copyright 09.04.2007 by Bochkanov Sergey
     905             : *************************************************************************/
     906             : #if !defined(AE_NO_EXCEPTIONS)
     907           0 : double spearmancorr2(const real_1d_array &x, const real_1d_array &y, const xparams _xparams)
     908             : {
     909             :     jmp_buf _break_jump;
     910             :     alglib_impl::ae_state _alglib_env_state;    
     911             :     ae_int_t n;
     912           0 :     if( (x.length()!=y.length()))
     913           0 :         _ALGLIB_CPP_EXCEPTION("Error while calling 'spearmancorr2': looks like one of arguments has wrong size");
     914           0 :     n = x.length();
     915           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     916           0 :     if( setjmp(_break_jump) )
     917           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     918           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     919           0 :     if( _xparams.flags!=0x0 )
     920           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     921           0 :     double result = alglib_impl::spearmancorr2(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), const_cast<alglib_impl::ae_vector*>(y.c_ptr()), n, &_alglib_env_state);
     922             : 
     923           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     924           0 :     return *(reinterpret_cast<double*>(&result));
     925             : }
     926             : #endif
     927             : 
     928             : /*************************************************************************
     929             : Covariance matrix
     930             : 
     931             :   ! COMMERCIAL EDITION OF ALGLIB:
     932             :   !
     933             :   ! Commercial Edition of ALGLIB includes following important improvements
     934             :   ! of this function:
     935             :   ! * high-performance native backend with same C# interface (C# version)
     936             :   ! * multithreading support (C++ and C# versions)
     937             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
     938             :   !   (C++ and C# versions, x86/x64 platform)
     939             :   !
     940             :   ! We recommend you to read 'Working with commercial version' section  of
     941             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
     942             :   ! related features provided by commercial edition of ALGLIB.
     943             : 
     944             : INPUT PARAMETERS:
     945             :     X   -   array[N,M], sample matrix:
     946             :             * J-th column corresponds to J-th variable
     947             :             * I-th row corresponds to I-th observation
     948             :     N   -   N>=0, number of observations:
     949             :             * if given, only leading N rows of X are used
     950             :             * if not given, automatically determined from input size
     951             :     M   -   M>0, number of variables:
     952             :             * if given, only leading M columns of X are used
     953             :             * if not given, automatically determined from input size
     954             : 
     955             : OUTPUT PARAMETERS:
     956             :     C   -   array[M,M], covariance matrix (zero if N=0 or N=1)
     957             : 
     958             :   -- ALGLIB --
     959             :      Copyright 28.10.2010 by Bochkanov Sergey
     960             : *************************************************************************/
     961           0 : void covm(const real_2d_array &x, const ae_int_t n, const ae_int_t m, real_2d_array &c, const xparams _xparams)
     962             : {
     963             :     jmp_buf _break_jump;
     964             :     alglib_impl::ae_state _alglib_env_state;
     965           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
     966           0 :     if( setjmp(_break_jump) )
     967             :     {
     968             : #if !defined(AE_NO_EXCEPTIONS)
     969           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
     970             : #else
     971             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
     972             :         return;
     973             : #endif
     974             :     }
     975           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
     976           0 :     if( _xparams.flags!=0x0 )
     977           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
     978           0 :     alglib_impl::covm(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), n, m, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
     979           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
     980           0 :     return;
     981             : }
     982             : 
     983             : /*************************************************************************
     984             : Covariance matrix
     985             : 
     986             :   ! COMMERCIAL EDITION OF ALGLIB:
     987             :   !
     988             :   ! Commercial Edition of ALGLIB includes following important improvements
     989             :   ! of this function:
     990             :   ! * high-performance native backend with same C# interface (C# version)
     991             :   ! * multithreading support (C++ and C# versions)
     992             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
     993             :   !   (C++ and C# versions, x86/x64 platform)
     994             :   !
     995             :   ! We recommend you to read 'Working with commercial version' section  of
     996             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
     997             :   ! related features provided by commercial edition of ALGLIB.
     998             : 
     999             : INPUT PARAMETERS:
    1000             :     X   -   array[N,M], sample matrix:
    1001             :             * J-th column corresponds to J-th variable
    1002             :             * I-th row corresponds to I-th observation
    1003             :     N   -   N>=0, number of observations:
    1004             :             * if given, only leading N rows of X are used
    1005             :             * if not given, automatically determined from input size
    1006             :     M   -   M>0, number of variables:
    1007             :             * if given, only leading M columns of X are used
    1008             :             * if not given, automatically determined from input size
    1009             : 
    1010             : OUTPUT PARAMETERS:
    1011             :     C   -   array[M,M], covariance matrix (zero if N=0 or N=1)
    1012             : 
    1013             :   -- ALGLIB --
    1014             :      Copyright 28.10.2010 by Bochkanov Sergey
    1015             : *************************************************************************/
    1016             : #if !defined(AE_NO_EXCEPTIONS)
    1017           0 : void covm(const real_2d_array &x, real_2d_array &c, const xparams _xparams)
    1018             : {
    1019             :     jmp_buf _break_jump;
    1020             :     alglib_impl::ae_state _alglib_env_state;    
    1021             :     ae_int_t n;
    1022             :     ae_int_t m;
    1023             : 
    1024           0 :     n = x.rows();
    1025           0 :     m = x.cols();
    1026           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1027           0 :     if( setjmp(_break_jump) )
    1028           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1029           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1030           0 :     if( _xparams.flags!=0x0 )
    1031           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1032           0 :     alglib_impl::covm(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), n, m, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1033             : 
    1034           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1035           0 :     return;
    1036             : }
    1037             : #endif
    1038             : 
    1039             : /*************************************************************************
    1040             : Pearson product-moment correlation matrix
    1041             : 
    1042             :   ! COMMERCIAL EDITION OF ALGLIB:
    1043             :   !
    1044             :   ! Commercial Edition of ALGLIB includes following important improvements
    1045             :   ! of this function:
    1046             :   ! * high-performance native backend with same C# interface (C# version)
    1047             :   ! * multithreading support (C++ and C# versions)
    1048             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1049             :   !   (C++ and C# versions, x86/x64 platform)
    1050             :   !
    1051             :   ! We recommend you to read 'Working with commercial version' section  of
    1052             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1053             :   ! related features provided by commercial edition of ALGLIB.
    1054             : 
    1055             : INPUT PARAMETERS:
    1056             :     X   -   array[N,M], sample matrix:
    1057             :             * J-th column corresponds to J-th variable
    1058             :             * I-th row corresponds to I-th observation
    1059             :     N   -   N>=0, number of observations:
    1060             :             * if given, only leading N rows of X are used
    1061             :             * if not given, automatically determined from input size
    1062             :     M   -   M>0, number of variables:
    1063             :             * if given, only leading M columns of X are used
    1064             :             * if not given, automatically determined from input size
    1065             : 
    1066             : OUTPUT PARAMETERS:
    1067             :     C   -   array[M,M], correlation matrix (zero if N=0 or N=1)
    1068             : 
    1069             :   -- ALGLIB --
    1070             :      Copyright 28.10.2010 by Bochkanov Sergey
    1071             : *************************************************************************/
    1072           0 : void pearsoncorrm(const real_2d_array &x, const ae_int_t n, const ae_int_t m, real_2d_array &c, const xparams _xparams)
    1073             : {
    1074             :     jmp_buf _break_jump;
    1075             :     alglib_impl::ae_state _alglib_env_state;
    1076           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1077           0 :     if( setjmp(_break_jump) )
    1078             :     {
    1079             : #if !defined(AE_NO_EXCEPTIONS)
    1080           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1081             : #else
    1082             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1083             :         return;
    1084             : #endif
    1085             :     }
    1086           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1087           0 :     if( _xparams.flags!=0x0 )
    1088           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1089           0 :     alglib_impl::pearsoncorrm(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), n, m, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1090           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1091           0 :     return;
    1092             : }
    1093             : 
    1094             : /*************************************************************************
    1095             : Pearson product-moment correlation matrix
    1096             : 
    1097             :   ! COMMERCIAL EDITION OF ALGLIB:
    1098             :   !
    1099             :   ! Commercial Edition of ALGLIB includes following important improvements
    1100             :   ! of this function:
    1101             :   ! * high-performance native backend with same C# interface (C# version)
    1102             :   ! * multithreading support (C++ and C# versions)
    1103             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1104             :   !   (C++ and C# versions, x86/x64 platform)
    1105             :   !
    1106             :   ! We recommend you to read 'Working with commercial version' section  of
    1107             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1108             :   ! related features provided by commercial edition of ALGLIB.
    1109             : 
    1110             : INPUT PARAMETERS:
    1111             :     X   -   array[N,M], sample matrix:
    1112             :             * J-th column corresponds to J-th variable
    1113             :             * I-th row corresponds to I-th observation
    1114             :     N   -   N>=0, number of observations:
    1115             :             * if given, only leading N rows of X are used
    1116             :             * if not given, automatically determined from input size
    1117             :     M   -   M>0, number of variables:
    1118             :             * if given, only leading M columns of X are used
    1119             :             * if not given, automatically determined from input size
    1120             : 
    1121             : OUTPUT PARAMETERS:
    1122             :     C   -   array[M,M], correlation matrix (zero if N=0 or N=1)
    1123             : 
    1124             :   -- ALGLIB --
    1125             :      Copyright 28.10.2010 by Bochkanov Sergey
    1126             : *************************************************************************/
    1127             : #if !defined(AE_NO_EXCEPTIONS)
    1128           0 : void pearsoncorrm(const real_2d_array &x, real_2d_array &c, const xparams _xparams)
    1129             : {
    1130             :     jmp_buf _break_jump;
    1131             :     alglib_impl::ae_state _alglib_env_state;    
    1132             :     ae_int_t n;
    1133             :     ae_int_t m;
    1134             : 
    1135           0 :     n = x.rows();
    1136           0 :     m = x.cols();
    1137           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1138           0 :     if( setjmp(_break_jump) )
    1139           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1140           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1141           0 :     if( _xparams.flags!=0x0 )
    1142           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1143           0 :     alglib_impl::pearsoncorrm(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), n, m, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1144             : 
    1145           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1146           0 :     return;
    1147             : }
    1148             : #endif
    1149             : 
    1150             : /*************************************************************************
    1151             : Spearman's rank correlation matrix
    1152             : 
    1153             :   ! COMMERCIAL EDITION OF ALGLIB:
    1154             :   !
    1155             :   ! Commercial Edition of ALGLIB includes following important improvements
    1156             :   ! of this function:
    1157             :   ! * high-performance native backend with same C# interface (C# version)
    1158             :   ! * multithreading support (C++ and C# versions)
    1159             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1160             :   !   (C++ and C# versions, x86/x64 platform)
    1161             :   !
    1162             :   ! We recommend you to read 'Working with commercial version' section  of
    1163             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1164             :   ! related features provided by commercial edition of ALGLIB.
    1165             : 
    1166             : INPUT PARAMETERS:
    1167             :     X   -   array[N,M], sample matrix:
    1168             :             * J-th column corresponds to J-th variable
    1169             :             * I-th row corresponds to I-th observation
    1170             :     N   -   N>=0, number of observations:
    1171             :             * if given, only leading N rows of X are used
    1172             :             * if not given, automatically determined from input size
    1173             :     M   -   M>0, number of variables:
    1174             :             * if given, only leading M columns of X are used
    1175             :             * if not given, automatically determined from input size
    1176             : 
    1177             : OUTPUT PARAMETERS:
    1178             :     C   -   array[M,M], correlation matrix (zero if N=0 or N=1)
    1179             : 
    1180             :   -- ALGLIB --
    1181             :      Copyright 28.10.2010 by Bochkanov Sergey
    1182             : *************************************************************************/
    1183           0 : void spearmancorrm(const real_2d_array &x, const ae_int_t n, const ae_int_t m, real_2d_array &c, const xparams _xparams)
    1184             : {
    1185             :     jmp_buf _break_jump;
    1186             :     alglib_impl::ae_state _alglib_env_state;
    1187           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1188           0 :     if( setjmp(_break_jump) )
    1189             :     {
    1190             : #if !defined(AE_NO_EXCEPTIONS)
    1191           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1192             : #else
    1193             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1194             :         return;
    1195             : #endif
    1196             :     }
    1197           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1198           0 :     if( _xparams.flags!=0x0 )
    1199           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1200           0 :     alglib_impl::spearmancorrm(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), n, m, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1201           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1202           0 :     return;
    1203             : }
    1204             : 
    1205             : /*************************************************************************
    1206             : Spearman's rank correlation matrix
    1207             : 
    1208             :   ! COMMERCIAL EDITION OF ALGLIB:
    1209             :   !
    1210             :   ! Commercial Edition of ALGLIB includes following important improvements
    1211             :   ! of this function:
    1212             :   ! * high-performance native backend with same C# interface (C# version)
    1213             :   ! * multithreading support (C++ and C# versions)
    1214             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1215             :   !   (C++ and C# versions, x86/x64 platform)
    1216             :   !
    1217             :   ! We recommend you to read 'Working with commercial version' section  of
    1218             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1219             :   ! related features provided by commercial edition of ALGLIB.
    1220             : 
    1221             : INPUT PARAMETERS:
    1222             :     X   -   array[N,M], sample matrix:
    1223             :             * J-th column corresponds to J-th variable
    1224             :             * I-th row corresponds to I-th observation
    1225             :     N   -   N>=0, number of observations:
    1226             :             * if given, only leading N rows of X are used
    1227             :             * if not given, automatically determined from input size
    1228             :     M   -   M>0, number of variables:
    1229             :             * if given, only leading M columns of X are used
    1230             :             * if not given, automatically determined from input size
    1231             : 
    1232             : OUTPUT PARAMETERS:
    1233             :     C   -   array[M,M], correlation matrix (zero if N=0 or N=1)
    1234             : 
    1235             :   -- ALGLIB --
    1236             :      Copyright 28.10.2010 by Bochkanov Sergey
    1237             : *************************************************************************/
    1238             : #if !defined(AE_NO_EXCEPTIONS)
    1239           0 : void spearmancorrm(const real_2d_array &x, real_2d_array &c, const xparams _xparams)
    1240             : {
    1241             :     jmp_buf _break_jump;
    1242             :     alglib_impl::ae_state _alglib_env_state;    
    1243             :     ae_int_t n;
    1244             :     ae_int_t m;
    1245             : 
    1246           0 :     n = x.rows();
    1247           0 :     m = x.cols();
    1248           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1249           0 :     if( setjmp(_break_jump) )
    1250           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1251           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1252           0 :     if( _xparams.flags!=0x0 )
    1253           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1254           0 :     alglib_impl::spearmancorrm(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), n, m, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1255             : 
    1256           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1257           0 :     return;
    1258             : }
    1259             : #endif
    1260             : 
    1261             : /*************************************************************************
    1262             : Cross-covariance matrix
    1263             : 
    1264             :   ! COMMERCIAL EDITION OF ALGLIB:
    1265             :   !
    1266             :   ! Commercial Edition of ALGLIB includes following important improvements
    1267             :   ! of this function:
    1268             :   ! * high-performance native backend with same C# interface (C# version)
    1269             :   ! * multithreading support (C++ and C# versions)
    1270             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1271             :   !   (C++ and C# versions, x86/x64 platform)
    1272             :   !
    1273             :   ! We recommend you to read 'Working with commercial version' section  of
    1274             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1275             :   ! related features provided by commercial edition of ALGLIB.
    1276             : 
    1277             : INPUT PARAMETERS:
    1278             :     X   -   array[N,M1], sample matrix:
    1279             :             * J-th column corresponds to J-th variable
    1280             :             * I-th row corresponds to I-th observation
    1281             :     Y   -   array[N,M2], sample matrix:
    1282             :             * J-th column corresponds to J-th variable
    1283             :             * I-th row corresponds to I-th observation
    1284             :     N   -   N>=0, number of observations:
    1285             :             * if given, only leading N rows of X/Y are used
    1286             :             * if not given, automatically determined from input sizes
    1287             :     M1  -   M1>0, number of variables in X:
    1288             :             * if given, only leading M1 columns of X are used
    1289             :             * if not given, automatically determined from input size
    1290             :     M2  -   M2>0, number of variables in Y:
    1291             :             * if given, only leading M1 columns of X are used
    1292             :             * if not given, automatically determined from input size
    1293             : 
    1294             : OUTPUT PARAMETERS:
    1295             :     C   -   array[M1,M2], cross-covariance matrix (zero if N=0 or N=1)
    1296             : 
    1297             :   -- ALGLIB --
    1298             :      Copyright 28.10.2010 by Bochkanov Sergey
    1299             : *************************************************************************/
    1300           0 : void covm2(const real_2d_array &x, const real_2d_array &y, const ae_int_t n, const ae_int_t m1, const ae_int_t m2, real_2d_array &c, const xparams _xparams)
    1301             : {
    1302             :     jmp_buf _break_jump;
    1303             :     alglib_impl::ae_state _alglib_env_state;
    1304           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1305           0 :     if( setjmp(_break_jump) )
    1306             :     {
    1307             : #if !defined(AE_NO_EXCEPTIONS)
    1308           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1309             : #else
    1310             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1311             :         return;
    1312             : #endif
    1313             :     }
    1314           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1315           0 :     if( _xparams.flags!=0x0 )
    1316           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1317           0 :     alglib_impl::covm2(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), const_cast<alglib_impl::ae_matrix*>(y.c_ptr()), n, m1, m2, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1318           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1319           0 :     return;
    1320             : }
    1321             : 
    1322             : /*************************************************************************
    1323             : Cross-covariance matrix
    1324             : 
    1325             :   ! COMMERCIAL EDITION OF ALGLIB:
    1326             :   !
    1327             :   ! Commercial Edition of ALGLIB includes following important improvements
    1328             :   ! of this function:
    1329             :   ! * high-performance native backend with same C# interface (C# version)
    1330             :   ! * multithreading support (C++ and C# versions)
    1331             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1332             :   !   (C++ and C# versions, x86/x64 platform)
    1333             :   !
    1334             :   ! We recommend you to read 'Working with commercial version' section  of
    1335             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1336             :   ! related features provided by commercial edition of ALGLIB.
    1337             : 
    1338             : INPUT PARAMETERS:
    1339             :     X   -   array[N,M1], sample matrix:
    1340             :             * J-th column corresponds to J-th variable
    1341             :             * I-th row corresponds to I-th observation
    1342             :     Y   -   array[N,M2], sample matrix:
    1343             :             * J-th column corresponds to J-th variable
    1344             :             * I-th row corresponds to I-th observation
    1345             :     N   -   N>=0, number of observations:
    1346             :             * if given, only leading N rows of X/Y are used
    1347             :             * if not given, automatically determined from input sizes
    1348             :     M1  -   M1>0, number of variables in X:
    1349             :             * if given, only leading M1 columns of X are used
    1350             :             * if not given, automatically determined from input size
    1351             :     M2  -   M2>0, number of variables in Y:
    1352             :             * if given, only leading M1 columns of X are used
    1353             :             * if not given, automatically determined from input size
    1354             : 
    1355             : OUTPUT PARAMETERS:
    1356             :     C   -   array[M1,M2], cross-covariance matrix (zero if N=0 or N=1)
    1357             : 
    1358             :   -- ALGLIB --
    1359             :      Copyright 28.10.2010 by Bochkanov Sergey
    1360             : *************************************************************************/
    1361             : #if !defined(AE_NO_EXCEPTIONS)
    1362           0 : void covm2(const real_2d_array &x, const real_2d_array &y, real_2d_array &c, const xparams _xparams)
    1363             : {
    1364             :     jmp_buf _break_jump;
    1365             :     alglib_impl::ae_state _alglib_env_state;    
    1366             :     ae_int_t n;
    1367             :     ae_int_t m1;
    1368             :     ae_int_t m2;
    1369           0 :     if( (x.rows()!=y.rows()))
    1370           0 :         _ALGLIB_CPP_EXCEPTION("Error while calling 'covm2': looks like one of arguments has wrong size");
    1371           0 :     n = x.rows();
    1372           0 :     m1 = x.cols();
    1373           0 :     m2 = y.cols();
    1374           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1375           0 :     if( setjmp(_break_jump) )
    1376           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1377           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1378           0 :     if( _xparams.flags!=0x0 )
    1379           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1380           0 :     alglib_impl::covm2(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), const_cast<alglib_impl::ae_matrix*>(y.c_ptr()), n, m1, m2, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1381             : 
    1382           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1383           0 :     return;
    1384             : }
    1385             : #endif
    1386             : 
    1387             : /*************************************************************************
    1388             : Pearson product-moment cross-correlation matrix
    1389             : 
    1390             :   ! COMMERCIAL EDITION OF ALGLIB:
    1391             :   !
    1392             :   ! Commercial Edition of ALGLIB includes following important improvements
    1393             :   ! of this function:
    1394             :   ! * high-performance native backend with same C# interface (C# version)
    1395             :   ! * multithreading support (C++ and C# versions)
    1396             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1397             :   !   (C++ and C# versions, x86/x64 platform)
    1398             :   !
    1399             :   ! We recommend you to read 'Working with commercial version' section  of
    1400             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1401             :   ! related features provided by commercial edition of ALGLIB.
    1402             : 
    1403             : INPUT PARAMETERS:
    1404             :     X   -   array[N,M1], sample matrix:
    1405             :             * J-th column corresponds to J-th variable
    1406             :             * I-th row corresponds to I-th observation
    1407             :     Y   -   array[N,M2], sample matrix:
    1408             :             * J-th column corresponds to J-th variable
    1409             :             * I-th row corresponds to I-th observation
    1410             :     N   -   N>=0, number of observations:
    1411             :             * if given, only leading N rows of X/Y are used
    1412             :             * if not given, automatically determined from input sizes
    1413             :     M1  -   M1>0, number of variables in X:
    1414             :             * if given, only leading M1 columns of X are used
    1415             :             * if not given, automatically determined from input size
    1416             :     M2  -   M2>0, number of variables in Y:
    1417             :             * if given, only leading M1 columns of X are used
    1418             :             * if not given, automatically determined from input size
    1419             : 
    1420             : OUTPUT PARAMETERS:
    1421             :     C   -   array[M1,M2], cross-correlation matrix (zero if N=0 or N=1)
    1422             : 
    1423             :   -- ALGLIB --
    1424             :      Copyright 28.10.2010 by Bochkanov Sergey
    1425             : *************************************************************************/
    1426           0 : void pearsoncorrm2(const real_2d_array &x, const real_2d_array &y, const ae_int_t n, const ae_int_t m1, const ae_int_t m2, real_2d_array &c, const xparams _xparams)
    1427             : {
    1428             :     jmp_buf _break_jump;
    1429             :     alglib_impl::ae_state _alglib_env_state;
    1430           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1431           0 :     if( setjmp(_break_jump) )
    1432             :     {
    1433             : #if !defined(AE_NO_EXCEPTIONS)
    1434           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1435             : #else
    1436             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1437             :         return;
    1438             : #endif
    1439             :     }
    1440           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1441           0 :     if( _xparams.flags!=0x0 )
    1442           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1443           0 :     alglib_impl::pearsoncorrm2(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), const_cast<alglib_impl::ae_matrix*>(y.c_ptr()), n, m1, m2, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1444           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1445           0 :     return;
    1446             : }
    1447             : 
    1448             : /*************************************************************************
    1449             : Pearson product-moment cross-correlation matrix
    1450             : 
    1451             :   ! COMMERCIAL EDITION OF ALGLIB:
    1452             :   !
    1453             :   ! Commercial Edition of ALGLIB includes following important improvements
    1454             :   ! of this function:
    1455             :   ! * high-performance native backend with same C# interface (C# version)
    1456             :   ! * multithreading support (C++ and C# versions)
    1457             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1458             :   !   (C++ and C# versions, x86/x64 platform)
    1459             :   !
    1460             :   ! We recommend you to read 'Working with commercial version' section  of
    1461             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1462             :   ! related features provided by commercial edition of ALGLIB.
    1463             : 
    1464             : INPUT PARAMETERS:
    1465             :     X   -   array[N,M1], sample matrix:
    1466             :             * J-th column corresponds to J-th variable
    1467             :             * I-th row corresponds to I-th observation
    1468             :     Y   -   array[N,M2], sample matrix:
    1469             :             * J-th column corresponds to J-th variable
    1470             :             * I-th row corresponds to I-th observation
    1471             :     N   -   N>=0, number of observations:
    1472             :             * if given, only leading N rows of X/Y are used
    1473             :             * if not given, automatically determined from input sizes
    1474             :     M1  -   M1>0, number of variables in X:
    1475             :             * if given, only leading M1 columns of X are used
    1476             :             * if not given, automatically determined from input size
    1477             :     M2  -   M2>0, number of variables in Y:
    1478             :             * if given, only leading M1 columns of X are used
    1479             :             * if not given, automatically determined from input size
    1480             : 
    1481             : OUTPUT PARAMETERS:
    1482             :     C   -   array[M1,M2], cross-correlation matrix (zero if N=0 or N=1)
    1483             : 
    1484             :   -- ALGLIB --
    1485             :      Copyright 28.10.2010 by Bochkanov Sergey
    1486             : *************************************************************************/
    1487             : #if !defined(AE_NO_EXCEPTIONS)
    1488           0 : void pearsoncorrm2(const real_2d_array &x, const real_2d_array &y, real_2d_array &c, const xparams _xparams)
    1489             : {
    1490             :     jmp_buf _break_jump;
    1491             :     alglib_impl::ae_state _alglib_env_state;    
    1492             :     ae_int_t n;
    1493             :     ae_int_t m1;
    1494             :     ae_int_t m2;
    1495           0 :     if( (x.rows()!=y.rows()))
    1496           0 :         _ALGLIB_CPP_EXCEPTION("Error while calling 'pearsoncorrm2': looks like one of arguments has wrong size");
    1497           0 :     n = x.rows();
    1498           0 :     m1 = x.cols();
    1499           0 :     m2 = y.cols();
    1500           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1501           0 :     if( setjmp(_break_jump) )
    1502           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1503           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1504           0 :     if( _xparams.flags!=0x0 )
    1505           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1506           0 :     alglib_impl::pearsoncorrm2(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), const_cast<alglib_impl::ae_matrix*>(y.c_ptr()), n, m1, m2, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1507             : 
    1508           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1509           0 :     return;
    1510             : }
    1511             : #endif
    1512             : 
    1513             : /*************************************************************************
    1514             : Spearman's rank cross-correlation matrix
    1515             : 
    1516             :   ! COMMERCIAL EDITION OF ALGLIB:
    1517             :   !
    1518             :   ! Commercial Edition of ALGLIB includes following important improvements
    1519             :   ! of this function:
    1520             :   ! * high-performance native backend with same C# interface (C# version)
    1521             :   ! * multithreading support (C++ and C# versions)
    1522             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1523             :   !   (C++ and C# versions, x86/x64 platform)
    1524             :   !
    1525             :   ! We recommend you to read 'Working with commercial version' section  of
    1526             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1527             :   ! related features provided by commercial edition of ALGLIB.
    1528             : 
    1529             : INPUT PARAMETERS:
    1530             :     X   -   array[N,M1], sample matrix:
    1531             :             * J-th column corresponds to J-th variable
    1532             :             * I-th row corresponds to I-th observation
    1533             :     Y   -   array[N,M2], sample matrix:
    1534             :             * J-th column corresponds to J-th variable
    1535             :             * I-th row corresponds to I-th observation
    1536             :     N   -   N>=0, number of observations:
    1537             :             * if given, only leading N rows of X/Y are used
    1538             :             * if not given, automatically determined from input sizes
    1539             :     M1  -   M1>0, number of variables in X:
    1540             :             * if given, only leading M1 columns of X are used
    1541             :             * if not given, automatically determined from input size
    1542             :     M2  -   M2>0, number of variables in Y:
    1543             :             * if given, only leading M1 columns of X are used
    1544             :             * if not given, automatically determined from input size
    1545             : 
    1546             : OUTPUT PARAMETERS:
    1547             :     C   -   array[M1,M2], cross-correlation matrix (zero if N=0 or N=1)
    1548             : 
    1549             :   -- ALGLIB --
    1550             :      Copyright 28.10.2010 by Bochkanov Sergey
    1551             : *************************************************************************/
    1552           0 : void spearmancorrm2(const real_2d_array &x, const real_2d_array &y, const ae_int_t n, const ae_int_t m1, const ae_int_t m2, real_2d_array &c, const xparams _xparams)
    1553             : {
    1554             :     jmp_buf _break_jump;
    1555             :     alglib_impl::ae_state _alglib_env_state;
    1556           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1557           0 :     if( setjmp(_break_jump) )
    1558             :     {
    1559             : #if !defined(AE_NO_EXCEPTIONS)
    1560           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1561             : #else
    1562             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1563             :         return;
    1564             : #endif
    1565             :     }
    1566           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1567           0 :     if( _xparams.flags!=0x0 )
    1568           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1569           0 :     alglib_impl::spearmancorrm2(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), const_cast<alglib_impl::ae_matrix*>(y.c_ptr()), n, m1, m2, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1570           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1571           0 :     return;
    1572             : }
    1573             : 
    1574             : /*************************************************************************
    1575             : Spearman's rank cross-correlation matrix
    1576             : 
    1577             :   ! COMMERCIAL EDITION OF ALGLIB:
    1578             :   !
    1579             :   ! Commercial Edition of ALGLIB includes following important improvements
    1580             :   ! of this function:
    1581             :   ! * high-performance native backend with same C# interface (C# version)
    1582             :   ! * multithreading support (C++ and C# versions)
    1583             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    1584             :   !   (C++ and C# versions, x86/x64 platform)
    1585             :   !
    1586             :   ! We recommend you to read 'Working with commercial version' section  of
    1587             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1588             :   ! related features provided by commercial edition of ALGLIB.
    1589             : 
    1590             : INPUT PARAMETERS:
    1591             :     X   -   array[N,M1], sample matrix:
    1592             :             * J-th column corresponds to J-th variable
    1593             :             * I-th row corresponds to I-th observation
    1594             :     Y   -   array[N,M2], sample matrix:
    1595             :             * J-th column corresponds to J-th variable
    1596             :             * I-th row corresponds to I-th observation
    1597             :     N   -   N>=0, number of observations:
    1598             :             * if given, only leading N rows of X/Y are used
    1599             :             * if not given, automatically determined from input sizes
    1600             :     M1  -   M1>0, number of variables in X:
    1601             :             * if given, only leading M1 columns of X are used
    1602             :             * if not given, automatically determined from input size
    1603             :     M2  -   M2>0, number of variables in Y:
    1604             :             * if given, only leading M1 columns of X are used
    1605             :             * if not given, automatically determined from input size
    1606             : 
    1607             : OUTPUT PARAMETERS:
    1608             :     C   -   array[M1,M2], cross-correlation matrix (zero if N=0 or N=1)
    1609             : 
    1610             :   -- ALGLIB --
    1611             :      Copyright 28.10.2010 by Bochkanov Sergey
    1612             : *************************************************************************/
    1613             : #if !defined(AE_NO_EXCEPTIONS)
    1614           0 : void spearmancorrm2(const real_2d_array &x, const real_2d_array &y, real_2d_array &c, const xparams _xparams)
    1615             : {
    1616             :     jmp_buf _break_jump;
    1617             :     alglib_impl::ae_state _alglib_env_state;    
    1618             :     ae_int_t n;
    1619             :     ae_int_t m1;
    1620             :     ae_int_t m2;
    1621           0 :     if( (x.rows()!=y.rows()))
    1622           0 :         _ALGLIB_CPP_EXCEPTION("Error while calling 'spearmancorrm2': looks like one of arguments has wrong size");
    1623           0 :     n = x.rows();
    1624           0 :     m1 = x.cols();
    1625           0 :     m2 = y.cols();
    1626           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1627           0 :     if( setjmp(_break_jump) )
    1628           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1629           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1630           0 :     if( _xparams.flags!=0x0 )
    1631           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1632           0 :     alglib_impl::spearmancorrm2(const_cast<alglib_impl::ae_matrix*>(x.c_ptr()), const_cast<alglib_impl::ae_matrix*>(y.c_ptr()), n, m1, m2, const_cast<alglib_impl::ae_matrix*>(c.c_ptr()), &_alglib_env_state);
    1633             : 
    1634           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1635           0 :     return;
    1636             : }
    1637             : #endif
    1638             : 
    1639             : /*************************************************************************
    1640             : This function replaces data in XY by their ranks:
    1641             : * XY is processed row-by-row
    1642             : * rows are processed separately
    1643             : * tied data are correctly handled (tied ranks are calculated)
    1644             : * ranking starts from 0, ends at NFeatures-1
    1645             : * sum of within-row values is equal to (NFeatures-1)*NFeatures/2
    1646             : 
    1647             :   ! COMMERCIAL EDITION OF ALGLIB:
    1648             :   !
    1649             :   ! Commercial Edition of ALGLIB includes following important improvements
    1650             :   ! of this function:
    1651             :   ! * high-performance native backend with same C# interface (C# version)
    1652             :   ! * multithreading support (C++ and C# versions)
    1653             :   !
    1654             :   ! We recommend you to read 'Working with commercial version' section  of
    1655             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1656             :   ! related features provided by commercial edition of ALGLIB.
    1657             : 
    1658             : INPUT PARAMETERS:
    1659             :     XY      -   array[NPoints,NFeatures], dataset
    1660             :     NPoints -   number of points
    1661             :     NFeatures-  number of features
    1662             : 
    1663             : OUTPUT PARAMETERS:
    1664             :     XY      -   data are replaced by their within-row ranks;
    1665             :                 ranking starts from 0, ends at NFeatures-1
    1666             : 
    1667             :   -- ALGLIB --
    1668             :      Copyright 18.04.2013 by Bochkanov Sergey
    1669             : *************************************************************************/
    1670           0 : void rankdata(const real_2d_array &xy, const ae_int_t npoints, const ae_int_t nfeatures, const xparams _xparams)
    1671             : {
    1672             :     jmp_buf _break_jump;
    1673             :     alglib_impl::ae_state _alglib_env_state;
    1674           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1675           0 :     if( setjmp(_break_jump) )
    1676             :     {
    1677             : #if !defined(AE_NO_EXCEPTIONS)
    1678           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1679             : #else
    1680             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1681             :         return;
    1682             : #endif
    1683             :     }
    1684           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1685           0 :     if( _xparams.flags!=0x0 )
    1686           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1687           0 :     alglib_impl::rankdata(const_cast<alglib_impl::ae_matrix*>(xy.c_ptr()), npoints, nfeatures, &_alglib_env_state);
    1688           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1689           0 :     return;
    1690             : }
    1691             : 
    1692             : /*************************************************************************
    1693             : This function replaces data in XY by their ranks:
    1694             : * XY is processed row-by-row
    1695             : * rows are processed separately
    1696             : * tied data are correctly handled (tied ranks are calculated)
    1697             : * ranking starts from 0, ends at NFeatures-1
    1698             : * sum of within-row values is equal to (NFeatures-1)*NFeatures/2
    1699             : 
    1700             :   ! COMMERCIAL EDITION OF ALGLIB:
    1701             :   !
    1702             :   ! Commercial Edition of ALGLIB includes following important improvements
    1703             :   ! of this function:
    1704             :   ! * high-performance native backend with same C# interface (C# version)
    1705             :   ! * multithreading support (C++ and C# versions)
    1706             :   !
    1707             :   ! We recommend you to read 'Working with commercial version' section  of
    1708             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1709             :   ! related features provided by commercial edition of ALGLIB.
    1710             : 
    1711             : INPUT PARAMETERS:
    1712             :     XY      -   array[NPoints,NFeatures], dataset
    1713             :     NPoints -   number of points
    1714             :     NFeatures-  number of features
    1715             : 
    1716             : OUTPUT PARAMETERS:
    1717             :     XY      -   data are replaced by their within-row ranks;
    1718             :                 ranking starts from 0, ends at NFeatures-1
    1719             : 
    1720             :   -- ALGLIB --
    1721             :      Copyright 18.04.2013 by Bochkanov Sergey
    1722             : *************************************************************************/
    1723             : #if !defined(AE_NO_EXCEPTIONS)
    1724           0 : void rankdata(real_2d_array &xy, const xparams _xparams)
    1725             : {
    1726             :     jmp_buf _break_jump;
    1727             :     alglib_impl::ae_state _alglib_env_state;    
    1728             :     ae_int_t npoints;
    1729             :     ae_int_t nfeatures;
    1730             : 
    1731           0 :     npoints = xy.rows();
    1732           0 :     nfeatures = xy.cols();
    1733           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1734           0 :     if( setjmp(_break_jump) )
    1735           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1736           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1737           0 :     if( _xparams.flags!=0x0 )
    1738           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1739           0 :     alglib_impl::rankdata(const_cast<alglib_impl::ae_matrix*>(xy.c_ptr()), npoints, nfeatures, &_alglib_env_state);
    1740             : 
    1741           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1742           0 :     return;
    1743             : }
    1744             : #endif
    1745             : 
    1746             : /*************************************************************************
    1747             : This function replaces data in XY by their CENTERED ranks:
    1748             : * XY is processed row-by-row
    1749             : * rows are processed separately
    1750             : * tied data are correctly handled (tied ranks are calculated)
    1751             : * centered ranks are just usual ranks, but centered in such way  that  sum
    1752             :   of within-row values is equal to 0.0.
    1753             : * centering is performed by subtracting mean from each row, i.e it changes
    1754             :   mean value, but does NOT change higher moments
    1755             : 
    1756             :   ! COMMERCIAL EDITION OF ALGLIB:
    1757             :   !
    1758             :   ! Commercial Edition of ALGLIB includes following important improvements
    1759             :   ! of this function:
    1760             :   ! * high-performance native backend with same C# interface (C# version)
    1761             :   ! * multithreading support (C++ and C# versions)
    1762             :   !
    1763             :   ! We recommend you to read 'Working with commercial version' section  of
    1764             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1765             :   ! related features provided by commercial edition of ALGLIB.
    1766             : 
    1767             : INPUT PARAMETERS:
    1768             :     XY      -   array[NPoints,NFeatures], dataset
    1769             :     NPoints -   number of points
    1770             :     NFeatures-  number of features
    1771             : 
    1772             : OUTPUT PARAMETERS:
    1773             :     XY      -   data are replaced by their within-row ranks;
    1774             :                 ranking starts from 0, ends at NFeatures-1
    1775             : 
    1776             :   -- ALGLIB --
    1777             :      Copyright 18.04.2013 by Bochkanov Sergey
    1778             : *************************************************************************/
    1779           0 : void rankdatacentered(const real_2d_array &xy, const ae_int_t npoints, const ae_int_t nfeatures, const xparams _xparams)
    1780             : {
    1781             :     jmp_buf _break_jump;
    1782             :     alglib_impl::ae_state _alglib_env_state;
    1783           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1784           0 :     if( setjmp(_break_jump) )
    1785             :     {
    1786             : #if !defined(AE_NO_EXCEPTIONS)
    1787           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1788             : #else
    1789             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1790             :         return;
    1791             : #endif
    1792             :     }
    1793           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1794           0 :     if( _xparams.flags!=0x0 )
    1795           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1796           0 :     alglib_impl::rankdatacentered(const_cast<alglib_impl::ae_matrix*>(xy.c_ptr()), npoints, nfeatures, &_alglib_env_state);
    1797           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1798           0 :     return;
    1799             : }
    1800             : 
    1801             : /*************************************************************************
    1802             : This function replaces data in XY by their CENTERED ranks:
    1803             : * XY is processed row-by-row
    1804             : * rows are processed separately
    1805             : * tied data are correctly handled (tied ranks are calculated)
    1806             : * centered ranks are just usual ranks, but centered in such way  that  sum
    1807             :   of within-row values is equal to 0.0.
    1808             : * centering is performed by subtracting mean from each row, i.e it changes
    1809             :   mean value, but does NOT change higher moments
    1810             : 
    1811             :   ! COMMERCIAL EDITION OF ALGLIB:
    1812             :   !
    1813             :   ! Commercial Edition of ALGLIB includes following important improvements
    1814             :   ! of this function:
    1815             :   ! * high-performance native backend with same C# interface (C# version)
    1816             :   ! * multithreading support (C++ and C# versions)
    1817             :   !
    1818             :   ! We recommend you to read 'Working with commercial version' section  of
    1819             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    1820             :   ! related features provided by commercial edition of ALGLIB.
    1821             : 
    1822             : INPUT PARAMETERS:
    1823             :     XY      -   array[NPoints,NFeatures], dataset
    1824             :     NPoints -   number of points
    1825             :     NFeatures-  number of features
    1826             : 
    1827             : OUTPUT PARAMETERS:
    1828             :     XY      -   data are replaced by their within-row ranks;
    1829             :                 ranking starts from 0, ends at NFeatures-1
    1830             : 
    1831             :   -- ALGLIB --
    1832             :      Copyright 18.04.2013 by Bochkanov Sergey
    1833             : *************************************************************************/
    1834             : #if !defined(AE_NO_EXCEPTIONS)
    1835           0 : void rankdatacentered(real_2d_array &xy, const xparams _xparams)
    1836             : {
    1837             :     jmp_buf _break_jump;
    1838             :     alglib_impl::ae_state _alglib_env_state;    
    1839             :     ae_int_t npoints;
    1840             :     ae_int_t nfeatures;
    1841             : 
    1842           0 :     npoints = xy.rows();
    1843           0 :     nfeatures = xy.cols();
    1844           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1845           0 :     if( setjmp(_break_jump) )
    1846           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1847           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1848           0 :     if( _xparams.flags!=0x0 )
    1849           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1850           0 :     alglib_impl::rankdatacentered(const_cast<alglib_impl::ae_matrix*>(xy.c_ptr()), npoints, nfeatures, &_alglib_env_state);
    1851             : 
    1852           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1853           0 :     return;
    1854             : }
    1855             : #endif
    1856             : 
    1857             : /*************************************************************************
    1858             : Obsolete function, we recommend to use PearsonCorr2().
    1859             : 
    1860             :   -- ALGLIB --
    1861             :      Copyright 09.04.2007 by Bochkanov Sergey
    1862             : *************************************************************************/
    1863           0 : double pearsoncorrelation(const real_1d_array &x, const real_1d_array &y, const ae_int_t n, const xparams _xparams)
    1864             : {
    1865             :     jmp_buf _break_jump;
    1866             :     alglib_impl::ae_state _alglib_env_state;
    1867           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1868           0 :     if( setjmp(_break_jump) )
    1869             :     {
    1870             : #if !defined(AE_NO_EXCEPTIONS)
    1871           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1872             : #else
    1873             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1874             :         return 0;
    1875             : #endif
    1876             :     }
    1877           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1878           0 :     if( _xparams.flags!=0x0 )
    1879           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1880           0 :     double result = alglib_impl::pearsoncorrelation(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), const_cast<alglib_impl::ae_vector*>(y.c_ptr()), n, &_alglib_env_state);
    1881           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1882           0 :     return *(reinterpret_cast<double*>(&result));
    1883             : }
    1884             : 
    1885             : /*************************************************************************
    1886             : Obsolete function, we recommend to use SpearmanCorr2().
    1887             : 
    1888             :     -- ALGLIB --
    1889             :     Copyright 09.04.2007 by Bochkanov Sergey
    1890             : *************************************************************************/
    1891           0 : double spearmanrankcorrelation(const real_1d_array &x, const real_1d_array &y, const ae_int_t n, const xparams _xparams)
    1892             : {
    1893             :     jmp_buf _break_jump;
    1894             :     alglib_impl::ae_state _alglib_env_state;
    1895           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1896           0 :     if( setjmp(_break_jump) )
    1897             :     {
    1898             : #if !defined(AE_NO_EXCEPTIONS)
    1899           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1900             : #else
    1901             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1902             :         return 0;
    1903             : #endif
    1904             :     }
    1905           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1906           0 :     if( _xparams.flags!=0x0 )
    1907           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1908           0 :     double result = alglib_impl::spearmanrankcorrelation(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), const_cast<alglib_impl::ae_vector*>(y.c_ptr()), n, &_alglib_env_state);
    1909           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1910           0 :     return *(reinterpret_cast<double*>(&result));
    1911             : }
    1912             : #endif
    1913             : 
    1914             : #if defined(AE_COMPILE_WSR) || !defined(AE_PARTIAL_BUILD)
    1915             : /*************************************************************************
    1916             : Wilcoxon signed-rank test
    1917             : 
    1918             : This test checks three hypotheses about the median  of  the  given sample.
    1919             : The following tests are performed:
    1920             :     * two-tailed test (null hypothesis - the median is equal to the  given
    1921             :       value)
    1922             :     * left-tailed test (null hypothesis - the median is  greater  than  or
    1923             :       equal to the given value)
    1924             :     * right-tailed test (null hypothesis  -  the  median  is  less than or
    1925             :       equal to the given value)
    1926             : 
    1927             : Requirements:
    1928             :     * the scale of measurement should be ordinal, interval or  ratio (i.e.
    1929             :       the test could not be applied to nominal variables).
    1930             :     * the distribution should be continuous and symmetric relative to  its
    1931             :       median.
    1932             :     * number of distinct values in the X array should be greater than 4
    1933             : 
    1934             : The test is non-parametric and doesn't require distribution X to be normal
    1935             : 
    1936             : Input parameters:
    1937             :     X       -   sample. Array whose index goes from 0 to N-1.
    1938             :     N       -   size of the sample.
    1939             :     Median  -   assumed median value.
    1940             : 
    1941             : Output parameters:
    1942             :     BothTails   -   p-value for two-tailed test.
    1943             :                     If BothTails is less than the given significance level
    1944             :                     the null hypothesis is rejected.
    1945             :     LeftTail    -   p-value for left-tailed test.
    1946             :                     If LeftTail is less than the given significance level,
    1947             :                     the null hypothesis is rejected.
    1948             :     RightTail   -   p-value for right-tailed test.
    1949             :                     If RightTail is less than the given significance level
    1950             :                     the null hypothesis is rejected.
    1951             : 
    1952             : To calculate p-values, special approximation is used. This method lets  us
    1953             : calculate p-values with two decimal places in interval [0.0001, 1].
    1954             : 
    1955             : "Two decimal places" does not sound very impressive, but in  practice  the
    1956             : relative error of less than 1% is enough to make a decision.
    1957             : 
    1958             : There is no approximation outside the [0.0001, 1] interval. Therefore,  if
    1959             : the significance level outlies this interval, the test returns 0.0001.
    1960             : 
    1961             :   -- ALGLIB --
    1962             :      Copyright 08.09.2006 by Bochkanov Sergey
    1963             : *************************************************************************/
    1964           0 : void wilcoxonsignedranktest(const real_1d_array &x, const ae_int_t n, const double e, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    1965             : {
    1966             :     jmp_buf _break_jump;
    1967             :     alglib_impl::ae_state _alglib_env_state;
    1968           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    1969           0 :     if( setjmp(_break_jump) )
    1970             :     {
    1971             : #if !defined(AE_NO_EXCEPTIONS)
    1972           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    1973             : #else
    1974             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    1975             :         return;
    1976             : #endif
    1977             :     }
    1978           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    1979           0 :     if( _xparams.flags!=0x0 )
    1980           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    1981           0 :     alglib_impl::wilcoxonsignedranktest(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, e, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    1982           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    1983           0 :     return;
    1984             : }
    1985             : #endif
    1986             : 
    1987             : #if defined(AE_COMPILE_STEST) || !defined(AE_PARTIAL_BUILD)
    1988             : /*************************************************************************
    1989             : Sign test
    1990             : 
    1991             : This test checks three hypotheses about the median of  the  given  sample.
    1992             : The following tests are performed:
    1993             :     * two-tailed test (null hypothesis - the median is equal to the  given
    1994             :       value)
    1995             :     * left-tailed test (null hypothesis - the median is  greater  than  or
    1996             :       equal to the given value)
    1997             :     * right-tailed test (null hypothesis - the  median  is  less  than  or
    1998             :       equal to the given value)
    1999             : 
    2000             : Requirements:
    2001             :     * the scale of measurement should be ordinal, interval or ratio  (i.e.
    2002             :       the test could not be applied to nominal variables).
    2003             : 
    2004             : The test is non-parametric and doesn't require distribution X to be normal
    2005             : 
    2006             : Input parameters:
    2007             :     X       -   sample. Array whose index goes from 0 to N-1.
    2008             :     N       -   size of the sample.
    2009             :     Median  -   assumed median value.
    2010             : 
    2011             : Output parameters:
    2012             :     BothTails   -   p-value for two-tailed test.
    2013             :                     If BothTails is less than the given significance level
    2014             :                     the null hypothesis is rejected.
    2015             :     LeftTail    -   p-value for left-tailed test.
    2016             :                     If LeftTail is less than the given significance level,
    2017             :                     the null hypothesis is rejected.
    2018             :     RightTail   -   p-value for right-tailed test.
    2019             :                     If RightTail is less than the given significance level
    2020             :                     the null hypothesis is rejected.
    2021             : 
    2022             : While   calculating   p-values   high-precision   binomial    distribution
    2023             : approximation is used, so significance levels have about 15 exact digits.
    2024             : 
    2025             :   -- ALGLIB --
    2026             :      Copyright 08.09.2006 by Bochkanov Sergey
    2027             : *************************************************************************/
    2028           0 : void onesamplesigntest(const real_1d_array &x, const ae_int_t n, const double median, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    2029             : {
    2030             :     jmp_buf _break_jump;
    2031             :     alglib_impl::ae_state _alglib_env_state;
    2032           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2033           0 :     if( setjmp(_break_jump) )
    2034             :     {
    2035             : #if !defined(AE_NO_EXCEPTIONS)
    2036           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2037             : #else
    2038             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2039             :         return;
    2040             : #endif
    2041             :     }
    2042           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2043           0 :     if( _xparams.flags!=0x0 )
    2044           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2045           0 :     alglib_impl::onesamplesigntest(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, median, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    2046           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2047           0 :     return;
    2048             : }
    2049             : #endif
    2050             : 
    2051             : #if defined(AE_COMPILE_CORRELATIONTESTS) || !defined(AE_PARTIAL_BUILD)
    2052             : /*************************************************************************
    2053             : Pearson's correlation coefficient significance test
    2054             : 
    2055             : This test checks hypotheses about whether X  and  Y  are  samples  of  two
    2056             : continuous  distributions  having  zero  correlation  or   whether   their
    2057             : correlation is non-zero.
    2058             : 
    2059             : The following tests are performed:
    2060             :     * two-tailed test (null hypothesis - X and Y have zero correlation)
    2061             :     * left-tailed test (null hypothesis - the correlation  coefficient  is
    2062             :       greater than or equal to 0)
    2063             :     * right-tailed test (null hypothesis - the correlation coefficient  is
    2064             :       less than or equal to 0).
    2065             : 
    2066             : Requirements:
    2067             :     * the number of elements in each sample is not less than 5
    2068             :     * normality of distributions of X and Y.
    2069             : 
    2070             : Input parameters:
    2071             :     R   -   Pearson's correlation coefficient for X and Y
    2072             :     N   -   number of elements in samples, N>=5.
    2073             : 
    2074             : Output parameters:
    2075             :     BothTails   -   p-value for two-tailed test.
    2076             :                     If BothTails is less than the given significance level
    2077             :                     the null hypothesis is rejected.
    2078             :     LeftTail    -   p-value for left-tailed test.
    2079             :                     If LeftTail is less than the given significance level,
    2080             :                     the null hypothesis is rejected.
    2081             :     RightTail   -   p-value for right-tailed test.
    2082             :                     If RightTail is less than the given significance level
    2083             :                     the null hypothesis is rejected.
    2084             : 
    2085             :   -- ALGLIB --
    2086             :      Copyright 09.04.2007 by Bochkanov Sergey
    2087             : *************************************************************************/
    2088           0 : void pearsoncorrelationsignificance(const double r, const ae_int_t n, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    2089             : {
    2090             :     jmp_buf _break_jump;
    2091             :     alglib_impl::ae_state _alglib_env_state;
    2092           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2093           0 :     if( setjmp(_break_jump) )
    2094             :     {
    2095             : #if !defined(AE_NO_EXCEPTIONS)
    2096           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2097             : #else
    2098             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2099             :         return;
    2100             : #endif
    2101             :     }
    2102           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2103           0 :     if( _xparams.flags!=0x0 )
    2104           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2105           0 :     alglib_impl::pearsoncorrelationsignificance(r, n, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    2106           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2107           0 :     return;
    2108             : }
    2109             : 
    2110             : /*************************************************************************
    2111             : Spearman's rank correlation coefficient significance test
    2112             : 
    2113             : This test checks hypotheses about whether X  and  Y  are  samples  of  two
    2114             : continuous  distributions  having  zero  correlation  or   whether   their
    2115             : correlation is non-zero.
    2116             : 
    2117             : The following tests are performed:
    2118             :     * two-tailed test (null hypothesis - X and Y have zero correlation)
    2119             :     * left-tailed test (null hypothesis - the correlation  coefficient  is
    2120             :       greater than or equal to 0)
    2121             :     * right-tailed test (null hypothesis - the correlation coefficient  is
    2122             :       less than or equal to 0).
    2123             : 
    2124             : Requirements:
    2125             :     * the number of elements in each sample is not less than 5.
    2126             : 
    2127             : The test is non-parametric and doesn't require distributions X and Y to be
    2128             : normal.
    2129             : 
    2130             : Input parameters:
    2131             :     R   -   Spearman's rank correlation coefficient for X and Y
    2132             :     N   -   number of elements in samples, N>=5.
    2133             : 
    2134             : Output parameters:
    2135             :     BothTails   -   p-value for two-tailed test.
    2136             :                     If BothTails is less than the given significance level
    2137             :                     the null hypothesis is rejected.
    2138             :     LeftTail    -   p-value for left-tailed test.
    2139             :                     If LeftTail is less than the given significance level,
    2140             :                     the null hypothesis is rejected.
    2141             :     RightTail   -   p-value for right-tailed test.
    2142             :                     If RightTail is less than the given significance level
    2143             :                     the null hypothesis is rejected.
    2144             : 
    2145             :   -- ALGLIB --
    2146             :      Copyright 09.04.2007 by Bochkanov Sergey
    2147             : *************************************************************************/
    2148           0 : void spearmanrankcorrelationsignificance(const double r, const ae_int_t n, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    2149             : {
    2150             :     jmp_buf _break_jump;
    2151             :     alglib_impl::ae_state _alglib_env_state;
    2152           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2153           0 :     if( setjmp(_break_jump) )
    2154             :     {
    2155             : #if !defined(AE_NO_EXCEPTIONS)
    2156           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2157             : #else
    2158             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2159             :         return;
    2160             : #endif
    2161             :     }
    2162           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2163           0 :     if( _xparams.flags!=0x0 )
    2164           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2165           0 :     alglib_impl::spearmanrankcorrelationsignificance(r, n, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    2166           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2167           0 :     return;
    2168             : }
    2169             : #endif
    2170             : 
    2171             : #if defined(AE_COMPILE_STUDENTTTESTS) || !defined(AE_PARTIAL_BUILD)
    2172             : /*************************************************************************
    2173             : One-sample t-test
    2174             : 
    2175             : This test checks three hypotheses about the mean of the given sample.  The
    2176             : following tests are performed:
    2177             :     * two-tailed test (null hypothesis - the mean is equal  to  the  given
    2178             :       value)
    2179             :     * left-tailed test (null hypothesis - the  mean  is  greater  than  or
    2180             :       equal to the given value)
    2181             :     * right-tailed test (null hypothesis - the mean is less than or  equal
    2182             :       to the given value).
    2183             : 
    2184             : The test is based on the assumption that  a  given  sample  has  a  normal
    2185             : distribution and  an  unknown  dispersion.  If  the  distribution  sharply
    2186             : differs from normal, the test will work incorrectly.
    2187             : 
    2188             : INPUT PARAMETERS:
    2189             :     X       -   sample. Array whose index goes from 0 to N-1.
    2190             :     N       -   size of sample, N>=0
    2191             :     Mean    -   assumed value of the mean.
    2192             : 
    2193             : OUTPUT PARAMETERS:
    2194             :     BothTails   -   p-value for two-tailed test.
    2195             :                     If BothTails is less than the given significance level
    2196             :                     the null hypothesis is rejected.
    2197             :     LeftTail    -   p-value for left-tailed test.
    2198             :                     If LeftTail is less than the given significance level,
    2199             :                     the null hypothesis is rejected.
    2200             :     RightTail   -   p-value for right-tailed test.
    2201             :                     If RightTail is less than the given significance level
    2202             :                     the null hypothesis is rejected.
    2203             : 
    2204             : NOTE: this function correctly handles degenerate cases:
    2205             :       * when N=0, all p-values are set to 1.0
    2206             :       * when variance of X[] is exactly zero, p-values are set
    2207             :         to 1.0 or 0.0, depending on difference between sample mean and
    2208             :         value of mean being tested.
    2209             : 
    2210             : 
    2211             :   -- ALGLIB --
    2212             :      Copyright 08.09.2006 by Bochkanov Sergey
    2213             : *************************************************************************/
    2214           0 : void studentttest1(const real_1d_array &x, const ae_int_t n, const double mean, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    2215             : {
    2216             :     jmp_buf _break_jump;
    2217             :     alglib_impl::ae_state _alglib_env_state;
    2218           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2219           0 :     if( setjmp(_break_jump) )
    2220             :     {
    2221             : #if !defined(AE_NO_EXCEPTIONS)
    2222           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2223             : #else
    2224             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2225             :         return;
    2226             : #endif
    2227             :     }
    2228           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2229           0 :     if( _xparams.flags!=0x0 )
    2230           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2231           0 :     alglib_impl::studentttest1(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, mean, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    2232           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2233           0 :     return;
    2234             : }
    2235             : 
    2236             : /*************************************************************************
    2237             : Two-sample pooled test
    2238             : 
    2239             : This test checks three hypotheses about the mean of the given samples. The
    2240             : following tests are performed:
    2241             :     * two-tailed test (null hypothesis - the means are equal)
    2242             :     * left-tailed test (null hypothesis - the mean of the first sample  is
    2243             :       greater than or equal to the mean of the second sample)
    2244             :     * right-tailed test (null hypothesis - the mean of the first sample is
    2245             :       less than or equal to the mean of the second sample).
    2246             : 
    2247             : Test is based on the following assumptions:
    2248             :     * given samples have normal distributions
    2249             :     * dispersions are equal
    2250             :     * samples are independent.
    2251             : 
    2252             : Input parameters:
    2253             :     X       -   sample 1. Array whose index goes from 0 to N-1.
    2254             :     N       -   size of sample.
    2255             :     Y       -   sample 2. Array whose index goes from 0 to M-1.
    2256             :     M       -   size of sample.
    2257             : 
    2258             : Output parameters:
    2259             :     BothTails   -   p-value for two-tailed test.
    2260             :                     If BothTails is less than the given significance level
    2261             :                     the null hypothesis is rejected.
    2262             :     LeftTail    -   p-value for left-tailed test.
    2263             :                     If LeftTail is less than the given significance level,
    2264             :                     the null hypothesis is rejected.
    2265             :     RightTail   -   p-value for right-tailed test.
    2266             :                     If RightTail is less than the given significance level
    2267             :                     the null hypothesis is rejected.
    2268             : 
    2269             : NOTE: this function correctly handles degenerate cases:
    2270             :       * when N=0 or M=0, all p-values are set to 1.0
    2271             :       * when both samples has exactly zero variance, p-values are set
    2272             :         to 1.0 or 0.0, depending on difference between means.
    2273             : 
    2274             :   -- ALGLIB --
    2275             :      Copyright 18.09.2006 by Bochkanov Sergey
    2276             : *************************************************************************/
    2277           0 : void studentttest2(const real_1d_array &x, const ae_int_t n, const real_1d_array &y, const ae_int_t m, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    2278             : {
    2279             :     jmp_buf _break_jump;
    2280             :     alglib_impl::ae_state _alglib_env_state;
    2281           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2282           0 :     if( setjmp(_break_jump) )
    2283             :     {
    2284             : #if !defined(AE_NO_EXCEPTIONS)
    2285           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2286             : #else
    2287             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2288             :         return;
    2289             : #endif
    2290             :     }
    2291           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2292           0 :     if( _xparams.flags!=0x0 )
    2293           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2294           0 :     alglib_impl::studentttest2(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, const_cast<alglib_impl::ae_vector*>(y.c_ptr()), m, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    2295           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2296           0 :     return;
    2297             : }
    2298             : 
    2299             : /*************************************************************************
    2300             : Two-sample unpooled test
    2301             : 
    2302             : This test checks three hypotheses about the mean of the given samples. The
    2303             : following tests are performed:
    2304             :     * two-tailed test (null hypothesis - the means are equal)
    2305             :     * left-tailed test (null hypothesis - the mean of the first sample  is
    2306             :       greater than or equal to the mean of the second sample)
    2307             :     * right-tailed test (null hypothesis - the mean of the first sample is
    2308             :       less than or equal to the mean of the second sample).
    2309             : 
    2310             : Test is based on the following assumptions:
    2311             :     * given samples have normal distributions
    2312             :     * samples are independent.
    2313             : Equality of variances is NOT required.
    2314             : 
    2315             : Input parameters:
    2316             :     X - sample 1. Array whose index goes from 0 to N-1.
    2317             :     N - size of the sample.
    2318             :     Y - sample 2. Array whose index goes from 0 to M-1.
    2319             :     M - size of the sample.
    2320             : 
    2321             : Output parameters:
    2322             :     BothTails   -   p-value for two-tailed test.
    2323             :                     If BothTails is less than the given significance level
    2324             :                     the null hypothesis is rejected.
    2325             :     LeftTail    -   p-value for left-tailed test.
    2326             :                     If LeftTail is less than the given significance level,
    2327             :                     the null hypothesis is rejected.
    2328             :     RightTail   -   p-value for right-tailed test.
    2329             :                     If RightTail is less than the given significance level
    2330             :                     the null hypothesis is rejected.
    2331             : 
    2332             : NOTE: this function correctly handles degenerate cases:
    2333             :       * when N=0 or M=0, all p-values are set to 1.0
    2334             :       * when both samples has zero variance, p-values are set
    2335             :         to 1.0 or 0.0, depending on difference between means.
    2336             :       * when only one sample has zero variance, test reduces to 1-sample
    2337             :         version.
    2338             : 
    2339             :   -- ALGLIB --
    2340             :      Copyright 18.09.2006 by Bochkanov Sergey
    2341             : *************************************************************************/
    2342           0 : void unequalvariancettest(const real_1d_array &x, const ae_int_t n, const real_1d_array &y, const ae_int_t m, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    2343             : {
    2344             :     jmp_buf _break_jump;
    2345             :     alglib_impl::ae_state _alglib_env_state;
    2346           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2347           0 :     if( setjmp(_break_jump) )
    2348             :     {
    2349             : #if !defined(AE_NO_EXCEPTIONS)
    2350           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2351             : #else
    2352             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2353             :         return;
    2354             : #endif
    2355             :     }
    2356           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2357           0 :     if( _xparams.flags!=0x0 )
    2358           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2359           0 :     alglib_impl::unequalvariancettest(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, const_cast<alglib_impl::ae_vector*>(y.c_ptr()), m, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    2360           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2361           0 :     return;
    2362             : }
    2363             : #endif
    2364             : 
    2365             : #if defined(AE_COMPILE_MANNWHITNEYU) || !defined(AE_PARTIAL_BUILD)
    2366             : /*************************************************************************
    2367             : Mann-Whitney U-test
    2368             : 
    2369             : This test checks hypotheses about whether X  and  Y  are  samples  of  two
    2370             : continuous distributions of the same shape  and  same  median  or  whether
    2371             : their medians are different.
    2372             : 
    2373             : The following tests are performed:
    2374             :     * two-tailed test (null hypothesis - the medians are equal)
    2375             :     * left-tailed test (null hypothesis - the median of the  first  sample
    2376             :       is greater than or equal to the median of the second sample)
    2377             :     * right-tailed test (null hypothesis - the median of the first  sample
    2378             :       is less than or equal to the median of the second sample).
    2379             : 
    2380             : Requirements:
    2381             :     * the samples are independent
    2382             :     * X and Y are continuous distributions (or discrete distributions well-
    2383             :       approximating continuous distributions)
    2384             :     * distributions of X and Y have the  same  shape.  The  only  possible
    2385             :       difference is their position (i.e. the value of the median)
    2386             :     * the number of elements in each sample is not less than 5
    2387             :     * the scale of measurement should be ordinal, interval or ratio  (i.e.
    2388             :       the test could not be applied to nominal variables).
    2389             : 
    2390             : The test is non-parametric and doesn't require distributions to be normal.
    2391             : 
    2392             : Input parameters:
    2393             :     X   -   sample 1. Array whose index goes from 0 to N-1.
    2394             :     N   -   size of the sample. N>=5
    2395             :     Y   -   sample 2. Array whose index goes from 0 to M-1.
    2396             :     M   -   size of the sample. M>=5
    2397             : 
    2398             : Output parameters:
    2399             :     BothTails   -   p-value for two-tailed test.
    2400             :                     If BothTails is less than the given significance level
    2401             :                     the null hypothesis is rejected.
    2402             :     LeftTail    -   p-value for left-tailed test.
    2403             :                     If LeftTail is less than the given significance level,
    2404             :                     the null hypothesis is rejected.
    2405             :     RightTail   -   p-value for right-tailed test.
    2406             :                     If RightTail is less than the given significance level
    2407             :                     the null hypothesis is rejected.
    2408             : 
    2409             : To calculate p-values, special approximation is used. This method lets  us
    2410             : calculate p-values with satisfactory  accuracy  in  interval  [0.0001, 1].
    2411             : There is no approximation outside the [0.0001, 1] interval. Therefore,  if
    2412             : the significance level outlies this interval, the test returns 0.0001.
    2413             : 
    2414             : Relative precision of approximation of p-value:
    2415             : 
    2416             : N          M          Max.err.   Rms.err.
    2417             : 5..10      N..10      1.4e-02    6.0e-04
    2418             : 5..10      N..100     2.2e-02    5.3e-06
    2419             : 10..15     N..15      1.0e-02    3.2e-04
    2420             : 10..15     N..100     1.0e-02    2.2e-05
    2421             : 15..100    N..100     6.1e-03    2.7e-06
    2422             : 
    2423             : For N,M>100 accuracy checks weren't put into  practice,  but  taking  into
    2424             : account characteristics of asymptotic approximation used, precision should
    2425             : not be sharply different from the values for interval [5, 100].
    2426             : 
    2427             : NOTE: P-value approximation was  optimized  for  0.0001<=p<=0.2500.  Thus,
    2428             :       P's outside of this interval are enforced to these bounds. Say,  you
    2429             :       may quite often get P equal to exactly 0.25 or 0.0001.
    2430             : 
    2431             :   -- ALGLIB --
    2432             :      Copyright 09.04.2007 by Bochkanov Sergey
    2433             : *************************************************************************/
    2434           0 : void mannwhitneyutest(const real_1d_array &x, const ae_int_t n, const real_1d_array &y, const ae_int_t m, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    2435             : {
    2436             :     jmp_buf _break_jump;
    2437             :     alglib_impl::ae_state _alglib_env_state;
    2438           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2439           0 :     if( setjmp(_break_jump) )
    2440             :     {
    2441             : #if !defined(AE_NO_EXCEPTIONS)
    2442           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2443             : #else
    2444             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2445             :         return;
    2446             : #endif
    2447             :     }
    2448           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2449           0 :     if( _xparams.flags!=0x0 )
    2450           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2451           0 :     alglib_impl::mannwhitneyutest(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, const_cast<alglib_impl::ae_vector*>(y.c_ptr()), m, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    2452           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2453           0 :     return;
    2454             : }
    2455             : #endif
    2456             : 
    2457             : #if defined(AE_COMPILE_JARQUEBERA) || !defined(AE_PARTIAL_BUILD)
    2458             : /*************************************************************************
    2459             : Jarque-Bera test
    2460             : 
    2461             : This test checks hypotheses about the fact that a  given  sample  X  is  a
    2462             : sample of normal random variable.
    2463             : 
    2464             : Requirements:
    2465             :     * the number of elements in the sample is not less than 5.
    2466             : 
    2467             : Input parameters:
    2468             :     X   -   sample. Array whose index goes from 0 to N-1.
    2469             :     N   -   size of the sample. N>=5
    2470             : 
    2471             : Output parameters:
    2472             :     P           -   p-value for the test
    2473             : 
    2474             : Accuracy of the approximation used (5<=N<=1951):
    2475             : 
    2476             : p-value             relative error (5<=N<=1951)
    2477             : [1, 0.1]            < 1%
    2478             : [0.1, 0.01]         < 2%
    2479             : [0.01, 0.001]       < 6%
    2480             : [0.001, 0]          wasn't measured
    2481             : 
    2482             : For N>1951 accuracy wasn't measured but it shouldn't be sharply  different
    2483             : from table values.
    2484             : 
    2485             :   -- ALGLIB --
    2486             :      Copyright 09.04.2007 by Bochkanov Sergey
    2487             : *************************************************************************/
    2488           0 : void jarqueberatest(const real_1d_array &x, const ae_int_t n, double &p, const xparams _xparams)
    2489             : {
    2490             :     jmp_buf _break_jump;
    2491             :     alglib_impl::ae_state _alglib_env_state;
    2492           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2493           0 :     if( setjmp(_break_jump) )
    2494             :     {
    2495             : #if !defined(AE_NO_EXCEPTIONS)
    2496           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2497             : #else
    2498             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2499             :         return;
    2500             : #endif
    2501             :     }
    2502           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2503           0 :     if( _xparams.flags!=0x0 )
    2504           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2505           0 :     alglib_impl::jarqueberatest(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, &p, &_alglib_env_state);
    2506           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2507           0 :     return;
    2508             : }
    2509             : #endif
    2510             : 
    2511             : #if defined(AE_COMPILE_VARIANCETESTS) || !defined(AE_PARTIAL_BUILD)
    2512             : /*************************************************************************
    2513             : Two-sample F-test
    2514             : 
    2515             : This test checks three hypotheses about dispersions of the given  samples.
    2516             : The following tests are performed:
    2517             :     * two-tailed test (null hypothesis - the dispersions are equal)
    2518             :     * left-tailed test (null hypothesis  -  the  dispersion  of  the first
    2519             :       sample is greater than or equal to  the  dispersion  of  the  second
    2520             :       sample).
    2521             :     * right-tailed test (null hypothesis - the  dispersion  of  the  first
    2522             :       sample is less than or equal to the dispersion of the second sample)
    2523             : 
    2524             : The test is based on the following assumptions:
    2525             :     * the given samples have normal distributions
    2526             :     * the samples are independent.
    2527             : 
    2528             : Input parameters:
    2529             :     X   -   sample 1. Array whose index goes from 0 to N-1.
    2530             :     N   -   sample size.
    2531             :     Y   -   sample 2. Array whose index goes from 0 to M-1.
    2532             :     M   -   sample size.
    2533             : 
    2534             : Output parameters:
    2535             :     BothTails   -   p-value for two-tailed test.
    2536             :                     If BothTails is less than the given significance level
    2537             :                     the null hypothesis is rejected.
    2538             :     LeftTail    -   p-value for left-tailed test.
    2539             :                     If LeftTail is less than the given significance level,
    2540             :                     the null hypothesis is rejected.
    2541             :     RightTail   -   p-value for right-tailed test.
    2542             :                     If RightTail is less than the given significance level
    2543             :                     the null hypothesis is rejected.
    2544             : 
    2545             :   -- ALGLIB --
    2546             :      Copyright 19.09.2006 by Bochkanov Sergey
    2547             : *************************************************************************/
    2548           0 : void ftest(const real_1d_array &x, const ae_int_t n, const real_1d_array &y, const ae_int_t m, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    2549             : {
    2550             :     jmp_buf _break_jump;
    2551             :     alglib_impl::ae_state _alglib_env_state;
    2552           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2553           0 :     if( setjmp(_break_jump) )
    2554             :     {
    2555             : #if !defined(AE_NO_EXCEPTIONS)
    2556           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2557             : #else
    2558             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2559             :         return;
    2560             : #endif
    2561             :     }
    2562           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2563           0 :     if( _xparams.flags!=0x0 )
    2564           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2565           0 :     alglib_impl::ftest(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, const_cast<alglib_impl::ae_vector*>(y.c_ptr()), m, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    2566           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2567           0 :     return;
    2568             : }
    2569             : 
    2570             : /*************************************************************************
    2571             : One-sample chi-square test
    2572             : 
    2573             : This test checks three hypotheses about the dispersion of the given sample
    2574             : The following tests are performed:
    2575             :     * two-tailed test (null hypothesis - the dispersion equals  the  given
    2576             :       number)
    2577             :     * left-tailed test (null hypothesis - the dispersion is  greater  than
    2578             :       or equal to the given number)
    2579             :     * right-tailed test (null hypothesis  -  dispersion is  less  than  or
    2580             :       equal to the given number).
    2581             : 
    2582             : Test is based on the following assumptions:
    2583             :     * the given sample has a normal distribution.
    2584             : 
    2585             : Input parameters:
    2586             :     X           -   sample 1. Array whose index goes from 0 to N-1.
    2587             :     N           -   size of the sample.
    2588             :     Variance    -   dispersion value to compare with.
    2589             : 
    2590             : Output parameters:
    2591             :     BothTails   -   p-value for two-tailed test.
    2592             :                     If BothTails is less than the given significance level
    2593             :                     the null hypothesis is rejected.
    2594             :     LeftTail    -   p-value for left-tailed test.
    2595             :                     If LeftTail is less than the given significance level,
    2596             :                     the null hypothesis is rejected.
    2597             :     RightTail   -   p-value for right-tailed test.
    2598             :                     If RightTail is less than the given significance level
    2599             :                     the null hypothesis is rejected.
    2600             : 
    2601             :   -- ALGLIB --
    2602             :      Copyright 19.09.2006 by Bochkanov Sergey
    2603             : *************************************************************************/
    2604           0 : void onesamplevariancetest(const real_1d_array &x, const ae_int_t n, const double variance, double &bothtails, double &lefttail, double &righttail, const xparams _xparams)
    2605             : {
    2606             :     jmp_buf _break_jump;
    2607             :     alglib_impl::ae_state _alglib_env_state;
    2608           0 :     alglib_impl::ae_state_init(&_alglib_env_state);
    2609           0 :     if( setjmp(_break_jump) )
    2610             :     {
    2611             : #if !defined(AE_NO_EXCEPTIONS)
    2612           0 :         _ALGLIB_CPP_EXCEPTION(_alglib_env_state.error_msg);
    2613             : #else
    2614             :         _ALGLIB_SET_ERROR_FLAG(_alglib_env_state.error_msg);
    2615             :         return;
    2616             : #endif
    2617             :     }
    2618           0 :     ae_state_set_break_jump(&_alglib_env_state, &_break_jump);
    2619           0 :     if( _xparams.flags!=0x0 )
    2620           0 :         ae_state_set_flags(&_alglib_env_state, _xparams.flags);
    2621           0 :     alglib_impl::onesamplevariancetest(const_cast<alglib_impl::ae_vector*>(x.c_ptr()), n, variance, &bothtails, &lefttail, &righttail, &_alglib_env_state);
    2622           0 :     alglib_impl::ae_state_clear(&_alglib_env_state);
    2623           0 :     return;
    2624             : }
    2625             : #endif
    2626             : }
    2627             : 
    2628             : /////////////////////////////////////////////////////////////////////////
    2629             : //
    2630             : // THIS SECTION CONTAINS IMPLEMENTATION OF COMPUTATIONAL CORE
    2631             : //
    2632             : /////////////////////////////////////////////////////////////////////////
    2633             : namespace alglib_impl
    2634             : {
    2635             : #if defined(AE_COMPILE_BASESTAT) || !defined(AE_PARTIAL_BUILD)
    2636             : static void basestat_rankdatarec(/* Real    */ ae_matrix* xy,
    2637             :      ae_int_t i0,
    2638             :      ae_int_t i1,
    2639             :      ae_int_t nfeatures,
    2640             :      ae_bool iscentered,
    2641             :      ae_shared_pool* pool,
    2642             :      ae_int_t basecasecost,
    2643             :      ae_state *_state);
    2644             : ae_bool _trypexec_basestat_rankdatarec(/* Real    */ ae_matrix* xy,
    2645             :     ae_int_t i0,
    2646             :     ae_int_t i1,
    2647             :     ae_int_t nfeatures,
    2648             :     ae_bool iscentered,
    2649             :     ae_shared_pool* pool,
    2650             :     ae_int_t basecasecost, ae_state *_state);
    2651             : static void basestat_rankdatabasecase(/* Real    */ ae_matrix* xy,
    2652             :      ae_int_t i0,
    2653             :      ae_int_t i1,
    2654             :      ae_int_t nfeatures,
    2655             :      ae_bool iscentered,
    2656             :      apbuffers* buf0,
    2657             :      apbuffers* buf1,
    2658             :      ae_state *_state);
    2659             : ae_bool _trypexec_basestat_rankdatabasecase(/* Real    */ ae_matrix* xy,
    2660             :     ae_int_t i0,
    2661             :     ae_int_t i1,
    2662             :     ae_int_t nfeatures,
    2663             :     ae_bool iscentered,
    2664             :     apbuffers* buf0,
    2665             :     apbuffers* buf1, ae_state *_state);
    2666             : 
    2667             : 
    2668             : #endif
    2669             : #if defined(AE_COMPILE_WSR) || !defined(AE_PARTIAL_BUILD)
    2670             : static void wsr_wcheb(double x,
    2671             :      double c,
    2672             :      double* tj,
    2673             :      double* tj1,
    2674             :      double* r,
    2675             :      ae_state *_state);
    2676             : static double wsr_w5(double s, ae_state *_state);
    2677             : static double wsr_w6(double s, ae_state *_state);
    2678             : static double wsr_w7(double s, ae_state *_state);
    2679             : static double wsr_w8(double s, ae_state *_state);
    2680             : static double wsr_w9(double s, ae_state *_state);
    2681             : static double wsr_w10(double s, ae_state *_state);
    2682             : static double wsr_w11(double s, ae_state *_state);
    2683             : static double wsr_w12(double s, ae_state *_state);
    2684             : static double wsr_w13(double s, ae_state *_state);
    2685             : static double wsr_w14(double s, ae_state *_state);
    2686             : static double wsr_w15(double s, ae_state *_state);
    2687             : static double wsr_w16(double s, ae_state *_state);
    2688             : static double wsr_w17(double s, ae_state *_state);
    2689             : static double wsr_w18(double s, ae_state *_state);
    2690             : static double wsr_w19(double s, ae_state *_state);
    2691             : static double wsr_w20(double s, ae_state *_state);
    2692             : static double wsr_w21(double s, ae_state *_state);
    2693             : static double wsr_w22(double s, ae_state *_state);
    2694             : static double wsr_w23(double s, ae_state *_state);
    2695             : static double wsr_w24(double s, ae_state *_state);
    2696             : static double wsr_w25(double s, ae_state *_state);
    2697             : static double wsr_w26(double s, ae_state *_state);
    2698             : static double wsr_w27(double s, ae_state *_state);
    2699             : static double wsr_w28(double s, ae_state *_state);
    2700             : static double wsr_w29(double s, ae_state *_state);
    2701             : static double wsr_w30(double s, ae_state *_state);
    2702             : static double wsr_w40(double s, ae_state *_state);
    2703             : static double wsr_w60(double s, ae_state *_state);
    2704             : static double wsr_w120(double s, ae_state *_state);
    2705             : static double wsr_w200(double s, ae_state *_state);
    2706             : static double wsr_wsigma(double s, ae_int_t n, ae_state *_state);
    2707             : 
    2708             : 
    2709             : #endif
    2710             : #if defined(AE_COMPILE_STEST) || !defined(AE_PARTIAL_BUILD)
    2711             : 
    2712             : 
    2713             : #endif
    2714             : #if defined(AE_COMPILE_CORRELATIONTESTS) || !defined(AE_PARTIAL_BUILD)
    2715             : static double correlationtests_spearmantail5(double s, ae_state *_state);
    2716             : static double correlationtests_spearmantail6(double s, ae_state *_state);
    2717             : static double correlationtests_spearmantail7(double s, ae_state *_state);
    2718             : static double correlationtests_spearmantail8(double s, ae_state *_state);
    2719             : static double correlationtests_spearmantail9(double s, ae_state *_state);
    2720             : static double correlationtests_spearmantail(double t,
    2721             :      ae_int_t n,
    2722             :      ae_state *_state);
    2723             : 
    2724             : 
    2725             : #endif
    2726             : #if defined(AE_COMPILE_STUDENTTTESTS) || !defined(AE_PARTIAL_BUILD)
    2727             : 
    2728             : 
    2729             : #endif
    2730             : #if defined(AE_COMPILE_MANNWHITNEYU) || !defined(AE_PARTIAL_BUILD)
    2731             : static void mannwhitneyu_ucheb(double x,
    2732             :      double c,
    2733             :      double* tj,
    2734             :      double* tj1,
    2735             :      double* r,
    2736             :      ae_state *_state);
    2737             : static double mannwhitneyu_uninterpolate(double p1,
    2738             :      double p2,
    2739             :      double p3,
    2740             :      ae_int_t n,
    2741             :      ae_state *_state);
    2742             : static double mannwhitneyu_usigma000(ae_int_t n1,
    2743             :      ae_int_t n2,
    2744             :      ae_state *_state);
    2745             : static double mannwhitneyu_usigma075(ae_int_t n1,
    2746             :      ae_int_t n2,
    2747             :      ae_state *_state);
    2748             : static double mannwhitneyu_usigma150(ae_int_t n1,
    2749             :      ae_int_t n2,
    2750             :      ae_state *_state);
    2751             : static double mannwhitneyu_usigma225(ae_int_t n1,
    2752             :      ae_int_t n2,
    2753             :      ae_state *_state);
    2754             : static double mannwhitneyu_usigma300(ae_int_t n1,
    2755             :      ae_int_t n2,
    2756             :      ae_state *_state);
    2757             : static double mannwhitneyu_usigma333(ae_int_t n1,
    2758             :      ae_int_t n2,
    2759             :      ae_state *_state);
    2760             : static double mannwhitneyu_usigma367(ae_int_t n1,
    2761             :      ae_int_t n2,
    2762             :      ae_state *_state);
    2763             : static double mannwhitneyu_usigma400(ae_int_t n1,
    2764             :      ae_int_t n2,
    2765             :      ae_state *_state);
    2766             : static double mannwhitneyu_utbln5n5(double s, ae_state *_state);
    2767             : static double mannwhitneyu_utbln5n6(double s, ae_state *_state);
    2768             : static double mannwhitneyu_utbln5n7(double s, ae_state *_state);
    2769             : static double mannwhitneyu_utbln5n8(double s, ae_state *_state);
    2770             : static double mannwhitneyu_utbln5n9(double s, ae_state *_state);
    2771             : static double mannwhitneyu_utbln5n10(double s, ae_state *_state);
    2772             : static double mannwhitneyu_utbln5n11(double s, ae_state *_state);
    2773             : static double mannwhitneyu_utbln5n12(double s, ae_state *_state);
    2774             : static double mannwhitneyu_utbln5n13(double s, ae_state *_state);
    2775             : static double mannwhitneyu_utbln5n14(double s, ae_state *_state);
    2776             : static double mannwhitneyu_utbln5n15(double s, ae_state *_state);
    2777             : static double mannwhitneyu_utbln5n16(double s, ae_state *_state);
    2778             : static double mannwhitneyu_utbln5n17(double s, ae_state *_state);
    2779             : static double mannwhitneyu_utbln5n18(double s, ae_state *_state);
    2780             : static double mannwhitneyu_utbln5n19(double s, ae_state *_state);
    2781             : static double mannwhitneyu_utbln5n20(double s, ae_state *_state);
    2782             : static double mannwhitneyu_utbln5n21(double s, ae_state *_state);
    2783             : static double mannwhitneyu_utbln5n22(double s, ae_state *_state);
    2784             : static double mannwhitneyu_utbln5n23(double s, ae_state *_state);
    2785             : static double mannwhitneyu_utbln5n24(double s, ae_state *_state);
    2786             : static double mannwhitneyu_utbln5n25(double s, ae_state *_state);
    2787             : static double mannwhitneyu_utbln5n26(double s, ae_state *_state);
    2788             : static double mannwhitneyu_utbln5n27(double s, ae_state *_state);
    2789             : static double mannwhitneyu_utbln5n28(double s, ae_state *_state);
    2790             : static double mannwhitneyu_utbln5n29(double s, ae_state *_state);
    2791             : static double mannwhitneyu_utbln5n30(double s, ae_state *_state);
    2792             : static double mannwhitneyu_utbln5n100(double s, ae_state *_state);
    2793             : static double mannwhitneyu_utbln6n6(double s, ae_state *_state);
    2794             : static double mannwhitneyu_utbln6n7(double s, ae_state *_state);
    2795             : static double mannwhitneyu_utbln6n8(double s, ae_state *_state);
    2796             : static double mannwhitneyu_utbln6n9(double s, ae_state *_state);
    2797             : static double mannwhitneyu_utbln6n10(double s, ae_state *_state);
    2798             : static double mannwhitneyu_utbln6n11(double s, ae_state *_state);
    2799             : static double mannwhitneyu_utbln6n12(double s, ae_state *_state);
    2800             : static double mannwhitneyu_utbln6n13(double s, ae_state *_state);
    2801             : static double mannwhitneyu_utbln6n14(double s, ae_state *_state);
    2802             : static double mannwhitneyu_utbln6n15(double s, ae_state *_state);
    2803             : static double mannwhitneyu_utbln6n30(double s, ae_state *_state);
    2804             : static double mannwhitneyu_utbln6n100(double s, ae_state *_state);
    2805             : static double mannwhitneyu_utbln7n7(double s, ae_state *_state);
    2806             : static double mannwhitneyu_utbln7n8(double s, ae_state *_state);
    2807             : static double mannwhitneyu_utbln7n9(double s, ae_state *_state);
    2808             : static double mannwhitneyu_utbln7n10(double s, ae_state *_state);
    2809             : static double mannwhitneyu_utbln7n11(double s, ae_state *_state);
    2810             : static double mannwhitneyu_utbln7n12(double s, ae_state *_state);
    2811             : static double mannwhitneyu_utbln7n13(double s, ae_state *_state);
    2812             : static double mannwhitneyu_utbln7n14(double s, ae_state *_state);
    2813             : static double mannwhitneyu_utbln7n15(double s, ae_state *_state);
    2814             : static double mannwhitneyu_utbln7n30(double s, ae_state *_state);
    2815             : static double mannwhitneyu_utbln7n100(double s, ae_state *_state);
    2816             : static double mannwhitneyu_utbln8n8(double s, ae_state *_state);
    2817             : static double mannwhitneyu_utbln8n9(double s, ae_state *_state);
    2818             : static double mannwhitneyu_utbln8n10(double s, ae_state *_state);
    2819             : static double mannwhitneyu_utbln8n11(double s, ae_state *_state);
    2820             : static double mannwhitneyu_utbln8n12(double s, ae_state *_state);
    2821             : static double mannwhitneyu_utbln8n13(double s, ae_state *_state);
    2822             : static double mannwhitneyu_utbln8n14(double s, ae_state *_state);
    2823             : static double mannwhitneyu_utbln8n15(double s, ae_state *_state);
    2824             : static double mannwhitneyu_utbln8n30(double s, ae_state *_state);
    2825             : static double mannwhitneyu_utbln8n100(double s, ae_state *_state);
    2826             : static double mannwhitneyu_utbln9n9(double s, ae_state *_state);
    2827             : static double mannwhitneyu_utbln9n10(double s, ae_state *_state);
    2828             : static double mannwhitneyu_utbln9n11(double s, ae_state *_state);
    2829             : static double mannwhitneyu_utbln9n12(double s, ae_state *_state);
    2830             : static double mannwhitneyu_utbln9n13(double s, ae_state *_state);
    2831             : static double mannwhitneyu_utbln9n14(double s, ae_state *_state);
    2832             : static double mannwhitneyu_utbln9n15(double s, ae_state *_state);
    2833             : static double mannwhitneyu_utbln9n30(double s, ae_state *_state);
    2834             : static double mannwhitneyu_utbln9n100(double s, ae_state *_state);
    2835             : static double mannwhitneyu_utbln10n10(double s, ae_state *_state);
    2836             : static double mannwhitneyu_utbln10n11(double s, ae_state *_state);
    2837             : static double mannwhitneyu_utbln10n12(double s, ae_state *_state);
    2838             : static double mannwhitneyu_utbln10n13(double s, ae_state *_state);
    2839             : static double mannwhitneyu_utbln10n14(double s, ae_state *_state);
    2840             : static double mannwhitneyu_utbln10n15(double s, ae_state *_state);
    2841             : static double mannwhitneyu_utbln10n30(double s, ae_state *_state);
    2842             : static double mannwhitneyu_utbln10n100(double s, ae_state *_state);
    2843             : static double mannwhitneyu_utbln11n11(double s, ae_state *_state);
    2844             : static double mannwhitneyu_utbln11n12(double s, ae_state *_state);
    2845             : static double mannwhitneyu_utbln11n13(double s, ae_state *_state);
    2846             : static double mannwhitneyu_utbln11n14(double s, ae_state *_state);
    2847             : static double mannwhitneyu_utbln11n15(double s, ae_state *_state);
    2848             : static double mannwhitneyu_utbln11n30(double s, ae_state *_state);
    2849             : static double mannwhitneyu_utbln11n100(double s, ae_state *_state);
    2850             : static double mannwhitneyu_utbln12n12(double s, ae_state *_state);
    2851             : static double mannwhitneyu_utbln12n13(double s, ae_state *_state);
    2852             : static double mannwhitneyu_utbln12n14(double s, ae_state *_state);
    2853             : static double mannwhitneyu_utbln12n15(double s, ae_state *_state);
    2854             : static double mannwhitneyu_utbln12n30(double s, ae_state *_state);
    2855             : static double mannwhitneyu_utbln12n100(double s, ae_state *_state);
    2856             : static double mannwhitneyu_utbln13n13(double s, ae_state *_state);
    2857             : static double mannwhitneyu_utbln13n14(double s, ae_state *_state);
    2858             : static double mannwhitneyu_utbln13n15(double s, ae_state *_state);
    2859             : static double mannwhitneyu_utbln13n30(double s, ae_state *_state);
    2860             : static double mannwhitneyu_utbln13n100(double s, ae_state *_state);
    2861             : static double mannwhitneyu_utbln14n14(double s, ae_state *_state);
    2862             : static double mannwhitneyu_utbln14n15(double s, ae_state *_state);
    2863             : static double mannwhitneyu_utbln14n30(double s, ae_state *_state);
    2864             : static double mannwhitneyu_utbln14n100(double s, ae_state *_state);
    2865             : static double mannwhitneyu_usigma(double s,
    2866             :      ae_int_t n1,
    2867             :      ae_int_t n2,
    2868             :      ae_state *_state);
    2869             : 
    2870             : 
    2871             : #endif
    2872             : #if defined(AE_COMPILE_JARQUEBERA) || !defined(AE_PARTIAL_BUILD)
    2873             : static void jarquebera_jarqueberastatistic(/* Real    */ ae_vector* x,
    2874             :      ae_int_t n,
    2875             :      double* s,
    2876             :      ae_state *_state);
    2877             : static double jarquebera_jarqueberaapprox(ae_int_t n,
    2878             :      double s,
    2879             :      ae_state *_state);
    2880             : static double jarquebera_jbtbl5(double s, ae_state *_state);
    2881             : static double jarquebera_jbtbl6(double s, ae_state *_state);
    2882             : static double jarquebera_jbtbl7(double s, ae_state *_state);
    2883             : static double jarquebera_jbtbl8(double s, ae_state *_state);
    2884             : static double jarquebera_jbtbl9(double s, ae_state *_state);
    2885             : static double jarquebera_jbtbl10(double s, ae_state *_state);
    2886             : static double jarquebera_jbtbl11(double s, ae_state *_state);
    2887             : static double jarquebera_jbtbl12(double s, ae_state *_state);
    2888             : static double jarquebera_jbtbl13(double s, ae_state *_state);
    2889             : static double jarquebera_jbtbl14(double s, ae_state *_state);
    2890             : static double jarquebera_jbtbl15(double s, ae_state *_state);
    2891             : static double jarquebera_jbtbl16(double s, ae_state *_state);
    2892             : static double jarquebera_jbtbl17(double s, ae_state *_state);
    2893             : static double jarquebera_jbtbl18(double s, ae_state *_state);
    2894             : static double jarquebera_jbtbl19(double s, ae_state *_state);
    2895             : static double jarquebera_jbtbl20(double s, ae_state *_state);
    2896             : static double jarquebera_jbtbl30(double s, ae_state *_state);
    2897             : static double jarquebera_jbtbl50(double s, ae_state *_state);
    2898             : static double jarquebera_jbtbl65(double s, ae_state *_state);
    2899             : static double jarquebera_jbtbl100(double s, ae_state *_state);
    2900             : static double jarquebera_jbtbl130(double s, ae_state *_state);
    2901             : static double jarquebera_jbtbl200(double s, ae_state *_state);
    2902             : static double jarquebera_jbtbl301(double s, ae_state *_state);
    2903             : static double jarquebera_jbtbl501(double s, ae_state *_state);
    2904             : static double jarquebera_jbtbl701(double s, ae_state *_state);
    2905             : static double jarquebera_jbtbl1401(double s, ae_state *_state);
    2906             : static void jarquebera_jbcheb(double x,
    2907             :      double c,
    2908             :      double* tj,
    2909             :      double* tj1,
    2910             :      double* r,
    2911             :      ae_state *_state);
    2912             : 
    2913             : 
    2914             : #endif
    2915             : #if defined(AE_COMPILE_VARIANCETESTS) || !defined(AE_PARTIAL_BUILD)
    2916             : 
    2917             : 
    2918             : #endif
    2919             : 
    2920             : #if defined(AE_COMPILE_BASESTAT) || !defined(AE_PARTIAL_BUILD)
    2921             : 
    2922             : 
    2923             : /*************************************************************************
    2924             : Calculation of the distribution moments: mean, variance, skewness, kurtosis.
    2925             : 
    2926             : INPUT PARAMETERS:
    2927             :     X       -   sample
    2928             :     N       -   N>=0, sample size:
    2929             :                 * if given, only leading N elements of X are processed
    2930             :                 * if not given, automatically determined from size of X
    2931             :     
    2932             : OUTPUT PARAMETERS
    2933             :     Mean    -   mean.
    2934             :     Variance-   variance.
    2935             :     Skewness-   skewness (if variance<>0; zero otherwise).
    2936             :     Kurtosis-   kurtosis (if variance<>0; zero otherwise).
    2937             : 
    2938             : NOTE: variance is calculated by dividing sum of squares by N-1, not N.
    2939             : 
    2940             :   -- ALGLIB --
    2941             :      Copyright 06.09.2006 by Bochkanov Sergey
    2942             : *************************************************************************/
    2943           0 : void samplemoments(/* Real    */ ae_vector* x,
    2944             :      ae_int_t n,
    2945             :      double* mean,
    2946             :      double* variance,
    2947             :      double* skewness,
    2948             :      double* kurtosis,
    2949             :      ae_state *_state)
    2950             : {
    2951             :     ae_int_t i;
    2952             :     double v;
    2953             :     double v1;
    2954             :     double v2;
    2955             :     double stddev;
    2956             : 
    2957           0 :     *mean = 0;
    2958           0 :     *variance = 0;
    2959           0 :     *skewness = 0;
    2960           0 :     *kurtosis = 0;
    2961             : 
    2962           0 :     ae_assert(n>=0, "SampleMoments: N<0", _state);
    2963           0 :     ae_assert(x->cnt>=n, "SampleMoments: Length(X)<N!", _state);
    2964           0 :     ae_assert(isfinitevector(x, n, _state), "SampleMoments: X is not finite vector", _state);
    2965             :     
    2966             :     /*
    2967             :      * Init, special case 'N=0'
    2968             :      */
    2969           0 :     *mean = (double)(0);
    2970           0 :     *variance = (double)(0);
    2971           0 :     *skewness = (double)(0);
    2972           0 :     *kurtosis = (double)(0);
    2973           0 :     stddev = (double)(0);
    2974           0 :     if( n<=0 )
    2975             :     {
    2976           0 :         return;
    2977             :     }
    2978             :     
    2979             :     /*
    2980             :      * Mean
    2981             :      */
    2982           0 :     for(i=0; i<=n-1; i++)
    2983             :     {
    2984           0 :         *mean = *mean+x->ptr.p_double[i];
    2985             :     }
    2986           0 :     *mean = *mean/n;
    2987             :     
    2988             :     /*
    2989             :      * Variance (using corrected two-pass algorithm)
    2990             :      */
    2991           0 :     if( n!=1 )
    2992             :     {
    2993           0 :         v1 = (double)(0);
    2994           0 :         for(i=0; i<=n-1; i++)
    2995             :         {
    2996           0 :             v1 = v1+ae_sqr(x->ptr.p_double[i]-(*mean), _state);
    2997             :         }
    2998           0 :         v2 = (double)(0);
    2999           0 :         for(i=0; i<=n-1; i++)
    3000             :         {
    3001           0 :             v2 = v2+(x->ptr.p_double[i]-(*mean));
    3002             :         }
    3003           0 :         v2 = ae_sqr(v2, _state)/n;
    3004           0 :         *variance = (v1-v2)/(n-1);
    3005           0 :         if( ae_fp_less(*variance,(double)(0)) )
    3006             :         {
    3007           0 :             *variance = (double)(0);
    3008             :         }
    3009           0 :         stddev = ae_sqrt(*variance, _state);
    3010             :     }
    3011             :     
    3012             :     /*
    3013             :      * Skewness and kurtosis
    3014             :      */
    3015           0 :     if( ae_fp_neq(stddev,(double)(0)) )
    3016             :     {
    3017           0 :         for(i=0; i<=n-1; i++)
    3018             :         {
    3019           0 :             v = (x->ptr.p_double[i]-(*mean))/stddev;
    3020           0 :             v2 = ae_sqr(v, _state);
    3021           0 :             *skewness = *skewness+v2*v;
    3022           0 :             *kurtosis = *kurtosis+ae_sqr(v2, _state);
    3023             :         }
    3024           0 :         *skewness = *skewness/n;
    3025           0 :         *kurtosis = *kurtosis/n-3;
    3026             :     }
    3027             : }
    3028             : 
    3029             : 
    3030             : /*************************************************************************
    3031             : Calculation of the mean.
    3032             : 
    3033             : INPUT PARAMETERS:
    3034             :     X       -   sample
    3035             :     N       -   N>=0, sample size:
    3036             :                 * if given, only leading N elements of X are processed
    3037             :                 * if not given, automatically determined from size of X
    3038             : 
    3039             : NOTE:
    3040             :                 
    3041             : This function return result  which calculated by 'SampleMoments' function
    3042             : and stored at 'Mean' variable.
    3043             : 
    3044             : 
    3045             :   -- ALGLIB --
    3046             :      Copyright 06.09.2006 by Bochkanov Sergey
    3047             : *************************************************************************/
    3048           0 : double samplemean(/* Real    */ ae_vector* x,
    3049             :      ae_int_t n,
    3050             :      ae_state *_state)
    3051             : {
    3052             :     double mean;
    3053             :     double tmp0;
    3054             :     double tmp1;
    3055             :     double tmp2;
    3056             :     double result;
    3057             : 
    3058             : 
    3059           0 :     samplemoments(x, n, &mean, &tmp0, &tmp1, &tmp2, _state);
    3060           0 :     result = mean;
    3061           0 :     return result;
    3062             : }
    3063             : 
    3064             : 
    3065             : /*************************************************************************
    3066             : Calculation of the variance.
    3067             : 
    3068             : INPUT PARAMETERS:
    3069             :     X       -   sample
    3070             :     N       -   N>=0, sample size:
    3071             :                 * if given, only leading N elements of X are processed
    3072             :                 * if not given, automatically determined from size of X
    3073             : 
    3074             : NOTE:
    3075             :                 
    3076             : This function return result  which calculated by 'SampleMoments' function
    3077             : and stored at 'Variance' variable.
    3078             : 
    3079             : 
    3080             :   -- ALGLIB --
    3081             :      Copyright 06.09.2006 by Bochkanov Sergey
    3082             : *************************************************************************/
    3083           0 : double samplevariance(/* Real    */ ae_vector* x,
    3084             :      ae_int_t n,
    3085             :      ae_state *_state)
    3086             : {
    3087             :     double variance;
    3088             :     double tmp0;
    3089             :     double tmp1;
    3090             :     double tmp2;
    3091             :     double result;
    3092             : 
    3093             : 
    3094           0 :     samplemoments(x, n, &tmp0, &variance, &tmp1, &tmp2, _state);
    3095           0 :     result = variance;
    3096           0 :     return result;
    3097             : }
    3098             : 
    3099             : 
    3100             : /*************************************************************************
    3101             : Calculation of the skewness.
    3102             : 
    3103             : INPUT PARAMETERS:
    3104             :     X       -   sample
    3105             :     N       -   N>=0, sample size:
    3106             :                 * if given, only leading N elements of X are processed
    3107             :                 * if not given, automatically determined from size of X
    3108             : 
    3109             : NOTE:
    3110             :                 
    3111             : This function return result  which calculated by 'SampleMoments' function
    3112             : and stored at 'Skewness' variable.
    3113             : 
    3114             : 
    3115             :   -- ALGLIB --
    3116             :      Copyright 06.09.2006 by Bochkanov Sergey
    3117             : *************************************************************************/
    3118           0 : double sampleskewness(/* Real    */ ae_vector* x,
    3119             :      ae_int_t n,
    3120             :      ae_state *_state)
    3121             : {
    3122             :     double skewness;
    3123             :     double tmp0;
    3124             :     double tmp1;
    3125             :     double tmp2;
    3126             :     double result;
    3127             : 
    3128             : 
    3129           0 :     samplemoments(x, n, &tmp0, &tmp1, &skewness, &tmp2, _state);
    3130           0 :     result = skewness;
    3131           0 :     return result;
    3132             : }
    3133             : 
    3134             : 
    3135             : /*************************************************************************
    3136             : Calculation of the kurtosis.
    3137             : 
    3138             : INPUT PARAMETERS:
    3139             :     X       -   sample
    3140             :     N       -   N>=0, sample size:
    3141             :                 * if given, only leading N elements of X are processed
    3142             :                 * if not given, automatically determined from size of X
    3143             : 
    3144             : NOTE:
    3145             :                 
    3146             : This function return result  which calculated by 'SampleMoments' function
    3147             : and stored at 'Kurtosis' variable.
    3148             : 
    3149             : 
    3150             :   -- ALGLIB --
    3151             :      Copyright 06.09.2006 by Bochkanov Sergey
    3152             : *************************************************************************/
    3153           0 : double samplekurtosis(/* Real    */ ae_vector* x,
    3154             :      ae_int_t n,
    3155             :      ae_state *_state)
    3156             : {
    3157             :     double kurtosis;
    3158             :     double tmp0;
    3159             :     double tmp1;
    3160             :     double tmp2;
    3161             :     double result;
    3162             : 
    3163             : 
    3164           0 :     samplemoments(x, n, &tmp0, &tmp1, &tmp2, &kurtosis, _state);
    3165           0 :     result = kurtosis;
    3166           0 :     return result;
    3167             : }
    3168             : 
    3169             : 
    3170             : /*************************************************************************
    3171             : ADev
    3172             : 
    3173             : Input parameters:
    3174             :     X   -   sample
    3175             :     N   -   N>=0, sample size:
    3176             :             * if given, only leading N elements of X are processed
    3177             :             * if not given, automatically determined from size of X
    3178             :     
    3179             : Output parameters:
    3180             :     ADev-   ADev
    3181             : 
    3182             :   -- ALGLIB --
    3183             :      Copyright 06.09.2006 by Bochkanov Sergey
    3184             : *************************************************************************/
    3185           0 : void sampleadev(/* Real    */ ae_vector* x,
    3186             :      ae_int_t n,
    3187             :      double* adev,
    3188             :      ae_state *_state)
    3189             : {
    3190             :     ae_int_t i;
    3191             :     double mean;
    3192             : 
    3193           0 :     *adev = 0;
    3194             : 
    3195           0 :     ae_assert(n>=0, "SampleADev: N<0", _state);
    3196           0 :     ae_assert(x->cnt>=n, "SampleADev: Length(X)<N!", _state);
    3197           0 :     ae_assert(isfinitevector(x, n, _state), "SampleADev: X is not finite vector", _state);
    3198             :     
    3199             :     /*
    3200             :      * Init, handle N=0
    3201             :      */
    3202           0 :     mean = (double)(0);
    3203           0 :     *adev = (double)(0);
    3204           0 :     if( n<=0 )
    3205             :     {
    3206           0 :         return;
    3207             :     }
    3208             :     
    3209             :     /*
    3210             :      * Mean
    3211             :      */
    3212           0 :     for(i=0; i<=n-1; i++)
    3213             :     {
    3214           0 :         mean = mean+x->ptr.p_double[i];
    3215             :     }
    3216           0 :     mean = mean/n;
    3217             :     
    3218             :     /*
    3219             :      * ADev
    3220             :      */
    3221           0 :     for(i=0; i<=n-1; i++)
    3222             :     {
    3223           0 :         *adev = *adev+ae_fabs(x->ptr.p_double[i]-mean, _state);
    3224             :     }
    3225           0 :     *adev = *adev/n;
    3226             : }
    3227             : 
    3228             : 
    3229             : /*************************************************************************
    3230             : Median calculation.
    3231             : 
    3232             : Input parameters:
    3233             :     X   -   sample (array indexes: [0..N-1])
    3234             :     N   -   N>=0, sample size:
    3235             :             * if given, only leading N elements of X are processed
    3236             :             * if not given, automatically determined from size of X
    3237             : 
    3238             : Output parameters:
    3239             :     Median
    3240             : 
    3241             :   -- ALGLIB --
    3242             :      Copyright 06.09.2006 by Bochkanov Sergey
    3243             : *************************************************************************/
    3244           0 : void samplemedian(/* Real    */ ae_vector* x,
    3245             :      ae_int_t n,
    3246             :      double* median,
    3247             :      ae_state *_state)
    3248             : {
    3249             :     ae_frame _frame_block;
    3250             :     ae_vector _x;
    3251             :     ae_int_t i;
    3252             :     ae_int_t ir;
    3253             :     ae_int_t j;
    3254             :     ae_int_t l;
    3255             :     ae_int_t midp;
    3256             :     ae_int_t k;
    3257             :     double a;
    3258             :     double tval;
    3259             : 
    3260           0 :     ae_frame_make(_state, &_frame_block);
    3261           0 :     memset(&_x, 0, sizeof(_x));
    3262           0 :     ae_vector_init_copy(&_x, x, _state, ae_true);
    3263           0 :     x = &_x;
    3264           0 :     *median = 0;
    3265             : 
    3266           0 :     ae_assert(n>=0, "SampleMedian: N<0", _state);
    3267           0 :     ae_assert(x->cnt>=n, "SampleMedian: Length(X)<N!", _state);
    3268           0 :     ae_assert(isfinitevector(x, n, _state), "SampleMedian: X is not finite vector", _state);
    3269             :     
    3270             :     /*
    3271             :      * Some degenerate cases
    3272             :      */
    3273           0 :     *median = (double)(0);
    3274           0 :     if( n<=0 )
    3275             :     {
    3276           0 :         ae_frame_leave(_state);
    3277           0 :         return;
    3278             :     }
    3279           0 :     if( n==1 )
    3280             :     {
    3281           0 :         *median = x->ptr.p_double[0];
    3282           0 :         ae_frame_leave(_state);
    3283           0 :         return;
    3284             :     }
    3285           0 :     if( n==2 )
    3286             :     {
    3287           0 :         *median = 0.5*(x->ptr.p_double[0]+x->ptr.p_double[1]);
    3288           0 :         ae_frame_leave(_state);
    3289           0 :         return;
    3290             :     }
    3291             :     
    3292             :     /*
    3293             :      * Common case, N>=3.
    3294             :      * Choose X[(N-1)/2]
    3295             :      */
    3296           0 :     l = 0;
    3297           0 :     ir = n-1;
    3298           0 :     k = (n-1)/2;
    3299             :     for(;;)
    3300             :     {
    3301           0 :         if( ir<=l+1 )
    3302             :         {
    3303             :             
    3304             :             /*
    3305             :              * 1 or 2 elements in partition
    3306             :              */
    3307           0 :             if( ir==l+1&&ae_fp_less(x->ptr.p_double[ir],x->ptr.p_double[l]) )
    3308             :             {
    3309           0 :                 tval = x->ptr.p_double[l];
    3310           0 :                 x->ptr.p_double[l] = x->ptr.p_double[ir];
    3311           0 :                 x->ptr.p_double[ir] = tval;
    3312             :             }
    3313           0 :             break;
    3314             :         }
    3315             :         else
    3316             :         {
    3317           0 :             midp = (l+ir)/2;
    3318           0 :             tval = x->ptr.p_double[midp];
    3319           0 :             x->ptr.p_double[midp] = x->ptr.p_double[l+1];
    3320           0 :             x->ptr.p_double[l+1] = tval;
    3321           0 :             if( ae_fp_greater(x->ptr.p_double[l],x->ptr.p_double[ir]) )
    3322             :             {
    3323           0 :                 tval = x->ptr.p_double[l];
    3324           0 :                 x->ptr.p_double[l] = x->ptr.p_double[ir];
    3325           0 :                 x->ptr.p_double[ir] = tval;
    3326             :             }
    3327           0 :             if( ae_fp_greater(x->ptr.p_double[l+1],x->ptr.p_double[ir]) )
    3328             :             {
    3329           0 :                 tval = x->ptr.p_double[l+1];
    3330           0 :                 x->ptr.p_double[l+1] = x->ptr.p_double[ir];
    3331           0 :                 x->ptr.p_double[ir] = tval;
    3332             :             }
    3333           0 :             if( ae_fp_greater(x->ptr.p_double[l],x->ptr.p_double[l+1]) )
    3334             :             {
    3335           0 :                 tval = x->ptr.p_double[l];
    3336           0 :                 x->ptr.p_double[l] = x->ptr.p_double[l+1];
    3337           0 :                 x->ptr.p_double[l+1] = tval;
    3338             :             }
    3339           0 :             i = l+1;
    3340           0 :             j = ir;
    3341           0 :             a = x->ptr.p_double[l+1];
    3342             :             for(;;)
    3343             :             {
    3344           0 :                 do
    3345             :                 {
    3346           0 :                     i = i+1;
    3347             :                 }
    3348           0 :                 while(ae_fp_less(x->ptr.p_double[i],a));
    3349           0 :                 do
    3350             :                 {
    3351           0 :                     j = j-1;
    3352             :                 }
    3353           0 :                 while(ae_fp_greater(x->ptr.p_double[j],a));
    3354           0 :                 if( j<i )
    3355             :                 {
    3356           0 :                     break;
    3357             :                 }
    3358           0 :                 tval = x->ptr.p_double[i];
    3359           0 :                 x->ptr.p_double[i] = x->ptr.p_double[j];
    3360           0 :                 x->ptr.p_double[j] = tval;
    3361             :             }
    3362           0 :             x->ptr.p_double[l+1] = x->ptr.p_double[j];
    3363           0 :             x->ptr.p_double[j] = a;
    3364           0 :             if( j>=k )
    3365             :             {
    3366           0 :                 ir = j-1;
    3367             :             }
    3368           0 :             if( j<=k )
    3369             :             {
    3370           0 :                 l = i;
    3371             :             }
    3372             :         }
    3373             :     }
    3374             :     
    3375             :     /*
    3376             :      * If N is odd, return result
    3377             :      */
    3378           0 :     if( n%2==1 )
    3379             :     {
    3380           0 :         *median = x->ptr.p_double[k];
    3381           0 :         ae_frame_leave(_state);
    3382           0 :         return;
    3383             :     }
    3384           0 :     a = x->ptr.p_double[n-1];
    3385           0 :     for(i=k+1; i<=n-1; i++)
    3386             :     {
    3387           0 :         if( ae_fp_less(x->ptr.p_double[i],a) )
    3388             :         {
    3389           0 :             a = x->ptr.p_double[i];
    3390             :         }
    3391             :     }
    3392           0 :     *median = 0.5*(x->ptr.p_double[k]+a);
    3393           0 :     ae_frame_leave(_state);
    3394             : }
    3395             : 
    3396             : 
    3397             : /*************************************************************************
    3398             : Percentile calculation.
    3399             : 
    3400             : Input parameters:
    3401             :     X   -   sample (array indexes: [0..N-1])
    3402             :     N   -   N>=0, sample size:
    3403             :             * if given, only leading N elements of X are processed
    3404             :             * if not given, automatically determined from size of X
    3405             :     P   -   percentile (0<=P<=1)
    3406             : 
    3407             : Output parameters:
    3408             :     V   -   percentile
    3409             : 
    3410             :   -- ALGLIB --
    3411             :      Copyright 01.03.2008 by Bochkanov Sergey
    3412             : *************************************************************************/
    3413           0 : void samplepercentile(/* Real    */ ae_vector* x,
    3414             :      ae_int_t n,
    3415             :      double p,
    3416             :      double* v,
    3417             :      ae_state *_state)
    3418             : {
    3419             :     ae_frame _frame_block;
    3420             :     ae_vector _x;
    3421             :     ae_int_t i1;
    3422             :     double t;
    3423             :     ae_vector rbuf;
    3424             : 
    3425           0 :     ae_frame_make(_state, &_frame_block);
    3426           0 :     memset(&_x, 0, sizeof(_x));
    3427           0 :     memset(&rbuf, 0, sizeof(rbuf));
    3428           0 :     ae_vector_init_copy(&_x, x, _state, ae_true);
    3429           0 :     x = &_x;
    3430           0 :     *v = 0;
    3431           0 :     ae_vector_init(&rbuf, 0, DT_REAL, _state, ae_true);
    3432             : 
    3433           0 :     ae_assert(n>=0, "SamplePercentile: N<0", _state);
    3434           0 :     ae_assert(x->cnt>=n, "SamplePercentile: Length(X)<N!", _state);
    3435           0 :     ae_assert(isfinitevector(x, n, _state), "SamplePercentile: X is not finite vector", _state);
    3436           0 :     ae_assert(ae_isfinite(p, _state), "SamplePercentile: incorrect P!", _state);
    3437           0 :     ae_assert(ae_fp_greater_eq(p,(double)(0))&&ae_fp_less_eq(p,(double)(1)), "SamplePercentile: incorrect P!", _state);
    3438           0 :     tagsortfast(x, &rbuf, n, _state);
    3439           0 :     if( ae_fp_eq(p,(double)(0)) )
    3440             :     {
    3441           0 :         *v = x->ptr.p_double[0];
    3442           0 :         ae_frame_leave(_state);
    3443           0 :         return;
    3444             :     }
    3445           0 :     if( ae_fp_eq(p,(double)(1)) )
    3446             :     {
    3447           0 :         *v = x->ptr.p_double[n-1];
    3448           0 :         ae_frame_leave(_state);
    3449           0 :         return;
    3450             :     }
    3451           0 :     t = p*(n-1);
    3452           0 :     i1 = ae_ifloor(t, _state);
    3453           0 :     t = t-ae_ifloor(t, _state);
    3454           0 :     *v = x->ptr.p_double[i1]*(1-t)+x->ptr.p_double[i1+1]*t;
    3455           0 :     ae_frame_leave(_state);
    3456             : }
    3457             : 
    3458             : 
    3459             : /*************************************************************************
    3460             : 2-sample covariance
    3461             : 
    3462             : Input parameters:
    3463             :     X       -   sample 1 (array indexes: [0..N-1])
    3464             :     Y       -   sample 2 (array indexes: [0..N-1])
    3465             :     N       -   N>=0, sample size:
    3466             :                 * if given, only N leading elements of X/Y are processed
    3467             :                 * if not given, automatically determined from input sizes
    3468             : 
    3469             : Result:
    3470             :     covariance (zero for N=0 or N=1)
    3471             : 
    3472             :   -- ALGLIB --
    3473             :      Copyright 28.10.2010 by Bochkanov Sergey
    3474             : *************************************************************************/
    3475           0 : double cov2(/* Real    */ ae_vector* x,
    3476             :      /* Real    */ ae_vector* y,
    3477             :      ae_int_t n,
    3478             :      ae_state *_state)
    3479             : {
    3480             :     ae_int_t i;
    3481             :     double xmean;
    3482             :     double ymean;
    3483             :     double v;
    3484             :     double x0;
    3485             :     double y0;
    3486             :     double s;
    3487             :     ae_bool samex;
    3488             :     ae_bool samey;
    3489             :     double result;
    3490             : 
    3491             : 
    3492           0 :     ae_assert(n>=0, "Cov2: N<0", _state);
    3493           0 :     ae_assert(x->cnt>=n, "Cov2: Length(X)<N!", _state);
    3494           0 :     ae_assert(y->cnt>=n, "Cov2: Length(Y)<N!", _state);
    3495           0 :     ae_assert(isfinitevector(x, n, _state), "Cov2: X is not finite vector", _state);
    3496           0 :     ae_assert(isfinitevector(y, n, _state), "Cov2: Y is not finite vector", _state);
    3497             :     
    3498             :     /*
    3499             :      * Special case
    3500             :      */
    3501           0 :     if( n<=1 )
    3502             :     {
    3503           0 :         result = (double)(0);
    3504           0 :         return result;
    3505             :     }
    3506             :     
    3507             :     /*
    3508             :      * Calculate mean.
    3509             :      *
    3510             :      *
    3511             :      * Additonally we calculate SameX and SameY -
    3512             :      * flag variables which are set to True when
    3513             :      * all X[] (or Y[]) contain exactly same value.
    3514             :      *
    3515             :      * If at least one of them is True, we return zero
    3516             :      * (othwerwise we risk to get nonzero covariation
    3517             :      * because of roundoff).
    3518             :      */
    3519           0 :     xmean = (double)(0);
    3520           0 :     ymean = (double)(0);
    3521           0 :     samex = ae_true;
    3522           0 :     samey = ae_true;
    3523           0 :     x0 = x->ptr.p_double[0];
    3524           0 :     y0 = y->ptr.p_double[0];
    3525           0 :     v = (double)1/(double)n;
    3526           0 :     for(i=0; i<=n-1; i++)
    3527             :     {
    3528           0 :         s = x->ptr.p_double[i];
    3529           0 :         samex = samex&&ae_fp_eq(s,x0);
    3530           0 :         xmean = xmean+s*v;
    3531           0 :         s = y->ptr.p_double[i];
    3532           0 :         samey = samey&&ae_fp_eq(s,y0);
    3533           0 :         ymean = ymean+s*v;
    3534             :     }
    3535           0 :     if( samex||samey )
    3536             :     {
    3537           0 :         result = (double)(0);
    3538           0 :         return result;
    3539             :     }
    3540             :     
    3541             :     /*
    3542             :      * covariance
    3543             :      */
    3544           0 :     v = (double)1/(double)(n-1);
    3545           0 :     result = (double)(0);
    3546           0 :     for(i=0; i<=n-1; i++)
    3547             :     {
    3548           0 :         result = result+v*(x->ptr.p_double[i]-xmean)*(y->ptr.p_double[i]-ymean);
    3549             :     }
    3550           0 :     return result;
    3551             : }
    3552             : 
    3553             : 
    3554             : /*************************************************************************
    3555             : Pearson product-moment correlation coefficient
    3556             : 
    3557             : Input parameters:
    3558             :     X       -   sample 1 (array indexes: [0..N-1])
    3559             :     Y       -   sample 2 (array indexes: [0..N-1])
    3560             :     N       -   N>=0, sample size:
    3561             :                 * if given, only N leading elements of X/Y are processed
    3562             :                 * if not given, automatically determined from input sizes
    3563             : 
    3564             : Result:
    3565             :     Pearson product-moment correlation coefficient
    3566             :     (zero for N=0 or N=1)
    3567             : 
    3568             :   -- ALGLIB --
    3569             :      Copyright 28.10.2010 by Bochkanov Sergey
    3570             : *************************************************************************/
    3571           0 : double pearsoncorr2(/* Real    */ ae_vector* x,
    3572             :      /* Real    */ ae_vector* y,
    3573             :      ae_int_t n,
    3574             :      ae_state *_state)
    3575             : {
    3576             :     ae_int_t i;
    3577             :     double xmean;
    3578             :     double ymean;
    3579             :     double v;
    3580             :     double x0;
    3581             :     double y0;
    3582             :     double s;
    3583             :     ae_bool samex;
    3584             :     ae_bool samey;
    3585             :     double xv;
    3586             :     double yv;
    3587             :     double t1;
    3588             :     double t2;
    3589             :     double result;
    3590             : 
    3591             : 
    3592           0 :     ae_assert(n>=0, "PearsonCorr2: N<0", _state);
    3593           0 :     ae_assert(x->cnt>=n, "PearsonCorr2: Length(X)<N!", _state);
    3594           0 :     ae_assert(y->cnt>=n, "PearsonCorr2: Length(Y)<N!", _state);
    3595           0 :     ae_assert(isfinitevector(x, n, _state), "PearsonCorr2: X is not finite vector", _state);
    3596           0 :     ae_assert(isfinitevector(y, n, _state), "PearsonCorr2: Y is not finite vector", _state);
    3597             :     
    3598             :     /*
    3599             :      * Special case
    3600             :      */
    3601           0 :     if( n<=1 )
    3602             :     {
    3603           0 :         result = (double)(0);
    3604           0 :         return result;
    3605             :     }
    3606             :     
    3607             :     /*
    3608             :      * Calculate mean.
    3609             :      *
    3610             :      *
    3611             :      * Additonally we calculate SameX and SameY -
    3612             :      * flag variables which are set to True when
    3613             :      * all X[] (or Y[]) contain exactly same value.
    3614             :      *
    3615             :      * If at least one of them is True, we return zero
    3616             :      * (othwerwise we risk to get nonzero correlation
    3617             :      * because of roundoff).
    3618             :      */
    3619           0 :     xmean = (double)(0);
    3620           0 :     ymean = (double)(0);
    3621           0 :     samex = ae_true;
    3622           0 :     samey = ae_true;
    3623           0 :     x0 = x->ptr.p_double[0];
    3624           0 :     y0 = y->ptr.p_double[0];
    3625           0 :     v = (double)1/(double)n;
    3626           0 :     for(i=0; i<=n-1; i++)
    3627             :     {
    3628           0 :         s = x->ptr.p_double[i];
    3629           0 :         samex = samex&&ae_fp_eq(s,x0);
    3630           0 :         xmean = xmean+s*v;
    3631           0 :         s = y->ptr.p_double[i];
    3632           0 :         samey = samey&&ae_fp_eq(s,y0);
    3633           0 :         ymean = ymean+s*v;
    3634             :     }
    3635           0 :     if( samex||samey )
    3636             :     {
    3637           0 :         result = (double)(0);
    3638           0 :         return result;
    3639             :     }
    3640             :     
    3641             :     /*
    3642             :      * numerator and denominator
    3643             :      */
    3644           0 :     s = (double)(0);
    3645           0 :     xv = (double)(0);
    3646           0 :     yv = (double)(0);
    3647           0 :     for(i=0; i<=n-1; i++)
    3648             :     {
    3649           0 :         t1 = x->ptr.p_double[i]-xmean;
    3650           0 :         t2 = y->ptr.p_double[i]-ymean;
    3651           0 :         xv = xv+ae_sqr(t1, _state);
    3652           0 :         yv = yv+ae_sqr(t2, _state);
    3653           0 :         s = s+t1*t2;
    3654             :     }
    3655           0 :     if( ae_fp_eq(xv,(double)(0))||ae_fp_eq(yv,(double)(0)) )
    3656             :     {
    3657           0 :         result = (double)(0);
    3658             :     }
    3659             :     else
    3660             :     {
    3661           0 :         result = s/(ae_sqrt(xv, _state)*ae_sqrt(yv, _state));
    3662             :     }
    3663           0 :     return result;
    3664             : }
    3665             : 
    3666             : 
    3667             : /*************************************************************************
    3668             : Spearman's rank correlation coefficient
    3669             : 
    3670             : Input parameters:
    3671             :     X       -   sample 1 (array indexes: [0..N-1])
    3672             :     Y       -   sample 2 (array indexes: [0..N-1])
    3673             :     N       -   N>=0, sample size:
    3674             :                 * if given, only N leading elements of X/Y are processed
    3675             :                 * if not given, automatically determined from input sizes
    3676             : 
    3677             : Result:
    3678             :     Spearman's rank correlation coefficient
    3679             :     (zero for N=0 or N=1)
    3680             : 
    3681             :   -- ALGLIB --
    3682             :      Copyright 09.04.2007 by Bochkanov Sergey
    3683             : *************************************************************************/
    3684           0 : double spearmancorr2(/* Real    */ ae_vector* x,
    3685             :      /* Real    */ ae_vector* y,
    3686             :      ae_int_t n,
    3687             :      ae_state *_state)
    3688             : {
    3689             :     ae_frame _frame_block;
    3690             :     ae_vector _x;
    3691             :     ae_vector _y;
    3692             :     apbuffers buf;
    3693             :     double result;
    3694             : 
    3695           0 :     ae_frame_make(_state, &_frame_block);
    3696           0 :     memset(&_x, 0, sizeof(_x));
    3697           0 :     memset(&_y, 0, sizeof(_y));
    3698           0 :     memset(&buf, 0, sizeof(buf));
    3699           0 :     ae_vector_init_copy(&_x, x, _state, ae_true);
    3700           0 :     x = &_x;
    3701           0 :     ae_vector_init_copy(&_y, y, _state, ae_true);
    3702           0 :     y = &_y;
    3703           0 :     _apbuffers_init(&buf, _state, ae_true);
    3704             : 
    3705           0 :     ae_assert(n>=0, "SpearmanCorr2: N<0", _state);
    3706           0 :     ae_assert(x->cnt>=n, "SpearmanCorr2: Length(X)<N!", _state);
    3707           0 :     ae_assert(y->cnt>=n, "SpearmanCorr2: Length(Y)<N!", _state);
    3708           0 :     ae_assert(isfinitevector(x, n, _state), "SpearmanCorr2: X is not finite vector", _state);
    3709           0 :     ae_assert(isfinitevector(y, n, _state), "SpearmanCorr2: Y is not finite vector", _state);
    3710             :     
    3711             :     /*
    3712             :      * Special case
    3713             :      */
    3714           0 :     if( n<=1 )
    3715             :     {
    3716           0 :         result = (double)(0);
    3717           0 :         ae_frame_leave(_state);
    3718           0 :         return result;
    3719             :     }
    3720           0 :     rankx(x, n, ae_false, &buf, _state);
    3721           0 :     rankx(y, n, ae_false, &buf, _state);
    3722           0 :     result = pearsoncorr2(x, y, n, _state);
    3723           0 :     ae_frame_leave(_state);
    3724           0 :     return result;
    3725             : }
    3726             : 
    3727             : 
    3728             : /*************************************************************************
    3729             : Covariance matrix
    3730             : 
    3731             :   ! COMMERCIAL EDITION OF ALGLIB:
    3732             :   ! 
    3733             :   ! Commercial Edition of ALGLIB includes following important improvements
    3734             :   ! of this function:
    3735             :   ! * high-performance native backend with same C# interface (C# version)
    3736             :   ! * multithreading support (C++ and C# versions)
    3737             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    3738             :   !   (C++ and C# versions, x86/x64 platform)
    3739             :   ! 
    3740             :   ! We recommend you to read 'Working with commercial version' section  of
    3741             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    3742             :   ! related features provided by commercial edition of ALGLIB.
    3743             : 
    3744             : INPUT PARAMETERS:
    3745             :     X   -   array[N,M], sample matrix:
    3746             :             * J-th column corresponds to J-th variable
    3747             :             * I-th row corresponds to I-th observation
    3748             :     N   -   N>=0, number of observations:
    3749             :             * if given, only leading N rows of X are used
    3750             :             * if not given, automatically determined from input size
    3751             :     M   -   M>0, number of variables:
    3752             :             * if given, only leading M columns of X are used
    3753             :             * if not given, automatically determined from input size
    3754             : 
    3755             : OUTPUT PARAMETERS:
    3756             :     C   -   array[M,M], covariance matrix (zero if N=0 or N=1)
    3757             : 
    3758             :   -- ALGLIB --
    3759             :      Copyright 28.10.2010 by Bochkanov Sergey
    3760             : *************************************************************************/
    3761           0 : void covm(/* Real    */ ae_matrix* x,
    3762             :      ae_int_t n,
    3763             :      ae_int_t m,
    3764             :      /* Real    */ ae_matrix* c,
    3765             :      ae_state *_state)
    3766             : {
    3767             :     ae_frame _frame_block;
    3768             :     ae_matrix _x;
    3769             :     ae_int_t i;
    3770             :     ae_int_t j;
    3771             :     double v;
    3772             :     ae_vector t;
    3773             :     ae_vector x0;
    3774             :     ae_vector same;
    3775             : 
    3776           0 :     ae_frame_make(_state, &_frame_block);
    3777           0 :     memset(&_x, 0, sizeof(_x));
    3778           0 :     memset(&t, 0, sizeof(t));
    3779           0 :     memset(&x0, 0, sizeof(x0));
    3780           0 :     memset(&same, 0, sizeof(same));
    3781           0 :     ae_matrix_init_copy(&_x, x, _state, ae_true);
    3782           0 :     x = &_x;
    3783           0 :     ae_matrix_clear(c);
    3784           0 :     ae_vector_init(&t, 0, DT_REAL, _state, ae_true);
    3785           0 :     ae_vector_init(&x0, 0, DT_REAL, _state, ae_true);
    3786           0 :     ae_vector_init(&same, 0, DT_BOOL, _state, ae_true);
    3787             : 
    3788           0 :     ae_assert(n>=0, "CovM: N<0", _state);
    3789           0 :     ae_assert(m>=1, "CovM: M<1", _state);
    3790           0 :     ae_assert(x->rows>=n, "CovM: Rows(X)<N!", _state);
    3791           0 :     ae_assert(x->cols>=m||n==0, "CovM: Cols(X)<M!", _state);
    3792           0 :     ae_assert(apservisfinitematrix(x, n, m, _state), "CovM: X contains infinite/NAN elements", _state);
    3793             :     
    3794             :     /*
    3795             :      * N<=1, return zero
    3796             :      */
    3797           0 :     if( n<=1 )
    3798             :     {
    3799           0 :         ae_matrix_set_length(c, m, m, _state);
    3800           0 :         for(i=0; i<=m-1; i++)
    3801             :         {
    3802           0 :             for(j=0; j<=m-1; j++)
    3803             :             {
    3804           0 :                 c->ptr.pp_double[i][j] = (double)(0);
    3805             :             }
    3806             :         }
    3807           0 :         ae_frame_leave(_state);
    3808           0 :         return;
    3809             :     }
    3810             :     
    3811             :     /*
    3812             :      * Calculate means,
    3813             :      * check for constant columns
    3814             :      */
    3815           0 :     ae_vector_set_length(&t, m, _state);
    3816           0 :     ae_vector_set_length(&x0, m, _state);
    3817           0 :     ae_vector_set_length(&same, m, _state);
    3818           0 :     ae_matrix_set_length(c, m, m, _state);
    3819           0 :     for(i=0; i<=m-1; i++)
    3820             :     {
    3821           0 :         t.ptr.p_double[i] = (double)(0);
    3822           0 :         same.ptr.p_bool[i] = ae_true;
    3823             :     }
    3824           0 :     ae_v_move(&x0.ptr.p_double[0], 1, &x->ptr.pp_double[0][0], 1, ae_v_len(0,m-1));
    3825           0 :     v = (double)1/(double)n;
    3826           0 :     for(i=0; i<=n-1; i++)
    3827             :     {
    3828           0 :         ae_v_addd(&t.ptr.p_double[0], 1, &x->ptr.pp_double[i][0], 1, ae_v_len(0,m-1), v);
    3829           0 :         for(j=0; j<=m-1; j++)
    3830             :         {
    3831           0 :             same.ptr.p_bool[j] = same.ptr.p_bool[j]&&ae_fp_eq(x->ptr.pp_double[i][j],x0.ptr.p_double[j]);
    3832             :         }
    3833             :     }
    3834             :     
    3835             :     /*
    3836             :      * * center variables;
    3837             :      * * if we have constant columns, these columns are
    3838             :      *   artificially zeroed (they must be zero in exact arithmetics,
    3839             :      *   but unfortunately floating point ops are not exact).
    3840             :      * * calculate upper half of symmetric covariance matrix
    3841             :      */
    3842           0 :     for(i=0; i<=n-1; i++)
    3843             :     {
    3844           0 :         ae_v_sub(&x->ptr.pp_double[i][0], 1, &t.ptr.p_double[0], 1, ae_v_len(0,m-1));
    3845           0 :         for(j=0; j<=m-1; j++)
    3846             :         {
    3847           0 :             if( same.ptr.p_bool[j] )
    3848             :             {
    3849           0 :                 x->ptr.pp_double[i][j] = (double)(0);
    3850             :             }
    3851             :         }
    3852             :     }
    3853           0 :     rmatrixsyrk(m, n, (double)1/(double)(n-1), x, 0, 0, 1, 0.0, c, 0, 0, ae_true, _state);
    3854           0 :     rmatrixenforcesymmetricity(c, m, ae_true, _state);
    3855           0 :     ae_frame_leave(_state);
    3856             : }
    3857             : 
    3858             : 
    3859             : /*************************************************************************
    3860             : Pearson product-moment correlation matrix
    3861             : 
    3862             :   ! COMMERCIAL EDITION OF ALGLIB:
    3863             :   ! 
    3864             :   ! Commercial Edition of ALGLIB includes following important improvements
    3865             :   ! of this function:
    3866             :   ! * high-performance native backend with same C# interface (C# version)
    3867             :   ! * multithreading support (C++ and C# versions)
    3868             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    3869             :   !   (C++ and C# versions, x86/x64 platform)
    3870             :   ! 
    3871             :   ! We recommend you to read 'Working with commercial version' section  of
    3872             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    3873             :   ! related features provided by commercial edition of ALGLIB.
    3874             : 
    3875             : INPUT PARAMETERS:
    3876             :     X   -   array[N,M], sample matrix:
    3877             :             * J-th column corresponds to J-th variable
    3878             :             * I-th row corresponds to I-th observation
    3879             :     N   -   N>=0, number of observations:
    3880             :             * if given, only leading N rows of X are used
    3881             :             * if not given, automatically determined from input size
    3882             :     M   -   M>0, number of variables:
    3883             :             * if given, only leading M columns of X are used
    3884             :             * if not given, automatically determined from input size
    3885             : 
    3886             : OUTPUT PARAMETERS:
    3887             :     C   -   array[M,M], correlation matrix (zero if N=0 or N=1)
    3888             : 
    3889             :   -- ALGLIB --
    3890             :      Copyright 28.10.2010 by Bochkanov Sergey
    3891             : *************************************************************************/
    3892           0 : void pearsoncorrm(/* Real    */ ae_matrix* x,
    3893             :      ae_int_t n,
    3894             :      ae_int_t m,
    3895             :      /* Real    */ ae_matrix* c,
    3896             :      ae_state *_state)
    3897             : {
    3898             :     ae_frame _frame_block;
    3899             :     ae_vector t;
    3900             :     ae_int_t i;
    3901             :     ae_int_t j;
    3902             :     double v;
    3903             : 
    3904           0 :     ae_frame_make(_state, &_frame_block);
    3905           0 :     memset(&t, 0, sizeof(t));
    3906           0 :     ae_matrix_clear(c);
    3907           0 :     ae_vector_init(&t, 0, DT_REAL, _state, ae_true);
    3908             : 
    3909           0 :     ae_assert(n>=0, "PearsonCorrM: N<0", _state);
    3910           0 :     ae_assert(m>=1, "PearsonCorrM: M<1", _state);
    3911           0 :     ae_assert(x->rows>=n, "PearsonCorrM: Rows(X)<N!", _state);
    3912           0 :     ae_assert(x->cols>=m||n==0, "PearsonCorrM: Cols(X)<M!", _state);
    3913           0 :     ae_assert(apservisfinitematrix(x, n, m, _state), "PearsonCorrM: X contains infinite/NAN elements", _state);
    3914           0 :     ae_vector_set_length(&t, m, _state);
    3915           0 :     covm(x, n, m, c, _state);
    3916           0 :     for(i=0; i<=m-1; i++)
    3917             :     {
    3918           0 :         if( ae_fp_greater(c->ptr.pp_double[i][i],(double)(0)) )
    3919             :         {
    3920           0 :             t.ptr.p_double[i] = 1/ae_sqrt(c->ptr.pp_double[i][i], _state);
    3921             :         }
    3922             :         else
    3923             :         {
    3924           0 :             t.ptr.p_double[i] = 0.0;
    3925             :         }
    3926             :     }
    3927           0 :     for(i=0; i<=m-1; i++)
    3928             :     {
    3929           0 :         v = t.ptr.p_double[i];
    3930           0 :         for(j=0; j<=m-1; j++)
    3931             :         {
    3932           0 :             c->ptr.pp_double[i][j] = c->ptr.pp_double[i][j]*v*t.ptr.p_double[j];
    3933             :         }
    3934             :     }
    3935           0 :     ae_frame_leave(_state);
    3936           0 : }
    3937             : 
    3938             : 
    3939             : /*************************************************************************
    3940             : Spearman's rank correlation matrix
    3941             : 
    3942             :   ! COMMERCIAL EDITION OF ALGLIB:
    3943             :   ! 
    3944             :   ! Commercial Edition of ALGLIB includes following important improvements
    3945             :   ! of this function:
    3946             :   ! * high-performance native backend with same C# interface (C# version)
    3947             :   ! * multithreading support (C++ and C# versions)
    3948             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    3949             :   !   (C++ and C# versions, x86/x64 platform)
    3950             :   ! 
    3951             :   ! We recommend you to read 'Working with commercial version' section  of
    3952             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    3953             :   ! related features provided by commercial edition of ALGLIB.
    3954             : 
    3955             : INPUT PARAMETERS:
    3956             :     X   -   array[N,M], sample matrix:
    3957             :             * J-th column corresponds to J-th variable
    3958             :             * I-th row corresponds to I-th observation
    3959             :     N   -   N>=0, number of observations:
    3960             :             * if given, only leading N rows of X are used
    3961             :             * if not given, automatically determined from input size
    3962             :     M   -   M>0, number of variables:
    3963             :             * if given, only leading M columns of X are used
    3964             :             * if not given, automatically determined from input size
    3965             : 
    3966             : OUTPUT PARAMETERS:
    3967             :     C   -   array[M,M], correlation matrix (zero if N=0 or N=1)
    3968             : 
    3969             :   -- ALGLIB --
    3970             :      Copyright 28.10.2010 by Bochkanov Sergey
    3971             : *************************************************************************/
    3972           0 : void spearmancorrm(/* Real    */ ae_matrix* x,
    3973             :      ae_int_t n,
    3974             :      ae_int_t m,
    3975             :      /* Real    */ ae_matrix* c,
    3976             :      ae_state *_state)
    3977             : {
    3978             :     ae_frame _frame_block;
    3979             :     ae_int_t i;
    3980             :     ae_int_t j;
    3981             :     apbuffers buf;
    3982             :     ae_matrix xc;
    3983             :     ae_vector t;
    3984             :     double v;
    3985             :     double vv;
    3986             :     double x0;
    3987             :     ae_bool b;
    3988             : 
    3989           0 :     ae_frame_make(_state, &_frame_block);
    3990           0 :     memset(&buf, 0, sizeof(buf));
    3991           0 :     memset(&xc, 0, sizeof(xc));
    3992           0 :     memset(&t, 0, sizeof(t));
    3993           0 :     ae_matrix_clear(c);
    3994           0 :     _apbuffers_init(&buf, _state, ae_true);
    3995           0 :     ae_matrix_init(&xc, 0, 0, DT_REAL, _state, ae_true);
    3996           0 :     ae_vector_init(&t, 0, DT_REAL, _state, ae_true);
    3997             : 
    3998           0 :     ae_assert(n>=0, "SpearmanCorrM: N<0", _state);
    3999           0 :     ae_assert(m>=1, "SpearmanCorrM: M<1", _state);
    4000           0 :     ae_assert(x->rows>=n, "SpearmanCorrM: Rows(X)<N!", _state);
    4001           0 :     ae_assert(x->cols>=m||n==0, "SpearmanCorrM: Cols(X)<M!", _state);
    4002           0 :     ae_assert(apservisfinitematrix(x, n, m, _state), "SpearmanCorrM: X contains infinite/NAN elements", _state);
    4003             :     
    4004             :     /*
    4005             :      * N<=1, return zero
    4006             :      */
    4007           0 :     if( n<=1 )
    4008             :     {
    4009           0 :         ae_matrix_set_length(c, m, m, _state);
    4010           0 :         for(i=0; i<=m-1; i++)
    4011             :         {
    4012           0 :             for(j=0; j<=m-1; j++)
    4013             :             {
    4014           0 :                 c->ptr.pp_double[i][j] = (double)(0);
    4015             :             }
    4016             :         }
    4017           0 :         ae_frame_leave(_state);
    4018           0 :         return;
    4019             :     }
    4020             :     
    4021             :     /*
    4022             :      * Allocate
    4023             :      */
    4024           0 :     ae_vector_set_length(&t, ae_maxint(n, m, _state), _state);
    4025           0 :     ae_matrix_set_length(c, m, m, _state);
    4026             :     
    4027             :     /*
    4028             :      * Replace data with ranks
    4029             :      */
    4030           0 :     ae_matrix_set_length(&xc, m, n, _state);
    4031           0 :     rmatrixtranspose(n, m, x, 0, 0, &xc, 0, 0, _state);
    4032           0 :     rankdata(&xc, m, n, _state);
    4033             :     
    4034             :     /*
    4035             :      * 1. Calculate means, check for constant columns
    4036             :      * 2. Center variables, constant  columns are
    4037             :      *   artificialy zeroed (they must be zero in exact arithmetics,
    4038             :      *   but unfortunately floating point is not exact).
    4039             :      */
    4040           0 :     for(i=0; i<=m-1; i++)
    4041             :     {
    4042             :         
    4043             :         /*
    4044             :          * Calculate:
    4045             :          * * V - mean value of I-th variable
    4046             :          * * B - True in case all variable values are same
    4047             :          */
    4048           0 :         v = (double)(0);
    4049           0 :         b = ae_true;
    4050           0 :         x0 = xc.ptr.pp_double[i][0];
    4051           0 :         for(j=0; j<=n-1; j++)
    4052             :         {
    4053           0 :             vv = xc.ptr.pp_double[i][j];
    4054           0 :             v = v+vv;
    4055           0 :             b = b&&ae_fp_eq(vv,x0);
    4056             :         }
    4057           0 :         v = v/n;
    4058             :         
    4059             :         /*
    4060             :          * Center/zero I-th variable
    4061             :          */
    4062           0 :         if( b )
    4063             :         {
    4064             :             
    4065             :             /*
    4066             :              * Zero
    4067             :              */
    4068           0 :             for(j=0; j<=n-1; j++)
    4069             :             {
    4070           0 :                 xc.ptr.pp_double[i][j] = 0.0;
    4071             :             }
    4072             :         }
    4073             :         else
    4074             :         {
    4075             :             
    4076             :             /*
    4077             :              * Center
    4078             :              */
    4079           0 :             for(j=0; j<=n-1; j++)
    4080             :             {
    4081           0 :                 xc.ptr.pp_double[i][j] = xc.ptr.pp_double[i][j]-v;
    4082             :             }
    4083             :         }
    4084             :     }
    4085             :     
    4086             :     /*
    4087             :      * Calculate upper half of symmetric covariance matrix
    4088             :      */
    4089           0 :     rmatrixsyrk(m, n, (double)1/(double)(n-1), &xc, 0, 0, 0, 0.0, c, 0, 0, ae_true, _state);
    4090             :     
    4091             :     /*
    4092             :      * Calculate Pearson coefficients (upper triangle)
    4093             :      */
    4094           0 :     for(i=0; i<=m-1; i++)
    4095             :     {
    4096           0 :         if( ae_fp_greater(c->ptr.pp_double[i][i],(double)(0)) )
    4097             :         {
    4098           0 :             t.ptr.p_double[i] = 1/ae_sqrt(c->ptr.pp_double[i][i], _state);
    4099             :         }
    4100             :         else
    4101             :         {
    4102           0 :             t.ptr.p_double[i] = 0.0;
    4103             :         }
    4104             :     }
    4105           0 :     for(i=0; i<=m-1; i++)
    4106             :     {
    4107           0 :         v = t.ptr.p_double[i];
    4108           0 :         for(j=i; j<=m-1; j++)
    4109             :         {
    4110           0 :             c->ptr.pp_double[i][j] = c->ptr.pp_double[i][j]*v*t.ptr.p_double[j];
    4111             :         }
    4112             :     }
    4113             :     
    4114             :     /*
    4115             :      * force symmetricity
    4116             :      */
    4117           0 :     rmatrixenforcesymmetricity(c, m, ae_true, _state);
    4118           0 :     ae_frame_leave(_state);
    4119             : }
    4120             : 
    4121             : 
    4122             : /*************************************************************************
    4123             : Cross-covariance matrix
    4124             : 
    4125             :   ! COMMERCIAL EDITION OF ALGLIB:
    4126             :   ! 
    4127             :   ! Commercial Edition of ALGLIB includes following important improvements
    4128             :   ! of this function:
    4129             :   ! * high-performance native backend with same C# interface (C# version)
    4130             :   ! * multithreading support (C++ and C# versions)
    4131             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    4132             :   !   (C++ and C# versions, x86/x64 platform)
    4133             :   ! 
    4134             :   ! We recommend you to read 'Working with commercial version' section  of
    4135             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    4136             :   ! related features provided by commercial edition of ALGLIB.
    4137             : 
    4138             : INPUT PARAMETERS:
    4139             :     X   -   array[N,M1], sample matrix:
    4140             :             * J-th column corresponds to J-th variable
    4141             :             * I-th row corresponds to I-th observation
    4142             :     Y   -   array[N,M2], sample matrix:
    4143             :             * J-th column corresponds to J-th variable
    4144             :             * I-th row corresponds to I-th observation
    4145             :     N   -   N>=0, number of observations:
    4146             :             * if given, only leading N rows of X/Y are used
    4147             :             * if not given, automatically determined from input sizes
    4148             :     M1  -   M1>0, number of variables in X:
    4149             :             * if given, only leading M1 columns of X are used
    4150             :             * if not given, automatically determined from input size
    4151             :     M2  -   M2>0, number of variables in Y:
    4152             :             * if given, only leading M1 columns of X are used
    4153             :             * if not given, automatically determined from input size
    4154             : 
    4155             : OUTPUT PARAMETERS:
    4156             :     C   -   array[M1,M2], cross-covariance matrix (zero if N=0 or N=1)
    4157             : 
    4158             :   -- ALGLIB --
    4159             :      Copyright 28.10.2010 by Bochkanov Sergey
    4160             : *************************************************************************/
    4161           0 : void covm2(/* Real    */ ae_matrix* x,
    4162             :      /* Real    */ ae_matrix* y,
    4163             :      ae_int_t n,
    4164             :      ae_int_t m1,
    4165             :      ae_int_t m2,
    4166             :      /* Real    */ ae_matrix* c,
    4167             :      ae_state *_state)
    4168             : {
    4169             :     ae_frame _frame_block;
    4170             :     ae_matrix _x;
    4171             :     ae_matrix _y;
    4172             :     ae_int_t i;
    4173             :     ae_int_t j;
    4174             :     double v;
    4175             :     ae_vector t;
    4176             :     ae_vector x0;
    4177             :     ae_vector y0;
    4178             :     ae_vector samex;
    4179             :     ae_vector samey;
    4180             : 
    4181           0 :     ae_frame_make(_state, &_frame_block);
    4182           0 :     memset(&_x, 0, sizeof(_x));
    4183           0 :     memset(&_y, 0, sizeof(_y));
    4184           0 :     memset(&t, 0, sizeof(t));
    4185           0 :     memset(&x0, 0, sizeof(x0));
    4186           0 :     memset(&y0, 0, sizeof(y0));
    4187           0 :     memset(&samex, 0, sizeof(samex));
    4188           0 :     memset(&samey, 0, sizeof(samey));
    4189           0 :     ae_matrix_init_copy(&_x, x, _state, ae_true);
    4190           0 :     x = &_x;
    4191           0 :     ae_matrix_init_copy(&_y, y, _state, ae_true);
    4192           0 :     y = &_y;
    4193           0 :     ae_matrix_clear(c);
    4194           0 :     ae_vector_init(&t, 0, DT_REAL, _state, ae_true);
    4195           0 :     ae_vector_init(&x0, 0, DT_REAL, _state, ae_true);
    4196           0 :     ae_vector_init(&y0, 0, DT_REAL, _state, ae_true);
    4197           0 :     ae_vector_init(&samex, 0, DT_BOOL, _state, ae_true);
    4198           0 :     ae_vector_init(&samey, 0, DT_BOOL, _state, ae_true);
    4199             : 
    4200           0 :     ae_assert(n>=0, "CovM2: N<0", _state);
    4201           0 :     ae_assert(m1>=1, "CovM2: M1<1", _state);
    4202           0 :     ae_assert(m2>=1, "CovM2: M2<1", _state);
    4203           0 :     ae_assert(x->rows>=n, "CovM2: Rows(X)<N!", _state);
    4204           0 :     ae_assert(x->cols>=m1||n==0, "CovM2: Cols(X)<M1!", _state);
    4205           0 :     ae_assert(apservisfinitematrix(x, n, m1, _state), "CovM2: X contains infinite/NAN elements", _state);
    4206           0 :     ae_assert(y->rows>=n, "CovM2: Rows(Y)<N!", _state);
    4207           0 :     ae_assert(y->cols>=m2||n==0, "CovM2: Cols(Y)<M2!", _state);
    4208           0 :     ae_assert(apservisfinitematrix(y, n, m2, _state), "CovM2: X contains infinite/NAN elements", _state);
    4209             :     
    4210             :     /*
    4211             :      * N<=1, return zero
    4212             :      */
    4213           0 :     if( n<=1 )
    4214             :     {
    4215           0 :         ae_matrix_set_length(c, m1, m2, _state);
    4216           0 :         for(i=0; i<=m1-1; i++)
    4217             :         {
    4218           0 :             for(j=0; j<=m2-1; j++)
    4219             :             {
    4220           0 :                 c->ptr.pp_double[i][j] = (double)(0);
    4221             :             }
    4222             :         }
    4223           0 :         ae_frame_leave(_state);
    4224           0 :         return;
    4225             :     }
    4226             :     
    4227             :     /*
    4228             :      * Allocate
    4229             :      */
    4230           0 :     ae_vector_set_length(&t, ae_maxint(m1, m2, _state), _state);
    4231           0 :     ae_vector_set_length(&x0, m1, _state);
    4232           0 :     ae_vector_set_length(&y0, m2, _state);
    4233           0 :     ae_vector_set_length(&samex, m1, _state);
    4234           0 :     ae_vector_set_length(&samey, m2, _state);
    4235           0 :     ae_matrix_set_length(c, m1, m2, _state);
    4236             :     
    4237             :     /*
    4238             :      * * calculate means of X
    4239             :      * * center X
    4240             :      * * if we have constant columns, these columns are
    4241             :      *   artificially zeroed (they must be zero in exact arithmetics,
    4242             :      *   but unfortunately floating point ops are not exact).
    4243             :      */
    4244           0 :     for(i=0; i<=m1-1; i++)
    4245             :     {
    4246           0 :         t.ptr.p_double[i] = (double)(0);
    4247           0 :         samex.ptr.p_bool[i] = ae_true;
    4248             :     }
    4249           0 :     ae_v_move(&x0.ptr.p_double[0], 1, &x->ptr.pp_double[0][0], 1, ae_v_len(0,m1-1));
    4250           0 :     v = (double)1/(double)n;
    4251           0 :     for(i=0; i<=n-1; i++)
    4252             :     {
    4253           0 :         ae_v_addd(&t.ptr.p_double[0], 1, &x->ptr.pp_double[i][0], 1, ae_v_len(0,m1-1), v);
    4254           0 :         for(j=0; j<=m1-1; j++)
    4255             :         {
    4256           0 :             samex.ptr.p_bool[j] = samex.ptr.p_bool[j]&&ae_fp_eq(x->ptr.pp_double[i][j],x0.ptr.p_double[j]);
    4257             :         }
    4258             :     }
    4259           0 :     for(i=0; i<=n-1; i++)
    4260             :     {
    4261           0 :         ae_v_sub(&x->ptr.pp_double[i][0], 1, &t.ptr.p_double[0], 1, ae_v_len(0,m1-1));
    4262           0 :         for(j=0; j<=m1-1; j++)
    4263             :         {
    4264           0 :             if( samex.ptr.p_bool[j] )
    4265             :             {
    4266           0 :                 x->ptr.pp_double[i][j] = (double)(0);
    4267             :             }
    4268             :         }
    4269             :     }
    4270             :     
    4271             :     /*
    4272             :      * Repeat same steps for Y
    4273             :      */
    4274           0 :     for(i=0; i<=m2-1; i++)
    4275             :     {
    4276           0 :         t.ptr.p_double[i] = (double)(0);
    4277           0 :         samey.ptr.p_bool[i] = ae_true;
    4278             :     }
    4279           0 :     ae_v_move(&y0.ptr.p_double[0], 1, &y->ptr.pp_double[0][0], 1, ae_v_len(0,m2-1));
    4280           0 :     v = (double)1/(double)n;
    4281           0 :     for(i=0; i<=n-1; i++)
    4282             :     {
    4283           0 :         ae_v_addd(&t.ptr.p_double[0], 1, &y->ptr.pp_double[i][0], 1, ae_v_len(0,m2-1), v);
    4284           0 :         for(j=0; j<=m2-1; j++)
    4285             :         {
    4286           0 :             samey.ptr.p_bool[j] = samey.ptr.p_bool[j]&&ae_fp_eq(y->ptr.pp_double[i][j],y0.ptr.p_double[j]);
    4287             :         }
    4288             :     }
    4289           0 :     for(i=0; i<=n-1; i++)
    4290             :     {
    4291           0 :         ae_v_sub(&y->ptr.pp_double[i][0], 1, &t.ptr.p_double[0], 1, ae_v_len(0,m2-1));
    4292           0 :         for(j=0; j<=m2-1; j++)
    4293             :         {
    4294           0 :             if( samey.ptr.p_bool[j] )
    4295             :             {
    4296           0 :                 y->ptr.pp_double[i][j] = (double)(0);
    4297             :             }
    4298             :         }
    4299             :     }
    4300             :     
    4301             :     /*
    4302             :      * calculate cross-covariance matrix
    4303             :      */
    4304           0 :     rmatrixgemm(m1, m2, n, (double)1/(double)(n-1), x, 0, 0, 1, y, 0, 0, 0, 0.0, c, 0, 0, _state);
    4305           0 :     ae_frame_leave(_state);
    4306             : }
    4307             : 
    4308             : 
    4309             : /*************************************************************************
    4310             : Pearson product-moment cross-correlation matrix
    4311             : 
    4312             :   ! COMMERCIAL EDITION OF ALGLIB:
    4313             :   ! 
    4314             :   ! Commercial Edition of ALGLIB includes following important improvements
    4315             :   ! of this function:
    4316             :   ! * high-performance native backend with same C# interface (C# version)
    4317             :   ! * multithreading support (C++ and C# versions)
    4318             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    4319             :   !   (C++ and C# versions, x86/x64 platform)
    4320             :   ! 
    4321             :   ! We recommend you to read 'Working with commercial version' section  of
    4322             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    4323             :   ! related features provided by commercial edition of ALGLIB.
    4324             : 
    4325             : INPUT PARAMETERS:
    4326             :     X   -   array[N,M1], sample matrix:
    4327             :             * J-th column corresponds to J-th variable
    4328             :             * I-th row corresponds to I-th observation
    4329             :     Y   -   array[N,M2], sample matrix:
    4330             :             * J-th column corresponds to J-th variable
    4331             :             * I-th row corresponds to I-th observation
    4332             :     N   -   N>=0, number of observations:
    4333             :             * if given, only leading N rows of X/Y are used
    4334             :             * if not given, automatically determined from input sizes
    4335             :     M1  -   M1>0, number of variables in X:
    4336             :             * if given, only leading M1 columns of X are used
    4337             :             * if not given, automatically determined from input size
    4338             :     M2  -   M2>0, number of variables in Y:
    4339             :             * if given, only leading M1 columns of X are used
    4340             :             * if not given, automatically determined from input size
    4341             : 
    4342             : OUTPUT PARAMETERS:
    4343             :     C   -   array[M1,M2], cross-correlation matrix (zero if N=0 or N=1)
    4344             : 
    4345             :   -- ALGLIB --
    4346             :      Copyright 28.10.2010 by Bochkanov Sergey
    4347             : *************************************************************************/
    4348           0 : void pearsoncorrm2(/* Real    */ ae_matrix* x,
    4349             :      /* Real    */ ae_matrix* y,
    4350             :      ae_int_t n,
    4351             :      ae_int_t m1,
    4352             :      ae_int_t m2,
    4353             :      /* Real    */ ae_matrix* c,
    4354             :      ae_state *_state)
    4355             : {
    4356             :     ae_frame _frame_block;
    4357             :     ae_matrix _x;
    4358             :     ae_matrix _y;
    4359             :     ae_int_t i;
    4360             :     ae_int_t j;
    4361             :     double v;
    4362             :     ae_vector t;
    4363             :     ae_vector x0;
    4364             :     ae_vector y0;
    4365             :     ae_vector sx;
    4366             :     ae_vector sy;
    4367             :     ae_vector samex;
    4368             :     ae_vector samey;
    4369             : 
    4370           0 :     ae_frame_make(_state, &_frame_block);
    4371           0 :     memset(&_x, 0, sizeof(_x));
    4372           0 :     memset(&_y, 0, sizeof(_y));
    4373           0 :     memset(&t, 0, sizeof(t));
    4374           0 :     memset(&x0, 0, sizeof(x0));
    4375           0 :     memset(&y0, 0, sizeof(y0));
    4376           0 :     memset(&sx, 0, sizeof(sx));
    4377           0 :     memset(&sy, 0, sizeof(sy));
    4378           0 :     memset(&samex, 0, sizeof(samex));
    4379           0 :     memset(&samey, 0, sizeof(samey));
    4380           0 :     ae_matrix_init_copy(&_x, x, _state, ae_true);
    4381           0 :     x = &_x;
    4382           0 :     ae_matrix_init_copy(&_y, y, _state, ae_true);
    4383           0 :     y = &_y;
    4384           0 :     ae_matrix_clear(c);
    4385           0 :     ae_vector_init(&t, 0, DT_REAL, _state, ae_true);
    4386           0 :     ae_vector_init(&x0, 0, DT_REAL, _state, ae_true);
    4387           0 :     ae_vector_init(&y0, 0, DT_REAL, _state, ae_true);
    4388           0 :     ae_vector_init(&sx, 0, DT_REAL, _state, ae_true);
    4389           0 :     ae_vector_init(&sy, 0, DT_REAL, _state, ae_true);
    4390           0 :     ae_vector_init(&samex, 0, DT_BOOL, _state, ae_true);
    4391           0 :     ae_vector_init(&samey, 0, DT_BOOL, _state, ae_true);
    4392             : 
    4393           0 :     ae_assert(n>=0, "PearsonCorrM2: N<0", _state);
    4394           0 :     ae_assert(m1>=1, "PearsonCorrM2: M1<1", _state);
    4395           0 :     ae_assert(m2>=1, "PearsonCorrM2: M2<1", _state);
    4396           0 :     ae_assert(x->rows>=n, "PearsonCorrM2: Rows(X)<N!", _state);
    4397           0 :     ae_assert(x->cols>=m1||n==0, "PearsonCorrM2: Cols(X)<M1!", _state);
    4398           0 :     ae_assert(apservisfinitematrix(x, n, m1, _state), "PearsonCorrM2: X contains infinite/NAN elements", _state);
    4399           0 :     ae_assert(y->rows>=n, "PearsonCorrM2: Rows(Y)<N!", _state);
    4400           0 :     ae_assert(y->cols>=m2||n==0, "PearsonCorrM2: Cols(Y)<M2!", _state);
    4401           0 :     ae_assert(apservisfinitematrix(y, n, m2, _state), "PearsonCorrM2: X contains infinite/NAN elements", _state);
    4402             :     
    4403             :     /*
    4404             :      * N<=1, return zero
    4405             :      */
    4406           0 :     if( n<=1 )
    4407             :     {
    4408           0 :         ae_matrix_set_length(c, m1, m2, _state);
    4409           0 :         for(i=0; i<=m1-1; i++)
    4410             :         {
    4411           0 :             for(j=0; j<=m2-1; j++)
    4412             :             {
    4413           0 :                 c->ptr.pp_double[i][j] = (double)(0);
    4414             :             }
    4415             :         }
    4416           0 :         ae_frame_leave(_state);
    4417           0 :         return;
    4418             :     }
    4419             :     
    4420             :     /*
    4421             :      * Allocate
    4422             :      */
    4423           0 :     ae_vector_set_length(&t, ae_maxint(m1, m2, _state), _state);
    4424           0 :     ae_vector_set_length(&x0, m1, _state);
    4425           0 :     ae_vector_set_length(&y0, m2, _state);
    4426           0 :     ae_vector_set_length(&sx, m1, _state);
    4427           0 :     ae_vector_set_length(&sy, m2, _state);
    4428           0 :     ae_vector_set_length(&samex, m1, _state);
    4429           0 :     ae_vector_set_length(&samey, m2, _state);
    4430           0 :     ae_matrix_set_length(c, m1, m2, _state);
    4431             :     
    4432             :     /*
    4433             :      * * calculate means of X
    4434             :      * * center X
    4435             :      * * if we have constant columns, these columns are
    4436             :      *   artificially zeroed (they must be zero in exact arithmetics,
    4437             :      *   but unfortunately floating point ops are not exact).
    4438             :      * * calculate column variances
    4439             :      */
    4440           0 :     for(i=0; i<=m1-1; i++)
    4441             :     {
    4442           0 :         t.ptr.p_double[i] = (double)(0);
    4443           0 :         samex.ptr.p_bool[i] = ae_true;
    4444           0 :         sx.ptr.p_double[i] = (double)(0);
    4445             :     }
    4446           0 :     ae_v_move(&x0.ptr.p_double[0], 1, &x->ptr.pp_double[0][0], 1, ae_v_len(0,m1-1));
    4447           0 :     v = (double)1/(double)n;
    4448           0 :     for(i=0; i<=n-1; i++)
    4449             :     {
    4450           0 :         ae_v_addd(&t.ptr.p_double[0], 1, &x->ptr.pp_double[i][0], 1, ae_v_len(0,m1-1), v);
    4451           0 :         for(j=0; j<=m1-1; j++)
    4452             :         {
    4453           0 :             samex.ptr.p_bool[j] = samex.ptr.p_bool[j]&&ae_fp_eq(x->ptr.pp_double[i][j],x0.ptr.p_double[j]);
    4454             :         }
    4455             :     }
    4456           0 :     for(i=0; i<=n-1; i++)
    4457             :     {
    4458           0 :         ae_v_sub(&x->ptr.pp_double[i][0], 1, &t.ptr.p_double[0], 1, ae_v_len(0,m1-1));
    4459           0 :         for(j=0; j<=m1-1; j++)
    4460             :         {
    4461           0 :             if( samex.ptr.p_bool[j] )
    4462             :             {
    4463           0 :                 x->ptr.pp_double[i][j] = (double)(0);
    4464             :             }
    4465           0 :             sx.ptr.p_double[j] = sx.ptr.p_double[j]+x->ptr.pp_double[i][j]*x->ptr.pp_double[i][j];
    4466             :         }
    4467             :     }
    4468           0 :     for(j=0; j<=m1-1; j++)
    4469             :     {
    4470           0 :         sx.ptr.p_double[j] = ae_sqrt(sx.ptr.p_double[j]/(n-1), _state);
    4471             :     }
    4472             :     
    4473             :     /*
    4474             :      * Repeat same steps for Y
    4475             :      */
    4476           0 :     for(i=0; i<=m2-1; i++)
    4477             :     {
    4478           0 :         t.ptr.p_double[i] = (double)(0);
    4479           0 :         samey.ptr.p_bool[i] = ae_true;
    4480           0 :         sy.ptr.p_double[i] = (double)(0);
    4481             :     }
    4482           0 :     ae_v_move(&y0.ptr.p_double[0], 1, &y->ptr.pp_double[0][0], 1, ae_v_len(0,m2-1));
    4483           0 :     v = (double)1/(double)n;
    4484           0 :     for(i=0; i<=n-1; i++)
    4485             :     {
    4486           0 :         ae_v_addd(&t.ptr.p_double[0], 1, &y->ptr.pp_double[i][0], 1, ae_v_len(0,m2-1), v);
    4487           0 :         for(j=0; j<=m2-1; j++)
    4488             :         {
    4489           0 :             samey.ptr.p_bool[j] = samey.ptr.p_bool[j]&&ae_fp_eq(y->ptr.pp_double[i][j],y0.ptr.p_double[j]);
    4490             :         }
    4491             :     }
    4492           0 :     for(i=0; i<=n-1; i++)
    4493             :     {
    4494           0 :         ae_v_sub(&y->ptr.pp_double[i][0], 1, &t.ptr.p_double[0], 1, ae_v_len(0,m2-1));
    4495           0 :         for(j=0; j<=m2-1; j++)
    4496             :         {
    4497           0 :             if( samey.ptr.p_bool[j] )
    4498             :             {
    4499           0 :                 y->ptr.pp_double[i][j] = (double)(0);
    4500             :             }
    4501           0 :             sy.ptr.p_double[j] = sy.ptr.p_double[j]+y->ptr.pp_double[i][j]*y->ptr.pp_double[i][j];
    4502             :         }
    4503             :     }
    4504           0 :     for(j=0; j<=m2-1; j++)
    4505             :     {
    4506           0 :         sy.ptr.p_double[j] = ae_sqrt(sy.ptr.p_double[j]/(n-1), _state);
    4507             :     }
    4508             :     
    4509             :     /*
    4510             :      * calculate cross-covariance matrix
    4511             :      */
    4512           0 :     rmatrixgemm(m1, m2, n, (double)1/(double)(n-1), x, 0, 0, 1, y, 0, 0, 0, 0.0, c, 0, 0, _state);
    4513             :     
    4514             :     /*
    4515             :      * Divide by standard deviations
    4516             :      */
    4517           0 :     for(i=0; i<=m1-1; i++)
    4518             :     {
    4519           0 :         if( ae_fp_neq(sx.ptr.p_double[i],(double)(0)) )
    4520             :         {
    4521           0 :             sx.ptr.p_double[i] = 1/sx.ptr.p_double[i];
    4522             :         }
    4523             :         else
    4524             :         {
    4525           0 :             sx.ptr.p_double[i] = 0.0;
    4526             :         }
    4527             :     }
    4528           0 :     for(i=0; i<=m2-1; i++)
    4529             :     {
    4530           0 :         if( ae_fp_neq(sy.ptr.p_double[i],(double)(0)) )
    4531             :         {
    4532           0 :             sy.ptr.p_double[i] = 1/sy.ptr.p_double[i];
    4533             :         }
    4534             :         else
    4535             :         {
    4536           0 :             sy.ptr.p_double[i] = 0.0;
    4537             :         }
    4538             :     }
    4539           0 :     for(i=0; i<=m1-1; i++)
    4540             :     {
    4541           0 :         v = sx.ptr.p_double[i];
    4542           0 :         for(j=0; j<=m2-1; j++)
    4543             :         {
    4544           0 :             c->ptr.pp_double[i][j] = c->ptr.pp_double[i][j]*v*sy.ptr.p_double[j];
    4545             :         }
    4546             :     }
    4547           0 :     ae_frame_leave(_state);
    4548             : }
    4549             : 
    4550             : 
    4551             : /*************************************************************************
    4552             : Spearman's rank cross-correlation matrix
    4553             : 
    4554             :   ! COMMERCIAL EDITION OF ALGLIB:
    4555             :   ! 
    4556             :   ! Commercial Edition of ALGLIB includes following important improvements
    4557             :   ! of this function:
    4558             :   ! * high-performance native backend with same C# interface (C# version)
    4559             :   ! * multithreading support (C++ and C# versions)
    4560             :   ! * hardware vendor (Intel) implementations of linear algebra primitives
    4561             :   !   (C++ and C# versions, x86/x64 platform)
    4562             :   ! 
    4563             :   ! We recommend you to read 'Working with commercial version' section  of
    4564             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    4565             :   ! related features provided by commercial edition of ALGLIB.
    4566             : 
    4567             : INPUT PARAMETERS:
    4568             :     X   -   array[N,M1], sample matrix:
    4569             :             * J-th column corresponds to J-th variable
    4570             :             * I-th row corresponds to I-th observation
    4571             :     Y   -   array[N,M2], sample matrix:
    4572             :             * J-th column corresponds to J-th variable
    4573             :             * I-th row corresponds to I-th observation
    4574             :     N   -   N>=0, number of observations:
    4575             :             * if given, only leading N rows of X/Y are used
    4576             :             * if not given, automatically determined from input sizes
    4577             :     M1  -   M1>0, number of variables in X:
    4578             :             * if given, only leading M1 columns of X are used
    4579             :             * if not given, automatically determined from input size
    4580             :     M2  -   M2>0, number of variables in Y:
    4581             :             * if given, only leading M1 columns of X are used
    4582             :             * if not given, automatically determined from input size
    4583             : 
    4584             : OUTPUT PARAMETERS:
    4585             :     C   -   array[M1,M2], cross-correlation matrix (zero if N=0 or N=1)
    4586             : 
    4587             :   -- ALGLIB --
    4588             :      Copyright 28.10.2010 by Bochkanov Sergey
    4589             : *************************************************************************/
    4590           0 : void spearmancorrm2(/* Real    */ ae_matrix* x,
    4591             :      /* Real    */ ae_matrix* y,
    4592             :      ae_int_t n,
    4593             :      ae_int_t m1,
    4594             :      ae_int_t m2,
    4595             :      /* Real    */ ae_matrix* c,
    4596             :      ae_state *_state)
    4597             : {
    4598             :     ae_frame _frame_block;
    4599             :     ae_int_t i;
    4600             :     ae_int_t j;
    4601             :     double v;
    4602             :     double v2;
    4603             :     double vv;
    4604             :     ae_bool b;
    4605             :     ae_vector t;
    4606             :     double x0;
    4607             :     double y0;
    4608             :     ae_vector sx;
    4609             :     ae_vector sy;
    4610             :     ae_matrix xc;
    4611             :     ae_matrix yc;
    4612             :     apbuffers buf;
    4613             : 
    4614           0 :     ae_frame_make(_state, &_frame_block);
    4615           0 :     memset(&t, 0, sizeof(t));
    4616           0 :     memset(&sx, 0, sizeof(sx));
    4617           0 :     memset(&sy, 0, sizeof(sy));
    4618           0 :     memset(&xc, 0, sizeof(xc));
    4619           0 :     memset(&yc, 0, sizeof(yc));
    4620           0 :     memset(&buf, 0, sizeof(buf));
    4621           0 :     ae_matrix_clear(c);
    4622           0 :     ae_vector_init(&t, 0, DT_REAL, _state, ae_true);
    4623           0 :     ae_vector_init(&sx, 0, DT_REAL, _state, ae_true);
    4624           0 :     ae_vector_init(&sy, 0, DT_REAL, _state, ae_true);
    4625           0 :     ae_matrix_init(&xc, 0, 0, DT_REAL, _state, ae_true);
    4626           0 :     ae_matrix_init(&yc, 0, 0, DT_REAL, _state, ae_true);
    4627           0 :     _apbuffers_init(&buf, _state, ae_true);
    4628             : 
    4629           0 :     ae_assert(n>=0, "SpearmanCorrM2: N<0", _state);
    4630           0 :     ae_assert(m1>=1, "SpearmanCorrM2: M1<1", _state);
    4631           0 :     ae_assert(m2>=1, "SpearmanCorrM2: M2<1", _state);
    4632           0 :     ae_assert(x->rows>=n, "SpearmanCorrM2: Rows(X)<N!", _state);
    4633           0 :     ae_assert(x->cols>=m1||n==0, "SpearmanCorrM2: Cols(X)<M1!", _state);
    4634           0 :     ae_assert(apservisfinitematrix(x, n, m1, _state), "SpearmanCorrM2: X contains infinite/NAN elements", _state);
    4635           0 :     ae_assert(y->rows>=n, "SpearmanCorrM2: Rows(Y)<N!", _state);
    4636           0 :     ae_assert(y->cols>=m2||n==0, "SpearmanCorrM2: Cols(Y)<M2!", _state);
    4637           0 :     ae_assert(apservisfinitematrix(y, n, m2, _state), "SpearmanCorrM2: X contains infinite/NAN elements", _state);
    4638             :     
    4639             :     /*
    4640             :      * N<=1, return zero
    4641             :      */
    4642           0 :     if( n<=1 )
    4643             :     {
    4644           0 :         ae_matrix_set_length(c, m1, m2, _state);
    4645           0 :         for(i=0; i<=m1-1; i++)
    4646             :         {
    4647           0 :             for(j=0; j<=m2-1; j++)
    4648             :             {
    4649           0 :                 c->ptr.pp_double[i][j] = (double)(0);
    4650             :             }
    4651             :         }
    4652           0 :         ae_frame_leave(_state);
    4653           0 :         return;
    4654             :     }
    4655             :     
    4656             :     /*
    4657             :      * Allocate
    4658             :      */
    4659           0 :     ae_vector_set_length(&t, ae_maxint(ae_maxint(m1, m2, _state), n, _state), _state);
    4660           0 :     ae_vector_set_length(&sx, m1, _state);
    4661           0 :     ae_vector_set_length(&sy, m2, _state);
    4662           0 :     ae_matrix_set_length(c, m1, m2, _state);
    4663             :     
    4664             :     /*
    4665             :      * Replace data with ranks
    4666             :      */
    4667           0 :     ae_matrix_set_length(&xc, m1, n, _state);
    4668           0 :     ae_matrix_set_length(&yc, m2, n, _state);
    4669           0 :     rmatrixtranspose(n, m1, x, 0, 0, &xc, 0, 0, _state);
    4670           0 :     rmatrixtranspose(n, m2, y, 0, 0, &yc, 0, 0, _state);
    4671           0 :     rankdata(&xc, m1, n, _state);
    4672           0 :     rankdata(&yc, m2, n, _state);
    4673             :     
    4674             :     /*
    4675             :      * 1. Calculate means, variances, check for constant columns
    4676             :      * 2. Center variables, constant  columns are
    4677             :      *   artificialy zeroed (they must be zero in exact arithmetics,
    4678             :      *   but unfortunately floating point is not exact).
    4679             :      *
    4680             :      * Description of variables:
    4681             :      * * V - mean value of I-th variable
    4682             :      * * V2- variance
    4683             :      * * VV-temporary
    4684             :      * * B - True in case all variable values are same
    4685             :      */
    4686           0 :     for(i=0; i<=m1-1; i++)
    4687             :     {
    4688           0 :         v = (double)(0);
    4689           0 :         v2 = 0.0;
    4690           0 :         b = ae_true;
    4691           0 :         x0 = xc.ptr.pp_double[i][0];
    4692           0 :         for(j=0; j<=n-1; j++)
    4693             :         {
    4694           0 :             vv = xc.ptr.pp_double[i][j];
    4695           0 :             v = v+vv;
    4696           0 :             b = b&&ae_fp_eq(vv,x0);
    4697             :         }
    4698           0 :         v = v/n;
    4699           0 :         if( b )
    4700             :         {
    4701           0 :             for(j=0; j<=n-1; j++)
    4702             :             {
    4703           0 :                 xc.ptr.pp_double[i][j] = 0.0;
    4704             :             }
    4705             :         }
    4706             :         else
    4707             :         {
    4708           0 :             for(j=0; j<=n-1; j++)
    4709             :             {
    4710           0 :                 vv = xc.ptr.pp_double[i][j];
    4711           0 :                 xc.ptr.pp_double[i][j] = vv-v;
    4712           0 :                 v2 = v2+(vv-v)*(vv-v);
    4713             :             }
    4714             :         }
    4715           0 :         sx.ptr.p_double[i] = ae_sqrt(v2/(n-1), _state);
    4716             :     }
    4717           0 :     for(i=0; i<=m2-1; i++)
    4718             :     {
    4719           0 :         v = (double)(0);
    4720           0 :         v2 = 0.0;
    4721           0 :         b = ae_true;
    4722           0 :         y0 = yc.ptr.pp_double[i][0];
    4723           0 :         for(j=0; j<=n-1; j++)
    4724             :         {
    4725           0 :             vv = yc.ptr.pp_double[i][j];
    4726           0 :             v = v+vv;
    4727           0 :             b = b&&ae_fp_eq(vv,y0);
    4728             :         }
    4729           0 :         v = v/n;
    4730           0 :         if( b )
    4731             :         {
    4732           0 :             for(j=0; j<=n-1; j++)
    4733             :             {
    4734           0 :                 yc.ptr.pp_double[i][j] = 0.0;
    4735             :             }
    4736             :         }
    4737             :         else
    4738             :         {
    4739           0 :             for(j=0; j<=n-1; j++)
    4740             :             {
    4741           0 :                 vv = yc.ptr.pp_double[i][j];
    4742           0 :                 yc.ptr.pp_double[i][j] = vv-v;
    4743           0 :                 v2 = v2+(vv-v)*(vv-v);
    4744             :             }
    4745             :         }
    4746           0 :         sy.ptr.p_double[i] = ae_sqrt(v2/(n-1), _state);
    4747             :     }
    4748             :     
    4749             :     /*
    4750             :      * calculate cross-covariance matrix
    4751             :      */
    4752           0 :     rmatrixgemm(m1, m2, n, (double)1/(double)(n-1), &xc, 0, 0, 0, &yc, 0, 0, 1, 0.0, c, 0, 0, _state);
    4753             :     
    4754             :     /*
    4755             :      * Divide by standard deviations
    4756             :      */
    4757           0 :     for(i=0; i<=m1-1; i++)
    4758             :     {
    4759           0 :         if( ae_fp_neq(sx.ptr.p_double[i],(double)(0)) )
    4760             :         {
    4761           0 :             sx.ptr.p_double[i] = 1/sx.ptr.p_double[i];
    4762             :         }
    4763             :         else
    4764             :         {
    4765           0 :             sx.ptr.p_double[i] = 0.0;
    4766             :         }
    4767             :     }
    4768           0 :     for(i=0; i<=m2-1; i++)
    4769             :     {
    4770           0 :         if( ae_fp_neq(sy.ptr.p_double[i],(double)(0)) )
    4771             :         {
    4772           0 :             sy.ptr.p_double[i] = 1/sy.ptr.p_double[i];
    4773             :         }
    4774             :         else
    4775             :         {
    4776           0 :             sy.ptr.p_double[i] = 0.0;
    4777             :         }
    4778             :     }
    4779           0 :     for(i=0; i<=m1-1; i++)
    4780             :     {
    4781           0 :         v = sx.ptr.p_double[i];
    4782           0 :         for(j=0; j<=m2-1; j++)
    4783             :         {
    4784           0 :             c->ptr.pp_double[i][j] = c->ptr.pp_double[i][j]*v*sy.ptr.p_double[j];
    4785             :         }
    4786             :     }
    4787           0 :     ae_frame_leave(_state);
    4788             : }
    4789             : 
    4790             : 
    4791             : /*************************************************************************
    4792             : This function replaces data in XY by their ranks:
    4793             : * XY is processed row-by-row
    4794             : * rows are processed separately
    4795             : * tied data are correctly handled (tied ranks are calculated)
    4796             : * ranking starts from 0, ends at NFeatures-1
    4797             : * sum of within-row values is equal to (NFeatures-1)*NFeatures/2
    4798             : 
    4799             :   ! COMMERCIAL EDITION OF ALGLIB:
    4800             :   ! 
    4801             :   ! Commercial Edition of ALGLIB includes following important improvements
    4802             :   ! of this function:
    4803             :   ! * high-performance native backend with same C# interface (C# version)
    4804             :   ! * multithreading support (C++ and C# versions)
    4805             :   ! 
    4806             :   ! We recommend you to read 'Working with commercial version' section  of
    4807             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    4808             :   ! related features provided by commercial edition of ALGLIB.
    4809             : 
    4810             : INPUT PARAMETERS:
    4811             :     XY      -   array[NPoints,NFeatures], dataset
    4812             :     NPoints -   number of points
    4813             :     NFeatures-  number of features
    4814             : 
    4815             : OUTPUT PARAMETERS:
    4816             :     XY      -   data are replaced by their within-row ranks;
    4817             :                 ranking starts from 0, ends at NFeatures-1
    4818             : 
    4819             :   -- ALGLIB --
    4820             :      Copyright 18.04.2013 by Bochkanov Sergey
    4821             : *************************************************************************/
    4822           0 : void rankdata(/* Real    */ ae_matrix* xy,
    4823             :      ae_int_t npoints,
    4824             :      ae_int_t nfeatures,
    4825             :      ae_state *_state)
    4826             : {
    4827             :     ae_frame _frame_block;
    4828             :     apbuffers buf0;
    4829             :     apbuffers buf1;
    4830             :     ae_int_t basecasecost;
    4831             :     ae_shared_pool pool;
    4832             : 
    4833           0 :     ae_frame_make(_state, &_frame_block);
    4834           0 :     memset(&buf0, 0, sizeof(buf0));
    4835           0 :     memset(&buf1, 0, sizeof(buf1));
    4836           0 :     memset(&pool, 0, sizeof(pool));
    4837           0 :     _apbuffers_init(&buf0, _state, ae_true);
    4838           0 :     _apbuffers_init(&buf1, _state, ae_true);
    4839           0 :     ae_shared_pool_init(&pool, _state, ae_true);
    4840             : 
    4841           0 :     ae_assert(npoints>=0, "RankData: NPoints<0", _state);
    4842           0 :     ae_assert(nfeatures>=1, "RankData: NFeatures<1", _state);
    4843           0 :     ae_assert(xy->rows>=npoints, "RankData: Rows(XY)<NPoints", _state);
    4844           0 :     ae_assert(xy->cols>=nfeatures||npoints==0, "RankData: Cols(XY)<NFeatures", _state);
    4845           0 :     ae_assert(apservisfinitematrix(xy, npoints, nfeatures, _state), "RankData: XY contains infinite/NAN elements", _state);
    4846             :     
    4847             :     /*
    4848             :      * Basecase cost is a maximum cost of basecase problems.
    4849             :      * Problems harded than that cost will be split.
    4850             :      *
    4851             :      * Problem cost is assumed to be NPoints*NFeatures*log2(NFeatures),
    4852             :      * which is proportional, but NOT equal to number of FLOPs required
    4853             :      * to solve problem.
    4854             :      *
    4855             :      * Try to use serial code for basecase problems, no SMP functionality, no shared pools.
    4856             :      */
    4857           0 :     basecasecost = 10000;
    4858           0 :     if( ae_fp_less(rmul3((double)(npoints), (double)(nfeatures), logbase2((double)(nfeatures), _state), _state),(double)(basecasecost)) )
    4859             :     {
    4860           0 :         basestat_rankdatabasecase(xy, 0, npoints, nfeatures, ae_false, &buf0, &buf1, _state);
    4861           0 :         ae_frame_leave(_state);
    4862           0 :         return;
    4863             :     }
    4864             :     
    4865             :     /*
    4866             :      * Parallel code
    4867             :      */
    4868           0 :     ae_shared_pool_set_seed(&pool, &buf0, sizeof(buf0), _apbuffers_init, _apbuffers_init_copy, _apbuffers_destroy, _state);
    4869           0 :     basestat_rankdatarec(xy, 0, npoints, nfeatures, ae_false, &pool, basecasecost, _state);
    4870           0 :     ae_frame_leave(_state);
    4871             : }
    4872             : 
    4873             : 
    4874             : /*************************************************************************
    4875             : Serial stub for GPL edition.
    4876             : *************************************************************************/
    4877           0 : ae_bool _trypexec_rankdata(/* Real    */ ae_matrix* xy,
    4878             :     ae_int_t npoints,
    4879             :     ae_int_t nfeatures,
    4880             :     ae_state *_state)
    4881             : {
    4882           0 :     return ae_false;
    4883             : }
    4884             : 
    4885             : 
    4886             : /*************************************************************************
    4887             : This function replaces data in XY by their CENTERED ranks:
    4888             : * XY is processed row-by-row
    4889             : * rows are processed separately
    4890             : * tied data are correctly handled (tied ranks are calculated)
    4891             : * centered ranks are just usual ranks, but centered in such way  that  sum
    4892             :   of within-row values is equal to 0.0.
    4893             : * centering is performed by subtracting mean from each row, i.e it changes
    4894             :   mean value, but does NOT change higher moments
    4895             : 
    4896             :   ! COMMERCIAL EDITION OF ALGLIB:
    4897             :   ! 
    4898             :   ! Commercial Edition of ALGLIB includes following important improvements
    4899             :   ! of this function:
    4900             :   ! * high-performance native backend with same C# interface (C# version)
    4901             :   ! * multithreading support (C++ and C# versions)
    4902             :   ! 
    4903             :   ! We recommend you to read 'Working with commercial version' section  of
    4904             :   ! ALGLIB Reference Manual in order to find out how to  use  performance-
    4905             :   ! related features provided by commercial edition of ALGLIB.
    4906             : 
    4907             : INPUT PARAMETERS:
    4908             :     XY      -   array[NPoints,NFeatures], dataset
    4909             :     NPoints -   number of points
    4910             :     NFeatures-  number of features
    4911             : 
    4912             : OUTPUT PARAMETERS:
    4913             :     XY      -   data are replaced by their within-row ranks;
    4914             :                 ranking starts from 0, ends at NFeatures-1
    4915             : 
    4916             :   -- ALGLIB --
    4917             :      Copyright 18.04.2013 by Bochkanov Sergey
    4918             : *************************************************************************/
    4919           0 : void rankdatacentered(/* Real    */ ae_matrix* xy,
    4920             :      ae_int_t npoints,
    4921             :      ae_int_t nfeatures,
    4922             :      ae_state *_state)
    4923             : {
    4924             :     ae_frame _frame_block;
    4925             :     apbuffers buf0;
    4926             :     apbuffers buf1;
    4927             :     ae_int_t basecasecost;
    4928             :     ae_shared_pool pool;
    4929             : 
    4930           0 :     ae_frame_make(_state, &_frame_block);
    4931           0 :     memset(&buf0, 0, sizeof(buf0));
    4932           0 :     memset(&buf1, 0, sizeof(buf1));
    4933           0 :     memset(&pool, 0, sizeof(pool));
    4934           0 :     _apbuffers_init(&buf0, _state, ae_true);
    4935           0 :     _apbuffers_init(&buf1, _state, ae_true);
    4936           0 :     ae_shared_pool_init(&pool, _state, ae_true);
    4937             : 
    4938           0 :     ae_assert(npoints>=0, "RankData: NPoints<0", _state);
    4939           0 :     ae_assert(nfeatures>=1, "RankData: NFeatures<1", _state);
    4940           0 :     ae_assert(xy->rows>=npoints, "RankData: Rows(XY)<NPoints", _state);
    4941           0 :     ae_assert(xy->cols>=nfeatures||npoints==0, "RankData: Cols(XY)<NFeatures", _state);
    4942           0 :     ae_assert(apservisfinitematrix(xy, npoints, nfeatures, _state), "RankData: XY contains infinite/NAN elements", _state);
    4943             :     
    4944             :     /*
    4945             :      * Basecase cost is a maximum cost of basecase problems.
    4946             :      * Problems harded than that cost will be split.
    4947             :      *
    4948             :      * Problem cost is assumed to be NPoints*NFeatures*log2(NFeatures),
    4949             :      * which is proportional, but NOT equal to number of FLOPs required
    4950             :      * to solve problem.
    4951             :      *
    4952             :      * Try to use serial code, no SMP functionality, no shared pools.
    4953             :      */
    4954           0 :     basecasecost = 10000;
    4955           0 :     if( ae_fp_less(rmul3((double)(npoints), (double)(nfeatures), logbase2((double)(nfeatures), _state), _state),(double)(basecasecost)) )
    4956             :     {
    4957           0 :         basestat_rankdatabasecase(xy, 0, npoints, nfeatures, ae_true, &buf0, &buf1, _state);
    4958           0 :         ae_frame_leave(_state);
    4959           0 :         return;
    4960             :     }
    4961             :     
    4962             :     /*
    4963             :      * Parallel code
    4964             :      */
    4965           0 :     ae_shared_pool_set_seed(&pool, &buf0, sizeof(buf0), _apbuffers_init, _apbuffers_init_copy, _apbuffers_destroy, _state);
    4966           0 :     basestat_rankdatarec(xy, 0, npoints, nfeatures, ae_true, &pool, basecasecost, _state);
    4967           0 :     ae_frame_leave(_state);
    4968             : }
    4969             : 
    4970             : 
    4971             : /*************************************************************************
    4972             : Serial stub for GPL edition.
    4973             : *************************************************************************/
    4974           0 : ae_bool _trypexec_rankdatacentered(/* Real    */ ae_matrix* xy,
    4975             :     ae_int_t npoints,
    4976             :     ae_int_t nfeatures,
    4977             :     ae_state *_state)
    4978             : {
    4979           0 :     return ae_false;
    4980             : }
    4981             : 
    4982             : 
    4983             : /*************************************************************************
    4984             : Obsolete function, we recommend to use PearsonCorr2().
    4985             : 
    4986             :   -- ALGLIB --
    4987             :      Copyright 09.04.2007 by Bochkanov Sergey
    4988             : *************************************************************************/
    4989           0 : double pearsoncorrelation(/* Real    */ ae_vector* x,
    4990             :      /* Real    */ ae_vector* y,
    4991             :      ae_int_t n,
    4992             :      ae_state *_state)
    4993             : {
    4994             :     double result;
    4995             : 
    4996             : 
    4997           0 :     result = pearsoncorr2(x, y, n, _state);
    4998           0 :     return result;
    4999             : }
    5000             : 
    5001             : 
    5002             : /*************************************************************************
    5003             : Obsolete function, we recommend to use SpearmanCorr2().
    5004             : 
    5005             :     -- ALGLIB --
    5006             :     Copyright 09.04.2007 by Bochkanov Sergey
    5007             : *************************************************************************/
    5008           0 : double spearmanrankcorrelation(/* Real    */ ae_vector* x,
    5009             :      /* Real    */ ae_vector* y,
    5010             :      ae_int_t n,
    5011             :      ae_state *_state)
    5012             : {
    5013             :     double result;
    5014             : 
    5015             : 
    5016           0 :     result = spearmancorr2(x, y, n, _state);
    5017           0 :     return result;
    5018             : }
    5019             : 
    5020             : 
    5021             : /*************************************************************************
    5022             : Recurrent code for RankData(), splits problem into  subproblems  or  calls
    5023             : basecase code (depending on problem complexity).
    5024             : 
    5025             : INPUT PARAMETERS:
    5026             :     XY      -   array[NPoints,NFeatures], dataset
    5027             :     I0      -   index of first row to process
    5028             :     I1      -   index of past-the-last row to process;
    5029             :                 this function processes half-interval [I0,I1).
    5030             :     NFeatures-  number of features
    5031             :     IsCentered- whether ranks are centered or not:
    5032             :                 * True      -   ranks are centered in such way that  their
    5033             :                                 within-row sum is zero
    5034             :                 * False     -   ranks are not centered
    5035             :     Pool    -   shared pool which holds temporary buffers
    5036             :                 (APBuffers structure)
    5037             :     BasecaseCost-minimum cost of the problem which will be split
    5038             : 
    5039             : OUTPUT PARAMETERS:
    5040             :     XY      -   data in [I0,I1) are replaced by their within-row ranks;
    5041             :                 ranking starts from 0, ends at NFeatures-1
    5042             : 
    5043             :   -- ALGLIB --
    5044             :      Copyright 18.04.2013 by Bochkanov Sergey
    5045             : *************************************************************************/
    5046           0 : static void basestat_rankdatarec(/* Real    */ ae_matrix* xy,
    5047             :      ae_int_t i0,
    5048             :      ae_int_t i1,
    5049             :      ae_int_t nfeatures,
    5050             :      ae_bool iscentered,
    5051             :      ae_shared_pool* pool,
    5052             :      ae_int_t basecasecost,
    5053             :      ae_state *_state)
    5054             : {
    5055             :     ae_frame _frame_block;
    5056             :     apbuffers *buf0;
    5057             :     ae_smart_ptr _buf0;
    5058             :     apbuffers *buf1;
    5059             :     ae_smart_ptr _buf1;
    5060             :     double problemcost;
    5061             :     ae_int_t im;
    5062             : 
    5063           0 :     ae_frame_make(_state, &_frame_block);
    5064           0 :     memset(&_buf0, 0, sizeof(_buf0));
    5065           0 :     memset(&_buf1, 0, sizeof(_buf1));
    5066           0 :     ae_smart_ptr_init(&_buf0, (void**)&buf0, _state, ae_true);
    5067           0 :     ae_smart_ptr_init(&_buf1, (void**)&buf1, _state, ae_true);
    5068             : 
    5069           0 :     ae_assert(i1>=i0, "RankDataRec: internal error", _state);
    5070             :     
    5071             :     /*
    5072             :      * Try to activate parallelism
    5073             :      */
    5074           0 :     if( i1-i0>=4&&ae_fp_greater_eq(rmul3((double)(i1-i0), (double)(nfeatures), logbase2((double)(nfeatures), _state), _state),smpactivationlevel(_state)) )
    5075             :     {
    5076           0 :         if( _trypexec_basestat_rankdatarec(xy,i0,i1,nfeatures,iscentered,pool,basecasecost, _state) )
    5077             :         {
    5078           0 :             ae_frame_leave(_state);
    5079           0 :             return;
    5080             :         }
    5081             :     }
    5082             :     
    5083             :     /*
    5084             :      * Recursively split problem, if it is too large
    5085             :      */
    5086           0 :     problemcost = rmul3((double)(i1-i0), (double)(nfeatures), logbase2((double)(nfeatures), _state), _state);
    5087           0 :     if( i1-i0>=2&&ae_fp_greater(problemcost,spawnlevel(_state)) )
    5088             :     {
    5089           0 :         im = (i1+i0)/2;
    5090           0 :         basestat_rankdatarec(xy, i0, im, nfeatures, iscentered, pool, basecasecost, _state);
    5091           0 :         basestat_rankdatarec(xy, im, i1, nfeatures, iscentered, pool, basecasecost, _state);
    5092           0 :         ae_frame_leave(_state);
    5093           0 :         return;
    5094             :     }
    5095             :     
    5096             :     /*
    5097             :      * Retrieve buffers from pool, call serial code, return buffers to pool
    5098             :      */
    5099           0 :     ae_shared_pool_retrieve(pool, &_buf0, _state);
    5100           0 :     ae_shared_pool_retrieve(pool, &_buf1, _state);
    5101           0 :     basestat_rankdatabasecase(xy, i0, i1, nfeatures, iscentered, buf0, buf1, _state);
    5102           0 :     ae_shared_pool_recycle(pool, &_buf0, _state);
    5103           0 :     ae_shared_pool_recycle(pool, &_buf1, _state);
    5104           0 :     ae_frame_leave(_state);
    5105             : }
    5106             : 
    5107             : 
    5108             : /*************************************************************************
    5109             : Serial stub for GPL edition.
    5110             : *************************************************************************/
    5111           0 : ae_bool _trypexec_basestat_rankdatarec(/* Real    */ ae_matrix* xy,
    5112             :     ae_int_t i0,
    5113             :     ae_int_t i1,
    5114             :     ae_int_t nfeatures,
    5115             :     ae_bool iscentered,
    5116             :     ae_shared_pool* pool,
    5117             :     ae_int_t basecasecost,
    5118             :     ae_state *_state)
    5119             : {
    5120           0 :     return ae_false;
    5121             : }
    5122             : 
    5123             : 
    5124             : /*************************************************************************
    5125             : Basecase code for RankData(), performs actual work on subset of data using
    5126             : temporary buffer passed as parameter.
    5127             : 
    5128             : INPUT PARAMETERS:
    5129             :     XY      -   array[NPoints,NFeatures], dataset
    5130             :     I0      -   index of first row to process
    5131             :     I1      -   index of past-the-last row to process;
    5132             :                 this function processes half-interval [I0,I1).
    5133             :     NFeatures-  number of features
    5134             :     IsCentered- whether ranks are centered or not:
    5135             :                 * True      -   ranks are centered in such way that  their
    5136             :                                 within-row sum is zero
    5137             :                 * False     -   ranks are not centered
    5138             :     Buf0    -   temporary buffers, may be empty (this function automatically
    5139             :                 allocates/reuses buffers).
    5140             :     Buf1    -   temporary buffers, may be empty (this function automatically
    5141             :                 allocates/reuses buffers).
    5142             : 
    5143             : OUTPUT PARAMETERS:
    5144             :     XY      -   data in [I0,I1) are replaced by their within-row ranks;
    5145             :                 ranking starts from 0, ends at NFeatures-1
    5146             : 
    5147             :   -- ALGLIB --
    5148             :      Copyright 18.04.2013 by Bochkanov Sergey
    5149             : *************************************************************************/
    5150           0 : static void basestat_rankdatabasecase(/* Real    */ ae_matrix* xy,
    5151             :      ae_int_t i0,
    5152             :      ae_int_t i1,
    5153             :      ae_int_t nfeatures,
    5154             :      ae_bool iscentered,
    5155             :      apbuffers* buf0,
    5156             :      apbuffers* buf1,
    5157             :      ae_state *_state)
    5158             : {
    5159             :     ae_int_t i;
    5160             : 
    5161             : 
    5162           0 :     ae_assert(i1>=i0, "RankDataBasecase: internal error", _state);
    5163           0 :     if( buf1->ra0.cnt<nfeatures )
    5164             :     {
    5165           0 :         ae_vector_set_length(&buf1->ra0, nfeatures, _state);
    5166             :     }
    5167           0 :     for(i=i0; i<=i1-1; i++)
    5168             :     {
    5169           0 :         ae_v_move(&buf1->ra0.ptr.p_double[0], 1, &xy->ptr.pp_double[i][0], 1, ae_v_len(0,nfeatures-1));
    5170           0 :         rankx(&buf1->ra0, nfeatures, iscentered, buf0, _state);
    5171           0 :         ae_v_move(&xy->ptr.pp_double[i][0], 1, &buf1->ra0.ptr.p_double[0], 1, ae_v_len(0,nfeatures-1));
    5172             :     }
    5173           0 : }
    5174             : 
    5175             : 
    5176             : /*************************************************************************
    5177             : Serial stub for GPL edition.
    5178             : *************************************************************************/
    5179           0 : ae_bool _trypexec_basestat_rankdatabasecase(/* Real    */ ae_matrix* xy,
    5180             :     ae_int_t i0,
    5181             :     ae_int_t i1,
    5182             :     ae_int_t nfeatures,
    5183             :     ae_bool iscentered,
    5184             :     apbuffers* buf0,
    5185             :     apbuffers* buf1,
    5186             :     ae_state *_state)
    5187             : {
    5188           0 :     return ae_false;
    5189             : }
    5190             : 
    5191             : 
    5192             : #endif
    5193             : #if defined(AE_COMPILE_WSR) || !defined(AE_PARTIAL_BUILD)
    5194             : 
    5195             : 
    5196             : /*************************************************************************
    5197             : Wilcoxon signed-rank test
    5198             : 
    5199             : This test checks three hypotheses about the median  of  the  given sample.
    5200             : The following tests are performed:
    5201             :     * two-tailed test (null hypothesis - the median is equal to the  given
    5202             :       value)
    5203             :     * left-tailed test (null hypothesis - the median is  greater  than  or
    5204             :       equal to the given value)
    5205             :     * right-tailed test (null hypothesis  -  the  median  is  less than or
    5206             :       equal to the given value)
    5207             : 
    5208             : Requirements:
    5209             :     * the scale of measurement should be ordinal, interval or  ratio (i.e.
    5210             :       the test could not be applied to nominal variables).
    5211             :     * the distribution should be continuous and symmetric relative to  its
    5212             :       median.
    5213             :     * number of distinct values in the X array should be greater than 4
    5214             : 
    5215             : The test is non-parametric and doesn't require distribution X to be normal
    5216             : 
    5217             : Input parameters:
    5218             :     X       -   sample. Array whose index goes from 0 to N-1.
    5219             :     N       -   size of the sample.
    5220             :     Median  -   assumed median value.
    5221             : 
    5222             : Output parameters:
    5223             :     BothTails   -   p-value for two-tailed test.
    5224             :                     If BothTails is less than the given significance level
    5225             :                     the null hypothesis is rejected.
    5226             :     LeftTail    -   p-value for left-tailed test.
    5227             :                     If LeftTail is less than the given significance level,
    5228             :                     the null hypothesis is rejected.
    5229             :     RightTail   -   p-value for right-tailed test.
    5230             :                     If RightTail is less than the given significance level
    5231             :                     the null hypothesis is rejected.
    5232             : 
    5233             : To calculate p-values, special approximation is used. This method lets  us
    5234             : calculate p-values with two decimal places in interval [0.0001, 1].
    5235             : 
    5236             : "Two decimal places" does not sound very impressive, but in  practice  the
    5237             : relative error of less than 1% is enough to make a decision.
    5238             : 
    5239             : There is no approximation outside the [0.0001, 1] interval. Therefore,  if
    5240             : the significance level outlies this interval, the test returns 0.0001.
    5241             : 
    5242             :   -- ALGLIB --
    5243             :      Copyright 08.09.2006 by Bochkanov Sergey
    5244             : *************************************************************************/
    5245           0 : void wilcoxonsignedranktest(/* Real    */ ae_vector* x,
    5246             :      ae_int_t n,
    5247             :      double e,
    5248             :      double* bothtails,
    5249             :      double* lefttail,
    5250             :      double* righttail,
    5251             :      ae_state *_state)
    5252             : {
    5253             :     ae_frame _frame_block;
    5254             :     ae_vector _x;
    5255             :     ae_int_t i;
    5256             :     ae_int_t j;
    5257             :     ae_int_t k;
    5258             :     ae_int_t t;
    5259             :     double tmp;
    5260             :     ae_int_t tmpi;
    5261             :     ae_int_t ns;
    5262             :     ae_vector r;
    5263             :     ae_vector c;
    5264             :     double w;
    5265             :     double p;
    5266             :     double mp;
    5267             :     double s;
    5268             :     double sigma;
    5269             :     double mu;
    5270             : 
    5271           0 :     ae_frame_make(_state, &_frame_block);
    5272           0 :     memset(&_x, 0, sizeof(_x));
    5273           0 :     memset(&r, 0, sizeof(r));
    5274           0 :     memset(&c, 0, sizeof(c));
    5275           0 :     ae_vector_init_copy(&_x, x, _state, ae_true);
    5276           0 :     x = &_x;
    5277           0 :     *bothtails = 0;
    5278           0 :     *lefttail = 0;
    5279           0 :     *righttail = 0;
    5280           0 :     ae_vector_init(&r, 0, DT_REAL, _state, ae_true);
    5281           0 :     ae_vector_init(&c, 0, DT_INT, _state, ae_true);
    5282             : 
    5283             :     
    5284             :     /*
    5285             :      * Prepare
    5286             :      */
    5287           0 :     if( n<5 )
    5288             :     {
    5289           0 :         *bothtails = 1.0;
    5290           0 :         *lefttail = 1.0;
    5291           0 :         *righttail = 1.0;
    5292           0 :         ae_frame_leave(_state);
    5293           0 :         return;
    5294             :     }
    5295           0 :     ns = 0;
    5296           0 :     for(i=0; i<=n-1; i++)
    5297             :     {
    5298           0 :         if( ae_fp_eq(x->ptr.p_double[i],e) )
    5299             :         {
    5300           0 :             continue;
    5301             :         }
    5302           0 :         x->ptr.p_double[ns] = x->ptr.p_double[i];
    5303           0 :         ns = ns+1;
    5304             :     }
    5305           0 :     if( ns<5 )
    5306             :     {
    5307           0 :         *bothtails = 1.0;
    5308           0 :         *lefttail = 1.0;
    5309           0 :         *righttail = 1.0;
    5310           0 :         ae_frame_leave(_state);
    5311           0 :         return;
    5312             :     }
    5313           0 :     ae_vector_set_length(&r, ns-1+1, _state);
    5314           0 :     ae_vector_set_length(&c, ns-1+1, _state);
    5315           0 :     for(i=0; i<=ns-1; i++)
    5316             :     {
    5317           0 :         r.ptr.p_double[i] = ae_fabs(x->ptr.p_double[i]-e, _state);
    5318           0 :         c.ptr.p_int[i] = i;
    5319             :     }
    5320             :     
    5321             :     /*
    5322             :      * sort {R, C}
    5323             :      */
    5324           0 :     if( ns!=1 )
    5325             :     {
    5326           0 :         i = 2;
    5327           0 :         do
    5328             :         {
    5329           0 :             t = i;
    5330           0 :             while(t!=1)
    5331             :             {
    5332           0 :                 k = t/2;
    5333           0 :                 if( ae_fp_greater_eq(r.ptr.p_double[k-1],r.ptr.p_double[t-1]) )
    5334             :                 {
    5335           0 :                     t = 1;
    5336             :                 }
    5337             :                 else
    5338             :                 {
    5339           0 :                     tmp = r.ptr.p_double[k-1];
    5340           0 :                     r.ptr.p_double[k-1] = r.ptr.p_double[t-1];
    5341           0 :                     r.ptr.p_double[t-1] = tmp;
    5342           0 :                     tmpi = c.ptr.p_int[k-1];
    5343           0 :                     c.ptr.p_int[k-1] = c.ptr.p_int[t-1];
    5344           0 :                     c.ptr.p_int[t-1] = tmpi;
    5345           0 :                     t = k;
    5346             :                 }
    5347             :             }
    5348           0 :             i = i+1;
    5349             :         }
    5350           0 :         while(i<=ns);
    5351           0 :         i = ns-1;
    5352           0 :         do
    5353             :         {
    5354           0 :             tmp = r.ptr.p_double[i];
    5355           0 :             r.ptr.p_double[i] = r.ptr.p_double[0];
    5356           0 :             r.ptr.p_double[0] = tmp;
    5357           0 :             tmpi = c.ptr.p_int[i];
    5358           0 :             c.ptr.p_int[i] = c.ptr.p_int[0];
    5359           0 :             c.ptr.p_int[0] = tmpi;
    5360           0 :             t = 1;
    5361           0 :             while(t!=0)
    5362             :             {
    5363           0 :                 k = 2*t;
    5364           0 :                 if( k>i )
    5365             :                 {
    5366           0 :                     t = 0;
    5367             :                 }
    5368             :                 else
    5369             :                 {
    5370           0 :                     if( k<i )
    5371             :                     {
    5372           0 :                         if( ae_fp_greater(r.ptr.p_double[k],r.ptr.p_double[k-1]) )
    5373             :                         {
    5374           0 :                             k = k+1;
    5375             :                         }
    5376             :                     }
    5377           0 :                     if( ae_fp_greater_eq(r.ptr.p_double[t-1],r.ptr.p_double[k-1]) )
    5378             :                     {
    5379           0 :                         t = 0;
    5380             :                     }
    5381             :                     else
    5382             :                     {
    5383           0 :                         tmp = r.ptr.p_double[k-1];
    5384           0 :                         r.ptr.p_double[k-1] = r.ptr.p_double[t-1];
    5385           0 :                         r.ptr.p_double[t-1] = tmp;
    5386           0 :                         tmpi = c.ptr.p_int[k-1];
    5387           0 :                         c.ptr.p_int[k-1] = c.ptr.p_int[t-1];
    5388           0 :                         c.ptr.p_int[t-1] = tmpi;
    5389           0 :                         t = k;
    5390             :                     }
    5391             :                 }
    5392             :             }
    5393           0 :             i = i-1;
    5394             :         }
    5395           0 :         while(i>=1);
    5396             :     }
    5397             :     
    5398             :     /*
    5399             :      * compute tied ranks
    5400             :      */
    5401           0 :     i = 0;
    5402           0 :     while(i<=ns-1)
    5403             :     {
    5404           0 :         j = i+1;
    5405           0 :         while(j<=ns-1)
    5406             :         {
    5407           0 :             if( ae_fp_neq(r.ptr.p_double[j],r.ptr.p_double[i]) )
    5408             :             {
    5409           0 :                 break;
    5410             :             }
    5411           0 :             j = j+1;
    5412             :         }
    5413           0 :         for(k=i; k<=j-1; k++)
    5414             :         {
    5415           0 :             r.ptr.p_double[k] = 1+(double)(i+j-1)/(double)2;
    5416             :         }
    5417           0 :         i = j;
    5418             :     }
    5419             :     
    5420             :     /*
    5421             :      * Compute W+
    5422             :      */
    5423           0 :     w = (double)(0);
    5424           0 :     for(i=0; i<=ns-1; i++)
    5425             :     {
    5426           0 :         if( ae_fp_greater(x->ptr.p_double[c.ptr.p_int[i]],e) )
    5427             :         {
    5428           0 :             w = w+r.ptr.p_double[i];
    5429             :         }
    5430             :     }
    5431             :     
    5432             :     /*
    5433             :      * Result
    5434             :      */
    5435           0 :     mu = rmul2((double)(ns), (double)(ns+1), _state)/4;
    5436           0 :     sigma = ae_sqrt(mu*(2*ns+1)/6, _state);
    5437           0 :     s = (w-mu)/sigma;
    5438           0 :     if( ae_fp_less_eq(s,(double)(0)) )
    5439             :     {
    5440           0 :         p = ae_exp(wsr_wsigma(-(w-mu)/sigma, ns, _state), _state);
    5441           0 :         mp = 1-ae_exp(wsr_wsigma(-(w-1-mu)/sigma, ns, _state), _state);
    5442             :     }
    5443             :     else
    5444             :     {
    5445           0 :         mp = ae_exp(wsr_wsigma((w-mu)/sigma, ns, _state), _state);
    5446           0 :         p = 1-ae_exp(wsr_wsigma((w+1-mu)/sigma, ns, _state), _state);
    5447             :     }
    5448           0 :     *lefttail = ae_maxreal(p, 1.0E-4, _state);
    5449           0 :     *righttail = ae_maxreal(mp, 1.0E-4, _state);
    5450           0 :     *bothtails = 2*ae_minreal(*lefttail, *righttail, _state);
    5451           0 :     ae_frame_leave(_state);
    5452             : }
    5453             : 
    5454             : 
    5455             : /*************************************************************************
    5456             : Sequential Chebyshev interpolation.
    5457             : *************************************************************************/
    5458           0 : static void wsr_wcheb(double x,
    5459             :      double c,
    5460             :      double* tj,
    5461             :      double* tj1,
    5462             :      double* r,
    5463             :      ae_state *_state)
    5464             : {
    5465             :     double t;
    5466             : 
    5467             : 
    5468           0 :     *r = *r+c*(*tj);
    5469           0 :     t = 2*x*(*tj1)-(*tj);
    5470           0 :     *tj = *tj1;
    5471           0 :     *tj1 = t;
    5472           0 : }
    5473             : 
    5474             : 
    5475             : /*************************************************************************
    5476             : Tail(S, 5)
    5477             : *************************************************************************/
    5478           0 : static double wsr_w5(double s, ae_state *_state)
    5479             : {
    5480             :     ae_int_t w;
    5481             :     double r;
    5482             :     double result;
    5483             : 
    5484             : 
    5485           0 :     r = (double)(0);
    5486           0 :     w = ae_round(-3.708099e+00*s+7.500000e+00, _state);
    5487           0 :     if( w>=7 )
    5488             :     {
    5489           0 :         r = -6.931e-01;
    5490             :     }
    5491           0 :     if( w==6 )
    5492             :     {
    5493           0 :         r = -9.008e-01;
    5494             :     }
    5495           0 :     if( w==5 )
    5496             :     {
    5497           0 :         r = -1.163e+00;
    5498             :     }
    5499           0 :     if( w==4 )
    5500             :     {
    5501           0 :         r = -1.520e+00;
    5502             :     }
    5503           0 :     if( w==3 )
    5504             :     {
    5505           0 :         r = -1.856e+00;
    5506             :     }
    5507           0 :     if( w==2 )
    5508             :     {
    5509           0 :         r = -2.367e+00;
    5510             :     }
    5511           0 :     if( w==1 )
    5512             :     {
    5513           0 :         r = -2.773e+00;
    5514             :     }
    5515           0 :     if( w<=0 )
    5516             :     {
    5517           0 :         r = -3.466e+00;
    5518             :     }
    5519           0 :     result = r;
    5520           0 :     return result;
    5521             : }
    5522             : 
    5523             : 
    5524             : /*************************************************************************
    5525             : Tail(S, 6)
    5526             : *************************************************************************/
    5527           0 : static double wsr_w6(double s, ae_state *_state)
    5528             : {
    5529             :     ae_int_t w;
    5530             :     double r;
    5531             :     double result;
    5532             : 
    5533             : 
    5534           0 :     r = (double)(0);
    5535           0 :     w = ae_round(-4.769696e+00*s+1.050000e+01, _state);
    5536           0 :     if( w>=10 )
    5537             :     {
    5538           0 :         r = -6.931e-01;
    5539             :     }
    5540           0 :     if( w==9 )
    5541             :     {
    5542           0 :         r = -8.630e-01;
    5543             :     }
    5544           0 :     if( w==8 )
    5545             :     {
    5546           0 :         r = -1.068e+00;
    5547             :     }
    5548           0 :     if( w==7 )
    5549             :     {
    5550           0 :         r = -1.269e+00;
    5551             :     }
    5552           0 :     if( w==6 )
    5553             :     {
    5554           0 :         r = -1.520e+00;
    5555             :     }
    5556           0 :     if( w==5 )
    5557             :     {
    5558           0 :         r = -1.856e+00;
    5559             :     }
    5560           0 :     if( w==4 )
    5561             :     {
    5562           0 :         r = -2.213e+00;
    5563             :     }
    5564           0 :     if( w==3 )
    5565             :     {
    5566           0 :         r = -2.549e+00;
    5567             :     }
    5568           0 :     if( w==2 )
    5569             :     {
    5570           0 :         r = -3.060e+00;
    5571             :     }
    5572           0 :     if( w==1 )
    5573             :     {
    5574           0 :         r = -3.466e+00;
    5575             :     }
    5576           0 :     if( w<=0 )
    5577             :     {
    5578           0 :         r = -4.159e+00;
    5579             :     }
    5580           0 :     result = r;
    5581           0 :     return result;
    5582             : }
    5583             : 
    5584             : 
    5585             : /*************************************************************************
    5586             : Tail(S, 7)
    5587             : *************************************************************************/
    5588           0 : static double wsr_w7(double s, ae_state *_state)
    5589             : {
    5590             :     ae_int_t w;
    5591             :     double r;
    5592             :     double result;
    5593             : 
    5594             : 
    5595           0 :     r = (double)(0);
    5596           0 :     w = ae_round(-5.916080e+00*s+1.400000e+01, _state);
    5597           0 :     if( w>=14 )
    5598             :     {
    5599           0 :         r = -6.325e-01;
    5600             :     }
    5601           0 :     if( w==13 )
    5602             :     {
    5603           0 :         r = -7.577e-01;
    5604             :     }
    5605           0 :     if( w==12 )
    5606             :     {
    5607           0 :         r = -9.008e-01;
    5608             :     }
    5609           0 :     if( w==11 )
    5610             :     {
    5611           0 :         r = -1.068e+00;
    5612             :     }
    5613           0 :     if( w==10 )
    5614             :     {
    5615           0 :         r = -1.241e+00;
    5616             :     }
    5617           0 :     if( w==9 )
    5618             :     {
    5619           0 :         r = -1.451e+00;
    5620             :     }
    5621           0 :     if( w==8 )
    5622             :     {
    5623           0 :         r = -1.674e+00;
    5624             :     }
    5625           0 :     if( w==7 )
    5626             :     {
    5627           0 :         r = -1.908e+00;
    5628             :     }
    5629           0 :     if( w==6 )
    5630             :     {
    5631           0 :         r = -2.213e+00;
    5632             :     }
    5633           0 :     if( w==5 )
    5634             :     {
    5635           0 :         r = -2.549e+00;
    5636             :     }
    5637           0 :     if( w==4 )
    5638             :     {
    5639           0 :         r = -2.906e+00;
    5640             :     }
    5641           0 :     if( w==3 )
    5642             :     {
    5643           0 :         r = -3.243e+00;
    5644             :     }
    5645           0 :     if( w==2 )
    5646             :     {
    5647           0 :         r = -3.753e+00;
    5648             :     }
    5649           0 :     if( w==1 )
    5650             :     {
    5651           0 :         r = -4.159e+00;
    5652             :     }
    5653           0 :     if( w<=0 )
    5654             :     {
    5655           0 :         r = -4.852e+00;
    5656             :     }
    5657           0 :     result = r;
    5658           0 :     return result;
    5659             : }
    5660             : 
    5661             : 
    5662             : /*************************************************************************
    5663             : Tail(S, 8)
    5664             : *************************************************************************/
    5665           0 : static double wsr_w8(double s, ae_state *_state)
    5666             : {
    5667             :     ae_int_t w;
    5668             :     double r;
    5669             :     double result;
    5670             : 
    5671             : 
    5672           0 :     r = (double)(0);
    5673           0 :     w = ae_round(-7.141428e+00*s+1.800000e+01, _state);
    5674           0 :     if( w>=18 )
    5675             :     {
    5676           0 :         r = -6.399e-01;
    5677             :     }
    5678           0 :     if( w==17 )
    5679             :     {
    5680           0 :         r = -7.494e-01;
    5681             :     }
    5682           0 :     if( w==16 )
    5683             :     {
    5684           0 :         r = -8.630e-01;
    5685             :     }
    5686           0 :     if( w==15 )
    5687             :     {
    5688           0 :         r = -9.913e-01;
    5689             :     }
    5690           0 :     if( w==14 )
    5691             :     {
    5692           0 :         r = -1.138e+00;
    5693             :     }
    5694           0 :     if( w==13 )
    5695             :     {
    5696           0 :         r = -1.297e+00;
    5697             :     }
    5698           0 :     if( w==12 )
    5699             :     {
    5700           0 :         r = -1.468e+00;
    5701             :     }
    5702           0 :     if( w==11 )
    5703             :     {
    5704           0 :         r = -1.653e+00;
    5705             :     }
    5706           0 :     if( w==10 )
    5707             :     {
    5708           0 :         r = -1.856e+00;
    5709             :     }
    5710           0 :     if( w==9 )
    5711             :     {
    5712           0 :         r = -2.079e+00;
    5713             :     }
    5714           0 :     if( w==8 )
    5715             :     {
    5716           0 :         r = -2.326e+00;
    5717             :     }
    5718           0 :     if( w==7 )
    5719             :     {
    5720           0 :         r = -2.601e+00;
    5721             :     }
    5722           0 :     if( w==6 )
    5723             :     {
    5724           0 :         r = -2.906e+00;
    5725             :     }
    5726           0 :     if( w==5 )
    5727             :     {
    5728           0 :         r = -3.243e+00;
    5729             :     }
    5730           0 :     if( w==4 )
    5731             :     {
    5732           0 :         r = -3.599e+00;
    5733             :     }
    5734           0 :     if( w==3 )
    5735             :     {
    5736           0 :         r = -3.936e+00;
    5737             :     }
    5738           0 :     if( w==2 )
    5739             :     {
    5740           0 :         r = -4.447e+00;
    5741             :     }
    5742           0 :     if( w==1 )
    5743             :     {
    5744           0 :         r = -4.852e+00;
    5745             :     }
    5746           0 :     if( w<=0 )
    5747             :     {
    5748           0 :         r = -5.545e+00;
    5749             :     }
    5750           0 :     result = r;
    5751           0 :     return result;
    5752             : }
    5753             : 
    5754             : 
    5755             : /*************************************************************************
    5756             : Tail(S, 9)
    5757             : *************************************************************************/
    5758           0 : static double wsr_w9(double s, ae_state *_state)
    5759             : {
    5760             :     ae_int_t w;
    5761             :     double r;
    5762             :     double result;
    5763             : 
    5764             : 
    5765           0 :     r = (double)(0);
    5766           0 :     w = ae_round(-8.440972e+00*s+2.250000e+01, _state);
    5767           0 :     if( w>=22 )
    5768             :     {
    5769           0 :         r = -6.931e-01;
    5770             :     }
    5771           0 :     if( w==21 )
    5772             :     {
    5773           0 :         r = -7.873e-01;
    5774             :     }
    5775           0 :     if( w==20 )
    5776             :     {
    5777           0 :         r = -8.912e-01;
    5778             :     }
    5779           0 :     if( w==19 )
    5780             :     {
    5781           0 :         r = -1.002e+00;
    5782             :     }
    5783           0 :     if( w==18 )
    5784             :     {
    5785           0 :         r = -1.120e+00;
    5786             :     }
    5787           0 :     if( w==17 )
    5788             :     {
    5789           0 :         r = -1.255e+00;
    5790             :     }
    5791           0 :     if( w==16 )
    5792             :     {
    5793           0 :         r = -1.394e+00;
    5794             :     }
    5795           0 :     if( w==15 )
    5796             :     {
    5797           0 :         r = -1.547e+00;
    5798             :     }
    5799           0 :     if( w==14 )
    5800             :     {
    5801           0 :         r = -1.717e+00;
    5802             :     }
    5803           0 :     if( w==13 )
    5804             :     {
    5805           0 :         r = -1.895e+00;
    5806             :     }
    5807           0 :     if( w==12 )
    5808             :     {
    5809           0 :         r = -2.079e+00;
    5810             :     }
    5811           0 :     if( w==11 )
    5812             :     {
    5813           0 :         r = -2.287e+00;
    5814             :     }
    5815           0 :     if( w==10 )
    5816             :     {
    5817           0 :         r = -2.501e+00;
    5818             :     }
    5819           0 :     if( w==9 )
    5820             :     {
    5821           0 :         r = -2.742e+00;
    5822             :     }
    5823           0 :     if( w==8 )
    5824             :     {
    5825           0 :         r = -3.019e+00;
    5826             :     }
    5827           0 :     if( w==7 )
    5828             :     {
    5829           0 :         r = -3.294e+00;
    5830             :     }
    5831           0 :     if( w==6 )
    5832             :     {
    5833           0 :         r = -3.599e+00;
    5834             :     }
    5835           0 :     if( w==5 )
    5836             :     {
    5837           0 :         r = -3.936e+00;
    5838             :     }
    5839           0 :     if( w==4 )
    5840             :     {
    5841           0 :         r = -4.292e+00;
    5842             :     }
    5843           0 :     if( w==3 )
    5844             :     {
    5845           0 :         r = -4.629e+00;
    5846             :     }
    5847           0 :     if( w==2 )
    5848             :     {
    5849           0 :         r = -5.140e+00;
    5850             :     }
    5851           0 :     if( w==1 )
    5852             :     {
    5853           0 :         r = -5.545e+00;
    5854             :     }
    5855           0 :     if( w<=0 )
    5856             :     {
    5857           0 :         r = -6.238e+00;
    5858             :     }
    5859           0 :     result = r;
    5860           0 :     return result;
    5861             : }
    5862             : 
    5863             : 
    5864             : /*************************************************************************
    5865             : Tail(S, 10)
    5866             : *************************************************************************/
    5867           0 : static double wsr_w10(double s, ae_state *_state)
    5868             : {
    5869             :     ae_int_t w;
    5870             :     double r;
    5871             :     double result;
    5872             : 
    5873             : 
    5874           0 :     r = (double)(0);
    5875           0 :     w = ae_round(-9.810708e+00*s+2.750000e+01, _state);
    5876           0 :     if( w>=27 )
    5877             :     {
    5878           0 :         r = -6.931e-01;
    5879             :     }
    5880           0 :     if( w==26 )
    5881             :     {
    5882           0 :         r = -7.745e-01;
    5883             :     }
    5884           0 :     if( w==25 )
    5885             :     {
    5886           0 :         r = -8.607e-01;
    5887             :     }
    5888           0 :     if( w==24 )
    5889             :     {
    5890           0 :         r = -9.551e-01;
    5891             :     }
    5892           0 :     if( w==23 )
    5893             :     {
    5894           0 :         r = -1.057e+00;
    5895             :     }
    5896           0 :     if( w==22 )
    5897             :     {
    5898           0 :         r = -1.163e+00;
    5899             :     }
    5900           0 :     if( w==21 )
    5901             :     {
    5902           0 :         r = -1.279e+00;
    5903             :     }
    5904           0 :     if( w==20 )
    5905             :     {
    5906           0 :         r = -1.402e+00;
    5907             :     }
    5908           0 :     if( w==19 )
    5909             :     {
    5910           0 :         r = -1.533e+00;
    5911             :     }
    5912           0 :     if( w==18 )
    5913             :     {
    5914           0 :         r = -1.674e+00;
    5915             :     }
    5916           0 :     if( w==17 )
    5917             :     {
    5918           0 :         r = -1.826e+00;
    5919             :     }
    5920           0 :     if( w==16 )
    5921             :     {
    5922           0 :         r = -1.983e+00;
    5923             :     }
    5924           0 :     if( w==15 )
    5925             :     {
    5926           0 :         r = -2.152e+00;
    5927             :     }
    5928           0 :     if( w==14 )
    5929             :     {
    5930           0 :         r = -2.336e+00;
    5931             :     }
    5932           0 :     if( w==13 )
    5933             :     {
    5934           0 :         r = -2.525e+00;
    5935             :     }
    5936           0 :     if( w==12 )
    5937             :     {
    5938           0 :         r = -2.727e+00;
    5939             :     }
    5940           0 :     if( w==11 )
    5941             :     {
    5942           0 :         r = -2.942e+00;
    5943             :     }
    5944           0 :     if( w==10 )
    5945             :     {
    5946           0 :         r = -3.170e+00;
    5947             :     }
    5948           0 :     if( w==9 )
    5949             :     {
    5950           0 :         r = -3.435e+00;
    5951             :     }
    5952           0 :     if( w==8 )
    5953             :     {
    5954           0 :         r = -3.713e+00;
    5955             :     }
    5956           0 :     if( w==7 )
    5957             :     {
    5958           0 :         r = -3.987e+00;
    5959             :     }
    5960           0 :     if( w==6 )
    5961             :     {
    5962           0 :         r = -4.292e+00;
    5963             :     }
    5964           0 :     if( w==5 )
    5965             :     {
    5966           0 :         r = -4.629e+00;
    5967             :     }
    5968           0 :     if( w==4 )
    5969             :     {
    5970           0 :         r = -4.986e+00;
    5971             :     }
    5972           0 :     if( w==3 )
    5973             :     {
    5974           0 :         r = -5.322e+00;
    5975             :     }
    5976           0 :     if( w==2 )
    5977             :     {
    5978           0 :         r = -5.833e+00;
    5979             :     }
    5980           0 :     if( w==1 )
    5981             :     {
    5982           0 :         r = -6.238e+00;
    5983             :     }
    5984           0 :     if( w<=0 )
    5985             :     {
    5986           0 :         r = -6.931e+00;
    5987             :     }
    5988           0 :     result = r;
    5989           0 :     return result;
    5990             : }
    5991             : 
    5992             : 
    5993             : /*************************************************************************
    5994             : Tail(S, 11)
    5995             : *************************************************************************/
    5996           0 : static double wsr_w11(double s, ae_state *_state)
    5997             : {
    5998             :     ae_int_t w;
    5999             :     double r;
    6000             :     double result;
    6001             : 
    6002             : 
    6003           0 :     r = (double)(0);
    6004           0 :     w = ae_round(-1.124722e+01*s+3.300000e+01, _state);
    6005           0 :     if( w>=33 )
    6006             :     {
    6007           0 :         r = -6.595e-01;
    6008             :     }
    6009           0 :     if( w==32 )
    6010             :     {
    6011           0 :         r = -7.279e-01;
    6012             :     }
    6013           0 :     if( w==31 )
    6014             :     {
    6015           0 :         r = -8.002e-01;
    6016             :     }
    6017           0 :     if( w==30 )
    6018             :     {
    6019           0 :         r = -8.782e-01;
    6020             :     }
    6021           0 :     if( w==29 )
    6022             :     {
    6023           0 :         r = -9.615e-01;
    6024             :     }
    6025           0 :     if( w==28 )
    6026             :     {
    6027           0 :         r = -1.050e+00;
    6028             :     }
    6029           0 :     if( w==27 )
    6030             :     {
    6031           0 :         r = -1.143e+00;
    6032             :     }
    6033           0 :     if( w==26 )
    6034             :     {
    6035           0 :         r = -1.243e+00;
    6036             :     }
    6037           0 :     if( w==25 )
    6038             :     {
    6039           0 :         r = -1.348e+00;
    6040             :     }
    6041           0 :     if( w==24 )
    6042             :     {
    6043           0 :         r = -1.459e+00;
    6044             :     }
    6045           0 :     if( w==23 )
    6046             :     {
    6047           0 :         r = -1.577e+00;
    6048             :     }
    6049           0 :     if( w==22 )
    6050             :     {
    6051           0 :         r = -1.700e+00;
    6052             :     }
    6053           0 :     if( w==21 )
    6054             :     {
    6055           0 :         r = -1.832e+00;
    6056             :     }
    6057           0 :     if( w==20 )
    6058             :     {
    6059           0 :         r = -1.972e+00;
    6060             :     }
    6061           0 :     if( w==19 )
    6062             :     {
    6063           0 :         r = -2.119e+00;
    6064             :     }
    6065           0 :     if( w==18 )
    6066             :     {
    6067           0 :         r = -2.273e+00;
    6068             :     }
    6069           0 :     if( w==17 )
    6070             :     {
    6071           0 :         r = -2.437e+00;
    6072             :     }
    6073           0 :     if( w==16 )
    6074             :     {
    6075           0 :         r = -2.607e+00;
    6076             :     }
    6077           0 :     if( w==15 )
    6078             :     {
    6079           0 :         r = -2.788e+00;
    6080             :     }
    6081           0 :     if( w==14 )
    6082             :     {
    6083           0 :         r = -2.980e+00;
    6084             :     }
    6085           0 :     if( w==13 )
    6086             :     {
    6087           0 :         r = -3.182e+00;
    6088             :     }
    6089           0 :     if( w==12 )
    6090             :     {
    6091           0 :         r = -3.391e+00;
    6092             :     }
    6093           0 :     if( w==11 )
    6094             :     {
    6095           0 :         r = -3.617e+00;
    6096             :     }
    6097           0 :     if( w==10 )
    6098             :     {
    6099           0 :         r = -3.863e+00;
    6100             :     }
    6101           0 :     if( w==9 )
    6102             :     {
    6103           0 :         r = -4.128e+00;
    6104             :     }
    6105           0 :     if( w==8 )
    6106             :     {
    6107           0 :         r = -4.406e+00;
    6108             :     }
    6109           0 :     if( w==7 )
    6110             :     {
    6111           0 :         r = -4.680e+00;
    6112             :     }
    6113           0 :     if( w==6 )
    6114             :     {
    6115           0 :         r = -4.986e+00;
    6116             :     }
    6117           0 :     if( w==5 )
    6118             :     {
    6119           0 :         r = -5.322e+00;
    6120             :     }
    6121           0 :     if( w==4 )
    6122             :     {
    6123           0 :         r = -5.679e+00;
    6124             :     }
    6125           0 :     if( w==3 )
    6126             :     {
    6127           0 :         r = -6.015e+00;
    6128             :     }
    6129           0 :     if( w==2 )
    6130             :     {
    6131           0 :         r = -6.526e+00;
    6132             :     }
    6133           0 :     if( w==1 )
    6134             :     {
    6135           0 :         r = -6.931e+00;
    6136             :     }
    6137           0 :     if( w<=0 )
    6138             :     {
    6139           0 :         r = -7.625e+00;
    6140             :     }
    6141           0 :     result = r;
    6142           0 :     return result;
    6143             : }
    6144             : 
    6145             : 
    6146             : /*************************************************************************
    6147             : Tail(S, 12)
    6148             : *************************************************************************/
    6149           0 : static double wsr_w12(double s, ae_state *_state)
    6150             : {
    6151             :     ae_int_t w;
    6152             :     double r;
    6153             :     double result;
    6154             : 
    6155             : 
    6156           0 :     r = (double)(0);
    6157           0 :     w = ae_round(-1.274755e+01*s+3.900000e+01, _state);
    6158           0 :     if( w>=39 )
    6159             :     {
    6160           0 :         r = -6.633e-01;
    6161             :     }
    6162           0 :     if( w==38 )
    6163             :     {
    6164           0 :         r = -7.239e-01;
    6165             :     }
    6166           0 :     if( w==37 )
    6167             :     {
    6168           0 :         r = -7.878e-01;
    6169             :     }
    6170           0 :     if( w==36 )
    6171             :     {
    6172           0 :         r = -8.556e-01;
    6173             :     }
    6174           0 :     if( w==35 )
    6175             :     {
    6176           0 :         r = -9.276e-01;
    6177             :     }
    6178           0 :     if( w==34 )
    6179             :     {
    6180           0 :         r = -1.003e+00;
    6181             :     }
    6182           0 :     if( w==33 )
    6183             :     {
    6184           0 :         r = -1.083e+00;
    6185             :     }
    6186           0 :     if( w==32 )
    6187             :     {
    6188           0 :         r = -1.168e+00;
    6189             :     }
    6190           0 :     if( w==31 )
    6191             :     {
    6192           0 :         r = -1.256e+00;
    6193             :     }
    6194           0 :     if( w==30 )
    6195             :     {
    6196           0 :         r = -1.350e+00;
    6197             :     }
    6198           0 :     if( w==29 )
    6199             :     {
    6200           0 :         r = -1.449e+00;
    6201             :     }
    6202           0 :     if( w==28 )
    6203             :     {
    6204           0 :         r = -1.552e+00;
    6205             :     }
    6206           0 :     if( w==27 )
    6207             :     {
    6208           0 :         r = -1.660e+00;
    6209             :     }
    6210           0 :     if( w==26 )
    6211             :     {
    6212           0 :         r = -1.774e+00;
    6213             :     }
    6214           0 :     if( w==25 )
    6215             :     {
    6216           0 :         r = -1.893e+00;
    6217             :     }
    6218           0 :     if( w==24 )
    6219             :     {
    6220           0 :         r = -2.017e+00;
    6221             :     }
    6222           0 :     if( w==23 )
    6223             :     {
    6224           0 :         r = -2.148e+00;
    6225             :     }
    6226           0 :     if( w==22 )
    6227             :     {
    6228           0 :         r = -2.285e+00;
    6229             :     }
    6230           0 :     if( w==21 )
    6231             :     {
    6232           0 :         r = -2.429e+00;
    6233             :     }
    6234           0 :     if( w==20 )
    6235             :     {
    6236           0 :         r = -2.581e+00;
    6237             :     }
    6238           0 :     if( w==19 )
    6239             :     {
    6240           0 :         r = -2.738e+00;
    6241             :     }
    6242           0 :     if( w==18 )
    6243             :     {
    6244           0 :         r = -2.902e+00;
    6245             :     }
    6246           0 :     if( w==17 )
    6247             :     {
    6248           0 :         r = -3.076e+00;
    6249             :     }
    6250           0 :     if( w==16 )
    6251             :     {
    6252           0 :         r = -3.255e+00;
    6253             :     }
    6254           0 :     if( w==15 )
    6255             :     {
    6256           0 :         r = -3.443e+00;
    6257             :     }
    6258           0 :     if( w==14 )
    6259             :     {
    6260           0 :         r = -3.645e+00;
    6261             :     }
    6262           0 :     if( w==13 )
    6263             :     {
    6264           0 :         r = -3.852e+00;
    6265             :     }
    6266           0 :     if( w==12 )
    6267             :     {
    6268           0 :         r = -4.069e+00;
    6269             :     }
    6270           0 :     if( w==11 )
    6271             :     {
    6272           0 :         r = -4.310e+00;
    6273             :     }
    6274           0 :     if( w==10 )
    6275             :     {
    6276           0 :         r = -4.557e+00;
    6277             :     }
    6278           0 :     if( w==9 )
    6279             :     {
    6280           0 :         r = -4.821e+00;
    6281             :     }
    6282           0 :     if( w==8 )
    6283             :     {
    6284           0 :         r = -5.099e+00;
    6285             :     }
    6286           0 :     if( w==7 )
    6287             :     {
    6288           0 :         r = -5.373e+00;
    6289             :     }
    6290           0 :     if( w==6 )
    6291             :     {
    6292           0 :         r = -5.679e+00;
    6293             :     }
    6294           0 :     if( w==5 )
    6295             :     {
    6296           0 :         r = -6.015e+00;
    6297             :     }
    6298           0 :     if( w==4 )
    6299             :     {
    6300           0 :         r = -6.372e+00;
    6301             :     }
    6302           0 :     if( w==3 )
    6303             :     {
    6304           0 :         r = -6.708e+00;
    6305             :     }
    6306           0 :     if( w==2 )
    6307             :     {
    6308           0 :         r = -7.219e+00;
    6309             :     }
    6310           0 :     if( w==1 )
    6311             :     {
    6312           0 :         r = -7.625e+00;
    6313             :     }
    6314           0 :     if( w<=0 )
    6315             :     {
    6316           0 :         r = -8.318e+00;
    6317             :     }
    6318           0 :     result = r;
    6319           0 :     return result;
    6320             : }
    6321             : 
    6322             : 
    6323             : /*************************************************************************
    6324             : Tail(S, 13)
    6325             : *************************************************************************/
    6326           0 : static double wsr_w13(double s, ae_state *_state)
    6327             : {
    6328             :     ae_int_t w;
    6329             :     double r;
    6330             :     double result;
    6331             : 
    6332             : 
    6333           0 :     r = (double)(0);
    6334           0 :     w = ae_round(-1.430909e+01*s+4.550000e+01, _state);
    6335           0 :     if( w>=45 )
    6336             :     {
    6337           0 :         r = -6.931e-01;
    6338             :     }
    6339           0 :     if( w==44 )
    6340             :     {
    6341           0 :         r = -7.486e-01;
    6342             :     }
    6343           0 :     if( w==43 )
    6344             :     {
    6345           0 :         r = -8.068e-01;
    6346             :     }
    6347           0 :     if( w==42 )
    6348             :     {
    6349           0 :         r = -8.683e-01;
    6350             :     }
    6351           0 :     if( w==41 )
    6352             :     {
    6353           0 :         r = -9.328e-01;
    6354             :     }
    6355           0 :     if( w==40 )
    6356             :     {
    6357           0 :         r = -1.001e+00;
    6358             :     }
    6359           0 :     if( w==39 )
    6360             :     {
    6361           0 :         r = -1.072e+00;
    6362             :     }
    6363           0 :     if( w==38 )
    6364             :     {
    6365           0 :         r = -1.146e+00;
    6366             :     }
    6367           0 :     if( w==37 )
    6368             :     {
    6369           0 :         r = -1.224e+00;
    6370             :     }
    6371           0 :     if( w==36 )
    6372             :     {
    6373           0 :         r = -1.306e+00;
    6374             :     }
    6375           0 :     if( w==35 )
    6376             :     {
    6377           0 :         r = -1.392e+00;
    6378             :     }
    6379           0 :     if( w==34 )
    6380             :     {
    6381           0 :         r = -1.481e+00;
    6382             :     }
    6383           0 :     if( w==33 )
    6384             :     {
    6385           0 :         r = -1.574e+00;
    6386             :     }
    6387           0 :     if( w==32 )
    6388             :     {
    6389           0 :         r = -1.672e+00;
    6390             :     }
    6391           0 :     if( w==31 )
    6392             :     {
    6393           0 :         r = -1.773e+00;
    6394             :     }
    6395           0 :     if( w==30 )
    6396             :     {
    6397           0 :         r = -1.879e+00;
    6398             :     }
    6399           0 :     if( w==29 )
    6400             :     {
    6401           0 :         r = -1.990e+00;
    6402             :     }
    6403           0 :     if( w==28 )
    6404             :     {
    6405           0 :         r = -2.104e+00;
    6406             :     }
    6407           0 :     if( w==27 )
    6408             :     {
    6409           0 :         r = -2.224e+00;
    6410             :     }
    6411           0 :     if( w==26 )
    6412             :     {
    6413           0 :         r = -2.349e+00;
    6414             :     }
    6415           0 :     if( w==25 )
    6416             :     {
    6417           0 :         r = -2.479e+00;
    6418             :     }
    6419           0 :     if( w==24 )
    6420             :     {
    6421           0 :         r = -2.614e+00;
    6422             :     }
    6423           0 :     if( w==23 )
    6424             :     {
    6425           0 :         r = -2.755e+00;
    6426             :     }
    6427           0 :     if( w==22 )
    6428             :     {
    6429           0 :         r = -2.902e+00;
    6430             :     }
    6431           0 :     if( w==21 )
    6432             :     {
    6433           0 :         r = -3.055e+00;
    6434             :     }
    6435           0 :     if( w==20 )
    6436             :     {
    6437           0 :         r = -3.215e+00;
    6438             :     }
    6439           0 :     if( w==19 )
    6440             :     {
    6441           0 :         r = -3.380e+00;
    6442             :     }
    6443           0 :     if( w==18 )
    6444             :     {
    6445           0 :         r = -3.551e+00;
    6446             :     }
    6447           0 :     if( w==17 )
    6448             :     {
    6449           0 :         r = -3.733e+00;
    6450             :     }
    6451           0 :     if( w==16 )
    6452             :     {
    6453           0 :         r = -3.917e+00;
    6454             :     }
    6455           0 :     if( w==15 )
    6456             :     {
    6457           0 :         r = -4.113e+00;
    6458             :     }
    6459           0 :     if( w==14 )
    6460             :     {
    6461           0 :         r = -4.320e+00;
    6462             :     }
    6463           0 :     if( w==13 )
    6464             :     {
    6465           0 :         r = -4.534e+00;
    6466             :     }
    6467           0 :     if( w==12 )
    6468             :     {
    6469           0 :         r = -4.762e+00;
    6470             :     }
    6471           0 :     if( w==11 )
    6472             :     {
    6473           0 :         r = -5.004e+00;
    6474             :     }
    6475           0 :     if( w==10 )
    6476             :     {
    6477           0 :         r = -5.250e+00;
    6478             :     }
    6479           0 :     if( w==9 )
    6480             :     {
    6481           0 :         r = -5.514e+00;
    6482             :     }
    6483           0 :     if( w==8 )
    6484             :     {
    6485           0 :         r = -5.792e+00;
    6486             :     }
    6487           0 :     if( w==7 )
    6488             :     {
    6489           0 :         r = -6.066e+00;
    6490             :     }
    6491           0 :     if( w==6 )
    6492             :     {
    6493           0 :         r = -6.372e+00;
    6494             :     }
    6495           0 :     if( w==5 )
    6496             :     {
    6497           0 :         r = -6.708e+00;
    6498             :     }
    6499           0 :     if( w==4 )
    6500             :     {
    6501           0 :         r = -7.065e+00;
    6502             :     }
    6503           0 :     if( w==3 )
    6504             :     {
    6505           0 :         r = -7.401e+00;
    6506             :     }
    6507           0 :     if( w==2 )
    6508             :     {
    6509           0 :         r = -7.912e+00;
    6510             :     }
    6511           0 :     if( w==1 )
    6512             :     {
    6513           0 :         r = -8.318e+00;
    6514             :     }
    6515           0 :     if( w<=0 )
    6516             :     {
    6517           0 :         r = -9.011e+00;
    6518             :     }
    6519           0 :     result = r;
    6520           0 :     return result;
    6521             : }
    6522             : 
    6523             : 
    6524             : /*************************************************************************
    6525             : Tail(S, 14)
    6526             : *************************************************************************/
    6527           0 : static double wsr_w14(double s, ae_state *_state)
    6528             : {
    6529             :     ae_int_t w;
    6530             :     double r;
    6531             :     double result;
    6532             : 
    6533             : 
    6534           0 :     r = (double)(0);
    6535           0 :     w = ae_round(-1.592953e+01*s+5.250000e+01, _state);
    6536           0 :     if( w>=52 )
    6537             :     {
    6538           0 :         r = -6.931e-01;
    6539             :     }
    6540           0 :     if( w==51 )
    6541             :     {
    6542           0 :         r = -7.428e-01;
    6543             :     }
    6544           0 :     if( w==50 )
    6545             :     {
    6546           0 :         r = -7.950e-01;
    6547             :     }
    6548           0 :     if( w==49 )
    6549             :     {
    6550           0 :         r = -8.495e-01;
    6551             :     }
    6552           0 :     if( w==48 )
    6553             :     {
    6554           0 :         r = -9.067e-01;
    6555             :     }
    6556           0 :     if( w==47 )
    6557             :     {
    6558           0 :         r = -9.664e-01;
    6559             :     }
    6560           0 :     if( w==46 )
    6561             :     {
    6562           0 :         r = -1.029e+00;
    6563             :     }
    6564           0 :     if( w==45 )
    6565             :     {
    6566           0 :         r = -1.094e+00;
    6567             :     }
    6568           0 :     if( w==44 )
    6569             :     {
    6570           0 :         r = -1.162e+00;
    6571             :     }
    6572           0 :     if( w==43 )
    6573             :     {
    6574           0 :         r = -1.233e+00;
    6575             :     }
    6576           0 :     if( w==42 )
    6577             :     {
    6578           0 :         r = -1.306e+00;
    6579             :     }
    6580           0 :     if( w==41 )
    6581             :     {
    6582           0 :         r = -1.383e+00;
    6583             :     }
    6584           0 :     if( w==40 )
    6585             :     {
    6586           0 :         r = -1.463e+00;
    6587             :     }
    6588           0 :     if( w==39 )
    6589             :     {
    6590           0 :         r = -1.546e+00;
    6591             :     }
    6592           0 :     if( w==38 )
    6593             :     {
    6594           0 :         r = -1.632e+00;
    6595             :     }
    6596           0 :     if( w==37 )
    6597             :     {
    6598           0 :         r = -1.722e+00;
    6599             :     }
    6600           0 :     if( w==36 )
    6601             :     {
    6602           0 :         r = -1.815e+00;
    6603             :     }
    6604           0 :     if( w==35 )
    6605             :     {
    6606           0 :         r = -1.911e+00;
    6607             :     }
    6608           0 :     if( w==34 )
    6609             :     {
    6610           0 :         r = -2.011e+00;
    6611             :     }
    6612           0 :     if( w==33 )
    6613             :     {
    6614           0 :         r = -2.115e+00;
    6615             :     }
    6616           0 :     if( w==32 )
    6617             :     {
    6618           0 :         r = -2.223e+00;
    6619             :     }
    6620           0 :     if( w==31 )
    6621             :     {
    6622           0 :         r = -2.334e+00;
    6623             :     }
    6624           0 :     if( w==30 )
    6625             :     {
    6626           0 :         r = -2.450e+00;
    6627             :     }
    6628           0 :     if( w==29 )
    6629             :     {
    6630           0 :         r = -2.570e+00;
    6631             :     }
    6632           0 :     if( w==28 )
    6633             :     {
    6634           0 :         r = -2.694e+00;
    6635             :     }
    6636           0 :     if( w==27 )
    6637             :     {
    6638           0 :         r = -2.823e+00;
    6639             :     }
    6640           0 :     if( w==26 )
    6641             :     {
    6642           0 :         r = -2.956e+00;
    6643             :     }
    6644           0 :     if( w==25 )
    6645             :     {
    6646           0 :         r = -3.095e+00;
    6647             :     }
    6648           0 :     if( w==24 )
    6649             :     {
    6650           0 :         r = -3.238e+00;
    6651             :     }
    6652           0 :     if( w==23 )
    6653             :     {
    6654           0 :         r = -3.387e+00;
    6655             :     }
    6656           0 :     if( w==22 )
    6657             :     {
    6658           0 :         r = -3.541e+00;
    6659             :     }
    6660           0 :     if( w==21 )
    6661             :     {
    6662           0 :         r = -3.700e+00;
    6663             :     }
    6664           0 :     if( w==20 )
    6665             :     {
    6666           0 :         r = -3.866e+00;
    6667             :     }
    6668           0 :     if( w==19 )
    6669             :     {
    6670           0 :         r = -4.038e+00;
    6671             :     }
    6672           0 :     if( w==18 )
    6673             :     {
    6674           0 :         r = -4.215e+00;
    6675             :     }
    6676           0 :     if( w==17 )
    6677             :     {
    6678           0 :         r = -4.401e+00;
    6679             :     }
    6680           0 :     if( w==16 )
    6681             :     {
    6682           0 :         r = -4.592e+00;
    6683             :     }
    6684           0 :     if( w==15 )
    6685             :     {
    6686           0 :         r = -4.791e+00;
    6687             :     }
    6688           0 :     if( w==14 )
    6689             :     {
    6690           0 :         r = -5.004e+00;
    6691             :     }
    6692           0 :     if( w==13 )
    6693             :     {
    6694           0 :         r = -5.227e+00;
    6695             :     }
    6696           0 :     if( w==12 )
    6697             :     {
    6698           0 :         r = -5.456e+00;
    6699             :     }
    6700           0 :     if( w==11 )
    6701             :     {
    6702           0 :         r = -5.697e+00;
    6703             :     }
    6704           0 :     if( w==10 )
    6705             :     {
    6706           0 :         r = -5.943e+00;
    6707             :     }
    6708           0 :     if( w==9 )
    6709             :     {
    6710           0 :         r = -6.208e+00;
    6711             :     }
    6712           0 :     if( w==8 )
    6713             :     {
    6714           0 :         r = -6.485e+00;
    6715             :     }
    6716           0 :     if( w==7 )
    6717             :     {
    6718           0 :         r = -6.760e+00;
    6719             :     }
    6720           0 :     if( w==6 )
    6721             :     {
    6722           0 :         r = -7.065e+00;
    6723             :     }
    6724           0 :     if( w==5 )
    6725             :     {
    6726           0 :         r = -7.401e+00;
    6727             :     }
    6728           0 :     if( w==4 )
    6729             :     {
    6730           0 :         r = -7.758e+00;
    6731             :     }
    6732           0 :     if( w==3 )
    6733             :     {
    6734           0 :         r = -8.095e+00;
    6735             :     }
    6736           0 :     if( w==2 )
    6737             :     {
    6738           0 :         r = -8.605e+00;
    6739             :     }
    6740           0 :     if( w==1 )
    6741             :     {
    6742           0 :         r = -9.011e+00;
    6743             :     }
    6744           0 :     if( w<=0 )
    6745             :     {
    6746           0 :         r = -9.704e+00;
    6747             :     }
    6748           0 :     result = r;
    6749           0 :     return result;
    6750             : }
    6751             : 
    6752             : 
    6753             : /*************************************************************************
    6754             : Tail(S, 15)
    6755             : *************************************************************************/
    6756           0 : static double wsr_w15(double s, ae_state *_state)
    6757             : {
    6758             :     ae_int_t w;
    6759             :     double r;
    6760             :     double result;
    6761             : 
    6762             : 
    6763           0 :     r = (double)(0);
    6764           0 :     w = ae_round(-1.760682e+01*s+6.000000e+01, _state);
    6765           0 :     if( w>=60 )
    6766             :     {
    6767           0 :         r = -6.714e-01;
    6768             :     }
    6769           0 :     if( w==59 )
    6770             :     {
    6771           0 :         r = -7.154e-01;
    6772             :     }
    6773           0 :     if( w==58 )
    6774             :     {
    6775           0 :         r = -7.613e-01;
    6776             :     }
    6777           0 :     if( w==57 )
    6778             :     {
    6779           0 :         r = -8.093e-01;
    6780             :     }
    6781           0 :     if( w==56 )
    6782             :     {
    6783           0 :         r = -8.593e-01;
    6784             :     }
    6785           0 :     if( w==55 )
    6786             :     {
    6787           0 :         r = -9.114e-01;
    6788             :     }
    6789           0 :     if( w==54 )
    6790             :     {
    6791           0 :         r = -9.656e-01;
    6792             :     }
    6793           0 :     if( w==53 )
    6794             :     {
    6795           0 :         r = -1.022e+00;
    6796             :     }
    6797           0 :     if( w==52 )
    6798             :     {
    6799           0 :         r = -1.081e+00;
    6800             :     }
    6801           0 :     if( w==51 )
    6802             :     {
    6803           0 :         r = -1.142e+00;
    6804             :     }
    6805           0 :     if( w==50 )
    6806             :     {
    6807           0 :         r = -1.205e+00;
    6808             :     }
    6809           0 :     if( w==49 )
    6810             :     {
    6811           0 :         r = -1.270e+00;
    6812             :     }
    6813           0 :     if( w==48 )
    6814             :     {
    6815           0 :         r = -1.339e+00;
    6816             :     }
    6817           0 :     if( w==47 )
    6818             :     {
    6819           0 :         r = -1.409e+00;
    6820             :     }
    6821           0 :     if( w==46 )
    6822             :     {
    6823           0 :         r = -1.482e+00;
    6824             :     }
    6825           0 :     if( w==45 )
    6826             :     {
    6827           0 :         r = -1.558e+00;
    6828             :     }
    6829           0 :     if( w==44 )
    6830             :     {
    6831           0 :         r = -1.636e+00;
    6832             :     }
    6833           0 :     if( w==43 )
    6834             :     {
    6835           0 :         r = -1.717e+00;
    6836             :     }
    6837           0 :     if( w==42 )
    6838             :     {
    6839           0 :         r = -1.801e+00;
    6840             :     }
    6841           0 :     if( w==41 )
    6842             :     {
    6843           0 :         r = -1.888e+00;
    6844             :     }
    6845           0 :     if( w==40 )
    6846             :     {
    6847           0 :         r = -1.977e+00;
    6848             :     }
    6849           0 :     if( w==39 )
    6850             :     {
    6851           0 :         r = -2.070e+00;
    6852             :     }
    6853           0 :     if( w==38 )
    6854             :     {
    6855           0 :         r = -2.166e+00;
    6856             :     }
    6857           0 :     if( w==37 )
    6858             :     {
    6859           0 :         r = -2.265e+00;
    6860             :     }
    6861           0 :     if( w==36 )
    6862             :     {
    6863           0 :         r = -2.366e+00;
    6864             :     }
    6865           0 :     if( w==35 )
    6866             :     {
    6867           0 :         r = -2.472e+00;
    6868             :     }
    6869           0 :     if( w==34 )
    6870             :     {
    6871           0 :         r = -2.581e+00;
    6872             :     }
    6873           0 :     if( w==33 )
    6874             :     {
    6875           0 :         r = -2.693e+00;
    6876             :     }
    6877           0 :     if( w==32 )
    6878             :     {
    6879           0 :         r = -2.809e+00;
    6880             :     }
    6881           0 :     if( w==31 )
    6882             :     {
    6883           0 :         r = -2.928e+00;
    6884             :     }
    6885           0 :     if( w==30 )
    6886             :     {
    6887           0 :         r = -3.051e+00;
    6888             :     }
    6889           0 :     if( w==29 )
    6890             :     {
    6891           0 :         r = -3.179e+00;
    6892             :     }
    6893           0 :     if( w==28 )
    6894             :     {
    6895           0 :         r = -3.310e+00;
    6896             :     }
    6897           0 :     if( w==27 )
    6898             :     {
    6899           0 :         r = -3.446e+00;
    6900             :     }
    6901           0 :     if( w==26 )
    6902             :     {
    6903           0 :         r = -3.587e+00;
    6904             :     }
    6905           0 :     if( w==25 )
    6906             :     {
    6907           0 :         r = -3.732e+00;
    6908             :     }
    6909           0 :     if( w==24 )
    6910             :     {
    6911           0 :         r = -3.881e+00;
    6912             :     }
    6913           0 :     if( w==23 )
    6914             :     {
    6915           0 :         r = -4.036e+00;
    6916             :     }
    6917           0 :     if( w==22 )
    6918             :     {
    6919           0 :         r = -4.195e+00;
    6920             :     }
    6921           0 :     if( w==21 )
    6922             :     {
    6923           0 :         r = -4.359e+00;
    6924             :     }
    6925           0 :     if( w==20 )
    6926             :     {
    6927           0 :         r = -4.531e+00;
    6928             :     }
    6929           0 :     if( w==19 )
    6930             :     {
    6931           0 :         r = -4.707e+00;
    6932             :     }
    6933           0 :     if( w==18 )
    6934             :     {
    6935           0 :         r = -4.888e+00;
    6936             :     }
    6937           0 :     if( w==17 )
    6938             :     {
    6939           0 :         r = -5.079e+00;
    6940             :     }
    6941           0 :     if( w==16 )
    6942             :     {
    6943           0 :         r = -5.273e+00;
    6944             :     }
    6945           0 :     if( w==15 )
    6946             :     {
    6947           0 :         r = -5.477e+00;
    6948             :     }
    6949           0 :     if( w==14 )
    6950             :     {
    6951           0 :         r = -5.697e+00;
    6952             :     }
    6953           0 :     if( w==13 )
    6954             :     {
    6955           0 :         r = -5.920e+00;
    6956             :     }
    6957           0 :     if( w==12 )
    6958             :     {
    6959           0 :         r = -6.149e+00;
    6960             :     }
    6961           0 :     if( w==11 )
    6962             :     {
    6963           0 :         r = -6.390e+00;
    6964             :     }
    6965           0 :     if( w==10 )
    6966             :     {
    6967           0 :         r = -6.636e+00;
    6968             :     }
    6969           0 :     if( w==9 )
    6970             :     {
    6971           0 :         r = -6.901e+00;
    6972             :     }
    6973           0 :     if( w==8 )
    6974             :     {
    6975           0 :         r = -7.178e+00;
    6976             :     }
    6977           0 :     if( w==7 )
    6978             :     {
    6979           0 :         r = -7.453e+00;
    6980             :     }
    6981           0 :     if( w==6 )
    6982             :     {
    6983           0 :         r = -7.758e+00;
    6984             :     }
    6985           0 :     if( w==5 )
    6986             :     {
    6987           0 :         r = -8.095e+00;
    6988             :     }
    6989           0 :     if( w==4 )
    6990             :     {
    6991           0 :         r = -8.451e+00;
    6992             :     }
    6993           0 :     if( w==3 )
    6994             :     {
    6995           0 :         r = -8.788e+00;
    6996             :     }
    6997           0 :     if( w==2 )
    6998             :     {
    6999           0 :         r = -9.299e+00;
    7000             :     }
    7001           0 :     if( w==1 )
    7002             :     {
    7003           0 :         r = -9.704e+00;
    7004             :     }
    7005           0 :     if( w<=0 )
    7006             :     {
    7007           0 :         r = -1.040e+01;
    7008             :     }
    7009           0 :     result = r;
    7010           0 :     return result;
    7011             : }
    7012             : 
    7013             : 
    7014             : /*************************************************************************
    7015             : Tail(S, 16)
    7016             : *************************************************************************/
    7017           0 : static double wsr_w16(double s, ae_state *_state)
    7018             : {
    7019             :     ae_int_t w;
    7020             :     double r;
    7021             :     double result;
    7022             : 
    7023             : 
    7024           0 :     r = (double)(0);
    7025           0 :     w = ae_round(-1.933908e+01*s+6.800000e+01, _state);
    7026           0 :     if( w>=68 )
    7027             :     {
    7028           0 :         r = -6.733e-01;
    7029             :     }
    7030           0 :     if( w==67 )
    7031             :     {
    7032           0 :         r = -7.134e-01;
    7033             :     }
    7034           0 :     if( w==66 )
    7035             :     {
    7036           0 :         r = -7.551e-01;
    7037             :     }
    7038           0 :     if( w==65 )
    7039             :     {
    7040           0 :         r = -7.986e-01;
    7041             :     }
    7042           0 :     if( w==64 )
    7043             :     {
    7044           0 :         r = -8.437e-01;
    7045             :     }
    7046           0 :     if( w==63 )
    7047             :     {
    7048           0 :         r = -8.905e-01;
    7049             :     }
    7050           0 :     if( w==62 )
    7051             :     {
    7052           0 :         r = -9.391e-01;
    7053             :     }
    7054           0 :     if( w==61 )
    7055             :     {
    7056           0 :         r = -9.895e-01;
    7057             :     }
    7058           0 :     if( w==60 )
    7059             :     {
    7060           0 :         r = -1.042e+00;
    7061             :     }
    7062           0 :     if( w==59 )
    7063             :     {
    7064           0 :         r = -1.096e+00;
    7065             :     }
    7066           0 :     if( w==58 )
    7067             :     {
    7068           0 :         r = -1.152e+00;
    7069             :     }
    7070           0 :     if( w==57 )
    7071             :     {
    7072           0 :         r = -1.210e+00;
    7073             :     }
    7074           0 :     if( w==56 )
    7075             :     {
    7076           0 :         r = -1.270e+00;
    7077             :     }
    7078           0 :     if( w==55 )
    7079             :     {
    7080           0 :         r = -1.331e+00;
    7081             :     }
    7082           0 :     if( w==54 )
    7083             :     {
    7084           0 :         r = -1.395e+00;
    7085             :     }
    7086           0 :     if( w==53 )
    7087             :     {
    7088           0 :         r = -1.462e+00;
    7089             :     }
    7090           0 :     if( w==52 )
    7091             :     {
    7092           0 :         r = -1.530e+00;
    7093             :     }
    7094           0 :     if( w==51 )
    7095             :     {
    7096           0 :         r = -1.600e+00;
    7097             :     }
    7098           0 :     if( w==50 )
    7099             :     {
    7100           0 :         r = -1.673e+00;
    7101             :     }
    7102           0 :     if( w==49 )
    7103             :     {
    7104           0 :         r = -1.748e+00;
    7105             :     }
    7106           0 :     if( w==48 )
    7107             :     {
    7108           0 :         r = -1.825e+00;
    7109             :     }
    7110           0 :     if( w==47 )
    7111             :     {
    7112           0 :         r = -1.904e+00;
    7113             :     }
    7114           0 :     if( w==46 )
    7115             :     {
    7116           0 :         r = -1.986e+00;
    7117             :     }
    7118           0 :     if( w==45 )
    7119             :     {
    7120           0 :         r = -2.071e+00;
    7121             :     }
    7122           0 :     if( w==44 )
    7123             :     {
    7124           0 :         r = -2.158e+00;
    7125             :     }
    7126           0 :     if( w==43 )
    7127             :     {
    7128           0 :         r = -2.247e+00;
    7129             :     }
    7130           0 :     if( w==42 )
    7131             :     {
    7132           0 :         r = -2.339e+00;
    7133             :     }
    7134           0 :     if( w==41 )
    7135             :     {
    7136           0 :         r = -2.434e+00;
    7137             :     }
    7138           0 :     if( w==40 )
    7139             :     {
    7140           0 :         r = -2.532e+00;
    7141             :     }
    7142           0 :     if( w==39 )
    7143             :     {
    7144           0 :         r = -2.632e+00;
    7145             :     }
    7146           0 :     if( w==38 )
    7147             :     {
    7148           0 :         r = -2.735e+00;
    7149             :     }
    7150           0 :     if( w==37 )
    7151             :     {
    7152           0 :         r = -2.842e+00;
    7153             :     }
    7154           0 :     if( w==36 )
    7155             :     {
    7156           0 :         r = -2.951e+00;
    7157             :     }
    7158           0 :     if( w==35 )
    7159             :     {
    7160           0 :         r = -3.064e+00;
    7161             :     }
    7162           0 :     if( w==34 )
    7163             :     {
    7164           0 :         r = -3.179e+00;
    7165             :     }
    7166           0 :     if( w==33 )
    7167             :     {
    7168           0 :         r = -3.298e+00;
    7169             :     }
    7170           0 :     if( w==32 )
    7171             :     {
    7172           0 :         r = -3.420e+00;
    7173             :     }
    7174           0 :     if( w==31 )
    7175             :     {
    7176           0 :         r = -3.546e+00;
    7177             :     }
    7178           0 :     if( w==30 )
    7179             :     {
    7180           0 :         r = -3.676e+00;
    7181             :     }
    7182           0 :     if( w==29 )
    7183             :     {
    7184           0 :         r = -3.810e+00;
    7185             :     }
    7186           0 :     if( w==28 )
    7187             :     {
    7188           0 :         r = -3.947e+00;
    7189             :     }
    7190           0 :     if( w==27 )
    7191             :     {
    7192           0 :         r = -4.088e+00;
    7193             :     }
    7194           0 :     if( w==26 )
    7195             :     {
    7196           0 :         r = -4.234e+00;
    7197             :     }
    7198           0 :     if( w==25 )
    7199             :     {
    7200           0 :         r = -4.383e+00;
    7201             :     }
    7202           0 :     if( w==24 )
    7203             :     {
    7204           0 :         r = -4.538e+00;
    7205             :     }
    7206           0 :     if( w==23 )
    7207             :     {
    7208           0 :         r = -4.697e+00;
    7209             :     }
    7210           0 :     if( w==22 )
    7211             :     {
    7212           0 :         r = -4.860e+00;
    7213             :     }
    7214           0 :     if( w==21 )
    7215             :     {
    7216           0 :         r = -5.029e+00;
    7217             :     }
    7218           0 :     if( w==20 )
    7219             :     {
    7220           0 :         r = -5.204e+00;
    7221             :     }
    7222           0 :     if( w==19 )
    7223             :     {
    7224           0 :         r = -5.383e+00;
    7225             :     }
    7226           0 :     if( w==18 )
    7227             :     {
    7228           0 :         r = -5.569e+00;
    7229             :     }
    7230           0 :     if( w==17 )
    7231             :     {
    7232           0 :         r = -5.762e+00;
    7233             :     }
    7234           0 :     if( w==16 )
    7235             :     {
    7236           0 :         r = -5.960e+00;
    7237             :     }
    7238           0 :     if( w==15 )
    7239             :     {
    7240           0 :         r = -6.170e+00;
    7241             :     }
    7242           0 :     if( w==14 )
    7243             :     {
    7244           0 :         r = -6.390e+00;
    7245             :     }
    7246           0 :     if( w==13 )
    7247             :     {
    7248           0 :         r = -6.613e+00;
    7249             :     }
    7250           0 :     if( w==12 )
    7251             :     {
    7252           0 :         r = -6.842e+00;
    7253             :     }
    7254           0 :     if( w==11 )
    7255             :     {
    7256           0 :         r = -7.083e+00;
    7257             :     }
    7258           0 :     if( w==10 )
    7259             :     {
    7260           0 :         r = -7.329e+00;
    7261             :     }
    7262           0 :     if( w==9 )
    7263             :     {
    7264           0 :         r = -7.594e+00;
    7265             :     }
    7266           0 :     if( w==8 )
    7267             :     {
    7268           0 :         r = -7.871e+00;
    7269             :     }
    7270           0 :     if( w==7 )
    7271             :     {
    7272           0 :         r = -8.146e+00;
    7273             :     }
    7274           0 :     if( w==6 )
    7275             :     {
    7276           0 :         r = -8.451e+00;
    7277             :     }
    7278           0 :     if( w==5 )
    7279             :     {
    7280           0 :         r = -8.788e+00;
    7281             :     }
    7282           0 :     if( w==4 )
    7283             :     {
    7284           0 :         r = -9.144e+00;
    7285             :     }
    7286           0 :     if( w==3 )
    7287             :     {
    7288           0 :         r = -9.481e+00;
    7289             :     }
    7290           0 :     if( w==2 )
    7291             :     {
    7292           0 :         r = -9.992e+00;
    7293             :     }
    7294           0 :     if( w==1 )
    7295             :     {
    7296           0 :         r = -1.040e+01;
    7297             :     }
    7298           0 :     if( w<=0 )
    7299             :     {
    7300           0 :         r = -1.109e+01;
    7301             :     }
    7302           0 :     result = r;
    7303           0 :     return result;
    7304             : }
    7305             : 
    7306             : 
    7307             : /*************************************************************************
    7308             : Tail(S, 17)
    7309             : *************************************************************************/
    7310           0 : static double wsr_w17(double s, ae_state *_state)
    7311             : {
    7312             :     ae_int_t w;
    7313             :     double r;
    7314             :     double result;
    7315             : 
    7316             : 
    7317           0 :     r = (double)(0);
    7318           0 :     w = ae_round(-2.112463e+01*s+7.650000e+01, _state);
    7319           0 :     if( w>=76 )
    7320             :     {
    7321           0 :         r = -6.931e-01;
    7322             :     }
    7323           0 :     if( w==75 )
    7324             :     {
    7325           0 :         r = -7.306e-01;
    7326             :     }
    7327           0 :     if( w==74 )
    7328             :     {
    7329           0 :         r = -7.695e-01;
    7330             :     }
    7331           0 :     if( w==73 )
    7332             :     {
    7333           0 :         r = -8.097e-01;
    7334             :     }
    7335           0 :     if( w==72 )
    7336             :     {
    7337           0 :         r = -8.514e-01;
    7338             :     }
    7339           0 :     if( w==71 )
    7340             :     {
    7341           0 :         r = -8.946e-01;
    7342             :     }
    7343           0 :     if( w==70 )
    7344             :     {
    7345           0 :         r = -9.392e-01;
    7346             :     }
    7347           0 :     if( w==69 )
    7348             :     {
    7349           0 :         r = -9.853e-01;
    7350             :     }
    7351           0 :     if( w==68 )
    7352             :     {
    7353           0 :         r = -1.033e+00;
    7354             :     }
    7355           0 :     if( w==67 )
    7356             :     {
    7357           0 :         r = -1.082e+00;
    7358             :     }
    7359           0 :     if( w==66 )
    7360             :     {
    7361           0 :         r = -1.133e+00;
    7362             :     }
    7363           0 :     if( w==65 )
    7364             :     {
    7365           0 :         r = -1.185e+00;
    7366             :     }
    7367           0 :     if( w==64 )
    7368             :     {
    7369           0 :         r = -1.240e+00;
    7370             :     }
    7371           0 :     if( w==63 )
    7372             :     {
    7373           0 :         r = -1.295e+00;
    7374             :     }
    7375           0 :     if( w==62 )
    7376             :     {
    7377           0 :         r = -1.353e+00;
    7378             :     }
    7379           0 :     if( w==61 )
    7380             :     {
    7381           0 :         r = -1.412e+00;
    7382             :     }
    7383           0 :     if( w==60 )
    7384             :     {
    7385           0 :         r = -1.473e+00;
    7386             :     }
    7387           0 :     if( w==59 )
    7388             :     {
    7389           0 :         r = -1.536e+00;
    7390             :     }
    7391           0 :     if( w==58 )
    7392             :     {
    7393           0 :         r = -1.600e+00;
    7394             :     }
    7395           0 :     if( w==57 )
    7396             :     {
    7397           0 :         r = -1.666e+00;
    7398             :     }
    7399           0 :     if( w==56 )
    7400             :     {
    7401           0 :         r = -1.735e+00;
    7402             :     }
    7403           0 :     if( w==55 )
    7404             :     {
    7405           0 :         r = -1.805e+00;
    7406             :     }
    7407           0 :     if( w==54 )
    7408             :     {
    7409           0 :         r = -1.877e+00;
    7410             :     }
    7411           0 :     if( w==53 )
    7412             :     {
    7413           0 :         r = -1.951e+00;
    7414             :     }
    7415           0 :     if( w==52 )
    7416             :     {
    7417           0 :         r = -2.028e+00;
    7418             :     }
    7419           0 :     if( w==51 )
    7420             :     {
    7421           0 :         r = -2.106e+00;
    7422             :     }
    7423           0 :     if( w==50 )
    7424             :     {
    7425           0 :         r = -2.186e+00;
    7426             :     }
    7427           0 :     if( w==49 )
    7428             :     {
    7429           0 :         r = -2.269e+00;
    7430             :     }
    7431           0 :     if( w==48 )
    7432             :     {
    7433           0 :         r = -2.353e+00;
    7434             :     }
    7435           0 :     if( w==47 )
    7436             :     {
    7437           0 :         r = -2.440e+00;
    7438             :     }
    7439           0 :     if( w==46 )
    7440             :     {
    7441           0 :         r = -2.530e+00;
    7442             :     }
    7443           0 :     if( w==45 )
    7444             :     {
    7445           0 :         r = -2.621e+00;
    7446             :     }
    7447           0 :     if( w==44 )
    7448             :     {
    7449           0 :         r = -2.715e+00;
    7450             :     }
    7451           0 :     if( w==43 )
    7452             :     {
    7453           0 :         r = -2.812e+00;
    7454             :     }
    7455           0 :     if( w==42 )
    7456             :     {
    7457           0 :         r = -2.911e+00;
    7458             :     }
    7459           0 :     if( w==41 )
    7460             :     {
    7461           0 :         r = -3.012e+00;
    7462             :     }
    7463           0 :     if( w==40 )
    7464             :     {
    7465           0 :         r = -3.116e+00;
    7466             :     }
    7467           0 :     if( w==39 )
    7468             :     {
    7469           0 :         r = -3.223e+00;
    7470             :     }
    7471           0 :     if( w==38 )
    7472             :     {
    7473           0 :         r = -3.332e+00;
    7474             :     }
    7475           0 :     if( w==37 )
    7476             :     {
    7477           0 :         r = -3.445e+00;
    7478             :     }
    7479           0 :     if( w==36 )
    7480             :     {
    7481           0 :         r = -3.560e+00;
    7482             :     }
    7483           0 :     if( w==35 )
    7484             :     {
    7485           0 :         r = -3.678e+00;
    7486             :     }
    7487           0 :     if( w==34 )
    7488             :     {
    7489           0 :         r = -3.799e+00;
    7490             :     }
    7491           0 :     if( w==33 )
    7492             :     {
    7493           0 :         r = -3.924e+00;
    7494             :     }
    7495           0 :     if( w==32 )
    7496             :     {
    7497           0 :         r = -4.052e+00;
    7498             :     }
    7499           0 :     if( w==31 )
    7500             :     {
    7501           0 :         r = -4.183e+00;
    7502             :     }
    7503           0 :     if( w==30 )
    7504             :     {
    7505           0 :         r = -4.317e+00;
    7506             :     }
    7507           0 :     if( w==29 )
    7508             :     {
    7509           0 :         r = -4.456e+00;
    7510             :     }
    7511           0 :     if( w==28 )
    7512             :     {
    7513           0 :         r = -4.597e+00;
    7514             :     }
    7515           0 :     if( w==27 )
    7516             :     {
    7517           0 :         r = -4.743e+00;
    7518             :     }
    7519           0 :     if( w==26 )
    7520             :     {
    7521           0 :         r = -4.893e+00;
    7522             :     }
    7523           0 :     if( w==25 )
    7524             :     {
    7525           0 :         r = -5.047e+00;
    7526             :     }
    7527           0 :     if( w==24 )
    7528             :     {
    7529           0 :         r = -5.204e+00;
    7530             :     }
    7531           0 :     if( w==23 )
    7532             :     {
    7533           0 :         r = -5.367e+00;
    7534             :     }
    7535           0 :     if( w==22 )
    7536             :     {
    7537           0 :         r = -5.534e+00;
    7538             :     }
    7539           0 :     if( w==21 )
    7540             :     {
    7541           0 :         r = -5.706e+00;
    7542             :     }
    7543           0 :     if( w==20 )
    7544             :     {
    7545           0 :         r = -5.884e+00;
    7546             :     }
    7547           0 :     if( w==19 )
    7548             :     {
    7549           0 :         r = -6.066e+00;
    7550             :     }
    7551           0 :     if( w==18 )
    7552             :     {
    7553           0 :         r = -6.254e+00;
    7554             :     }
    7555           0 :     if( w==17 )
    7556             :     {
    7557           0 :         r = -6.451e+00;
    7558             :     }
    7559           0 :     if( w==16 )
    7560             :     {
    7561           0 :         r = -6.654e+00;
    7562             :     }
    7563           0 :     if( w==15 )
    7564             :     {
    7565           0 :         r = -6.864e+00;
    7566             :     }
    7567           0 :     if( w==14 )
    7568             :     {
    7569           0 :         r = -7.083e+00;
    7570             :     }
    7571           0 :     if( w==13 )
    7572             :     {
    7573           0 :         r = -7.306e+00;
    7574             :     }
    7575           0 :     if( w==12 )
    7576             :     {
    7577           0 :         r = -7.535e+00;
    7578             :     }
    7579           0 :     if( w==11 )
    7580             :     {
    7581           0 :         r = -7.776e+00;
    7582             :     }
    7583           0 :     if( w==10 )
    7584             :     {
    7585           0 :         r = -8.022e+00;
    7586             :     }
    7587           0 :     if( w==9 )
    7588             :     {
    7589           0 :         r = -8.287e+00;
    7590             :     }
    7591           0 :     if( w==8 )
    7592             :     {
    7593           0 :         r = -8.565e+00;
    7594             :     }
    7595           0 :     if( w==7 )
    7596             :     {
    7597           0 :         r = -8.839e+00;
    7598             :     }
    7599           0 :     if( w==6 )
    7600             :     {
    7601           0 :         r = -9.144e+00;
    7602             :     }
    7603           0 :     if( w==5 )
    7604             :     {
    7605           0 :         r = -9.481e+00;
    7606             :     }
    7607           0 :     if( w==4 )
    7608             :     {
    7609           0 :         r = -9.838e+00;
    7610             :     }
    7611           0 :     if( w==3 )
    7612             :     {
    7613           0 :         r = -1.017e+01;
    7614             :     }
    7615           0 :     if( w==2 )
    7616             :     {
    7617           0 :         r = -1.068e+01;
    7618             :     }
    7619           0 :     if( w==1 )
    7620             :     {
    7621           0 :         r = -1.109e+01;
    7622             :     }
    7623           0 :     if( w<=0 )
    7624             :     {
    7625           0 :         r = -1.178e+01;
    7626             :     }
    7627           0 :     result = r;
    7628           0 :     return result;
    7629             : }
    7630             : 
    7631             : 
    7632             : /*************************************************************************
    7633             : Tail(S, 18)
    7634             : *************************************************************************/
    7635           0 : static double wsr_w18(double s, ae_state *_state)
    7636             : {
    7637             :     ae_int_t w;
    7638             :     double r;
    7639             :     double result;
    7640             : 
    7641             : 
    7642           0 :     r = (double)(0);
    7643           0 :     w = ae_round(-2.296193e+01*s+8.550000e+01, _state);
    7644           0 :     if( w>=85 )
    7645             :     {
    7646           0 :         r = -6.931e-01;
    7647             :     }
    7648           0 :     if( w==84 )
    7649             :     {
    7650           0 :         r = -7.276e-01;
    7651             :     }
    7652           0 :     if( w==83 )
    7653             :     {
    7654           0 :         r = -7.633e-01;
    7655             :     }
    7656           0 :     if( w==82 )
    7657             :     {
    7658           0 :         r = -8.001e-01;
    7659             :     }
    7660           0 :     if( w==81 )
    7661             :     {
    7662           0 :         r = -8.381e-01;
    7663             :     }
    7664           0 :     if( w==80 )
    7665             :     {
    7666           0 :         r = -8.774e-01;
    7667             :     }
    7668           0 :     if( w==79 )
    7669             :     {
    7670           0 :         r = -9.179e-01;
    7671             :     }
    7672           0 :     if( w==78 )
    7673             :     {
    7674           0 :         r = -9.597e-01;
    7675             :     }
    7676           0 :     if( w==77 )
    7677             :     {
    7678           0 :         r = -1.003e+00;
    7679             :     }
    7680           0 :     if( w==76 )
    7681             :     {
    7682           0 :         r = -1.047e+00;
    7683             :     }
    7684           0 :     if( w==75 )
    7685             :     {
    7686           0 :         r = -1.093e+00;
    7687             :     }
    7688           0 :     if( w==74 )
    7689             :     {
    7690           0 :         r = -1.140e+00;
    7691             :     }
    7692           0 :     if( w==73 )
    7693             :     {
    7694           0 :         r = -1.188e+00;
    7695             :     }
    7696           0 :     if( w==72 )
    7697             :     {
    7698           0 :         r = -1.238e+00;
    7699             :     }
    7700           0 :     if( w==71 )
    7701             :     {
    7702           0 :         r = -1.289e+00;
    7703             :     }
    7704           0 :     if( w==70 )
    7705             :     {
    7706           0 :         r = -1.342e+00;
    7707             :     }
    7708           0 :     if( w==69 )
    7709             :     {
    7710           0 :         r = -1.396e+00;
    7711             :     }
    7712           0 :     if( w==68 )
    7713             :     {
    7714           0 :         r = -1.452e+00;
    7715             :     }
    7716           0 :     if( w==67 )
    7717             :     {
    7718           0 :         r = -1.509e+00;
    7719             :     }
    7720           0 :     if( w==66 )
    7721             :     {
    7722           0 :         r = -1.568e+00;
    7723             :     }
    7724           0 :     if( w==65 )
    7725             :     {
    7726           0 :         r = -1.628e+00;
    7727             :     }
    7728           0 :     if( w==64 )
    7729             :     {
    7730           0 :         r = -1.690e+00;
    7731             :     }
    7732           0 :     if( w==63 )
    7733             :     {
    7734           0 :         r = -1.753e+00;
    7735             :     }
    7736           0 :     if( w==62 )
    7737             :     {
    7738           0 :         r = -1.818e+00;
    7739             :     }
    7740           0 :     if( w==61 )
    7741             :     {
    7742           0 :         r = -1.885e+00;
    7743             :     }
    7744           0 :     if( w==60 )
    7745             :     {
    7746           0 :         r = -1.953e+00;
    7747             :     }
    7748           0 :     if( w==59 )
    7749             :     {
    7750           0 :         r = -2.023e+00;
    7751             :     }
    7752           0 :     if( w==58 )
    7753             :     {
    7754           0 :         r = -2.095e+00;
    7755             :     }
    7756           0 :     if( w==57 )
    7757             :     {
    7758           0 :         r = -2.168e+00;
    7759             :     }
    7760           0 :     if( w==56 )
    7761             :     {
    7762           0 :         r = -2.244e+00;
    7763             :     }
    7764           0 :     if( w==55 )
    7765             :     {
    7766           0 :         r = -2.321e+00;
    7767             :     }
    7768           0 :     if( w==54 )
    7769             :     {
    7770           0 :         r = -2.400e+00;
    7771             :     }
    7772           0 :     if( w==53 )
    7773             :     {
    7774           0 :         r = -2.481e+00;
    7775             :     }
    7776           0 :     if( w==52 )
    7777             :     {
    7778           0 :         r = -2.564e+00;
    7779             :     }
    7780           0 :     if( w==51 )
    7781             :     {
    7782           0 :         r = -2.648e+00;
    7783             :     }
    7784           0 :     if( w==50 )
    7785             :     {
    7786           0 :         r = -2.735e+00;
    7787             :     }
    7788           0 :     if( w==49 )
    7789             :     {
    7790           0 :         r = -2.824e+00;
    7791             :     }
    7792           0 :     if( w==48 )
    7793             :     {
    7794           0 :         r = -2.915e+00;
    7795             :     }
    7796           0 :     if( w==47 )
    7797             :     {
    7798           0 :         r = -3.008e+00;
    7799             :     }
    7800           0 :     if( w==46 )
    7801             :     {
    7802           0 :         r = -3.104e+00;
    7803             :     }
    7804           0 :     if( w==45 )
    7805             :     {
    7806           0 :         r = -3.201e+00;
    7807             :     }
    7808           0 :     if( w==44 )
    7809             :     {
    7810           0 :         r = -3.301e+00;
    7811             :     }
    7812           0 :     if( w==43 )
    7813             :     {
    7814           0 :         r = -3.403e+00;
    7815             :     }
    7816           0 :     if( w==42 )
    7817             :     {
    7818           0 :         r = -3.508e+00;
    7819             :     }
    7820           0 :     if( w==41 )
    7821             :     {
    7822           0 :         r = -3.615e+00;
    7823             :     }
    7824           0 :     if( w==40 )
    7825             :     {
    7826           0 :         r = -3.724e+00;
    7827             :     }
    7828           0 :     if( w==39 )
    7829             :     {
    7830           0 :         r = -3.836e+00;
    7831             :     }
    7832           0 :     if( w==38 )
    7833             :     {
    7834           0 :         r = -3.950e+00;
    7835             :     }
    7836           0 :     if( w==37 )
    7837             :     {
    7838           0 :         r = -4.068e+00;
    7839             :     }
    7840           0 :     if( w==36 )
    7841             :     {
    7842           0 :         r = -4.188e+00;
    7843             :     }
    7844           0 :     if( w==35 )
    7845             :     {
    7846           0 :         r = -4.311e+00;
    7847             :     }
    7848           0 :     if( w==34 )
    7849             :     {
    7850           0 :         r = -4.437e+00;
    7851             :     }
    7852           0 :     if( w==33 )
    7853             :     {
    7854           0 :         r = -4.565e+00;
    7855             :     }
    7856           0 :     if( w==32 )
    7857             :     {
    7858           0 :         r = -4.698e+00;
    7859             :     }
    7860           0 :     if( w==31 )
    7861             :     {
    7862           0 :         r = -4.833e+00;
    7863             :     }
    7864           0 :     if( w==30 )
    7865             :     {
    7866           0 :         r = -4.971e+00;
    7867             :     }
    7868           0 :     if( w==29 )
    7869             :     {
    7870           0 :         r = -5.113e+00;
    7871             :     }
    7872           0 :     if( w==28 )
    7873             :     {
    7874           0 :         r = -5.258e+00;
    7875             :     }
    7876           0 :     if( w==27 )
    7877             :     {
    7878           0 :         r = -5.408e+00;
    7879             :     }
    7880           0 :     if( w==26 )
    7881             :     {
    7882           0 :         r = -5.561e+00;
    7883             :     }
    7884           0 :     if( w==25 )
    7885             :     {
    7886           0 :         r = -5.717e+00;
    7887             :     }
    7888           0 :     if( w==24 )
    7889             :     {
    7890           0 :         r = -5.878e+00;
    7891             :     }
    7892           0 :     if( w==23 )
    7893             :     {
    7894           0 :         r = -6.044e+00;
    7895             :     }
    7896           0 :     if( w==22 )
    7897             :     {
    7898           0 :         r = -6.213e+00;
    7899             :     }
    7900           0 :     if( w==21 )
    7901             :     {
    7902           0 :         r = -6.388e+00;
    7903             :     }
    7904           0 :     if( w==20 )
    7905             :     {
    7906           0 :         r = -6.569e+00;
    7907             :     }
    7908           0 :     if( w==19 )
    7909             :     {
    7910           0 :         r = -6.753e+00;
    7911             :     }
    7912           0 :     if( w==18 )
    7913             :     {
    7914           0 :         r = -6.943e+00;
    7915             :     }
    7916           0 :     if( w==17 )
    7917             :     {
    7918           0 :         r = -7.144e+00;
    7919             :     }
    7920           0 :     if( w==16 )
    7921             :     {
    7922           0 :         r = -7.347e+00;
    7923             :     }
    7924           0 :     if( w==15 )
    7925             :     {
    7926           0 :         r = -7.557e+00;
    7927             :     }
    7928           0 :     if( w==14 )
    7929             :     {
    7930           0 :         r = -7.776e+00;
    7931             :     }
    7932           0 :     if( w==13 )
    7933             :     {
    7934           0 :         r = -7.999e+00;
    7935             :     }
    7936           0 :     if( w==12 )
    7937             :     {
    7938           0 :         r = -8.228e+00;
    7939             :     }
    7940           0 :     if( w==11 )
    7941             :     {
    7942           0 :         r = -8.469e+00;
    7943             :     }
    7944           0 :     if( w==10 )
    7945             :     {
    7946           0 :         r = -8.715e+00;
    7947             :     }
    7948           0 :     if( w==9 )
    7949             :     {
    7950           0 :         r = -8.980e+00;
    7951             :     }
    7952           0 :     if( w==8 )
    7953             :     {
    7954           0 :         r = -9.258e+00;
    7955             :     }
    7956           0 :     if( w==7 )
    7957             :     {
    7958           0 :         r = -9.532e+00;
    7959             :     }
    7960           0 :     if( w==6 )
    7961             :     {
    7962           0 :         r = -9.838e+00;
    7963             :     }
    7964           0 :     if( w==5 )
    7965             :     {
    7966           0 :         r = -1.017e+01;
    7967             :     }
    7968           0 :     if( w==4 )
    7969             :     {
    7970           0 :         r = -1.053e+01;
    7971             :     }
    7972           0 :     if( w==3 )
    7973             :     {
    7974           0 :         r = -1.087e+01;
    7975             :     }
    7976           0 :     if( w==2 )
    7977             :     {
    7978           0 :         r = -1.138e+01;
    7979             :     }
    7980           0 :     if( w==1 )
    7981             :     {
    7982           0 :         r = -1.178e+01;
    7983             :     }
    7984           0 :     if( w<=0 )
    7985             :     {
    7986           0 :         r = -1.248e+01;
    7987             :     }
    7988           0 :     result = r;
    7989           0 :     return result;
    7990             : }
    7991             : 
    7992             : 
    7993             : /*************************************************************************
    7994             : Tail(S, 19)
    7995             : *************************************************************************/
    7996           0 : static double wsr_w19(double s, ae_state *_state)
    7997             : {
    7998             :     ae_int_t w;
    7999             :     double r;
    8000             :     double result;
    8001             : 
    8002             : 
    8003           0 :     r = (double)(0);
    8004           0 :     w = ae_round(-2.484955e+01*s+9.500000e+01, _state);
    8005           0 :     if( w>=95 )
    8006             :     {
    8007           0 :         r = -6.776e-01;
    8008             :     }
    8009           0 :     if( w==94 )
    8010             :     {
    8011           0 :         r = -7.089e-01;
    8012             :     }
    8013           0 :     if( w==93 )
    8014             :     {
    8015           0 :         r = -7.413e-01;
    8016             :     }
    8017           0 :     if( w==92 )
    8018             :     {
    8019           0 :         r = -7.747e-01;
    8020             :     }
    8021           0 :     if( w==91 )
    8022             :     {
    8023           0 :         r = -8.090e-01;
    8024             :     }
    8025           0 :     if( w==90 )
    8026             :     {
    8027           0 :         r = -8.445e-01;
    8028             :     }
    8029           0 :     if( w==89 )
    8030             :     {
    8031           0 :         r = -8.809e-01;
    8032             :     }
    8033           0 :     if( w==88 )
    8034             :     {
    8035           0 :         r = -9.185e-01;
    8036             :     }
    8037           0 :     if( w==87 )
    8038             :     {
    8039           0 :         r = -9.571e-01;
    8040             :     }
    8041           0 :     if( w==86 )
    8042             :     {
    8043           0 :         r = -9.968e-01;
    8044             :     }
    8045           0 :     if( w==85 )
    8046             :     {
    8047           0 :         r = -1.038e+00;
    8048             :     }
    8049           0 :     if( w==84 )
    8050             :     {
    8051           0 :         r = -1.080e+00;
    8052             :     }
    8053           0 :     if( w==83 )
    8054             :     {
    8055           0 :         r = -1.123e+00;
    8056             :     }
    8057           0 :     if( w==82 )
    8058             :     {
    8059           0 :         r = -1.167e+00;
    8060             :     }
    8061           0 :     if( w==81 )
    8062             :     {
    8063           0 :         r = -1.213e+00;
    8064             :     }
    8065           0 :     if( w==80 )
    8066             :     {
    8067           0 :         r = -1.259e+00;
    8068             :     }
    8069           0 :     if( w==79 )
    8070             :     {
    8071           0 :         r = -1.307e+00;
    8072             :     }
    8073           0 :     if( w==78 )
    8074             :     {
    8075           0 :         r = -1.356e+00;
    8076             :     }
    8077           0 :     if( w==77 )
    8078             :     {
    8079           0 :         r = -1.407e+00;
    8080             :     }
    8081           0 :     if( w==76 )
    8082             :     {
    8083           0 :         r = -1.458e+00;
    8084             :     }
    8085           0 :     if( w==75 )
    8086             :     {
    8087           0 :         r = -1.511e+00;
    8088             :     }
    8089           0 :     if( w==74 )
    8090             :     {
    8091           0 :         r = -1.565e+00;
    8092             :     }
    8093           0 :     if( w==73 )
    8094             :     {
    8095           0 :         r = -1.621e+00;
    8096             :     }
    8097           0 :     if( w==72 )
    8098             :     {
    8099           0 :         r = -1.678e+00;
    8100             :     }
    8101           0 :     if( w==71 )
    8102             :     {
    8103           0 :         r = -1.736e+00;
    8104             :     }
    8105           0 :     if( w==70 )
    8106             :     {
    8107           0 :         r = -1.796e+00;
    8108             :     }
    8109           0 :     if( w==69 )
    8110             :     {
    8111           0 :         r = -1.857e+00;
    8112             :     }
    8113           0 :     if( w==68 )
    8114             :     {
    8115           0 :         r = -1.919e+00;
    8116             :     }
    8117           0 :     if( w==67 )
    8118             :     {
    8119           0 :         r = -1.983e+00;
    8120             :     }
    8121           0 :     if( w==66 )
    8122             :     {
    8123           0 :         r = -2.048e+00;
    8124             :     }
    8125           0 :     if( w==65 )
    8126             :     {
    8127           0 :         r = -2.115e+00;
    8128             :     }
    8129           0 :     if( w==64 )
    8130             :     {
    8131           0 :         r = -2.183e+00;
    8132             :     }
    8133           0 :     if( w==63 )
    8134             :     {
    8135           0 :         r = -2.253e+00;
    8136             :     }
    8137           0 :     if( w==62 )
    8138             :     {
    8139           0 :         r = -2.325e+00;
    8140             :     }
    8141           0 :     if( w==61 )
    8142             :     {
    8143           0 :         r = -2.398e+00;
    8144             :     }
    8145           0 :     if( w==60 )
    8146             :     {
    8147           0 :         r = -2.472e+00;
    8148             :     }
    8149           0 :     if( w==59 )
    8150             :     {
    8151           0 :         r = -2.548e+00;
    8152             :     }
    8153           0 :     if( w==58 )
    8154             :     {
    8155           0 :         r = -2.626e+00;
    8156             :     }
    8157           0 :     if( w==57 )
    8158             :     {
    8159           0 :         r = -2.706e+00;
    8160             :     }
    8161           0 :     if( w==56 )
    8162             :     {
    8163           0 :         r = -2.787e+00;
    8164             :     }
    8165           0 :     if( w==55 )
    8166             :     {
    8167           0 :         r = -2.870e+00;
    8168             :     }
    8169           0 :     if( w==54 )
    8170             :     {
    8171           0 :         r = -2.955e+00;
    8172             :     }
    8173           0 :     if( w==53 )
    8174             :     {
    8175           0 :         r = -3.042e+00;
    8176             :     }
    8177           0 :     if( w==52 )
    8178             :     {
    8179           0 :         r = -3.130e+00;
    8180             :     }
    8181           0 :     if( w==51 )
    8182             :     {
    8183           0 :         r = -3.220e+00;
    8184             :     }
    8185           0 :     if( w==50 )
    8186             :     {
    8187           0 :         r = -3.313e+00;
    8188             :     }
    8189           0 :     if( w==49 )
    8190             :     {
    8191           0 :         r = -3.407e+00;
    8192             :     }
    8193           0 :     if( w==48 )
    8194             :     {
    8195           0 :         r = -3.503e+00;
    8196             :     }
    8197           0 :     if( w==47 )
    8198             :     {
    8199           0 :         r = -3.601e+00;
    8200             :     }
    8201           0 :     if( w==46 )
    8202             :     {
    8203           0 :         r = -3.702e+00;
    8204             :     }
    8205           0 :     if( w==45 )
    8206             :     {
    8207           0 :         r = -3.804e+00;
    8208             :     }
    8209           0 :     if( w==44 )
    8210             :     {
    8211           0 :         r = -3.909e+00;
    8212             :     }
    8213           0 :     if( w==43 )
    8214             :     {
    8215           0 :         r = -4.015e+00;
    8216             :     }
    8217           0 :     if( w==42 )
    8218             :     {
    8219           0 :         r = -4.125e+00;
    8220             :     }
    8221           0 :     if( w==41 )
    8222             :     {
    8223           0 :         r = -4.236e+00;
    8224             :     }
    8225           0 :     if( w==40 )
    8226             :     {
    8227           0 :         r = -4.350e+00;
    8228             :     }
    8229           0 :     if( w==39 )
    8230             :     {
    8231           0 :         r = -4.466e+00;
    8232             :     }
    8233           0 :     if( w==38 )
    8234             :     {
    8235           0 :         r = -4.585e+00;
    8236             :     }
    8237           0 :     if( w==37 )
    8238             :     {
    8239           0 :         r = -4.706e+00;
    8240             :     }
    8241           0 :     if( w==36 )
    8242             :     {
    8243           0 :         r = -4.830e+00;
    8244             :     }
    8245           0 :     if( w==35 )
    8246             :     {
    8247           0 :         r = -4.957e+00;
    8248             :     }
    8249           0 :     if( w==34 )
    8250             :     {
    8251           0 :         r = -5.086e+00;
    8252             :     }
    8253           0 :     if( w==33 )
    8254             :     {
    8255           0 :         r = -5.219e+00;
    8256             :     }
    8257           0 :     if( w==32 )
    8258             :     {
    8259           0 :         r = -5.355e+00;
    8260             :     }
    8261           0 :     if( w==31 )
    8262             :     {
    8263           0 :         r = -5.493e+00;
    8264             :     }
    8265           0 :     if( w==30 )
    8266             :     {
    8267           0 :         r = -5.634e+00;
    8268             :     }
    8269           0 :     if( w==29 )
    8270             :     {
    8271           0 :         r = -5.780e+00;
    8272             :     }
    8273           0 :     if( w==28 )
    8274             :     {
    8275           0 :         r = -5.928e+00;
    8276             :     }
    8277           0 :     if( w==27 )
    8278             :     {
    8279           0 :         r = -6.080e+00;
    8280             :     }
    8281           0 :     if( w==26 )
    8282             :     {
    8283           0 :         r = -6.235e+00;
    8284             :     }
    8285           0 :     if( w==25 )
    8286             :     {
    8287           0 :         r = -6.394e+00;
    8288             :     }
    8289           0 :     if( w==24 )
    8290             :     {
    8291           0 :         r = -6.558e+00;
    8292             :     }
    8293           0 :     if( w==23 )
    8294             :     {
    8295           0 :         r = -6.726e+00;
    8296             :     }
    8297           0 :     if( w==22 )
    8298             :     {
    8299           0 :         r = -6.897e+00;
    8300             :     }
    8301           0 :     if( w==21 )
    8302             :     {
    8303           0 :         r = -7.074e+00;
    8304             :     }
    8305           0 :     if( w==20 )
    8306             :     {
    8307           0 :         r = -7.256e+00;
    8308             :     }
    8309           0 :     if( w==19 )
    8310             :     {
    8311           0 :         r = -7.443e+00;
    8312             :     }
    8313           0 :     if( w==18 )
    8314             :     {
    8315           0 :         r = -7.636e+00;
    8316             :     }
    8317           0 :     if( w==17 )
    8318             :     {
    8319           0 :         r = -7.837e+00;
    8320             :     }
    8321           0 :     if( w==16 )
    8322             :     {
    8323           0 :         r = -8.040e+00;
    8324             :     }
    8325           0 :     if( w==15 )
    8326             :     {
    8327           0 :         r = -8.250e+00;
    8328             :     }
    8329           0 :     if( w==14 )
    8330             :     {
    8331           0 :         r = -8.469e+00;
    8332             :     }
    8333           0 :     if( w==13 )
    8334             :     {
    8335           0 :         r = -8.692e+00;
    8336             :     }
    8337           0 :     if( w==12 )
    8338             :     {
    8339           0 :         r = -8.921e+00;
    8340             :     }
    8341           0 :     if( w==11 )
    8342             :     {
    8343           0 :         r = -9.162e+00;
    8344             :     }
    8345           0 :     if( w==10 )
    8346             :     {
    8347           0 :         r = -9.409e+00;
    8348             :     }
    8349           0 :     if( w==9 )
    8350             :     {
    8351           0 :         r = -9.673e+00;
    8352             :     }
    8353           0 :     if( w==8 )
    8354             :     {
    8355           0 :         r = -9.951e+00;
    8356             :     }
    8357           0 :     if( w==7 )
    8358             :     {
    8359           0 :         r = -1.023e+01;
    8360             :     }
    8361           0 :     if( w==6 )
    8362             :     {
    8363           0 :         r = -1.053e+01;
    8364             :     }
    8365           0 :     if( w==5 )
    8366             :     {
    8367           0 :         r = -1.087e+01;
    8368             :     }
    8369           0 :     if( w==4 )
    8370             :     {
    8371           0 :         r = -1.122e+01;
    8372             :     }
    8373           0 :     if( w==3 )
    8374             :     {
    8375           0 :         r = -1.156e+01;
    8376             :     }
    8377           0 :     if( w==2 )
    8378             :     {
    8379           0 :         r = -1.207e+01;
    8380             :     }
    8381           0 :     if( w==1 )
    8382             :     {
    8383           0 :         r = -1.248e+01;
    8384             :     }
    8385           0 :     if( w<=0 )
    8386             :     {
    8387           0 :         r = -1.317e+01;
    8388             :     }
    8389           0 :     result = r;
    8390           0 :     return result;
    8391             : }
    8392             : 
    8393             : 
    8394             : /*************************************************************************
    8395             : Tail(S, 20)
    8396             : *************************************************************************/
    8397           0 : static double wsr_w20(double s, ae_state *_state)
    8398             : {
    8399             :     ae_int_t w;
    8400             :     double r;
    8401             :     double result;
    8402             : 
    8403             : 
    8404           0 :     r = (double)(0);
    8405           0 :     w = ae_round(-2.678619e+01*s+1.050000e+02, _state);
    8406           0 :     if( w>=105 )
    8407             :     {
    8408           0 :         r = -6.787e-01;
    8409             :     }
    8410           0 :     if( w==104 )
    8411             :     {
    8412           0 :         r = -7.078e-01;
    8413             :     }
    8414           0 :     if( w==103 )
    8415             :     {
    8416           0 :         r = -7.378e-01;
    8417             :     }
    8418           0 :     if( w==102 )
    8419             :     {
    8420           0 :         r = -7.686e-01;
    8421             :     }
    8422           0 :     if( w==101 )
    8423             :     {
    8424           0 :         r = -8.004e-01;
    8425             :     }
    8426           0 :     if( w==100 )
    8427             :     {
    8428           0 :         r = -8.330e-01;
    8429             :     }
    8430           0 :     if( w==99 )
    8431             :     {
    8432           0 :         r = -8.665e-01;
    8433             :     }
    8434           0 :     if( w==98 )
    8435             :     {
    8436           0 :         r = -9.010e-01;
    8437             :     }
    8438           0 :     if( w==97 )
    8439             :     {
    8440           0 :         r = -9.363e-01;
    8441             :     }
    8442           0 :     if( w==96 )
    8443             :     {
    8444           0 :         r = -9.726e-01;
    8445             :     }
    8446           0 :     if( w==95 )
    8447             :     {
    8448           0 :         r = -1.010e+00;
    8449             :     }
    8450           0 :     if( w==94 )
    8451             :     {
    8452           0 :         r = -1.048e+00;
    8453             :     }
    8454           0 :     if( w==93 )
    8455             :     {
    8456           0 :         r = -1.087e+00;
    8457             :     }
    8458           0 :     if( w==92 )
    8459             :     {
    8460           0 :         r = -1.128e+00;
    8461             :     }
    8462           0 :     if( w==91 )
    8463             :     {
    8464           0 :         r = -1.169e+00;
    8465             :     }
    8466           0 :     if( w==90 )
    8467             :     {
    8468           0 :         r = -1.211e+00;
    8469             :     }
    8470           0 :     if( w==89 )
    8471             :     {
    8472           0 :         r = -1.254e+00;
    8473             :     }
    8474           0 :     if( w==88 )
    8475             :     {
    8476           0 :         r = -1.299e+00;
    8477             :     }
    8478           0 :     if( w==87 )
    8479             :     {
    8480           0 :         r = -1.344e+00;
    8481             :     }
    8482           0 :     if( w==86 )
    8483             :     {
    8484           0 :         r = -1.390e+00;
    8485             :     }
    8486           0 :     if( w==85 )
    8487             :     {
    8488           0 :         r = -1.438e+00;
    8489             :     }
    8490           0 :     if( w==84 )
    8491             :     {
    8492           0 :         r = -1.486e+00;
    8493             :     }
    8494           0 :     if( w==83 )
    8495             :     {
    8496           0 :         r = -1.536e+00;
    8497             :     }
    8498           0 :     if( w==82 )
    8499             :     {
    8500           0 :         r = -1.587e+00;
    8501             :     }
    8502           0 :     if( w==81 )
    8503             :     {
    8504           0 :         r = -1.639e+00;
    8505             :     }
    8506           0 :     if( w==80 )
    8507             :     {
    8508           0 :         r = -1.692e+00;
    8509             :     }
    8510           0 :     if( w==79 )
    8511             :     {
    8512           0 :         r = -1.746e+00;
    8513             :     }
    8514           0 :     if( w==78 )
    8515             :     {
    8516           0 :         r = -1.802e+00;
    8517             :     }
    8518           0 :     if( w==77 )
    8519             :     {
    8520           0 :         r = -1.859e+00;
    8521             :     }
    8522           0 :     if( w==76 )
    8523             :     {
    8524           0 :         r = -1.916e+00;
    8525             :     }
    8526           0 :     if( w==75 )
    8527             :     {
    8528           0 :         r = -1.976e+00;
    8529             :     }
    8530           0 :     if( w==74 )
    8531             :     {
    8532           0 :         r = -2.036e+00;
    8533             :     }
    8534           0 :     if( w==73 )
    8535             :     {
    8536           0 :         r = -2.098e+00;
    8537             :     }
    8538           0 :     if( w==72 )
    8539             :     {
    8540           0 :         r = -2.161e+00;
    8541             :     }
    8542           0 :     if( w==71 )
    8543             :     {
    8544           0 :         r = -2.225e+00;
    8545             :     }
    8546           0 :     if( w==70 )
    8547             :     {
    8548           0 :         r = -2.290e+00;
    8549             :     }
    8550           0 :     if( w==69 )
    8551             :     {
    8552           0 :         r = -2.357e+00;
    8553             :     }
    8554           0 :     if( w==68 )
    8555             :     {
    8556           0 :         r = -2.426e+00;
    8557             :     }
    8558           0 :     if( w==67 )
    8559             :     {
    8560           0 :         r = -2.495e+00;
    8561             :     }
    8562           0 :     if( w==66 )
    8563             :     {
    8564           0 :         r = -2.566e+00;
    8565             :     }
    8566           0 :     if( w==65 )
    8567             :     {
    8568           0 :         r = -2.639e+00;
    8569             :     }
    8570           0 :     if( w==64 )
    8571             :     {
    8572           0 :         r = -2.713e+00;
    8573             :     }
    8574           0 :     if( w==63 )
    8575             :     {
    8576           0 :         r = -2.788e+00;
    8577             :     }
    8578           0 :     if( w==62 )
    8579             :     {
    8580           0 :         r = -2.865e+00;
    8581             :     }
    8582           0 :     if( w==61 )
    8583             :     {
    8584           0 :         r = -2.943e+00;
    8585             :     }
    8586           0 :     if( w==60 )
    8587             :     {
    8588           0 :         r = -3.023e+00;
    8589             :     }
    8590           0 :     if( w==59 )
    8591             :     {
    8592           0 :         r = -3.104e+00;
    8593             :     }
    8594           0 :     if( w==58 )
    8595             :     {
    8596           0 :         r = -3.187e+00;
    8597             :     }
    8598           0 :     if( w==57 )
    8599             :     {
    8600           0 :         r = -3.272e+00;
    8601             :     }
    8602           0 :     if( w==56 )
    8603             :     {
    8604           0 :         r = -3.358e+00;
    8605             :     }
    8606           0 :     if( w==55 )
    8607             :     {
    8608           0 :         r = -3.446e+00;
    8609             :     }
    8610           0 :     if( w==54 )
    8611             :     {
    8612           0 :         r = -3.536e+00;
    8613             :     }
    8614           0 :     if( w==53 )
    8615             :     {
    8616           0 :         r = -3.627e+00;
    8617             :     }
    8618           0 :     if( w==52 )
    8619             :     {
    8620           0 :         r = -3.721e+00;
    8621             :     }
    8622           0 :     if( w==51 )
    8623             :     {
    8624           0 :         r = -3.815e+00;
    8625             :     }
    8626           0 :     if( w==50 )
    8627             :     {
    8628           0 :         r = -3.912e+00;
    8629             :     }
    8630           0 :     if( w==49 )
    8631             :     {
    8632           0 :         r = -4.011e+00;
    8633             :     }
    8634           0 :     if( w==48 )
    8635             :     {
    8636           0 :         r = -4.111e+00;
    8637             :     }
    8638           0 :     if( w==47 )
    8639             :     {
    8640           0 :         r = -4.214e+00;
    8641             :     }
    8642           0 :     if( w==46 )
    8643             :     {
    8644           0 :         r = -4.318e+00;
    8645             :     }
    8646           0 :     if( w==45 )
    8647             :     {
    8648           0 :         r = -4.425e+00;
    8649             :     }
    8650           0 :     if( w==44 )
    8651             :     {
    8652           0 :         r = -4.534e+00;
    8653             :     }
    8654           0 :     if( w==43 )
    8655             :     {
    8656           0 :         r = -4.644e+00;
    8657             :     }
    8658           0 :     if( w==42 )
    8659             :     {
    8660           0 :         r = -4.757e+00;
    8661             :     }
    8662           0 :     if( w==41 )
    8663             :     {
    8664           0 :         r = -4.872e+00;
    8665             :     }
    8666           0 :     if( w==40 )
    8667             :     {
    8668           0 :         r = -4.990e+00;
    8669             :     }
    8670           0 :     if( w==39 )
    8671             :     {
    8672           0 :         r = -5.109e+00;
    8673             :     }
    8674           0 :     if( w==38 )
    8675             :     {
    8676           0 :         r = -5.232e+00;
    8677             :     }
    8678           0 :     if( w==37 )
    8679             :     {
    8680           0 :         r = -5.356e+00;
    8681             :     }
    8682           0 :     if( w==36 )
    8683             :     {
    8684           0 :         r = -5.484e+00;
    8685             :     }
    8686           0 :     if( w==35 )
    8687             :     {
    8688           0 :         r = -5.614e+00;
    8689             :     }
    8690           0 :     if( w==34 )
    8691             :     {
    8692           0 :         r = -5.746e+00;
    8693             :     }
    8694           0 :     if( w==33 )
    8695             :     {
    8696           0 :         r = -5.882e+00;
    8697             :     }
    8698           0 :     if( w==32 )
    8699             :     {
    8700           0 :         r = -6.020e+00;
    8701             :     }
    8702           0 :     if( w==31 )
    8703             :     {
    8704           0 :         r = -6.161e+00;
    8705             :     }
    8706           0 :     if( w==30 )
    8707             :     {
    8708           0 :         r = -6.305e+00;
    8709             :     }
    8710           0 :     if( w==29 )
    8711             :     {
    8712           0 :         r = -6.453e+00;
    8713             :     }
    8714           0 :     if( w==28 )
    8715             :     {
    8716           0 :         r = -6.603e+00;
    8717             :     }
    8718           0 :     if( w==27 )
    8719             :     {
    8720           0 :         r = -6.757e+00;
    8721             :     }
    8722           0 :     if( w==26 )
    8723             :     {
    8724           0 :         r = -6.915e+00;
    8725             :     }
    8726           0 :     if( w==25 )
    8727             :     {
    8728           0 :         r = -7.076e+00;
    8729             :     }
    8730           0 :     if( w==24 )
    8731             :     {
    8732           0 :         r = -7.242e+00;
    8733             :     }
    8734           0 :     if( w==23 )
    8735             :     {
    8736           0 :         r = -7.411e+00;
    8737             :     }
    8738           0 :     if( w==22 )
    8739             :     {
    8740           0 :         r = -7.584e+00;
    8741             :     }
    8742           0 :     if( w==21 )
    8743             :     {
    8744           0 :         r = -7.763e+00;
    8745             :     }
    8746           0 :     if( w==20 )
    8747             :     {
    8748           0 :         r = -7.947e+00;
    8749             :     }
    8750           0 :     if( w==19 )
    8751             :     {
    8752           0 :         r = -8.136e+00;
    8753             :     }
    8754           0 :     if( w==18 )
    8755             :     {
    8756           0 :         r = -8.330e+00;
    8757             :     }
    8758           0 :     if( w==17 )
    8759             :     {
    8760           0 :         r = -8.530e+00;
    8761             :     }
    8762           0 :     if( w==16 )
    8763             :     {
    8764           0 :         r = -8.733e+00;
    8765             :     }
    8766           0 :     if( w==15 )
    8767             :     {
    8768           0 :         r = -8.943e+00;
    8769             :     }
    8770           0 :     if( w==14 )
    8771             :     {
    8772           0 :         r = -9.162e+00;
    8773             :     }
    8774           0 :     if( w==13 )
    8775             :     {
    8776           0 :         r = -9.386e+00;
    8777             :     }
    8778           0 :     if( w==12 )
    8779             :     {
    8780           0 :         r = -9.614e+00;
    8781             :     }
    8782           0 :     if( w==11 )
    8783             :     {
    8784           0 :         r = -9.856e+00;
    8785             :     }
    8786           0 :     if( w==10 )
    8787             :     {
    8788           0 :         r = -1.010e+01;
    8789             :     }
    8790           0 :     if( w==9 )
    8791             :     {
    8792           0 :         r = -1.037e+01;
    8793             :     }
    8794           0 :     if( w==8 )
    8795             :     {
    8796           0 :         r = -1.064e+01;
    8797             :     }
    8798           0 :     if( w==7 )
    8799             :     {
    8800           0 :         r = -1.092e+01;
    8801             :     }
    8802           0 :     if( w==6 )
    8803             :     {
    8804           0 :         r = -1.122e+01;
    8805             :     }
    8806           0 :     if( w==5 )
    8807             :     {
    8808           0 :         r = -1.156e+01;
    8809             :     }
    8810           0 :     if( w==4 )
    8811             :     {
    8812           0 :         r = -1.192e+01;
    8813             :     }
    8814           0 :     if( w==3 )
    8815             :     {
    8816           0 :         r = -1.225e+01;
    8817             :     }
    8818           0 :     if( w==2 )
    8819             :     {
    8820           0 :         r = -1.276e+01;
    8821             :     }
    8822           0 :     if( w==1 )
    8823             :     {
    8824           0 :         r = -1.317e+01;
    8825             :     }
    8826           0 :     if( w<=0 )
    8827             :     {
    8828           0 :         r = -1.386e+01;
    8829             :     }
    8830           0 :     result = r;
    8831           0 :     return result;
    8832             : }
    8833             : 
    8834             : 
    8835             : /*************************************************************************
    8836             : Tail(S, 21)
    8837             : *************************************************************************/
    8838           0 : static double wsr_w21(double s, ae_state *_state)
    8839             : {
    8840             :     ae_int_t w;
    8841             :     double r;
    8842             :     double result;
    8843             : 
    8844             : 
    8845           0 :     r = (double)(0);
    8846           0 :     w = ae_round(-2.877064e+01*s+1.155000e+02, _state);
    8847           0 :     if( w>=115 )
    8848             :     {
    8849           0 :         r = -6.931e-01;
    8850             :     }
    8851           0 :     if( w==114 )
    8852             :     {
    8853           0 :         r = -7.207e-01;
    8854             :     }
    8855           0 :     if( w==113 )
    8856             :     {
    8857           0 :         r = -7.489e-01;
    8858             :     }
    8859           0 :     if( w==112 )
    8860             :     {
    8861           0 :         r = -7.779e-01;
    8862             :     }
    8863           0 :     if( w==111 )
    8864             :     {
    8865           0 :         r = -8.077e-01;
    8866             :     }
    8867           0 :     if( w==110 )
    8868             :     {
    8869           0 :         r = -8.383e-01;
    8870             :     }
    8871           0 :     if( w==109 )
    8872             :     {
    8873           0 :         r = -8.697e-01;
    8874             :     }
    8875           0 :     if( w==108 )
    8876             :     {
    8877           0 :         r = -9.018e-01;
    8878             :     }
    8879           0 :     if( w==107 )
    8880             :     {
    8881           0 :         r = -9.348e-01;
    8882             :     }
    8883           0 :     if( w==106 )
    8884             :     {
    8885           0 :         r = -9.685e-01;
    8886             :     }
    8887           0 :     if( w==105 )
    8888             :     {
    8889           0 :         r = -1.003e+00;
    8890             :     }
    8891           0 :     if( w==104 )
    8892             :     {
    8893           0 :         r = -1.039e+00;
    8894             :     }
    8895           0 :     if( w==103 )
    8896             :     {
    8897           0 :         r = -1.075e+00;
    8898             :     }
    8899           0 :     if( w==102 )
    8900             :     {
    8901           0 :         r = -1.112e+00;
    8902             :     }
    8903           0 :     if( w==101 )
    8904             :     {
    8905           0 :         r = -1.150e+00;
    8906             :     }
    8907           0 :     if( w==100 )
    8908             :     {
    8909           0 :         r = -1.189e+00;
    8910             :     }
    8911           0 :     if( w==99 )
    8912             :     {
    8913           0 :         r = -1.229e+00;
    8914             :     }
    8915           0 :     if( w==98 )
    8916             :     {
    8917           0 :         r = -1.269e+00;
    8918             :     }
    8919           0 :     if( w==97 )
    8920             :     {
    8921           0 :         r = -1.311e+00;
    8922             :     }
    8923           0 :     if( w==96 )
    8924             :     {
    8925           0 :         r = -1.353e+00;
    8926             :     }
    8927           0 :     if( w==95 )
    8928             :     {
    8929           0 :         r = -1.397e+00;
    8930             :     }
    8931           0 :     if( w==94 )
    8932             :     {
    8933           0 :         r = -1.441e+00;
    8934             :     }
    8935           0 :     if( w==93 )
    8936             :     {
    8937           0 :         r = -1.486e+00;
    8938             :     }
    8939           0 :     if( w==92 )
    8940             :     {
    8941           0 :         r = -1.533e+00;
    8942             :     }
    8943           0 :     if( w==91 )
    8944             :     {
    8945           0 :         r = -1.580e+00;
    8946             :     }
    8947           0 :     if( w==90 )
    8948             :     {
    8949           0 :         r = -1.628e+00;
    8950             :     }
    8951           0 :     if( w==89 )
    8952             :     {
    8953           0 :         r = -1.677e+00;
    8954             :     }
    8955           0 :     if( w==88 )
    8956             :     {
    8957           0 :         r = -1.728e+00;
    8958             :     }
    8959           0 :     if( w==87 )
    8960             :     {
    8961           0 :         r = -1.779e+00;
    8962             :     }
    8963           0 :     if( w==86 )
    8964             :     {
    8965           0 :         r = -1.831e+00;
    8966             :     }
    8967           0 :     if( w==85 )
    8968             :     {
    8969           0 :         r = -1.884e+00;
    8970             :     }
    8971           0 :     if( w==84 )
    8972             :     {
    8973           0 :         r = -1.939e+00;
    8974             :     }
    8975           0 :     if( w==83 )
    8976             :     {
    8977           0 :         r = -1.994e+00;
    8978             :     }
    8979           0 :     if( w==82 )
    8980             :     {
    8981           0 :         r = -2.051e+00;
    8982             :     }
    8983           0 :     if( w==81 )
    8984             :     {
    8985           0 :         r = -2.108e+00;
    8986             :     }
    8987           0 :     if( w==80 )
    8988             :     {
    8989           0 :         r = -2.167e+00;
    8990             :     }
    8991           0 :     if( w==79 )
    8992             :     {
    8993           0 :         r = -2.227e+00;
    8994             :     }
    8995           0 :     if( w==78 )
    8996             :     {
    8997           0 :         r = -2.288e+00;
    8998             :     }
    8999           0 :     if( w==77 )
    9000             :     {
    9001           0 :         r = -2.350e+00;
    9002             :     }
    9003           0 :     if( w==76 )
    9004             :     {
    9005           0 :         r = -2.414e+00;
    9006             :     }
    9007           0 :     if( w==75 )
    9008             :     {
    9009           0 :         r = -2.478e+00;
    9010             :     }
    9011           0 :     if( w==74 )
    9012             :     {
    9013           0 :         r = -2.544e+00;
    9014             :     }
    9015           0 :     if( w==73 )
    9016             :     {
    9017           0 :         r = -2.611e+00;
    9018             :     }
    9019           0 :     if( w==72 )
    9020             :     {
    9021           0 :         r = -2.679e+00;
    9022             :     }
    9023           0 :     if( w==71 )
    9024             :     {
    9025           0 :         r = -2.748e+00;
    9026             :     }
    9027           0 :     if( w==70 )
    9028             :     {
    9029           0 :         r = -2.819e+00;
    9030             :     }
    9031           0 :     if( w==69 )
    9032             :     {
    9033           0 :         r = -2.891e+00;
    9034             :     }
    9035           0 :     if( w==68 )
    9036             :     {
    9037           0 :         r = -2.964e+00;
    9038             :     }
    9039           0 :     if( w==67 )
    9040             :     {
    9041           0 :         r = -3.039e+00;
    9042             :     }
    9043           0 :     if( w==66 )
    9044             :     {
    9045           0 :         r = -3.115e+00;
    9046             :     }
    9047           0 :     if( w==65 )
    9048             :     {
    9049           0 :         r = -3.192e+00;
    9050             :     }
    9051           0 :     if( w==64 )
    9052             :     {
    9053           0 :         r = -3.270e+00;
    9054             :     }
    9055           0 :     if( w==63 )
    9056             :     {
    9057           0 :         r = -3.350e+00;
    9058             :     }
    9059           0 :     if( w==62 )
    9060             :     {
    9061           0 :         r = -3.432e+00;
    9062             :     }
    9063           0 :     if( w==61 )
    9064             :     {
    9065           0 :         r = -3.515e+00;
    9066             :     }
    9067           0 :     if( w==60 )
    9068             :     {
    9069           0 :         r = -3.599e+00;
    9070             :     }
    9071           0 :     if( w==59 )
    9072             :     {
    9073           0 :         r = -3.685e+00;
    9074             :     }
    9075           0 :     if( w==58 )
    9076             :     {
    9077           0 :         r = -3.772e+00;
    9078             :     }
    9079           0 :     if( w==57 )
    9080             :     {
    9081           0 :         r = -3.861e+00;
    9082             :     }
    9083           0 :     if( w==56 )
    9084             :     {
    9085           0 :         r = -3.952e+00;
    9086             :     }
    9087           0 :     if( w==55 )
    9088             :     {
    9089           0 :         r = -4.044e+00;
    9090             :     }
    9091           0 :     if( w==54 )
    9092             :     {
    9093           0 :         r = -4.138e+00;
    9094             :     }
    9095           0 :     if( w==53 )
    9096             :     {
    9097           0 :         r = -4.233e+00;
    9098             :     }
    9099           0 :     if( w==52 )
    9100             :     {
    9101           0 :         r = -4.330e+00;
    9102             :     }
    9103           0 :     if( w==51 )
    9104             :     {
    9105           0 :         r = -4.429e+00;
    9106             :     }
    9107           0 :     if( w==50 )
    9108             :     {
    9109           0 :         r = -4.530e+00;
    9110             :     }
    9111           0 :     if( w==49 )
    9112             :     {
    9113           0 :         r = -4.632e+00;
    9114             :     }
    9115           0 :     if( w==48 )
    9116             :     {
    9117           0 :         r = -4.736e+00;
    9118             :     }
    9119           0 :     if( w==47 )
    9120             :     {
    9121           0 :         r = -4.842e+00;
    9122             :     }
    9123           0 :     if( w==46 )
    9124             :     {
    9125           0 :         r = -4.950e+00;
    9126             :     }
    9127           0 :     if( w==45 )
    9128             :     {
    9129           0 :         r = -5.060e+00;
    9130             :     }
    9131           0 :     if( w==44 )
    9132             :     {
    9133           0 :         r = -5.172e+00;
    9134             :     }
    9135           0 :     if( w==43 )
    9136             :     {
    9137           0 :         r = -5.286e+00;
    9138             :     }
    9139           0 :     if( w==42 )
    9140             :     {
    9141           0 :         r = -5.402e+00;
    9142             :     }
    9143           0 :     if( w==41 )
    9144             :     {
    9145           0 :         r = -5.520e+00;
    9146             :     }
    9147           0 :     if( w==40 )
    9148             :     {
    9149           0 :         r = -5.641e+00;
    9150             :     }
    9151           0 :     if( w==39 )
    9152             :     {
    9153           0 :         r = -5.763e+00;
    9154             :     }
    9155           0 :     if( w==38 )
    9156             :     {
    9157           0 :         r = -5.889e+00;
    9158             :     }
    9159           0 :     if( w==37 )
    9160             :     {
    9161           0 :         r = -6.016e+00;
    9162             :     }
    9163           0 :     if( w==36 )
    9164             :     {
    9165           0 :         r = -6.146e+00;
    9166             :     }
    9167           0 :     if( w==35 )
    9168             :     {
    9169           0 :         r = -6.278e+00;
    9170             :     }
    9171           0 :     if( w==34 )
    9172             :     {
    9173           0 :         r = -6.413e+00;
    9174             :     }
    9175           0 :     if( w==33 )
    9176             :     {
    9177           0 :         r = -6.551e+00;
    9178             :     }
    9179           0 :     if( w==32 )
    9180             :     {
    9181           0 :         r = -6.692e+00;
    9182             :     }
    9183           0 :     if( w==31 )
    9184             :     {
    9185           0 :         r = -6.835e+00;
    9186             :     }
    9187           0 :     if( w==30 )
    9188             :     {
    9189           0 :         r = -6.981e+00;
    9190             :     }
    9191           0 :     if( w==29 )
    9192             :     {
    9193           0 :         r = -7.131e+00;
    9194             :     }
    9195           0 :     if( w==28 )
    9196             :     {
    9197           0 :         r = -7.283e+00;
    9198             :     }
    9199           0 :     if( w==27 )
    9200             :     {
    9201           0 :         r = -7.439e+00;
    9202             :     }
    9203           0 :     if( w==26 )
    9204             :     {
    9205           0 :         r = -7.599e+00;
    9206             :     }
    9207           0 :     if( w==25 )
    9208             :     {
    9209           0 :         r = -7.762e+00;
    9210             :     }
    9211           0 :     if( w==24 )
    9212             :     {
    9213           0 :         r = -7.928e+00;
    9214             :     }
    9215           0 :     if( w==23 )
    9216             :     {
    9217           0 :         r = -8.099e+00;
    9218             :     }
    9219           0 :     if( w==22 )
    9220             :     {
    9221           0 :         r = -8.274e+00;
    9222             :     }
    9223           0 :     if( w==21 )
    9224             :     {
    9225           0 :         r = -8.454e+00;
    9226             :     }
    9227           0 :     if( w==20 )
    9228             :     {
    9229           0 :         r = -8.640e+00;
    9230             :     }
    9231           0 :     if( w==19 )
    9232             :     {
    9233           0 :         r = -8.829e+00;
    9234             :     }
    9235           0 :     if( w==18 )
    9236             :     {
    9237           0 :         r = -9.023e+00;
    9238             :     }
    9239           0 :     if( w==17 )
    9240             :     {
    9241           0 :         r = -9.223e+00;
    9242             :     }
    9243           0 :     if( w==16 )
    9244             :     {
    9245           0 :         r = -9.426e+00;
    9246             :     }
    9247           0 :     if( w==15 )
    9248             :     {
    9249           0 :         r = -9.636e+00;
    9250             :     }
    9251           0 :     if( w==14 )
    9252             :     {
    9253           0 :         r = -9.856e+00;
    9254             :     }
    9255           0 :     if( w==13 )
    9256             :     {
    9257           0 :         r = -1.008e+01;
    9258             :     }
    9259           0 :     if( w==12 )
    9260             :     {
    9261           0 :         r = -1.031e+01;
    9262             :     }
    9263           0 :     if( w==11 )
    9264             :     {
    9265           0 :         r = -1.055e+01;
    9266             :     }
    9267           0 :     if( w==10 )
    9268             :     {
    9269           0 :         r = -1.079e+01;
    9270             :     }
    9271           0 :     if( w==9 )
    9272             :     {
    9273           0 :         r = -1.106e+01;
    9274             :     }
    9275           0 :     if( w==8 )
    9276             :     {
    9277           0 :         r = -1.134e+01;
    9278             :     }
    9279           0 :     if( w==7 )
    9280             :     {
    9281           0 :         r = -1.161e+01;
    9282             :     }
    9283           0 :     if( w==6 )
    9284             :     {
    9285           0 :         r = -1.192e+01;
    9286             :     }
    9287           0 :     if( w==5 )
    9288             :     {
    9289           0 :         r = -1.225e+01;
    9290             :     }
    9291           0 :     if( w==4 )
    9292             :     {
    9293           0 :         r = -1.261e+01;
    9294             :     }
    9295           0 :     if( w==3 )
    9296             :     {
    9297           0 :         r = -1.295e+01;
    9298             :     }
    9299           0 :     if( w==2 )
    9300             :     {
    9301           0 :         r = -1.346e+01;
    9302             :     }
    9303           0 :     if( w==1 )
    9304             :     {
    9305           0 :         r = -1.386e+01;
    9306             :     }
    9307           0 :     if( w<=0 )
    9308             :     {
    9309           0 :         r = -1.456e+01;
    9310             :     }
    9311           0 :     result = r;
    9312           0 :     return result;
    9313             : }
    9314             : 
    9315             : 
    9316             : /*************************************************************************
    9317             : Tail(S, 22)
    9318             : *************************************************************************/
    9319           0 : static double wsr_w22(double s, ae_state *_state)
    9320             : {
    9321             :     ae_int_t w;
    9322             :     double r;
    9323             :     double result;
    9324             : 
    9325             : 
    9326           0 :     r = (double)(0);
    9327           0 :     w = ae_round(-3.080179e+01*s+1.265000e+02, _state);
    9328           0 :     if( w>=126 )
    9329             :     {
    9330           0 :         r = -6.931e-01;
    9331             :     }
    9332           0 :     if( w==125 )
    9333             :     {
    9334           0 :         r = -7.189e-01;
    9335             :     }
    9336           0 :     if( w==124 )
    9337             :     {
    9338           0 :         r = -7.452e-01;
    9339             :     }
    9340           0 :     if( w==123 )
    9341             :     {
    9342           0 :         r = -7.722e-01;
    9343             :     }
    9344           0 :     if( w==122 )
    9345             :     {
    9346           0 :         r = -7.999e-01;
    9347             :     }
    9348           0 :     if( w==121 )
    9349             :     {
    9350           0 :         r = -8.283e-01;
    9351             :     }
    9352           0 :     if( w==120 )
    9353             :     {
    9354           0 :         r = -8.573e-01;
    9355             :     }
    9356           0 :     if( w==119 )
    9357             :     {
    9358           0 :         r = -8.871e-01;
    9359             :     }
    9360           0 :     if( w==118 )
    9361             :     {
    9362           0 :         r = -9.175e-01;
    9363             :     }
    9364           0 :     if( w==117 )
    9365             :     {
    9366           0 :         r = -9.486e-01;
    9367             :     }
    9368           0 :     if( w==116 )
    9369             :     {
    9370           0 :         r = -9.805e-01;
    9371             :     }
    9372           0 :     if( w==115 )
    9373             :     {
    9374           0 :         r = -1.013e+00;
    9375             :     }
    9376           0 :     if( w==114 )
    9377             :     {
    9378           0 :         r = -1.046e+00;
    9379             :     }
    9380           0 :     if( w==113 )
    9381             :     {
    9382           0 :         r = -1.080e+00;
    9383             :     }
    9384           0 :     if( w==112 )
    9385             :     {
    9386           0 :         r = -1.115e+00;
    9387             :     }
    9388           0 :     if( w==111 )
    9389             :     {
    9390           0 :         r = -1.151e+00;
    9391             :     }
    9392           0 :     if( w==110 )
    9393             :     {
    9394           0 :         r = -1.187e+00;
    9395             :     }
    9396           0 :     if( w==109 )
    9397             :     {
    9398           0 :         r = -1.224e+00;
    9399             :     }
    9400           0 :     if( w==108 )
    9401             :     {
    9402           0 :         r = -1.262e+00;
    9403             :     }
    9404           0 :     if( w==107 )
    9405             :     {
    9406           0 :         r = -1.301e+00;
    9407             :     }
    9408           0 :     if( w==106 )
    9409             :     {
    9410           0 :         r = -1.340e+00;
    9411             :     }
    9412           0 :     if( w==105 )
    9413             :     {
    9414           0 :         r = -1.381e+00;
    9415             :     }
    9416           0 :     if( w==104 )
    9417             :     {
    9418           0 :         r = -1.422e+00;
    9419             :     }
    9420           0 :     if( w==103 )
    9421             :     {
    9422           0 :         r = -1.464e+00;
    9423             :     }
    9424           0 :     if( w==102 )
    9425             :     {
    9426           0 :         r = -1.506e+00;
    9427             :     }
    9428           0 :     if( w==101 )
    9429             :     {
    9430           0 :         r = -1.550e+00;
    9431             :     }
    9432           0 :     if( w==100 )
    9433             :     {
    9434           0 :         r = -1.594e+00;
    9435             :     }
    9436           0 :     if( w==99 )
    9437             :     {
    9438           0 :         r = -1.640e+00;
    9439             :     }
    9440           0 :     if( w==98 )
    9441             :     {
    9442           0 :         r = -1.686e+00;
    9443             :     }
    9444           0 :     if( w==97 )
    9445             :     {
    9446           0 :         r = -1.733e+00;
    9447             :     }
    9448           0 :     if( w==96 )
    9449             :     {
    9450           0 :         r = -1.781e+00;
    9451             :     }
    9452           0 :     if( w==95 )
    9453             :     {
    9454           0 :         r = -1.830e+00;
    9455             :     }
    9456           0 :     if( w==94 )
    9457             :     {
    9458           0 :         r = -1.880e+00;
    9459             :     }
    9460           0 :     if( w==93 )
    9461             :     {
    9462           0 :         r = -1.930e+00;
    9463             :     }
    9464           0 :     if( w==92 )
    9465             :     {
    9466           0 :         r = -1.982e+00;
    9467             :     }
    9468           0 :     if( w==91 )
    9469             :     {
    9470           0 :         r = -2.034e+00;
    9471             :     }
    9472           0 :     if( w==90 )
    9473             :     {
    9474           0 :         r = -2.088e+00;
    9475             :     }
    9476           0 :     if( w==89 )
    9477             :     {
    9478           0 :         r = -2.142e+00;
    9479             :     }
    9480           0 :     if( w==88 )
    9481             :     {
    9482           0 :         r = -2.198e+00;
    9483             :     }
    9484           0 :     if( w==87 )
    9485             :     {
    9486           0 :         r = -2.254e+00;
    9487             :     }
    9488           0 :     if( w==86 )
    9489             :     {
    9490           0 :         r = -2.312e+00;
    9491             :     }
    9492           0 :     if( w==85 )
    9493             :     {
    9494           0 :         r = -2.370e+00;
    9495             :     }
    9496           0 :     if( w==84 )
    9497             :     {
    9498           0 :         r = -2.429e+00;
    9499             :     }
    9500           0 :     if( w==83 )
    9501             :     {
    9502           0 :         r = -2.490e+00;
    9503             :     }
    9504           0 :     if( w==82 )
    9505             :     {
    9506           0 :         r = -2.551e+00;
    9507             :     }
    9508           0 :     if( w==81 )
    9509             :     {
    9510           0 :         r = -2.614e+00;
    9511             :     }
    9512           0 :     if( w==80 )
    9513             :     {
    9514           0 :         r = -2.677e+00;
    9515             :     }
    9516           0 :     if( w==79 )
    9517             :     {
    9518           0 :         r = -2.742e+00;
    9519             :     }
    9520           0 :     if( w==78 )
    9521             :     {
    9522           0 :         r = -2.808e+00;
    9523             :     }
    9524           0 :     if( w==77 )
    9525             :     {
    9526           0 :         r = -2.875e+00;
    9527             :     }
    9528           0 :     if( w==76 )
    9529             :     {
    9530           0 :         r = -2.943e+00;
    9531             :     }
    9532           0 :     if( w==75 )
    9533             :     {
    9534           0 :         r = -3.012e+00;
    9535             :     }
    9536           0 :     if( w==74 )
    9537             :     {
    9538           0 :         r = -3.082e+00;
    9539             :     }
    9540           0 :     if( w==73 )
    9541             :     {
    9542           0 :         r = -3.153e+00;
    9543             :     }
    9544           0 :     if( w==72 )
    9545             :     {
    9546           0 :         r = -3.226e+00;
    9547             :     }
    9548           0 :     if( w==71 )
    9549             :     {
    9550           0 :         r = -3.300e+00;
    9551             :     }
    9552           0 :     if( w==70 )
    9553             :     {
    9554           0 :         r = -3.375e+00;
    9555             :     }
    9556           0 :     if( w==69 )
    9557             :     {
    9558           0 :         r = -3.451e+00;
    9559             :     }
    9560           0 :     if( w==68 )
    9561             :     {
    9562           0 :         r = -3.529e+00;
    9563             :     }
    9564           0 :     if( w==67 )
    9565             :     {
    9566           0 :         r = -3.607e+00;
    9567             :     }
    9568           0 :     if( w==66 )
    9569             :     {
    9570           0 :         r = -3.687e+00;
    9571             :     }
    9572           0 :     if( w==65 )
    9573             :     {
    9574           0 :         r = -3.769e+00;
    9575             :     }
    9576           0 :     if( w==64 )
    9577             :     {
    9578           0 :         r = -3.851e+00;
    9579             :     }
    9580           0 :     if( w==63 )
    9581             :     {
    9582           0 :         r = -3.935e+00;
    9583             :     }
    9584           0 :     if( w==62 )
    9585             :     {
    9586           0 :         r = -4.021e+00;
    9587             :     }
    9588           0 :     if( w==61 )
    9589             :     {
    9590           0 :         r = -4.108e+00;
    9591             :     }
    9592           0 :     if( w==60 )
    9593             :     {
    9594           0 :         r = -4.196e+00;
    9595             :     }
    9596           0 :     if( w==59 )
    9597             :     {
    9598           0 :         r = -4.285e+00;
    9599             :     }
    9600           0 :     if( w==58 )
    9601             :     {
    9602           0 :         r = -4.376e+00;
    9603             :     }
    9604           0 :     if( w==57 )
    9605             :     {
    9606           0 :         r = -4.469e+00;
    9607             :     }
    9608           0 :     if( w==56 )
    9609             :     {
    9610           0 :         r = -4.563e+00;
    9611             :     }
    9612           0 :     if( w==55 )
    9613             :     {
    9614           0 :         r = -4.659e+00;
    9615             :     }
    9616           0 :     if( w==54 )
    9617             :     {
    9618           0 :         r = -4.756e+00;
    9619             :     }
    9620           0 :     if( w==53 )
    9621             :     {
    9622           0 :         r = -4.855e+00;
    9623             :     }
    9624           0 :     if( w==52 )
    9625             :     {
    9626           0 :         r = -4.955e+00;
    9627             :     }
    9628           0 :     if( w==51 )
    9629             :     {
    9630           0 :         r = -5.057e+00;
    9631             :     }
    9632           0 :     if( w==50 )
    9633             :     {
    9634           0 :         r = -5.161e+00;
    9635             :     }
    9636           0 :     if( w==49 )
    9637             :     {
    9638           0 :         r = -5.266e+00;
    9639             :     }
    9640           0 :     if( w==48 )
    9641             :     {
    9642           0 :         r = -5.374e+00;
    9643             :     }
    9644           0 :     if( w==47 )
    9645             :     {
    9646           0 :         r = -5.483e+00;
    9647             :     }
    9648           0 :     if( w==46 )
    9649             :     {
    9650           0 :         r = -5.594e+00;
    9651             :     }
    9652           0 :     if( w==45 )
    9653             :     {
    9654           0 :         r = -5.706e+00;
    9655             :     }
    9656           0 :     if( w==44 )
    9657             :     {
    9658           0 :         r = -5.821e+00;
    9659             :     }
    9660           0 :     if( w==43 )
    9661             :     {
    9662           0 :         r = -5.938e+00;
    9663             :     }
    9664           0 :     if( w==42 )
    9665             :     {
    9666           0 :         r = -6.057e+00;
    9667             :     }
    9668           0 :     if( w==41 )
    9669             :     {
    9670           0 :         r = -6.177e+00;
    9671             :     }
    9672           0 :     if( w==40 )
    9673             :     {
    9674           0 :         r = -6.300e+00;
    9675             :     }
    9676           0 :     if( w==39 )
    9677             :     {
    9678           0 :         r = -6.426e+00;
    9679             :     }
    9680           0 :     if( w==38 )
    9681             :     {
    9682           0 :         r = -6.553e+00;
    9683             :     }
    9684           0 :     if( w==37 )
    9685             :     {
    9686           0 :         r = -6.683e+00;
    9687             :     }
    9688           0 :     if( w==36 )
    9689             :     {
    9690           0 :         r = -6.815e+00;
    9691             :     }
    9692           0 :     if( w==35 )
    9693             :     {
    9694           0 :         r = -6.949e+00;
    9695             :     }
    9696           0 :     if( w==34 )
    9697             :     {
    9698           0 :         r = -7.086e+00;
    9699             :     }
    9700           0 :     if( w==33 )
    9701             :     {
    9702           0 :         r = -7.226e+00;
    9703             :     }
    9704           0 :     if( w==32 )
    9705             :     {
    9706           0 :         r = -7.368e+00;
    9707             :     }
    9708           0 :     if( w==31 )
    9709             :     {
    9710           0 :         r = -7.513e+00;
    9711             :     }
    9712           0 :     if( w==30 )
    9713             :     {
    9714           0 :         r = -7.661e+00;
    9715             :     }
    9716           0 :     if( w==29 )
    9717             :     {
    9718           0 :         r = -7.813e+00;
    9719             :     }
    9720           0 :     if( w==28 )
    9721             :     {
    9722           0 :         r = -7.966e+00;
    9723             :     }
    9724           0 :     if( w==27 )
    9725             :     {
    9726           0 :         r = -8.124e+00;
    9727             :     }
    9728           0 :     if( w==26 )
    9729             :     {
    9730           0 :         r = -8.285e+00;
    9731             :     }
    9732           0 :     if( w==25 )
    9733             :     {
    9734           0 :         r = -8.449e+00;
    9735             :     }
    9736           0 :     if( w==24 )
    9737             :     {
    9738           0 :         r = -8.617e+00;
    9739             :     }
    9740           0 :     if( w==23 )
    9741             :     {
    9742           0 :         r = -8.789e+00;
    9743             :     }
    9744           0 :     if( w==22 )
    9745             :     {
    9746           0 :         r = -8.965e+00;
    9747             :     }
    9748           0 :     if( w==21 )
    9749             :     {
    9750           0 :         r = -9.147e+00;
    9751             :     }
    9752           0 :     if( w==20 )
    9753             :     {
    9754           0 :         r = -9.333e+00;
    9755             :     }
    9756           0 :     if( w==19 )
    9757             :     {
    9758           0 :         r = -9.522e+00;
    9759             :     }
    9760           0 :     if( w==18 )
    9761             :     {
    9762           0 :         r = -9.716e+00;
    9763             :     }
    9764           0 :     if( w==17 )
    9765             :     {
    9766           0 :         r = -9.917e+00;
    9767             :     }
    9768           0 :     if( w==16 )
    9769             :     {
    9770           0 :         r = -1.012e+01;
    9771             :     }
    9772           0 :     if( w==15 )
    9773             :     {
    9774           0 :         r = -1.033e+01;
    9775             :     }
    9776           0 :     if( w==14 )
    9777             :     {
    9778           0 :         r = -1.055e+01;
    9779             :     }
    9780           0 :     if( w==13 )
    9781             :     {
    9782           0 :         r = -1.077e+01;
    9783             :     }
    9784           0 :     if( w==12 )
    9785             :     {
    9786           0 :         r = -1.100e+01;
    9787             :     }
    9788           0 :     if( w==11 )
    9789             :     {
    9790           0 :         r = -1.124e+01;
    9791             :     }
    9792           0 :     if( w==10 )
    9793             :     {
    9794           0 :         r = -1.149e+01;
    9795             :     }
    9796           0 :     if( w==9 )
    9797             :     {
    9798           0 :         r = -1.175e+01;
    9799             :     }
    9800           0 :     if( w==8 )
    9801             :     {
    9802           0 :         r = -1.203e+01;
    9803             :     }
    9804           0 :     if( w==7 )
    9805             :     {
    9806           0 :         r = -1.230e+01;
    9807             :     }
    9808           0 :     if( w==6 )
    9809             :     {
    9810           0 :         r = -1.261e+01;
    9811             :     }
    9812           0 :     if( w==5 )
    9813             :     {
    9814           0 :         r = -1.295e+01;
    9815             :     }
    9816           0 :     if( w==4 )
    9817             :     {
    9818           0 :         r = -1.330e+01;
    9819             :     }
    9820           0 :     if( w==3 )
    9821             :     {
    9822           0 :         r = -1.364e+01;
    9823             :     }
    9824           0 :     if( w==2 )
    9825             :     {
    9826           0 :         r = -1.415e+01;
    9827             :     }
    9828           0 :     if( w==1 )
    9829             :     {
    9830           0 :         r = -1.456e+01;
    9831             :     }
    9832           0 :     if( w<=0 )
    9833             :     {
    9834           0 :         r = -1.525e+01;
    9835             :     }
    9836           0 :     result = r;
    9837           0 :     return result;
    9838             : }
    9839             : 
    9840             : 
    9841             : /*************************************************************************
    9842             : Tail(S, 23)
    9843             : *************************************************************************/
    9844           0 : static double wsr_w23(double s, ae_state *_state)
    9845             : {
    9846             :     ae_int_t w;
    9847             :     double r;
    9848             :     double result;
    9849             : 
    9850             : 
    9851           0 :     r = (double)(0);
    9852           0 :     w = ae_round(-3.287856e+01*s+1.380000e+02, _state);
    9853           0 :     if( w>=138 )
    9854             :     {
    9855           0 :         r = -6.813e-01;
    9856             :     }
    9857           0 :     if( w==137 )
    9858             :     {
    9859           0 :         r = -7.051e-01;
    9860             :     }
    9861           0 :     if( w==136 )
    9862             :     {
    9863           0 :         r = -7.295e-01;
    9864             :     }
    9865           0 :     if( w==135 )
    9866             :     {
    9867           0 :         r = -7.544e-01;
    9868             :     }
    9869           0 :     if( w==134 )
    9870             :     {
    9871           0 :         r = -7.800e-01;
    9872             :     }
    9873           0 :     if( w==133 )
    9874             :     {
    9875           0 :         r = -8.061e-01;
    9876             :     }
    9877           0 :     if( w==132 )
    9878             :     {
    9879           0 :         r = -8.328e-01;
    9880             :     }
    9881           0 :     if( w==131 )
    9882             :     {
    9883           0 :         r = -8.601e-01;
    9884             :     }
    9885           0 :     if( w==130 )
    9886             :     {
    9887           0 :         r = -8.880e-01;
    9888             :     }
    9889           0 :     if( w==129 )
    9890             :     {
    9891           0 :         r = -9.166e-01;
    9892             :     }
    9893           0 :     if( w==128 )
    9894             :     {
    9895           0 :         r = -9.457e-01;
    9896             :     }
    9897           0 :     if( w==127 )
    9898             :     {
    9899           0 :         r = -9.755e-01;
    9900             :     }
    9901           0 :     if( w==126 )
    9902             :     {
    9903           0 :         r = -1.006e+00;
    9904             :     }
    9905           0 :     if( w==125 )
    9906             :     {
    9907           0 :         r = -1.037e+00;
    9908             :     }
    9909           0 :     if( w==124 )
    9910             :     {
    9911           0 :         r = -1.069e+00;
    9912             :     }
    9913           0 :     if( w==123 )
    9914             :     {
    9915           0 :         r = -1.101e+00;
    9916             :     }
    9917           0 :     if( w==122 )
    9918             :     {
    9919           0 :         r = -1.134e+00;
    9920             :     }
    9921           0 :     if( w==121 )
    9922             :     {
    9923           0 :         r = -1.168e+00;
    9924             :     }
    9925           0 :     if( w==120 )
    9926             :     {
    9927           0 :         r = -1.202e+00;
    9928             :     }
    9929           0 :     if( w==119 )
    9930             :     {
    9931           0 :         r = -1.237e+00;
    9932             :     }
    9933           0 :     if( w==118 )
    9934             :     {
    9935           0 :         r = -1.273e+00;
    9936             :     }
    9937           0 :     if( w==117 )
    9938             :     {
    9939           0 :         r = -1.309e+00;
    9940             :     }
    9941           0 :     if( w==116 )
    9942             :     {
    9943           0 :         r = -1.347e+00;
    9944             :     }
    9945           0 :     if( w==115 )
    9946             :     {
    9947           0 :         r = -1.384e+00;
    9948             :     }
    9949           0 :     if( w==114 )
    9950             :     {
    9951           0 :         r = -1.423e+00;
    9952             :     }
    9953           0 :     if( w==113 )
    9954             :     {
    9955           0 :         r = -1.462e+00;
    9956             :     }
    9957           0 :     if( w==112 )
    9958             :     {
    9959           0 :         r = -1.502e+00;
    9960             :     }
    9961           0 :     if( w==111 )
    9962             :     {
    9963           0 :         r = -1.543e+00;
    9964             :     }
    9965           0 :     if( w==110 )
    9966             :     {
    9967           0 :         r = -1.585e+00;
    9968             :     }
    9969           0 :     if( w==109 )
    9970             :     {
    9971           0 :         r = -1.627e+00;
    9972             :     }
    9973           0 :     if( w==108 )
    9974             :     {
    9975           0 :         r = -1.670e+00;
    9976             :     }
    9977           0 :     if( w==107 )
    9978             :     {
    9979           0 :         r = -1.714e+00;
    9980             :     }
    9981           0 :     if( w==106 )
    9982             :     {
    9983           0 :         r = -1.758e+00;
    9984             :     }
    9985           0 :     if( w==105 )
    9986             :     {
    9987           0 :         r = -1.804e+00;
    9988             :     }
    9989           0 :     if( w==104 )
    9990             :     {
    9991           0 :         r = -1.850e+00;
    9992             :     }
    9993           0 :     if( w==103 )
    9994             :     {
    9995           0 :         r = -1.897e+00;
    9996             :     }
    9997           0 :     if( w==102 )
    9998             :     {
    9999           0 :         r = -1.944e+00;
   10000             :     }
   10001           0 :     if( w==101 )
   10002             :     {
   10003           0 :         r = -1.993e+00;
   10004             :     }
   10005           0 :     if( w==100 )
   10006             :     {
   10007           0 :         r = -2.042e+00;
   10008             :     }
   10009           0 :     if( w==99 )
   10010             :     {
   10011           0 :         r = -2.093e+00;
   10012             :     }
   10013           0 :     if( w==98 )
   10014             :     {
   10015           0 :         r = -2.144e+00;
   10016             :     }
   10017           0 :     if( w==97 )
   10018             :     {
   10019           0 :         r = -2.195e+00;
   10020             :     }
   10021           0 :     if( w==96 )
   10022             :     {
   10023           0 :         r = -2.248e+00;
   10024             :     }
   10025           0 :     if( w==95 )
   10026             :     {
   10027           0 :         r = -2.302e+00;
   10028             :     }
   10029           0 :     if( w==94 )
   10030             :     {
   10031           0 :         r = -2.356e+00;
   10032             :     }
   10033           0 :     if( w==93 )
   10034             :     {
   10035           0 :         r = -2.412e+00;
   10036             :     }
   10037           0 :     if( w==92 )
   10038             :     {
   10039           0 :         r = -2.468e+00;
   10040             :     }
   10041           0 :     if( w==91 )
   10042             :     {
   10043           0 :         r = -2.525e+00;
   10044             :     }
   10045           0 :     if( w==90 )
   10046             :     {
   10047           0 :         r = -2.583e+00;
   10048             :     }
   10049           0 :     if( w==89 )
   10050             :     {
   10051           0 :         r = -2.642e+00;
   10052             :     }
   10053           0 :     if( w==88 )
   10054             :     {
   10055           0 :         r = -2.702e+00;
   10056             :     }
   10057           0 :     if( w==87 )
   10058             :     {
   10059           0 :         r = -2.763e+00;
   10060             :     }
   10061           0 :     if( w==86 )
   10062             :     {
   10063           0 :         r = -2.825e+00;
   10064             :     }
   10065           0 :     if( w==85 )
   10066             :     {
   10067           0 :         r = -2.888e+00;
   10068             :     }
   10069           0 :     if( w==84 )
   10070             :     {
   10071           0 :         r = -2.951e+00;
   10072             :     }
   10073           0 :     if( w==83 )
   10074             :     {
   10075           0 :         r = -3.016e+00;
   10076             :     }
   10077           0 :     if( w==82 )
   10078             :     {
   10079           0 :         r = -3.082e+00;
   10080             :     }
   10081           0 :     if( w==81 )
   10082             :     {
   10083           0 :         r = -3.149e+00;
   10084             :     }
   10085           0 :     if( w==80 )
   10086             :     {
   10087           0 :         r = -3.216e+00;
   10088             :     }
   10089           0 :     if( w==79 )
   10090             :     {
   10091           0 :         r = -3.285e+00;
   10092             :     }
   10093           0 :     if( w==78 )
   10094             :     {
   10095           0 :         r = -3.355e+00;
   10096             :     }
   10097           0 :     if( w==77 )
   10098             :     {
   10099           0 :         r = -3.426e+00;
   10100             :     }
   10101           0 :     if( w==76 )
   10102             :     {
   10103           0 :         r = -3.498e+00;
   10104             :     }
   10105           0 :     if( w==75 )
   10106             :     {
   10107           0 :         r = -3.571e+00;
   10108             :     }
   10109           0 :     if( w==74 )
   10110             :     {
   10111           0 :         r = -3.645e+00;
   10112             :     }
   10113           0 :     if( w==73 )
   10114             :     {
   10115           0 :         r = -3.721e+00;
   10116             :     }
   10117           0 :     if( w==72 )
   10118             :     {
   10119           0 :         r = -3.797e+00;
   10120             :     }
   10121           0 :     if( w==71 )
   10122             :     {
   10123           0 :         r = -3.875e+00;
   10124             :     }
   10125           0 :     if( w==70 )
   10126             :     {
   10127           0 :         r = -3.953e+00;
   10128             :     }
   10129           0 :     if( w==69 )
   10130             :     {
   10131           0 :         r = -4.033e+00;
   10132             :     }
   10133           0 :     if( w==68 )
   10134             :     {
   10135           0 :         r = -4.114e+00;
   10136             :     }
   10137           0 :     if( w==67 )
   10138             :     {
   10139           0 :         r = -4.197e+00;
   10140             :     }
   10141           0 :     if( w==66 )
   10142             :     {
   10143           0 :         r = -4.280e+00;
   10144             :     }
   10145           0 :     if( w==65 )
   10146             :     {
   10147           0 :         r = -4.365e+00;
   10148             :     }
   10149           0 :     if( w==64 )
   10150             :     {
   10151           0 :         r = -4.451e+00;
   10152             :     }
   10153           0 :     if( w==63 )
   10154             :     {
   10155           0 :         r = -4.539e+00;
   10156             :     }
   10157           0 :     if( w==62 )
   10158             :     {
   10159           0 :         r = -4.628e+00;
   10160             :     }
   10161           0 :     if( w==61 )
   10162             :     {
   10163           0 :         r = -4.718e+00;
   10164             :     }
   10165           0 :     if( w==60 )
   10166             :     {
   10167           0 :         r = -4.809e+00;
   10168             :     }
   10169           0 :     if( w==59 )
   10170             :     {
   10171           0 :         r = -4.902e+00;
   10172             :     }
   10173           0 :     if( w==58 )
   10174             :     {
   10175           0 :         r = -4.996e+00;
   10176             :     }
   10177           0 :     if( w==57 )
   10178             :     {
   10179           0 :         r = -5.092e+00;
   10180             :     }
   10181           0 :     if( w==56 )
   10182             :     {
   10183           0 :         r = -5.189e+00;
   10184             :     }
   10185           0 :     if( w==55 )
   10186             :     {
   10187           0 :         r = -5.287e+00;
   10188             :     }
   10189           0 :     if( w==54 )
   10190             :     {
   10191           0 :         r = -5.388e+00;
   10192             :     }
   10193           0 :     if( w==53 )
   10194             :     {
   10195           0 :         r = -5.489e+00;
   10196             :     }
   10197           0 :     if( w==52 )
   10198             :     {
   10199           0 :         r = -5.592e+00;
   10200             :     }
   10201           0 :     if( w==51 )
   10202             :     {
   10203           0 :         r = -5.697e+00;
   10204             :     }
   10205           0 :     if( w==50 )
   10206             :     {
   10207           0 :         r = -5.804e+00;
   10208             :     }
   10209           0 :     if( w==49 )
   10210             :     {
   10211           0 :         r = -5.912e+00;
   10212             :     }
   10213           0 :     if( w==48 )
   10214             :     {
   10215           0 :         r = -6.022e+00;
   10216             :     }
   10217           0 :     if( w==47 )
   10218             :     {
   10219           0 :         r = -6.133e+00;
   10220             :     }
   10221           0 :     if( w==46 )
   10222             :     {
   10223           0 :         r = -6.247e+00;
   10224             :     }
   10225           0 :     if( w==45 )
   10226             :     {
   10227           0 :         r = -6.362e+00;
   10228             :     }
   10229           0 :     if( w==44 )
   10230             :     {
   10231           0 :         r = -6.479e+00;
   10232             :     }
   10233           0 :     if( w==43 )
   10234             :     {
   10235           0 :         r = -6.598e+00;
   10236             :     }
   10237           0 :     if( w==42 )
   10238             :     {
   10239           0 :         r = -6.719e+00;
   10240             :     }
   10241           0 :     if( w==41 )
   10242             :     {
   10243           0 :         r = -6.842e+00;
   10244             :     }
   10245           0 :     if( w==40 )
   10246             :     {
   10247           0 :         r = -6.967e+00;
   10248             :     }
   10249           0 :     if( w==39 )
   10250             :     {
   10251           0 :         r = -7.094e+00;
   10252             :     }
   10253           0 :     if( w==38 )
   10254             :     {
   10255           0 :         r = -7.224e+00;
   10256             :     }
   10257           0 :     if( w==37 )
   10258             :     {
   10259           0 :         r = -7.355e+00;
   10260             :     }
   10261           0 :     if( w==36 )
   10262             :     {
   10263           0 :         r = -7.489e+00;
   10264             :     }
   10265           0 :     if( w==35 )
   10266             :     {
   10267           0 :         r = -7.625e+00;
   10268             :     }
   10269           0 :     if( w==34 )
   10270             :     {
   10271           0 :         r = -7.764e+00;
   10272             :     }
   10273           0 :     if( w==33 )
   10274             :     {
   10275           0 :         r = -7.905e+00;
   10276             :     }
   10277           0 :     if( w==32 )
   10278             :     {
   10279           0 :         r = -8.049e+00;
   10280             :     }
   10281           0 :     if( w==31 )
   10282             :     {
   10283           0 :         r = -8.196e+00;
   10284             :     }
   10285           0 :     if( w==30 )
   10286             :     {
   10287           0 :         r = -8.345e+00;
   10288             :     }
   10289           0 :     if( w==29 )
   10290             :     {
   10291           0 :         r = -8.498e+00;
   10292             :     }
   10293           0 :     if( w==28 )
   10294             :     {
   10295           0 :         r = -8.653e+00;
   10296             :     }
   10297           0 :     if( w==27 )
   10298             :     {
   10299           0 :         r = -8.811e+00;
   10300             :     }
   10301           0 :     if( w==26 )
   10302             :     {
   10303           0 :         r = -8.974e+00;
   10304             :     }
   10305           0 :     if( w==25 )
   10306             :     {
   10307           0 :         r = -9.139e+00;
   10308             :     }
   10309           0 :     if( w==24 )
   10310             :     {
   10311           0 :         r = -9.308e+00;
   10312             :     }
   10313           0 :     if( w==23 )
   10314             :     {
   10315           0 :         r = -9.481e+00;
   10316             :     }
   10317           0 :     if( w==22 )
   10318             :     {
   10319           0 :         r = -9.658e+00;
   10320             :     }
   10321           0 :     if( w==21 )
   10322             :     {
   10323           0 :         r = -9.840e+00;
   10324             :     }
   10325           0 :     if( w==20 )
   10326             :     {
   10327           0 :         r = -1.003e+01;
   10328             :     }
   10329           0 :     if( w==19 )
   10330             :     {
   10331           0 :         r = -1.022e+01;
   10332             :     }
   10333           0 :     if( w==18 )
   10334             :     {
   10335           0 :         r = -1.041e+01;
   10336             :     }
   10337           0 :     if( w==17 )
   10338             :     {
   10339           0 :         r = -1.061e+01;
   10340             :     }
   10341           0 :     if( w==16 )
   10342             :     {
   10343           0 :         r = -1.081e+01;
   10344             :     }
   10345           0 :     if( w==15 )
   10346             :     {
   10347           0 :         r = -1.102e+01;
   10348             :     }
   10349           0 :     if( w==14 )
   10350             :     {
   10351           0 :         r = -1.124e+01;
   10352             :     }
   10353           0 :     if( w==13 )
   10354             :     {
   10355           0 :         r = -1.147e+01;
   10356             :     }
   10357           0 :     if( w==12 )
   10358             :     {
   10359           0 :         r = -1.169e+01;
   10360             :     }
   10361           0 :     if( w==11 )
   10362             :     {
   10363           0 :         r = -1.194e+01;
   10364             :     }
   10365           0 :     if( w==10 )
   10366             :     {
   10367           0 :         r = -1.218e+01;
   10368             :     }
   10369           0 :     if( w==9 )
   10370             :     {
   10371           0 :         r = -1.245e+01;
   10372             :     }
   10373           0 :     if( w==8 )
   10374             :     {
   10375           0 :         r = -1.272e+01;
   10376             :     }
   10377           0 :     if( w==7 )
   10378             :     {
   10379           0 :         r = -1.300e+01;
   10380             :     }
   10381           0 :     if( w==6 )
   10382             :     {
   10383           0 :         r = -1.330e+01;
   10384             :     }
   10385           0 :     if( w==5 )
   10386             :     {
   10387           0 :         r = -1.364e+01;
   10388             :     }
   10389           0 :     if( w==4 )
   10390             :     {
   10391           0 :         r = -1.400e+01;
   10392             :     }
   10393           0 :     if( w==3 )
   10394             :     {
   10395           0 :         r = -1.433e+01;
   10396             :     }
   10397           0 :     if( w==2 )
   10398             :     {
   10399           0 :         r = -1.484e+01;
   10400             :     }
   10401           0 :     if( w==1 )
   10402             :     {
   10403           0 :         r = -1.525e+01;
   10404             :     }
   10405           0 :     if( w<=0 )
   10406             :     {
   10407           0 :         r = -1.594e+01;
   10408             :     }
   10409           0 :     result = r;
   10410           0 :     return result;
   10411             : }
   10412             : 
   10413             : 
   10414             : /*************************************************************************
   10415             : Tail(S, 24)
   10416             : *************************************************************************/
   10417           0 : static double wsr_w24(double s, ae_state *_state)
   10418             : {
   10419             :     ae_int_t w;
   10420             :     double r;
   10421             :     double result;
   10422             : 
   10423             : 
   10424           0 :     r = (double)(0);
   10425           0 :     w = ae_round(-3.500000e+01*s+1.500000e+02, _state);
   10426           0 :     if( w>=150 )
   10427             :     {
   10428           0 :         r = -6.820e-01;
   10429             :     }
   10430           0 :     if( w==149 )
   10431             :     {
   10432           0 :         r = -7.044e-01;
   10433             :     }
   10434           0 :     if( w==148 )
   10435             :     {
   10436           0 :         r = -7.273e-01;
   10437             :     }
   10438           0 :     if( w==147 )
   10439             :     {
   10440           0 :         r = -7.507e-01;
   10441             :     }
   10442           0 :     if( w==146 )
   10443             :     {
   10444           0 :         r = -7.746e-01;
   10445             :     }
   10446           0 :     if( w==145 )
   10447             :     {
   10448           0 :         r = -7.990e-01;
   10449             :     }
   10450           0 :     if( w==144 )
   10451             :     {
   10452           0 :         r = -8.239e-01;
   10453             :     }
   10454           0 :     if( w==143 )
   10455             :     {
   10456           0 :         r = -8.494e-01;
   10457             :     }
   10458           0 :     if( w==142 )
   10459             :     {
   10460           0 :         r = -8.754e-01;
   10461             :     }
   10462           0 :     if( w==141 )
   10463             :     {
   10464           0 :         r = -9.020e-01;
   10465             :     }
   10466           0 :     if( w==140 )
   10467             :     {
   10468           0 :         r = -9.291e-01;
   10469             :     }
   10470           0 :     if( w==139 )
   10471             :     {
   10472           0 :         r = -9.567e-01;
   10473             :     }
   10474           0 :     if( w==138 )
   10475             :     {
   10476           0 :         r = -9.849e-01;
   10477             :     }
   10478           0 :     if( w==137 )
   10479             :     {
   10480           0 :         r = -1.014e+00;
   10481             :     }
   10482           0 :     if( w==136 )
   10483             :     {
   10484           0 :         r = -1.043e+00;
   10485             :     }
   10486           0 :     if( w==135 )
   10487             :     {
   10488           0 :         r = -1.073e+00;
   10489             :     }
   10490           0 :     if( w==134 )
   10491             :     {
   10492           0 :         r = -1.103e+00;
   10493             :     }
   10494           0 :     if( w==133 )
   10495             :     {
   10496           0 :         r = -1.135e+00;
   10497             :     }
   10498           0 :     if( w==132 )
   10499             :     {
   10500           0 :         r = -1.166e+00;
   10501             :     }
   10502           0 :     if( w==131 )
   10503             :     {
   10504           0 :         r = -1.198e+00;
   10505             :     }
   10506           0 :     if( w==130 )
   10507             :     {
   10508           0 :         r = -1.231e+00;
   10509             :     }
   10510           0 :     if( w==129 )
   10511             :     {
   10512           0 :         r = -1.265e+00;
   10513             :     }
   10514           0 :     if( w==128 )
   10515             :     {
   10516           0 :         r = -1.299e+00;
   10517             :     }
   10518           0 :     if( w==127 )
   10519             :     {
   10520           0 :         r = -1.334e+00;
   10521             :     }
   10522           0 :     if( w==126 )
   10523             :     {
   10524           0 :         r = -1.369e+00;
   10525             :     }
   10526           0 :     if( w==125 )
   10527             :     {
   10528           0 :         r = -1.405e+00;
   10529             :     }
   10530           0 :     if( w==124 )
   10531             :     {
   10532           0 :         r = -1.441e+00;
   10533             :     }
   10534           0 :     if( w==123 )
   10535             :     {
   10536           0 :         r = -1.479e+00;
   10537             :     }
   10538           0 :     if( w==122 )
   10539             :     {
   10540           0 :         r = -1.517e+00;
   10541             :     }
   10542           0 :     if( w==121 )
   10543             :     {
   10544           0 :         r = -1.555e+00;
   10545             :     }
   10546           0 :     if( w==120 )
   10547             :     {
   10548           0 :         r = -1.594e+00;
   10549             :     }
   10550           0 :     if( w==119 )
   10551             :     {
   10552           0 :         r = -1.634e+00;
   10553             :     }
   10554           0 :     if( w==118 )
   10555             :     {
   10556           0 :         r = -1.675e+00;
   10557             :     }
   10558           0 :     if( w==117 )
   10559             :     {
   10560           0 :         r = -1.716e+00;
   10561             :     }
   10562           0 :     if( w==116 )
   10563             :     {
   10564           0 :         r = -1.758e+00;
   10565             :     }
   10566           0 :     if( w==115 )
   10567             :     {
   10568           0 :         r = -1.800e+00;
   10569             :     }
   10570           0 :     if( w==114 )
   10571             :     {
   10572           0 :         r = -1.844e+00;
   10573             :     }
   10574           0 :     if( w==113 )
   10575             :     {
   10576           0 :         r = -1.888e+00;
   10577             :     }
   10578           0 :     if( w==112 )
   10579             :     {
   10580           0 :         r = -1.932e+00;
   10581             :     }
   10582           0 :     if( w==111 )
   10583             :     {
   10584           0 :         r = -1.978e+00;
   10585             :     }
   10586           0 :     if( w==110 )
   10587             :     {
   10588           0 :         r = -2.024e+00;
   10589             :     }
   10590           0 :     if( w==109 )
   10591             :     {
   10592           0 :         r = -2.070e+00;
   10593             :     }
   10594           0 :     if( w==108 )
   10595             :     {
   10596           0 :         r = -2.118e+00;
   10597             :     }
   10598           0 :     if( w==107 )
   10599             :     {
   10600           0 :         r = -2.166e+00;
   10601             :     }
   10602           0 :     if( w==106 )
   10603             :     {
   10604           0 :         r = -2.215e+00;
   10605             :     }
   10606           0 :     if( w==105 )
   10607             :     {
   10608           0 :         r = -2.265e+00;
   10609             :     }
   10610           0 :     if( w==104 )
   10611             :     {
   10612           0 :         r = -2.316e+00;
   10613             :     }
   10614           0 :     if( w==103 )
   10615             :     {
   10616           0 :         r = -2.367e+00;
   10617             :     }
   10618           0 :     if( w==102 )
   10619             :     {
   10620           0 :         r = -2.419e+00;
   10621             :     }
   10622           0 :     if( w==101 )
   10623             :     {
   10624           0 :         r = -2.472e+00;
   10625             :     }
   10626           0 :     if( w==100 )
   10627             :     {
   10628           0 :         r = -2.526e+00;
   10629             :     }
   10630           0 :     if( w==99 )
   10631             :     {
   10632           0 :         r = -2.580e+00;
   10633             :     }
   10634           0 :     if( w==98 )
   10635             :     {
   10636           0 :         r = -2.636e+00;
   10637             :     }
   10638           0 :     if( w==97 )
   10639             :     {
   10640           0 :         r = -2.692e+00;
   10641             :     }
   10642           0 :     if( w==96 )
   10643             :     {
   10644           0 :         r = -2.749e+00;
   10645             :     }
   10646           0 :     if( w==95 )
   10647             :     {
   10648           0 :         r = -2.806e+00;
   10649             :     }
   10650           0 :     if( w==94 )
   10651             :     {
   10652           0 :         r = -2.865e+00;
   10653             :     }
   10654           0 :     if( w==93 )
   10655             :     {
   10656           0 :         r = -2.925e+00;
   10657             :     }
   10658           0 :     if( w==92 )
   10659             :     {
   10660           0 :         r = -2.985e+00;
   10661             :     }
   10662           0 :     if( w==91 )
   10663             :     {
   10664           0 :         r = -3.046e+00;
   10665             :     }
   10666           0 :     if( w==90 )
   10667             :     {
   10668           0 :         r = -3.108e+00;
   10669             :     }
   10670           0 :     if( w==89 )
   10671             :     {
   10672           0 :         r = -3.171e+00;
   10673             :     }
   10674           0 :     if( w==88 )
   10675             :     {
   10676           0 :         r = -3.235e+00;
   10677             :     }
   10678           0 :     if( w==87 )
   10679             :     {
   10680           0 :         r = -3.300e+00;
   10681             :     }
   10682           0 :     if( w==86 )
   10683             :     {
   10684           0 :         r = -3.365e+00;
   10685             :     }
   10686           0 :     if( w==85 )
   10687             :     {
   10688           0 :         r = -3.432e+00;
   10689             :     }
   10690           0 :     if( w==84 )
   10691             :     {
   10692           0 :         r = -3.499e+00;
   10693             :     }
   10694           0 :     if( w==83 )
   10695             :     {
   10696           0 :         r = -3.568e+00;
   10697             :     }
   10698           0 :     if( w==82 )
   10699             :     {
   10700           0 :         r = -3.637e+00;
   10701             :     }
   10702           0 :     if( w==81 )
   10703             :     {
   10704           0 :         r = -3.708e+00;
   10705             :     }
   10706           0 :     if( w==80 )
   10707             :     {
   10708           0 :         r = -3.779e+00;
   10709             :     }
   10710           0 :     if( w==79 )
   10711             :     {
   10712           0 :         r = -3.852e+00;
   10713             :     }
   10714           0 :     if( w==78 )
   10715             :     {
   10716           0 :         r = -3.925e+00;
   10717             :     }
   10718           0 :     if( w==77 )
   10719             :     {
   10720           0 :         r = -4.000e+00;
   10721             :     }
   10722           0 :     if( w==76 )
   10723             :     {
   10724           0 :         r = -4.075e+00;
   10725             :     }
   10726           0 :     if( w==75 )
   10727             :     {
   10728           0 :         r = -4.151e+00;
   10729             :     }
   10730           0 :     if( w==74 )
   10731             :     {
   10732           0 :         r = -4.229e+00;
   10733             :     }
   10734           0 :     if( w==73 )
   10735             :     {
   10736           0 :         r = -4.308e+00;
   10737             :     }
   10738           0 :     if( w==72 )
   10739             :     {
   10740           0 :         r = -4.387e+00;
   10741             :     }
   10742           0 :     if( w==71 )
   10743             :     {
   10744           0 :         r = -4.468e+00;
   10745             :     }
   10746           0 :     if( w==70 )
   10747             :     {
   10748           0 :         r = -4.550e+00;
   10749             :     }
   10750           0 :     if( w==69 )
   10751             :     {
   10752           0 :         r = -4.633e+00;
   10753             :     }
   10754           0 :     if( w==68 )
   10755             :     {
   10756           0 :         r = -4.718e+00;
   10757             :     }
   10758           0 :     if( w==67 )
   10759             :     {
   10760           0 :         r = -4.803e+00;
   10761             :     }
   10762           0 :     if( w==66 )
   10763             :     {
   10764           0 :         r = -4.890e+00;
   10765             :     }
   10766           0 :     if( w==65 )
   10767             :     {
   10768           0 :         r = -4.978e+00;
   10769             :     }
   10770           0 :     if( w==64 )
   10771             :     {
   10772           0 :         r = -5.067e+00;
   10773             :     }
   10774           0 :     if( w==63 )
   10775             :     {
   10776           0 :         r = -5.157e+00;
   10777             :     }
   10778           0 :     if( w==62 )
   10779             :     {
   10780           0 :         r = -5.249e+00;
   10781             :     }
   10782           0 :     if( w==61 )
   10783             :     {
   10784           0 :         r = -5.342e+00;
   10785             :     }
   10786           0 :     if( w==60 )
   10787             :     {
   10788           0 :         r = -5.436e+00;
   10789             :     }
   10790           0 :     if( w==59 )
   10791             :     {
   10792           0 :         r = -5.531e+00;
   10793             :     }
   10794           0 :     if( w==58 )
   10795             :     {
   10796           0 :         r = -5.628e+00;
   10797             :     }
   10798           0 :     if( w==57 )
   10799             :     {
   10800           0 :         r = -5.727e+00;
   10801             :     }
   10802           0 :     if( w==56 )
   10803             :     {
   10804           0 :         r = -5.826e+00;
   10805             :     }
   10806           0 :     if( w==55 )
   10807             :     {
   10808           0 :         r = -5.927e+00;
   10809             :     }
   10810           0 :     if( w==54 )
   10811             :     {
   10812           0 :         r = -6.030e+00;
   10813             :     }
   10814           0 :     if( w==53 )
   10815             :     {
   10816           0 :         r = -6.134e+00;
   10817             :     }
   10818           0 :     if( w==52 )
   10819             :     {
   10820           0 :         r = -6.240e+00;
   10821             :     }
   10822           0 :     if( w==51 )
   10823             :     {
   10824           0 :         r = -6.347e+00;
   10825             :     }
   10826           0 :     if( w==50 )
   10827             :     {
   10828           0 :         r = -6.456e+00;
   10829             :     }
   10830           0 :     if( w==49 )
   10831             :     {
   10832           0 :         r = -6.566e+00;
   10833             :     }
   10834           0 :     if( w==48 )
   10835             :     {
   10836           0 :         r = -6.678e+00;
   10837             :     }
   10838           0 :     if( w==47 )
   10839             :     {
   10840           0 :         r = -6.792e+00;
   10841             :     }
   10842           0 :     if( w==46 )
   10843             :     {
   10844           0 :         r = -6.907e+00;
   10845             :     }
   10846           0 :     if( w==45 )
   10847             :     {
   10848           0 :         r = -7.025e+00;
   10849             :     }
   10850           0 :     if( w==44 )
   10851             :     {
   10852           0 :         r = -7.144e+00;
   10853             :     }
   10854           0 :     if( w==43 )
   10855             :     {
   10856           0 :         r = -7.265e+00;
   10857             :     }
   10858           0 :     if( w==42 )
   10859             :     {
   10860           0 :         r = -7.387e+00;
   10861             :     }
   10862           0 :     if( w==41 )
   10863             :     {
   10864           0 :         r = -7.512e+00;
   10865             :     }
   10866           0 :     if( w==40 )
   10867             :     {
   10868           0 :         r = -7.639e+00;
   10869             :     }
   10870           0 :     if( w==39 )
   10871             :     {
   10872           0 :         r = -7.768e+00;
   10873             :     }
   10874           0 :     if( w==38 )
   10875             :     {
   10876           0 :         r = -7.899e+00;
   10877             :     }
   10878           0 :     if( w==37 )
   10879             :     {
   10880           0 :         r = -8.032e+00;
   10881             :     }
   10882           0 :     if( w==36 )
   10883             :     {
   10884           0 :         r = -8.167e+00;
   10885             :     }
   10886           0 :     if( w==35 )
   10887             :     {
   10888           0 :         r = -8.305e+00;
   10889             :     }
   10890           0 :     if( w==34 )
   10891             :     {
   10892           0 :         r = -8.445e+00;
   10893             :     }
   10894           0 :     if( w==33 )
   10895             :     {
   10896           0 :         r = -8.588e+00;
   10897             :     }
   10898           0 :     if( w==32 )
   10899             :     {
   10900           0 :         r = -8.733e+00;
   10901             :     }
   10902           0 :     if( w==31 )
   10903             :     {
   10904           0 :         r = -8.881e+00;
   10905             :     }
   10906           0 :     if( w==30 )
   10907             :     {
   10908           0 :         r = -9.031e+00;
   10909             :     }
   10910           0 :     if( w==29 )
   10911             :     {
   10912           0 :         r = -9.185e+00;
   10913             :     }
   10914           0 :     if( w==28 )
   10915             :     {
   10916           0 :         r = -9.341e+00;
   10917             :     }
   10918           0 :     if( w==27 )
   10919             :     {
   10920           0 :         r = -9.501e+00;
   10921             :     }
   10922           0 :     if( w==26 )
   10923             :     {
   10924           0 :         r = -9.664e+00;
   10925             :     }
   10926           0 :     if( w==25 )
   10927             :     {
   10928           0 :         r = -9.830e+00;
   10929             :     }
   10930           0 :     if( w==24 )
   10931             :     {
   10932           0 :         r = -1.000e+01;
   10933             :     }
   10934           0 :     if( w==23 )
   10935             :     {
   10936           0 :         r = -1.017e+01;
   10937             :     }
   10938           0 :     if( w==22 )
   10939             :     {
   10940           0 :         r = -1.035e+01;
   10941             :     }
   10942           0 :     if( w==21 )
   10943             :     {
   10944           0 :         r = -1.053e+01;
   10945             :     }
   10946           0 :     if( w==20 )
   10947             :     {
   10948           0 :         r = -1.072e+01;
   10949             :     }
   10950           0 :     if( w==19 )
   10951             :     {
   10952           0 :         r = -1.091e+01;
   10953             :     }
   10954           0 :     if( w==18 )
   10955             :     {
   10956           0 :         r = -1.110e+01;
   10957             :     }
   10958           0 :     if( w==17 )
   10959             :     {
   10960           0 :         r = -1.130e+01;
   10961             :     }
   10962           0 :     if( w==16 )
   10963             :     {
   10964           0 :         r = -1.151e+01;
   10965             :     }
   10966           0 :     if( w==15 )
   10967             :     {
   10968           0 :         r = -1.172e+01;
   10969             :     }
   10970           0 :     if( w==14 )
   10971             :     {
   10972           0 :         r = -1.194e+01;
   10973             :     }
   10974           0 :     if( w==13 )
   10975             :     {
   10976           0 :         r = -1.216e+01;
   10977             :     }
   10978           0 :     if( w==12 )
   10979             :     {
   10980           0 :         r = -1.239e+01;
   10981             :     }
   10982           0 :     if( w==11 )
   10983             :     {
   10984           0 :         r = -1.263e+01;
   10985             :     }
   10986           0 :     if( w==10 )
   10987             :     {
   10988           0 :         r = -1.287e+01;
   10989             :     }
   10990           0 :     if( w==9 )
   10991             :     {
   10992           0 :         r = -1.314e+01;
   10993             :     }
   10994           0 :     if( w==8 )
   10995             :     {
   10996           0 :         r = -1.342e+01;
   10997             :     }
   10998           0 :     if( w==7 )
   10999             :     {
   11000           0 :         r = -1.369e+01;
   11001             :     }
   11002           0 :     if( w==6 )
   11003             :     {
   11004           0 :         r = -1.400e+01;
   11005             :     }
   11006           0 :     if( w==5 )
   11007             :     {
   11008           0 :         r = -1.433e+01;
   11009             :     }
   11010           0 :     if( w==4 )
   11011             :     {
   11012           0 :         r = -1.469e+01;
   11013             :     }
   11014           0 :     if( w==3 )
   11015             :     {
   11016           0 :         r = -1.503e+01;
   11017             :     }
   11018           0 :     if( w==2 )
   11019             :     {
   11020           0 :         r = -1.554e+01;
   11021             :     }
   11022           0 :     if( w==1 )
   11023             :     {
   11024           0 :         r = -1.594e+01;
   11025             :     }
   11026           0 :     if( w<=0 )
   11027             :     {
   11028           0 :         r = -1.664e+01;
   11029             :     }
   11030           0 :     result = r;
   11031           0 :     return result;
   11032             : }
   11033             : 
   11034             : 
   11035             : /*************************************************************************
   11036             : Tail(S, 25)
   11037             : *************************************************************************/
   11038           0 : static double wsr_w25(double s, ae_state *_state)
   11039             : {
   11040             :     double x;
   11041             :     double tj;
   11042             :     double tj1;
   11043             :     double result;
   11044             : 
   11045             : 
   11046           0 :     result = (double)(0);
   11047           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11048           0 :     tj = (double)(1);
   11049           0 :     tj1 = x;
   11050           0 :     wsr_wcheb(x, -5.150509e+00, &tj, &tj1, &result, _state);
   11051           0 :     wsr_wcheb(x, -5.695528e+00, &tj, &tj1, &result, _state);
   11052           0 :     wsr_wcheb(x, -1.437637e+00, &tj, &tj1, &result, _state);
   11053           0 :     wsr_wcheb(x, -2.611906e-01, &tj, &tj1, &result, _state);
   11054           0 :     wsr_wcheb(x, -7.625722e-02, &tj, &tj1, &result, _state);
   11055           0 :     wsr_wcheb(x, -2.579892e-02, &tj, &tj1, &result, _state);
   11056           0 :     wsr_wcheb(x, -1.086876e-02, &tj, &tj1, &result, _state);
   11057           0 :     wsr_wcheb(x, -2.906543e-03, &tj, &tj1, &result, _state);
   11058           0 :     wsr_wcheb(x, -2.354881e-03, &tj, &tj1, &result, _state);
   11059           0 :     wsr_wcheb(x, 1.007195e-04, &tj, &tj1, &result, _state);
   11060           0 :     wsr_wcheb(x, -8.437327e-04, &tj, &tj1, &result, _state);
   11061           0 :     return result;
   11062             : }
   11063             : 
   11064             : 
   11065             : /*************************************************************************
   11066             : Tail(S, 26)
   11067             : *************************************************************************/
   11068           0 : static double wsr_w26(double s, ae_state *_state)
   11069             : {
   11070             :     double x;
   11071             :     double tj;
   11072             :     double tj1;
   11073             :     double result;
   11074             : 
   11075             : 
   11076           0 :     result = (double)(0);
   11077           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11078           0 :     tj = (double)(1);
   11079           0 :     tj1 = x;
   11080           0 :     wsr_wcheb(x, -5.117622e+00, &tj, &tj1, &result, _state);
   11081           0 :     wsr_wcheb(x, -5.635159e+00, &tj, &tj1, &result, _state);
   11082           0 :     wsr_wcheb(x, -1.395167e+00, &tj, &tj1, &result, _state);
   11083           0 :     wsr_wcheb(x, -2.382823e-01, &tj, &tj1, &result, _state);
   11084           0 :     wsr_wcheb(x, -6.531987e-02, &tj, &tj1, &result, _state);
   11085           0 :     wsr_wcheb(x, -2.060112e-02, &tj, &tj1, &result, _state);
   11086           0 :     wsr_wcheb(x, -8.203697e-03, &tj, &tj1, &result, _state);
   11087           0 :     wsr_wcheb(x, -1.516523e-03, &tj, &tj1, &result, _state);
   11088           0 :     wsr_wcheb(x, -1.431364e-03, &tj, &tj1, &result, _state);
   11089           0 :     wsr_wcheb(x, 6.384553e-04, &tj, &tj1, &result, _state);
   11090           0 :     wsr_wcheb(x, -3.238369e-04, &tj, &tj1, &result, _state);
   11091           0 :     return result;
   11092             : }
   11093             : 
   11094             : 
   11095             : /*************************************************************************
   11096             : Tail(S, 27)
   11097             : *************************************************************************/
   11098           0 : static double wsr_w27(double s, ae_state *_state)
   11099             : {
   11100             :     double x;
   11101             :     double tj;
   11102             :     double tj1;
   11103             :     double result;
   11104             : 
   11105             : 
   11106           0 :     result = (double)(0);
   11107           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11108           0 :     tj = (double)(1);
   11109           0 :     tj1 = x;
   11110           0 :     wsr_wcheb(x, -5.089731e+00, &tj, &tj1, &result, _state);
   11111           0 :     wsr_wcheb(x, -5.584248e+00, &tj, &tj1, &result, _state);
   11112           0 :     wsr_wcheb(x, -1.359966e+00, &tj, &tj1, &result, _state);
   11113           0 :     wsr_wcheb(x, -2.203696e-01, &tj, &tj1, &result, _state);
   11114           0 :     wsr_wcheb(x, -5.753344e-02, &tj, &tj1, &result, _state);
   11115           0 :     wsr_wcheb(x, -1.761891e-02, &tj, &tj1, &result, _state);
   11116           0 :     wsr_wcheb(x, -7.096897e-03, &tj, &tj1, &result, _state);
   11117           0 :     wsr_wcheb(x, -1.419108e-03, &tj, &tj1, &result, _state);
   11118           0 :     wsr_wcheb(x, -1.581214e-03, &tj, &tj1, &result, _state);
   11119           0 :     wsr_wcheb(x, 3.033766e-04, &tj, &tj1, &result, _state);
   11120           0 :     wsr_wcheb(x, -5.901441e-04, &tj, &tj1, &result, _state);
   11121           0 :     return result;
   11122             : }
   11123             : 
   11124             : 
   11125             : /*************************************************************************
   11126             : Tail(S, 28)
   11127             : *************************************************************************/
   11128           0 : static double wsr_w28(double s, ae_state *_state)
   11129             : {
   11130             :     double x;
   11131             :     double tj;
   11132             :     double tj1;
   11133             :     double result;
   11134             : 
   11135             : 
   11136           0 :     result = (double)(0);
   11137           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11138           0 :     tj = (double)(1);
   11139           0 :     tj1 = x;
   11140           0 :     wsr_wcheb(x, -5.065046e+00, &tj, &tj1, &result, _state);
   11141           0 :     wsr_wcheb(x, -5.539163e+00, &tj, &tj1, &result, _state);
   11142           0 :     wsr_wcheb(x, -1.328939e+00, &tj, &tj1, &result, _state);
   11143           0 :     wsr_wcheb(x, -2.046376e-01, &tj, &tj1, &result, _state);
   11144           0 :     wsr_wcheb(x, -5.061515e-02, &tj, &tj1, &result, _state);
   11145           0 :     wsr_wcheb(x, -1.469271e-02, &tj, &tj1, &result, _state);
   11146           0 :     wsr_wcheb(x, -5.711578e-03, &tj, &tj1, &result, _state);
   11147           0 :     wsr_wcheb(x, -8.389153e-04, &tj, &tj1, &result, _state);
   11148           0 :     wsr_wcheb(x, -1.250575e-03, &tj, &tj1, &result, _state);
   11149           0 :     wsr_wcheb(x, 4.047245e-04, &tj, &tj1, &result, _state);
   11150           0 :     wsr_wcheb(x, -5.128555e-04, &tj, &tj1, &result, _state);
   11151           0 :     return result;
   11152             : }
   11153             : 
   11154             : 
   11155             : /*************************************************************************
   11156             : Tail(S, 29)
   11157             : *************************************************************************/
   11158           0 : static double wsr_w29(double s, ae_state *_state)
   11159             : {
   11160             :     double x;
   11161             :     double tj;
   11162             :     double tj1;
   11163             :     double result;
   11164             : 
   11165             : 
   11166           0 :     result = (double)(0);
   11167           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11168           0 :     tj = (double)(1);
   11169           0 :     tj1 = x;
   11170           0 :     wsr_wcheb(x, -5.043413e+00, &tj, &tj1, &result, _state);
   11171           0 :     wsr_wcheb(x, -5.499756e+00, &tj, &tj1, &result, _state);
   11172           0 :     wsr_wcheb(x, -1.302137e+00, &tj, &tj1, &result, _state);
   11173           0 :     wsr_wcheb(x, -1.915129e-01, &tj, &tj1, &result, _state);
   11174           0 :     wsr_wcheb(x, -4.516329e-02, &tj, &tj1, &result, _state);
   11175           0 :     wsr_wcheb(x, -1.260064e-02, &tj, &tj1, &result, _state);
   11176           0 :     wsr_wcheb(x, -4.817269e-03, &tj, &tj1, &result, _state);
   11177           0 :     wsr_wcheb(x, -5.478130e-04, &tj, &tj1, &result, _state);
   11178           0 :     wsr_wcheb(x, -1.111668e-03, &tj, &tj1, &result, _state);
   11179           0 :     wsr_wcheb(x, 4.093451e-04, &tj, &tj1, &result, _state);
   11180           0 :     wsr_wcheb(x, -5.135860e-04, &tj, &tj1, &result, _state);
   11181           0 :     return result;
   11182             : }
   11183             : 
   11184             : 
   11185             : /*************************************************************************
   11186             : Tail(S, 30)
   11187             : *************************************************************************/
   11188           0 : static double wsr_w30(double s, ae_state *_state)
   11189             : {
   11190             :     double x;
   11191             :     double tj;
   11192             :     double tj1;
   11193             :     double result;
   11194             : 
   11195             : 
   11196           0 :     result = (double)(0);
   11197           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11198           0 :     tj = (double)(1);
   11199           0 :     tj1 = x;
   11200           0 :     wsr_wcheb(x, -5.024071e+00, &tj, &tj1, &result, _state);
   11201           0 :     wsr_wcheb(x, -5.464515e+00, &tj, &tj1, &result, _state);
   11202           0 :     wsr_wcheb(x, -1.278342e+00, &tj, &tj1, &result, _state);
   11203           0 :     wsr_wcheb(x, -1.800030e-01, &tj, &tj1, &result, _state);
   11204           0 :     wsr_wcheb(x, -4.046294e-02, &tj, &tj1, &result, _state);
   11205           0 :     wsr_wcheb(x, -1.076162e-02, &tj, &tj1, &result, _state);
   11206           0 :     wsr_wcheb(x, -3.968677e-03, &tj, &tj1, &result, _state);
   11207           0 :     wsr_wcheb(x, -1.911679e-04, &tj, &tj1, &result, _state);
   11208           0 :     wsr_wcheb(x, -8.619185e-04, &tj, &tj1, &result, _state);
   11209           0 :     wsr_wcheb(x, 5.125362e-04, &tj, &tj1, &result, _state);
   11210           0 :     wsr_wcheb(x, -3.984370e-04, &tj, &tj1, &result, _state);
   11211           0 :     return result;
   11212             : }
   11213             : 
   11214             : 
   11215             : /*************************************************************************
   11216             : Tail(S, 40)
   11217             : *************************************************************************/
   11218           0 : static double wsr_w40(double s, ae_state *_state)
   11219             : {
   11220             :     double x;
   11221             :     double tj;
   11222             :     double tj1;
   11223             :     double result;
   11224             : 
   11225             : 
   11226           0 :     result = (double)(0);
   11227           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11228           0 :     tj = (double)(1);
   11229           0 :     tj1 = x;
   11230           0 :     wsr_wcheb(x, -4.904809e+00, &tj, &tj1, &result, _state);
   11231           0 :     wsr_wcheb(x, -5.248327e+00, &tj, &tj1, &result, _state);
   11232           0 :     wsr_wcheb(x, -1.136698e+00, &tj, &tj1, &result, _state);
   11233           0 :     wsr_wcheb(x, -1.170982e-01, &tj, &tj1, &result, _state);
   11234           0 :     wsr_wcheb(x, -1.824427e-02, &tj, &tj1, &result, _state);
   11235           0 :     wsr_wcheb(x, -3.888648e-03, &tj, &tj1, &result, _state);
   11236           0 :     wsr_wcheb(x, -1.344929e-03, &tj, &tj1, &result, _state);
   11237           0 :     wsr_wcheb(x, 2.790407e-04, &tj, &tj1, &result, _state);
   11238           0 :     wsr_wcheb(x, -4.619858e-04, &tj, &tj1, &result, _state);
   11239           0 :     wsr_wcheb(x, 3.359121e-04, &tj, &tj1, &result, _state);
   11240           0 :     wsr_wcheb(x, -2.883026e-04, &tj, &tj1, &result, _state);
   11241           0 :     return result;
   11242             : }
   11243             : 
   11244             : 
   11245             : /*************************************************************************
   11246             : Tail(S, 60)
   11247             : *************************************************************************/
   11248           0 : static double wsr_w60(double s, ae_state *_state)
   11249             : {
   11250             :     double x;
   11251             :     double tj;
   11252             :     double tj1;
   11253             :     double result;
   11254             : 
   11255             : 
   11256           0 :     result = (double)(0);
   11257           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11258           0 :     tj = (double)(1);
   11259           0 :     tj1 = x;
   11260           0 :     wsr_wcheb(x, -4.809656e+00, &tj, &tj1, &result, _state);
   11261           0 :     wsr_wcheb(x, -5.077191e+00, &tj, &tj1, &result, _state);
   11262           0 :     wsr_wcheb(x, -1.029402e+00, &tj, &tj1, &result, _state);
   11263           0 :     wsr_wcheb(x, -7.507931e-02, &tj, &tj1, &result, _state);
   11264           0 :     wsr_wcheb(x, -6.506226e-03, &tj, &tj1, &result, _state);
   11265           0 :     wsr_wcheb(x, -1.391278e-03, &tj, &tj1, &result, _state);
   11266           0 :     wsr_wcheb(x, -4.263635e-04, &tj, &tj1, &result, _state);
   11267           0 :     wsr_wcheb(x, 2.302271e-04, &tj, &tj1, &result, _state);
   11268           0 :     wsr_wcheb(x, -2.384348e-04, &tj, &tj1, &result, _state);
   11269           0 :     wsr_wcheb(x, 1.865587e-04, &tj, &tj1, &result, _state);
   11270           0 :     wsr_wcheb(x, -1.622355e-04, &tj, &tj1, &result, _state);
   11271           0 :     return result;
   11272             : }
   11273             : 
   11274             : 
   11275             : /*************************************************************************
   11276             : Tail(S, 120)
   11277             : *************************************************************************/
   11278           0 : static double wsr_w120(double s, ae_state *_state)
   11279             : {
   11280             :     double x;
   11281             :     double tj;
   11282             :     double tj1;
   11283             :     double result;
   11284             : 
   11285             : 
   11286           0 :     result = (double)(0);
   11287           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11288           0 :     tj = (double)(1);
   11289           0 :     tj1 = x;
   11290           0 :     wsr_wcheb(x, -4.729426e+00, &tj, &tj1, &result, _state);
   11291           0 :     wsr_wcheb(x, -4.934426e+00, &tj, &tj1, &result, _state);
   11292           0 :     wsr_wcheb(x, -9.433231e-01, &tj, &tj1, &result, _state);
   11293           0 :     wsr_wcheb(x, -4.492504e-02, &tj, &tj1, &result, _state);
   11294           0 :     wsr_wcheb(x, 1.673948e-05, &tj, &tj1, &result, _state);
   11295           0 :     wsr_wcheb(x, -6.077014e-04, &tj, &tj1, &result, _state);
   11296           0 :     wsr_wcheb(x, -7.215768e-05, &tj, &tj1, &result, _state);
   11297           0 :     wsr_wcheb(x, 9.086734e-05, &tj, &tj1, &result, _state);
   11298           0 :     wsr_wcheb(x, -8.447980e-05, &tj, &tj1, &result, _state);
   11299           0 :     wsr_wcheb(x, 6.705028e-05, &tj, &tj1, &result, _state);
   11300           0 :     wsr_wcheb(x, -5.828507e-05, &tj, &tj1, &result, _state);
   11301           0 :     return result;
   11302             : }
   11303             : 
   11304             : 
   11305             : /*************************************************************************
   11306             : Tail(S, 200)
   11307             : *************************************************************************/
   11308           0 : static double wsr_w200(double s, ae_state *_state)
   11309             : {
   11310             :     double x;
   11311             :     double tj;
   11312             :     double tj1;
   11313             :     double result;
   11314             : 
   11315             : 
   11316           0 :     result = (double)(0);
   11317           0 :     x = ae_minreal(2*(s-0.000000e+00)/4.000000e+00-1, 1.0, _state);
   11318           0 :     tj = (double)(1);
   11319           0 :     tj1 = x;
   11320           0 :     wsr_wcheb(x, -4.700240e+00, &tj, &tj1, &result, _state);
   11321           0 :     wsr_wcheb(x, -4.883080e+00, &tj, &tj1, &result, _state);
   11322           0 :     wsr_wcheb(x, -9.132168e-01, &tj, &tj1, &result, _state);
   11323           0 :     wsr_wcheb(x, -3.512684e-02, &tj, &tj1, &result, _state);
   11324           0 :     wsr_wcheb(x, 1.726342e-03, &tj, &tj1, &result, _state);
   11325           0 :     wsr_wcheb(x, -5.189796e-04, &tj, &tj1, &result, _state);
   11326           0 :     wsr_wcheb(x, -1.628659e-06, &tj, &tj1, &result, _state);
   11327           0 :     wsr_wcheb(x, 4.261786e-05, &tj, &tj1, &result, _state);
   11328           0 :     wsr_wcheb(x, -4.002498e-05, &tj, &tj1, &result, _state);
   11329           0 :     wsr_wcheb(x, 3.146287e-05, &tj, &tj1, &result, _state);
   11330           0 :     wsr_wcheb(x, -2.727576e-05, &tj, &tj1, &result, _state);
   11331           0 :     return result;
   11332             : }
   11333             : 
   11334             : 
   11335             : /*************************************************************************
   11336             : Tail(S,N), S>=0
   11337             : *************************************************************************/
   11338           0 : static double wsr_wsigma(double s, ae_int_t n, ae_state *_state)
   11339             : {
   11340             :     double f0;
   11341             :     double f1;
   11342             :     double f2;
   11343             :     double f3;
   11344             :     double f4;
   11345             :     double x0;
   11346             :     double x1;
   11347             :     double x2;
   11348             :     double x3;
   11349             :     double x4;
   11350             :     double x;
   11351             :     double result;
   11352             : 
   11353             : 
   11354           0 :     result = (double)(0);
   11355           0 :     if( n==5 )
   11356             :     {
   11357           0 :         result = wsr_w5(s, _state);
   11358             :     }
   11359           0 :     if( n==6 )
   11360             :     {
   11361           0 :         result = wsr_w6(s, _state);
   11362             :     }
   11363           0 :     if( n==7 )
   11364             :     {
   11365           0 :         result = wsr_w7(s, _state);
   11366             :     }
   11367           0 :     if( n==8 )
   11368             :     {
   11369           0 :         result = wsr_w8(s, _state);
   11370             :     }
   11371           0 :     if( n==9 )
   11372             :     {
   11373           0 :         result = wsr_w9(s, _state);
   11374             :     }
   11375           0 :     if( n==10 )
   11376             :     {
   11377           0 :         result = wsr_w10(s, _state);
   11378             :     }
   11379           0 :     if( n==11 )
   11380             :     {
   11381           0 :         result = wsr_w11(s, _state);
   11382             :     }
   11383           0 :     if( n==12 )
   11384             :     {
   11385           0 :         result = wsr_w12(s, _state);
   11386             :     }
   11387           0 :     if( n==13 )
   11388             :     {
   11389           0 :         result = wsr_w13(s, _state);
   11390             :     }
   11391           0 :     if( n==14 )
   11392             :     {
   11393           0 :         result = wsr_w14(s, _state);
   11394             :     }
   11395           0 :     if( n==15 )
   11396             :     {
   11397           0 :         result = wsr_w15(s, _state);
   11398             :     }
   11399           0 :     if( n==16 )
   11400             :     {
   11401           0 :         result = wsr_w16(s, _state);
   11402             :     }
   11403           0 :     if( n==17 )
   11404             :     {
   11405           0 :         result = wsr_w17(s, _state);
   11406             :     }
   11407           0 :     if( n==18 )
   11408             :     {
   11409           0 :         result = wsr_w18(s, _state);
   11410             :     }
   11411           0 :     if( n==19 )
   11412             :     {
   11413           0 :         result = wsr_w19(s, _state);
   11414             :     }
   11415           0 :     if( n==20 )
   11416             :     {
   11417           0 :         result = wsr_w20(s, _state);
   11418             :     }
   11419           0 :     if( n==21 )
   11420             :     {
   11421           0 :         result = wsr_w21(s, _state);
   11422             :     }
   11423           0 :     if( n==22 )
   11424             :     {
   11425           0 :         result = wsr_w22(s, _state);
   11426             :     }
   11427           0 :     if( n==23 )
   11428             :     {
   11429           0 :         result = wsr_w23(s, _state);
   11430             :     }
   11431           0 :     if( n==24 )
   11432             :     {
   11433           0 :         result = wsr_w24(s, _state);
   11434             :     }
   11435           0 :     if( n==25 )
   11436             :     {
   11437           0 :         result = wsr_w25(s, _state);
   11438             :     }
   11439           0 :     if( n==26 )
   11440             :     {
   11441           0 :         result = wsr_w26(s, _state);
   11442             :     }
   11443           0 :     if( n==27 )
   11444             :     {
   11445           0 :         result = wsr_w27(s, _state);
   11446             :     }
   11447           0 :     if( n==28 )
   11448             :     {
   11449           0 :         result = wsr_w28(s, _state);
   11450             :     }
   11451           0 :     if( n==29 )
   11452             :     {
   11453           0 :         result = wsr_w29(s, _state);
   11454             :     }
   11455           0 :     if( n==30 )
   11456             :     {
   11457           0 :         result = wsr_w30(s, _state);
   11458             :     }
   11459           0 :     if( n>30 )
   11460             :     {
   11461           0 :         x = 1.0/n;
   11462           0 :         x0 = 1.0/30;
   11463           0 :         f0 = wsr_w30(s, _state);
   11464           0 :         x1 = 1.0/40;
   11465           0 :         f1 = wsr_w40(s, _state);
   11466           0 :         x2 = 1.0/60;
   11467           0 :         f2 = wsr_w60(s, _state);
   11468           0 :         x3 = 1.0/120;
   11469           0 :         f3 = wsr_w120(s, _state);
   11470           0 :         x4 = 1.0/200;
   11471           0 :         f4 = wsr_w200(s, _state);
   11472           0 :         f1 = ((x-x0)*f1-(x-x1)*f0)/(x1-x0);
   11473           0 :         f2 = ((x-x0)*f2-(x-x2)*f0)/(x2-x0);
   11474           0 :         f3 = ((x-x0)*f3-(x-x3)*f0)/(x3-x0);
   11475           0 :         f4 = ((x-x0)*f4-(x-x4)*f0)/(x4-x0);
   11476           0 :         f2 = ((x-x1)*f2-(x-x2)*f1)/(x2-x1);
   11477           0 :         f3 = ((x-x1)*f3-(x-x3)*f1)/(x3-x1);
   11478           0 :         f4 = ((x-x1)*f4-(x-x4)*f1)/(x4-x1);
   11479           0 :         f3 = ((x-x2)*f3-(x-x3)*f2)/(x3-x2);
   11480           0 :         f4 = ((x-x2)*f4-(x-x4)*f2)/(x4-x2);
   11481           0 :         f4 = ((x-x3)*f4-(x-x4)*f3)/(x4-x3);
   11482           0 :         result = f4;
   11483             :     }
   11484           0 :     return result;
   11485             : }
   11486             : 
   11487             : 
   11488             : #endif
   11489             : #if defined(AE_COMPILE_STEST) || !defined(AE_PARTIAL_BUILD)
   11490             : 
   11491             : 
   11492             : /*************************************************************************
   11493             : Sign test
   11494             : 
   11495             : This test checks three hypotheses about the median of  the  given  sample.
   11496             : The following tests are performed:
   11497             :     * two-tailed test (null hypothesis - the median is equal to the  given
   11498             :       value)
   11499             :     * left-tailed test (null hypothesis - the median is  greater  than  or
   11500             :       equal to the given value)
   11501             :     * right-tailed test (null hypothesis - the  median  is  less  than  or
   11502             :       equal to the given value)
   11503             : 
   11504             : Requirements:
   11505             :     * the scale of measurement should be ordinal, interval or ratio  (i.e.
   11506             :       the test could not be applied to nominal variables).
   11507             : 
   11508             : The test is non-parametric and doesn't require distribution X to be normal
   11509             : 
   11510             : Input parameters:
   11511             :     X       -   sample. Array whose index goes from 0 to N-1.
   11512             :     N       -   size of the sample.
   11513             :     Median  -   assumed median value.
   11514             : 
   11515             : Output parameters:
   11516             :     BothTails   -   p-value for two-tailed test.
   11517             :                     If BothTails is less than the given significance level
   11518             :                     the null hypothesis is rejected.
   11519             :     LeftTail    -   p-value for left-tailed test.
   11520             :                     If LeftTail is less than the given significance level,
   11521             :                     the null hypothesis is rejected.
   11522             :     RightTail   -   p-value for right-tailed test.
   11523             :                     If RightTail is less than the given significance level
   11524             :                     the null hypothesis is rejected.
   11525             : 
   11526             : While   calculating   p-values   high-precision   binomial    distribution
   11527             : approximation is used, so significance levels have about 15 exact digits.
   11528             : 
   11529             :   -- ALGLIB --
   11530             :      Copyright 08.09.2006 by Bochkanov Sergey
   11531             : *************************************************************************/
   11532           0 : void onesamplesigntest(/* Real    */ ae_vector* x,
   11533             :      ae_int_t n,
   11534             :      double median,
   11535             :      double* bothtails,
   11536             :      double* lefttail,
   11537             :      double* righttail,
   11538             :      ae_state *_state)
   11539             : {
   11540             :     ae_int_t i;
   11541             :     ae_int_t gtcnt;
   11542             :     ae_int_t necnt;
   11543             : 
   11544           0 :     *bothtails = 0;
   11545           0 :     *lefttail = 0;
   11546           0 :     *righttail = 0;
   11547             : 
   11548           0 :     if( n<=1 )
   11549             :     {
   11550           0 :         *bothtails = 1.0;
   11551           0 :         *lefttail = 1.0;
   11552           0 :         *righttail = 1.0;
   11553           0 :         return;
   11554             :     }
   11555             :     
   11556             :     /*
   11557             :      * Calculate:
   11558             :      * GTCnt - count of x[i]>Median
   11559             :      * NECnt - count of x[i]<>Median
   11560             :      */
   11561           0 :     gtcnt = 0;
   11562           0 :     necnt = 0;
   11563           0 :     for(i=0; i<=n-1; i++)
   11564             :     {
   11565           0 :         if( ae_fp_greater(x->ptr.p_double[i],median) )
   11566             :         {
   11567           0 :             gtcnt = gtcnt+1;
   11568             :         }
   11569           0 :         if( ae_fp_neq(x->ptr.p_double[i],median) )
   11570             :         {
   11571           0 :             necnt = necnt+1;
   11572             :         }
   11573             :     }
   11574           0 :     if( necnt==0 )
   11575             :     {
   11576             :         
   11577             :         /*
   11578             :          * all x[i] are equal to Median.
   11579             :          * So we can conclude that Median is a true median :)
   11580             :          */
   11581           0 :         *bothtails = 1.0;
   11582           0 :         *lefttail = 1.0;
   11583           0 :         *righttail = 1.0;
   11584           0 :         return;
   11585             :     }
   11586           0 :     *bothtails = ae_minreal(2*binomialdistribution(ae_minint(gtcnt, necnt-gtcnt, _state), necnt, 0.5, _state), 1.0, _state);
   11587           0 :     *lefttail = binomialdistribution(gtcnt, necnt, 0.5, _state);
   11588           0 :     *righttail = binomialcdistribution(gtcnt-1, necnt, 0.5, _state);
   11589             : }
   11590             : 
   11591             : 
   11592             : #endif
   11593             : #if defined(AE_COMPILE_CORRELATIONTESTS) || !defined(AE_PARTIAL_BUILD)
   11594             : 
   11595             : 
   11596             : /*************************************************************************
   11597             : Pearson's correlation coefficient significance test
   11598             : 
   11599             : This test checks hypotheses about whether X  and  Y  are  samples  of  two
   11600             : continuous  distributions  having  zero  correlation  or   whether   their
   11601             : correlation is non-zero.
   11602             : 
   11603             : The following tests are performed:
   11604             :     * two-tailed test (null hypothesis - X and Y have zero correlation)
   11605             :     * left-tailed test (null hypothesis - the correlation  coefficient  is
   11606             :       greater than or equal to 0)
   11607             :     * right-tailed test (null hypothesis - the correlation coefficient  is
   11608             :       less than or equal to 0).
   11609             : 
   11610             : Requirements:
   11611             :     * the number of elements in each sample is not less than 5
   11612             :     * normality of distributions of X and Y.
   11613             : 
   11614             : Input parameters:
   11615             :     R   -   Pearson's correlation coefficient for X and Y
   11616             :     N   -   number of elements in samples, N>=5.
   11617             : 
   11618             : Output parameters:
   11619             :     BothTails   -   p-value for two-tailed test.
   11620             :                     If BothTails is less than the given significance level
   11621             :                     the null hypothesis is rejected.
   11622             :     LeftTail    -   p-value for left-tailed test.
   11623             :                     If LeftTail is less than the given significance level,
   11624             :                     the null hypothesis is rejected.
   11625             :     RightTail   -   p-value for right-tailed test.
   11626             :                     If RightTail is less than the given significance level
   11627             :                     the null hypothesis is rejected.
   11628             : 
   11629             :   -- ALGLIB --
   11630             :      Copyright 09.04.2007 by Bochkanov Sergey
   11631             : *************************************************************************/
   11632           0 : void pearsoncorrelationsignificance(double r,
   11633             :      ae_int_t n,
   11634             :      double* bothtails,
   11635             :      double* lefttail,
   11636             :      double* righttail,
   11637             :      ae_state *_state)
   11638             : {
   11639             :     double t;
   11640             :     double p;
   11641             : 
   11642           0 :     *bothtails = 0;
   11643           0 :     *lefttail = 0;
   11644           0 :     *righttail = 0;
   11645             : 
   11646             :     
   11647             :     /*
   11648             :      * Some special cases
   11649             :      */
   11650           0 :     if( ae_fp_greater_eq(r,(double)(1)) )
   11651             :     {
   11652           0 :         *bothtails = 0.0;
   11653           0 :         *lefttail = 1.0;
   11654           0 :         *righttail = 0.0;
   11655           0 :         return;
   11656             :     }
   11657           0 :     if( ae_fp_less_eq(r,(double)(-1)) )
   11658             :     {
   11659           0 :         *bothtails = 0.0;
   11660           0 :         *lefttail = 0.0;
   11661           0 :         *righttail = 1.0;
   11662           0 :         return;
   11663             :     }
   11664           0 :     if( n<5 )
   11665             :     {
   11666           0 :         *bothtails = 1.0;
   11667           0 :         *lefttail = 1.0;
   11668           0 :         *righttail = 1.0;
   11669           0 :         return;
   11670             :     }
   11671             :     
   11672             :     /*
   11673             :      * General case
   11674             :      */
   11675           0 :     t = r*ae_sqrt((n-2)/(1-ae_sqr(r, _state)), _state);
   11676           0 :     p = studenttdistribution(n-2, t, _state);
   11677           0 :     *bothtails = 2*ae_minreal(p, 1-p, _state);
   11678           0 :     *lefttail = p;
   11679           0 :     *righttail = 1-p;
   11680             : }
   11681             : 
   11682             : 
   11683             : /*************************************************************************
   11684             : Spearman's rank correlation coefficient significance test
   11685             : 
   11686             : This test checks hypotheses about whether X  and  Y  are  samples  of  two
   11687             : continuous  distributions  having  zero  correlation  or   whether   their
   11688             : correlation is non-zero.
   11689             : 
   11690             : The following tests are performed:
   11691             :     * two-tailed test (null hypothesis - X and Y have zero correlation)
   11692             :     * left-tailed test (null hypothesis - the correlation  coefficient  is
   11693             :       greater than or equal to 0)
   11694             :     * right-tailed test (null hypothesis - the correlation coefficient  is
   11695             :       less than or equal to 0).
   11696             : 
   11697             : Requirements:
   11698             :     * the number of elements in each sample is not less than 5.
   11699             : 
   11700             : The test is non-parametric and doesn't require distributions X and Y to be
   11701             : normal.
   11702             : 
   11703             : Input parameters:
   11704             :     R   -   Spearman's rank correlation coefficient for X and Y
   11705             :     N   -   number of elements in samples, N>=5.
   11706             : 
   11707             : Output parameters:
   11708             :     BothTails   -   p-value for two-tailed test.
   11709             :                     If BothTails is less than the given significance level
   11710             :                     the null hypothesis is rejected.
   11711             :     LeftTail    -   p-value for left-tailed test.
   11712             :                     If LeftTail is less than the given significance level,
   11713             :                     the null hypothesis is rejected.
   11714             :     RightTail   -   p-value for right-tailed test.
   11715             :                     If RightTail is less than the given significance level
   11716             :                     the null hypothesis is rejected.
   11717             : 
   11718             :   -- ALGLIB --
   11719             :      Copyright 09.04.2007 by Bochkanov Sergey
   11720             : *************************************************************************/
   11721           0 : void spearmanrankcorrelationsignificance(double r,
   11722             :      ae_int_t n,
   11723             :      double* bothtails,
   11724             :      double* lefttail,
   11725             :      double* righttail,
   11726             :      ae_state *_state)
   11727             : {
   11728             :     double t;
   11729             :     double p;
   11730             : 
   11731           0 :     *bothtails = 0;
   11732           0 :     *lefttail = 0;
   11733           0 :     *righttail = 0;
   11734             : 
   11735             :     
   11736             :     /*
   11737             :      * Special case
   11738             :      */
   11739           0 :     if( n<5 )
   11740             :     {
   11741           0 :         *bothtails = 1.0;
   11742           0 :         *lefttail = 1.0;
   11743           0 :         *righttail = 1.0;
   11744           0 :         return;
   11745             :     }
   11746             :     
   11747             :     /*
   11748             :      * General case
   11749             :      */
   11750           0 :     if( ae_fp_greater_eq(r,(double)(1)) )
   11751             :     {
   11752           0 :         t = 1.0E10;
   11753             :     }
   11754             :     else
   11755             :     {
   11756           0 :         if( ae_fp_less_eq(r,(double)(-1)) )
   11757             :         {
   11758           0 :             t = -1.0E10;
   11759             :         }
   11760             :         else
   11761             :         {
   11762           0 :             t = r*ae_sqrt((n-2)/(1-ae_sqr(r, _state)), _state);
   11763             :         }
   11764             :     }
   11765           0 :     if( ae_fp_less(t,(double)(0)) )
   11766             :     {
   11767           0 :         p = correlationtests_spearmantail(t, n, _state);
   11768           0 :         *bothtails = 2*p;
   11769           0 :         *lefttail = p;
   11770           0 :         *righttail = 1-p;
   11771             :     }
   11772             :     else
   11773             :     {
   11774           0 :         p = correlationtests_spearmantail(-t, n, _state);
   11775           0 :         *bothtails = 2*p;
   11776           0 :         *lefttail = 1-p;
   11777           0 :         *righttail = p;
   11778             :     }
   11779             : }
   11780             : 
   11781             : 
   11782             : /*************************************************************************
   11783             : Tail(S, 5)
   11784             : *************************************************************************/
   11785           0 : static double correlationtests_spearmantail5(double s, ae_state *_state)
   11786             : {
   11787             :     double result;
   11788             : 
   11789             : 
   11790           0 :     if( ae_fp_less(s,0.000e+00) )
   11791             :     {
   11792           0 :         result = studenttdistribution(3, -s, _state);
   11793           0 :         return result;
   11794             :     }
   11795           0 :     if( ae_fp_greater_eq(s,3.580e+00) )
   11796             :     {
   11797           0 :         result = 8.304e-03;
   11798           0 :         return result;
   11799             :     }
   11800           0 :     if( ae_fp_greater_eq(s,2.322e+00) )
   11801             :     {
   11802           0 :         result = 4.163e-02;
   11803           0 :         return result;
   11804             :     }
   11805           0 :     if( ae_fp_greater_eq(s,1.704e+00) )
   11806             :     {
   11807           0 :         result = 6.641e-02;
   11808           0 :         return result;
   11809             :     }
   11810           0 :     if( ae_fp_greater_eq(s,1.303e+00) )
   11811             :     {
   11812           0 :         result = 1.164e-01;
   11813           0 :         return result;
   11814             :     }
   11815           0 :     if( ae_fp_greater_eq(s,1.003e+00) )
   11816             :     {
   11817           0 :         result = 1.748e-01;
   11818           0 :         return result;
   11819             :     }
   11820           0 :     if( ae_fp_greater_eq(s,7.584e-01) )
   11821             :     {
   11822           0 :         result = 2.249e-01;
   11823           0 :         return result;
   11824             :     }
   11825           0 :     if( ae_fp_greater_eq(s,5.468e-01) )
   11826             :     {
   11827           0 :         result = 2.581e-01;
   11828           0 :         return result;
   11829             :     }
   11830           0 :     if( ae_fp_greater_eq(s,3.555e-01) )
   11831             :     {
   11832           0 :         result = 3.413e-01;
   11833           0 :         return result;
   11834             :     }
   11835           0 :     if( ae_fp_greater_eq(s,1.759e-01) )
   11836             :     {
   11837           0 :         result = 3.911e-01;
   11838           0 :         return result;
   11839             :     }
   11840           0 :     if( ae_fp_greater_eq(s,1.741e-03) )
   11841             :     {
   11842           0 :         result = 4.747e-01;
   11843           0 :         return result;
   11844             :     }
   11845           0 :     if( ae_fp_greater_eq(s,0.000e+00) )
   11846             :     {
   11847           0 :         result = 5.248e-01;
   11848           0 :         return result;
   11849             :     }
   11850           0 :     result = (double)(0);
   11851           0 :     return result;
   11852             : }
   11853             : 
   11854             : 
   11855             : /*************************************************************************
   11856             : Tail(S, 6)
   11857             : *************************************************************************/
   11858           0 : static double correlationtests_spearmantail6(double s, ae_state *_state)
   11859             : {
   11860             :     double result;
   11861             : 
   11862             : 
   11863           0 :     if( ae_fp_less(s,1.001e+00) )
   11864             :     {
   11865           0 :         result = studenttdistribution(4, -s, _state);
   11866           0 :         return result;
   11867             :     }
   11868           0 :     if( ae_fp_greater_eq(s,5.663e+00) )
   11869             :     {
   11870           0 :         result = 1.366e-03;
   11871           0 :         return result;
   11872             :     }
   11873           0 :     if( ae_fp_greater_eq(s,3.834e+00) )
   11874             :     {
   11875           0 :         result = 8.350e-03;
   11876           0 :         return result;
   11877             :     }
   11878           0 :     if( ae_fp_greater_eq(s,2.968e+00) )
   11879             :     {
   11880           0 :         result = 1.668e-02;
   11881           0 :         return result;
   11882             :     }
   11883           0 :     if( ae_fp_greater_eq(s,2.430e+00) )
   11884             :     {
   11885           0 :         result = 2.921e-02;
   11886           0 :         return result;
   11887             :     }
   11888           0 :     if( ae_fp_greater_eq(s,2.045e+00) )
   11889             :     {
   11890           0 :         result = 5.144e-02;
   11891           0 :         return result;
   11892             :     }
   11893           0 :     if( ae_fp_greater_eq(s,1.747e+00) )
   11894             :     {
   11895           0 :         result = 6.797e-02;
   11896           0 :         return result;
   11897             :     }
   11898           0 :     if( ae_fp_greater_eq(s,1.502e+00) )
   11899             :     {
   11900           0 :         result = 8.752e-02;
   11901           0 :         return result;
   11902             :     }
   11903           0 :     if( ae_fp_greater_eq(s,1.295e+00) )
   11904             :     {
   11905           0 :         result = 1.210e-01;
   11906           0 :         return result;
   11907             :     }
   11908           0 :     if( ae_fp_greater_eq(s,1.113e+00) )
   11909             :     {
   11910           0 :         result = 1.487e-01;
   11911           0 :         return result;
   11912             :     }
   11913           0 :     if( ae_fp_greater_eq(s,1.001e+00) )
   11914             :     {
   11915           0 :         result = 1.780e-01;
   11916           0 :         return result;
   11917             :     }
   11918           0 :     result = (double)(0);
   11919           0 :     return result;
   11920             : }
   11921             : 
   11922             : 
   11923             : /*************************************************************************
   11924             : Tail(S, 7)
   11925             : *************************************************************************/
   11926           0 : static double correlationtests_spearmantail7(double s, ae_state *_state)
   11927             : {
   11928             :     double result;
   11929             : 
   11930             : 
   11931           0 :     if( ae_fp_less(s,1.001e+00) )
   11932             :     {
   11933           0 :         result = studenttdistribution(5, -s, _state);
   11934           0 :         return result;
   11935             :     }
   11936           0 :     if( ae_fp_greater_eq(s,8.159e+00) )
   11937             :     {
   11938           0 :         result = 2.081e-04;
   11939           0 :         return result;
   11940             :     }
   11941           0 :     if( ae_fp_greater_eq(s,5.620e+00) )
   11942             :     {
   11943           0 :         result = 1.393e-03;
   11944           0 :         return result;
   11945             :     }
   11946           0 :     if( ae_fp_greater_eq(s,4.445e+00) )
   11947             :     {
   11948           0 :         result = 3.398e-03;
   11949           0 :         return result;
   11950             :     }
   11951           0 :     if( ae_fp_greater_eq(s,3.728e+00) )
   11952             :     {
   11953           0 :         result = 6.187e-03;
   11954           0 :         return result;
   11955             :     }
   11956           0 :     if( ae_fp_greater_eq(s,3.226e+00) )
   11957             :     {
   11958           0 :         result = 1.200e-02;
   11959           0 :         return result;
   11960             :     }
   11961           0 :     if( ae_fp_greater_eq(s,2.844e+00) )
   11962             :     {
   11963           0 :         result = 1.712e-02;
   11964           0 :         return result;
   11965             :     }
   11966           0 :     if( ae_fp_greater_eq(s,2.539e+00) )
   11967             :     {
   11968           0 :         result = 2.408e-02;
   11969           0 :         return result;
   11970             :     }
   11971           0 :     if( ae_fp_greater_eq(s,2.285e+00) )
   11972             :     {
   11973           0 :         result = 3.320e-02;
   11974           0 :         return result;
   11975             :     }
   11976           0 :     if( ae_fp_greater_eq(s,2.068e+00) )
   11977             :     {
   11978           0 :         result = 4.406e-02;
   11979           0 :         return result;
   11980             :     }
   11981           0 :     if( ae_fp_greater_eq(s,1.879e+00) )
   11982             :     {
   11983           0 :         result = 5.478e-02;
   11984           0 :         return result;
   11985             :     }
   11986           0 :     if( ae_fp_greater_eq(s,1.710e+00) )
   11987             :     {
   11988           0 :         result = 6.946e-02;
   11989           0 :         return result;
   11990             :     }
   11991           0 :     if( ae_fp_greater_eq(s,1.559e+00) )
   11992             :     {
   11993           0 :         result = 8.331e-02;
   11994           0 :         return result;
   11995             :     }
   11996           0 :     if( ae_fp_greater_eq(s,1.420e+00) )
   11997             :     {
   11998           0 :         result = 1.001e-01;
   11999           0 :         return result;
   12000             :     }
   12001           0 :     if( ae_fp_greater_eq(s,1.292e+00) )
   12002             :     {
   12003           0 :         result = 1.180e-01;
   12004           0 :         return result;
   12005             :     }
   12006           0 :     if( ae_fp_greater_eq(s,1.173e+00) )
   12007             :     {
   12008           0 :         result = 1.335e-01;
   12009           0 :         return result;
   12010             :     }
   12011           0 :     if( ae_fp_greater_eq(s,1.062e+00) )
   12012             :     {
   12013           0 :         result = 1.513e-01;
   12014           0 :         return result;
   12015             :     }
   12016           0 :     if( ae_fp_greater_eq(s,1.001e+00) )
   12017             :     {
   12018           0 :         result = 1.770e-01;
   12019           0 :         return result;
   12020             :     }
   12021           0 :     result = (double)(0);
   12022           0 :     return result;
   12023             : }
   12024             : 
   12025             : 
   12026             : /*************************************************************************
   12027             : Tail(S, 8)
   12028             : *************************************************************************/
   12029           0 : static double correlationtests_spearmantail8(double s, ae_state *_state)
   12030             : {
   12031             :     double result;
   12032             : 
   12033             : 
   12034           0 :     if( ae_fp_less(s,2.001e+00) )
   12035             :     {
   12036           0 :         result = studenttdistribution(6, -s, _state);
   12037           0 :         return result;
   12038             :     }
   12039           0 :     if( ae_fp_greater_eq(s,1.103e+01) )
   12040             :     {
   12041           0 :         result = 2.194e-05;
   12042           0 :         return result;
   12043             :     }
   12044           0 :     if( ae_fp_greater_eq(s,7.685e+00) )
   12045             :     {
   12046           0 :         result = 2.008e-04;
   12047           0 :         return result;
   12048             :     }
   12049           0 :     if( ae_fp_greater_eq(s,6.143e+00) )
   12050             :     {
   12051           0 :         result = 5.686e-04;
   12052           0 :         return result;
   12053             :     }
   12054           0 :     if( ae_fp_greater_eq(s,5.213e+00) )
   12055             :     {
   12056           0 :         result = 1.138e-03;
   12057           0 :         return result;
   12058             :     }
   12059           0 :     if( ae_fp_greater_eq(s,4.567e+00) )
   12060             :     {
   12061           0 :         result = 2.310e-03;
   12062           0 :         return result;
   12063             :     }
   12064           0 :     if( ae_fp_greater_eq(s,4.081e+00) )
   12065             :     {
   12066           0 :         result = 3.634e-03;
   12067           0 :         return result;
   12068             :     }
   12069           0 :     if( ae_fp_greater_eq(s,3.697e+00) )
   12070             :     {
   12071           0 :         result = 5.369e-03;
   12072           0 :         return result;
   12073             :     }
   12074           0 :     if( ae_fp_greater_eq(s,3.381e+00) )
   12075             :     {
   12076           0 :         result = 7.708e-03;
   12077           0 :         return result;
   12078             :     }
   12079           0 :     if( ae_fp_greater_eq(s,3.114e+00) )
   12080             :     {
   12081           0 :         result = 1.087e-02;
   12082           0 :         return result;
   12083             :     }
   12084           0 :     if( ae_fp_greater_eq(s,2.884e+00) )
   12085             :     {
   12086           0 :         result = 1.397e-02;
   12087           0 :         return result;
   12088             :     }
   12089           0 :     if( ae_fp_greater_eq(s,2.682e+00) )
   12090             :     {
   12091           0 :         result = 1.838e-02;
   12092           0 :         return result;
   12093             :     }
   12094           0 :     if( ae_fp_greater_eq(s,2.502e+00) )
   12095             :     {
   12096           0 :         result = 2.288e-02;
   12097           0 :         return result;
   12098             :     }
   12099           0 :     if( ae_fp_greater_eq(s,2.340e+00) )
   12100             :     {
   12101           0 :         result = 2.883e-02;
   12102           0 :         return result;
   12103             :     }
   12104           0 :     if( ae_fp_greater_eq(s,2.192e+00) )
   12105             :     {
   12106           0 :         result = 3.469e-02;
   12107           0 :         return result;
   12108             :     }
   12109           0 :     if( ae_fp_greater_eq(s,2.057e+00) )
   12110             :     {
   12111           0 :         result = 4.144e-02;
   12112           0 :         return result;
   12113             :     }
   12114           0 :     if( ae_fp_greater_eq(s,2.001e+00) )
   12115             :     {
   12116           0 :         result = 4.804e-02;
   12117           0 :         return result;
   12118             :     }
   12119           0 :     result = (double)(0);
   12120           0 :     return result;
   12121             : }
   12122             : 
   12123             : 
   12124             : /*************************************************************************
   12125             : Tail(S, 9)
   12126             : *************************************************************************/
   12127           0 : static double correlationtests_spearmantail9(double s, ae_state *_state)
   12128             : {
   12129             :     double result;
   12130             : 
   12131             : 
   12132           0 :     if( ae_fp_less(s,2.001e+00) )
   12133             :     {
   12134           0 :         result = studenttdistribution(7, -s, _state);
   12135           0 :         return result;
   12136             :     }
   12137           0 :     if( ae_fp_greater_eq(s,9.989e+00) )
   12138             :     {
   12139           0 :         result = 2.306e-05;
   12140           0 :         return result;
   12141             :     }
   12142           0 :     if( ae_fp_greater_eq(s,8.069e+00) )
   12143             :     {
   12144           0 :         result = 8.167e-05;
   12145           0 :         return result;
   12146             :     }
   12147           0 :     if( ae_fp_greater_eq(s,6.890e+00) )
   12148             :     {
   12149           0 :         result = 1.744e-04;
   12150           0 :         return result;
   12151             :     }
   12152           0 :     if( ae_fp_greater_eq(s,6.077e+00) )
   12153             :     {
   12154           0 :         result = 3.625e-04;
   12155           0 :         return result;
   12156             :     }
   12157           0 :     if( ae_fp_greater_eq(s,5.469e+00) )
   12158             :     {
   12159           0 :         result = 6.450e-04;
   12160           0 :         return result;
   12161             :     }
   12162           0 :     if( ae_fp_greater_eq(s,4.991e+00) )
   12163             :     {
   12164           0 :         result = 1.001e-03;
   12165           0 :         return result;
   12166             :     }
   12167           0 :     if( ae_fp_greater_eq(s,4.600e+00) )
   12168             :     {
   12169           0 :         result = 1.514e-03;
   12170           0 :         return result;
   12171             :     }
   12172           0 :     if( ae_fp_greater_eq(s,4.272e+00) )
   12173             :     {
   12174           0 :         result = 2.213e-03;
   12175           0 :         return result;
   12176             :     }
   12177           0 :     if( ae_fp_greater_eq(s,3.991e+00) )
   12178             :     {
   12179           0 :         result = 2.990e-03;
   12180           0 :         return result;
   12181             :     }
   12182           0 :     if( ae_fp_greater_eq(s,3.746e+00) )
   12183             :     {
   12184           0 :         result = 4.101e-03;
   12185           0 :         return result;
   12186             :     }
   12187           0 :     if( ae_fp_greater_eq(s,3.530e+00) )
   12188             :     {
   12189           0 :         result = 5.355e-03;
   12190           0 :         return result;
   12191             :     }
   12192           0 :     if( ae_fp_greater_eq(s,3.336e+00) )
   12193             :     {
   12194           0 :         result = 6.887e-03;
   12195           0 :         return result;
   12196             :     }
   12197           0 :     if( ae_fp_greater_eq(s,3.161e+00) )
   12198             :     {
   12199           0 :         result = 8.598e-03;
   12200           0 :         return result;
   12201             :     }
   12202           0 :     if( ae_fp_greater_eq(s,3.002e+00) )
   12203             :     {
   12204           0 :         result = 1.065e-02;
   12205           0 :         return result;
   12206             :     }
   12207           0 :     if( ae_fp_greater_eq(s,2.855e+00) )
   12208             :     {
   12209           0 :         result = 1.268e-02;
   12210           0 :         return result;
   12211             :     }
   12212           0 :     if( ae_fp_greater_eq(s,2.720e+00) )
   12213             :     {
   12214           0 :         result = 1.552e-02;
   12215           0 :         return result;
   12216             :     }
   12217           0 :     if( ae_fp_greater_eq(s,2.595e+00) )
   12218             :     {
   12219           0 :         result = 1.836e-02;
   12220           0 :         return result;
   12221             :     }
   12222           0 :     if( ae_fp_greater_eq(s,2.477e+00) )
   12223             :     {
   12224           0 :         result = 2.158e-02;
   12225           0 :         return result;
   12226             :     }
   12227           0 :     if( ae_fp_greater_eq(s,2.368e+00) )
   12228             :     {
   12229           0 :         result = 2.512e-02;
   12230           0 :         return result;
   12231             :     }
   12232           0 :     if( ae_fp_greater_eq(s,2.264e+00) )
   12233             :     {
   12234           0 :         result = 2.942e-02;
   12235           0 :         return result;
   12236             :     }
   12237           0 :     if( ae_fp_greater_eq(s,2.166e+00) )
   12238             :     {
   12239           0 :         result = 3.325e-02;
   12240           0 :         return result;
   12241             :     }
   12242           0 :     if( ae_fp_greater_eq(s,2.073e+00) )
   12243             :     {
   12244           0 :         result = 3.800e-02;
   12245           0 :         return result;
   12246             :     }
   12247           0 :     if( ae_fp_greater_eq(s,2.001e+00) )
   12248             :     {
   12249           0 :         result = 4.285e-02;
   12250           0 :         return result;
   12251             :     }
   12252           0 :     result = (double)(0);
   12253           0 :     return result;
   12254             : }
   12255             : 
   12256             : 
   12257             : /*************************************************************************
   12258             : Tail(T,N), accepts T<0
   12259             : *************************************************************************/
   12260           0 : static double correlationtests_spearmantail(double t,
   12261             :      ae_int_t n,
   12262             :      ae_state *_state)
   12263             : {
   12264             :     double result;
   12265             : 
   12266             : 
   12267           0 :     if( n==5 )
   12268             :     {
   12269           0 :         result = correlationtests_spearmantail5(-t, _state);
   12270           0 :         return result;
   12271             :     }
   12272           0 :     if( n==6 )
   12273             :     {
   12274           0 :         result = correlationtests_spearmantail6(-t, _state);
   12275           0 :         return result;
   12276             :     }
   12277           0 :     if( n==7 )
   12278             :     {
   12279           0 :         result = correlationtests_spearmantail7(-t, _state);
   12280           0 :         return result;
   12281             :     }
   12282           0 :     if( n==8 )
   12283             :     {
   12284           0 :         result = correlationtests_spearmantail8(-t, _state);
   12285           0 :         return result;
   12286             :     }
   12287           0 :     if( n==9 )
   12288             :     {
   12289           0 :         result = correlationtests_spearmantail9(-t, _state);
   12290           0 :         return result;
   12291             :     }
   12292           0 :     result = studenttdistribution(n-2, t, _state);
   12293           0 :     return result;
   12294             : }
   12295             : 
   12296             : 
   12297             : #endif
   12298             : #if defined(AE_COMPILE_STUDENTTTESTS) || !defined(AE_PARTIAL_BUILD)
   12299             : 
   12300             : 
   12301             : /*************************************************************************
   12302             : One-sample t-test
   12303             : 
   12304             : This test checks three hypotheses about the mean of the given sample.  The
   12305             : following tests are performed:
   12306             :     * two-tailed test (null hypothesis - the mean is equal  to  the  given
   12307             :       value)
   12308             :     * left-tailed test (null hypothesis - the  mean  is  greater  than  or
   12309             :       equal to the given value)
   12310             :     * right-tailed test (null hypothesis - the mean is less than or  equal
   12311             :       to the given value).
   12312             : 
   12313             : The test is based on the assumption that  a  given  sample  has  a  normal
   12314             : distribution and  an  unknown  dispersion.  If  the  distribution  sharply
   12315             : differs from normal, the test will work incorrectly.
   12316             : 
   12317             : INPUT PARAMETERS:
   12318             :     X       -   sample. Array whose index goes from 0 to N-1.
   12319             :     N       -   size of sample, N>=0
   12320             :     Mean    -   assumed value of the mean.
   12321             : 
   12322             : OUTPUT PARAMETERS:
   12323             :     BothTails   -   p-value for two-tailed test.
   12324             :                     If BothTails is less than the given significance level
   12325             :                     the null hypothesis is rejected.
   12326             :     LeftTail    -   p-value for left-tailed test.
   12327             :                     If LeftTail is less than the given significance level,
   12328             :                     the null hypothesis is rejected.
   12329             :     RightTail   -   p-value for right-tailed test.
   12330             :                     If RightTail is less than the given significance level
   12331             :                     the null hypothesis is rejected.
   12332             : 
   12333             : NOTE: this function correctly handles degenerate cases:
   12334             :       * when N=0, all p-values are set to 1.0
   12335             :       * when variance of X[] is exactly zero, p-values are set
   12336             :         to 1.0 or 0.0, depending on difference between sample mean and
   12337             :         value of mean being tested.
   12338             : 
   12339             : 
   12340             :   -- ALGLIB --
   12341             :      Copyright 08.09.2006 by Bochkanov Sergey
   12342             : *************************************************************************/
   12343           0 : void studentttest1(/* Real    */ ae_vector* x,
   12344             :      ae_int_t n,
   12345             :      double mean,
   12346             :      double* bothtails,
   12347             :      double* lefttail,
   12348             :      double* righttail,
   12349             :      ae_state *_state)
   12350             : {
   12351             :     ae_int_t i;
   12352             :     double xmean;
   12353             :     double x0;
   12354             :     double v;
   12355             :     ae_bool samex;
   12356             :     double xvariance;
   12357             :     double xstddev;
   12358             :     double v1;
   12359             :     double v2;
   12360             :     double stat;
   12361             :     double s;
   12362             : 
   12363           0 :     *bothtails = 0;
   12364           0 :     *lefttail = 0;
   12365           0 :     *righttail = 0;
   12366             : 
   12367           0 :     if( n<=0 )
   12368             :     {
   12369           0 :         *bothtails = 1.0;
   12370           0 :         *lefttail = 1.0;
   12371           0 :         *righttail = 1.0;
   12372           0 :         return;
   12373             :     }
   12374             :     
   12375             :     /*
   12376             :      * Mean
   12377             :      */
   12378           0 :     xmean = (double)(0);
   12379           0 :     x0 = x->ptr.p_double[0];
   12380           0 :     samex = ae_true;
   12381           0 :     for(i=0; i<=n-1; i++)
   12382             :     {
   12383           0 :         v = x->ptr.p_double[i];
   12384           0 :         xmean = xmean+v;
   12385           0 :         samex = samex&&ae_fp_eq(v,x0);
   12386             :     }
   12387           0 :     if( samex )
   12388             :     {
   12389           0 :         xmean = x0;
   12390             :     }
   12391             :     else
   12392             :     {
   12393           0 :         xmean = xmean/n;
   12394             :     }
   12395             :     
   12396             :     /*
   12397             :      * Variance (using corrected two-pass algorithm)
   12398             :      */
   12399           0 :     xvariance = (double)(0);
   12400           0 :     xstddev = (double)(0);
   12401           0 :     if( n!=1&&!samex )
   12402             :     {
   12403           0 :         v1 = (double)(0);
   12404           0 :         for(i=0; i<=n-1; i++)
   12405             :         {
   12406           0 :             v1 = v1+ae_sqr(x->ptr.p_double[i]-xmean, _state);
   12407             :         }
   12408           0 :         v2 = (double)(0);
   12409           0 :         for(i=0; i<=n-1; i++)
   12410             :         {
   12411           0 :             v2 = v2+(x->ptr.p_double[i]-xmean);
   12412             :         }
   12413           0 :         v2 = ae_sqr(v2, _state)/n;
   12414           0 :         xvariance = (v1-v2)/(n-1);
   12415           0 :         if( ae_fp_less(xvariance,(double)(0)) )
   12416             :         {
   12417           0 :             xvariance = (double)(0);
   12418             :         }
   12419           0 :         xstddev = ae_sqrt(xvariance, _state);
   12420             :     }
   12421           0 :     if( ae_fp_eq(xstddev,(double)(0)) )
   12422             :     {
   12423           0 :         if( ae_fp_eq(xmean,mean) )
   12424             :         {
   12425           0 :             *bothtails = 1.0;
   12426             :         }
   12427             :         else
   12428             :         {
   12429           0 :             *bothtails = 0.0;
   12430             :         }
   12431           0 :         if( ae_fp_greater_eq(xmean,mean) )
   12432             :         {
   12433           0 :             *lefttail = 1.0;
   12434             :         }
   12435             :         else
   12436             :         {
   12437           0 :             *lefttail = 0.0;
   12438             :         }
   12439           0 :         if( ae_fp_less_eq(xmean,mean) )
   12440             :         {
   12441           0 :             *righttail = 1.0;
   12442             :         }
   12443             :         else
   12444             :         {
   12445           0 :             *righttail = 0.0;
   12446             :         }
   12447           0 :         return;
   12448             :     }
   12449             :     
   12450             :     /*
   12451             :      * Statistic
   12452             :      */
   12453           0 :     stat = (xmean-mean)/(xstddev/ae_sqrt((double)(n), _state));
   12454           0 :     s = studenttdistribution(n-1, stat, _state);
   12455           0 :     *bothtails = 2*ae_minreal(s, 1-s, _state);
   12456           0 :     *lefttail = s;
   12457           0 :     *righttail = 1-s;
   12458             : }
   12459             : 
   12460             : 
   12461             : /*************************************************************************
   12462             : Two-sample pooled test
   12463             : 
   12464             : This test checks three hypotheses about the mean of the given samples. The
   12465             : following tests are performed:
   12466             :     * two-tailed test (null hypothesis - the means are equal)
   12467             :     * left-tailed test (null hypothesis - the mean of the first sample  is
   12468             :       greater than or equal to the mean of the second sample)
   12469             :     * right-tailed test (null hypothesis - the mean of the first sample is
   12470             :       less than or equal to the mean of the second sample).
   12471             : 
   12472             : Test is based on the following assumptions:
   12473             :     * given samples have normal distributions
   12474             :     * dispersions are equal
   12475             :     * samples are independent.
   12476             : 
   12477             : Input parameters:
   12478             :     X       -   sample 1. Array whose index goes from 0 to N-1.
   12479             :     N       -   size of sample.
   12480             :     Y       -   sample 2. Array whose index goes from 0 to M-1.
   12481             :     M       -   size of sample.
   12482             : 
   12483             : Output parameters:
   12484             :     BothTails   -   p-value for two-tailed test.
   12485             :                     If BothTails is less than the given significance level
   12486             :                     the null hypothesis is rejected.
   12487             :     LeftTail    -   p-value for left-tailed test.
   12488             :                     If LeftTail is less than the given significance level,
   12489             :                     the null hypothesis is rejected.
   12490             :     RightTail   -   p-value for right-tailed test.
   12491             :                     If RightTail is less than the given significance level
   12492             :                     the null hypothesis is rejected.
   12493             : 
   12494             : NOTE: this function correctly handles degenerate cases:
   12495             :       * when N=0 or M=0, all p-values are set to 1.0
   12496             :       * when both samples has exactly zero variance, p-values are set
   12497             :         to 1.0 or 0.0, depending on difference between means.
   12498             : 
   12499             :   -- ALGLIB --
   12500             :      Copyright 18.09.2006 by Bochkanov Sergey
   12501             : *************************************************************************/
   12502           0 : void studentttest2(/* Real    */ ae_vector* x,
   12503             :      ae_int_t n,
   12504             :      /* Real    */ ae_vector* y,
   12505             :      ae_int_t m,
   12506             :      double* bothtails,
   12507             :      double* lefttail,
   12508             :      double* righttail,
   12509             :      ae_state *_state)
   12510             : {
   12511             :     ae_int_t i;
   12512             :     ae_bool samex;
   12513             :     ae_bool samey;
   12514             :     double x0;
   12515             :     double y0;
   12516             :     double xmean;
   12517             :     double ymean;
   12518             :     double v;
   12519             :     double stat;
   12520             :     double s;
   12521             :     double p;
   12522             : 
   12523           0 :     *bothtails = 0;
   12524           0 :     *lefttail = 0;
   12525           0 :     *righttail = 0;
   12526             : 
   12527           0 :     if( n<=0||m<=0 )
   12528             :     {
   12529           0 :         *bothtails = 1.0;
   12530           0 :         *lefttail = 1.0;
   12531           0 :         *righttail = 1.0;
   12532           0 :         return;
   12533             :     }
   12534             :     
   12535             :     /*
   12536             :      * Mean
   12537             :      */
   12538           0 :     xmean = (double)(0);
   12539           0 :     x0 = x->ptr.p_double[0];
   12540           0 :     samex = ae_true;
   12541           0 :     for(i=0; i<=n-1; i++)
   12542             :     {
   12543           0 :         v = x->ptr.p_double[i];
   12544           0 :         xmean = xmean+v;
   12545           0 :         samex = samex&&ae_fp_eq(v,x0);
   12546             :     }
   12547           0 :     if( samex )
   12548             :     {
   12549           0 :         xmean = x0;
   12550             :     }
   12551             :     else
   12552             :     {
   12553           0 :         xmean = xmean/n;
   12554             :     }
   12555           0 :     ymean = (double)(0);
   12556           0 :     y0 = y->ptr.p_double[0];
   12557           0 :     samey = ae_true;
   12558           0 :     for(i=0; i<=m-1; i++)
   12559             :     {
   12560           0 :         v = y->ptr.p_double[i];
   12561           0 :         ymean = ymean+v;
   12562           0 :         samey = samey&&ae_fp_eq(v,y0);
   12563             :     }
   12564           0 :     if( samey )
   12565             :     {
   12566           0 :         ymean = y0;
   12567             :     }
   12568             :     else
   12569             :     {
   12570           0 :         ymean = ymean/m;
   12571             :     }
   12572             :     
   12573             :     /*
   12574             :      * S
   12575             :      */
   12576           0 :     s = (double)(0);
   12577           0 :     if( n+m>2 )
   12578             :     {
   12579           0 :         for(i=0; i<=n-1; i++)
   12580             :         {
   12581           0 :             s = s+ae_sqr(x->ptr.p_double[i]-xmean, _state);
   12582             :         }
   12583           0 :         for(i=0; i<=m-1; i++)
   12584             :         {
   12585           0 :             s = s+ae_sqr(y->ptr.p_double[i]-ymean, _state);
   12586             :         }
   12587           0 :         s = ae_sqrt(s*((double)1/(double)n+(double)1/(double)m)/(n+m-2), _state);
   12588             :     }
   12589           0 :     if( ae_fp_eq(s,(double)(0)) )
   12590             :     {
   12591           0 :         if( ae_fp_eq(xmean,ymean) )
   12592             :         {
   12593           0 :             *bothtails = 1.0;
   12594             :         }
   12595             :         else
   12596             :         {
   12597           0 :             *bothtails = 0.0;
   12598             :         }
   12599           0 :         if( ae_fp_greater_eq(xmean,ymean) )
   12600             :         {
   12601           0 :             *lefttail = 1.0;
   12602             :         }
   12603             :         else
   12604             :         {
   12605           0 :             *lefttail = 0.0;
   12606             :         }
   12607           0 :         if( ae_fp_less_eq(xmean,ymean) )
   12608             :         {
   12609           0 :             *righttail = 1.0;
   12610             :         }
   12611             :         else
   12612             :         {
   12613           0 :             *righttail = 0.0;
   12614             :         }
   12615           0 :         return;
   12616             :     }
   12617             :     
   12618             :     /*
   12619             :      * Statistic
   12620             :      */
   12621           0 :     stat = (xmean-ymean)/s;
   12622           0 :     p = studenttdistribution(n+m-2, stat, _state);
   12623           0 :     *bothtails = 2*ae_minreal(p, 1-p, _state);
   12624           0 :     *lefttail = p;
   12625           0 :     *righttail = 1-p;
   12626             : }
   12627             : 
   12628             : 
   12629             : /*************************************************************************
   12630             : Two-sample unpooled test
   12631             : 
   12632             : This test checks three hypotheses about the mean of the given samples. The
   12633             : following tests are performed:
   12634             :     * two-tailed test (null hypothesis - the means are equal)
   12635             :     * left-tailed test (null hypothesis - the mean of the first sample  is
   12636             :       greater than or equal to the mean of the second sample)
   12637             :     * right-tailed test (null hypothesis - the mean of the first sample is
   12638             :       less than or equal to the mean of the second sample).
   12639             : 
   12640             : Test is based on the following assumptions:
   12641             :     * given samples have normal distributions
   12642             :     * samples are independent.
   12643             : Equality of variances is NOT required.
   12644             : 
   12645             : Input parameters:
   12646             :     X - sample 1. Array whose index goes from 0 to N-1.
   12647             :     N - size of the sample.
   12648             :     Y - sample 2. Array whose index goes from 0 to M-1.
   12649             :     M - size of the sample.
   12650             : 
   12651             : Output parameters:
   12652             :     BothTails   -   p-value for two-tailed test.
   12653             :                     If BothTails is less than the given significance level
   12654             :                     the null hypothesis is rejected.
   12655             :     LeftTail    -   p-value for left-tailed test.
   12656             :                     If LeftTail is less than the given significance level,
   12657             :                     the null hypothesis is rejected.
   12658             :     RightTail   -   p-value for right-tailed test.
   12659             :                     If RightTail is less than the given significance level
   12660             :                     the null hypothesis is rejected.
   12661             : 
   12662             : NOTE: this function correctly handles degenerate cases:
   12663             :       * when N=0 or M=0, all p-values are set to 1.0
   12664             :       * when both samples has zero variance, p-values are set
   12665             :         to 1.0 or 0.0, depending on difference between means.
   12666             :       * when only one sample has zero variance, test reduces to 1-sample
   12667             :         version.
   12668             : 
   12669             :   -- ALGLIB --
   12670             :      Copyright 18.09.2006 by Bochkanov Sergey
   12671             : *************************************************************************/
   12672           0 : void unequalvariancettest(/* Real    */ ae_vector* x,
   12673             :      ae_int_t n,
   12674             :      /* Real    */ ae_vector* y,
   12675             :      ae_int_t m,
   12676             :      double* bothtails,
   12677             :      double* lefttail,
   12678             :      double* righttail,
   12679             :      ae_state *_state)
   12680             : {
   12681             :     ae_int_t i;
   12682             :     ae_bool samex;
   12683             :     ae_bool samey;
   12684             :     double x0;
   12685             :     double y0;
   12686             :     double xmean;
   12687             :     double ymean;
   12688             :     double xvar;
   12689             :     double yvar;
   12690             :     double v;
   12691             :     double df;
   12692             :     double p;
   12693             :     double stat;
   12694             :     double c;
   12695             : 
   12696           0 :     *bothtails = 0;
   12697           0 :     *lefttail = 0;
   12698           0 :     *righttail = 0;
   12699             : 
   12700           0 :     if( n<=0||m<=0 )
   12701             :     {
   12702           0 :         *bothtails = 1.0;
   12703           0 :         *lefttail = 1.0;
   12704           0 :         *righttail = 1.0;
   12705           0 :         return;
   12706             :     }
   12707             :     
   12708             :     /*
   12709             :      * Mean
   12710             :      */
   12711           0 :     xmean = (double)(0);
   12712           0 :     x0 = x->ptr.p_double[0];
   12713           0 :     samex = ae_true;
   12714           0 :     for(i=0; i<=n-1; i++)
   12715             :     {
   12716           0 :         v = x->ptr.p_double[i];
   12717           0 :         xmean = xmean+v;
   12718           0 :         samex = samex&&ae_fp_eq(v,x0);
   12719             :     }
   12720           0 :     if( samex )
   12721             :     {
   12722           0 :         xmean = x0;
   12723             :     }
   12724             :     else
   12725             :     {
   12726           0 :         xmean = xmean/n;
   12727             :     }
   12728           0 :     ymean = (double)(0);
   12729           0 :     y0 = y->ptr.p_double[0];
   12730           0 :     samey = ae_true;
   12731           0 :     for(i=0; i<=m-1; i++)
   12732             :     {
   12733           0 :         v = y->ptr.p_double[i];
   12734           0 :         ymean = ymean+v;
   12735           0 :         samey = samey&&ae_fp_eq(v,y0);
   12736             :     }
   12737           0 :     if( samey )
   12738             :     {
   12739           0 :         ymean = y0;
   12740             :     }
   12741             :     else
   12742             :     {
   12743           0 :         ymean = ymean/m;
   12744             :     }
   12745             :     
   12746             :     /*
   12747             :      * Variance (using corrected two-pass algorithm)
   12748             :      */
   12749           0 :     xvar = (double)(0);
   12750           0 :     if( n>=2&&!samex )
   12751             :     {
   12752           0 :         for(i=0; i<=n-1; i++)
   12753             :         {
   12754           0 :             xvar = xvar+ae_sqr(x->ptr.p_double[i]-xmean, _state);
   12755             :         }
   12756           0 :         xvar = xvar/(n-1);
   12757             :     }
   12758           0 :     yvar = (double)(0);
   12759           0 :     if( m>=2&&!samey )
   12760             :     {
   12761           0 :         for(i=0; i<=m-1; i++)
   12762             :         {
   12763           0 :             yvar = yvar+ae_sqr(y->ptr.p_double[i]-ymean, _state);
   12764             :         }
   12765           0 :         yvar = yvar/(m-1);
   12766             :     }
   12767             :     
   12768             :     /*
   12769             :      * Handle different special cases
   12770             :      * (one or both variances are zero).
   12771             :      */
   12772           0 :     if( ae_fp_eq(xvar,(double)(0))&&ae_fp_eq(yvar,(double)(0)) )
   12773             :     {
   12774           0 :         if( ae_fp_eq(xmean,ymean) )
   12775             :         {
   12776           0 :             *bothtails = 1.0;
   12777             :         }
   12778             :         else
   12779             :         {
   12780           0 :             *bothtails = 0.0;
   12781             :         }
   12782           0 :         if( ae_fp_greater_eq(xmean,ymean) )
   12783             :         {
   12784           0 :             *lefttail = 1.0;
   12785             :         }
   12786             :         else
   12787             :         {
   12788           0 :             *lefttail = 0.0;
   12789             :         }
   12790           0 :         if( ae_fp_less_eq(xmean,ymean) )
   12791             :         {
   12792           0 :             *righttail = 1.0;
   12793             :         }
   12794             :         else
   12795             :         {
   12796           0 :             *righttail = 0.0;
   12797             :         }
   12798           0 :         return;
   12799             :     }
   12800           0 :     if( ae_fp_eq(xvar,(double)(0)) )
   12801             :     {
   12802             :         
   12803             :         /*
   12804             :          * X is constant, unpooled 2-sample test reduces to 1-sample test.
   12805             :          *
   12806             :          * NOTE: right-tail and left-tail must be passed to 1-sample
   12807             :          *       t-test in reverse order because we reverse order of
   12808             :          *       of samples.
   12809             :          */
   12810           0 :         studentttest1(y, m, xmean, bothtails, righttail, lefttail, _state);
   12811           0 :         return;
   12812             :     }
   12813           0 :     if( ae_fp_eq(yvar,(double)(0)) )
   12814             :     {
   12815             :         
   12816             :         /*
   12817             :          * Y is constant, unpooled 2-sample test reduces to 1-sample test.
   12818             :          */
   12819           0 :         studentttest1(x, n, ymean, bothtails, lefttail, righttail, _state);
   12820           0 :         return;
   12821             :     }
   12822             :     
   12823             :     /*
   12824             :      * Statistic
   12825             :      */
   12826           0 :     stat = (xmean-ymean)/ae_sqrt(xvar/n+yvar/m, _state);
   12827           0 :     c = xvar/n/(xvar/n+yvar/m);
   12828           0 :     df = rmul2((double)(n-1), (double)(m-1), _state)/((m-1)*ae_sqr(c, _state)+(n-1)*ae_sqr(1-c, _state));
   12829           0 :     if( ae_fp_greater(stat,(double)(0)) )
   12830             :     {
   12831           0 :         p = 1-0.5*incompletebeta(df/2, 0.5, df/(df+ae_sqr(stat, _state)), _state);
   12832             :     }
   12833             :     else
   12834             :     {
   12835           0 :         p = 0.5*incompletebeta(df/2, 0.5, df/(df+ae_sqr(stat, _state)), _state);
   12836             :     }
   12837           0 :     *bothtails = 2*ae_minreal(p, 1-p, _state);
   12838           0 :     *lefttail = p;
   12839           0 :     *righttail = 1-p;
   12840             : }
   12841             : 
   12842             : 
   12843             : #endif
   12844             : #if defined(AE_COMPILE_MANNWHITNEYU) || !defined(AE_PARTIAL_BUILD)
   12845             : 
   12846             : 
   12847             : /*************************************************************************
   12848             : Mann-Whitney U-test
   12849             : 
   12850             : This test checks hypotheses about whether X  and  Y  are  samples  of  two
   12851             : continuous distributions of the same shape  and  same  median  or  whether
   12852             : their medians are different.
   12853             : 
   12854             : The following tests are performed:
   12855             :     * two-tailed test (null hypothesis - the medians are equal)
   12856             :     * left-tailed test (null hypothesis - the median of the  first  sample
   12857             :       is greater than or equal to the median of the second sample)
   12858             :     * right-tailed test (null hypothesis - the median of the first  sample
   12859             :       is less than or equal to the median of the second sample).
   12860             : 
   12861             : Requirements:
   12862             :     * the samples are independent
   12863             :     * X and Y are continuous distributions (or discrete distributions well-
   12864             :       approximating continuous distributions)
   12865             :     * distributions of X and Y have the  same  shape.  The  only  possible
   12866             :       difference is their position (i.e. the value of the median)
   12867             :     * the number of elements in each sample is not less than 5
   12868             :     * the scale of measurement should be ordinal, interval or ratio  (i.e.
   12869             :       the test could not be applied to nominal variables).
   12870             : 
   12871             : The test is non-parametric and doesn't require distributions to be normal.
   12872             : 
   12873             : Input parameters:
   12874             :     X   -   sample 1. Array whose index goes from 0 to N-1.
   12875             :     N   -   size of the sample. N>=5
   12876             :     Y   -   sample 2. Array whose index goes from 0 to M-1.
   12877             :     M   -   size of the sample. M>=5
   12878             : 
   12879             : Output parameters:
   12880             :     BothTails   -   p-value for two-tailed test.
   12881             :                     If BothTails is less than the given significance level
   12882             :                     the null hypothesis is rejected.
   12883             :     LeftTail    -   p-value for left-tailed test.
   12884             :                     If LeftTail is less than the given significance level,
   12885             :                     the null hypothesis is rejected.
   12886             :     RightTail   -   p-value for right-tailed test.
   12887             :                     If RightTail is less than the given significance level
   12888             :                     the null hypothesis is rejected.
   12889             : 
   12890             : To calculate p-values, special approximation is used. This method lets  us
   12891             : calculate p-values with satisfactory  accuracy  in  interval  [0.0001, 1].
   12892             : There is no approximation outside the [0.0001, 1] interval. Therefore,  if
   12893             : the significance level outlies this interval, the test returns 0.0001.
   12894             : 
   12895             : Relative precision of approximation of p-value:
   12896             : 
   12897             : N          M          Max.err.   Rms.err.
   12898             : 5..10      N..10      1.4e-02    6.0e-04
   12899             : 5..10      N..100     2.2e-02    5.3e-06
   12900             : 10..15     N..15      1.0e-02    3.2e-04
   12901             : 10..15     N..100     1.0e-02    2.2e-05
   12902             : 15..100    N..100     6.1e-03    2.7e-06
   12903             : 
   12904             : For N,M>100 accuracy checks weren't put into  practice,  but  taking  into
   12905             : account characteristics of asymptotic approximation used, precision should
   12906             : not be sharply different from the values for interval [5, 100].
   12907             : 
   12908             : NOTE: P-value approximation was  optimized  for  0.0001<=p<=0.2500.  Thus,
   12909             :       P's outside of this interval are enforced to these bounds. Say,  you
   12910             :       may quite often get P equal to exactly 0.25 or 0.0001.
   12911             : 
   12912             :   -- ALGLIB --
   12913             :      Copyright 09.04.2007 by Bochkanov Sergey
   12914             : *************************************************************************/
   12915           0 : void mannwhitneyutest(/* Real    */ ae_vector* x,
   12916             :      ae_int_t n,
   12917             :      /* Real    */ ae_vector* y,
   12918             :      ae_int_t m,
   12919             :      double* bothtails,
   12920             :      double* lefttail,
   12921             :      double* righttail,
   12922             :      ae_state *_state)
   12923             : {
   12924             :     ae_frame _frame_block;
   12925             :     ae_int_t i;
   12926             :     ae_int_t j;
   12927             :     ae_int_t k;
   12928             :     ae_int_t t;
   12929             :     double tmp;
   12930             :     ae_int_t tmpi;
   12931             :     ae_int_t ns;
   12932             :     ae_vector r;
   12933             :     ae_vector c;
   12934             :     double u;
   12935             :     double p;
   12936             :     double mp;
   12937             :     double s;
   12938             :     double sigma;
   12939             :     double mu;
   12940             :     ae_int_t tiecount;
   12941             :     ae_vector tiesize;
   12942             : 
   12943           0 :     ae_frame_make(_state, &_frame_block);
   12944           0 :     memset(&r, 0, sizeof(r));
   12945           0 :     memset(&c, 0, sizeof(c));
   12946           0 :     memset(&tiesize, 0, sizeof(tiesize));
   12947           0 :     *bothtails = 0;
   12948           0 :     *lefttail = 0;
   12949           0 :     *righttail = 0;
   12950           0 :     ae_vector_init(&r, 0, DT_REAL, _state, ae_true);
   12951           0 :     ae_vector_init(&c, 0, DT_INT, _state, ae_true);
   12952           0 :     ae_vector_init(&tiesize, 0, DT_INT, _state, ae_true);
   12953             : 
   12954             :     
   12955             :     /*
   12956             :      * Prepare
   12957             :      */
   12958           0 :     if( n<=4||m<=4 )
   12959             :     {
   12960           0 :         *bothtails = 1.0;
   12961           0 :         *lefttail = 1.0;
   12962           0 :         *righttail = 1.0;
   12963           0 :         ae_frame_leave(_state);
   12964           0 :         return;
   12965             :     }
   12966           0 :     ns = n+m;
   12967           0 :     ae_vector_set_length(&r, ns-1+1, _state);
   12968           0 :     ae_vector_set_length(&c, ns-1+1, _state);
   12969           0 :     for(i=0; i<=n-1; i++)
   12970             :     {
   12971           0 :         r.ptr.p_double[i] = x->ptr.p_double[i];
   12972           0 :         c.ptr.p_int[i] = 0;
   12973             :     }
   12974           0 :     for(i=0; i<=m-1; i++)
   12975             :     {
   12976           0 :         r.ptr.p_double[n+i] = y->ptr.p_double[i];
   12977           0 :         c.ptr.p_int[n+i] = 1;
   12978             :     }
   12979             :     
   12980             :     /*
   12981             :      * sort {R, C}
   12982             :      */
   12983           0 :     if( ns!=1 )
   12984             :     {
   12985           0 :         i = 2;
   12986           0 :         do
   12987             :         {
   12988           0 :             t = i;
   12989           0 :             while(t!=1)
   12990             :             {
   12991           0 :                 k = t/2;
   12992           0 :                 if( ae_fp_greater_eq(r.ptr.p_double[k-1],r.ptr.p_double[t-1]) )
   12993             :                 {
   12994           0 :                     t = 1;
   12995             :                 }
   12996             :                 else
   12997             :                 {
   12998           0 :                     tmp = r.ptr.p_double[k-1];
   12999           0 :                     r.ptr.p_double[k-1] = r.ptr.p_double[t-1];
   13000           0 :                     r.ptr.p_double[t-1] = tmp;
   13001           0 :                     tmpi = c.ptr.p_int[k-1];
   13002           0 :                     c.ptr.p_int[k-1] = c.ptr.p_int[t-1];
   13003           0 :                     c.ptr.p_int[t-1] = tmpi;
   13004           0 :                     t = k;
   13005             :                 }
   13006             :             }
   13007           0 :             i = i+1;
   13008             :         }
   13009           0 :         while(i<=ns);
   13010           0 :         i = ns-1;
   13011           0 :         do
   13012             :         {
   13013           0 :             tmp = r.ptr.p_double[i];
   13014           0 :             r.ptr.p_double[i] = r.ptr.p_double[0];
   13015           0 :             r.ptr.p_double[0] = tmp;
   13016           0 :             tmpi = c.ptr.p_int[i];
   13017           0 :             c.ptr.p_int[i] = c.ptr.p_int[0];
   13018           0 :             c.ptr.p_int[0] = tmpi;
   13019           0 :             t = 1;
   13020           0 :             while(t!=0)
   13021             :             {
   13022           0 :                 k = 2*t;
   13023           0 :                 if( k>i )
   13024             :                 {
   13025           0 :                     t = 0;
   13026             :                 }
   13027             :                 else
   13028             :                 {
   13029           0 :                     if( k<i )
   13030             :                     {
   13031           0 :                         if( ae_fp_greater(r.ptr.p_double[k],r.ptr.p_double[k-1]) )
   13032             :                         {
   13033           0 :                             k = k+1;
   13034             :                         }
   13035             :                     }
   13036           0 :                     if( ae_fp_greater_eq(r.ptr.p_double[t-1],r.ptr.p_double[k-1]) )
   13037             :                     {
   13038           0 :                         t = 0;
   13039             :                     }
   13040             :                     else
   13041             :                     {
   13042           0 :                         tmp = r.ptr.p_double[k-1];
   13043           0 :                         r.ptr.p_double[k-1] = r.ptr.p_double[t-1];
   13044           0 :                         r.ptr.p_double[t-1] = tmp;
   13045           0 :                         tmpi = c.ptr.p_int[k-1];
   13046           0 :                         c.ptr.p_int[k-1] = c.ptr.p_int[t-1];
   13047           0 :                         c.ptr.p_int[t-1] = tmpi;
   13048           0 :                         t = k;
   13049             :                     }
   13050             :                 }
   13051             :             }
   13052           0 :             i = i-1;
   13053             :         }
   13054           0 :         while(i>=1);
   13055             :     }
   13056             :     
   13057             :     /*
   13058             :      * compute tied ranks
   13059             :      */
   13060           0 :     i = 0;
   13061           0 :     tiecount = 0;
   13062           0 :     ae_vector_set_length(&tiesize, ns-1+1, _state);
   13063           0 :     while(i<=ns-1)
   13064             :     {
   13065           0 :         j = i+1;
   13066           0 :         while(j<=ns-1)
   13067             :         {
   13068           0 :             if( ae_fp_neq(r.ptr.p_double[j],r.ptr.p_double[i]) )
   13069             :             {
   13070           0 :                 break;
   13071             :             }
   13072           0 :             j = j+1;
   13073             :         }
   13074           0 :         for(k=i; k<=j-1; k++)
   13075             :         {
   13076           0 :             r.ptr.p_double[k] = 1+(double)(i+j-1)/(double)2;
   13077             :         }
   13078           0 :         tiesize.ptr.p_int[tiecount] = j-i;
   13079           0 :         tiecount = tiecount+1;
   13080           0 :         i = j;
   13081             :     }
   13082             :     
   13083             :     /*
   13084             :      * Compute U
   13085             :      */
   13086           0 :     u = (double)(0);
   13087           0 :     for(i=0; i<=ns-1; i++)
   13088             :     {
   13089           0 :         if( c.ptr.p_int[i]==0 )
   13090             :         {
   13091           0 :             u = u+r.ptr.p_double[i];
   13092             :         }
   13093             :     }
   13094           0 :     u = rmul2((double)(n), (double)(m), _state)+rmul2((double)(n), (double)(n+1), _state)*0.5-u;
   13095             :     
   13096             :     /*
   13097             :      * Result
   13098             :      */
   13099           0 :     mu = rmul2((double)(n), (double)(m), _state)/2;
   13100           0 :     tmp = ns*(ae_sqr((double)(ns), _state)-1)/12;
   13101           0 :     for(i=0; i<=tiecount-1; i++)
   13102             :     {
   13103           0 :         tmp = tmp-tiesize.ptr.p_int[i]*(ae_sqr((double)(tiesize.ptr.p_int[i]), _state)-1)/12;
   13104             :     }
   13105           0 :     sigma = ae_sqrt(rmul2((double)(n), (double)(m), _state)/ns/(ns-1)*tmp, _state);
   13106           0 :     s = (u-mu)/sigma;
   13107           0 :     if( ae_fp_less_eq(s,(double)(0)) )
   13108             :     {
   13109           0 :         p = ae_exp(mannwhitneyu_usigma(-(u-mu)/sigma, n, m, _state), _state);
   13110           0 :         mp = 1-ae_exp(mannwhitneyu_usigma(-(u-1-mu)/sigma, n, m, _state), _state);
   13111             :     }
   13112             :     else
   13113             :     {
   13114           0 :         mp = ae_exp(mannwhitneyu_usigma((u-mu)/sigma, n, m, _state), _state);
   13115           0 :         p = 1-ae_exp(mannwhitneyu_usigma((u+1-mu)/sigma, n, m, _state), _state);
   13116             :     }
   13117           0 :     *lefttail = boundval(ae_maxreal(mp, 1.0E-4, _state), 0.0001, 0.2500, _state);
   13118           0 :     *righttail = boundval(ae_maxreal(p, 1.0E-4, _state), 0.0001, 0.2500, _state);
   13119           0 :     *bothtails = 2*ae_minreal(*lefttail, *righttail, _state);
   13120           0 :     ae_frame_leave(_state);
   13121             : }
   13122             : 
   13123             : 
   13124             : /*************************************************************************
   13125             : Sequential Chebyshev interpolation.
   13126             : *************************************************************************/
   13127           0 : static void mannwhitneyu_ucheb(double x,
   13128             :      double c,
   13129             :      double* tj,
   13130             :      double* tj1,
   13131             :      double* r,
   13132             :      ae_state *_state)
   13133             : {
   13134             :     double t;
   13135             : 
   13136             : 
   13137           0 :     *r = *r+c*(*tj);
   13138           0 :     t = 2*x*(*tj1)-(*tj);
   13139           0 :     *tj = *tj1;
   13140           0 :     *tj1 = t;
   13141           0 : }
   13142             : 
   13143             : 
   13144             : /*************************************************************************
   13145             : Three-point polynomial interpolation.
   13146             : *************************************************************************/
   13147           0 : static double mannwhitneyu_uninterpolate(double p1,
   13148             :      double p2,
   13149             :      double p3,
   13150             :      ae_int_t n,
   13151             :      ae_state *_state)
   13152             : {
   13153             :     double t1;
   13154             :     double t2;
   13155             :     double t3;
   13156             :     double t;
   13157             :     double p12;
   13158             :     double p23;
   13159             :     double result;
   13160             : 
   13161             : 
   13162           0 :     t1 = 1.0/15.0;
   13163           0 :     t2 = 1.0/30.0;
   13164           0 :     t3 = 1.0/100.0;
   13165           0 :     t = 1.0/n;
   13166           0 :     p12 = ((t-t2)*p1+(t1-t)*p2)/(t1-t2);
   13167           0 :     p23 = ((t-t3)*p2+(t2-t)*p3)/(t2-t3);
   13168           0 :     result = ((t-t3)*p12+(t1-t)*p23)/(t1-t3);
   13169           0 :     return result;
   13170             : }
   13171             : 
   13172             : 
   13173             : /*************************************************************************
   13174             : Tail(0, N1, N2)
   13175             : *************************************************************************/
   13176           0 : static double mannwhitneyu_usigma000(ae_int_t n1,
   13177             :      ae_int_t n2,
   13178             :      ae_state *_state)
   13179             : {
   13180             :     double p1;
   13181             :     double p2;
   13182             :     double p3;
   13183             :     double result;
   13184             : 
   13185             : 
   13186           0 :     p1 = mannwhitneyu_uninterpolate(-6.76984e-01, -6.83700e-01, -6.89873e-01, n2, _state);
   13187           0 :     p2 = mannwhitneyu_uninterpolate(-6.83700e-01, -6.87311e-01, -6.90957e-01, n2, _state);
   13188           0 :     p3 = mannwhitneyu_uninterpolate(-6.89873e-01, -6.90957e-01, -6.92175e-01, n2, _state);
   13189           0 :     result = mannwhitneyu_uninterpolate(p1, p2, p3, n1, _state);
   13190           0 :     return result;
   13191             : }
   13192             : 
   13193             : 
   13194             : /*************************************************************************
   13195             : Tail(0.75, N1, N2)
   13196             : *************************************************************************/
   13197           0 : static double mannwhitneyu_usigma075(ae_int_t n1,
   13198             :      ae_int_t n2,
   13199             :      ae_state *_state)
   13200             : {
   13201             :     double p1;
   13202             :     double p2;
   13203             :     double p3;
   13204             :     double result;
   13205             : 
   13206             : 
   13207           0 :     p1 = mannwhitneyu_uninterpolate(-1.44500e+00, -1.45906e+00, -1.47063e+00, n2, _state);
   13208           0 :     p2 = mannwhitneyu_uninterpolate(-1.45906e+00, -1.46856e+00, -1.47644e+00, n2, _state);
   13209           0 :     p3 = mannwhitneyu_uninterpolate(-1.47063e+00, -1.47644e+00, -1.48100e+00, n2, _state);
   13210           0 :     result = mannwhitneyu_uninterpolate(p1, p2, p3, n1, _state);
   13211           0 :     return result;
   13212             : }
   13213             : 
   13214             : 
   13215             : /*************************************************************************
   13216             : Tail(1.5, N1, N2)
   13217             : *************************************************************************/
   13218           0 : static double mannwhitneyu_usigma150(ae_int_t n1,
   13219             :      ae_int_t n2,
   13220             :      ae_state *_state)
   13221             : {
   13222             :     double p1;
   13223             :     double p2;
   13224             :     double p3;
   13225             :     double result;
   13226             : 
   13227             : 
   13228           0 :     p1 = mannwhitneyu_uninterpolate(-2.65380e+00, -2.67352e+00, -2.69011e+00, n2, _state);
   13229           0 :     p2 = mannwhitneyu_uninterpolate(-2.67352e+00, -2.68591e+00, -2.69659e+00, n2, _state);
   13230           0 :     p3 = mannwhitneyu_uninterpolate(-2.69011e+00, -2.69659e+00, -2.70192e+00, n2, _state);
   13231           0 :     result = mannwhitneyu_uninterpolate(p1, p2, p3, n1, _state);
   13232           0 :     return result;
   13233             : }
   13234             : 
   13235             : 
   13236             : /*************************************************************************
   13237             : Tail(2.25, N1, N2)
   13238             : *************************************************************************/
   13239           0 : static double mannwhitneyu_usigma225(ae_int_t n1,
   13240             :      ae_int_t n2,
   13241             :      ae_state *_state)
   13242             : {
   13243             :     double p1;
   13244             :     double p2;
   13245             :     double p3;
   13246             :     double result;
   13247             : 
   13248             : 
   13249           0 :     p1 = mannwhitneyu_uninterpolate(-4.41465e+00, -4.42260e+00, -4.43702e+00, n2, _state);
   13250           0 :     p2 = mannwhitneyu_uninterpolate(-4.42260e+00, -4.41639e+00, -4.41928e+00, n2, _state);
   13251           0 :     p3 = mannwhitneyu_uninterpolate(-4.43702e+00, -4.41928e+00, -4.41030e+00, n2, _state);
   13252           0 :     result = mannwhitneyu_uninterpolate(p1, p2, p3, n1, _state);
   13253           0 :     return result;
   13254             : }
   13255             : 
   13256             : 
   13257             : /*************************************************************************
   13258             : Tail(3.0, N1, N2)
   13259             : *************************************************************************/
   13260           0 : static double mannwhitneyu_usigma300(ae_int_t n1,
   13261             :      ae_int_t n2,
   13262             :      ae_state *_state)
   13263             : {
   13264             :     double p1;
   13265             :     double p2;
   13266             :     double p3;
   13267             :     double result;
   13268             : 
   13269             : 
   13270           0 :     p1 = mannwhitneyu_uninterpolate(-6.89839e+00, -6.83477e+00, -6.82340e+00, n2, _state);
   13271           0 :     p2 = mannwhitneyu_uninterpolate(-6.83477e+00, -6.74559e+00, -6.71117e+00, n2, _state);
   13272           0 :     p3 = mannwhitneyu_uninterpolate(-6.82340e+00, -6.71117e+00, -6.64929e+00, n2, _state);
   13273           0 :     result = mannwhitneyu_uninterpolate(p1, p2, p3, n1, _state);
   13274           0 :     return result;
   13275             : }
   13276             : 
   13277             : 
   13278             : /*************************************************************************
   13279             : Tail(3.33, N1, N2)
   13280             : *************************************************************************/
   13281           0 : static double mannwhitneyu_usigma333(ae_int_t n1,
   13282             :      ae_int_t n2,
   13283             :      ae_state *_state)
   13284             : {
   13285             :     double p1;
   13286             :     double p2;
   13287             :     double p3;
   13288             :     double result;
   13289             : 
   13290             : 
   13291           0 :     p1 = mannwhitneyu_uninterpolate(-8.31272e+00, -8.17096e+00, -8.13125e+00, n2, _state);
   13292           0 :     p2 = mannwhitneyu_uninterpolate(-8.17096e+00, -8.00156e+00, -7.93245e+00, n2, _state);
   13293           0 :     p3 = mannwhitneyu_uninterpolate(-8.13125e+00, -7.93245e+00, -7.82502e+00, n2, _state);
   13294           0 :     result = mannwhitneyu_uninterpolate(p1, p2, p3, n1, _state);
   13295           0 :     return result;
   13296             : }
   13297             : 
   13298             : 
   13299             : /*************************************************************************
   13300             : Tail(3.66, N1, N2)
   13301             : *************************************************************************/
   13302           0 : static double mannwhitneyu_usigma367(ae_int_t n1,
   13303             :      ae_int_t n2,
   13304             :      ae_state *_state)
   13305             : {
   13306             :     double p1;
   13307             :     double p2;
   13308             :     double p3;
   13309             :     double result;
   13310             : 
   13311             : 
   13312           0 :     p1 = mannwhitneyu_uninterpolate(-9.98837e+00, -9.70844e+00, -9.62087e+00, n2, _state);
   13313           0 :     p2 = mannwhitneyu_uninterpolate(-9.70844e+00, -9.41156e+00, -9.28998e+00, n2, _state);
   13314           0 :     p3 = mannwhitneyu_uninterpolate(-9.62087e+00, -9.28998e+00, -9.11686e+00, n2, _state);
   13315           0 :     result = mannwhitneyu_uninterpolate(p1, p2, p3, n1, _state);
   13316           0 :     return result;
   13317             : }
   13318             : 
   13319             : 
   13320             : /*************************************************************************
   13321             : Tail(4.0, N1, N2)
   13322             : *************************************************************************/
   13323           0 : static double mannwhitneyu_usigma400(ae_int_t n1,
   13324             :      ae_int_t n2,
   13325             :      ae_state *_state)
   13326             : {
   13327             :     double p1;
   13328             :     double p2;
   13329             :     double p3;
   13330             :     double result;
   13331             : 
   13332             : 
   13333           0 :     p1 = mannwhitneyu_uninterpolate(-1.20250e+01, -1.14911e+01, -1.13231e+01, n2, _state);
   13334           0 :     p2 = mannwhitneyu_uninterpolate(-1.14911e+01, -1.09927e+01, -1.07937e+01, n2, _state);
   13335           0 :     p3 = mannwhitneyu_uninterpolate(-1.13231e+01, -1.07937e+01, -1.05285e+01, n2, _state);
   13336           0 :     result = mannwhitneyu_uninterpolate(p1, p2, p3, n1, _state);
   13337           0 :     return result;
   13338             : }
   13339             : 
   13340             : 
   13341             : /*************************************************************************
   13342             : Tail(S, 5, 5)
   13343             : *************************************************************************/
   13344           0 : static double mannwhitneyu_utbln5n5(double s, ae_state *_state)
   13345             : {
   13346             :     double x;
   13347             :     double tj;
   13348             :     double tj1;
   13349             :     double result;
   13350             : 
   13351             : 
   13352           0 :     result = (double)(0);
   13353           0 :     x = ae_minreal(2*(s-0.000000e+00)/2.611165e+00-1, 1.0, _state);
   13354           0 :     tj = (double)(1);
   13355           0 :     tj1 = x;
   13356           0 :     mannwhitneyu_ucheb(x, -2.596264e+00, &tj, &tj1, &result, _state);
   13357           0 :     mannwhitneyu_ucheb(x, -2.412086e+00, &tj, &tj1, &result, _state);
   13358           0 :     mannwhitneyu_ucheb(x, -4.858542e-01, &tj, &tj1, &result, _state);
   13359           0 :     mannwhitneyu_ucheb(x, -5.614282e-02, &tj, &tj1, &result, _state);
   13360           0 :     mannwhitneyu_ucheb(x, 3.372686e-03, &tj, &tj1, &result, _state);
   13361           0 :     mannwhitneyu_ucheb(x, 8.524731e-03, &tj, &tj1, &result, _state);
   13362           0 :     mannwhitneyu_ucheb(x, 4.435331e-03, &tj, &tj1, &result, _state);
   13363           0 :     mannwhitneyu_ucheb(x, 1.284665e-03, &tj, &tj1, &result, _state);
   13364           0 :     mannwhitneyu_ucheb(x, 4.184141e-03, &tj, &tj1, &result, _state);
   13365           0 :     mannwhitneyu_ucheb(x, 5.298360e-03, &tj, &tj1, &result, _state);
   13366           0 :     mannwhitneyu_ucheb(x, 7.447272e-04, &tj, &tj1, &result, _state);
   13367           0 :     mannwhitneyu_ucheb(x, -3.938769e-03, &tj, &tj1, &result, _state);
   13368           0 :     mannwhitneyu_ucheb(x, -4.276205e-03, &tj, &tj1, &result, _state);
   13369           0 :     mannwhitneyu_ucheb(x, -1.138481e-03, &tj, &tj1, &result, _state);
   13370           0 :     mannwhitneyu_ucheb(x, 8.684625e-04, &tj, &tj1, &result, _state);
   13371           0 :     mannwhitneyu_ucheb(x, 1.558104e-03, &tj, &tj1, &result, _state);
   13372           0 :     return result;
   13373             : }
   13374             : 
   13375             : 
   13376             : /*************************************************************************
   13377             : Tail(S, 5, 6)
   13378             : *************************************************************************/
   13379           0 : static double mannwhitneyu_utbln5n6(double s, ae_state *_state)
   13380             : {
   13381             :     double x;
   13382             :     double tj;
   13383             :     double tj1;
   13384             :     double result;
   13385             : 
   13386             : 
   13387           0 :     result = (double)(0);
   13388           0 :     x = ae_minreal(2*(s-0.000000e+00)/2.738613e+00-1, 1.0, _state);
   13389           0 :     tj = (double)(1);
   13390           0 :     tj1 = x;
   13391           0 :     mannwhitneyu_ucheb(x, -2.810459e+00, &tj, &tj1, &result, _state);
   13392           0 :     mannwhitneyu_ucheb(x, -2.684429e+00, &tj, &tj1, &result, _state);
   13393           0 :     mannwhitneyu_ucheb(x, -5.712858e-01, &tj, &tj1, &result, _state);
   13394           0 :     mannwhitneyu_ucheb(x, -8.009324e-02, &tj, &tj1, &result, _state);
   13395           0 :     mannwhitneyu_ucheb(x, -6.644391e-03, &tj, &tj1, &result, _state);
   13396           0 :     mannwhitneyu_ucheb(x, 6.034173e-03, &tj, &tj1, &result, _state);
   13397           0 :     mannwhitneyu_ucheb(x, 4.953498e-03, &tj, &tj1, &result, _state);
   13398           0 :     mannwhitneyu_ucheb(x, 3.279293e-03, &tj, &tj1, &result, _state);
   13399           0 :     mannwhitneyu_ucheb(x, 3.563485e-03, &tj, &tj1, &result, _state);
   13400           0 :     mannwhitneyu_ucheb(x, 4.971952e-03, &tj, &tj1, &result, _state);
   13401           0 :     mannwhitneyu_ucheb(x, 3.506309e-03, &tj, &tj1, &result, _state);
   13402           0 :     mannwhitneyu_ucheb(x, -1.541406e-04, &tj, &tj1, &result, _state);
   13403           0 :     mannwhitneyu_ucheb(x, -3.283205e-03, &tj, &tj1, &result, _state);
   13404           0 :     mannwhitneyu_ucheb(x, -3.016347e-03, &tj, &tj1, &result, _state);
   13405           0 :     mannwhitneyu_ucheb(x, -1.221626e-03, &tj, &tj1, &result, _state);
   13406           0 :     mannwhitneyu_ucheb(x, -1.286752e-03, &tj, &tj1, &result, _state);
   13407           0 :     return result;
   13408             : }
   13409             : 
   13410             : 
   13411             : /*************************************************************************
   13412             : Tail(S, 5, 7)
   13413             : *************************************************************************/
   13414           0 : static double mannwhitneyu_utbln5n7(double s, ae_state *_state)
   13415             : {
   13416             :     double x;
   13417             :     double tj;
   13418             :     double tj1;
   13419             :     double result;
   13420             : 
   13421             : 
   13422           0 :     result = (double)(0);
   13423           0 :     x = ae_minreal(2*(s-0.000000e+00)/2.841993e+00-1, 1.0, _state);
   13424           0 :     tj = (double)(1);
   13425           0 :     tj1 = x;
   13426           0 :     mannwhitneyu_ucheb(x, -2.994677e+00, &tj, &tj1, &result, _state);
   13427           0 :     mannwhitneyu_ucheb(x, -2.923264e+00, &tj, &tj1, &result, _state);
   13428           0 :     mannwhitneyu_ucheb(x, -6.506190e-01, &tj, &tj1, &result, _state);
   13429           0 :     mannwhitneyu_ucheb(x, -1.054280e-01, &tj, &tj1, &result, _state);
   13430           0 :     mannwhitneyu_ucheb(x, -1.794587e-02, &tj, &tj1, &result, _state);
   13431           0 :     mannwhitneyu_ucheb(x, 1.726290e-03, &tj, &tj1, &result, _state);
   13432           0 :     mannwhitneyu_ucheb(x, 4.534180e-03, &tj, &tj1, &result, _state);
   13433           0 :     mannwhitneyu_ucheb(x, 4.517845e-03, &tj, &tj1, &result, _state);
   13434           0 :     mannwhitneyu_ucheb(x, 3.904428e-03, &tj, &tj1, &result, _state);
   13435           0 :     mannwhitneyu_ucheb(x, 3.882443e-03, &tj, &tj1, &result, _state);
   13436           0 :     mannwhitneyu_ucheb(x, 3.482988e-03, &tj, &tj1, &result, _state);
   13437           0 :     mannwhitneyu_ucheb(x, 2.114875e-03, &tj, &tj1, &result, _state);
   13438           0 :     mannwhitneyu_ucheb(x, -1.515082e-04, &tj, &tj1, &result, _state);
   13439           0 :     mannwhitneyu_ucheb(x, -1.996056e-03, &tj, &tj1, &result, _state);
   13440           0 :     mannwhitneyu_ucheb(x, -2.293581e-03, &tj, &tj1, &result, _state);
   13441           0 :     mannwhitneyu_ucheb(x, -2.349444e-03, &tj, &tj1, &result, _state);
   13442           0 :     return result;
   13443             : }
   13444             : 
   13445             : 
   13446             : /*************************************************************************
   13447             : Tail(S, 5, 8)
   13448             : *************************************************************************/
   13449           0 : static double mannwhitneyu_utbln5n8(double s, ae_state *_state)
   13450             : {
   13451             :     double x;
   13452             :     double tj;
   13453             :     double tj1;
   13454             :     double result;
   13455             : 
   13456             : 
   13457           0 :     result = (double)(0);
   13458           0 :     x = ae_minreal(2*(s-0.000000e+00)/2.927700e+00-1, 1.0, _state);
   13459           0 :     tj = (double)(1);
   13460           0 :     tj1 = x;
   13461           0 :     mannwhitneyu_ucheb(x, -3.155727e+00, &tj, &tj1, &result, _state);
   13462           0 :     mannwhitneyu_ucheb(x, -3.135078e+00, &tj, &tj1, &result, _state);
   13463           0 :     mannwhitneyu_ucheb(x, -7.247203e-01, &tj, &tj1, &result, _state);
   13464           0 :     mannwhitneyu_ucheb(x, -1.309697e-01, &tj, &tj1, &result, _state);
   13465           0 :     mannwhitneyu_ucheb(x, -2.993725e-02, &tj, &tj1, &result, _state);
   13466           0 :     mannwhitneyu_ucheb(x, -3.567219e-03, &tj, &tj1, &result, _state);
   13467           0 :     mannwhitneyu_ucheb(x, 3.383704e-03, &tj, &tj1, &result, _state);
   13468           0 :     mannwhitneyu_ucheb(x, 5.002188e-03, &tj, &tj1, &result, _state);
   13469           0 :     mannwhitneyu_ucheb(x, 4.487322e-03, &tj, &tj1, &result, _state);
   13470           0 :     mannwhitneyu_ucheb(x, 3.443899e-03, &tj, &tj1, &result, _state);
   13471           0 :     mannwhitneyu_ucheb(x, 2.688270e-03, &tj, &tj1, &result, _state);
   13472           0 :     mannwhitneyu_ucheb(x, 2.600339e-03, &tj, &tj1, &result, _state);
   13473           0 :     mannwhitneyu_ucheb(x, 1.874948e-03, &tj, &tj1, &result, _state);
   13474           0 :     mannwhitneyu_ucheb(x, 1.811593e-04, &tj, &tj1, &result, _state);
   13475           0 :     mannwhitneyu_ucheb(x, -1.072353e-03, &tj, &tj1, &result, _state);
   13476           0 :     mannwhitneyu_ucheb(x, -2.659457e-03, &tj, &tj1, &result, _state);
   13477           0 :     return result;
   13478             : }
   13479             : 
   13480             : 
   13481             : /*************************************************************************
   13482             : Tail(S, 5, 9)
   13483             : *************************************************************************/
   13484           0 : static double mannwhitneyu_utbln5n9(double s, ae_state *_state)
   13485             : {
   13486             :     double x;
   13487             :     double tj;
   13488             :     double tj1;
   13489             :     double result;
   13490             : 
   13491             : 
   13492           0 :     result = (double)(0);
   13493           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.000000e+00-1, 1.0, _state);
   13494           0 :     tj = (double)(1);
   13495           0 :     tj1 = x;
   13496           0 :     mannwhitneyu_ucheb(x, -3.298162e+00, &tj, &tj1, &result, _state);
   13497           0 :     mannwhitneyu_ucheb(x, -3.325016e+00, &tj, &tj1, &result, _state);
   13498           0 :     mannwhitneyu_ucheb(x, -7.939852e-01, &tj, &tj1, &result, _state);
   13499           0 :     mannwhitneyu_ucheb(x, -1.563029e-01, &tj, &tj1, &result, _state);
   13500           0 :     mannwhitneyu_ucheb(x, -4.222652e-02, &tj, &tj1, &result, _state);
   13501           0 :     mannwhitneyu_ucheb(x, -9.195200e-03, &tj, &tj1, &result, _state);
   13502           0 :     mannwhitneyu_ucheb(x, 1.445665e-03, &tj, &tj1, &result, _state);
   13503           0 :     mannwhitneyu_ucheb(x, 5.204792e-03, &tj, &tj1, &result, _state);
   13504           0 :     mannwhitneyu_ucheb(x, 4.775217e-03, &tj, &tj1, &result, _state);
   13505           0 :     mannwhitneyu_ucheb(x, 3.527781e-03, &tj, &tj1, &result, _state);
   13506           0 :     mannwhitneyu_ucheb(x, 2.221948e-03, &tj, &tj1, &result, _state);
   13507           0 :     mannwhitneyu_ucheb(x, 2.242968e-03, &tj, &tj1, &result, _state);
   13508           0 :     mannwhitneyu_ucheb(x, 2.607959e-03, &tj, &tj1, &result, _state);
   13509           0 :     mannwhitneyu_ucheb(x, 1.771285e-03, &tj, &tj1, &result, _state);
   13510           0 :     mannwhitneyu_ucheb(x, 6.694026e-04, &tj, &tj1, &result, _state);
   13511           0 :     mannwhitneyu_ucheb(x, -1.481190e-03, &tj, &tj1, &result, _state);
   13512           0 :     return result;
   13513             : }
   13514             : 
   13515             : 
   13516             : /*************************************************************************
   13517             : Tail(S, 5, 10)
   13518             : *************************************************************************/
   13519           0 : static double mannwhitneyu_utbln5n10(double s, ae_state *_state)
   13520             : {
   13521             :     double x;
   13522             :     double tj;
   13523             :     double tj1;
   13524             :     double result;
   13525             : 
   13526             : 
   13527           0 :     result = (double)(0);
   13528           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.061862e+00-1, 1.0, _state);
   13529           0 :     tj = (double)(1);
   13530           0 :     tj1 = x;
   13531           0 :     mannwhitneyu_ucheb(x, -3.425360e+00, &tj, &tj1, &result, _state);
   13532           0 :     mannwhitneyu_ucheb(x, -3.496710e+00, &tj, &tj1, &result, _state);
   13533           0 :     mannwhitneyu_ucheb(x, -8.587658e-01, &tj, &tj1, &result, _state);
   13534           0 :     mannwhitneyu_ucheb(x, -1.812005e-01, &tj, &tj1, &result, _state);
   13535           0 :     mannwhitneyu_ucheb(x, -5.427637e-02, &tj, &tj1, &result, _state);
   13536           0 :     mannwhitneyu_ucheb(x, -1.515702e-02, &tj, &tj1, &result, _state);
   13537           0 :     mannwhitneyu_ucheb(x, -5.406867e-04, &tj, &tj1, &result, _state);
   13538           0 :     mannwhitneyu_ucheb(x, 4.796295e-03, &tj, &tj1, &result, _state);
   13539           0 :     mannwhitneyu_ucheb(x, 5.237591e-03, &tj, &tj1, &result, _state);
   13540           0 :     mannwhitneyu_ucheb(x, 3.654249e-03, &tj, &tj1, &result, _state);
   13541           0 :     mannwhitneyu_ucheb(x, 2.181165e-03, &tj, &tj1, &result, _state);
   13542           0 :     mannwhitneyu_ucheb(x, 2.011665e-03, &tj, &tj1, &result, _state);
   13543           0 :     mannwhitneyu_ucheb(x, 2.417927e-03, &tj, &tj1, &result, _state);
   13544           0 :     mannwhitneyu_ucheb(x, 2.534880e-03, &tj, &tj1, &result, _state);
   13545           0 :     mannwhitneyu_ucheb(x, 1.791255e-03, &tj, &tj1, &result, _state);
   13546           0 :     mannwhitneyu_ucheb(x, 1.871512e-05, &tj, &tj1, &result, _state);
   13547           0 :     return result;
   13548             : }
   13549             : 
   13550             : 
   13551             : /*************************************************************************
   13552             : Tail(S, 5, 11)
   13553             : *************************************************************************/
   13554           0 : static double mannwhitneyu_utbln5n11(double s, ae_state *_state)
   13555             : {
   13556             :     double x;
   13557             :     double tj;
   13558             :     double tj1;
   13559             :     double result;
   13560             : 
   13561             : 
   13562           0 :     result = (double)(0);
   13563           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.115427e+00-1, 1.0, _state);
   13564           0 :     tj = (double)(1);
   13565           0 :     tj1 = x;
   13566           0 :     mannwhitneyu_ucheb(x, -3.539959e+00, &tj, &tj1, &result, _state);
   13567           0 :     mannwhitneyu_ucheb(x, -3.652998e+00, &tj, &tj1, &result, _state);
   13568           0 :     mannwhitneyu_ucheb(x, -9.196503e-01, &tj, &tj1, &result, _state);
   13569           0 :     mannwhitneyu_ucheb(x, -2.054363e-01, &tj, &tj1, &result, _state);
   13570           0 :     mannwhitneyu_ucheb(x, -6.618848e-02, &tj, &tj1, &result, _state);
   13571           0 :     mannwhitneyu_ucheb(x, -2.109411e-02, &tj, &tj1, &result, _state);
   13572           0 :     mannwhitneyu_ucheb(x, -2.786668e-03, &tj, &tj1, &result, _state);
   13573           0 :     mannwhitneyu_ucheb(x, 4.215648e-03, &tj, &tj1, &result, _state);
   13574           0 :     mannwhitneyu_ucheb(x, 5.484220e-03, &tj, &tj1, &result, _state);
   13575           0 :     mannwhitneyu_ucheb(x, 3.935991e-03, &tj, &tj1, &result, _state);
   13576           0 :     mannwhitneyu_ucheb(x, 2.396191e-03, &tj, &tj1, &result, _state);
   13577           0 :     mannwhitneyu_ucheb(x, 1.894177e-03, &tj, &tj1, &result, _state);
   13578           0 :     mannwhitneyu_ucheb(x, 2.206979e-03, &tj, &tj1, &result, _state);
   13579           0 :     mannwhitneyu_ucheb(x, 2.519055e-03, &tj, &tj1, &result, _state);
   13580           0 :     mannwhitneyu_ucheb(x, 2.210326e-03, &tj, &tj1, &result, _state);
   13581           0 :     mannwhitneyu_ucheb(x, 1.189679e-03, &tj, &tj1, &result, _state);
   13582           0 :     return result;
   13583             : }
   13584             : 
   13585             : 
   13586             : /*************************************************************************
   13587             : Tail(S, 5, 12)
   13588             : *************************************************************************/
   13589           0 : static double mannwhitneyu_utbln5n12(double s, ae_state *_state)
   13590             : {
   13591             :     double x;
   13592             :     double tj;
   13593             :     double tj1;
   13594             :     double result;
   13595             : 
   13596             : 
   13597           0 :     result = (double)(0);
   13598           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.162278e+00-1, 1.0, _state);
   13599           0 :     tj = (double)(1);
   13600           0 :     tj1 = x;
   13601           0 :     mannwhitneyu_ucheb(x, -3.644007e+00, &tj, &tj1, &result, _state);
   13602           0 :     mannwhitneyu_ucheb(x, -3.796173e+00, &tj, &tj1, &result, _state);
   13603           0 :     mannwhitneyu_ucheb(x, -9.771177e-01, &tj, &tj1, &result, _state);
   13604           0 :     mannwhitneyu_ucheb(x, -2.290043e-01, &tj, &tj1, &result, _state);
   13605           0 :     mannwhitneyu_ucheb(x, -7.794686e-02, &tj, &tj1, &result, _state);
   13606           0 :     mannwhitneyu_ucheb(x, -2.702110e-02, &tj, &tj1, &result, _state);
   13607           0 :     mannwhitneyu_ucheb(x, -5.185959e-03, &tj, &tj1, &result, _state);
   13608           0 :     mannwhitneyu_ucheb(x, 3.416259e-03, &tj, &tj1, &result, _state);
   13609           0 :     mannwhitneyu_ucheb(x, 5.592056e-03, &tj, &tj1, &result, _state);
   13610           0 :     mannwhitneyu_ucheb(x, 4.201530e-03, &tj, &tj1, &result, _state);
   13611           0 :     mannwhitneyu_ucheb(x, 2.754365e-03, &tj, &tj1, &result, _state);
   13612           0 :     mannwhitneyu_ucheb(x, 1.978945e-03, &tj, &tj1, &result, _state);
   13613           0 :     mannwhitneyu_ucheb(x, 2.012032e-03, &tj, &tj1, &result, _state);
   13614           0 :     mannwhitneyu_ucheb(x, 2.304579e-03, &tj, &tj1, &result, _state);
   13615           0 :     mannwhitneyu_ucheb(x, 2.100378e-03, &tj, &tj1, &result, _state);
   13616           0 :     mannwhitneyu_ucheb(x, 1.728269e-03, &tj, &tj1, &result, _state);
   13617           0 :     return result;
   13618             : }
   13619             : 
   13620             : 
   13621             : /*************************************************************************
   13622             : Tail(S, 5, 13)
   13623             : *************************************************************************/
   13624           0 : static double mannwhitneyu_utbln5n13(double s, ae_state *_state)
   13625             : {
   13626             :     double x;
   13627             :     double tj;
   13628             :     double tj1;
   13629             :     double result;
   13630             : 
   13631             : 
   13632           0 :     result = (double)(0);
   13633           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.203616e+00-1, 1.0, _state);
   13634           0 :     tj = (double)(1);
   13635           0 :     tj1 = x;
   13636           0 :     mannwhitneyu_ucheb(x, -3.739120e+00, &tj, &tj1, &result, _state);
   13637           0 :     mannwhitneyu_ucheb(x, -3.928117e+00, &tj, &tj1, &result, _state);
   13638           0 :     mannwhitneyu_ucheb(x, -1.031605e+00, &tj, &tj1, &result, _state);
   13639           0 :     mannwhitneyu_ucheb(x, -2.519403e-01, &tj, &tj1, &result, _state);
   13640           0 :     mannwhitneyu_ucheb(x, -8.962648e-02, &tj, &tj1, &result, _state);
   13641           0 :     mannwhitneyu_ucheb(x, -3.292183e-02, &tj, &tj1, &result, _state);
   13642           0 :     mannwhitneyu_ucheb(x, -7.809293e-03, &tj, &tj1, &result, _state);
   13643           0 :     mannwhitneyu_ucheb(x, 2.465156e-03, &tj, &tj1, &result, _state);
   13644           0 :     mannwhitneyu_ucheb(x, 5.456278e-03, &tj, &tj1, &result, _state);
   13645           0 :     mannwhitneyu_ucheb(x, 4.446055e-03, &tj, &tj1, &result, _state);
   13646           0 :     mannwhitneyu_ucheb(x, 3.109490e-03, &tj, &tj1, &result, _state);
   13647           0 :     mannwhitneyu_ucheb(x, 2.218256e-03, &tj, &tj1, &result, _state);
   13648           0 :     mannwhitneyu_ucheb(x, 1.941479e-03, &tj, &tj1, &result, _state);
   13649           0 :     mannwhitneyu_ucheb(x, 2.058603e-03, &tj, &tj1, &result, _state);
   13650           0 :     mannwhitneyu_ucheb(x, 1.824402e-03, &tj, &tj1, &result, _state);
   13651           0 :     mannwhitneyu_ucheb(x, 1.830947e-03, &tj, &tj1, &result, _state);
   13652           0 :     return result;
   13653             : }
   13654             : 
   13655             : 
   13656             : /*************************************************************************
   13657             : Tail(S, 5, 14)
   13658             : *************************************************************************/
   13659           0 : static double mannwhitneyu_utbln5n14(double s, ae_state *_state)
   13660             : {
   13661             :     double x;
   13662             :     double tj;
   13663             :     double tj1;
   13664             :     double result;
   13665             : 
   13666             : 
   13667           0 :     result = (double)(0);
   13668           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.240370e+00-1, 1.0, _state);
   13669           0 :     tj = (double)(1);
   13670           0 :     tj1 = x;
   13671           0 :     mannwhitneyu_ucheb(x, -3.826559e+00, &tj, &tj1, &result, _state);
   13672           0 :     mannwhitneyu_ucheb(x, -4.050370e+00, &tj, &tj1, &result, _state);
   13673           0 :     mannwhitneyu_ucheb(x, -1.083408e+00, &tj, &tj1, &result, _state);
   13674           0 :     mannwhitneyu_ucheb(x, -2.743164e-01, &tj, &tj1, &result, _state);
   13675           0 :     mannwhitneyu_ucheb(x, -1.012030e-01, &tj, &tj1, &result, _state);
   13676           0 :     mannwhitneyu_ucheb(x, -3.884686e-02, &tj, &tj1, &result, _state);
   13677           0 :     mannwhitneyu_ucheb(x, -1.059656e-02, &tj, &tj1, &result, _state);
   13678           0 :     mannwhitneyu_ucheb(x, 1.327521e-03, &tj, &tj1, &result, _state);
   13679           0 :     mannwhitneyu_ucheb(x, 5.134026e-03, &tj, &tj1, &result, _state);
   13680           0 :     mannwhitneyu_ucheb(x, 4.584201e-03, &tj, &tj1, &result, _state);
   13681           0 :     mannwhitneyu_ucheb(x, 3.440618e-03, &tj, &tj1, &result, _state);
   13682           0 :     mannwhitneyu_ucheb(x, 2.524133e-03, &tj, &tj1, &result, _state);
   13683           0 :     mannwhitneyu_ucheb(x, 1.990007e-03, &tj, &tj1, &result, _state);
   13684           0 :     mannwhitneyu_ucheb(x, 1.887334e-03, &tj, &tj1, &result, _state);
   13685           0 :     mannwhitneyu_ucheb(x, 1.534977e-03, &tj, &tj1, &result, _state);
   13686           0 :     mannwhitneyu_ucheb(x, 1.705395e-03, &tj, &tj1, &result, _state);
   13687           0 :     return result;
   13688             : }
   13689             : 
   13690             : 
   13691             : /*************************************************************************
   13692             : Tail(S, 5, 15)
   13693             : *************************************************************************/
   13694           0 : static double mannwhitneyu_utbln5n15(double s, ae_state *_state)
   13695             : {
   13696             :     double x;
   13697             :     double tj;
   13698             :     double tj1;
   13699             :     double result;
   13700             : 
   13701             : 
   13702           0 :     result = (double)(0);
   13703           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   13704           0 :     tj = (double)(1);
   13705           0 :     tj1 = x;
   13706           0 :     mannwhitneyu_ucheb(x, -3.851572e+00, &tj, &tj1, &result, _state);
   13707           0 :     mannwhitneyu_ucheb(x, -4.082033e+00, &tj, &tj1, &result, _state);
   13708           0 :     mannwhitneyu_ucheb(x, -1.095983e+00, &tj, &tj1, &result, _state);
   13709           0 :     mannwhitneyu_ucheb(x, -2.814595e-01, &tj, &tj1, &result, _state);
   13710           0 :     mannwhitneyu_ucheb(x, -1.073148e-01, &tj, &tj1, &result, _state);
   13711           0 :     mannwhitneyu_ucheb(x, -4.420213e-02, &tj, &tj1, &result, _state);
   13712           0 :     mannwhitneyu_ucheb(x, -1.517175e-02, &tj, &tj1, &result, _state);
   13713           0 :     mannwhitneyu_ucheb(x, -2.344180e-03, &tj, &tj1, &result, _state);
   13714           0 :     mannwhitneyu_ucheb(x, 2.371393e-03, &tj, &tj1, &result, _state);
   13715           0 :     mannwhitneyu_ucheb(x, 2.711443e-03, &tj, &tj1, &result, _state);
   13716           0 :     mannwhitneyu_ucheb(x, 2.228569e-03, &tj, &tj1, &result, _state);
   13717           0 :     mannwhitneyu_ucheb(x, 1.683483e-03, &tj, &tj1, &result, _state);
   13718           0 :     mannwhitneyu_ucheb(x, 1.267112e-03, &tj, &tj1, &result, _state);
   13719           0 :     mannwhitneyu_ucheb(x, 1.156044e-03, &tj, &tj1, &result, _state);
   13720           0 :     mannwhitneyu_ucheb(x, 9.131316e-04, &tj, &tj1, &result, _state);
   13721           0 :     mannwhitneyu_ucheb(x, 1.301023e-03, &tj, &tj1, &result, _state);
   13722           0 :     return result;
   13723             : }
   13724             : 
   13725             : 
   13726             : /*************************************************************************
   13727             : Tail(S, 5, 16)
   13728             : *************************************************************************/
   13729           0 : static double mannwhitneyu_utbln5n16(double s, ae_state *_state)
   13730             : {
   13731             :     double x;
   13732             :     double tj;
   13733             :     double tj1;
   13734             :     double result;
   13735             : 
   13736             : 
   13737           0 :     result = (double)(0);
   13738           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   13739           0 :     tj = (double)(1);
   13740           0 :     tj1 = x;
   13741           0 :     mannwhitneyu_ucheb(x, -3.852210e+00, &tj, &tj1, &result, _state);
   13742           0 :     mannwhitneyu_ucheb(x, -4.077482e+00, &tj, &tj1, &result, _state);
   13743           0 :     mannwhitneyu_ucheb(x, -1.091186e+00, &tj, &tj1, &result, _state);
   13744           0 :     mannwhitneyu_ucheb(x, -2.797282e-01, &tj, &tj1, &result, _state);
   13745           0 :     mannwhitneyu_ucheb(x, -1.084994e-01, &tj, &tj1, &result, _state);
   13746           0 :     mannwhitneyu_ucheb(x, -4.667054e-02, &tj, &tj1, &result, _state);
   13747           0 :     mannwhitneyu_ucheb(x, -1.843909e-02, &tj, &tj1, &result, _state);
   13748           0 :     mannwhitneyu_ucheb(x, -5.456732e-03, &tj, &tj1, &result, _state);
   13749           0 :     mannwhitneyu_ucheb(x, -5.039830e-04, &tj, &tj1, &result, _state);
   13750           0 :     mannwhitneyu_ucheb(x, 4.723508e-04, &tj, &tj1, &result, _state);
   13751           0 :     mannwhitneyu_ucheb(x, 3.940608e-04, &tj, &tj1, &result, _state);
   13752           0 :     mannwhitneyu_ucheb(x, 1.478285e-04, &tj, &tj1, &result, _state);
   13753           0 :     mannwhitneyu_ucheb(x, -1.649144e-04, &tj, &tj1, &result, _state);
   13754           0 :     mannwhitneyu_ucheb(x, -4.237703e-04, &tj, &tj1, &result, _state);
   13755           0 :     mannwhitneyu_ucheb(x, -4.707410e-04, &tj, &tj1, &result, _state);
   13756           0 :     mannwhitneyu_ucheb(x, -1.874293e-04, &tj, &tj1, &result, _state);
   13757           0 :     return result;
   13758             : }
   13759             : 
   13760             : 
   13761             : /*************************************************************************
   13762             : Tail(S, 5, 17)
   13763             : *************************************************************************/
   13764           0 : static double mannwhitneyu_utbln5n17(double s, ae_state *_state)
   13765             : {
   13766             :     double x;
   13767             :     double tj;
   13768             :     double tj1;
   13769             :     double result;
   13770             : 
   13771             : 
   13772           0 :     result = (double)(0);
   13773           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   13774           0 :     tj = (double)(1);
   13775           0 :     tj1 = x;
   13776           0 :     mannwhitneyu_ucheb(x, -3.851752e+00, &tj, &tj1, &result, _state);
   13777           0 :     mannwhitneyu_ucheb(x, -4.071259e+00, &tj, &tj1, &result, _state);
   13778           0 :     mannwhitneyu_ucheb(x, -1.084700e+00, &tj, &tj1, &result, _state);
   13779           0 :     mannwhitneyu_ucheb(x, -2.758898e-01, &tj, &tj1, &result, _state);
   13780           0 :     mannwhitneyu_ucheb(x, -1.073846e-01, &tj, &tj1, &result, _state);
   13781           0 :     mannwhitneyu_ucheb(x, -4.684838e-02, &tj, &tj1, &result, _state);
   13782           0 :     mannwhitneyu_ucheb(x, -1.964936e-02, &tj, &tj1, &result, _state);
   13783           0 :     mannwhitneyu_ucheb(x, -6.782442e-03, &tj, &tj1, &result, _state);
   13784           0 :     mannwhitneyu_ucheb(x, -1.956362e-03, &tj, &tj1, &result, _state);
   13785           0 :     mannwhitneyu_ucheb(x, -5.984727e-04, &tj, &tj1, &result, _state);
   13786           0 :     mannwhitneyu_ucheb(x, -5.196936e-04, &tj, &tj1, &result, _state);
   13787           0 :     mannwhitneyu_ucheb(x, -5.558262e-04, &tj, &tj1, &result, _state);
   13788           0 :     mannwhitneyu_ucheb(x, -8.690746e-04, &tj, &tj1, &result, _state);
   13789           0 :     mannwhitneyu_ucheb(x, -1.364855e-03, &tj, &tj1, &result, _state);
   13790           0 :     mannwhitneyu_ucheb(x, -1.401006e-03, &tj, &tj1, &result, _state);
   13791           0 :     mannwhitneyu_ucheb(x, -1.546748e-03, &tj, &tj1, &result, _state);
   13792           0 :     return result;
   13793             : }
   13794             : 
   13795             : 
   13796             : /*************************************************************************
   13797             : Tail(S, 5, 18)
   13798             : *************************************************************************/
   13799           0 : static double mannwhitneyu_utbln5n18(double s, ae_state *_state)
   13800             : {
   13801             :     double x;
   13802             :     double tj;
   13803             :     double tj1;
   13804             :     double result;
   13805             : 
   13806             : 
   13807           0 :     result = (double)(0);
   13808           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   13809           0 :     tj = (double)(1);
   13810           0 :     tj1 = x;
   13811           0 :     mannwhitneyu_ucheb(x, -3.850840e+00, &tj, &tj1, &result, _state);
   13812           0 :     mannwhitneyu_ucheb(x, -4.064799e+00, &tj, &tj1, &result, _state);
   13813           0 :     mannwhitneyu_ucheb(x, -1.077651e+00, &tj, &tj1, &result, _state);
   13814           0 :     mannwhitneyu_ucheb(x, -2.712659e-01, &tj, &tj1, &result, _state);
   13815           0 :     mannwhitneyu_ucheb(x, -1.049217e-01, &tj, &tj1, &result, _state);
   13816           0 :     mannwhitneyu_ucheb(x, -4.571333e-02, &tj, &tj1, &result, _state);
   13817           0 :     mannwhitneyu_ucheb(x, -1.929809e-02, &tj, &tj1, &result, _state);
   13818           0 :     mannwhitneyu_ucheb(x, -6.752044e-03, &tj, &tj1, &result, _state);
   13819           0 :     mannwhitneyu_ucheb(x, -1.949464e-03, &tj, &tj1, &result, _state);
   13820           0 :     mannwhitneyu_ucheb(x, -3.896101e-04, &tj, &tj1, &result, _state);
   13821           0 :     mannwhitneyu_ucheb(x, -4.614460e-05, &tj, &tj1, &result, _state);
   13822           0 :     mannwhitneyu_ucheb(x, 1.384357e-04, &tj, &tj1, &result, _state);
   13823           0 :     mannwhitneyu_ucheb(x, -6.489113e-05, &tj, &tj1, &result, _state);
   13824           0 :     mannwhitneyu_ucheb(x, -6.445725e-04, &tj, &tj1, &result, _state);
   13825           0 :     mannwhitneyu_ucheb(x, -8.945636e-04, &tj, &tj1, &result, _state);
   13826           0 :     mannwhitneyu_ucheb(x, -1.424653e-03, &tj, &tj1, &result, _state);
   13827           0 :     return result;
   13828             : }
   13829             : 
   13830             : 
   13831             : /*************************************************************************
   13832             : Tail(S, 5, 19)
   13833             : *************************************************************************/
   13834           0 : static double mannwhitneyu_utbln5n19(double s, ae_state *_state)
   13835             : {
   13836             :     double x;
   13837             :     double tj;
   13838             :     double tj1;
   13839             :     double result;
   13840             : 
   13841             : 
   13842           0 :     result = (double)(0);
   13843           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   13844           0 :     tj = (double)(1);
   13845           0 :     tj1 = x;
   13846           0 :     mannwhitneyu_ucheb(x, -3.850027e+00, &tj, &tj1, &result, _state);
   13847           0 :     mannwhitneyu_ucheb(x, -4.059159e+00, &tj, &tj1, &result, _state);
   13848           0 :     mannwhitneyu_ucheb(x, -1.071106e+00, &tj, &tj1, &result, _state);
   13849           0 :     mannwhitneyu_ucheb(x, -2.669960e-01, &tj, &tj1, &result, _state);
   13850           0 :     mannwhitneyu_ucheb(x, -1.022780e-01, &tj, &tj1, &result, _state);
   13851           0 :     mannwhitneyu_ucheb(x, -4.442555e-02, &tj, &tj1, &result, _state);
   13852           0 :     mannwhitneyu_ucheb(x, -1.851335e-02, &tj, &tj1, &result, _state);
   13853           0 :     mannwhitneyu_ucheb(x, -6.433865e-03, &tj, &tj1, &result, _state);
   13854           0 :     mannwhitneyu_ucheb(x, -1.514465e-03, &tj, &tj1, &result, _state);
   13855           0 :     mannwhitneyu_ucheb(x, 1.332989e-04, &tj, &tj1, &result, _state);
   13856           0 :     mannwhitneyu_ucheb(x, 8.606099e-04, &tj, &tj1, &result, _state);
   13857           0 :     mannwhitneyu_ucheb(x, 1.341945e-03, &tj, &tj1, &result, _state);
   13858           0 :     mannwhitneyu_ucheb(x, 1.402164e-03, &tj, &tj1, &result, _state);
   13859           0 :     mannwhitneyu_ucheb(x, 1.039761e-03, &tj, &tj1, &result, _state);
   13860           0 :     mannwhitneyu_ucheb(x, 5.512831e-04, &tj, &tj1, &result, _state);
   13861           0 :     mannwhitneyu_ucheb(x, -3.284427e-05, &tj, &tj1, &result, _state);
   13862           0 :     return result;
   13863             : }
   13864             : 
   13865             : 
   13866             : /*************************************************************************
   13867             : Tail(S, 5, 20)
   13868             : *************************************************************************/
   13869           0 : static double mannwhitneyu_utbln5n20(double s, ae_state *_state)
   13870             : {
   13871             :     double x;
   13872             :     double tj;
   13873             :     double tj1;
   13874             :     double result;
   13875             : 
   13876             : 
   13877           0 :     result = (double)(0);
   13878           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   13879           0 :     tj = (double)(1);
   13880           0 :     tj1 = x;
   13881           0 :     mannwhitneyu_ucheb(x, -3.849651e+00, &tj, &tj1, &result, _state);
   13882           0 :     mannwhitneyu_ucheb(x, -4.054729e+00, &tj, &tj1, &result, _state);
   13883           0 :     mannwhitneyu_ucheb(x, -1.065747e+00, &tj, &tj1, &result, _state);
   13884           0 :     mannwhitneyu_ucheb(x, -2.636243e-01, &tj, &tj1, &result, _state);
   13885           0 :     mannwhitneyu_ucheb(x, -1.003234e-01, &tj, &tj1, &result, _state);
   13886           0 :     mannwhitneyu_ucheb(x, -4.372789e-02, &tj, &tj1, &result, _state);
   13887           0 :     mannwhitneyu_ucheb(x, -1.831551e-02, &tj, &tj1, &result, _state);
   13888           0 :     mannwhitneyu_ucheb(x, -6.763090e-03, &tj, &tj1, &result, _state);
   13889           0 :     mannwhitneyu_ucheb(x, -1.830626e-03, &tj, &tj1, &result, _state);
   13890           0 :     mannwhitneyu_ucheb(x, -2.122384e-04, &tj, &tj1, &result, _state);
   13891           0 :     mannwhitneyu_ucheb(x, 8.108328e-04, &tj, &tj1, &result, _state);
   13892           0 :     mannwhitneyu_ucheb(x, 1.557983e-03, &tj, &tj1, &result, _state);
   13893           0 :     mannwhitneyu_ucheb(x, 1.945666e-03, &tj, &tj1, &result, _state);
   13894           0 :     mannwhitneyu_ucheb(x, 1.965696e-03, &tj, &tj1, &result, _state);
   13895           0 :     mannwhitneyu_ucheb(x, 1.493236e-03, &tj, &tj1, &result, _state);
   13896           0 :     mannwhitneyu_ucheb(x, 1.162591e-03, &tj, &tj1, &result, _state);
   13897           0 :     return result;
   13898             : }
   13899             : 
   13900             : 
   13901             : /*************************************************************************
   13902             : Tail(S, 5, 21)
   13903             : *************************************************************************/
   13904           0 : static double mannwhitneyu_utbln5n21(double s, ae_state *_state)
   13905             : {
   13906             :     double x;
   13907             :     double tj;
   13908             :     double tj1;
   13909             :     double result;
   13910             : 
   13911             : 
   13912           0 :     result = (double)(0);
   13913           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   13914           0 :     tj = (double)(1);
   13915           0 :     tj1 = x;
   13916           0 :     mannwhitneyu_ucheb(x, -3.849649e+00, &tj, &tj1, &result, _state);
   13917           0 :     mannwhitneyu_ucheb(x, -4.051155e+00, &tj, &tj1, &result, _state);
   13918           0 :     mannwhitneyu_ucheb(x, -1.061430e+00, &tj, &tj1, &result, _state);
   13919           0 :     mannwhitneyu_ucheb(x, -2.608869e-01, &tj, &tj1, &result, _state);
   13920           0 :     mannwhitneyu_ucheb(x, -9.902788e-02, &tj, &tj1, &result, _state);
   13921           0 :     mannwhitneyu_ucheb(x, -4.346562e-02, &tj, &tj1, &result, _state);
   13922           0 :     mannwhitneyu_ucheb(x, -1.874709e-02, &tj, &tj1, &result, _state);
   13923           0 :     mannwhitneyu_ucheb(x, -7.682887e-03, &tj, &tj1, &result, _state);
   13924           0 :     mannwhitneyu_ucheb(x, -3.026206e-03, &tj, &tj1, &result, _state);
   13925           0 :     mannwhitneyu_ucheb(x, -1.534551e-03, &tj, &tj1, &result, _state);
   13926           0 :     mannwhitneyu_ucheb(x, -4.990575e-04, &tj, &tj1, &result, _state);
   13927           0 :     mannwhitneyu_ucheb(x, 3.713334e-04, &tj, &tj1, &result, _state);
   13928           0 :     mannwhitneyu_ucheb(x, 9.737011e-04, &tj, &tj1, &result, _state);
   13929           0 :     mannwhitneyu_ucheb(x, 1.304571e-03, &tj, &tj1, &result, _state);
   13930           0 :     mannwhitneyu_ucheb(x, 1.133110e-03, &tj, &tj1, &result, _state);
   13931           0 :     mannwhitneyu_ucheb(x, 1.123457e-03, &tj, &tj1, &result, _state);
   13932           0 :     return result;
   13933             : }
   13934             : 
   13935             : 
   13936             : /*************************************************************************
   13937             : Tail(S, 5, 22)
   13938             : *************************************************************************/
   13939           0 : static double mannwhitneyu_utbln5n22(double s, ae_state *_state)
   13940             : {
   13941             :     double x;
   13942             :     double tj;
   13943             :     double tj1;
   13944             :     double result;
   13945             : 
   13946             : 
   13947           0 :     result = (double)(0);
   13948           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   13949           0 :     tj = (double)(1);
   13950           0 :     tj1 = x;
   13951           0 :     mannwhitneyu_ucheb(x, -3.849598e+00, &tj, &tj1, &result, _state);
   13952           0 :     mannwhitneyu_ucheb(x, -4.047605e+00, &tj, &tj1, &result, _state);
   13953           0 :     mannwhitneyu_ucheb(x, -1.057264e+00, &tj, &tj1, &result, _state);
   13954           0 :     mannwhitneyu_ucheb(x, -2.579513e-01, &tj, &tj1, &result, _state);
   13955           0 :     mannwhitneyu_ucheb(x, -9.749602e-02, &tj, &tj1, &result, _state);
   13956           0 :     mannwhitneyu_ucheb(x, -4.275137e-02, &tj, &tj1, &result, _state);
   13957           0 :     mannwhitneyu_ucheb(x, -1.881768e-02, &tj, &tj1, &result, _state);
   13958           0 :     mannwhitneyu_ucheb(x, -8.177374e-03, &tj, &tj1, &result, _state);
   13959           0 :     mannwhitneyu_ucheb(x, -3.981056e-03, &tj, &tj1, &result, _state);
   13960           0 :     mannwhitneyu_ucheb(x, -2.696290e-03, &tj, &tj1, &result, _state);
   13961           0 :     mannwhitneyu_ucheb(x, -1.886803e-03, &tj, &tj1, &result, _state);
   13962           0 :     mannwhitneyu_ucheb(x, -1.085378e-03, &tj, &tj1, &result, _state);
   13963           0 :     mannwhitneyu_ucheb(x, -4.675242e-04, &tj, &tj1, &result, _state);
   13964           0 :     mannwhitneyu_ucheb(x, -5.426367e-05, &tj, &tj1, &result, _state);
   13965           0 :     mannwhitneyu_ucheb(x, 1.039613e-04, &tj, &tj1, &result, _state);
   13966           0 :     mannwhitneyu_ucheb(x, 2.662378e-04, &tj, &tj1, &result, _state);
   13967           0 :     return result;
   13968             : }
   13969             : 
   13970             : 
   13971             : /*************************************************************************
   13972             : Tail(S, 5, 23)
   13973             : *************************************************************************/
   13974           0 : static double mannwhitneyu_utbln5n23(double s, ae_state *_state)
   13975             : {
   13976             :     double x;
   13977             :     double tj;
   13978             :     double tj1;
   13979             :     double result;
   13980             : 
   13981             : 
   13982           0 :     result = (double)(0);
   13983           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   13984           0 :     tj = (double)(1);
   13985           0 :     tj1 = x;
   13986           0 :     mannwhitneyu_ucheb(x, -3.849269e+00, &tj, &tj1, &result, _state);
   13987           0 :     mannwhitneyu_ucheb(x, -4.043761e+00, &tj, &tj1, &result, _state);
   13988           0 :     mannwhitneyu_ucheb(x, -1.052735e+00, &tj, &tj1, &result, _state);
   13989           0 :     mannwhitneyu_ucheb(x, -2.544683e-01, &tj, &tj1, &result, _state);
   13990           0 :     mannwhitneyu_ucheb(x, -9.517503e-02, &tj, &tj1, &result, _state);
   13991           0 :     mannwhitneyu_ucheb(x, -4.112082e-02, &tj, &tj1, &result, _state);
   13992           0 :     mannwhitneyu_ucheb(x, -1.782070e-02, &tj, &tj1, &result, _state);
   13993           0 :     mannwhitneyu_ucheb(x, -7.549483e-03, &tj, &tj1, &result, _state);
   13994           0 :     mannwhitneyu_ucheb(x, -3.747329e-03, &tj, &tj1, &result, _state);
   13995           0 :     mannwhitneyu_ucheb(x, -2.694263e-03, &tj, &tj1, &result, _state);
   13996           0 :     mannwhitneyu_ucheb(x, -2.147141e-03, &tj, &tj1, &result, _state);
   13997           0 :     mannwhitneyu_ucheb(x, -1.526209e-03, &tj, &tj1, &result, _state);
   13998           0 :     mannwhitneyu_ucheb(x, -1.039173e-03, &tj, &tj1, &result, _state);
   13999           0 :     mannwhitneyu_ucheb(x, -7.235615e-04, &tj, &tj1, &result, _state);
   14000           0 :     mannwhitneyu_ucheb(x, -4.656546e-04, &tj, &tj1, &result, _state);
   14001           0 :     mannwhitneyu_ucheb(x, -3.014423e-04, &tj, &tj1, &result, _state);
   14002           0 :     return result;
   14003             : }
   14004             : 
   14005             : 
   14006             : /*************************************************************************
   14007             : Tail(S, 5, 24)
   14008             : *************************************************************************/
   14009           0 : static double mannwhitneyu_utbln5n24(double s, ae_state *_state)
   14010             : {
   14011             :     double x;
   14012             :     double tj;
   14013             :     double tj1;
   14014             :     double result;
   14015             : 
   14016             : 
   14017           0 :     result = (double)(0);
   14018           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   14019           0 :     tj = (double)(1);
   14020           0 :     tj1 = x;
   14021           0 :     mannwhitneyu_ucheb(x, -3.848925e+00, &tj, &tj1, &result, _state);
   14022           0 :     mannwhitneyu_ucheb(x, -4.040178e+00, &tj, &tj1, &result, _state);
   14023           0 :     mannwhitneyu_ucheb(x, -1.048355e+00, &tj, &tj1, &result, _state);
   14024           0 :     mannwhitneyu_ucheb(x, -2.510198e-01, &tj, &tj1, &result, _state);
   14025           0 :     mannwhitneyu_ucheb(x, -9.261134e-02, &tj, &tj1, &result, _state);
   14026           0 :     mannwhitneyu_ucheb(x, -3.915864e-02, &tj, &tj1, &result, _state);
   14027           0 :     mannwhitneyu_ucheb(x, -1.627423e-02, &tj, &tj1, &result, _state);
   14028           0 :     mannwhitneyu_ucheb(x, -6.307345e-03, &tj, &tj1, &result, _state);
   14029           0 :     mannwhitneyu_ucheb(x, -2.732992e-03, &tj, &tj1, &result, _state);
   14030           0 :     mannwhitneyu_ucheb(x, -1.869652e-03, &tj, &tj1, &result, _state);
   14031           0 :     mannwhitneyu_ucheb(x, -1.494176e-03, &tj, &tj1, &result, _state);
   14032           0 :     mannwhitneyu_ucheb(x, -1.047533e-03, &tj, &tj1, &result, _state);
   14033           0 :     mannwhitneyu_ucheb(x, -7.178439e-04, &tj, &tj1, &result, _state);
   14034           0 :     mannwhitneyu_ucheb(x, -5.424171e-04, &tj, &tj1, &result, _state);
   14035           0 :     mannwhitneyu_ucheb(x, -3.829195e-04, &tj, &tj1, &result, _state);
   14036           0 :     mannwhitneyu_ucheb(x, -2.840810e-04, &tj, &tj1, &result, _state);
   14037           0 :     return result;
   14038             : }
   14039             : 
   14040             : 
   14041             : /*************************************************************************
   14042             : Tail(S, 5, 25)
   14043             : *************************************************************************/
   14044           0 : static double mannwhitneyu_utbln5n25(double s, ae_state *_state)
   14045             : {
   14046             :     double x;
   14047             :     double tj;
   14048             :     double tj1;
   14049             :     double result;
   14050             : 
   14051             : 
   14052           0 :     result = (double)(0);
   14053           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   14054           0 :     tj = (double)(1);
   14055           0 :     tj1 = x;
   14056           0 :     mannwhitneyu_ucheb(x, -3.848937e+00, &tj, &tj1, &result, _state);
   14057           0 :     mannwhitneyu_ucheb(x, -4.037512e+00, &tj, &tj1, &result, _state);
   14058           0 :     mannwhitneyu_ucheb(x, -1.044866e+00, &tj, &tj1, &result, _state);
   14059           0 :     mannwhitneyu_ucheb(x, -2.483269e-01, &tj, &tj1, &result, _state);
   14060           0 :     mannwhitneyu_ucheb(x, -9.063682e-02, &tj, &tj1, &result, _state);
   14061           0 :     mannwhitneyu_ucheb(x, -3.767778e-02, &tj, &tj1, &result, _state);
   14062           0 :     mannwhitneyu_ucheb(x, -1.508540e-02, &tj, &tj1, &result, _state);
   14063           0 :     mannwhitneyu_ucheb(x, -5.332756e-03, &tj, &tj1, &result, _state);
   14064           0 :     mannwhitneyu_ucheb(x, -1.881511e-03, &tj, &tj1, &result, _state);
   14065           0 :     mannwhitneyu_ucheb(x, -1.124041e-03, &tj, &tj1, &result, _state);
   14066           0 :     mannwhitneyu_ucheb(x, -8.368456e-04, &tj, &tj1, &result, _state);
   14067           0 :     mannwhitneyu_ucheb(x, -4.930499e-04, &tj, &tj1, &result, _state);
   14068           0 :     mannwhitneyu_ucheb(x, -2.779630e-04, &tj, &tj1, &result, _state);
   14069           0 :     mannwhitneyu_ucheb(x, -2.029528e-04, &tj, &tj1, &result, _state);
   14070           0 :     mannwhitneyu_ucheb(x, -1.658678e-04, &tj, &tj1, &result, _state);
   14071           0 :     mannwhitneyu_ucheb(x, -1.289695e-04, &tj, &tj1, &result, _state);
   14072           0 :     return result;
   14073             : }
   14074             : 
   14075             : 
   14076             : /*************************************************************************
   14077             : Tail(S, 5, 26)
   14078             : *************************************************************************/
   14079           0 : static double mannwhitneyu_utbln5n26(double s, ae_state *_state)
   14080             : {
   14081             :     double x;
   14082             :     double tj;
   14083             :     double tj1;
   14084             :     double result;
   14085             : 
   14086             : 
   14087           0 :     result = (double)(0);
   14088           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   14089           0 :     tj = (double)(1);
   14090           0 :     tj1 = x;
   14091           0 :     mannwhitneyu_ucheb(x, -3.849416e+00, &tj, &tj1, &result, _state);
   14092           0 :     mannwhitneyu_ucheb(x, -4.035915e+00, &tj, &tj1, &result, _state);
   14093           0 :     mannwhitneyu_ucheb(x, -1.042493e+00, &tj, &tj1, &result, _state);
   14094           0 :     mannwhitneyu_ucheb(x, -2.466021e-01, &tj, &tj1, &result, _state);
   14095           0 :     mannwhitneyu_ucheb(x, -8.956432e-02, &tj, &tj1, &result, _state);
   14096           0 :     mannwhitneyu_ucheb(x, -3.698914e-02, &tj, &tj1, &result, _state);
   14097           0 :     mannwhitneyu_ucheb(x, -1.465689e-02, &tj, &tj1, &result, _state);
   14098           0 :     mannwhitneyu_ucheb(x, -5.035254e-03, &tj, &tj1, &result, _state);
   14099           0 :     mannwhitneyu_ucheb(x, -1.674614e-03, &tj, &tj1, &result, _state);
   14100           0 :     mannwhitneyu_ucheb(x, -9.492734e-04, &tj, &tj1, &result, _state);
   14101           0 :     mannwhitneyu_ucheb(x, -7.014021e-04, &tj, &tj1, &result, _state);
   14102           0 :     mannwhitneyu_ucheb(x, -3.944953e-04, &tj, &tj1, &result, _state);
   14103           0 :     mannwhitneyu_ucheb(x, -2.255750e-04, &tj, &tj1, &result, _state);
   14104           0 :     mannwhitneyu_ucheb(x, -2.075841e-04, &tj, &tj1, &result, _state);
   14105           0 :     mannwhitneyu_ucheb(x, -1.989330e-04, &tj, &tj1, &result, _state);
   14106           0 :     mannwhitneyu_ucheb(x, -2.134862e-04, &tj, &tj1, &result, _state);
   14107           0 :     return result;
   14108             : }
   14109             : 
   14110             : 
   14111             : /*************************************************************************
   14112             : Tail(S, 5, 27)
   14113             : *************************************************************************/
   14114           0 : static double mannwhitneyu_utbln5n27(double s, ae_state *_state)
   14115             : {
   14116             :     double x;
   14117             :     double tj;
   14118             :     double tj1;
   14119             :     double result;
   14120             : 
   14121             : 
   14122           0 :     result = (double)(0);
   14123           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   14124           0 :     tj = (double)(1);
   14125           0 :     tj1 = x;
   14126           0 :     mannwhitneyu_ucheb(x, -3.850070e+00, &tj, &tj1, &result, _state);
   14127           0 :     mannwhitneyu_ucheb(x, -4.034815e+00, &tj, &tj1, &result, _state);
   14128           0 :     mannwhitneyu_ucheb(x, -1.040650e+00, &tj, &tj1, &result, _state);
   14129           0 :     mannwhitneyu_ucheb(x, -2.453117e-01, &tj, &tj1, &result, _state);
   14130           0 :     mannwhitneyu_ucheb(x, -8.886426e-02, &tj, &tj1, &result, _state);
   14131           0 :     mannwhitneyu_ucheb(x, -3.661702e-02, &tj, &tj1, &result, _state);
   14132           0 :     mannwhitneyu_ucheb(x, -1.452346e-02, &tj, &tj1, &result, _state);
   14133           0 :     mannwhitneyu_ucheb(x, -5.002476e-03, &tj, &tj1, &result, _state);
   14134           0 :     mannwhitneyu_ucheb(x, -1.720126e-03, &tj, &tj1, &result, _state);
   14135           0 :     mannwhitneyu_ucheb(x, -1.001400e-03, &tj, &tj1, &result, _state);
   14136           0 :     mannwhitneyu_ucheb(x, -7.729826e-04, &tj, &tj1, &result, _state);
   14137           0 :     mannwhitneyu_ucheb(x, -4.740640e-04, &tj, &tj1, &result, _state);
   14138           0 :     mannwhitneyu_ucheb(x, -3.206333e-04, &tj, &tj1, &result, _state);
   14139           0 :     mannwhitneyu_ucheb(x, -3.366093e-04, &tj, &tj1, &result, _state);
   14140           0 :     mannwhitneyu_ucheb(x, -3.193471e-04, &tj, &tj1, &result, _state);
   14141           0 :     mannwhitneyu_ucheb(x, -3.804091e-04, &tj, &tj1, &result, _state);
   14142           0 :     return result;
   14143             : }
   14144             : 
   14145             : 
   14146             : /*************************************************************************
   14147             : Tail(S, 5, 28)
   14148             : *************************************************************************/
   14149           0 : static double mannwhitneyu_utbln5n28(double s, ae_state *_state)
   14150             : {
   14151             :     double x;
   14152             :     double tj;
   14153             :     double tj1;
   14154             :     double result;
   14155             : 
   14156             : 
   14157           0 :     result = (double)(0);
   14158           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   14159           0 :     tj = (double)(1);
   14160           0 :     tj1 = x;
   14161           0 :     mannwhitneyu_ucheb(x, -3.850668e+00, &tj, &tj1, &result, _state);
   14162           0 :     mannwhitneyu_ucheb(x, -4.033786e+00, &tj, &tj1, &result, _state);
   14163           0 :     mannwhitneyu_ucheb(x, -1.038853e+00, &tj, &tj1, &result, _state);
   14164           0 :     mannwhitneyu_ucheb(x, -2.440281e-01, &tj, &tj1, &result, _state);
   14165           0 :     mannwhitneyu_ucheb(x, -8.806020e-02, &tj, &tj1, &result, _state);
   14166           0 :     mannwhitneyu_ucheb(x, -3.612883e-02, &tj, &tj1, &result, _state);
   14167           0 :     mannwhitneyu_ucheb(x, -1.420436e-02, &tj, &tj1, &result, _state);
   14168           0 :     mannwhitneyu_ucheb(x, -4.787982e-03, &tj, &tj1, &result, _state);
   14169           0 :     mannwhitneyu_ucheb(x, -1.535230e-03, &tj, &tj1, &result, _state);
   14170           0 :     mannwhitneyu_ucheb(x, -8.263121e-04, &tj, &tj1, &result, _state);
   14171           0 :     mannwhitneyu_ucheb(x, -5.849609e-04, &tj, &tj1, &result, _state);
   14172           0 :     mannwhitneyu_ucheb(x, -2.863967e-04, &tj, &tj1, &result, _state);
   14173           0 :     mannwhitneyu_ucheb(x, -1.391610e-04, &tj, &tj1, &result, _state);
   14174           0 :     mannwhitneyu_ucheb(x, -1.720294e-04, &tj, &tj1, &result, _state);
   14175           0 :     mannwhitneyu_ucheb(x, -1.952273e-04, &tj, &tj1, &result, _state);
   14176           0 :     mannwhitneyu_ucheb(x, -2.901413e-04, &tj, &tj1, &result, _state);
   14177           0 :     return result;
   14178             : }
   14179             : 
   14180             : 
   14181             : /*************************************************************************
   14182             : Tail(S, 5, 29)
   14183             : *************************************************************************/
   14184           0 : static double mannwhitneyu_utbln5n29(double s, ae_state *_state)
   14185             : {
   14186             :     double x;
   14187             :     double tj;
   14188             :     double tj1;
   14189             :     double result;
   14190             : 
   14191             : 
   14192           0 :     result = (double)(0);
   14193           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   14194           0 :     tj = (double)(1);
   14195           0 :     tj1 = x;
   14196           0 :     mannwhitneyu_ucheb(x, -3.851217e+00, &tj, &tj1, &result, _state);
   14197           0 :     mannwhitneyu_ucheb(x, -4.032834e+00, &tj, &tj1, &result, _state);
   14198           0 :     mannwhitneyu_ucheb(x, -1.037113e+00, &tj, &tj1, &result, _state);
   14199           0 :     mannwhitneyu_ucheb(x, -2.427762e-01, &tj, &tj1, &result, _state);
   14200           0 :     mannwhitneyu_ucheb(x, -8.719146e-02, &tj, &tj1, &result, _state);
   14201           0 :     mannwhitneyu_ucheb(x, -3.557172e-02, &tj, &tj1, &result, _state);
   14202           0 :     mannwhitneyu_ucheb(x, -1.375498e-02, &tj, &tj1, &result, _state);
   14203           0 :     mannwhitneyu_ucheb(x, -4.452033e-03, &tj, &tj1, &result, _state);
   14204           0 :     mannwhitneyu_ucheb(x, -1.187516e-03, &tj, &tj1, &result, _state);
   14205           0 :     mannwhitneyu_ucheb(x, -4.916936e-04, &tj, &tj1, &result, _state);
   14206           0 :     mannwhitneyu_ucheb(x, -2.065533e-04, &tj, &tj1, &result, _state);
   14207           0 :     mannwhitneyu_ucheb(x, 1.067301e-04, &tj, &tj1, &result, _state);
   14208           0 :     mannwhitneyu_ucheb(x, 2.615824e-04, &tj, &tj1, &result, _state);
   14209           0 :     mannwhitneyu_ucheb(x, 2.432244e-04, &tj, &tj1, &result, _state);
   14210           0 :     mannwhitneyu_ucheb(x, 1.417795e-04, &tj, &tj1, &result, _state);
   14211           0 :     mannwhitneyu_ucheb(x, 4.710038e-05, &tj, &tj1, &result, _state);
   14212           0 :     return result;
   14213             : }
   14214             : 
   14215             : 
   14216             : /*************************************************************************
   14217             : Tail(S, 5, 30)
   14218             : *************************************************************************/
   14219           0 : static double mannwhitneyu_utbln5n30(double s, ae_state *_state)
   14220             : {
   14221             :     double x;
   14222             :     double tj;
   14223             :     double tj1;
   14224             :     double result;
   14225             : 
   14226             : 
   14227           0 :     result = (double)(0);
   14228           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   14229           0 :     tj = (double)(1);
   14230           0 :     tj1 = x;
   14231           0 :     mannwhitneyu_ucheb(x, -3.851845e+00, &tj, &tj1, &result, _state);
   14232           0 :     mannwhitneyu_ucheb(x, -4.032148e+00, &tj, &tj1, &result, _state);
   14233           0 :     mannwhitneyu_ucheb(x, -1.035679e+00, &tj, &tj1, &result, _state);
   14234           0 :     mannwhitneyu_ucheb(x, -2.417758e-01, &tj, &tj1, &result, _state);
   14235           0 :     mannwhitneyu_ucheb(x, -8.655330e-02, &tj, &tj1, &result, _state);
   14236           0 :     mannwhitneyu_ucheb(x, -3.522132e-02, &tj, &tj1, &result, _state);
   14237           0 :     mannwhitneyu_ucheb(x, -1.352106e-02, &tj, &tj1, &result, _state);
   14238           0 :     mannwhitneyu_ucheb(x, -4.326911e-03, &tj, &tj1, &result, _state);
   14239           0 :     mannwhitneyu_ucheb(x, -1.064969e-03, &tj, &tj1, &result, _state);
   14240           0 :     mannwhitneyu_ucheb(x, -3.813321e-04, &tj, &tj1, &result, _state);
   14241           0 :     mannwhitneyu_ucheb(x, -5.683881e-05, &tj, &tj1, &result, _state);
   14242           0 :     mannwhitneyu_ucheb(x, 2.813346e-04, &tj, &tj1, &result, _state);
   14243           0 :     mannwhitneyu_ucheb(x, 4.627085e-04, &tj, &tj1, &result, _state);
   14244           0 :     mannwhitneyu_ucheb(x, 4.832107e-04, &tj, &tj1, &result, _state);
   14245           0 :     mannwhitneyu_ucheb(x, 3.519336e-04, &tj, &tj1, &result, _state);
   14246           0 :     mannwhitneyu_ucheb(x, 2.888530e-04, &tj, &tj1, &result, _state);
   14247           0 :     return result;
   14248             : }
   14249             : 
   14250             : 
   14251             : /*************************************************************************
   14252             : Tail(S, 5, 100)
   14253             : *************************************************************************/
   14254           0 : static double mannwhitneyu_utbln5n100(double s, ae_state *_state)
   14255             : {
   14256             :     double x;
   14257             :     double tj;
   14258             :     double tj1;
   14259             :     double result;
   14260             : 
   14261             : 
   14262           0 :     result = (double)(0);
   14263           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.250000e+00-1, 1.0, _state);
   14264           0 :     tj = (double)(1);
   14265           0 :     tj1 = x;
   14266           0 :     mannwhitneyu_ucheb(x, -3.877940e+00, &tj, &tj1, &result, _state);
   14267           0 :     mannwhitneyu_ucheb(x, -4.039324e+00, &tj, &tj1, &result, _state);
   14268           0 :     mannwhitneyu_ucheb(x, -1.022243e+00, &tj, &tj1, &result, _state);
   14269           0 :     mannwhitneyu_ucheb(x, -2.305825e-01, &tj, &tj1, &result, _state);
   14270           0 :     mannwhitneyu_ucheb(x, -7.960119e-02, &tj, &tj1, &result, _state);
   14271           0 :     mannwhitneyu_ucheb(x, -3.112000e-02, &tj, &tj1, &result, _state);
   14272           0 :     mannwhitneyu_ucheb(x, -1.138868e-02, &tj, &tj1, &result, _state);
   14273           0 :     mannwhitneyu_ucheb(x, -3.418164e-03, &tj, &tj1, &result, _state);
   14274           0 :     mannwhitneyu_ucheb(x, -9.174520e-04, &tj, &tj1, &result, _state);
   14275           0 :     mannwhitneyu_ucheb(x, -5.489617e-04, &tj, &tj1, &result, _state);
   14276           0 :     mannwhitneyu_ucheb(x, -3.878301e-04, &tj, &tj1, &result, _state);
   14277           0 :     mannwhitneyu_ucheb(x, -1.302233e-04, &tj, &tj1, &result, _state);
   14278           0 :     mannwhitneyu_ucheb(x, 1.054113e-05, &tj, &tj1, &result, _state);
   14279           0 :     mannwhitneyu_ucheb(x, 2.458862e-05, &tj, &tj1, &result, _state);
   14280           0 :     mannwhitneyu_ucheb(x, -4.186591e-06, &tj, &tj1, &result, _state);
   14281           0 :     mannwhitneyu_ucheb(x, -2.623412e-05, &tj, &tj1, &result, _state);
   14282           0 :     return result;
   14283             : }
   14284             : 
   14285             : 
   14286             : /*************************************************************************
   14287             : Tail(S, 6, 6)
   14288             : *************************************************************************/
   14289           0 : static double mannwhitneyu_utbln6n6(double s, ae_state *_state)
   14290             : {
   14291             :     double x;
   14292             :     double tj;
   14293             :     double tj1;
   14294             :     double result;
   14295             : 
   14296             : 
   14297           0 :     result = (double)(0);
   14298           0 :     x = ae_minreal(2*(s-0.000000e+00)/2.882307e+00-1, 1.0, _state);
   14299           0 :     tj = (double)(1);
   14300           0 :     tj1 = x;
   14301           0 :     mannwhitneyu_ucheb(x, -3.054075e+00, &tj, &tj1, &result, _state);
   14302           0 :     mannwhitneyu_ucheb(x, -2.998804e+00, &tj, &tj1, &result, _state);
   14303           0 :     mannwhitneyu_ucheb(x, -6.681518e-01, &tj, &tj1, &result, _state);
   14304           0 :     mannwhitneyu_ucheb(x, -1.067578e-01, &tj, &tj1, &result, _state);
   14305           0 :     mannwhitneyu_ucheb(x, -1.709435e-02, &tj, &tj1, &result, _state);
   14306           0 :     mannwhitneyu_ucheb(x, 9.952661e-04, &tj, &tj1, &result, _state);
   14307           0 :     mannwhitneyu_ucheb(x, 3.641700e-03, &tj, &tj1, &result, _state);
   14308           0 :     mannwhitneyu_ucheb(x, 2.304572e-03, &tj, &tj1, &result, _state);
   14309           0 :     mannwhitneyu_ucheb(x, 3.336275e-03, &tj, &tj1, &result, _state);
   14310           0 :     mannwhitneyu_ucheb(x, 4.770385e-03, &tj, &tj1, &result, _state);
   14311           0 :     mannwhitneyu_ucheb(x, 5.401891e-03, &tj, &tj1, &result, _state);
   14312           0 :     mannwhitneyu_ucheb(x, 2.246148e-03, &tj, &tj1, &result, _state);
   14313           0 :     mannwhitneyu_ucheb(x, -1.442663e-03, &tj, &tj1, &result, _state);
   14314           0 :     mannwhitneyu_ucheb(x, -2.502866e-03, &tj, &tj1, &result, _state);
   14315           0 :     mannwhitneyu_ucheb(x, -2.105855e-03, &tj, &tj1, &result, _state);
   14316           0 :     mannwhitneyu_ucheb(x, -4.739371e-04, &tj, &tj1, &result, _state);
   14317           0 :     return result;
   14318             : }
   14319             : 
   14320             : 
   14321             : /*************************************************************************
   14322             : Tail(S, 6, 7)
   14323             : *************************************************************************/
   14324           0 : static double mannwhitneyu_utbln6n7(double s, ae_state *_state)
   14325             : {
   14326             :     double x;
   14327             :     double tj;
   14328             :     double tj1;
   14329             :     double result;
   14330             : 
   14331             : 
   14332           0 :     result = (double)(0);
   14333           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.000000e+00-1, 1.0, _state);
   14334           0 :     tj = (double)(1);
   14335           0 :     tj1 = x;
   14336           0 :     mannwhitneyu_ucheb(x, -3.265287e+00, &tj, &tj1, &result, _state);
   14337           0 :     mannwhitneyu_ucheb(x, -3.274613e+00, &tj, &tj1, &result, _state);
   14338           0 :     mannwhitneyu_ucheb(x, -7.582352e-01, &tj, &tj1, &result, _state);
   14339           0 :     mannwhitneyu_ucheb(x, -1.334293e-01, &tj, &tj1, &result, _state);
   14340           0 :     mannwhitneyu_ucheb(x, -2.915502e-02, &tj, &tj1, &result, _state);
   14341           0 :     mannwhitneyu_ucheb(x, -4.108091e-03, &tj, &tj1, &result, _state);
   14342           0 :     mannwhitneyu_ucheb(x, 1.546701e-03, &tj, &tj1, &result, _state);
   14343           0 :     mannwhitneyu_ucheb(x, 2.298827e-03, &tj, &tj1, &result, _state);
   14344           0 :     mannwhitneyu_ucheb(x, 2.891501e-03, &tj, &tj1, &result, _state);
   14345           0 :     mannwhitneyu_ucheb(x, 4.313717e-03, &tj, &tj1, &result, _state);
   14346           0 :     mannwhitneyu_ucheb(x, 4.989501e-03, &tj, &tj1, &result, _state);
   14347           0 :     mannwhitneyu_ucheb(x, 3.914594e-03, &tj, &tj1, &result, _state);
   14348           0 :     mannwhitneyu_ucheb(x, 1.062372e-03, &tj, &tj1, &result, _state);
   14349           0 :     mannwhitneyu_ucheb(x, -1.158841e-03, &tj, &tj1, &result, _state);
   14350           0 :     mannwhitneyu_ucheb(x, -1.596443e-03, &tj, &tj1, &result, _state);
   14351           0 :     mannwhitneyu_ucheb(x, -1.185662e-03, &tj, &tj1, &result, _state);
   14352           0 :     return result;
   14353             : }
   14354             : 
   14355             : 
   14356             : /*************************************************************************
   14357             : Tail(S, 6, 8)
   14358             : *************************************************************************/
   14359           0 : static double mannwhitneyu_utbln6n8(double s, ae_state *_state)
   14360             : {
   14361             :     double x;
   14362             :     double tj;
   14363             :     double tj1;
   14364             :     double result;
   14365             : 
   14366             : 
   14367           0 :     result = (double)(0);
   14368           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.098387e+00-1, 1.0, _state);
   14369           0 :     tj = (double)(1);
   14370           0 :     tj1 = x;
   14371           0 :     mannwhitneyu_ucheb(x, -3.450954e+00, &tj, &tj1, &result, _state);
   14372           0 :     mannwhitneyu_ucheb(x, -3.520462e+00, &tj, &tj1, &result, _state);
   14373           0 :     mannwhitneyu_ucheb(x, -8.420299e-01, &tj, &tj1, &result, _state);
   14374           0 :     mannwhitneyu_ucheb(x, -1.604853e-01, &tj, &tj1, &result, _state);
   14375           0 :     mannwhitneyu_ucheb(x, -4.165840e-02, &tj, &tj1, &result, _state);
   14376           0 :     mannwhitneyu_ucheb(x, -1.008756e-02, &tj, &tj1, &result, _state);
   14377           0 :     mannwhitneyu_ucheb(x, -6.723402e-04, &tj, &tj1, &result, _state);
   14378           0 :     mannwhitneyu_ucheb(x, 1.843521e-03, &tj, &tj1, &result, _state);
   14379           0 :     mannwhitneyu_ucheb(x, 2.883405e-03, &tj, &tj1, &result, _state);
   14380           0 :     mannwhitneyu_ucheb(x, 3.720980e-03, &tj, &tj1, &result, _state);
   14381           0 :     mannwhitneyu_ucheb(x, 4.301709e-03, &tj, &tj1, &result, _state);
   14382           0 :     mannwhitneyu_ucheb(x, 3.948034e-03, &tj, &tj1, &result, _state);
   14383           0 :     mannwhitneyu_ucheb(x, 2.776243e-03, &tj, &tj1, &result, _state);
   14384           0 :     mannwhitneyu_ucheb(x, 8.623736e-04, &tj, &tj1, &result, _state);
   14385           0 :     mannwhitneyu_ucheb(x, -3.742068e-04, &tj, &tj1, &result, _state);
   14386           0 :     mannwhitneyu_ucheb(x, -9.796927e-04, &tj, &tj1, &result, _state);
   14387           0 :     return result;
   14388             : }
   14389             : 
   14390             : 
   14391             : /*************************************************************************
   14392             : Tail(S, 6, 9)
   14393             : *************************************************************************/
   14394           0 : static double mannwhitneyu_utbln6n9(double s, ae_state *_state)
   14395             : {
   14396             :     double x;
   14397             :     double tj;
   14398             :     double tj1;
   14399             :     double result;
   14400             : 
   14401             : 
   14402           0 :     result = (double)(0);
   14403           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.181981e+00-1, 1.0, _state);
   14404           0 :     tj = (double)(1);
   14405           0 :     tj1 = x;
   14406           0 :     mannwhitneyu_ucheb(x, -3.616113e+00, &tj, &tj1, &result, _state);
   14407           0 :     mannwhitneyu_ucheb(x, -3.741650e+00, &tj, &tj1, &result, _state);
   14408           0 :     mannwhitneyu_ucheb(x, -9.204487e-01, &tj, &tj1, &result, _state);
   14409           0 :     mannwhitneyu_ucheb(x, -1.873068e-01, &tj, &tj1, &result, _state);
   14410           0 :     mannwhitneyu_ucheb(x, -5.446794e-02, &tj, &tj1, &result, _state);
   14411           0 :     mannwhitneyu_ucheb(x, -1.632286e-02, &tj, &tj1, &result, _state);
   14412           0 :     mannwhitneyu_ucheb(x, -3.266481e-03, &tj, &tj1, &result, _state);
   14413           0 :     mannwhitneyu_ucheb(x, 1.280067e-03, &tj, &tj1, &result, _state);
   14414           0 :     mannwhitneyu_ucheb(x, 2.780687e-03, &tj, &tj1, &result, _state);
   14415           0 :     mannwhitneyu_ucheb(x, 3.480242e-03, &tj, &tj1, &result, _state);
   14416           0 :     mannwhitneyu_ucheb(x, 3.592200e-03, &tj, &tj1, &result, _state);
   14417           0 :     mannwhitneyu_ucheb(x, 3.581019e-03, &tj, &tj1, &result, _state);
   14418           0 :     mannwhitneyu_ucheb(x, 3.264231e-03, &tj, &tj1, &result, _state);
   14419           0 :     mannwhitneyu_ucheb(x, 2.347174e-03, &tj, &tj1, &result, _state);
   14420           0 :     mannwhitneyu_ucheb(x, 1.167535e-03, &tj, &tj1, &result, _state);
   14421           0 :     mannwhitneyu_ucheb(x, -1.092185e-04, &tj, &tj1, &result, _state);
   14422           0 :     return result;
   14423             : }
   14424             : 
   14425             : 
   14426             : /*************************************************************************
   14427             : Tail(S, 6, 10)
   14428             : *************************************************************************/
   14429           0 : static double mannwhitneyu_utbln6n10(double s, ae_state *_state)
   14430             : {
   14431             :     double x;
   14432             :     double tj;
   14433             :     double tj1;
   14434             :     double result;
   14435             : 
   14436             : 
   14437           0 :     result = (double)(0);
   14438           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.253957e+00-1, 1.0, _state);
   14439           0 :     tj = (double)(1);
   14440           0 :     tj1 = x;
   14441           0 :     mannwhitneyu_ucheb(x, -3.764382e+00, &tj, &tj1, &result, _state);
   14442           0 :     mannwhitneyu_ucheb(x, -3.942366e+00, &tj, &tj1, &result, _state);
   14443           0 :     mannwhitneyu_ucheb(x, -9.939896e-01, &tj, &tj1, &result, _state);
   14444           0 :     mannwhitneyu_ucheb(x, -2.137812e-01, &tj, &tj1, &result, _state);
   14445           0 :     mannwhitneyu_ucheb(x, -6.720270e-02, &tj, &tj1, &result, _state);
   14446           0 :     mannwhitneyu_ucheb(x, -2.281070e-02, &tj, &tj1, &result, _state);
   14447           0 :     mannwhitneyu_ucheb(x, -5.901060e-03, &tj, &tj1, &result, _state);
   14448           0 :     mannwhitneyu_ucheb(x, 3.824937e-04, &tj, &tj1, &result, _state);
   14449           0 :     mannwhitneyu_ucheb(x, 2.802812e-03, &tj, &tj1, &result, _state);
   14450           0 :     mannwhitneyu_ucheb(x, 3.258132e-03, &tj, &tj1, &result, _state);
   14451           0 :     mannwhitneyu_ucheb(x, 3.233536e-03, &tj, &tj1, &result, _state);
   14452           0 :     mannwhitneyu_ucheb(x, 3.085530e-03, &tj, &tj1, &result, _state);
   14453           0 :     mannwhitneyu_ucheb(x, 3.212151e-03, &tj, &tj1, &result, _state);
   14454           0 :     mannwhitneyu_ucheb(x, 3.001329e-03, &tj, &tj1, &result, _state);
   14455           0 :     mannwhitneyu_ucheb(x, 2.226048e-03, &tj, &tj1, &result, _state);
   14456           0 :     mannwhitneyu_ucheb(x, 1.035298e-03, &tj, &tj1, &result, _state);
   14457           0 :     return result;
   14458             : }
   14459             : 
   14460             : 
   14461             : /*************************************************************************
   14462             : Tail(S, 6, 11)
   14463             : *************************************************************************/
   14464           0 : static double mannwhitneyu_utbln6n11(double s, ae_state *_state)
   14465             : {
   14466             :     double x;
   14467             :     double tj;
   14468             :     double tj1;
   14469             :     double result;
   14470             : 
   14471             : 
   14472           0 :     result = (double)(0);
   14473           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.316625e+00-1, 1.0, _state);
   14474           0 :     tj = (double)(1);
   14475           0 :     tj1 = x;
   14476           0 :     mannwhitneyu_ucheb(x, -3.898597e+00, &tj, &tj1, &result, _state);
   14477           0 :     mannwhitneyu_ucheb(x, -4.125710e+00, &tj, &tj1, &result, _state);
   14478           0 :     mannwhitneyu_ucheb(x, -1.063297e+00, &tj, &tj1, &result, _state);
   14479           0 :     mannwhitneyu_ucheb(x, -2.396852e-01, &tj, &tj1, &result, _state);
   14480           0 :     mannwhitneyu_ucheb(x, -7.990126e-02, &tj, &tj1, &result, _state);
   14481           0 :     mannwhitneyu_ucheb(x, -2.927977e-02, &tj, &tj1, &result, _state);
   14482           0 :     mannwhitneyu_ucheb(x, -8.726500e-03, &tj, &tj1, &result, _state);
   14483           0 :     mannwhitneyu_ucheb(x, -5.858745e-04, &tj, &tj1, &result, _state);
   14484           0 :     mannwhitneyu_ucheb(x, 2.654590e-03, &tj, &tj1, &result, _state);
   14485           0 :     mannwhitneyu_ucheb(x, 3.217736e-03, &tj, &tj1, &result, _state);
   14486           0 :     mannwhitneyu_ucheb(x, 2.989770e-03, &tj, &tj1, &result, _state);
   14487           0 :     mannwhitneyu_ucheb(x, 2.768493e-03, &tj, &tj1, &result, _state);
   14488           0 :     mannwhitneyu_ucheb(x, 2.924364e-03, &tj, &tj1, &result, _state);
   14489           0 :     mannwhitneyu_ucheb(x, 3.140215e-03, &tj, &tj1, &result, _state);
   14490           0 :     mannwhitneyu_ucheb(x, 2.647914e-03, &tj, &tj1, &result, _state);
   14491           0 :     mannwhitneyu_ucheb(x, 1.924802e-03, &tj, &tj1, &result, _state);
   14492           0 :     return result;
   14493             : }
   14494             : 
   14495             : 
   14496             : /*************************************************************************
   14497             : Tail(S, 6, 12)
   14498             : *************************************************************************/
   14499           0 : static double mannwhitneyu_utbln6n12(double s, ae_state *_state)
   14500             : {
   14501             :     double x;
   14502             :     double tj;
   14503             :     double tj1;
   14504             :     double result;
   14505             : 
   14506             : 
   14507           0 :     result = (double)(0);
   14508           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.371709e+00-1, 1.0, _state);
   14509           0 :     tj = (double)(1);
   14510           0 :     tj1 = x;
   14511           0 :     mannwhitneyu_ucheb(x, -4.020941e+00, &tj, &tj1, &result, _state);
   14512           0 :     mannwhitneyu_ucheb(x, -4.294250e+00, &tj, &tj1, &result, _state);
   14513           0 :     mannwhitneyu_ucheb(x, -1.128842e+00, &tj, &tj1, &result, _state);
   14514           0 :     mannwhitneyu_ucheb(x, -2.650389e-01, &tj, &tj1, &result, _state);
   14515           0 :     mannwhitneyu_ucheb(x, -9.248611e-02, &tj, &tj1, &result, _state);
   14516           0 :     mannwhitneyu_ucheb(x, -3.578510e-02, &tj, &tj1, &result, _state);
   14517           0 :     mannwhitneyu_ucheb(x, -1.162852e-02, &tj, &tj1, &result, _state);
   14518           0 :     mannwhitneyu_ucheb(x, -1.746982e-03, &tj, &tj1, &result, _state);
   14519           0 :     mannwhitneyu_ucheb(x, 2.454209e-03, &tj, &tj1, &result, _state);
   14520           0 :     mannwhitneyu_ucheb(x, 3.128042e-03, &tj, &tj1, &result, _state);
   14521           0 :     mannwhitneyu_ucheb(x, 2.936650e-03, &tj, &tj1, &result, _state);
   14522           0 :     mannwhitneyu_ucheb(x, 2.530794e-03, &tj, &tj1, &result, _state);
   14523           0 :     mannwhitneyu_ucheb(x, 2.665192e-03, &tj, &tj1, &result, _state);
   14524           0 :     mannwhitneyu_ucheb(x, 2.994144e-03, &tj, &tj1, &result, _state);
   14525           0 :     mannwhitneyu_ucheb(x, 2.662249e-03, &tj, &tj1, &result, _state);
   14526           0 :     mannwhitneyu_ucheb(x, 2.368541e-03, &tj, &tj1, &result, _state);
   14527           0 :     return result;
   14528             : }
   14529             : 
   14530             : 
   14531             : /*************************************************************************
   14532             : Tail(S, 6, 13)
   14533             : *************************************************************************/
   14534           0 : static double mannwhitneyu_utbln6n13(double s, ae_state *_state)
   14535             : {
   14536             :     double x;
   14537             :     double tj;
   14538             :     double tj1;
   14539             :     double result;
   14540             : 
   14541             : 
   14542           0 :     result = (double)(0);
   14543           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.420526e+00-1, 1.0, _state);
   14544           0 :     tj = (double)(1);
   14545           0 :     tj1 = x;
   14546           0 :     mannwhitneyu_ucheb(x, -4.133167e+00, &tj, &tj1, &result, _state);
   14547           0 :     mannwhitneyu_ucheb(x, -4.450016e+00, &tj, &tj1, &result, _state);
   14548           0 :     mannwhitneyu_ucheb(x, -1.191088e+00, &tj, &tj1, &result, _state);
   14549           0 :     mannwhitneyu_ucheb(x, -2.898220e-01, &tj, &tj1, &result, _state);
   14550           0 :     mannwhitneyu_ucheb(x, -1.050249e-01, &tj, &tj1, &result, _state);
   14551           0 :     mannwhitneyu_ucheb(x, -4.226901e-02, &tj, &tj1, &result, _state);
   14552           0 :     mannwhitneyu_ucheb(x, -1.471113e-02, &tj, &tj1, &result, _state);
   14553           0 :     mannwhitneyu_ucheb(x, -3.007470e-03, &tj, &tj1, &result, _state);
   14554           0 :     mannwhitneyu_ucheb(x, 2.049420e-03, &tj, &tj1, &result, _state);
   14555           0 :     mannwhitneyu_ucheb(x, 3.059074e-03, &tj, &tj1, &result, _state);
   14556           0 :     mannwhitneyu_ucheb(x, 2.881249e-03, &tj, &tj1, &result, _state);
   14557           0 :     mannwhitneyu_ucheb(x, 2.452780e-03, &tj, &tj1, &result, _state);
   14558           0 :     mannwhitneyu_ucheb(x, 2.441805e-03, &tj, &tj1, &result, _state);
   14559           0 :     mannwhitneyu_ucheb(x, 2.787493e-03, &tj, &tj1, &result, _state);
   14560           0 :     mannwhitneyu_ucheb(x, 2.483957e-03, &tj, &tj1, &result, _state);
   14561           0 :     mannwhitneyu_ucheb(x, 2.481590e-03, &tj, &tj1, &result, _state);
   14562           0 :     return result;
   14563             : }
   14564             : 
   14565             : 
   14566             : /*************************************************************************
   14567             : Tail(S, 6, 14)
   14568             : *************************************************************************/
   14569           0 : static double mannwhitneyu_utbln6n14(double s, ae_state *_state)
   14570             : {
   14571             :     double x;
   14572             :     double tj;
   14573             :     double tj1;
   14574             :     double result;
   14575             : 
   14576             : 
   14577           0 :     result = (double)(0);
   14578           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.450000e+00-1, 1.0, _state);
   14579           0 :     tj = (double)(1);
   14580           0 :     tj1 = x;
   14581           0 :     mannwhitneyu_ucheb(x, -4.201268e+00, &tj, &tj1, &result, _state);
   14582           0 :     mannwhitneyu_ucheb(x, -4.542568e+00, &tj, &tj1, &result, _state);
   14583           0 :     mannwhitneyu_ucheb(x, -1.226965e+00, &tj, &tj1, &result, _state);
   14584           0 :     mannwhitneyu_ucheb(x, -3.046029e-01, &tj, &tj1, &result, _state);
   14585           0 :     mannwhitneyu_ucheb(x, -1.136657e-01, &tj, &tj1, &result, _state);
   14586           0 :     mannwhitneyu_ucheb(x, -4.786757e-02, &tj, &tj1, &result, _state);
   14587           0 :     mannwhitneyu_ucheb(x, -1.843748e-02, &tj, &tj1, &result, _state);
   14588           0 :     mannwhitneyu_ucheb(x, -5.588022e-03, &tj, &tj1, &result, _state);
   14589           0 :     mannwhitneyu_ucheb(x, 2.253029e-04, &tj, &tj1, &result, _state);
   14590           0 :     mannwhitneyu_ucheb(x, 1.667188e-03, &tj, &tj1, &result, _state);
   14591           0 :     mannwhitneyu_ucheb(x, 1.788330e-03, &tj, &tj1, &result, _state);
   14592           0 :     mannwhitneyu_ucheb(x, 1.474545e-03, &tj, &tj1, &result, _state);
   14593           0 :     mannwhitneyu_ucheb(x, 1.540494e-03, &tj, &tj1, &result, _state);
   14594           0 :     mannwhitneyu_ucheb(x, 1.951188e-03, &tj, &tj1, &result, _state);
   14595           0 :     mannwhitneyu_ucheb(x, 1.863323e-03, &tj, &tj1, &result, _state);
   14596           0 :     mannwhitneyu_ucheb(x, 2.220904e-03, &tj, &tj1, &result, _state);
   14597           0 :     return result;
   14598             : }
   14599             : 
   14600             : 
   14601             : /*************************************************************************
   14602             : Tail(S, 6, 15)
   14603             : *************************************************************************/
   14604           0 : static double mannwhitneyu_utbln6n15(double s, ae_state *_state)
   14605             : {
   14606             :     double x;
   14607             :     double tj;
   14608             :     double tj1;
   14609             :     double result;
   14610             : 
   14611             : 
   14612           0 :     result = (double)(0);
   14613           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.450000e+00-1, 1.0, _state);
   14614           0 :     tj = (double)(1);
   14615           0 :     tj1 = x;
   14616           0 :     mannwhitneyu_ucheb(x, -4.195689e+00, &tj, &tj1, &result, _state);
   14617           0 :     mannwhitneyu_ucheb(x, -4.526567e+00, &tj, &tj1, &result, _state);
   14618           0 :     mannwhitneyu_ucheb(x, -1.213617e+00, &tj, &tj1, &result, _state);
   14619           0 :     mannwhitneyu_ucheb(x, -2.975035e-01, &tj, &tj1, &result, _state);
   14620           0 :     mannwhitneyu_ucheb(x, -1.118480e-01, &tj, &tj1, &result, _state);
   14621           0 :     mannwhitneyu_ucheb(x, -4.859142e-02, &tj, &tj1, &result, _state);
   14622           0 :     mannwhitneyu_ucheb(x, -2.083312e-02, &tj, &tj1, &result, _state);
   14623           0 :     mannwhitneyu_ucheb(x, -8.298720e-03, &tj, &tj1, &result, _state);
   14624           0 :     mannwhitneyu_ucheb(x, -2.766708e-03, &tj, &tj1, &result, _state);
   14625           0 :     mannwhitneyu_ucheb(x, -1.026356e-03, &tj, &tj1, &result, _state);
   14626           0 :     mannwhitneyu_ucheb(x, -9.093113e-04, &tj, &tj1, &result, _state);
   14627           0 :     mannwhitneyu_ucheb(x, -1.135168e-03, &tj, &tj1, &result, _state);
   14628           0 :     mannwhitneyu_ucheb(x, -1.136376e-03, &tj, &tj1, &result, _state);
   14629           0 :     mannwhitneyu_ucheb(x, -8.190870e-04, &tj, &tj1, &result, _state);
   14630           0 :     mannwhitneyu_ucheb(x, -4.435972e-04, &tj, &tj1, &result, _state);
   14631           0 :     mannwhitneyu_ucheb(x, 1.413129e-04, &tj, &tj1, &result, _state);
   14632           0 :     return result;
   14633             : }
   14634             : 
   14635             : 
   14636             : /*************************************************************************
   14637             : Tail(S, 6, 30)
   14638             : *************************************************************************/
   14639           0 : static double mannwhitneyu_utbln6n30(double s, ae_state *_state)
   14640             : {
   14641             :     double x;
   14642             :     double tj;
   14643             :     double tj1;
   14644             :     double result;
   14645             : 
   14646             : 
   14647           0 :     result = (double)(0);
   14648           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.450000e+00-1, 1.0, _state);
   14649           0 :     tj = (double)(1);
   14650           0 :     tj1 = x;
   14651           0 :     mannwhitneyu_ucheb(x, -4.166269e+00, &tj, &tj1, &result, _state);
   14652           0 :     mannwhitneyu_ucheb(x, -4.427399e+00, &tj, &tj1, &result, _state);
   14653           0 :     mannwhitneyu_ucheb(x, -1.118239e+00, &tj, &tj1, &result, _state);
   14654           0 :     mannwhitneyu_ucheb(x, -2.360847e-01, &tj, &tj1, &result, _state);
   14655           0 :     mannwhitneyu_ucheb(x, -7.745885e-02, &tj, &tj1, &result, _state);
   14656           0 :     mannwhitneyu_ucheb(x, -3.025041e-02, &tj, &tj1, &result, _state);
   14657           0 :     mannwhitneyu_ucheb(x, -1.187179e-02, &tj, &tj1, &result, _state);
   14658           0 :     mannwhitneyu_ucheb(x, -4.432089e-03, &tj, &tj1, &result, _state);
   14659           0 :     mannwhitneyu_ucheb(x, -1.408451e-03, &tj, &tj1, &result, _state);
   14660           0 :     mannwhitneyu_ucheb(x, -4.388774e-04, &tj, &tj1, &result, _state);
   14661           0 :     mannwhitneyu_ucheb(x, -2.795560e-04, &tj, &tj1, &result, _state);
   14662           0 :     mannwhitneyu_ucheb(x, -2.304136e-04, &tj, &tj1, &result, _state);
   14663           0 :     mannwhitneyu_ucheb(x, -1.258516e-04, &tj, &tj1, &result, _state);
   14664           0 :     mannwhitneyu_ucheb(x, -4.180236e-05, &tj, &tj1, &result, _state);
   14665           0 :     mannwhitneyu_ucheb(x, -4.388679e-06, &tj, &tj1, &result, _state);
   14666           0 :     mannwhitneyu_ucheb(x, 4.836027e-06, &tj, &tj1, &result, _state);
   14667           0 :     return result;
   14668             : }
   14669             : 
   14670             : 
   14671             : /*************************************************************************
   14672             : Tail(S, 6, 100)
   14673             : *************************************************************************/
   14674           0 : static double mannwhitneyu_utbln6n100(double s, ae_state *_state)
   14675             : {
   14676             :     double x;
   14677             :     double tj;
   14678             :     double tj1;
   14679             :     double result;
   14680             : 
   14681             : 
   14682           0 :     result = (double)(0);
   14683           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.450000e+00-1, 1.0, _state);
   14684           0 :     tj = (double)(1);
   14685           0 :     tj1 = x;
   14686           0 :     mannwhitneyu_ucheb(x, -4.181350e+00, &tj, &tj1, &result, _state);
   14687           0 :     mannwhitneyu_ucheb(x, -4.417919e+00, &tj, &tj1, &result, _state);
   14688           0 :     mannwhitneyu_ucheb(x, -1.094201e+00, &tj, &tj1, &result, _state);
   14689           0 :     mannwhitneyu_ucheb(x, -2.195883e-01, &tj, &tj1, &result, _state);
   14690           0 :     mannwhitneyu_ucheb(x, -6.818937e-02, &tj, &tj1, &result, _state);
   14691           0 :     mannwhitneyu_ucheb(x, -2.514202e-02, &tj, &tj1, &result, _state);
   14692           0 :     mannwhitneyu_ucheb(x, -9.125047e-03, &tj, &tj1, &result, _state);
   14693           0 :     mannwhitneyu_ucheb(x, -3.022148e-03, &tj, &tj1, &result, _state);
   14694           0 :     mannwhitneyu_ucheb(x, -7.284181e-04, &tj, &tj1, &result, _state);
   14695           0 :     mannwhitneyu_ucheb(x, -1.157766e-04, &tj, &tj1, &result, _state);
   14696           0 :     mannwhitneyu_ucheb(x, -1.023752e-04, &tj, &tj1, &result, _state);
   14697           0 :     mannwhitneyu_ucheb(x, -1.127985e-04, &tj, &tj1, &result, _state);
   14698           0 :     mannwhitneyu_ucheb(x, -5.221690e-05, &tj, &tj1, &result, _state);
   14699           0 :     mannwhitneyu_ucheb(x, -3.516179e-06, &tj, &tj1, &result, _state);
   14700           0 :     mannwhitneyu_ucheb(x, 9.501398e-06, &tj, &tj1, &result, _state);
   14701           0 :     mannwhitneyu_ucheb(x, 9.380220e-06, &tj, &tj1, &result, _state);
   14702           0 :     return result;
   14703             : }
   14704             : 
   14705             : 
   14706             : /*************************************************************************
   14707             : Tail(S, 7, 7)
   14708             : *************************************************************************/
   14709           0 : static double mannwhitneyu_utbln7n7(double s, ae_state *_state)
   14710             : {
   14711             :     double x;
   14712             :     double tj;
   14713             :     double tj1;
   14714             :     double result;
   14715             : 
   14716             : 
   14717           0 :     result = (double)(0);
   14718           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.130495e+00-1, 1.0, _state);
   14719           0 :     tj = (double)(1);
   14720           0 :     tj1 = x;
   14721           0 :     mannwhitneyu_ucheb(x, -3.501264e+00, &tj, &tj1, &result, _state);
   14722           0 :     mannwhitneyu_ucheb(x, -3.584790e+00, &tj, &tj1, &result, _state);
   14723           0 :     mannwhitneyu_ucheb(x, -8.577311e-01, &tj, &tj1, &result, _state);
   14724           0 :     mannwhitneyu_ucheb(x, -1.617002e-01, &tj, &tj1, &result, _state);
   14725           0 :     mannwhitneyu_ucheb(x, -4.145186e-02, &tj, &tj1, &result, _state);
   14726           0 :     mannwhitneyu_ucheb(x, -1.023462e-02, &tj, &tj1, &result, _state);
   14727           0 :     mannwhitneyu_ucheb(x, -1.408251e-03, &tj, &tj1, &result, _state);
   14728           0 :     mannwhitneyu_ucheb(x, 8.626515e-04, &tj, &tj1, &result, _state);
   14729           0 :     mannwhitneyu_ucheb(x, 2.072492e-03, &tj, &tj1, &result, _state);
   14730           0 :     mannwhitneyu_ucheb(x, 3.722926e-03, &tj, &tj1, &result, _state);
   14731           0 :     mannwhitneyu_ucheb(x, 5.095445e-03, &tj, &tj1, &result, _state);
   14732           0 :     mannwhitneyu_ucheb(x, 4.842602e-03, &tj, &tj1, &result, _state);
   14733           0 :     mannwhitneyu_ucheb(x, 2.751427e-03, &tj, &tj1, &result, _state);
   14734           0 :     mannwhitneyu_ucheb(x, 2.008927e-04, &tj, &tj1, &result, _state);
   14735           0 :     mannwhitneyu_ucheb(x, -9.892431e-04, &tj, &tj1, &result, _state);
   14736           0 :     mannwhitneyu_ucheb(x, -8.772386e-04, &tj, &tj1, &result, _state);
   14737           0 :     return result;
   14738             : }
   14739             : 
   14740             : 
   14741             : /*************************************************************************
   14742             : Tail(S, 7, 8)
   14743             : *************************************************************************/
   14744           0 : static double mannwhitneyu_utbln7n8(double s, ae_state *_state)
   14745             : {
   14746             :     double x;
   14747             :     double tj;
   14748             :     double tj1;
   14749             :     double result;
   14750             : 
   14751             : 
   14752           0 :     result = (double)(0);
   14753           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.240370e+00-1, 1.0, _state);
   14754           0 :     tj = (double)(1);
   14755           0 :     tj1 = x;
   14756           0 :     mannwhitneyu_ucheb(x, -3.709965e+00, &tj, &tj1, &result, _state);
   14757           0 :     mannwhitneyu_ucheb(x, -3.862154e+00, &tj, &tj1, &result, _state);
   14758           0 :     mannwhitneyu_ucheb(x, -9.504541e-01, &tj, &tj1, &result, _state);
   14759           0 :     mannwhitneyu_ucheb(x, -1.900195e-01, &tj, &tj1, &result, _state);
   14760           0 :     mannwhitneyu_ucheb(x, -5.439995e-02, &tj, &tj1, &result, _state);
   14761           0 :     mannwhitneyu_ucheb(x, -1.678028e-02, &tj, &tj1, &result, _state);
   14762           0 :     mannwhitneyu_ucheb(x, -4.485540e-03, &tj, &tj1, &result, _state);
   14763           0 :     mannwhitneyu_ucheb(x, -4.437047e-04, &tj, &tj1, &result, _state);
   14764           0 :     mannwhitneyu_ucheb(x, 1.440092e-03, &tj, &tj1, &result, _state);
   14765           0 :     mannwhitneyu_ucheb(x, 3.114227e-03, &tj, &tj1, &result, _state);
   14766           0 :     mannwhitneyu_ucheb(x, 4.516569e-03, &tj, &tj1, &result, _state);
   14767           0 :     mannwhitneyu_ucheb(x, 4.829457e-03, &tj, &tj1, &result, _state);
   14768           0 :     mannwhitneyu_ucheb(x, 3.787550e-03, &tj, &tj1, &result, _state);
   14769           0 :     mannwhitneyu_ucheb(x, 1.761866e-03, &tj, &tj1, &result, _state);
   14770           0 :     mannwhitneyu_ucheb(x, 1.991911e-04, &tj, &tj1, &result, _state);
   14771           0 :     mannwhitneyu_ucheb(x, -4.533481e-04, &tj, &tj1, &result, _state);
   14772           0 :     return result;
   14773             : }
   14774             : 
   14775             : 
   14776             : /*************************************************************************
   14777             : Tail(S, 7, 9)
   14778             : *************************************************************************/
   14779           0 : static double mannwhitneyu_utbln7n9(double s, ae_state *_state)
   14780             : {
   14781             :     double x;
   14782             :     double tj;
   14783             :     double tj1;
   14784             :     double result;
   14785             : 
   14786             : 
   14787           0 :     result = (double)(0);
   14788           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.334314e+00-1, 1.0, _state);
   14789           0 :     tj = (double)(1);
   14790           0 :     tj1 = x;
   14791           0 :     mannwhitneyu_ucheb(x, -3.896550e+00, &tj, &tj1, &result, _state);
   14792           0 :     mannwhitneyu_ucheb(x, -4.112671e+00, &tj, &tj1, &result, _state);
   14793           0 :     mannwhitneyu_ucheb(x, -1.037277e+00, &tj, &tj1, &result, _state);
   14794           0 :     mannwhitneyu_ucheb(x, -2.181695e-01, &tj, &tj1, &result, _state);
   14795           0 :     mannwhitneyu_ucheb(x, -6.765190e-02, &tj, &tj1, &result, _state);
   14796           0 :     mannwhitneyu_ucheb(x, -2.360116e-02, &tj, &tj1, &result, _state);
   14797           0 :     mannwhitneyu_ucheb(x, -7.695960e-03, &tj, &tj1, &result, _state);
   14798           0 :     mannwhitneyu_ucheb(x, -1.780578e-03, &tj, &tj1, &result, _state);
   14799           0 :     mannwhitneyu_ucheb(x, 8.963843e-04, &tj, &tj1, &result, _state);
   14800           0 :     mannwhitneyu_ucheb(x, 2.616148e-03, &tj, &tj1, &result, _state);
   14801           0 :     mannwhitneyu_ucheb(x, 3.852104e-03, &tj, &tj1, &result, _state);
   14802           0 :     mannwhitneyu_ucheb(x, 4.390744e-03, &tj, &tj1, &result, _state);
   14803           0 :     mannwhitneyu_ucheb(x, 4.014041e-03, &tj, &tj1, &result, _state);
   14804           0 :     mannwhitneyu_ucheb(x, 2.888101e-03, &tj, &tj1, &result, _state);
   14805           0 :     mannwhitneyu_ucheb(x, 1.467474e-03, &tj, &tj1, &result, _state);
   14806           0 :     mannwhitneyu_ucheb(x, 4.004611e-04, &tj, &tj1, &result, _state);
   14807           0 :     return result;
   14808             : }
   14809             : 
   14810             : 
   14811             : /*************************************************************************
   14812             : Tail(S, 7, 10)
   14813             : *************************************************************************/
   14814           0 : static double mannwhitneyu_utbln7n10(double s, ae_state *_state)
   14815             : {
   14816             :     double x;
   14817             :     double tj;
   14818             :     double tj1;
   14819             :     double result;
   14820             : 
   14821             : 
   14822           0 :     result = (double)(0);
   14823           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.415650e+00-1, 1.0, _state);
   14824           0 :     tj = (double)(1);
   14825           0 :     tj1 = x;
   14826           0 :     mannwhitneyu_ucheb(x, -4.064844e+00, &tj, &tj1, &result, _state);
   14827           0 :     mannwhitneyu_ucheb(x, -4.340749e+00, &tj, &tj1, &result, _state);
   14828           0 :     mannwhitneyu_ucheb(x, -1.118888e+00, &tj, &tj1, &result, _state);
   14829           0 :     mannwhitneyu_ucheb(x, -2.459730e-01, &tj, &tj1, &result, _state);
   14830           0 :     mannwhitneyu_ucheb(x, -8.097781e-02, &tj, &tj1, &result, _state);
   14831           0 :     mannwhitneyu_ucheb(x, -3.057688e-02, &tj, &tj1, &result, _state);
   14832           0 :     mannwhitneyu_ucheb(x, -1.097406e-02, &tj, &tj1, &result, _state);
   14833           0 :     mannwhitneyu_ucheb(x, -3.209262e-03, &tj, &tj1, &result, _state);
   14834           0 :     mannwhitneyu_ucheb(x, 4.065641e-04, &tj, &tj1, &result, _state);
   14835           0 :     mannwhitneyu_ucheb(x, 2.196677e-03, &tj, &tj1, &result, _state);
   14836           0 :     mannwhitneyu_ucheb(x, 3.313994e-03, &tj, &tj1, &result, _state);
   14837           0 :     mannwhitneyu_ucheb(x, 3.827157e-03, &tj, &tj1, &result, _state);
   14838           0 :     mannwhitneyu_ucheb(x, 3.822284e-03, &tj, &tj1, &result, _state);
   14839           0 :     mannwhitneyu_ucheb(x, 3.389090e-03, &tj, &tj1, &result, _state);
   14840           0 :     mannwhitneyu_ucheb(x, 2.340850e-03, &tj, &tj1, &result, _state);
   14841           0 :     mannwhitneyu_ucheb(x, 1.395172e-03, &tj, &tj1, &result, _state);
   14842           0 :     return result;
   14843             : }
   14844             : 
   14845             : 
   14846             : /*************************************************************************
   14847             : Tail(S, 7, 11)
   14848             : *************************************************************************/
   14849           0 : static double mannwhitneyu_utbln7n11(double s, ae_state *_state)
   14850             : {
   14851             :     double x;
   14852             :     double tj;
   14853             :     double tj1;
   14854             :     double result;
   14855             : 
   14856             : 
   14857           0 :     result = (double)(0);
   14858           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.486817e+00-1, 1.0, _state);
   14859           0 :     tj = (double)(1);
   14860           0 :     tj1 = x;
   14861           0 :     mannwhitneyu_ucheb(x, -4.217795e+00, &tj, &tj1, &result, _state);
   14862           0 :     mannwhitneyu_ucheb(x, -4.549783e+00, &tj, &tj1, &result, _state);
   14863           0 :     mannwhitneyu_ucheb(x, -1.195905e+00, &tj, &tj1, &result, _state);
   14864           0 :     mannwhitneyu_ucheb(x, -2.733093e-01, &tj, &tj1, &result, _state);
   14865           0 :     mannwhitneyu_ucheb(x, -9.428447e-02, &tj, &tj1, &result, _state);
   14866           0 :     mannwhitneyu_ucheb(x, -3.760093e-02, &tj, &tj1, &result, _state);
   14867           0 :     mannwhitneyu_ucheb(x, -1.431676e-02, &tj, &tj1, &result, _state);
   14868           0 :     mannwhitneyu_ucheb(x, -4.717152e-03, &tj, &tj1, &result, _state);
   14869           0 :     mannwhitneyu_ucheb(x, -1.032199e-04, &tj, &tj1, &result, _state);
   14870           0 :     mannwhitneyu_ucheb(x, 1.832423e-03, &tj, &tj1, &result, _state);
   14871           0 :     mannwhitneyu_ucheb(x, 2.905979e-03, &tj, &tj1, &result, _state);
   14872           0 :     mannwhitneyu_ucheb(x, 3.302799e-03, &tj, &tj1, &result, _state);
   14873           0 :     mannwhitneyu_ucheb(x, 3.464371e-03, &tj, &tj1, &result, _state);
   14874           0 :     mannwhitneyu_ucheb(x, 3.456211e-03, &tj, &tj1, &result, _state);
   14875           0 :     mannwhitneyu_ucheb(x, 2.736244e-03, &tj, &tj1, &result, _state);
   14876           0 :     mannwhitneyu_ucheb(x, 2.140712e-03, &tj, &tj1, &result, _state);
   14877           0 :     return result;
   14878             : }
   14879             : 
   14880             : 
   14881             : /*************************************************************************
   14882             : Tail(S, 7, 12)
   14883             : *************************************************************************/
   14884           0 : static double mannwhitneyu_utbln7n12(double s, ae_state *_state)
   14885             : {
   14886             :     double x;
   14887             :     double tj;
   14888             :     double tj1;
   14889             :     double result;
   14890             : 
   14891             : 
   14892           0 :     result = (double)(0);
   14893           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.500000e+00-1, 1.0, _state);
   14894           0 :     tj = (double)(1);
   14895           0 :     tj1 = x;
   14896           0 :     mannwhitneyu_ucheb(x, -4.235822e+00, &tj, &tj1, &result, _state);
   14897           0 :     mannwhitneyu_ucheb(x, -4.564100e+00, &tj, &tj1, &result, _state);
   14898           0 :     mannwhitneyu_ucheb(x, -1.190813e+00, &tj, &tj1, &result, _state);
   14899           0 :     mannwhitneyu_ucheb(x, -2.686546e-01, &tj, &tj1, &result, _state);
   14900           0 :     mannwhitneyu_ucheb(x, -9.395083e-02, &tj, &tj1, &result, _state);
   14901           0 :     mannwhitneyu_ucheb(x, -3.967359e-02, &tj, &tj1, &result, _state);
   14902           0 :     mannwhitneyu_ucheb(x, -1.747096e-02, &tj, &tj1, &result, _state);
   14903           0 :     mannwhitneyu_ucheb(x, -8.304144e-03, &tj, &tj1, &result, _state);
   14904           0 :     mannwhitneyu_ucheb(x, -3.903198e-03, &tj, &tj1, &result, _state);
   14905           0 :     mannwhitneyu_ucheb(x, -2.134906e-03, &tj, &tj1, &result, _state);
   14906           0 :     mannwhitneyu_ucheb(x, -1.175035e-03, &tj, &tj1, &result, _state);
   14907           0 :     mannwhitneyu_ucheb(x, -7.266224e-04, &tj, &tj1, &result, _state);
   14908           0 :     mannwhitneyu_ucheb(x, -1.892931e-04, &tj, &tj1, &result, _state);
   14909           0 :     mannwhitneyu_ucheb(x, 5.604706e-04, &tj, &tj1, &result, _state);
   14910           0 :     mannwhitneyu_ucheb(x, 9.070459e-04, &tj, &tj1, &result, _state);
   14911           0 :     mannwhitneyu_ucheb(x, 1.427010e-03, &tj, &tj1, &result, _state);
   14912           0 :     return result;
   14913             : }
   14914             : 
   14915             : 
   14916             : /*************************************************************************
   14917             : Tail(S, 7, 13)
   14918             : *************************************************************************/
   14919           0 : static double mannwhitneyu_utbln7n13(double s, ae_state *_state)
   14920             : {
   14921             :     double x;
   14922             :     double tj;
   14923             :     double tj1;
   14924             :     double result;
   14925             : 
   14926             : 
   14927           0 :     result = (double)(0);
   14928           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.500000e+00-1, 1.0, _state);
   14929           0 :     tj = (double)(1);
   14930           0 :     tj1 = x;
   14931           0 :     mannwhitneyu_ucheb(x, -4.222204e+00, &tj, &tj1, &result, _state);
   14932           0 :     mannwhitneyu_ucheb(x, -4.532300e+00, &tj, &tj1, &result, _state);
   14933           0 :     mannwhitneyu_ucheb(x, -1.164642e+00, &tj, &tj1, &result, _state);
   14934           0 :     mannwhitneyu_ucheb(x, -2.523768e-01, &tj, &tj1, &result, _state);
   14935           0 :     mannwhitneyu_ucheb(x, -8.531984e-02, &tj, &tj1, &result, _state);
   14936           0 :     mannwhitneyu_ucheb(x, -3.467857e-02, &tj, &tj1, &result, _state);
   14937           0 :     mannwhitneyu_ucheb(x, -1.483804e-02, &tj, &tj1, &result, _state);
   14938           0 :     mannwhitneyu_ucheb(x, -6.524136e-03, &tj, &tj1, &result, _state);
   14939           0 :     mannwhitneyu_ucheb(x, -3.077740e-03, &tj, &tj1, &result, _state);
   14940           0 :     mannwhitneyu_ucheb(x, -1.745218e-03, &tj, &tj1, &result, _state);
   14941           0 :     mannwhitneyu_ucheb(x, -1.602085e-03, &tj, &tj1, &result, _state);
   14942           0 :     mannwhitneyu_ucheb(x, -1.828831e-03, &tj, &tj1, &result, _state);
   14943           0 :     mannwhitneyu_ucheb(x, -1.994070e-03, &tj, &tj1, &result, _state);
   14944           0 :     mannwhitneyu_ucheb(x, -1.873879e-03, &tj, &tj1, &result, _state);
   14945           0 :     mannwhitneyu_ucheb(x, -1.341937e-03, &tj, &tj1, &result, _state);
   14946           0 :     mannwhitneyu_ucheb(x, -8.706444e-04, &tj, &tj1, &result, _state);
   14947           0 :     return result;
   14948             : }
   14949             : 
   14950             : 
   14951             : /*************************************************************************
   14952             : Tail(S, 7, 14)
   14953             : *************************************************************************/
   14954           0 : static double mannwhitneyu_utbln7n14(double s, ae_state *_state)
   14955             : {
   14956             :     double x;
   14957             :     double tj;
   14958             :     double tj1;
   14959             :     double result;
   14960             : 
   14961             : 
   14962           0 :     result = (double)(0);
   14963           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.500000e+00-1, 1.0, _state);
   14964           0 :     tj = (double)(1);
   14965           0 :     tj1 = x;
   14966           0 :     mannwhitneyu_ucheb(x, -4.211763e+00, &tj, &tj1, &result, _state);
   14967           0 :     mannwhitneyu_ucheb(x, -4.507542e+00, &tj, &tj1, &result, _state);
   14968           0 :     mannwhitneyu_ucheb(x, -1.143640e+00, &tj, &tj1, &result, _state);
   14969           0 :     mannwhitneyu_ucheb(x, -2.395755e-01, &tj, &tj1, &result, _state);
   14970           0 :     mannwhitneyu_ucheb(x, -7.808020e-02, &tj, &tj1, &result, _state);
   14971           0 :     mannwhitneyu_ucheb(x, -3.044259e-02, &tj, &tj1, &result, _state);
   14972           0 :     mannwhitneyu_ucheb(x, -1.182308e-02, &tj, &tj1, &result, _state);
   14973           0 :     mannwhitneyu_ucheb(x, -4.057325e-03, &tj, &tj1, &result, _state);
   14974           0 :     mannwhitneyu_ucheb(x, -5.724255e-04, &tj, &tj1, &result, _state);
   14975           0 :     mannwhitneyu_ucheb(x, 8.303900e-04, &tj, &tj1, &result, _state);
   14976           0 :     mannwhitneyu_ucheb(x, 1.113148e-03, &tj, &tj1, &result, _state);
   14977           0 :     mannwhitneyu_ucheb(x, 8.102514e-04, &tj, &tj1, &result, _state);
   14978           0 :     mannwhitneyu_ucheb(x, 3.559442e-04, &tj, &tj1, &result, _state);
   14979           0 :     mannwhitneyu_ucheb(x, 4.634986e-05, &tj, &tj1, &result, _state);
   14980           0 :     mannwhitneyu_ucheb(x, -8.776476e-05, &tj, &tj1, &result, _state);
   14981           0 :     mannwhitneyu_ucheb(x, 1.054489e-05, &tj, &tj1, &result, _state);
   14982           0 :     return result;
   14983             : }
   14984             : 
   14985             : 
   14986             : /*************************************************************************
   14987             : Tail(S, 7, 15)
   14988             : *************************************************************************/
   14989           0 : static double mannwhitneyu_utbln7n15(double s, ae_state *_state)
   14990             : {
   14991             :     double x;
   14992             :     double tj;
   14993             :     double tj1;
   14994             :     double result;
   14995             : 
   14996             : 
   14997           0 :     result = (double)(0);
   14998           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.500000e+00-1, 1.0, _state);
   14999           0 :     tj = (double)(1);
   15000           0 :     tj1 = x;
   15001           0 :     mannwhitneyu_ucheb(x, -4.204898e+00, &tj, &tj1, &result, _state);
   15002           0 :     mannwhitneyu_ucheb(x, -4.489960e+00, &tj, &tj1, &result, _state);
   15003           0 :     mannwhitneyu_ucheb(x, -1.129172e+00, &tj, &tj1, &result, _state);
   15004           0 :     mannwhitneyu_ucheb(x, -2.316741e-01, &tj, &tj1, &result, _state);
   15005           0 :     mannwhitneyu_ucheb(x, -7.506107e-02, &tj, &tj1, &result, _state);
   15006           0 :     mannwhitneyu_ucheb(x, -2.983676e-02, &tj, &tj1, &result, _state);
   15007           0 :     mannwhitneyu_ucheb(x, -1.258013e-02, &tj, &tj1, &result, _state);
   15008           0 :     mannwhitneyu_ucheb(x, -5.262515e-03, &tj, &tj1, &result, _state);
   15009           0 :     mannwhitneyu_ucheb(x, -1.984156e-03, &tj, &tj1, &result, _state);
   15010           0 :     mannwhitneyu_ucheb(x, -3.912108e-04, &tj, &tj1, &result, _state);
   15011           0 :     mannwhitneyu_ucheb(x, 8.974023e-05, &tj, &tj1, &result, _state);
   15012           0 :     mannwhitneyu_ucheb(x, 6.056195e-05, &tj, &tj1, &result, _state);
   15013           0 :     mannwhitneyu_ucheb(x, -2.090842e-04, &tj, &tj1, &result, _state);
   15014           0 :     mannwhitneyu_ucheb(x, -5.232620e-04, &tj, &tj1, &result, _state);
   15015           0 :     mannwhitneyu_ucheb(x, -5.816339e-04, &tj, &tj1, &result, _state);
   15016           0 :     mannwhitneyu_ucheb(x, -7.020421e-04, &tj, &tj1, &result, _state);
   15017           0 :     return result;
   15018             : }
   15019             : 
   15020             : 
   15021             : /*************************************************************************
   15022             : Tail(S, 7, 30)
   15023             : *************************************************************************/
   15024           0 : static double mannwhitneyu_utbln7n30(double s, ae_state *_state)
   15025             : {
   15026             :     double x;
   15027             :     double tj;
   15028             :     double tj1;
   15029             :     double result;
   15030             : 
   15031             : 
   15032           0 :     result = (double)(0);
   15033           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.500000e+00-1, 1.0, _state);
   15034           0 :     tj = (double)(1);
   15035           0 :     tj1 = x;
   15036           0 :     mannwhitneyu_ucheb(x, -4.176536e+00, &tj, &tj1, &result, _state);
   15037           0 :     mannwhitneyu_ucheb(x, -4.398705e+00, &tj, &tj1, &result, _state);
   15038           0 :     mannwhitneyu_ucheb(x, -1.045481e+00, &tj, &tj1, &result, _state);
   15039           0 :     mannwhitneyu_ucheb(x, -1.821982e-01, &tj, &tj1, &result, _state);
   15040           0 :     mannwhitneyu_ucheb(x, -4.962304e-02, &tj, &tj1, &result, _state);
   15041           0 :     mannwhitneyu_ucheb(x, -1.698132e-02, &tj, &tj1, &result, _state);
   15042           0 :     mannwhitneyu_ucheb(x, -6.062667e-03, &tj, &tj1, &result, _state);
   15043           0 :     mannwhitneyu_ucheb(x, -2.282353e-03, &tj, &tj1, &result, _state);
   15044           0 :     mannwhitneyu_ucheb(x, -8.014836e-04, &tj, &tj1, &result, _state);
   15045           0 :     mannwhitneyu_ucheb(x, -2.035683e-04, &tj, &tj1, &result, _state);
   15046           0 :     mannwhitneyu_ucheb(x, -1.004137e-05, &tj, &tj1, &result, _state);
   15047           0 :     mannwhitneyu_ucheb(x, 3.801453e-06, &tj, &tj1, &result, _state);
   15048           0 :     mannwhitneyu_ucheb(x, -1.920705e-05, &tj, &tj1, &result, _state);
   15049           0 :     mannwhitneyu_ucheb(x, -2.518735e-05, &tj, &tj1, &result, _state);
   15050           0 :     mannwhitneyu_ucheb(x, -1.821501e-05, &tj, &tj1, &result, _state);
   15051           0 :     mannwhitneyu_ucheb(x, -1.801008e-05, &tj, &tj1, &result, _state);
   15052           0 :     return result;
   15053             : }
   15054             : 
   15055             : 
   15056             : /*************************************************************************
   15057             : Tail(S, 7, 100)
   15058             : *************************************************************************/
   15059           0 : static double mannwhitneyu_utbln7n100(double s, ae_state *_state)
   15060             : {
   15061             :     double x;
   15062             :     double tj;
   15063             :     double tj1;
   15064             :     double result;
   15065             : 
   15066             : 
   15067           0 :     result = (double)(0);
   15068           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.500000e+00-1, 1.0, _state);
   15069           0 :     tj = (double)(1);
   15070           0 :     tj1 = x;
   15071           0 :     mannwhitneyu_ucheb(x, -4.188337e+00, &tj, &tj1, &result, _state);
   15072           0 :     mannwhitneyu_ucheb(x, -4.386949e+00, &tj, &tj1, &result, _state);
   15073           0 :     mannwhitneyu_ucheb(x, -1.022834e+00, &tj, &tj1, &result, _state);
   15074           0 :     mannwhitneyu_ucheb(x, -1.686517e-01, &tj, &tj1, &result, _state);
   15075           0 :     mannwhitneyu_ucheb(x, -4.323516e-02, &tj, &tj1, &result, _state);
   15076           0 :     mannwhitneyu_ucheb(x, -1.399392e-02, &tj, &tj1, &result, _state);
   15077           0 :     mannwhitneyu_ucheb(x, -4.644333e-03, &tj, &tj1, &result, _state);
   15078           0 :     mannwhitneyu_ucheb(x, -1.617044e-03, &tj, &tj1, &result, _state);
   15079           0 :     mannwhitneyu_ucheb(x, -5.031396e-04, &tj, &tj1, &result, _state);
   15080           0 :     mannwhitneyu_ucheb(x, -8.792066e-05, &tj, &tj1, &result, _state);
   15081           0 :     mannwhitneyu_ucheb(x, 2.675457e-05, &tj, &tj1, &result, _state);
   15082           0 :     mannwhitneyu_ucheb(x, 1.673416e-05, &tj, &tj1, &result, _state);
   15083           0 :     mannwhitneyu_ucheb(x, -6.258552e-06, &tj, &tj1, &result, _state);
   15084           0 :     mannwhitneyu_ucheb(x, -8.174214e-06, &tj, &tj1, &result, _state);
   15085           0 :     mannwhitneyu_ucheb(x, -3.073644e-06, &tj, &tj1, &result, _state);
   15086           0 :     mannwhitneyu_ucheb(x, -1.349958e-06, &tj, &tj1, &result, _state);
   15087           0 :     return result;
   15088             : }
   15089             : 
   15090             : 
   15091             : /*************************************************************************
   15092             : Tail(S, 8, 8)
   15093             : *************************************************************************/
   15094           0 : static double mannwhitneyu_utbln8n8(double s, ae_state *_state)
   15095             : {
   15096             :     double x;
   15097             :     double tj;
   15098             :     double tj1;
   15099             :     double result;
   15100             : 
   15101             : 
   15102           0 :     result = (double)(0);
   15103           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.360672e+00-1, 1.0, _state);
   15104           0 :     tj = (double)(1);
   15105           0 :     tj1 = x;
   15106           0 :     mannwhitneyu_ucheb(x, -3.940217e+00, &tj, &tj1, &result, _state);
   15107           0 :     mannwhitneyu_ucheb(x, -4.168913e+00, &tj, &tj1, &result, _state);
   15108           0 :     mannwhitneyu_ucheb(x, -1.051485e+00, &tj, &tj1, &result, _state);
   15109           0 :     mannwhitneyu_ucheb(x, -2.195325e-01, &tj, &tj1, &result, _state);
   15110           0 :     mannwhitneyu_ucheb(x, -6.775196e-02, &tj, &tj1, &result, _state);
   15111           0 :     mannwhitneyu_ucheb(x, -2.385506e-02, &tj, &tj1, &result, _state);
   15112           0 :     mannwhitneyu_ucheb(x, -8.244902e-03, &tj, &tj1, &result, _state);
   15113           0 :     mannwhitneyu_ucheb(x, -2.525632e-03, &tj, &tj1, &result, _state);
   15114           0 :     mannwhitneyu_ucheb(x, 2.771275e-04, &tj, &tj1, &result, _state);
   15115           0 :     mannwhitneyu_ucheb(x, 2.332874e-03, &tj, &tj1, &result, _state);
   15116           0 :     mannwhitneyu_ucheb(x, 4.079599e-03, &tj, &tj1, &result, _state);
   15117           0 :     mannwhitneyu_ucheb(x, 4.882551e-03, &tj, &tj1, &result, _state);
   15118           0 :     mannwhitneyu_ucheb(x, 4.407944e-03, &tj, &tj1, &result, _state);
   15119           0 :     mannwhitneyu_ucheb(x, 2.769844e-03, &tj, &tj1, &result, _state);
   15120           0 :     mannwhitneyu_ucheb(x, 1.062433e-03, &tj, &tj1, &result, _state);
   15121           0 :     mannwhitneyu_ucheb(x, 5.872535e-05, &tj, &tj1, &result, _state);
   15122           0 :     return result;
   15123             : }
   15124             : 
   15125             : 
   15126             : /*************************************************************************
   15127             : Tail(S, 8, 9)
   15128             : *************************************************************************/
   15129           0 : static double mannwhitneyu_utbln8n9(double s, ae_state *_state)
   15130             : {
   15131             :     double x;
   15132             :     double tj;
   15133             :     double tj1;
   15134             :     double result;
   15135             : 
   15136             : 
   15137           0 :     result = (double)(0);
   15138           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.464102e+00-1, 1.0, _state);
   15139           0 :     tj = (double)(1);
   15140           0 :     tj1 = x;
   15141           0 :     mannwhitneyu_ucheb(x, -4.147004e+00, &tj, &tj1, &result, _state);
   15142           0 :     mannwhitneyu_ucheb(x, -4.446939e+00, &tj, &tj1, &result, _state);
   15143           0 :     mannwhitneyu_ucheb(x, -1.146155e+00, &tj, &tj1, &result, _state);
   15144           0 :     mannwhitneyu_ucheb(x, -2.488561e-01, &tj, &tj1, &result, _state);
   15145           0 :     mannwhitneyu_ucheb(x, -8.144561e-02, &tj, &tj1, &result, _state);
   15146           0 :     mannwhitneyu_ucheb(x, -3.116917e-02, &tj, &tj1, &result, _state);
   15147           0 :     mannwhitneyu_ucheb(x, -1.205667e-02, &tj, &tj1, &result, _state);
   15148           0 :     mannwhitneyu_ucheb(x, -4.515661e-03, &tj, &tj1, &result, _state);
   15149           0 :     mannwhitneyu_ucheb(x, -7.618616e-04, &tj, &tj1, &result, _state);
   15150           0 :     mannwhitneyu_ucheb(x, 1.599011e-03, &tj, &tj1, &result, _state);
   15151           0 :     mannwhitneyu_ucheb(x, 3.457324e-03, &tj, &tj1, &result, _state);
   15152           0 :     mannwhitneyu_ucheb(x, 4.482917e-03, &tj, &tj1, &result, _state);
   15153           0 :     mannwhitneyu_ucheb(x, 4.488267e-03, &tj, &tj1, &result, _state);
   15154           0 :     mannwhitneyu_ucheb(x, 3.469823e-03, &tj, &tj1, &result, _state);
   15155           0 :     mannwhitneyu_ucheb(x, 1.957591e-03, &tj, &tj1, &result, _state);
   15156           0 :     mannwhitneyu_ucheb(x, 8.058326e-04, &tj, &tj1, &result, _state);
   15157           0 :     return result;
   15158             : }
   15159             : 
   15160             : 
   15161             : /*************************************************************************
   15162             : Tail(S, 8, 10)
   15163             : *************************************************************************/
   15164           0 : static double mannwhitneyu_utbln8n10(double s, ae_state *_state)
   15165             : {
   15166             :     double x;
   15167             :     double tj;
   15168             :     double tj1;
   15169             :     double result;
   15170             : 
   15171             : 
   15172           0 :     result = (double)(0);
   15173           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.554093e+00-1, 1.0, _state);
   15174           0 :     tj = (double)(1);
   15175           0 :     tj1 = x;
   15176           0 :     mannwhitneyu_ucheb(x, -4.334282e+00, &tj, &tj1, &result, _state);
   15177           0 :     mannwhitneyu_ucheb(x, -4.700860e+00, &tj, &tj1, &result, _state);
   15178           0 :     mannwhitneyu_ucheb(x, -1.235253e+00, &tj, &tj1, &result, _state);
   15179           0 :     mannwhitneyu_ucheb(x, -2.778489e-01, &tj, &tj1, &result, _state);
   15180           0 :     mannwhitneyu_ucheb(x, -9.527324e-02, &tj, &tj1, &result, _state);
   15181           0 :     mannwhitneyu_ucheb(x, -3.862885e-02, &tj, &tj1, &result, _state);
   15182           0 :     mannwhitneyu_ucheb(x, -1.589781e-02, &tj, &tj1, &result, _state);
   15183           0 :     mannwhitneyu_ucheb(x, -6.507355e-03, &tj, &tj1, &result, _state);
   15184           0 :     mannwhitneyu_ucheb(x, -1.717526e-03, &tj, &tj1, &result, _state);
   15185           0 :     mannwhitneyu_ucheb(x, 9.215726e-04, &tj, &tj1, &result, _state);
   15186           0 :     mannwhitneyu_ucheb(x, 2.848696e-03, &tj, &tj1, &result, _state);
   15187           0 :     mannwhitneyu_ucheb(x, 3.918854e-03, &tj, &tj1, &result, _state);
   15188           0 :     mannwhitneyu_ucheb(x, 4.219614e-03, &tj, &tj1, &result, _state);
   15189           0 :     mannwhitneyu_ucheb(x, 3.753761e-03, &tj, &tj1, &result, _state);
   15190           0 :     mannwhitneyu_ucheb(x, 2.573688e-03, &tj, &tj1, &result, _state);
   15191           0 :     mannwhitneyu_ucheb(x, 1.602177e-03, &tj, &tj1, &result, _state);
   15192           0 :     return result;
   15193             : }
   15194             : 
   15195             : 
   15196             : /*************************************************************************
   15197             : Tail(S, 8, 11)
   15198             : *************************************************************************/
   15199           0 : static double mannwhitneyu_utbln8n11(double s, ae_state *_state)
   15200             : {
   15201             :     double x;
   15202             :     double tj;
   15203             :     double tj1;
   15204             :     double result;
   15205             : 
   15206             : 
   15207           0 :     result = (double)(0);
   15208           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.600000e+00-1, 1.0, _state);
   15209           0 :     tj = (double)(1);
   15210           0 :     tj1 = x;
   15211           0 :     mannwhitneyu_ucheb(x, -4.421882e+00, &tj, &tj1, &result, _state);
   15212           0 :     mannwhitneyu_ucheb(x, -4.812457e+00, &tj, &tj1, &result, _state);
   15213           0 :     mannwhitneyu_ucheb(x, -1.266153e+00, &tj, &tj1, &result, _state);
   15214           0 :     mannwhitneyu_ucheb(x, -2.849344e-01, &tj, &tj1, &result, _state);
   15215           0 :     mannwhitneyu_ucheb(x, -9.971527e-02, &tj, &tj1, &result, _state);
   15216           0 :     mannwhitneyu_ucheb(x, -4.258944e-02, &tj, &tj1, &result, _state);
   15217           0 :     mannwhitneyu_ucheb(x, -1.944820e-02, &tj, &tj1, &result, _state);
   15218           0 :     mannwhitneyu_ucheb(x, -9.894685e-03, &tj, &tj1, &result, _state);
   15219           0 :     mannwhitneyu_ucheb(x, -5.031836e-03, &tj, &tj1, &result, _state);
   15220           0 :     mannwhitneyu_ucheb(x, -2.514330e-03, &tj, &tj1, &result, _state);
   15221           0 :     mannwhitneyu_ucheb(x, -6.351660e-04, &tj, &tj1, &result, _state);
   15222           0 :     mannwhitneyu_ucheb(x, 6.206748e-04, &tj, &tj1, &result, _state);
   15223           0 :     mannwhitneyu_ucheb(x, 1.492600e-03, &tj, &tj1, &result, _state);
   15224           0 :     mannwhitneyu_ucheb(x, 2.005338e-03, &tj, &tj1, &result, _state);
   15225           0 :     mannwhitneyu_ucheb(x, 1.780099e-03, &tj, &tj1, &result, _state);
   15226           0 :     mannwhitneyu_ucheb(x, 1.673599e-03, &tj, &tj1, &result, _state);
   15227           0 :     return result;
   15228             : }
   15229             : 
   15230             : 
   15231             : /*************************************************************************
   15232             : Tail(S, 8, 12)
   15233             : *************************************************************************/
   15234           0 : static double mannwhitneyu_utbln8n12(double s, ae_state *_state)
   15235             : {
   15236             :     double x;
   15237             :     double tj;
   15238             :     double tj1;
   15239             :     double result;
   15240             : 
   15241             : 
   15242           0 :     result = (double)(0);
   15243           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.600000e+00-1, 1.0, _state);
   15244           0 :     tj = (double)(1);
   15245           0 :     tj1 = x;
   15246           0 :     mannwhitneyu_ucheb(x, -4.398211e+00, &tj, &tj1, &result, _state);
   15247           0 :     mannwhitneyu_ucheb(x, -4.762214e+00, &tj, &tj1, &result, _state);
   15248           0 :     mannwhitneyu_ucheb(x, -1.226296e+00, &tj, &tj1, &result, _state);
   15249           0 :     mannwhitneyu_ucheb(x, -2.603837e-01, &tj, &tj1, &result, _state);
   15250           0 :     mannwhitneyu_ucheb(x, -8.643223e-02, &tj, &tj1, &result, _state);
   15251           0 :     mannwhitneyu_ucheb(x, -3.502438e-02, &tj, &tj1, &result, _state);
   15252           0 :     mannwhitneyu_ucheb(x, -1.544574e-02, &tj, &tj1, &result, _state);
   15253           0 :     mannwhitneyu_ucheb(x, -7.647734e-03, &tj, &tj1, &result, _state);
   15254           0 :     mannwhitneyu_ucheb(x, -4.442259e-03, &tj, &tj1, &result, _state);
   15255           0 :     mannwhitneyu_ucheb(x, -3.011484e-03, &tj, &tj1, &result, _state);
   15256           0 :     mannwhitneyu_ucheb(x, -2.384758e-03, &tj, &tj1, &result, _state);
   15257           0 :     mannwhitneyu_ucheb(x, -1.998259e-03, &tj, &tj1, &result, _state);
   15258           0 :     mannwhitneyu_ucheb(x, -1.659985e-03, &tj, &tj1, &result, _state);
   15259           0 :     mannwhitneyu_ucheb(x, -1.331046e-03, &tj, &tj1, &result, _state);
   15260           0 :     mannwhitneyu_ucheb(x, -8.638478e-04, &tj, &tj1, &result, _state);
   15261           0 :     mannwhitneyu_ucheb(x, -6.056785e-04, &tj, &tj1, &result, _state);
   15262           0 :     return result;
   15263             : }
   15264             : 
   15265             : 
   15266             : /*************************************************************************
   15267             : Tail(S, 8, 13)
   15268             : *************************************************************************/
   15269           0 : static double mannwhitneyu_utbln8n13(double s, ae_state *_state)
   15270             : {
   15271             :     double x;
   15272             :     double tj;
   15273             :     double tj1;
   15274             :     double result;
   15275             : 
   15276             : 
   15277           0 :     result = (double)(0);
   15278           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.600000e+00-1, 1.0, _state);
   15279           0 :     tj = (double)(1);
   15280           0 :     tj1 = x;
   15281           0 :     mannwhitneyu_ucheb(x, -4.380670e+00, &tj, &tj1, &result, _state);
   15282           0 :     mannwhitneyu_ucheb(x, -4.724511e+00, &tj, &tj1, &result, _state);
   15283           0 :     mannwhitneyu_ucheb(x, -1.195851e+00, &tj, &tj1, &result, _state);
   15284           0 :     mannwhitneyu_ucheb(x, -2.420511e-01, &tj, &tj1, &result, _state);
   15285           0 :     mannwhitneyu_ucheb(x, -7.609928e-02, &tj, &tj1, &result, _state);
   15286           0 :     mannwhitneyu_ucheb(x, -2.893999e-02, &tj, &tj1, &result, _state);
   15287           0 :     mannwhitneyu_ucheb(x, -1.115919e-02, &tj, &tj1, &result, _state);
   15288           0 :     mannwhitneyu_ucheb(x, -4.291410e-03, &tj, &tj1, &result, _state);
   15289           0 :     mannwhitneyu_ucheb(x, -1.339664e-03, &tj, &tj1, &result, _state);
   15290           0 :     mannwhitneyu_ucheb(x, -1.801548e-04, &tj, &tj1, &result, _state);
   15291           0 :     mannwhitneyu_ucheb(x, 2.534710e-04, &tj, &tj1, &result, _state);
   15292           0 :     mannwhitneyu_ucheb(x, 2.793250e-04, &tj, &tj1, &result, _state);
   15293           0 :     mannwhitneyu_ucheb(x, 1.806718e-04, &tj, &tj1, &result, _state);
   15294           0 :     mannwhitneyu_ucheb(x, 1.384624e-04, &tj, &tj1, &result, _state);
   15295           0 :     mannwhitneyu_ucheb(x, 1.120582e-04, &tj, &tj1, &result, _state);
   15296           0 :     mannwhitneyu_ucheb(x, 2.936453e-04, &tj, &tj1, &result, _state);
   15297           0 :     return result;
   15298             : }
   15299             : 
   15300             : 
   15301             : /*************************************************************************
   15302             : Tail(S, 8, 14)
   15303             : *************************************************************************/
   15304           0 : static double mannwhitneyu_utbln8n14(double s, ae_state *_state)
   15305             : {
   15306             :     double x;
   15307             :     double tj;
   15308             :     double tj1;
   15309             :     double result;
   15310             : 
   15311             : 
   15312           0 :     result = (double)(0);
   15313           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.600000e+00-1, 1.0, _state);
   15314           0 :     tj = (double)(1);
   15315           0 :     tj1 = x;
   15316           0 :     mannwhitneyu_ucheb(x, -4.368494e+00, &tj, &tj1, &result, _state);
   15317           0 :     mannwhitneyu_ucheb(x, -4.697171e+00, &tj, &tj1, &result, _state);
   15318           0 :     mannwhitneyu_ucheb(x, -1.174440e+00, &tj, &tj1, &result, _state);
   15319           0 :     mannwhitneyu_ucheb(x, -2.300621e-01, &tj, &tj1, &result, _state);
   15320           0 :     mannwhitneyu_ucheb(x, -7.087393e-02, &tj, &tj1, &result, _state);
   15321           0 :     mannwhitneyu_ucheb(x, -2.685826e-02, &tj, &tj1, &result, _state);
   15322           0 :     mannwhitneyu_ucheb(x, -1.085254e-02, &tj, &tj1, &result, _state);
   15323           0 :     mannwhitneyu_ucheb(x, -4.525658e-03, &tj, &tj1, &result, _state);
   15324           0 :     mannwhitneyu_ucheb(x, -1.966647e-03, &tj, &tj1, &result, _state);
   15325           0 :     mannwhitneyu_ucheb(x, -7.453388e-04, &tj, &tj1, &result, _state);
   15326           0 :     mannwhitneyu_ucheb(x, -3.826066e-04, &tj, &tj1, &result, _state);
   15327           0 :     mannwhitneyu_ucheb(x, -3.501958e-04, &tj, &tj1, &result, _state);
   15328           0 :     mannwhitneyu_ucheb(x, -5.336297e-04, &tj, &tj1, &result, _state);
   15329           0 :     mannwhitneyu_ucheb(x, -8.251972e-04, &tj, &tj1, &result, _state);
   15330           0 :     mannwhitneyu_ucheb(x, -8.118456e-04, &tj, &tj1, &result, _state);
   15331           0 :     mannwhitneyu_ucheb(x, -9.415959e-04, &tj, &tj1, &result, _state);
   15332           0 :     return result;
   15333             : }
   15334             : 
   15335             : 
   15336             : /*************************************************************************
   15337             : Tail(S, 8, 15)
   15338             : *************************************************************************/
   15339           0 : static double mannwhitneyu_utbln8n15(double s, ae_state *_state)
   15340             : {
   15341             :     double x;
   15342             :     double tj;
   15343             :     double tj1;
   15344             :     double result;
   15345             : 
   15346             : 
   15347           0 :     result = (double)(0);
   15348           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.600000e+00-1, 1.0, _state);
   15349           0 :     tj = (double)(1);
   15350           0 :     tj1 = x;
   15351           0 :     mannwhitneyu_ucheb(x, -4.358397e+00, &tj, &tj1, &result, _state);
   15352           0 :     mannwhitneyu_ucheb(x, -4.674485e+00, &tj, &tj1, &result, _state);
   15353           0 :     mannwhitneyu_ucheb(x, -1.155941e+00, &tj, &tj1, &result, _state);
   15354           0 :     mannwhitneyu_ucheb(x, -2.195780e-01, &tj, &tj1, &result, _state);
   15355           0 :     mannwhitneyu_ucheb(x, -6.544830e-02, &tj, &tj1, &result, _state);
   15356           0 :     mannwhitneyu_ucheb(x, -2.426183e-02, &tj, &tj1, &result, _state);
   15357           0 :     mannwhitneyu_ucheb(x, -9.309902e-03, &tj, &tj1, &result, _state);
   15358           0 :     mannwhitneyu_ucheb(x, -3.650956e-03, &tj, &tj1, &result, _state);
   15359           0 :     mannwhitneyu_ucheb(x, -1.068874e-03, &tj, &tj1, &result, _state);
   15360           0 :     mannwhitneyu_ucheb(x, 1.538544e-04, &tj, &tj1, &result, _state);
   15361           0 :     mannwhitneyu_ucheb(x, 8.192525e-04, &tj, &tj1, &result, _state);
   15362           0 :     mannwhitneyu_ucheb(x, 1.073905e-03, &tj, &tj1, &result, _state);
   15363           0 :     mannwhitneyu_ucheb(x, 1.079673e-03, &tj, &tj1, &result, _state);
   15364           0 :     mannwhitneyu_ucheb(x, 9.423572e-04, &tj, &tj1, &result, _state);
   15365           0 :     mannwhitneyu_ucheb(x, 6.579647e-04, &tj, &tj1, &result, _state);
   15366           0 :     mannwhitneyu_ucheb(x, 4.765904e-04, &tj, &tj1, &result, _state);
   15367           0 :     return result;
   15368             : }
   15369             : 
   15370             : 
   15371             : /*************************************************************************
   15372             : Tail(S, 8, 30)
   15373             : *************************************************************************/
   15374           0 : static double mannwhitneyu_utbln8n30(double s, ae_state *_state)
   15375             : {
   15376             :     double x;
   15377             :     double tj;
   15378             :     double tj1;
   15379             :     double result;
   15380             : 
   15381             : 
   15382           0 :     result = (double)(0);
   15383           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.600000e+00-1, 1.0, _state);
   15384           0 :     tj = (double)(1);
   15385           0 :     tj1 = x;
   15386           0 :     mannwhitneyu_ucheb(x, -4.318823e+00, &tj, &tj1, &result, _state);
   15387           0 :     mannwhitneyu_ucheb(x, -4.567159e+00, &tj, &tj1, &result, _state);
   15388           0 :     mannwhitneyu_ucheb(x, -1.064864e+00, &tj, &tj1, &result, _state);
   15389           0 :     mannwhitneyu_ucheb(x, -1.688413e-01, &tj, &tj1, &result, _state);
   15390           0 :     mannwhitneyu_ucheb(x, -4.153712e-02, &tj, &tj1, &result, _state);
   15391           0 :     mannwhitneyu_ucheb(x, -1.309389e-02, &tj, &tj1, &result, _state);
   15392           0 :     mannwhitneyu_ucheb(x, -4.226861e-03, &tj, &tj1, &result, _state);
   15393           0 :     mannwhitneyu_ucheb(x, -1.523815e-03, &tj, &tj1, &result, _state);
   15394           0 :     mannwhitneyu_ucheb(x, -5.780987e-04, &tj, &tj1, &result, _state);
   15395           0 :     mannwhitneyu_ucheb(x, -2.166866e-04, &tj, &tj1, &result, _state);
   15396           0 :     mannwhitneyu_ucheb(x, -6.922431e-05, &tj, &tj1, &result, _state);
   15397           0 :     mannwhitneyu_ucheb(x, -1.466397e-05, &tj, &tj1, &result, _state);
   15398           0 :     mannwhitneyu_ucheb(x, -5.690036e-06, &tj, &tj1, &result, _state);
   15399           0 :     mannwhitneyu_ucheb(x, -1.008185e-05, &tj, &tj1, &result, _state);
   15400           0 :     mannwhitneyu_ucheb(x, -9.271903e-06, &tj, &tj1, &result, _state);
   15401           0 :     mannwhitneyu_ucheb(x, -7.534751e-06, &tj, &tj1, &result, _state);
   15402           0 :     return result;
   15403             : }
   15404             : 
   15405             : 
   15406             : /*************************************************************************
   15407             : Tail(S, 8, 100)
   15408             : *************************************************************************/
   15409           0 : static double mannwhitneyu_utbln8n100(double s, ae_state *_state)
   15410             : {
   15411             :     double x;
   15412             :     double tj;
   15413             :     double tj1;
   15414             :     double result;
   15415             : 
   15416             : 
   15417           0 :     result = (double)(0);
   15418           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.600000e+00-1, 1.0, _state);
   15419           0 :     tj = (double)(1);
   15420           0 :     tj1 = x;
   15421           0 :     mannwhitneyu_ucheb(x, -4.324531e+00, &tj, &tj1, &result, _state);
   15422           0 :     mannwhitneyu_ucheb(x, -4.547071e+00, &tj, &tj1, &result, _state);
   15423           0 :     mannwhitneyu_ucheb(x, -1.038129e+00, &tj, &tj1, &result, _state);
   15424           0 :     mannwhitneyu_ucheb(x, -1.541549e-01, &tj, &tj1, &result, _state);
   15425           0 :     mannwhitneyu_ucheb(x, -3.525605e-02, &tj, &tj1, &result, _state);
   15426           0 :     mannwhitneyu_ucheb(x, -1.044992e-02, &tj, &tj1, &result, _state);
   15427           0 :     mannwhitneyu_ucheb(x, -3.085713e-03, &tj, &tj1, &result, _state);
   15428           0 :     mannwhitneyu_ucheb(x, -1.017871e-03, &tj, &tj1, &result, _state);
   15429           0 :     mannwhitneyu_ucheb(x, -3.459226e-04, &tj, &tj1, &result, _state);
   15430           0 :     mannwhitneyu_ucheb(x, -1.092064e-04, &tj, &tj1, &result, _state);
   15431           0 :     mannwhitneyu_ucheb(x, -2.024349e-05, &tj, &tj1, &result, _state);
   15432           0 :     mannwhitneyu_ucheb(x, 7.366347e-06, &tj, &tj1, &result, _state);
   15433           0 :     mannwhitneyu_ucheb(x, 6.385637e-06, &tj, &tj1, &result, _state);
   15434           0 :     mannwhitneyu_ucheb(x, 8.321722e-08, &tj, &tj1, &result, _state);
   15435           0 :     mannwhitneyu_ucheb(x, -1.439286e-06, &tj, &tj1, &result, _state);
   15436           0 :     mannwhitneyu_ucheb(x, -3.058079e-07, &tj, &tj1, &result, _state);
   15437           0 :     return result;
   15438             : }
   15439             : 
   15440             : 
   15441             : /*************************************************************************
   15442             : Tail(S, 9, 9)
   15443             : *************************************************************************/
   15444           0 : static double mannwhitneyu_utbln9n9(double s, ae_state *_state)
   15445             : {
   15446             :     double x;
   15447             :     double tj;
   15448             :     double tj1;
   15449             :     double result;
   15450             : 
   15451             : 
   15452           0 :     result = (double)(0);
   15453           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.576237e+00-1, 1.0, _state);
   15454           0 :     tj = (double)(1);
   15455           0 :     tj1 = x;
   15456           0 :     mannwhitneyu_ucheb(x, -4.372857e+00, &tj, &tj1, &result, _state);
   15457           0 :     mannwhitneyu_ucheb(x, -4.750859e+00, &tj, &tj1, &result, _state);
   15458           0 :     mannwhitneyu_ucheb(x, -1.248233e+00, &tj, &tj1, &result, _state);
   15459           0 :     mannwhitneyu_ucheb(x, -2.792868e-01, &tj, &tj1, &result, _state);
   15460           0 :     mannwhitneyu_ucheb(x, -9.559372e-02, &tj, &tj1, &result, _state);
   15461           0 :     mannwhitneyu_ucheb(x, -3.894941e-02, &tj, &tj1, &result, _state);
   15462           0 :     mannwhitneyu_ucheb(x, -1.643256e-02, &tj, &tj1, &result, _state);
   15463           0 :     mannwhitneyu_ucheb(x, -7.091370e-03, &tj, &tj1, &result, _state);
   15464           0 :     mannwhitneyu_ucheb(x, -2.285034e-03, &tj, &tj1, &result, _state);
   15465           0 :     mannwhitneyu_ucheb(x, 6.112997e-04, &tj, &tj1, &result, _state);
   15466           0 :     mannwhitneyu_ucheb(x, 2.806229e-03, &tj, &tj1, &result, _state);
   15467           0 :     mannwhitneyu_ucheb(x, 4.150741e-03, &tj, &tj1, &result, _state);
   15468           0 :     mannwhitneyu_ucheb(x, 4.509825e-03, &tj, &tj1, &result, _state);
   15469           0 :     mannwhitneyu_ucheb(x, 3.891051e-03, &tj, &tj1, &result, _state);
   15470           0 :     mannwhitneyu_ucheb(x, 2.485013e-03, &tj, &tj1, &result, _state);
   15471           0 :     mannwhitneyu_ucheb(x, 1.343653e-03, &tj, &tj1, &result, _state);
   15472           0 :     return result;
   15473             : }
   15474             : 
   15475             : 
   15476             : /*************************************************************************
   15477             : Tail(S, 9, 10)
   15478             : *************************************************************************/
   15479           0 : static double mannwhitneyu_utbln9n10(double s, ae_state *_state)
   15480             : {
   15481             :     double x;
   15482             :     double tj;
   15483             :     double tj1;
   15484             :     double result;
   15485             : 
   15486             : 
   15487           0 :     result = (double)(0);
   15488           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15489           0 :     tj = (double)(1);
   15490           0 :     tj1 = x;
   15491           0 :     mannwhitneyu_ucheb(x, -4.516726e+00, &tj, &tj1, &result, _state);
   15492           0 :     mannwhitneyu_ucheb(x, -4.939333e+00, &tj, &tj1, &result, _state);
   15493           0 :     mannwhitneyu_ucheb(x, -1.305046e+00, &tj, &tj1, &result, _state);
   15494           0 :     mannwhitneyu_ucheb(x, -2.935326e-01, &tj, &tj1, &result, _state);
   15495           0 :     mannwhitneyu_ucheb(x, -1.029141e-01, &tj, &tj1, &result, _state);
   15496           0 :     mannwhitneyu_ucheb(x, -4.420592e-02, &tj, &tj1, &result, _state);
   15497           0 :     mannwhitneyu_ucheb(x, -2.053140e-02, &tj, &tj1, &result, _state);
   15498           0 :     mannwhitneyu_ucheb(x, -1.065930e-02, &tj, &tj1, &result, _state);
   15499           0 :     mannwhitneyu_ucheb(x, -5.523581e-03, &tj, &tj1, &result, _state);
   15500           0 :     mannwhitneyu_ucheb(x, -2.544888e-03, &tj, &tj1, &result, _state);
   15501           0 :     mannwhitneyu_ucheb(x, -1.813741e-04, &tj, &tj1, &result, _state);
   15502           0 :     mannwhitneyu_ucheb(x, 1.510631e-03, &tj, &tj1, &result, _state);
   15503           0 :     mannwhitneyu_ucheb(x, 2.536057e-03, &tj, &tj1, &result, _state);
   15504           0 :     mannwhitneyu_ucheb(x, 2.833815e-03, &tj, &tj1, &result, _state);
   15505           0 :     mannwhitneyu_ucheb(x, 2.189692e-03, &tj, &tj1, &result, _state);
   15506           0 :     mannwhitneyu_ucheb(x, 1.615050e-03, &tj, &tj1, &result, _state);
   15507           0 :     return result;
   15508             : }
   15509             : 
   15510             : 
   15511             : /*************************************************************************
   15512             : Tail(S, 9, 11)
   15513             : *************************************************************************/
   15514           0 : static double mannwhitneyu_utbln9n11(double s, ae_state *_state)
   15515             : {
   15516             :     double x;
   15517             :     double tj;
   15518             :     double tj1;
   15519             :     double result;
   15520             : 
   15521             : 
   15522           0 :     result = (double)(0);
   15523           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15524           0 :     tj = (double)(1);
   15525           0 :     tj1 = x;
   15526           0 :     mannwhitneyu_ucheb(x, -4.481308e+00, &tj, &tj1, &result, _state);
   15527           0 :     mannwhitneyu_ucheb(x, -4.867483e+00, &tj, &tj1, &result, _state);
   15528           0 :     mannwhitneyu_ucheb(x, -1.249072e+00, &tj, &tj1, &result, _state);
   15529           0 :     mannwhitneyu_ucheb(x, -2.591790e-01, &tj, &tj1, &result, _state);
   15530           0 :     mannwhitneyu_ucheb(x, -8.400128e-02, &tj, &tj1, &result, _state);
   15531           0 :     mannwhitneyu_ucheb(x, -3.341992e-02, &tj, &tj1, &result, _state);
   15532           0 :     mannwhitneyu_ucheb(x, -1.463680e-02, &tj, &tj1, &result, _state);
   15533           0 :     mannwhitneyu_ucheb(x, -7.487211e-03, &tj, &tj1, &result, _state);
   15534           0 :     mannwhitneyu_ucheb(x, -4.671196e-03, &tj, &tj1, &result, _state);
   15535           0 :     mannwhitneyu_ucheb(x, -3.343472e-03, &tj, &tj1, &result, _state);
   15536           0 :     mannwhitneyu_ucheb(x, -2.544146e-03, &tj, &tj1, &result, _state);
   15537           0 :     mannwhitneyu_ucheb(x, -1.802335e-03, &tj, &tj1, &result, _state);
   15538           0 :     mannwhitneyu_ucheb(x, -1.117084e-03, &tj, &tj1, &result, _state);
   15539           0 :     mannwhitneyu_ucheb(x, -6.217443e-04, &tj, &tj1, &result, _state);
   15540           0 :     mannwhitneyu_ucheb(x, -2.858766e-04, &tj, &tj1, &result, _state);
   15541           0 :     mannwhitneyu_ucheb(x, -3.193687e-04, &tj, &tj1, &result, _state);
   15542           0 :     return result;
   15543             : }
   15544             : 
   15545             : 
   15546             : /*************************************************************************
   15547             : Tail(S, 9, 12)
   15548             : *************************************************************************/
   15549           0 : static double mannwhitneyu_utbln9n12(double s, ae_state *_state)
   15550             : {
   15551             :     double x;
   15552             :     double tj;
   15553             :     double tj1;
   15554             :     double result;
   15555             : 
   15556             : 
   15557           0 :     result = (double)(0);
   15558           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15559           0 :     tj = (double)(1);
   15560           0 :     tj1 = x;
   15561           0 :     mannwhitneyu_ucheb(x, -4.456776e+00, &tj, &tj1, &result, _state);
   15562           0 :     mannwhitneyu_ucheb(x, -4.817037e+00, &tj, &tj1, &result, _state);
   15563           0 :     mannwhitneyu_ucheb(x, -1.209788e+00, &tj, &tj1, &result, _state);
   15564           0 :     mannwhitneyu_ucheb(x, -2.362108e-01, &tj, &tj1, &result, _state);
   15565           0 :     mannwhitneyu_ucheb(x, -7.171356e-02, &tj, &tj1, &result, _state);
   15566           0 :     mannwhitneyu_ucheb(x, -2.661557e-02, &tj, &tj1, &result, _state);
   15567           0 :     mannwhitneyu_ucheb(x, -1.026141e-02, &tj, &tj1, &result, _state);
   15568           0 :     mannwhitneyu_ucheb(x, -4.361908e-03, &tj, &tj1, &result, _state);
   15569           0 :     mannwhitneyu_ucheb(x, -2.093885e-03, &tj, &tj1, &result, _state);
   15570           0 :     mannwhitneyu_ucheb(x, -1.298389e-03, &tj, &tj1, &result, _state);
   15571           0 :     mannwhitneyu_ucheb(x, -9.663603e-04, &tj, &tj1, &result, _state);
   15572           0 :     mannwhitneyu_ucheb(x, -7.768522e-04, &tj, &tj1, &result, _state);
   15573           0 :     mannwhitneyu_ucheb(x, -5.579015e-04, &tj, &tj1, &result, _state);
   15574           0 :     mannwhitneyu_ucheb(x, -2.868677e-04, &tj, &tj1, &result, _state);
   15575           0 :     mannwhitneyu_ucheb(x, -7.440652e-05, &tj, &tj1, &result, _state);
   15576           0 :     mannwhitneyu_ucheb(x, 1.523037e-04, &tj, &tj1, &result, _state);
   15577           0 :     return result;
   15578             : }
   15579             : 
   15580             : 
   15581             : /*************************************************************************
   15582             : Tail(S, 9, 13)
   15583             : *************************************************************************/
   15584           0 : static double mannwhitneyu_utbln9n13(double s, ae_state *_state)
   15585             : {
   15586             :     double x;
   15587             :     double tj;
   15588             :     double tj1;
   15589             :     double result;
   15590             : 
   15591             : 
   15592           0 :     result = (double)(0);
   15593           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15594           0 :     tj = (double)(1);
   15595           0 :     tj1 = x;
   15596           0 :     mannwhitneyu_ucheb(x, -4.438840e+00, &tj, &tj1, &result, _state);
   15597           0 :     mannwhitneyu_ucheb(x, -4.779308e+00, &tj, &tj1, &result, _state);
   15598           0 :     mannwhitneyu_ucheb(x, -1.180614e+00, &tj, &tj1, &result, _state);
   15599           0 :     mannwhitneyu_ucheb(x, -2.196489e-01, &tj, &tj1, &result, _state);
   15600           0 :     mannwhitneyu_ucheb(x, -6.346621e-02, &tj, &tj1, &result, _state);
   15601           0 :     mannwhitneyu_ucheb(x, -2.234857e-02, &tj, &tj1, &result, _state);
   15602           0 :     mannwhitneyu_ucheb(x, -7.796211e-03, &tj, &tj1, &result, _state);
   15603           0 :     mannwhitneyu_ucheb(x, -2.575715e-03, &tj, &tj1, &result, _state);
   15604           0 :     mannwhitneyu_ucheb(x, -5.525647e-04, &tj, &tj1, &result, _state);
   15605           0 :     mannwhitneyu_ucheb(x, 1.964651e-04, &tj, &tj1, &result, _state);
   15606           0 :     mannwhitneyu_ucheb(x, 4.275235e-04, &tj, &tj1, &result, _state);
   15607           0 :     mannwhitneyu_ucheb(x, 4.299124e-04, &tj, &tj1, &result, _state);
   15608           0 :     mannwhitneyu_ucheb(x, 3.397416e-04, &tj, &tj1, &result, _state);
   15609           0 :     mannwhitneyu_ucheb(x, 2.295781e-04, &tj, &tj1, &result, _state);
   15610           0 :     mannwhitneyu_ucheb(x, 1.237619e-04, &tj, &tj1, &result, _state);
   15611           0 :     mannwhitneyu_ucheb(x, 7.269692e-05, &tj, &tj1, &result, _state);
   15612           0 :     return result;
   15613             : }
   15614             : 
   15615             : 
   15616             : /*************************************************************************
   15617             : Tail(S, 9, 14)
   15618             : *************************************************************************/
   15619           0 : static double mannwhitneyu_utbln9n14(double s, ae_state *_state)
   15620             : {
   15621             :     double x;
   15622             :     double tj;
   15623             :     double tj1;
   15624             :     double result;
   15625             : 
   15626             : 
   15627           0 :     result = (double)(0);
   15628           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15629           0 :     tj = (double)(1);
   15630           0 :     tj1 = x;
   15631           0 :     mannwhitneyu_ucheb(x, -4.425981e+00, &tj, &tj1, &result, _state);
   15632           0 :     mannwhitneyu_ucheb(x, -4.751545e+00, &tj, &tj1, &result, _state);
   15633           0 :     mannwhitneyu_ucheb(x, -1.159543e+00, &tj, &tj1, &result, _state);
   15634           0 :     mannwhitneyu_ucheb(x, -2.086570e-01, &tj, &tj1, &result, _state);
   15635           0 :     mannwhitneyu_ucheb(x, -5.917446e-02, &tj, &tj1, &result, _state);
   15636           0 :     mannwhitneyu_ucheb(x, -2.120112e-02, &tj, &tj1, &result, _state);
   15637           0 :     mannwhitneyu_ucheb(x, -8.175519e-03, &tj, &tj1, &result, _state);
   15638           0 :     mannwhitneyu_ucheb(x, -3.515473e-03, &tj, &tj1, &result, _state);
   15639           0 :     mannwhitneyu_ucheb(x, -1.727772e-03, &tj, &tj1, &result, _state);
   15640           0 :     mannwhitneyu_ucheb(x, -9.070629e-04, &tj, &tj1, &result, _state);
   15641           0 :     mannwhitneyu_ucheb(x, -5.677569e-04, &tj, &tj1, &result, _state);
   15642           0 :     mannwhitneyu_ucheb(x, -3.876953e-04, &tj, &tj1, &result, _state);
   15643           0 :     mannwhitneyu_ucheb(x, -3.233502e-04, &tj, &tj1, &result, _state);
   15644           0 :     mannwhitneyu_ucheb(x, -3.508182e-04, &tj, &tj1, &result, _state);
   15645           0 :     mannwhitneyu_ucheb(x, -3.120389e-04, &tj, &tj1, &result, _state);
   15646           0 :     mannwhitneyu_ucheb(x, -3.847212e-04, &tj, &tj1, &result, _state);
   15647           0 :     return result;
   15648             : }
   15649             : 
   15650             : 
   15651             : /*************************************************************************
   15652             : Tail(S, 9, 15)
   15653             : *************************************************************************/
   15654           0 : static double mannwhitneyu_utbln9n15(double s, ae_state *_state)
   15655             : {
   15656             :     double x;
   15657             :     double tj;
   15658             :     double tj1;
   15659             :     double result;
   15660             : 
   15661             : 
   15662           0 :     result = (double)(0);
   15663           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15664           0 :     tj = (double)(1);
   15665           0 :     tj1 = x;
   15666           0 :     mannwhitneyu_ucheb(x, -4.414952e+00, &tj, &tj1, &result, _state);
   15667           0 :     mannwhitneyu_ucheb(x, -4.727612e+00, &tj, &tj1, &result, _state);
   15668           0 :     mannwhitneyu_ucheb(x, -1.140634e+00, &tj, &tj1, &result, _state);
   15669           0 :     mannwhitneyu_ucheb(x, -1.981231e-01, &tj, &tj1, &result, _state);
   15670           0 :     mannwhitneyu_ucheb(x, -5.382635e-02, &tj, &tj1, &result, _state);
   15671           0 :     mannwhitneyu_ucheb(x, -1.853575e-02, &tj, &tj1, &result, _state);
   15672           0 :     mannwhitneyu_ucheb(x, -6.571051e-03, &tj, &tj1, &result, _state);
   15673           0 :     mannwhitneyu_ucheb(x, -2.567625e-03, &tj, &tj1, &result, _state);
   15674           0 :     mannwhitneyu_ucheb(x, -9.214197e-04, &tj, &tj1, &result, _state);
   15675           0 :     mannwhitneyu_ucheb(x, -2.448700e-04, &tj, &tj1, &result, _state);
   15676           0 :     mannwhitneyu_ucheb(x, 1.712669e-04, &tj, &tj1, &result, _state);
   15677           0 :     mannwhitneyu_ucheb(x, 4.015050e-04, &tj, &tj1, &result, _state);
   15678           0 :     mannwhitneyu_ucheb(x, 5.438610e-04, &tj, &tj1, &result, _state);
   15679           0 :     mannwhitneyu_ucheb(x, 6.301363e-04, &tj, &tj1, &result, _state);
   15680           0 :     mannwhitneyu_ucheb(x, 5.309386e-04, &tj, &tj1, &result, _state);
   15681           0 :     mannwhitneyu_ucheb(x, 5.164772e-04, &tj, &tj1, &result, _state);
   15682           0 :     return result;
   15683             : }
   15684             : 
   15685             : 
   15686             : /*************************************************************************
   15687             : Tail(S, 9, 30)
   15688             : *************************************************************************/
   15689           0 : static double mannwhitneyu_utbln9n30(double s, ae_state *_state)
   15690             : {
   15691             :     double x;
   15692             :     double tj;
   15693             :     double tj1;
   15694             :     double result;
   15695             : 
   15696             : 
   15697           0 :     result = (double)(0);
   15698           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15699           0 :     tj = (double)(1);
   15700           0 :     tj1 = x;
   15701           0 :     mannwhitneyu_ucheb(x, -4.370720e+00, &tj, &tj1, &result, _state);
   15702           0 :     mannwhitneyu_ucheb(x, -4.615712e+00, &tj, &tj1, &result, _state);
   15703           0 :     mannwhitneyu_ucheb(x, -1.050023e+00, &tj, &tj1, &result, _state);
   15704           0 :     mannwhitneyu_ucheb(x, -1.504775e-01, &tj, &tj1, &result, _state);
   15705           0 :     mannwhitneyu_ucheb(x, -3.318265e-02, &tj, &tj1, &result, _state);
   15706           0 :     mannwhitneyu_ucheb(x, -9.646826e-03, &tj, &tj1, &result, _state);
   15707           0 :     mannwhitneyu_ucheb(x, -2.741492e-03, &tj, &tj1, &result, _state);
   15708           0 :     mannwhitneyu_ucheb(x, -8.735360e-04, &tj, &tj1, &result, _state);
   15709           0 :     mannwhitneyu_ucheb(x, -2.966911e-04, &tj, &tj1, &result, _state);
   15710           0 :     mannwhitneyu_ucheb(x, -1.100738e-04, &tj, &tj1, &result, _state);
   15711           0 :     mannwhitneyu_ucheb(x, -4.348991e-05, &tj, &tj1, &result, _state);
   15712           0 :     mannwhitneyu_ucheb(x, -1.527687e-05, &tj, &tj1, &result, _state);
   15713           0 :     mannwhitneyu_ucheb(x, -2.917286e-06, &tj, &tj1, &result, _state);
   15714           0 :     mannwhitneyu_ucheb(x, 3.397466e-07, &tj, &tj1, &result, _state);
   15715           0 :     mannwhitneyu_ucheb(x, -2.360175e-07, &tj, &tj1, &result, _state);
   15716           0 :     mannwhitneyu_ucheb(x, -9.892252e-07, &tj, &tj1, &result, _state);
   15717           0 :     return result;
   15718             : }
   15719             : 
   15720             : 
   15721             : /*************************************************************************
   15722             : Tail(S, 9, 100)
   15723             : *************************************************************************/
   15724           0 : static double mannwhitneyu_utbln9n100(double s, ae_state *_state)
   15725             : {
   15726             :     double x;
   15727             :     double tj;
   15728             :     double tj1;
   15729             :     double result;
   15730             : 
   15731             : 
   15732           0 :     result = (double)(0);
   15733           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15734           0 :     tj = (double)(1);
   15735           0 :     tj1 = x;
   15736           0 :     mannwhitneyu_ucheb(x, -4.372506e+00, &tj, &tj1, &result, _state);
   15737           0 :     mannwhitneyu_ucheb(x, -4.590966e+00, &tj, &tj1, &result, _state);
   15738           0 :     mannwhitneyu_ucheb(x, -1.021758e+00, &tj, &tj1, &result, _state);
   15739           0 :     mannwhitneyu_ucheb(x, -1.359849e-01, &tj, &tj1, &result, _state);
   15740           0 :     mannwhitneyu_ucheb(x, -2.755519e-02, &tj, &tj1, &result, _state);
   15741           0 :     mannwhitneyu_ucheb(x, -7.533166e-03, &tj, &tj1, &result, _state);
   15742           0 :     mannwhitneyu_ucheb(x, -1.936659e-03, &tj, &tj1, &result, _state);
   15743           0 :     mannwhitneyu_ucheb(x, -5.634913e-04, &tj, &tj1, &result, _state);
   15744           0 :     mannwhitneyu_ucheb(x, -1.730053e-04, &tj, &tj1, &result, _state);
   15745           0 :     mannwhitneyu_ucheb(x, -5.791845e-05, &tj, &tj1, &result, _state);
   15746           0 :     mannwhitneyu_ucheb(x, -2.030682e-05, &tj, &tj1, &result, _state);
   15747           0 :     mannwhitneyu_ucheb(x, -5.228663e-06, &tj, &tj1, &result, _state);
   15748           0 :     mannwhitneyu_ucheb(x, 8.631175e-07, &tj, &tj1, &result, _state);
   15749           0 :     mannwhitneyu_ucheb(x, 1.636749e-06, &tj, &tj1, &result, _state);
   15750           0 :     mannwhitneyu_ucheb(x, 4.404599e-07, &tj, &tj1, &result, _state);
   15751           0 :     mannwhitneyu_ucheb(x, -2.789872e-07, &tj, &tj1, &result, _state);
   15752           0 :     return result;
   15753             : }
   15754             : 
   15755             : 
   15756             : /*************************************************************************
   15757             : Tail(S, 10, 10)
   15758             : *************************************************************************/
   15759           0 : static double mannwhitneyu_utbln10n10(double s, ae_state *_state)
   15760             : {
   15761             :     double x;
   15762             :     double tj;
   15763             :     double tj1;
   15764             :     double result;
   15765             : 
   15766             : 
   15767           0 :     result = (double)(0);
   15768           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15769           0 :     tj = (double)(1);
   15770           0 :     tj1 = x;
   15771           0 :     mannwhitneyu_ucheb(x, -4.468831e+00, &tj, &tj1, &result, _state);
   15772           0 :     mannwhitneyu_ucheb(x, -4.844398e+00, &tj, &tj1, &result, _state);
   15773           0 :     mannwhitneyu_ucheb(x, -1.231728e+00, &tj, &tj1, &result, _state);
   15774           0 :     mannwhitneyu_ucheb(x, -2.486073e-01, &tj, &tj1, &result, _state);
   15775           0 :     mannwhitneyu_ucheb(x, -7.781321e-02, &tj, &tj1, &result, _state);
   15776           0 :     mannwhitneyu_ucheb(x, -2.971425e-02, &tj, &tj1, &result, _state);
   15777           0 :     mannwhitneyu_ucheb(x, -1.215371e-02, &tj, &tj1, &result, _state);
   15778           0 :     mannwhitneyu_ucheb(x, -5.828451e-03, &tj, &tj1, &result, _state);
   15779           0 :     mannwhitneyu_ucheb(x, -3.419872e-03, &tj, &tj1, &result, _state);
   15780           0 :     mannwhitneyu_ucheb(x, -2.430165e-03, &tj, &tj1, &result, _state);
   15781           0 :     mannwhitneyu_ucheb(x, -1.740363e-03, &tj, &tj1, &result, _state);
   15782           0 :     mannwhitneyu_ucheb(x, -1.049211e-03, &tj, &tj1, &result, _state);
   15783           0 :     mannwhitneyu_ucheb(x, -3.269371e-04, &tj, &tj1, &result, _state);
   15784           0 :     mannwhitneyu_ucheb(x, 2.211393e-04, &tj, &tj1, &result, _state);
   15785           0 :     mannwhitneyu_ucheb(x, 4.232314e-04, &tj, &tj1, &result, _state);
   15786           0 :     mannwhitneyu_ucheb(x, 3.016081e-04, &tj, &tj1, &result, _state);
   15787           0 :     return result;
   15788             : }
   15789             : 
   15790             : 
   15791             : /*************************************************************************
   15792             : Tail(S, 10, 11)
   15793             : *************************************************************************/
   15794           0 : static double mannwhitneyu_utbln10n11(double s, ae_state *_state)
   15795             : {
   15796             :     double x;
   15797             :     double tj;
   15798             :     double tj1;
   15799             :     double result;
   15800             : 
   15801             : 
   15802           0 :     result = (double)(0);
   15803           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15804           0 :     tj = (double)(1);
   15805           0 :     tj1 = x;
   15806           0 :     mannwhitneyu_ucheb(x, -4.437998e+00, &tj, &tj1, &result, _state);
   15807           0 :     mannwhitneyu_ucheb(x, -4.782296e+00, &tj, &tj1, &result, _state);
   15808           0 :     mannwhitneyu_ucheb(x, -1.184732e+00, &tj, &tj1, &result, _state);
   15809           0 :     mannwhitneyu_ucheb(x, -2.219585e-01, &tj, &tj1, &result, _state);
   15810           0 :     mannwhitneyu_ucheb(x, -6.457012e-02, &tj, &tj1, &result, _state);
   15811           0 :     mannwhitneyu_ucheb(x, -2.296008e-02, &tj, &tj1, &result, _state);
   15812           0 :     mannwhitneyu_ucheb(x, -8.481501e-03, &tj, &tj1, &result, _state);
   15813           0 :     mannwhitneyu_ucheb(x, -3.527940e-03, &tj, &tj1, &result, _state);
   15814           0 :     mannwhitneyu_ucheb(x, -1.953426e-03, &tj, &tj1, &result, _state);
   15815           0 :     mannwhitneyu_ucheb(x, -1.563840e-03, &tj, &tj1, &result, _state);
   15816           0 :     mannwhitneyu_ucheb(x, -1.574403e-03, &tj, &tj1, &result, _state);
   15817           0 :     mannwhitneyu_ucheb(x, -1.535775e-03, &tj, &tj1, &result, _state);
   15818           0 :     mannwhitneyu_ucheb(x, -1.338037e-03, &tj, &tj1, &result, _state);
   15819           0 :     mannwhitneyu_ucheb(x, -1.002654e-03, &tj, &tj1, &result, _state);
   15820           0 :     mannwhitneyu_ucheb(x, -5.852676e-04, &tj, &tj1, &result, _state);
   15821           0 :     mannwhitneyu_ucheb(x, -3.318132e-04, &tj, &tj1, &result, _state);
   15822           0 :     return result;
   15823             : }
   15824             : 
   15825             : 
   15826             : /*************************************************************************
   15827             : Tail(S, 10, 12)
   15828             : *************************************************************************/
   15829           0 : static double mannwhitneyu_utbln10n12(double s, ae_state *_state)
   15830             : {
   15831             :     double x;
   15832             :     double tj;
   15833             :     double tj1;
   15834             :     double result;
   15835             : 
   15836             : 
   15837           0 :     result = (double)(0);
   15838           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15839           0 :     tj = (double)(1);
   15840           0 :     tj1 = x;
   15841           0 :     mannwhitneyu_ucheb(x, -4.416082e+00, &tj, &tj1, &result, _state);
   15842           0 :     mannwhitneyu_ucheb(x, -4.737458e+00, &tj, &tj1, &result, _state);
   15843           0 :     mannwhitneyu_ucheb(x, -1.150952e+00, &tj, &tj1, &result, _state);
   15844           0 :     mannwhitneyu_ucheb(x, -2.036884e-01, &tj, &tj1, &result, _state);
   15845           0 :     mannwhitneyu_ucheb(x, -5.609030e-02, &tj, &tj1, &result, _state);
   15846           0 :     mannwhitneyu_ucheb(x, -1.908684e-02, &tj, &tj1, &result, _state);
   15847           0 :     mannwhitneyu_ucheb(x, -6.439666e-03, &tj, &tj1, &result, _state);
   15848           0 :     mannwhitneyu_ucheb(x, -2.162647e-03, &tj, &tj1, &result, _state);
   15849           0 :     mannwhitneyu_ucheb(x, -6.451601e-04, &tj, &tj1, &result, _state);
   15850           0 :     mannwhitneyu_ucheb(x, -2.148757e-04, &tj, &tj1, &result, _state);
   15851           0 :     mannwhitneyu_ucheb(x, -1.803981e-04, &tj, &tj1, &result, _state);
   15852           0 :     mannwhitneyu_ucheb(x, -2.731621e-04, &tj, &tj1, &result, _state);
   15853           0 :     mannwhitneyu_ucheb(x, -3.346903e-04, &tj, &tj1, &result, _state);
   15854           0 :     mannwhitneyu_ucheb(x, -3.013151e-04, &tj, &tj1, &result, _state);
   15855           0 :     mannwhitneyu_ucheb(x, -1.956148e-04, &tj, &tj1, &result, _state);
   15856           0 :     mannwhitneyu_ucheb(x, -2.438381e-05, &tj, &tj1, &result, _state);
   15857           0 :     return result;
   15858             : }
   15859             : 
   15860             : 
   15861             : /*************************************************************************
   15862             : Tail(S, 10, 13)
   15863             : *************************************************************************/
   15864           0 : static double mannwhitneyu_utbln10n13(double s, ae_state *_state)
   15865             : {
   15866             :     double x;
   15867             :     double tj;
   15868             :     double tj1;
   15869             :     double result;
   15870             : 
   15871             : 
   15872           0 :     result = (double)(0);
   15873           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15874           0 :     tj = (double)(1);
   15875           0 :     tj1 = x;
   15876           0 :     mannwhitneyu_ucheb(x, -4.399480e+00, &tj, &tj1, &result, _state);
   15877           0 :     mannwhitneyu_ucheb(x, -4.702863e+00, &tj, &tj1, &result, _state);
   15878           0 :     mannwhitneyu_ucheb(x, -1.124829e+00, &tj, &tj1, &result, _state);
   15879           0 :     mannwhitneyu_ucheb(x, -1.897428e-01, &tj, &tj1, &result, _state);
   15880           0 :     mannwhitneyu_ucheb(x, -4.979802e-02, &tj, &tj1, &result, _state);
   15881           0 :     mannwhitneyu_ucheb(x, -1.634368e-02, &tj, &tj1, &result, _state);
   15882           0 :     mannwhitneyu_ucheb(x, -5.180461e-03, &tj, &tj1, &result, _state);
   15883           0 :     mannwhitneyu_ucheb(x, -1.484926e-03, &tj, &tj1, &result, _state);
   15884           0 :     mannwhitneyu_ucheb(x, -7.864376e-05, &tj, &tj1, &result, _state);
   15885           0 :     mannwhitneyu_ucheb(x, 4.186576e-04, &tj, &tj1, &result, _state);
   15886           0 :     mannwhitneyu_ucheb(x, 5.886925e-04, &tj, &tj1, &result, _state);
   15887           0 :     mannwhitneyu_ucheb(x, 5.836828e-04, &tj, &tj1, &result, _state);
   15888           0 :     mannwhitneyu_ucheb(x, 5.074756e-04, &tj, &tj1, &result, _state);
   15889           0 :     mannwhitneyu_ucheb(x, 4.209547e-04, &tj, &tj1, &result, _state);
   15890           0 :     mannwhitneyu_ucheb(x, 2.883266e-04, &tj, &tj1, &result, _state);
   15891           0 :     mannwhitneyu_ucheb(x, 2.380143e-04, &tj, &tj1, &result, _state);
   15892           0 :     return result;
   15893             : }
   15894             : 
   15895             : 
   15896             : /*************************************************************************
   15897             : Tail(S, 10, 14)
   15898             : *************************************************************************/
   15899           0 : static double mannwhitneyu_utbln10n14(double s, ae_state *_state)
   15900             : {
   15901             :     double x;
   15902             :     double tj;
   15903             :     double tj1;
   15904             :     double result;
   15905             : 
   15906             : 
   15907           0 :     result = (double)(0);
   15908           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15909           0 :     tj = (double)(1);
   15910           0 :     tj1 = x;
   15911           0 :     mannwhitneyu_ucheb(x, -4.386924e+00, &tj, &tj1, &result, _state);
   15912           0 :     mannwhitneyu_ucheb(x, -4.676124e+00, &tj, &tj1, &result, _state);
   15913           0 :     mannwhitneyu_ucheb(x, -1.104740e+00, &tj, &tj1, &result, _state);
   15914           0 :     mannwhitneyu_ucheb(x, -1.793826e-01, &tj, &tj1, &result, _state);
   15915           0 :     mannwhitneyu_ucheb(x, -4.558886e-02, &tj, &tj1, &result, _state);
   15916           0 :     mannwhitneyu_ucheb(x, -1.492462e-02, &tj, &tj1, &result, _state);
   15917           0 :     mannwhitneyu_ucheb(x, -5.052903e-03, &tj, &tj1, &result, _state);
   15918           0 :     mannwhitneyu_ucheb(x, -1.917782e-03, &tj, &tj1, &result, _state);
   15919           0 :     mannwhitneyu_ucheb(x, -7.878696e-04, &tj, &tj1, &result, _state);
   15920           0 :     mannwhitneyu_ucheb(x, -3.576046e-04, &tj, &tj1, &result, _state);
   15921           0 :     mannwhitneyu_ucheb(x, -1.764551e-04, &tj, &tj1, &result, _state);
   15922           0 :     mannwhitneyu_ucheb(x, -9.288778e-05, &tj, &tj1, &result, _state);
   15923           0 :     mannwhitneyu_ucheb(x, -4.757658e-05, &tj, &tj1, &result, _state);
   15924           0 :     mannwhitneyu_ucheb(x, -2.299101e-05, &tj, &tj1, &result, _state);
   15925           0 :     mannwhitneyu_ucheb(x, -9.265197e-06, &tj, &tj1, &result, _state);
   15926           0 :     mannwhitneyu_ucheb(x, -2.384503e-07, &tj, &tj1, &result, _state);
   15927           0 :     return result;
   15928             : }
   15929             : 
   15930             : 
   15931             : /*************************************************************************
   15932             : Tail(S, 10, 15)
   15933             : *************************************************************************/
   15934           0 : static double mannwhitneyu_utbln10n15(double s, ae_state *_state)
   15935             : {
   15936             :     double x;
   15937             :     double tj;
   15938             :     double tj1;
   15939             :     double result;
   15940             : 
   15941             : 
   15942           0 :     result = (double)(0);
   15943           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15944           0 :     tj = (double)(1);
   15945           0 :     tj1 = x;
   15946           0 :     mannwhitneyu_ucheb(x, -4.376846e+00, &tj, &tj1, &result, _state);
   15947           0 :     mannwhitneyu_ucheb(x, -4.654247e+00, &tj, &tj1, &result, _state);
   15948           0 :     mannwhitneyu_ucheb(x, -1.088083e+00, &tj, &tj1, &result, _state);
   15949           0 :     mannwhitneyu_ucheb(x, -1.705945e-01, &tj, &tj1, &result, _state);
   15950           0 :     mannwhitneyu_ucheb(x, -4.169677e-02, &tj, &tj1, &result, _state);
   15951           0 :     mannwhitneyu_ucheb(x, -1.317213e-02, &tj, &tj1, &result, _state);
   15952           0 :     mannwhitneyu_ucheb(x, -4.264836e-03, &tj, &tj1, &result, _state);
   15953           0 :     mannwhitneyu_ucheb(x, -1.548024e-03, &tj, &tj1, &result, _state);
   15954           0 :     mannwhitneyu_ucheb(x, -6.633910e-04, &tj, &tj1, &result, _state);
   15955           0 :     mannwhitneyu_ucheb(x, -3.505621e-04, &tj, &tj1, &result, _state);
   15956           0 :     mannwhitneyu_ucheb(x, -2.658588e-04, &tj, &tj1, &result, _state);
   15957           0 :     mannwhitneyu_ucheb(x, -2.320254e-04, &tj, &tj1, &result, _state);
   15958           0 :     mannwhitneyu_ucheb(x, -2.175277e-04, &tj, &tj1, &result, _state);
   15959           0 :     mannwhitneyu_ucheb(x, -2.122317e-04, &tj, &tj1, &result, _state);
   15960           0 :     mannwhitneyu_ucheb(x, -1.675688e-04, &tj, &tj1, &result, _state);
   15961           0 :     mannwhitneyu_ucheb(x, -1.661363e-04, &tj, &tj1, &result, _state);
   15962           0 :     return result;
   15963             : }
   15964             : 
   15965             : 
   15966             : /*************************************************************************
   15967             : Tail(S, 10, 30)
   15968             : *************************************************************************/
   15969           0 : static double mannwhitneyu_utbln10n30(double s, ae_state *_state)
   15970             : {
   15971             :     double x;
   15972             :     double tj;
   15973             :     double tj1;
   15974             :     double result;
   15975             : 
   15976             : 
   15977           0 :     result = (double)(0);
   15978           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   15979           0 :     tj = (double)(1);
   15980           0 :     tj1 = x;
   15981           0 :     mannwhitneyu_ucheb(x, -4.333977e+00, &tj, &tj1, &result, _state);
   15982           0 :     mannwhitneyu_ucheb(x, -4.548099e+00, &tj, &tj1, &result, _state);
   15983           0 :     mannwhitneyu_ucheb(x, -1.004444e+00, &tj, &tj1, &result, _state);
   15984           0 :     mannwhitneyu_ucheb(x, -1.291014e-01, &tj, &tj1, &result, _state);
   15985           0 :     mannwhitneyu_ucheb(x, -2.523674e-02, &tj, &tj1, &result, _state);
   15986           0 :     mannwhitneyu_ucheb(x, -6.828211e-03, &tj, &tj1, &result, _state);
   15987           0 :     mannwhitneyu_ucheb(x, -1.716917e-03, &tj, &tj1, &result, _state);
   15988           0 :     mannwhitneyu_ucheb(x, -4.894256e-04, &tj, &tj1, &result, _state);
   15989           0 :     mannwhitneyu_ucheb(x, -1.433371e-04, &tj, &tj1, &result, _state);
   15990           0 :     mannwhitneyu_ucheb(x, -4.522675e-05, &tj, &tj1, &result, _state);
   15991           0 :     mannwhitneyu_ucheb(x, -1.764192e-05, &tj, &tj1, &result, _state);
   15992           0 :     mannwhitneyu_ucheb(x, -9.140235e-06, &tj, &tj1, &result, _state);
   15993           0 :     mannwhitneyu_ucheb(x, -5.629230e-06, &tj, &tj1, &result, _state);
   15994           0 :     mannwhitneyu_ucheb(x, -3.541895e-06, &tj, &tj1, &result, _state);
   15995           0 :     mannwhitneyu_ucheb(x, -1.944946e-06, &tj, &tj1, &result, _state);
   15996           0 :     mannwhitneyu_ucheb(x, -1.726360e-06, &tj, &tj1, &result, _state);
   15997           0 :     return result;
   15998             : }
   15999             : 
   16000             : 
   16001             : /*************************************************************************
   16002             : Tail(S, 10, 100)
   16003             : *************************************************************************/
   16004           0 : static double mannwhitneyu_utbln10n100(double s, ae_state *_state)
   16005             : {
   16006             :     double x;
   16007             :     double tj;
   16008             :     double tj1;
   16009             :     double result;
   16010             : 
   16011             : 
   16012           0 :     result = (double)(0);
   16013           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.650000e+00-1, 1.0, _state);
   16014           0 :     tj = (double)(1);
   16015           0 :     tj1 = x;
   16016           0 :     mannwhitneyu_ucheb(x, -4.334008e+00, &tj, &tj1, &result, _state);
   16017           0 :     mannwhitneyu_ucheb(x, -4.522316e+00, &tj, &tj1, &result, _state);
   16018           0 :     mannwhitneyu_ucheb(x, -9.769627e-01, &tj, &tj1, &result, _state);
   16019           0 :     mannwhitneyu_ucheb(x, -1.158110e-01, &tj, &tj1, &result, _state);
   16020           0 :     mannwhitneyu_ucheb(x, -2.053650e-02, &tj, &tj1, &result, _state);
   16021           0 :     mannwhitneyu_ucheb(x, -5.242235e-03, &tj, &tj1, &result, _state);
   16022           0 :     mannwhitneyu_ucheb(x, -1.173571e-03, &tj, &tj1, &result, _state);
   16023           0 :     mannwhitneyu_ucheb(x, -3.033661e-04, &tj, &tj1, &result, _state);
   16024           0 :     mannwhitneyu_ucheb(x, -7.824732e-05, &tj, &tj1, &result, _state);
   16025           0 :     mannwhitneyu_ucheb(x, -2.084420e-05, &tj, &tj1, &result, _state);
   16026           0 :     mannwhitneyu_ucheb(x, -6.610036e-06, &tj, &tj1, &result, _state);
   16027           0 :     mannwhitneyu_ucheb(x, -2.728155e-06, &tj, &tj1, &result, _state);
   16028           0 :     mannwhitneyu_ucheb(x, -1.217130e-06, &tj, &tj1, &result, _state);
   16029           0 :     mannwhitneyu_ucheb(x, -2.340966e-07, &tj, &tj1, &result, _state);
   16030           0 :     mannwhitneyu_ucheb(x, 2.001235e-07, &tj, &tj1, &result, _state);
   16031           0 :     mannwhitneyu_ucheb(x, 1.694052e-07, &tj, &tj1, &result, _state);
   16032           0 :     return result;
   16033             : }
   16034             : 
   16035             : 
   16036             : /*************************************************************************
   16037             : Tail(S, 11, 11)
   16038             : *************************************************************************/
   16039           0 : static double mannwhitneyu_utbln11n11(double s, ae_state *_state)
   16040             : {
   16041             :     double x;
   16042             :     double tj;
   16043             :     double tj1;
   16044             :     double result;
   16045             : 
   16046             : 
   16047           0 :     result = (double)(0);
   16048           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16049           0 :     tj = (double)(1);
   16050           0 :     tj1 = x;
   16051           0 :     mannwhitneyu_ucheb(x, -4.519760e+00, &tj, &tj1, &result, _state);
   16052           0 :     mannwhitneyu_ucheb(x, -4.880694e+00, &tj, &tj1, &result, _state);
   16053           0 :     mannwhitneyu_ucheb(x, -1.200698e+00, &tj, &tj1, &result, _state);
   16054           0 :     mannwhitneyu_ucheb(x, -2.174092e-01, &tj, &tj1, &result, _state);
   16055           0 :     mannwhitneyu_ucheb(x, -6.072304e-02, &tj, &tj1, &result, _state);
   16056           0 :     mannwhitneyu_ucheb(x, -2.054773e-02, &tj, &tj1, &result, _state);
   16057           0 :     mannwhitneyu_ucheb(x, -6.506613e-03, &tj, &tj1, &result, _state);
   16058           0 :     mannwhitneyu_ucheb(x, -1.813942e-03, &tj, &tj1, &result, _state);
   16059           0 :     mannwhitneyu_ucheb(x, -1.223644e-04, &tj, &tj1, &result, _state);
   16060           0 :     mannwhitneyu_ucheb(x, 2.417416e-04, &tj, &tj1, &result, _state);
   16061           0 :     mannwhitneyu_ucheb(x, 2.499166e-04, &tj, &tj1, &result, _state);
   16062           0 :     mannwhitneyu_ucheb(x, 1.194332e-04, &tj, &tj1, &result, _state);
   16063           0 :     mannwhitneyu_ucheb(x, 7.369096e-05, &tj, &tj1, &result, _state);
   16064           0 :     mannwhitneyu_ucheb(x, 1.968590e-04, &tj, &tj1, &result, _state);
   16065           0 :     mannwhitneyu_ucheb(x, 2.630532e-04, &tj, &tj1, &result, _state);
   16066           0 :     mannwhitneyu_ucheb(x, 5.061000e-04, &tj, &tj1, &result, _state);
   16067           0 :     return result;
   16068             : }
   16069             : 
   16070             : 
   16071             : /*************************************************************************
   16072             : Tail(S, 11, 12)
   16073             : *************************************************************************/
   16074           0 : static double mannwhitneyu_utbln11n12(double s, ae_state *_state)
   16075             : {
   16076             :     double x;
   16077             :     double tj;
   16078             :     double tj1;
   16079             :     double result;
   16080             : 
   16081             : 
   16082           0 :     result = (double)(0);
   16083           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16084           0 :     tj = (double)(1);
   16085           0 :     tj1 = x;
   16086           0 :     mannwhitneyu_ucheb(x, -4.495790e+00, &tj, &tj1, &result, _state);
   16087           0 :     mannwhitneyu_ucheb(x, -4.832622e+00, &tj, &tj1, &result, _state);
   16088           0 :     mannwhitneyu_ucheb(x, -1.165420e+00, &tj, &tj1, &result, _state);
   16089           0 :     mannwhitneyu_ucheb(x, -1.987306e-01, &tj, &tj1, &result, _state);
   16090           0 :     mannwhitneyu_ucheb(x, -5.265621e-02, &tj, &tj1, &result, _state);
   16091           0 :     mannwhitneyu_ucheb(x, -1.723537e-02, &tj, &tj1, &result, _state);
   16092           0 :     mannwhitneyu_ucheb(x, -5.347406e-03, &tj, &tj1, &result, _state);
   16093           0 :     mannwhitneyu_ucheb(x, -1.353464e-03, &tj, &tj1, &result, _state);
   16094           0 :     mannwhitneyu_ucheb(x, 6.613369e-05, &tj, &tj1, &result, _state);
   16095           0 :     mannwhitneyu_ucheb(x, 5.102522e-04, &tj, &tj1, &result, _state);
   16096           0 :     mannwhitneyu_ucheb(x, 5.237709e-04, &tj, &tj1, &result, _state);
   16097           0 :     mannwhitneyu_ucheb(x, 3.665652e-04, &tj, &tj1, &result, _state);
   16098           0 :     mannwhitneyu_ucheb(x, 1.626903e-04, &tj, &tj1, &result, _state);
   16099           0 :     mannwhitneyu_ucheb(x, -1.167518e-05, &tj, &tj1, &result, _state);
   16100           0 :     mannwhitneyu_ucheb(x, -8.564455e-05, &tj, &tj1, &result, _state);
   16101           0 :     mannwhitneyu_ucheb(x, -1.047320e-04, &tj, &tj1, &result, _state);
   16102           0 :     return result;
   16103             : }
   16104             : 
   16105             : 
   16106             : /*************************************************************************
   16107             : Tail(S, 11, 13)
   16108             : *************************************************************************/
   16109           0 : static double mannwhitneyu_utbln11n13(double s, ae_state *_state)
   16110             : {
   16111             :     double x;
   16112             :     double tj;
   16113             :     double tj1;
   16114             :     double result;
   16115             : 
   16116             : 
   16117           0 :     result = (double)(0);
   16118           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16119           0 :     tj = (double)(1);
   16120           0 :     tj1 = x;
   16121           0 :     mannwhitneyu_ucheb(x, -4.477880e+00, &tj, &tj1, &result, _state);
   16122           0 :     mannwhitneyu_ucheb(x, -4.796242e+00, &tj, &tj1, &result, _state);
   16123           0 :     mannwhitneyu_ucheb(x, -1.138769e+00, &tj, &tj1, &result, _state);
   16124           0 :     mannwhitneyu_ucheb(x, -1.851739e-01, &tj, &tj1, &result, _state);
   16125           0 :     mannwhitneyu_ucheb(x, -4.722104e-02, &tj, &tj1, &result, _state);
   16126           0 :     mannwhitneyu_ucheb(x, -1.548304e-02, &tj, &tj1, &result, _state);
   16127           0 :     mannwhitneyu_ucheb(x, -5.176683e-03, &tj, &tj1, &result, _state);
   16128           0 :     mannwhitneyu_ucheb(x, -1.817895e-03, &tj, &tj1, &result, _state);
   16129           0 :     mannwhitneyu_ucheb(x, -5.842451e-04, &tj, &tj1, &result, _state);
   16130           0 :     mannwhitneyu_ucheb(x, -8.935870e-05, &tj, &tj1, &result, _state);
   16131           0 :     mannwhitneyu_ucheb(x, 8.421777e-05, &tj, &tj1, &result, _state);
   16132           0 :     mannwhitneyu_ucheb(x, 1.238831e-04, &tj, &tj1, &result, _state);
   16133           0 :     mannwhitneyu_ucheb(x, 8.867026e-05, &tj, &tj1, &result, _state);
   16134           0 :     mannwhitneyu_ucheb(x, 1.458255e-05, &tj, &tj1, &result, _state);
   16135           0 :     mannwhitneyu_ucheb(x, -3.306259e-05, &tj, &tj1, &result, _state);
   16136           0 :     mannwhitneyu_ucheb(x, -8.961487e-05, &tj, &tj1, &result, _state);
   16137           0 :     return result;
   16138             : }
   16139             : 
   16140             : 
   16141             : /*************************************************************************
   16142             : Tail(S, 11, 14)
   16143             : *************************************************************************/
   16144           0 : static double mannwhitneyu_utbln11n14(double s, ae_state *_state)
   16145             : {
   16146             :     double x;
   16147             :     double tj;
   16148             :     double tj1;
   16149             :     double result;
   16150             : 
   16151             : 
   16152           0 :     result = (double)(0);
   16153           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16154           0 :     tj = (double)(1);
   16155           0 :     tj1 = x;
   16156           0 :     mannwhitneyu_ucheb(x, -4.463683e+00, &tj, &tj1, &result, _state);
   16157           0 :     mannwhitneyu_ucheb(x, -4.766969e+00, &tj, &tj1, &result, _state);
   16158           0 :     mannwhitneyu_ucheb(x, -1.117082e+00, &tj, &tj1, &result, _state);
   16159           0 :     mannwhitneyu_ucheb(x, -1.739574e-01, &tj, &tj1, &result, _state);
   16160           0 :     mannwhitneyu_ucheb(x, -4.238865e-02, &tj, &tj1, &result, _state);
   16161           0 :     mannwhitneyu_ucheb(x, -1.350306e-02, &tj, &tj1, &result, _state);
   16162           0 :     mannwhitneyu_ucheb(x, -4.425871e-03, &tj, &tj1, &result, _state);
   16163           0 :     mannwhitneyu_ucheb(x, -1.640172e-03, &tj, &tj1, &result, _state);
   16164           0 :     mannwhitneyu_ucheb(x, -6.660633e-04, &tj, &tj1, &result, _state);
   16165           0 :     mannwhitneyu_ucheb(x, -2.879883e-04, &tj, &tj1, &result, _state);
   16166           0 :     mannwhitneyu_ucheb(x, -1.349658e-04, &tj, &tj1, &result, _state);
   16167           0 :     mannwhitneyu_ucheb(x, -6.271795e-05, &tj, &tj1, &result, _state);
   16168           0 :     mannwhitneyu_ucheb(x, -3.304544e-05, &tj, &tj1, &result, _state);
   16169           0 :     mannwhitneyu_ucheb(x, -3.024201e-05, &tj, &tj1, &result, _state);
   16170           0 :     mannwhitneyu_ucheb(x, -2.816867e-05, &tj, &tj1, &result, _state);
   16171           0 :     mannwhitneyu_ucheb(x, -4.596787e-05, &tj, &tj1, &result, _state);
   16172           0 :     return result;
   16173             : }
   16174             : 
   16175             : 
   16176             : /*************************************************************************
   16177             : Tail(S, 11, 15)
   16178             : *************************************************************************/
   16179           0 : static double mannwhitneyu_utbln11n15(double s, ae_state *_state)
   16180             : {
   16181             :     double x;
   16182             :     double tj;
   16183             :     double tj1;
   16184             :     double result;
   16185             : 
   16186             : 
   16187           0 :     result = (double)(0);
   16188           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16189           0 :     tj = (double)(1);
   16190           0 :     tj1 = x;
   16191           0 :     mannwhitneyu_ucheb(x, -4.452526e+00, &tj, &tj1, &result, _state);
   16192           0 :     mannwhitneyu_ucheb(x, -4.743570e+00, &tj, &tj1, &result, _state);
   16193           0 :     mannwhitneyu_ucheb(x, -1.099705e+00, &tj, &tj1, &result, _state);
   16194           0 :     mannwhitneyu_ucheb(x, -1.650612e-01, &tj, &tj1, &result, _state);
   16195           0 :     mannwhitneyu_ucheb(x, -3.858285e-02, &tj, &tj1, &result, _state);
   16196           0 :     mannwhitneyu_ucheb(x, -1.187036e-02, &tj, &tj1, &result, _state);
   16197           0 :     mannwhitneyu_ucheb(x, -3.689241e-03, &tj, &tj1, &result, _state);
   16198           0 :     mannwhitneyu_ucheb(x, -1.294360e-03, &tj, &tj1, &result, _state);
   16199           0 :     mannwhitneyu_ucheb(x, -5.072623e-04, &tj, &tj1, &result, _state);
   16200           0 :     mannwhitneyu_ucheb(x, -2.278008e-04, &tj, &tj1, &result, _state);
   16201           0 :     mannwhitneyu_ucheb(x, -1.322382e-04, &tj, &tj1, &result, _state);
   16202           0 :     mannwhitneyu_ucheb(x, -9.131558e-05, &tj, &tj1, &result, _state);
   16203           0 :     mannwhitneyu_ucheb(x, -7.305669e-05, &tj, &tj1, &result, _state);
   16204           0 :     mannwhitneyu_ucheb(x, -6.825627e-05, &tj, &tj1, &result, _state);
   16205           0 :     mannwhitneyu_ucheb(x, -5.332689e-05, &tj, &tj1, &result, _state);
   16206           0 :     mannwhitneyu_ucheb(x, -6.120973e-05, &tj, &tj1, &result, _state);
   16207           0 :     return result;
   16208             : }
   16209             : 
   16210             : 
   16211             : /*************************************************************************
   16212             : Tail(S, 11, 30)
   16213             : *************************************************************************/
   16214           0 : static double mannwhitneyu_utbln11n30(double s, ae_state *_state)
   16215             : {
   16216             :     double x;
   16217             :     double tj;
   16218             :     double tj1;
   16219             :     double result;
   16220             : 
   16221             : 
   16222           0 :     result = (double)(0);
   16223           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16224           0 :     tj = (double)(1);
   16225           0 :     tj1 = x;
   16226           0 :     mannwhitneyu_ucheb(x, -4.402621e+00, &tj, &tj1, &result, _state);
   16227           0 :     mannwhitneyu_ucheb(x, -4.627440e+00, &tj, &tj1, &result, _state);
   16228           0 :     mannwhitneyu_ucheb(x, -1.011333e+00, &tj, &tj1, &result, _state);
   16229           0 :     mannwhitneyu_ucheb(x, -1.224126e-01, &tj, &tj1, &result, _state);
   16230           0 :     mannwhitneyu_ucheb(x, -2.232856e-02, &tj, &tj1, &result, _state);
   16231           0 :     mannwhitneyu_ucheb(x, -5.859347e-03, &tj, &tj1, &result, _state);
   16232           0 :     mannwhitneyu_ucheb(x, -1.377381e-03, &tj, &tj1, &result, _state);
   16233           0 :     mannwhitneyu_ucheb(x, -3.756709e-04, &tj, &tj1, &result, _state);
   16234           0 :     mannwhitneyu_ucheb(x, -1.033230e-04, &tj, &tj1, &result, _state);
   16235           0 :     mannwhitneyu_ucheb(x, -2.875472e-05, &tj, &tj1, &result, _state);
   16236           0 :     mannwhitneyu_ucheb(x, -8.608399e-06, &tj, &tj1, &result, _state);
   16237           0 :     mannwhitneyu_ucheb(x, -3.102943e-06, &tj, &tj1, &result, _state);
   16238           0 :     mannwhitneyu_ucheb(x, -1.740693e-06, &tj, &tj1, &result, _state);
   16239           0 :     mannwhitneyu_ucheb(x, -1.343139e-06, &tj, &tj1, &result, _state);
   16240           0 :     mannwhitneyu_ucheb(x, -9.196878e-07, &tj, &tj1, &result, _state);
   16241           0 :     mannwhitneyu_ucheb(x, -6.658062e-07, &tj, &tj1, &result, _state);
   16242           0 :     return result;
   16243             : }
   16244             : 
   16245             : 
   16246             : /*************************************************************************
   16247             : Tail(S, 11, 100)
   16248             : *************************************************************************/
   16249           0 : static double mannwhitneyu_utbln11n100(double s, ae_state *_state)
   16250             : {
   16251             :     double x;
   16252             :     double tj;
   16253             :     double tj1;
   16254             :     double result;
   16255             : 
   16256             : 
   16257           0 :     result = (double)(0);
   16258           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16259           0 :     tj = (double)(1);
   16260           0 :     tj1 = x;
   16261           0 :     mannwhitneyu_ucheb(x, -4.398795e+00, &tj, &tj1, &result, _state);
   16262           0 :     mannwhitneyu_ucheb(x, -4.596486e+00, &tj, &tj1, &result, _state);
   16263           0 :     mannwhitneyu_ucheb(x, -9.814761e-01, &tj, &tj1, &result, _state);
   16264           0 :     mannwhitneyu_ucheb(x, -1.085187e-01, &tj, &tj1, &result, _state);
   16265           0 :     mannwhitneyu_ucheb(x, -1.766529e-02, &tj, &tj1, &result, _state);
   16266           0 :     mannwhitneyu_ucheb(x, -4.379425e-03, &tj, &tj1, &result, _state);
   16267           0 :     mannwhitneyu_ucheb(x, -8.986351e-04, &tj, &tj1, &result, _state);
   16268           0 :     mannwhitneyu_ucheb(x, -2.214705e-04, &tj, &tj1, &result, _state);
   16269           0 :     mannwhitneyu_ucheb(x, -5.360075e-05, &tj, &tj1, &result, _state);
   16270           0 :     mannwhitneyu_ucheb(x, -1.260869e-05, &tj, &tj1, &result, _state);
   16271           0 :     mannwhitneyu_ucheb(x, -3.033307e-06, &tj, &tj1, &result, _state);
   16272           0 :     mannwhitneyu_ucheb(x, -7.727087e-07, &tj, &tj1, &result, _state);
   16273           0 :     mannwhitneyu_ucheb(x, -3.393883e-07, &tj, &tj1, &result, _state);
   16274           0 :     mannwhitneyu_ucheb(x, -2.242989e-07, &tj, &tj1, &result, _state);
   16275           0 :     mannwhitneyu_ucheb(x, -1.111928e-07, &tj, &tj1, &result, _state);
   16276           0 :     mannwhitneyu_ucheb(x, 3.898823e-09, &tj, &tj1, &result, _state);
   16277           0 :     return result;
   16278             : }
   16279             : 
   16280             : 
   16281             : /*************************************************************************
   16282             : Tail(S, 12, 12)
   16283             : *************************************************************************/
   16284           0 : static double mannwhitneyu_utbln12n12(double s, ae_state *_state)
   16285             : {
   16286             :     double x;
   16287             :     double tj;
   16288             :     double tj1;
   16289             :     double result;
   16290             : 
   16291             : 
   16292           0 :     result = (double)(0);
   16293           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16294           0 :     tj = (double)(1);
   16295           0 :     tj1 = x;
   16296           0 :     mannwhitneyu_ucheb(x, -4.472616e+00, &tj, &tj1, &result, _state);
   16297           0 :     mannwhitneyu_ucheb(x, -4.786627e+00, &tj, &tj1, &result, _state);
   16298           0 :     mannwhitneyu_ucheb(x, -1.132099e+00, &tj, &tj1, &result, _state);
   16299           0 :     mannwhitneyu_ucheb(x, -1.817523e-01, &tj, &tj1, &result, _state);
   16300           0 :     mannwhitneyu_ucheb(x, -4.570179e-02, &tj, &tj1, &result, _state);
   16301           0 :     mannwhitneyu_ucheb(x, -1.479511e-02, &tj, &tj1, &result, _state);
   16302           0 :     mannwhitneyu_ucheb(x, -4.799492e-03, &tj, &tj1, &result, _state);
   16303           0 :     mannwhitneyu_ucheb(x, -1.565350e-03, &tj, &tj1, &result, _state);
   16304           0 :     mannwhitneyu_ucheb(x, -3.530139e-04, &tj, &tj1, &result, _state);
   16305           0 :     mannwhitneyu_ucheb(x, 1.380132e-04, &tj, &tj1, &result, _state);
   16306           0 :     mannwhitneyu_ucheb(x, 3.242761e-04, &tj, &tj1, &result, _state);
   16307           0 :     mannwhitneyu_ucheb(x, 3.576269e-04, &tj, &tj1, &result, _state);
   16308           0 :     mannwhitneyu_ucheb(x, 3.018771e-04, &tj, &tj1, &result, _state);
   16309           0 :     mannwhitneyu_ucheb(x, 1.933911e-04, &tj, &tj1, &result, _state);
   16310           0 :     mannwhitneyu_ucheb(x, 9.002799e-05, &tj, &tj1, &result, _state);
   16311           0 :     mannwhitneyu_ucheb(x, -2.022048e-06, &tj, &tj1, &result, _state);
   16312           0 :     return result;
   16313             : }
   16314             : 
   16315             : 
   16316             : /*************************************************************************
   16317             : Tail(S, 12, 13)
   16318             : *************************************************************************/
   16319           0 : static double mannwhitneyu_utbln12n13(double s, ae_state *_state)
   16320             : {
   16321             :     double x;
   16322             :     double tj;
   16323             :     double tj1;
   16324             :     double result;
   16325             : 
   16326             : 
   16327           0 :     result = (double)(0);
   16328           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16329           0 :     tj = (double)(1);
   16330           0 :     tj1 = x;
   16331           0 :     mannwhitneyu_ucheb(x, -4.454800e+00, &tj, &tj1, &result, _state);
   16332           0 :     mannwhitneyu_ucheb(x, -4.750794e+00, &tj, &tj1, &result, _state);
   16333           0 :     mannwhitneyu_ucheb(x, -1.105988e+00, &tj, &tj1, &result, _state);
   16334           0 :     mannwhitneyu_ucheb(x, -1.684754e-01, &tj, &tj1, &result, _state);
   16335           0 :     mannwhitneyu_ucheb(x, -4.011826e-02, &tj, &tj1, &result, _state);
   16336           0 :     mannwhitneyu_ucheb(x, -1.262579e-02, &tj, &tj1, &result, _state);
   16337           0 :     mannwhitneyu_ucheb(x, -4.044492e-03, &tj, &tj1, &result, _state);
   16338           0 :     mannwhitneyu_ucheb(x, -1.478741e-03, &tj, &tj1, &result, _state);
   16339           0 :     mannwhitneyu_ucheb(x, -5.322165e-04, &tj, &tj1, &result, _state);
   16340           0 :     mannwhitneyu_ucheb(x, -1.621104e-04, &tj, &tj1, &result, _state);
   16341           0 :     mannwhitneyu_ucheb(x, 4.068753e-05, &tj, &tj1, &result, _state);
   16342           0 :     mannwhitneyu_ucheb(x, 1.468396e-04, &tj, &tj1, &result, _state);
   16343           0 :     mannwhitneyu_ucheb(x, 2.056235e-04, &tj, &tj1, &result, _state);
   16344           0 :     mannwhitneyu_ucheb(x, 2.327375e-04, &tj, &tj1, &result, _state);
   16345           0 :     mannwhitneyu_ucheb(x, 1.914877e-04, &tj, &tj1, &result, _state);
   16346           0 :     mannwhitneyu_ucheb(x, 1.784191e-04, &tj, &tj1, &result, _state);
   16347           0 :     return result;
   16348             : }
   16349             : 
   16350             : 
   16351             : /*************************************************************************
   16352             : Tail(S, 12, 14)
   16353             : *************************************************************************/
   16354           0 : static double mannwhitneyu_utbln12n14(double s, ae_state *_state)
   16355             : {
   16356             :     double x;
   16357             :     double tj;
   16358             :     double tj1;
   16359             :     double result;
   16360             : 
   16361             : 
   16362           0 :     result = (double)(0);
   16363           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16364           0 :     tj = (double)(1);
   16365           0 :     tj1 = x;
   16366           0 :     mannwhitneyu_ucheb(x, -4.440910e+00, &tj, &tj1, &result, _state);
   16367           0 :     mannwhitneyu_ucheb(x, -4.722404e+00, &tj, &tj1, &result, _state);
   16368           0 :     mannwhitneyu_ucheb(x, -1.085254e+00, &tj, &tj1, &result, _state);
   16369           0 :     mannwhitneyu_ucheb(x, -1.579439e-01, &tj, &tj1, &result, _state);
   16370           0 :     mannwhitneyu_ucheb(x, -3.563738e-02, &tj, &tj1, &result, _state);
   16371           0 :     mannwhitneyu_ucheb(x, -1.066730e-02, &tj, &tj1, &result, _state);
   16372           0 :     mannwhitneyu_ucheb(x, -3.129346e-03, &tj, &tj1, &result, _state);
   16373           0 :     mannwhitneyu_ucheb(x, -1.014531e-03, &tj, &tj1, &result, _state);
   16374           0 :     mannwhitneyu_ucheb(x, -3.129679e-04, &tj, &tj1, &result, _state);
   16375           0 :     mannwhitneyu_ucheb(x, -8.000909e-05, &tj, &tj1, &result, _state);
   16376           0 :     mannwhitneyu_ucheb(x, 1.996174e-05, &tj, &tj1, &result, _state);
   16377           0 :     mannwhitneyu_ucheb(x, 6.377924e-05, &tj, &tj1, &result, _state);
   16378           0 :     mannwhitneyu_ucheb(x, 8.936304e-05, &tj, &tj1, &result, _state);
   16379           0 :     mannwhitneyu_ucheb(x, 1.051098e-04, &tj, &tj1, &result, _state);
   16380           0 :     mannwhitneyu_ucheb(x, 9.025820e-05, &tj, &tj1, &result, _state);
   16381           0 :     mannwhitneyu_ucheb(x, 8.730585e-05, &tj, &tj1, &result, _state);
   16382           0 :     return result;
   16383             : }
   16384             : 
   16385             : 
   16386             : /*************************************************************************
   16387             : Tail(S, 12, 15)
   16388             : *************************************************************************/
   16389           0 : static double mannwhitneyu_utbln12n15(double s, ae_state *_state)
   16390             : {
   16391             :     double x;
   16392             :     double tj;
   16393             :     double tj1;
   16394             :     double result;
   16395             : 
   16396             : 
   16397           0 :     result = (double)(0);
   16398           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16399           0 :     tj = (double)(1);
   16400           0 :     tj1 = x;
   16401           0 :     mannwhitneyu_ucheb(x, -4.430123e+00, &tj, &tj1, &result, _state);
   16402           0 :     mannwhitneyu_ucheb(x, -4.700008e+00, &tj, &tj1, &result, _state);
   16403           0 :     mannwhitneyu_ucheb(x, -1.068971e+00, &tj, &tj1, &result, _state);
   16404           0 :     mannwhitneyu_ucheb(x, -1.499725e-01, &tj, &tj1, &result, _state);
   16405           0 :     mannwhitneyu_ucheb(x, -3.250897e-02, &tj, &tj1, &result, _state);
   16406           0 :     mannwhitneyu_ucheb(x, -9.473145e-03, &tj, &tj1, &result, _state);
   16407           0 :     mannwhitneyu_ucheb(x, -2.680008e-03, &tj, &tj1, &result, _state);
   16408           0 :     mannwhitneyu_ucheb(x, -8.483350e-04, &tj, &tj1, &result, _state);
   16409           0 :     mannwhitneyu_ucheb(x, -2.766992e-04, &tj, &tj1, &result, _state);
   16410           0 :     mannwhitneyu_ucheb(x, -9.891081e-05, &tj, &tj1, &result, _state);
   16411           0 :     mannwhitneyu_ucheb(x, -4.015140e-05, &tj, &tj1, &result, _state);
   16412           0 :     mannwhitneyu_ucheb(x, -1.977756e-05, &tj, &tj1, &result, _state);
   16413           0 :     mannwhitneyu_ucheb(x, -8.707414e-06, &tj, &tj1, &result, _state);
   16414           0 :     mannwhitneyu_ucheb(x, 1.114786e-06, &tj, &tj1, &result, _state);
   16415           0 :     mannwhitneyu_ucheb(x, 6.238865e-06, &tj, &tj1, &result, _state);
   16416           0 :     mannwhitneyu_ucheb(x, 1.381445e-05, &tj, &tj1, &result, _state);
   16417           0 :     return result;
   16418             : }
   16419             : 
   16420             : 
   16421             : /*************************************************************************
   16422             : Tail(S, 12, 30)
   16423             : *************************************************************************/
   16424           0 : static double mannwhitneyu_utbln12n30(double s, ae_state *_state)
   16425             : {
   16426             :     double x;
   16427             :     double tj;
   16428             :     double tj1;
   16429             :     double result;
   16430             : 
   16431             : 
   16432           0 :     result = (double)(0);
   16433           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16434           0 :     tj = (double)(1);
   16435           0 :     tj1 = x;
   16436           0 :     mannwhitneyu_ucheb(x, -4.380023e+00, &tj, &tj1, &result, _state);
   16437           0 :     mannwhitneyu_ucheb(x, -4.585782e+00, &tj, &tj1, &result, _state);
   16438           0 :     mannwhitneyu_ucheb(x, -9.838583e-01, &tj, &tj1, &result, _state);
   16439           0 :     mannwhitneyu_ucheb(x, -1.103394e-01, &tj, &tj1, &result, _state);
   16440           0 :     mannwhitneyu_ucheb(x, -1.834015e-02, &tj, &tj1, &result, _state);
   16441           0 :     mannwhitneyu_ucheb(x, -4.635212e-03, &tj, &tj1, &result, _state);
   16442           0 :     mannwhitneyu_ucheb(x, -9.948212e-04, &tj, &tj1, &result, _state);
   16443           0 :     mannwhitneyu_ucheb(x, -2.574169e-04, &tj, &tj1, &result, _state);
   16444           0 :     mannwhitneyu_ucheb(x, -6.747980e-05, &tj, &tj1, &result, _state);
   16445           0 :     mannwhitneyu_ucheb(x, -1.833672e-05, &tj, &tj1, &result, _state);
   16446           0 :     mannwhitneyu_ucheb(x, -5.722433e-06, &tj, &tj1, &result, _state);
   16447           0 :     mannwhitneyu_ucheb(x, -2.181038e-06, &tj, &tj1, &result, _state);
   16448           0 :     mannwhitneyu_ucheb(x, -1.206473e-06, &tj, &tj1, &result, _state);
   16449           0 :     mannwhitneyu_ucheb(x, -9.716003e-07, &tj, &tj1, &result, _state);
   16450           0 :     mannwhitneyu_ucheb(x, -7.476434e-07, &tj, &tj1, &result, _state);
   16451           0 :     mannwhitneyu_ucheb(x, -7.217700e-07, &tj, &tj1, &result, _state);
   16452           0 :     return result;
   16453             : }
   16454             : 
   16455             : 
   16456             : /*************************************************************************
   16457             : Tail(S, 12, 100)
   16458             : *************************************************************************/
   16459           0 : static double mannwhitneyu_utbln12n100(double s, ae_state *_state)
   16460             : {
   16461             :     double x;
   16462             :     double tj;
   16463             :     double tj1;
   16464             :     double result;
   16465             : 
   16466             : 
   16467           0 :     result = (double)(0);
   16468           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.700000e+00-1, 1.0, _state);
   16469           0 :     tj = (double)(1);
   16470           0 :     tj1 = x;
   16471           0 :     mannwhitneyu_ucheb(x, -4.374567e+00, &tj, &tj1, &result, _state);
   16472           0 :     mannwhitneyu_ucheb(x, -4.553481e+00, &tj, &tj1, &result, _state);
   16473           0 :     mannwhitneyu_ucheb(x, -9.541334e-01, &tj, &tj1, &result, _state);
   16474           0 :     mannwhitneyu_ucheb(x, -9.701907e-02, &tj, &tj1, &result, _state);
   16475           0 :     mannwhitneyu_ucheb(x, -1.414757e-02, &tj, &tj1, &result, _state);
   16476           0 :     mannwhitneyu_ucheb(x, -3.404103e-03, &tj, &tj1, &result, _state);
   16477           0 :     mannwhitneyu_ucheb(x, -6.234388e-04, &tj, &tj1, &result, _state);
   16478           0 :     mannwhitneyu_ucheb(x, -1.453762e-04, &tj, &tj1, &result, _state);
   16479           0 :     mannwhitneyu_ucheb(x, -3.311060e-05, &tj, &tj1, &result, _state);
   16480           0 :     mannwhitneyu_ucheb(x, -7.317501e-06, &tj, &tj1, &result, _state);
   16481           0 :     mannwhitneyu_ucheb(x, -1.713888e-06, &tj, &tj1, &result, _state);
   16482           0 :     mannwhitneyu_ucheb(x, -3.309583e-07, &tj, &tj1, &result, _state);
   16483           0 :     mannwhitneyu_ucheb(x, -4.019804e-08, &tj, &tj1, &result, _state);
   16484           0 :     mannwhitneyu_ucheb(x, 1.224829e-09, &tj, &tj1, &result, _state);
   16485           0 :     mannwhitneyu_ucheb(x, -1.349019e-08, &tj, &tj1, &result, _state);
   16486           0 :     mannwhitneyu_ucheb(x, -1.893302e-08, &tj, &tj1, &result, _state);
   16487           0 :     return result;
   16488             : }
   16489             : 
   16490             : 
   16491             : /*************************************************************************
   16492             : Tail(S, 13, 13)
   16493             : *************************************************************************/
   16494           0 : static double mannwhitneyu_utbln13n13(double s, ae_state *_state)
   16495             : {
   16496             :     double x;
   16497             :     double tj;
   16498             :     double tj1;
   16499             :     double result;
   16500             : 
   16501             : 
   16502           0 :     result = (double)(0);
   16503           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.750000e+00-1, 1.0, _state);
   16504           0 :     tj = (double)(1);
   16505           0 :     tj1 = x;
   16506           0 :     mannwhitneyu_ucheb(x, -4.541046e+00, &tj, &tj1, &result, _state);
   16507           0 :     mannwhitneyu_ucheb(x, -4.859047e+00, &tj, &tj1, &result, _state);
   16508           0 :     mannwhitneyu_ucheb(x, -1.130164e+00, &tj, &tj1, &result, _state);
   16509           0 :     mannwhitneyu_ucheb(x, -1.689719e-01, &tj, &tj1, &result, _state);
   16510           0 :     mannwhitneyu_ucheb(x, -3.950693e-02, &tj, &tj1, &result, _state);
   16511           0 :     mannwhitneyu_ucheb(x, -1.231455e-02, &tj, &tj1, &result, _state);
   16512           0 :     mannwhitneyu_ucheb(x, -3.976550e-03, &tj, &tj1, &result, _state);
   16513           0 :     mannwhitneyu_ucheb(x, -1.538455e-03, &tj, &tj1, &result, _state);
   16514           0 :     mannwhitneyu_ucheb(x, -7.245603e-04, &tj, &tj1, &result, _state);
   16515           0 :     mannwhitneyu_ucheb(x, -4.142647e-04, &tj, &tj1, &result, _state);
   16516           0 :     mannwhitneyu_ucheb(x, -2.831434e-04, &tj, &tj1, &result, _state);
   16517           0 :     mannwhitneyu_ucheb(x, -2.032483e-04, &tj, &tj1, &result, _state);
   16518           0 :     mannwhitneyu_ucheb(x, -1.488405e-04, &tj, &tj1, &result, _state);
   16519           0 :     mannwhitneyu_ucheb(x, -1.156927e-04, &tj, &tj1, &result, _state);
   16520           0 :     mannwhitneyu_ucheb(x, -7.949279e-05, &tj, &tj1, &result, _state);
   16521           0 :     mannwhitneyu_ucheb(x, -7.532700e-05, &tj, &tj1, &result, _state);
   16522           0 :     return result;
   16523             : }
   16524             : 
   16525             : 
   16526             : /*************************************************************************
   16527             : Tail(S, 13, 14)
   16528             : *************************************************************************/
   16529           0 : static double mannwhitneyu_utbln13n14(double s, ae_state *_state)
   16530             : {
   16531             :     double x;
   16532             :     double tj;
   16533             :     double tj1;
   16534             :     double result;
   16535             : 
   16536             : 
   16537           0 :     result = (double)(0);
   16538           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.750000e+00-1, 1.0, _state);
   16539           0 :     tj = (double)(1);
   16540           0 :     tj1 = x;
   16541           0 :     mannwhitneyu_ucheb(x, -4.525655e+00, &tj, &tj1, &result, _state);
   16542           0 :     mannwhitneyu_ucheb(x, -4.828341e+00, &tj, &tj1, &result, _state);
   16543           0 :     mannwhitneyu_ucheb(x, -1.108110e+00, &tj, &tj1, &result, _state);
   16544           0 :     mannwhitneyu_ucheb(x, -1.579552e-01, &tj, &tj1, &result, _state);
   16545           0 :     mannwhitneyu_ucheb(x, -3.488307e-02, &tj, &tj1, &result, _state);
   16546           0 :     mannwhitneyu_ucheb(x, -1.032328e-02, &tj, &tj1, &result, _state);
   16547           0 :     mannwhitneyu_ucheb(x, -2.988741e-03, &tj, &tj1, &result, _state);
   16548           0 :     mannwhitneyu_ucheb(x, -9.766394e-04, &tj, &tj1, &result, _state);
   16549           0 :     mannwhitneyu_ucheb(x, -3.388950e-04, &tj, &tj1, &result, _state);
   16550           0 :     mannwhitneyu_ucheb(x, -1.338179e-04, &tj, &tj1, &result, _state);
   16551           0 :     mannwhitneyu_ucheb(x, -6.133440e-05, &tj, &tj1, &result, _state);
   16552           0 :     mannwhitneyu_ucheb(x, -3.023518e-05, &tj, &tj1, &result, _state);
   16553           0 :     mannwhitneyu_ucheb(x, -1.110570e-05, &tj, &tj1, &result, _state);
   16554           0 :     mannwhitneyu_ucheb(x, 4.202332e-06, &tj, &tj1, &result, _state);
   16555           0 :     mannwhitneyu_ucheb(x, 1.056132e-05, &tj, &tj1, &result, _state);
   16556           0 :     mannwhitneyu_ucheb(x, 1.536323e-05, &tj, &tj1, &result, _state);
   16557           0 :     return result;
   16558             : }
   16559             : 
   16560             : 
   16561             : /*************************************************************************
   16562             : Tail(S, 13, 15)
   16563             : *************************************************************************/
   16564           0 : static double mannwhitneyu_utbln13n15(double s, ae_state *_state)
   16565             : {
   16566             :     double x;
   16567             :     double tj;
   16568             :     double tj1;
   16569             :     double result;
   16570             : 
   16571             : 
   16572           0 :     result = (double)(0);
   16573           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.750000e+00-1, 1.0, _state);
   16574           0 :     tj = (double)(1);
   16575           0 :     tj1 = x;
   16576           0 :     mannwhitneyu_ucheb(x, -4.513585e+00, &tj, &tj1, &result, _state);
   16577           0 :     mannwhitneyu_ucheb(x, -4.803952e+00, &tj, &tj1, &result, _state);
   16578           0 :     mannwhitneyu_ucheb(x, -1.090686e+00, &tj, &tj1, &result, _state);
   16579           0 :     mannwhitneyu_ucheb(x, -1.495310e-01, &tj, &tj1, &result, _state);
   16580           0 :     mannwhitneyu_ucheb(x, -3.160314e-02, &tj, &tj1, &result, _state);
   16581           0 :     mannwhitneyu_ucheb(x, -9.073124e-03, &tj, &tj1, &result, _state);
   16582           0 :     mannwhitneyu_ucheb(x, -2.480313e-03, &tj, &tj1, &result, _state);
   16583           0 :     mannwhitneyu_ucheb(x, -7.478239e-04, &tj, &tj1, &result, _state);
   16584           0 :     mannwhitneyu_ucheb(x, -2.140914e-04, &tj, &tj1, &result, _state);
   16585           0 :     mannwhitneyu_ucheb(x, -5.311541e-05, &tj, &tj1, &result, _state);
   16586           0 :     mannwhitneyu_ucheb(x, -2.677105e-06, &tj, &tj1, &result, _state);
   16587           0 :     mannwhitneyu_ucheb(x, 1.115464e-05, &tj, &tj1, &result, _state);
   16588           0 :     mannwhitneyu_ucheb(x, 1.578563e-05, &tj, &tj1, &result, _state);
   16589           0 :     mannwhitneyu_ucheb(x, 2.044604e-05, &tj, &tj1, &result, _state);
   16590           0 :     mannwhitneyu_ucheb(x, 1.888939e-05, &tj, &tj1, &result, _state);
   16591           0 :     mannwhitneyu_ucheb(x, 2.395644e-05, &tj, &tj1, &result, _state);
   16592           0 :     return result;
   16593             : }
   16594             : 
   16595             : 
   16596             : /*************************************************************************
   16597             : Tail(S, 13, 30)
   16598             : *************************************************************************/
   16599           0 : static double mannwhitneyu_utbln13n30(double s, ae_state *_state)
   16600             : {
   16601             :     double x;
   16602             :     double tj;
   16603             :     double tj1;
   16604             :     double result;
   16605             : 
   16606             : 
   16607           0 :     result = (double)(0);
   16608           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.750000e+00-1, 1.0, _state);
   16609           0 :     tj = (double)(1);
   16610           0 :     tj1 = x;
   16611           0 :     mannwhitneyu_ucheb(x, -4.455999e+00, &tj, &tj1, &result, _state);
   16612           0 :     mannwhitneyu_ucheb(x, -4.678434e+00, &tj, &tj1, &result, _state);
   16613           0 :     mannwhitneyu_ucheb(x, -9.995491e-01, &tj, &tj1, &result, _state);
   16614           0 :     mannwhitneyu_ucheb(x, -1.078100e-01, &tj, &tj1, &result, _state);
   16615           0 :     mannwhitneyu_ucheb(x, -1.705220e-02, &tj, &tj1, &result, _state);
   16616           0 :     mannwhitneyu_ucheb(x, -4.258739e-03, &tj, &tj1, &result, _state);
   16617           0 :     mannwhitneyu_ucheb(x, -8.671526e-04, &tj, &tj1, &result, _state);
   16618           0 :     mannwhitneyu_ucheb(x, -2.185458e-04, &tj, &tj1, &result, _state);
   16619           0 :     mannwhitneyu_ucheb(x, -5.507764e-05, &tj, &tj1, &result, _state);
   16620           0 :     mannwhitneyu_ucheb(x, -1.411446e-05, &tj, &tj1, &result, _state);
   16621           0 :     mannwhitneyu_ucheb(x, -4.044355e-06, &tj, &tj1, &result, _state);
   16622           0 :     mannwhitneyu_ucheb(x, -1.285765e-06, &tj, &tj1, &result, _state);
   16623           0 :     mannwhitneyu_ucheb(x, -5.345282e-07, &tj, &tj1, &result, _state);
   16624           0 :     mannwhitneyu_ucheb(x, -3.066940e-07, &tj, &tj1, &result, _state);
   16625           0 :     mannwhitneyu_ucheb(x, -1.962037e-07, &tj, &tj1, &result, _state);
   16626           0 :     mannwhitneyu_ucheb(x, -1.723644e-07, &tj, &tj1, &result, _state);
   16627           0 :     return result;
   16628             : }
   16629             : 
   16630             : 
   16631             : /*************************************************************************
   16632             : Tail(S, 13, 100)
   16633             : *************************************************************************/
   16634           0 : static double mannwhitneyu_utbln13n100(double s, ae_state *_state)
   16635             : {
   16636             :     double x;
   16637             :     double tj;
   16638             :     double tj1;
   16639             :     double result;
   16640             : 
   16641             : 
   16642           0 :     result = (double)(0);
   16643           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.750000e+00-1, 1.0, _state);
   16644           0 :     tj = (double)(1);
   16645           0 :     tj1 = x;
   16646           0 :     mannwhitneyu_ucheb(x, -4.446787e+00, &tj, &tj1, &result, _state);
   16647           0 :     mannwhitneyu_ucheb(x, -4.640804e+00, &tj, &tj1, &result, _state);
   16648           0 :     mannwhitneyu_ucheb(x, -9.671552e-01, &tj, &tj1, &result, _state);
   16649           0 :     mannwhitneyu_ucheb(x, -9.364990e-02, &tj, &tj1, &result, _state);
   16650           0 :     mannwhitneyu_ucheb(x, -1.274444e-02, &tj, &tj1, &result, _state);
   16651           0 :     mannwhitneyu_ucheb(x, -3.047440e-03, &tj, &tj1, &result, _state);
   16652           0 :     mannwhitneyu_ucheb(x, -5.161439e-04, &tj, &tj1, &result, _state);
   16653           0 :     mannwhitneyu_ucheb(x, -1.171729e-04, &tj, &tj1, &result, _state);
   16654           0 :     mannwhitneyu_ucheb(x, -2.562171e-05, &tj, &tj1, &result, _state);
   16655           0 :     mannwhitneyu_ucheb(x, -5.359762e-06, &tj, &tj1, &result, _state);
   16656           0 :     mannwhitneyu_ucheb(x, -1.275494e-06, &tj, &tj1, &result, _state);
   16657           0 :     mannwhitneyu_ucheb(x, -2.747635e-07, &tj, &tj1, &result, _state);
   16658           0 :     mannwhitneyu_ucheb(x, -5.700292e-08, &tj, &tj1, &result, _state);
   16659           0 :     mannwhitneyu_ucheb(x, -2.565559e-09, &tj, &tj1, &result, _state);
   16660           0 :     mannwhitneyu_ucheb(x, 5.005396e-09, &tj, &tj1, &result, _state);
   16661           0 :     mannwhitneyu_ucheb(x, 3.335794e-09, &tj, &tj1, &result, _state);
   16662           0 :     return result;
   16663             : }
   16664             : 
   16665             : 
   16666             : /*************************************************************************
   16667             : Tail(S, 14, 14)
   16668             : *************************************************************************/
   16669           0 : static double mannwhitneyu_utbln14n14(double s, ae_state *_state)
   16670             : {
   16671             :     double x;
   16672             :     double tj;
   16673             :     double tj1;
   16674             :     double result;
   16675             : 
   16676             : 
   16677           0 :     result = (double)(0);
   16678           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.750000e+00-1, 1.0, _state);
   16679           0 :     tj = (double)(1);
   16680           0 :     tj1 = x;
   16681           0 :     mannwhitneyu_ucheb(x, -4.510624e+00, &tj, &tj1, &result, _state);
   16682           0 :     mannwhitneyu_ucheb(x, -4.798584e+00, &tj, &tj1, &result, _state);
   16683           0 :     mannwhitneyu_ucheb(x, -1.087107e+00, &tj, &tj1, &result, _state);
   16684           0 :     mannwhitneyu_ucheb(x, -1.478532e-01, &tj, &tj1, &result, _state);
   16685           0 :     mannwhitneyu_ucheb(x, -3.098050e-02, &tj, &tj1, &result, _state);
   16686           0 :     mannwhitneyu_ucheb(x, -8.855986e-03, &tj, &tj1, &result, _state);
   16687           0 :     mannwhitneyu_ucheb(x, -2.409083e-03, &tj, &tj1, &result, _state);
   16688           0 :     mannwhitneyu_ucheb(x, -7.299536e-04, &tj, &tj1, &result, _state);
   16689           0 :     mannwhitneyu_ucheb(x, -2.176177e-04, &tj, &tj1, &result, _state);
   16690           0 :     mannwhitneyu_ucheb(x, -6.479417e-05, &tj, &tj1, &result, _state);
   16691           0 :     mannwhitneyu_ucheb(x, -1.812761e-05, &tj, &tj1, &result, _state);
   16692           0 :     mannwhitneyu_ucheb(x, -5.225872e-06, &tj, &tj1, &result, _state);
   16693           0 :     mannwhitneyu_ucheb(x, 4.516521e-07, &tj, &tj1, &result, _state);
   16694           0 :     mannwhitneyu_ucheb(x, 6.730551e-06, &tj, &tj1, &result, _state);
   16695           0 :     mannwhitneyu_ucheb(x, 9.237563e-06, &tj, &tj1, &result, _state);
   16696           0 :     mannwhitneyu_ucheb(x, 1.611820e-05, &tj, &tj1, &result, _state);
   16697           0 :     return result;
   16698             : }
   16699             : 
   16700             : 
   16701             : /*************************************************************************
   16702             : Tail(S, 14, 15)
   16703             : *************************************************************************/
   16704           0 : static double mannwhitneyu_utbln14n15(double s, ae_state *_state)
   16705             : {
   16706             :     double x;
   16707             :     double tj;
   16708             :     double tj1;
   16709             :     double result;
   16710             : 
   16711             : 
   16712           0 :     result = (double)(0);
   16713           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.750000e+00-1, 1.0, _state);
   16714           0 :     tj = (double)(1);
   16715           0 :     tj1 = x;
   16716           0 :     mannwhitneyu_ucheb(x, -4.498681e+00, &tj, &tj1, &result, _state);
   16717           0 :     mannwhitneyu_ucheb(x, -4.774668e+00, &tj, &tj1, &result, _state);
   16718           0 :     mannwhitneyu_ucheb(x, -1.070267e+00, &tj, &tj1, &result, _state);
   16719           0 :     mannwhitneyu_ucheb(x, -1.399348e-01, &tj, &tj1, &result, _state);
   16720           0 :     mannwhitneyu_ucheb(x, -2.807239e-02, &tj, &tj1, &result, _state);
   16721           0 :     mannwhitneyu_ucheb(x, -7.845763e-03, &tj, &tj1, &result, _state);
   16722           0 :     mannwhitneyu_ucheb(x, -2.071773e-03, &tj, &tj1, &result, _state);
   16723           0 :     mannwhitneyu_ucheb(x, -6.261698e-04, &tj, &tj1, &result, _state);
   16724           0 :     mannwhitneyu_ucheb(x, -2.011695e-04, &tj, &tj1, &result, _state);
   16725           0 :     mannwhitneyu_ucheb(x, -7.305946e-05, &tj, &tj1, &result, _state);
   16726           0 :     mannwhitneyu_ucheb(x, -3.879295e-05, &tj, &tj1, &result, _state);
   16727           0 :     mannwhitneyu_ucheb(x, -2.999439e-05, &tj, &tj1, &result, _state);
   16728           0 :     mannwhitneyu_ucheb(x, -2.904438e-05, &tj, &tj1, &result, _state);
   16729           0 :     mannwhitneyu_ucheb(x, -2.944986e-05, &tj, &tj1, &result, _state);
   16730           0 :     mannwhitneyu_ucheb(x, -2.373908e-05, &tj, &tj1, &result, _state);
   16731           0 :     mannwhitneyu_ucheb(x, -2.140794e-05, &tj, &tj1, &result, _state);
   16732           0 :     return result;
   16733             : }
   16734             : 
   16735             : 
   16736             : /*************************************************************************
   16737             : Tail(S, 14, 30)
   16738             : *************************************************************************/
   16739           0 : static double mannwhitneyu_utbln14n30(double s, ae_state *_state)
   16740             : {
   16741             :     double x;
   16742             :     double tj;
   16743             :     double tj1;
   16744             :     double result;
   16745             : 
   16746             : 
   16747           0 :     result = (double)(0);
   16748           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.750000e+00-1, 1.0, _state);
   16749           0 :     tj = (double)(1);
   16750           0 :     tj1 = x;
   16751           0 :     mannwhitneyu_ucheb(x, -4.440378e+00, &tj, &tj1, &result, _state);
   16752           0 :     mannwhitneyu_ucheb(x, -4.649587e+00, &tj, &tj1, &result, _state);
   16753           0 :     mannwhitneyu_ucheb(x, -9.807829e-01, &tj, &tj1, &result, _state);
   16754           0 :     mannwhitneyu_ucheb(x, -9.989753e-02, &tj, &tj1, &result, _state);
   16755           0 :     mannwhitneyu_ucheb(x, -1.463646e-02, &tj, &tj1, &result, _state);
   16756           0 :     mannwhitneyu_ucheb(x, -3.586580e-03, &tj, &tj1, &result, _state);
   16757           0 :     mannwhitneyu_ucheb(x, -6.745917e-04, &tj, &tj1, &result, _state);
   16758           0 :     mannwhitneyu_ucheb(x, -1.635398e-04, &tj, &tj1, &result, _state);
   16759           0 :     mannwhitneyu_ucheb(x, -3.923172e-05, &tj, &tj1, &result, _state);
   16760           0 :     mannwhitneyu_ucheb(x, -9.446699e-06, &tj, &tj1, &result, _state);
   16761           0 :     mannwhitneyu_ucheb(x, -2.613892e-06, &tj, &tj1, &result, _state);
   16762           0 :     mannwhitneyu_ucheb(x, -8.214073e-07, &tj, &tj1, &result, _state);
   16763           0 :     mannwhitneyu_ucheb(x, -3.651683e-07, &tj, &tj1, &result, _state);
   16764           0 :     mannwhitneyu_ucheb(x, -2.272777e-07, &tj, &tj1, &result, _state);
   16765           0 :     mannwhitneyu_ucheb(x, -1.464988e-07, &tj, &tj1, &result, _state);
   16766           0 :     mannwhitneyu_ucheb(x, -1.109803e-07, &tj, &tj1, &result, _state);
   16767           0 :     return result;
   16768             : }
   16769             : 
   16770             : 
   16771             : /*************************************************************************
   16772             : Tail(S, 14, 100)
   16773             : *************************************************************************/
   16774           0 : static double mannwhitneyu_utbln14n100(double s, ae_state *_state)
   16775             : {
   16776             :     double x;
   16777             :     double tj;
   16778             :     double tj1;
   16779             :     double result;
   16780             : 
   16781             : 
   16782           0 :     result = (double)(0);
   16783           0 :     x = ae_minreal(2*(s-0.000000e+00)/3.750000e+00-1, 1.0, _state);
   16784           0 :     tj = (double)(1);
   16785           0 :     tj1 = x;
   16786           0 :     mannwhitneyu_ucheb(x, -4.429701e+00, &tj, &tj1, &result, _state);
   16787           0 :     mannwhitneyu_ucheb(x, -4.610577e+00, &tj, &tj1, &result, _state);
   16788           0 :     mannwhitneyu_ucheb(x, -9.482675e-01, &tj, &tj1, &result, _state);
   16789           0 :     mannwhitneyu_ucheb(x, -8.605550e-02, &tj, &tj1, &result, _state);
   16790           0 :     mannwhitneyu_ucheb(x, -1.062151e-02, &tj, &tj1, &result, _state);
   16791           0 :     mannwhitneyu_ucheb(x, -2.525154e-03, &tj, &tj1, &result, _state);
   16792           0 :     mannwhitneyu_ucheb(x, -3.835983e-04, &tj, &tj1, &result, _state);
   16793           0 :     mannwhitneyu_ucheb(x, -8.411440e-05, &tj, &tj1, &result, _state);
   16794           0 :     mannwhitneyu_ucheb(x, -1.744901e-05, &tj, &tj1, &result, _state);
   16795           0 :     mannwhitneyu_ucheb(x, -3.318850e-06, &tj, &tj1, &result, _state);
   16796           0 :     mannwhitneyu_ucheb(x, -7.692100e-07, &tj, &tj1, &result, _state);
   16797           0 :     mannwhitneyu_ucheb(x, -1.536270e-07, &tj, &tj1, &result, _state);
   16798           0 :     mannwhitneyu_ucheb(x, -3.705888e-08, &tj, &tj1, &result, _state);
   16799           0 :     mannwhitneyu_ucheb(x, -7.999599e-09, &tj, &tj1, &result, _state);
   16800           0 :     mannwhitneyu_ucheb(x, -2.908395e-09, &tj, &tj1, &result, _state);
   16801           0 :     mannwhitneyu_ucheb(x, 1.546923e-09, &tj, &tj1, &result, _state);
   16802           0 :     return result;
   16803             : }
   16804             : 
   16805             : 
   16806             : /*************************************************************************
   16807             : Tail(S, N1, N2)
   16808             : *************************************************************************/
   16809           0 : static double mannwhitneyu_usigma(double s,
   16810             :      ae_int_t n1,
   16811             :      ae_int_t n2,
   16812             :      ae_state *_state)
   16813             : {
   16814             :     double f0;
   16815             :     double f1;
   16816             :     double f2;
   16817             :     double f3;
   16818             :     double f4;
   16819             :     double s0;
   16820             :     double s1;
   16821             :     double s2;
   16822             :     double s3;
   16823             :     double s4;
   16824             :     double result;
   16825             : 
   16826             : 
   16827           0 :     result = (double)(0);
   16828             :     
   16829             :     /*
   16830             :      * N1=5, N2 = 5, 6, 7, ...
   16831             :      */
   16832           0 :     if( ae_minint(n1, n2, _state)==5 )
   16833             :     {
   16834           0 :         if( ae_maxint(n1, n2, _state)==5 )
   16835             :         {
   16836           0 :             result = mannwhitneyu_utbln5n5(s, _state);
   16837             :         }
   16838           0 :         if( ae_maxint(n1, n2, _state)==6 )
   16839             :         {
   16840           0 :             result = mannwhitneyu_utbln5n6(s, _state);
   16841             :         }
   16842           0 :         if( ae_maxint(n1, n2, _state)==7 )
   16843             :         {
   16844           0 :             result = mannwhitneyu_utbln5n7(s, _state);
   16845             :         }
   16846           0 :         if( ae_maxint(n1, n2, _state)==8 )
   16847             :         {
   16848           0 :             result = mannwhitneyu_utbln5n8(s, _state);
   16849             :         }
   16850           0 :         if( ae_maxint(n1, n2, _state)==9 )
   16851             :         {
   16852           0 :             result = mannwhitneyu_utbln5n9(s, _state);
   16853             :         }
   16854           0 :         if( ae_maxint(n1, n2, _state)==10 )
   16855             :         {
   16856           0 :             result = mannwhitneyu_utbln5n10(s, _state);
   16857             :         }
   16858           0 :         if( ae_maxint(n1, n2, _state)==11 )
   16859             :         {
   16860           0 :             result = mannwhitneyu_utbln5n11(s, _state);
   16861             :         }
   16862           0 :         if( ae_maxint(n1, n2, _state)==12 )
   16863             :         {
   16864           0 :             result = mannwhitneyu_utbln5n12(s, _state);
   16865             :         }
   16866           0 :         if( ae_maxint(n1, n2, _state)==13 )
   16867             :         {
   16868           0 :             result = mannwhitneyu_utbln5n13(s, _state);
   16869             :         }
   16870           0 :         if( ae_maxint(n1, n2, _state)==14 )
   16871             :         {
   16872           0 :             result = mannwhitneyu_utbln5n14(s, _state);
   16873             :         }
   16874           0 :         if( ae_maxint(n1, n2, _state)==15 )
   16875             :         {
   16876           0 :             result = mannwhitneyu_utbln5n15(s, _state);
   16877             :         }
   16878           0 :         if( ae_maxint(n1, n2, _state)==16 )
   16879             :         {
   16880           0 :             result = mannwhitneyu_utbln5n16(s, _state);
   16881             :         }
   16882           0 :         if( ae_maxint(n1, n2, _state)==17 )
   16883             :         {
   16884           0 :             result = mannwhitneyu_utbln5n17(s, _state);
   16885             :         }
   16886           0 :         if( ae_maxint(n1, n2, _state)==18 )
   16887             :         {
   16888           0 :             result = mannwhitneyu_utbln5n18(s, _state);
   16889             :         }
   16890           0 :         if( ae_maxint(n1, n2, _state)==19 )
   16891             :         {
   16892           0 :             result = mannwhitneyu_utbln5n19(s, _state);
   16893             :         }
   16894           0 :         if( ae_maxint(n1, n2, _state)==20 )
   16895             :         {
   16896           0 :             result = mannwhitneyu_utbln5n20(s, _state);
   16897             :         }
   16898           0 :         if( ae_maxint(n1, n2, _state)==21 )
   16899             :         {
   16900           0 :             result = mannwhitneyu_utbln5n21(s, _state);
   16901             :         }
   16902           0 :         if( ae_maxint(n1, n2, _state)==22 )
   16903             :         {
   16904           0 :             result = mannwhitneyu_utbln5n22(s, _state);
   16905             :         }
   16906           0 :         if( ae_maxint(n1, n2, _state)==23 )
   16907             :         {
   16908           0 :             result = mannwhitneyu_utbln5n23(s, _state);
   16909             :         }
   16910           0 :         if( ae_maxint(n1, n2, _state)==24 )
   16911             :         {
   16912           0 :             result = mannwhitneyu_utbln5n24(s, _state);
   16913             :         }
   16914           0 :         if( ae_maxint(n1, n2, _state)==25 )
   16915             :         {
   16916           0 :             result = mannwhitneyu_utbln5n25(s, _state);
   16917             :         }
   16918           0 :         if( ae_maxint(n1, n2, _state)==26 )
   16919             :         {
   16920           0 :             result = mannwhitneyu_utbln5n26(s, _state);
   16921             :         }
   16922           0 :         if( ae_maxint(n1, n2, _state)==27 )
   16923             :         {
   16924           0 :             result = mannwhitneyu_utbln5n27(s, _state);
   16925             :         }
   16926           0 :         if( ae_maxint(n1, n2, _state)==28 )
   16927             :         {
   16928           0 :             result = mannwhitneyu_utbln5n28(s, _state);
   16929             :         }
   16930           0 :         if( ae_maxint(n1, n2, _state)==29 )
   16931             :         {
   16932           0 :             result = mannwhitneyu_utbln5n29(s, _state);
   16933             :         }
   16934           0 :         if( ae_maxint(n1, n2, _state)>29 )
   16935             :         {
   16936           0 :             f0 = mannwhitneyu_utbln5n15(s, _state);
   16937           0 :             f1 = mannwhitneyu_utbln5n30(s, _state);
   16938           0 :             f2 = mannwhitneyu_utbln5n100(s, _state);
   16939           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   16940             :         }
   16941           0 :         return result;
   16942             :     }
   16943             :     
   16944             :     /*
   16945             :      * N1=6, N2 = 6, 7, 8, ...
   16946             :      */
   16947           0 :     if( ae_minint(n1, n2, _state)==6 )
   16948             :     {
   16949           0 :         if( ae_maxint(n1, n2, _state)==6 )
   16950             :         {
   16951           0 :             result = mannwhitneyu_utbln6n6(s, _state);
   16952             :         }
   16953           0 :         if( ae_maxint(n1, n2, _state)==7 )
   16954             :         {
   16955           0 :             result = mannwhitneyu_utbln6n7(s, _state);
   16956             :         }
   16957           0 :         if( ae_maxint(n1, n2, _state)==8 )
   16958             :         {
   16959           0 :             result = mannwhitneyu_utbln6n8(s, _state);
   16960             :         }
   16961           0 :         if( ae_maxint(n1, n2, _state)==9 )
   16962             :         {
   16963           0 :             result = mannwhitneyu_utbln6n9(s, _state);
   16964             :         }
   16965           0 :         if( ae_maxint(n1, n2, _state)==10 )
   16966             :         {
   16967           0 :             result = mannwhitneyu_utbln6n10(s, _state);
   16968             :         }
   16969           0 :         if( ae_maxint(n1, n2, _state)==11 )
   16970             :         {
   16971           0 :             result = mannwhitneyu_utbln6n11(s, _state);
   16972             :         }
   16973           0 :         if( ae_maxint(n1, n2, _state)==12 )
   16974             :         {
   16975           0 :             result = mannwhitneyu_utbln6n12(s, _state);
   16976             :         }
   16977           0 :         if( ae_maxint(n1, n2, _state)==13 )
   16978             :         {
   16979           0 :             result = mannwhitneyu_utbln6n13(s, _state);
   16980             :         }
   16981           0 :         if( ae_maxint(n1, n2, _state)==14 )
   16982             :         {
   16983           0 :             result = mannwhitneyu_utbln6n14(s, _state);
   16984             :         }
   16985           0 :         if( ae_maxint(n1, n2, _state)==15 )
   16986             :         {
   16987           0 :             result = mannwhitneyu_utbln6n15(s, _state);
   16988             :         }
   16989           0 :         if( ae_maxint(n1, n2, _state)>15 )
   16990             :         {
   16991           0 :             f0 = mannwhitneyu_utbln6n15(s, _state);
   16992           0 :             f1 = mannwhitneyu_utbln6n30(s, _state);
   16993           0 :             f2 = mannwhitneyu_utbln6n100(s, _state);
   16994           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   16995             :         }
   16996           0 :         return result;
   16997             :     }
   16998             :     
   16999             :     /*
   17000             :      * N1=7, N2 = 7, 8, ...
   17001             :      */
   17002           0 :     if( ae_minint(n1, n2, _state)==7 )
   17003             :     {
   17004           0 :         if( ae_maxint(n1, n2, _state)==7 )
   17005             :         {
   17006           0 :             result = mannwhitneyu_utbln7n7(s, _state);
   17007             :         }
   17008           0 :         if( ae_maxint(n1, n2, _state)==8 )
   17009             :         {
   17010           0 :             result = mannwhitneyu_utbln7n8(s, _state);
   17011             :         }
   17012           0 :         if( ae_maxint(n1, n2, _state)==9 )
   17013             :         {
   17014           0 :             result = mannwhitneyu_utbln7n9(s, _state);
   17015             :         }
   17016           0 :         if( ae_maxint(n1, n2, _state)==10 )
   17017             :         {
   17018           0 :             result = mannwhitneyu_utbln7n10(s, _state);
   17019             :         }
   17020           0 :         if( ae_maxint(n1, n2, _state)==11 )
   17021             :         {
   17022           0 :             result = mannwhitneyu_utbln7n11(s, _state);
   17023             :         }
   17024           0 :         if( ae_maxint(n1, n2, _state)==12 )
   17025             :         {
   17026           0 :             result = mannwhitneyu_utbln7n12(s, _state);
   17027             :         }
   17028           0 :         if( ae_maxint(n1, n2, _state)==13 )
   17029             :         {
   17030           0 :             result = mannwhitneyu_utbln7n13(s, _state);
   17031             :         }
   17032           0 :         if( ae_maxint(n1, n2, _state)==14 )
   17033             :         {
   17034           0 :             result = mannwhitneyu_utbln7n14(s, _state);
   17035             :         }
   17036           0 :         if( ae_maxint(n1, n2, _state)==15 )
   17037             :         {
   17038           0 :             result = mannwhitneyu_utbln7n15(s, _state);
   17039             :         }
   17040           0 :         if( ae_maxint(n1, n2, _state)>15 )
   17041             :         {
   17042           0 :             f0 = mannwhitneyu_utbln7n15(s, _state);
   17043           0 :             f1 = mannwhitneyu_utbln7n30(s, _state);
   17044           0 :             f2 = mannwhitneyu_utbln7n100(s, _state);
   17045           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   17046             :         }
   17047           0 :         return result;
   17048             :     }
   17049             :     
   17050             :     /*
   17051             :      * N1=8, N2 = 8, 9, 10, ...
   17052             :      */
   17053           0 :     if( ae_minint(n1, n2, _state)==8 )
   17054             :     {
   17055           0 :         if( ae_maxint(n1, n2, _state)==8 )
   17056             :         {
   17057           0 :             result = mannwhitneyu_utbln8n8(s, _state);
   17058             :         }
   17059           0 :         if( ae_maxint(n1, n2, _state)==9 )
   17060             :         {
   17061           0 :             result = mannwhitneyu_utbln8n9(s, _state);
   17062             :         }
   17063           0 :         if( ae_maxint(n1, n2, _state)==10 )
   17064             :         {
   17065           0 :             result = mannwhitneyu_utbln8n10(s, _state);
   17066             :         }
   17067           0 :         if( ae_maxint(n1, n2, _state)==11 )
   17068             :         {
   17069           0 :             result = mannwhitneyu_utbln8n11(s, _state);
   17070             :         }
   17071           0 :         if( ae_maxint(n1, n2, _state)==12 )
   17072             :         {
   17073           0 :             result = mannwhitneyu_utbln8n12(s, _state);
   17074             :         }
   17075           0 :         if( ae_maxint(n1, n2, _state)==13 )
   17076             :         {
   17077           0 :             result = mannwhitneyu_utbln8n13(s, _state);
   17078             :         }
   17079           0 :         if( ae_maxint(n1, n2, _state)==14 )
   17080             :         {
   17081           0 :             result = mannwhitneyu_utbln8n14(s, _state);
   17082             :         }
   17083           0 :         if( ae_maxint(n1, n2, _state)==15 )
   17084             :         {
   17085           0 :             result = mannwhitneyu_utbln8n15(s, _state);
   17086             :         }
   17087           0 :         if( ae_maxint(n1, n2, _state)>15 )
   17088             :         {
   17089           0 :             f0 = mannwhitneyu_utbln8n15(s, _state);
   17090           0 :             f1 = mannwhitneyu_utbln8n30(s, _state);
   17091           0 :             f2 = mannwhitneyu_utbln8n100(s, _state);
   17092           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   17093             :         }
   17094           0 :         return result;
   17095             :     }
   17096             :     
   17097             :     /*
   17098             :      * N1=9, N2 = 9, 10, ...
   17099             :      */
   17100           0 :     if( ae_minint(n1, n2, _state)==9 )
   17101             :     {
   17102           0 :         if( ae_maxint(n1, n2, _state)==9 )
   17103             :         {
   17104           0 :             result = mannwhitneyu_utbln9n9(s, _state);
   17105             :         }
   17106           0 :         if( ae_maxint(n1, n2, _state)==10 )
   17107             :         {
   17108           0 :             result = mannwhitneyu_utbln9n10(s, _state);
   17109             :         }
   17110           0 :         if( ae_maxint(n1, n2, _state)==11 )
   17111             :         {
   17112           0 :             result = mannwhitneyu_utbln9n11(s, _state);
   17113             :         }
   17114           0 :         if( ae_maxint(n1, n2, _state)==12 )
   17115             :         {
   17116           0 :             result = mannwhitneyu_utbln9n12(s, _state);
   17117             :         }
   17118           0 :         if( ae_maxint(n1, n2, _state)==13 )
   17119             :         {
   17120           0 :             result = mannwhitneyu_utbln9n13(s, _state);
   17121             :         }
   17122           0 :         if( ae_maxint(n1, n2, _state)==14 )
   17123             :         {
   17124           0 :             result = mannwhitneyu_utbln9n14(s, _state);
   17125             :         }
   17126           0 :         if( ae_maxint(n1, n2, _state)==15 )
   17127             :         {
   17128           0 :             result = mannwhitneyu_utbln9n15(s, _state);
   17129             :         }
   17130           0 :         if( ae_maxint(n1, n2, _state)>15 )
   17131             :         {
   17132           0 :             f0 = mannwhitneyu_utbln9n15(s, _state);
   17133           0 :             f1 = mannwhitneyu_utbln9n30(s, _state);
   17134           0 :             f2 = mannwhitneyu_utbln9n100(s, _state);
   17135           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   17136             :         }
   17137           0 :         return result;
   17138             :     }
   17139             :     
   17140             :     /*
   17141             :      * N1=10, N2 = 10, 11, ...
   17142             :      */
   17143           0 :     if( ae_minint(n1, n2, _state)==10 )
   17144             :     {
   17145           0 :         if( ae_maxint(n1, n2, _state)==10 )
   17146             :         {
   17147           0 :             result = mannwhitneyu_utbln10n10(s, _state);
   17148             :         }
   17149           0 :         if( ae_maxint(n1, n2, _state)==11 )
   17150             :         {
   17151           0 :             result = mannwhitneyu_utbln10n11(s, _state);
   17152             :         }
   17153           0 :         if( ae_maxint(n1, n2, _state)==12 )
   17154             :         {
   17155           0 :             result = mannwhitneyu_utbln10n12(s, _state);
   17156             :         }
   17157           0 :         if( ae_maxint(n1, n2, _state)==13 )
   17158             :         {
   17159           0 :             result = mannwhitneyu_utbln10n13(s, _state);
   17160             :         }
   17161           0 :         if( ae_maxint(n1, n2, _state)==14 )
   17162             :         {
   17163           0 :             result = mannwhitneyu_utbln10n14(s, _state);
   17164             :         }
   17165           0 :         if( ae_maxint(n1, n2, _state)==15 )
   17166             :         {
   17167           0 :             result = mannwhitneyu_utbln10n15(s, _state);
   17168             :         }
   17169           0 :         if( ae_maxint(n1, n2, _state)>15 )
   17170             :         {
   17171           0 :             f0 = mannwhitneyu_utbln10n15(s, _state);
   17172           0 :             f1 = mannwhitneyu_utbln10n30(s, _state);
   17173           0 :             f2 = mannwhitneyu_utbln10n100(s, _state);
   17174           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   17175             :         }
   17176           0 :         return result;
   17177             :     }
   17178             :     
   17179             :     /*
   17180             :      * N1=11, N2 = 11, 12, ...
   17181             :      */
   17182           0 :     if( ae_minint(n1, n2, _state)==11 )
   17183             :     {
   17184           0 :         if( ae_maxint(n1, n2, _state)==11 )
   17185             :         {
   17186           0 :             result = mannwhitneyu_utbln11n11(s, _state);
   17187             :         }
   17188           0 :         if( ae_maxint(n1, n2, _state)==12 )
   17189             :         {
   17190           0 :             result = mannwhitneyu_utbln11n12(s, _state);
   17191             :         }
   17192           0 :         if( ae_maxint(n1, n2, _state)==13 )
   17193             :         {
   17194           0 :             result = mannwhitneyu_utbln11n13(s, _state);
   17195             :         }
   17196           0 :         if( ae_maxint(n1, n2, _state)==14 )
   17197             :         {
   17198           0 :             result = mannwhitneyu_utbln11n14(s, _state);
   17199             :         }
   17200           0 :         if( ae_maxint(n1, n2, _state)==15 )
   17201             :         {
   17202           0 :             result = mannwhitneyu_utbln11n15(s, _state);
   17203             :         }
   17204           0 :         if( ae_maxint(n1, n2, _state)>15 )
   17205             :         {
   17206           0 :             f0 = mannwhitneyu_utbln11n15(s, _state);
   17207           0 :             f1 = mannwhitneyu_utbln11n30(s, _state);
   17208           0 :             f2 = mannwhitneyu_utbln11n100(s, _state);
   17209           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   17210             :         }
   17211           0 :         return result;
   17212             :     }
   17213             :     
   17214             :     /*
   17215             :      * N1=12, N2 = 12, 13, ...
   17216             :      */
   17217           0 :     if( ae_minint(n1, n2, _state)==12 )
   17218             :     {
   17219           0 :         if( ae_maxint(n1, n2, _state)==12 )
   17220             :         {
   17221           0 :             result = mannwhitneyu_utbln12n12(s, _state);
   17222             :         }
   17223           0 :         if( ae_maxint(n1, n2, _state)==13 )
   17224             :         {
   17225           0 :             result = mannwhitneyu_utbln12n13(s, _state);
   17226             :         }
   17227           0 :         if( ae_maxint(n1, n2, _state)==14 )
   17228             :         {
   17229           0 :             result = mannwhitneyu_utbln12n14(s, _state);
   17230             :         }
   17231           0 :         if( ae_maxint(n1, n2, _state)==15 )
   17232             :         {
   17233           0 :             result = mannwhitneyu_utbln12n15(s, _state);
   17234             :         }
   17235           0 :         if( ae_maxint(n1, n2, _state)>15 )
   17236             :         {
   17237           0 :             f0 = mannwhitneyu_utbln12n15(s, _state);
   17238           0 :             f1 = mannwhitneyu_utbln12n30(s, _state);
   17239           0 :             f2 = mannwhitneyu_utbln12n100(s, _state);
   17240           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   17241             :         }
   17242           0 :         return result;
   17243             :     }
   17244             :     
   17245             :     /*
   17246             :      * N1=13, N2 = 13, 14, ...
   17247             :      */
   17248           0 :     if( ae_minint(n1, n2, _state)==13 )
   17249             :     {
   17250           0 :         if( ae_maxint(n1, n2, _state)==13 )
   17251             :         {
   17252           0 :             result = mannwhitneyu_utbln13n13(s, _state);
   17253             :         }
   17254           0 :         if( ae_maxint(n1, n2, _state)==14 )
   17255             :         {
   17256           0 :             result = mannwhitneyu_utbln13n14(s, _state);
   17257             :         }
   17258           0 :         if( ae_maxint(n1, n2, _state)==15 )
   17259             :         {
   17260           0 :             result = mannwhitneyu_utbln13n15(s, _state);
   17261             :         }
   17262           0 :         if( ae_maxint(n1, n2, _state)>15 )
   17263             :         {
   17264           0 :             f0 = mannwhitneyu_utbln13n15(s, _state);
   17265           0 :             f1 = mannwhitneyu_utbln13n30(s, _state);
   17266           0 :             f2 = mannwhitneyu_utbln13n100(s, _state);
   17267           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   17268             :         }
   17269           0 :         return result;
   17270             :     }
   17271             :     
   17272             :     /*
   17273             :      * N1=14, N2 = 14, 15, ...
   17274             :      */
   17275           0 :     if( ae_minint(n1, n2, _state)==14 )
   17276             :     {
   17277           0 :         if( ae_maxint(n1, n2, _state)==14 )
   17278             :         {
   17279           0 :             result = mannwhitneyu_utbln14n14(s, _state);
   17280             :         }
   17281           0 :         if( ae_maxint(n1, n2, _state)==15 )
   17282             :         {
   17283           0 :             result = mannwhitneyu_utbln14n15(s, _state);
   17284             :         }
   17285           0 :         if( ae_maxint(n1, n2, _state)>15 )
   17286             :         {
   17287           0 :             f0 = mannwhitneyu_utbln14n15(s, _state);
   17288           0 :             f1 = mannwhitneyu_utbln14n30(s, _state);
   17289           0 :             f2 = mannwhitneyu_utbln14n100(s, _state);
   17290           0 :             result = mannwhitneyu_uninterpolate(f0, f1, f2, ae_maxint(n1, n2, _state), _state);
   17291             :         }
   17292           0 :         return result;
   17293             :     }
   17294             :     
   17295             :     /*
   17296             :      * N1 >= 15, N2 >= 15
   17297             :      */
   17298           0 :     if( ae_fp_greater(s,(double)(4)) )
   17299             :     {
   17300           0 :         s = (double)(4);
   17301             :     }
   17302           0 :     if( ae_fp_less(s,(double)(3)) )
   17303             :     {
   17304           0 :         s0 = 0.000000e+00;
   17305           0 :         f0 = mannwhitneyu_usigma000(n1, n2, _state);
   17306           0 :         s1 = 7.500000e-01;
   17307           0 :         f1 = mannwhitneyu_usigma075(n1, n2, _state);
   17308           0 :         s2 = 1.500000e+00;
   17309           0 :         f2 = mannwhitneyu_usigma150(n1, n2, _state);
   17310           0 :         s3 = 2.250000e+00;
   17311           0 :         f3 = mannwhitneyu_usigma225(n1, n2, _state);
   17312           0 :         s4 = 3.000000e+00;
   17313           0 :         f4 = mannwhitneyu_usigma300(n1, n2, _state);
   17314           0 :         f1 = ((s-s0)*f1-(s-s1)*f0)/(s1-s0);
   17315           0 :         f2 = ((s-s0)*f2-(s-s2)*f0)/(s2-s0);
   17316           0 :         f3 = ((s-s0)*f3-(s-s3)*f0)/(s3-s0);
   17317           0 :         f4 = ((s-s0)*f4-(s-s4)*f0)/(s4-s0);
   17318           0 :         f2 = ((s-s1)*f2-(s-s2)*f1)/(s2-s1);
   17319           0 :         f3 = ((s-s1)*f3-(s-s3)*f1)/(s3-s1);
   17320           0 :         f4 = ((s-s1)*f4-(s-s4)*f1)/(s4-s1);
   17321           0 :         f3 = ((s-s2)*f3-(s-s3)*f2)/(s3-s2);
   17322           0 :         f4 = ((s-s2)*f4-(s-s4)*f2)/(s4-s2);
   17323           0 :         f4 = ((s-s3)*f4-(s-s4)*f3)/(s4-s3);
   17324           0 :         result = f4;
   17325             :     }
   17326             :     else
   17327             :     {
   17328           0 :         s0 = 3.000000e+00;
   17329           0 :         f0 = mannwhitneyu_usigma300(n1, n2, _state);
   17330           0 :         s1 = 3.333333e+00;
   17331           0 :         f1 = mannwhitneyu_usigma333(n1, n2, _state);
   17332           0 :         s2 = 3.666667e+00;
   17333           0 :         f2 = mannwhitneyu_usigma367(n1, n2, _state);
   17334           0 :         s3 = 4.000000e+00;
   17335           0 :         f3 = mannwhitneyu_usigma400(n1, n2, _state);
   17336           0 :         f1 = ((s-s0)*f1-(s-s1)*f0)/(s1-s0);
   17337           0 :         f2 = ((s-s0)*f2-(s-s2)*f0)/(s2-s0);
   17338           0 :         f3 = ((s-s0)*f3-(s-s3)*f0)/(s3-s0);
   17339           0 :         f2 = ((s-s1)*f2-(s-s2)*f1)/(s2-s1);
   17340           0 :         f3 = ((s-s1)*f3-(s-s3)*f1)/(s3-s1);
   17341           0 :         f3 = ((s-s2)*f3-(s-s3)*f2)/(s3-s2);
   17342           0 :         result = f3;
   17343             :     }
   17344           0 :     return result;
   17345             : }
   17346             : 
   17347             : 
   17348             : #endif
   17349             : #if defined(AE_COMPILE_JARQUEBERA) || !defined(AE_PARTIAL_BUILD)
   17350             : 
   17351             : 
   17352             : /*************************************************************************
   17353             : Jarque-Bera test
   17354             : 
   17355             : This test checks hypotheses about the fact that a  given  sample  X  is  a
   17356             : sample of normal random variable.
   17357             : 
   17358             : Requirements:
   17359             :     * the number of elements in the sample is not less than 5.
   17360             : 
   17361             : Input parameters:
   17362             :     X   -   sample. Array whose index goes from 0 to N-1.
   17363             :     N   -   size of the sample. N>=5
   17364             : 
   17365             : Output parameters:
   17366             :     P           -   p-value for the test
   17367             : 
   17368             : Accuracy of the approximation used (5<=N<=1951):
   17369             : 
   17370             : p-value             relative error (5<=N<=1951)
   17371             : [1, 0.1]            < 1%
   17372             : [0.1, 0.01]         < 2%
   17373             : [0.01, 0.001]       < 6%
   17374             : [0.001, 0]          wasn't measured
   17375             : 
   17376             : For N>1951 accuracy wasn't measured but it shouldn't be sharply  different
   17377             : from table values.
   17378             : 
   17379             :   -- ALGLIB --
   17380             :      Copyright 09.04.2007 by Bochkanov Sergey
   17381             : *************************************************************************/
   17382           0 : void jarqueberatest(/* Real    */ ae_vector* x,
   17383             :      ae_int_t n,
   17384             :      double* p,
   17385             :      ae_state *_state)
   17386             : {
   17387             :     double s;
   17388             : 
   17389           0 :     *p = 0;
   17390             : 
   17391             :     
   17392             :     /*
   17393             :      * N is too small
   17394             :      */
   17395           0 :     if( n<5 )
   17396             :     {
   17397           0 :         *p = 1.0;
   17398           0 :         return;
   17399             :     }
   17400             :     
   17401             :     /*
   17402             :      * N is large enough
   17403             :      */
   17404           0 :     jarquebera_jarqueberastatistic(x, n, &s, _state);
   17405           0 :     *p = jarquebera_jarqueberaapprox(n, s, _state);
   17406             : }
   17407             : 
   17408             : 
   17409           0 : static void jarquebera_jarqueberastatistic(/* Real    */ ae_vector* x,
   17410             :      ae_int_t n,
   17411             :      double* s,
   17412             :      ae_state *_state)
   17413             : {
   17414             :     ae_int_t i;
   17415             :     double v;
   17416             :     double v1;
   17417             :     double v2;
   17418             :     double stddev;
   17419             :     double mean;
   17420             :     double variance;
   17421             :     double skewness;
   17422             :     double kurtosis;
   17423             : 
   17424           0 :     *s = 0;
   17425             : 
   17426           0 :     mean = (double)(0);
   17427           0 :     variance = (double)(0);
   17428           0 :     skewness = (double)(0);
   17429           0 :     kurtosis = (double)(0);
   17430           0 :     stddev = (double)(0);
   17431           0 :     ae_assert(n>1, "Assertion failed", _state);
   17432             :     
   17433             :     /*
   17434             :      * Mean
   17435             :      */
   17436           0 :     for(i=0; i<=n-1; i++)
   17437             :     {
   17438           0 :         mean = mean+x->ptr.p_double[i];
   17439             :     }
   17440           0 :     mean = mean/n;
   17441             :     
   17442             :     /*
   17443             :      * Variance (using corrected two-pass algorithm)
   17444             :      */
   17445           0 :     if( n!=1 )
   17446             :     {
   17447           0 :         v1 = (double)(0);
   17448           0 :         for(i=0; i<=n-1; i++)
   17449             :         {
   17450           0 :             v1 = v1+ae_sqr(x->ptr.p_double[i]-mean, _state);
   17451             :         }
   17452           0 :         v2 = (double)(0);
   17453           0 :         for(i=0; i<=n-1; i++)
   17454             :         {
   17455           0 :             v2 = v2+(x->ptr.p_double[i]-mean);
   17456             :         }
   17457           0 :         v2 = ae_sqr(v2, _state)/n;
   17458           0 :         variance = (v1-v2)/(n-1);
   17459           0 :         if( ae_fp_less(variance,(double)(0)) )
   17460             :         {
   17461           0 :             variance = (double)(0);
   17462             :         }
   17463           0 :         stddev = ae_sqrt(variance, _state);
   17464             :     }
   17465             :     
   17466             :     /*
   17467             :      * Skewness and kurtosis
   17468             :      */
   17469           0 :     if( ae_fp_neq(stddev,(double)(0)) )
   17470             :     {
   17471           0 :         for(i=0; i<=n-1; i++)
   17472             :         {
   17473           0 :             v = (x->ptr.p_double[i]-mean)/stddev;
   17474           0 :             v2 = ae_sqr(v, _state);
   17475           0 :             skewness = skewness+v2*v;
   17476           0 :             kurtosis = kurtosis+ae_sqr(v2, _state);
   17477             :         }
   17478           0 :         skewness = skewness/n;
   17479           0 :         kurtosis = kurtosis/n-3;
   17480             :     }
   17481             :     
   17482             :     /*
   17483             :      * Statistic
   17484             :      */
   17485           0 :     *s = (double)n/(double)6*(ae_sqr(skewness, _state)+ae_sqr(kurtosis, _state)/4);
   17486           0 : }
   17487             : 
   17488             : 
   17489           0 : static double jarquebera_jarqueberaapprox(ae_int_t n,
   17490             :      double s,
   17491             :      ae_state *_state)
   17492             : {
   17493             :     ae_frame _frame_block;
   17494             :     ae_vector vx;
   17495             :     ae_vector vy;
   17496             :     ae_matrix ctbl;
   17497             :     double t1;
   17498             :     double t2;
   17499             :     double t3;
   17500             :     double t;
   17501             :     double f1;
   17502             :     double f2;
   17503             :     double f3;
   17504             :     double f12;
   17505             :     double f23;
   17506             :     double x;
   17507             :     double result;
   17508             : 
   17509           0 :     ae_frame_make(_state, &_frame_block);
   17510           0 :     memset(&vx, 0, sizeof(vx));
   17511           0 :     memset(&vy, 0, sizeof(vy));
   17512           0 :     memset(&ctbl, 0, sizeof(ctbl));
   17513           0 :     ae_vector_init(&vx, 0, DT_REAL, _state, ae_true);
   17514           0 :     ae_vector_init(&vy, 0, DT_REAL, _state, ae_true);
   17515           0 :     ae_matrix_init(&ctbl, 0, 0, DT_REAL, _state, ae_true);
   17516             : 
   17517           0 :     result = (double)(1);
   17518           0 :     x = s;
   17519           0 :     if( n<5 )
   17520             :     {
   17521           0 :         ae_frame_leave(_state);
   17522           0 :         return result;
   17523             :     }
   17524             :     
   17525             :     /*
   17526             :      * N = 5..20 are tabulated
   17527             :      */
   17528           0 :     if( n>=5&&n<=20 )
   17529             :     {
   17530           0 :         if( n==5 )
   17531             :         {
   17532           0 :             result = ae_exp(jarquebera_jbtbl5(x, _state), _state);
   17533             :         }
   17534           0 :         if( n==6 )
   17535             :         {
   17536           0 :             result = ae_exp(jarquebera_jbtbl6(x, _state), _state);
   17537             :         }
   17538           0 :         if( n==7 )
   17539             :         {
   17540           0 :             result = ae_exp(jarquebera_jbtbl7(x, _state), _state);
   17541             :         }
   17542           0 :         if( n==8 )
   17543             :         {
   17544           0 :             result = ae_exp(jarquebera_jbtbl8(x, _state), _state);
   17545             :         }
   17546           0 :         if( n==9 )
   17547             :         {
   17548           0 :             result = ae_exp(jarquebera_jbtbl9(x, _state), _state);
   17549             :         }
   17550           0 :         if( n==10 )
   17551             :         {
   17552           0 :             result = ae_exp(jarquebera_jbtbl10(x, _state), _state);
   17553             :         }
   17554           0 :         if( n==11 )
   17555             :         {
   17556           0 :             result = ae_exp(jarquebera_jbtbl11(x, _state), _state);
   17557             :         }
   17558           0 :         if( n==12 )
   17559             :         {
   17560           0 :             result = ae_exp(jarquebera_jbtbl12(x, _state), _state);
   17561             :         }
   17562           0 :         if( n==13 )
   17563             :         {
   17564           0 :             result = ae_exp(jarquebera_jbtbl13(x, _state), _state);
   17565             :         }
   17566           0 :         if( n==14 )
   17567             :         {
   17568           0 :             result = ae_exp(jarquebera_jbtbl14(x, _state), _state);
   17569             :         }
   17570           0 :         if( n==15 )
   17571             :         {
   17572           0 :             result = ae_exp(jarquebera_jbtbl15(x, _state), _state);
   17573             :         }
   17574           0 :         if( n==16 )
   17575             :         {
   17576           0 :             result = ae_exp(jarquebera_jbtbl16(x, _state), _state);
   17577             :         }
   17578           0 :         if( n==17 )
   17579             :         {
   17580           0 :             result = ae_exp(jarquebera_jbtbl17(x, _state), _state);
   17581             :         }
   17582           0 :         if( n==18 )
   17583             :         {
   17584           0 :             result = ae_exp(jarquebera_jbtbl18(x, _state), _state);
   17585             :         }
   17586           0 :         if( n==19 )
   17587             :         {
   17588           0 :             result = ae_exp(jarquebera_jbtbl19(x, _state), _state);
   17589             :         }
   17590           0 :         if( n==20 )
   17591             :         {
   17592           0 :             result = ae_exp(jarquebera_jbtbl20(x, _state), _state);
   17593             :         }
   17594           0 :         ae_frame_leave(_state);
   17595           0 :         return result;
   17596             :     }
   17597             :     
   17598             :     /*
   17599             :      * N = 20, 30, 50 are tabulated.
   17600             :      * In-between values are interpolated
   17601             :      * using interpolating polynomial of the second degree.
   17602             :      */
   17603           0 :     if( n>20&&n<=50 )
   17604             :     {
   17605           0 :         t1 = -1.0/20.0;
   17606           0 :         t2 = -1.0/30.0;
   17607           0 :         t3 = -1.0/50.0;
   17608           0 :         t = -1.0/n;
   17609           0 :         f1 = jarquebera_jbtbl20(x, _state);
   17610           0 :         f2 = jarquebera_jbtbl30(x, _state);
   17611           0 :         f3 = jarquebera_jbtbl50(x, _state);
   17612           0 :         f12 = ((t-t2)*f1+(t1-t)*f2)/(t1-t2);
   17613           0 :         f23 = ((t-t3)*f2+(t2-t)*f3)/(t2-t3);
   17614           0 :         result = ((t-t3)*f12+(t1-t)*f23)/(t1-t3);
   17615           0 :         if( ae_fp_greater(result,(double)(0)) )
   17616             :         {
   17617           0 :             result = (double)(0);
   17618             :         }
   17619           0 :         result = ae_exp(result, _state);
   17620           0 :         ae_frame_leave(_state);
   17621           0 :         return result;
   17622             :     }
   17623             :     
   17624             :     /*
   17625             :      * N = 50, 65, 100 are tabulated.
   17626             :      * In-between values are interpolated
   17627             :      * using interpolating polynomial of the second degree.
   17628             :      */
   17629           0 :     if( n>50&&n<=100 )
   17630             :     {
   17631           0 :         t1 = -1.0/50.0;
   17632           0 :         t2 = -1.0/65.0;
   17633           0 :         t3 = -1.0/100.0;
   17634           0 :         t = -1.0/n;
   17635           0 :         f1 = jarquebera_jbtbl50(x, _state);
   17636           0 :         f2 = jarquebera_jbtbl65(x, _state);
   17637           0 :         f3 = jarquebera_jbtbl100(x, _state);
   17638           0 :         f12 = ((t-t2)*f1+(t1-t)*f2)/(t1-t2);
   17639           0 :         f23 = ((t-t3)*f2+(t2-t)*f3)/(t2-t3);
   17640           0 :         result = ((t-t3)*f12+(t1-t)*f23)/(t1-t3);
   17641           0 :         if( ae_fp_greater(result,(double)(0)) )
   17642             :         {
   17643           0 :             result = (double)(0);
   17644             :         }
   17645           0 :         result = ae_exp(result, _state);
   17646           0 :         ae_frame_leave(_state);
   17647           0 :         return result;
   17648             :     }
   17649             :     
   17650             :     /*
   17651             :      * N = 100, 130, 200 are tabulated.
   17652             :      * In-between values are interpolated
   17653             :      * using interpolating polynomial of the second degree.
   17654             :      */
   17655           0 :     if( n>100&&n<=200 )
   17656             :     {
   17657           0 :         t1 = -1.0/100.0;
   17658           0 :         t2 = -1.0/130.0;
   17659           0 :         t3 = -1.0/200.0;
   17660           0 :         t = -1.0/n;
   17661           0 :         f1 = jarquebera_jbtbl100(x, _state);
   17662           0 :         f2 = jarquebera_jbtbl130(x, _state);
   17663           0 :         f3 = jarquebera_jbtbl200(x, _state);
   17664           0 :         f12 = ((t-t2)*f1+(t1-t)*f2)/(t1-t2);
   17665           0 :         f23 = ((t-t3)*f2+(t2-t)*f3)/(t2-t3);
   17666           0 :         result = ((t-t3)*f12+(t1-t)*f23)/(t1-t3);
   17667           0 :         if( ae_fp_greater(result,(double)(0)) )
   17668             :         {
   17669           0 :             result = (double)(0);
   17670             :         }
   17671           0 :         result = ae_exp(result, _state);
   17672           0 :         ae_frame_leave(_state);
   17673           0 :         return result;
   17674             :     }
   17675             :     
   17676             :     /*
   17677             :      * N = 200, 301, 501 are tabulated.
   17678             :      * In-between values are interpolated
   17679             :      * using interpolating polynomial of the second degree.
   17680             :      */
   17681           0 :     if( n>200&&n<=501 )
   17682             :     {
   17683           0 :         t1 = -1.0/200.0;
   17684           0 :         t2 = -1.0/301.0;
   17685           0 :         t3 = -1.0/501.0;
   17686           0 :         t = -1.0/n;
   17687           0 :         f1 = jarquebera_jbtbl200(x, _state);
   17688           0 :         f2 = jarquebera_jbtbl301(x, _state);
   17689           0 :         f3 = jarquebera_jbtbl501(x, _state);
   17690           0 :         f12 = ((t-t2)*f1+(t1-t)*f2)/(t1-t2);
   17691           0 :         f23 = ((t-t3)*f2+(t2-t)*f3)/(t2-t3);
   17692           0 :         result = ((t-t3)*f12+(t1-t)*f23)/(t1-t3);
   17693           0 :         if( ae_fp_greater(result,(double)(0)) )
   17694             :         {
   17695           0 :             result = (double)(0);
   17696             :         }
   17697           0 :         result = ae_exp(result, _state);
   17698           0 :         ae_frame_leave(_state);
   17699           0 :         return result;
   17700             :     }
   17701             :     
   17702             :     /*
   17703             :      * N = 501, 701, 1401 are tabulated.
   17704             :      * In-between values are interpolated
   17705             :      * using interpolating polynomial of the second degree.
   17706             :      */
   17707           0 :     if( n>501&&n<=1401 )
   17708             :     {
   17709           0 :         t1 = -1.0/501.0;
   17710           0 :         t2 = -1.0/701.0;
   17711           0 :         t3 = -1.0/1401.0;
   17712           0 :         t = -1.0/n;
   17713           0 :         f1 = jarquebera_jbtbl501(x, _state);
   17714           0 :         f2 = jarquebera_jbtbl701(x, _state);
   17715           0 :         f3 = jarquebera_jbtbl1401(x, _state);
   17716           0 :         f12 = ((t-t2)*f1+(t1-t)*f2)/(t1-t2);
   17717           0 :         f23 = ((t-t3)*f2+(t2-t)*f3)/(t2-t3);
   17718           0 :         result = ((t-t3)*f12+(t1-t)*f23)/(t1-t3);
   17719           0 :         if( ae_fp_greater(result,(double)(0)) )
   17720             :         {
   17721           0 :             result = (double)(0);
   17722             :         }
   17723           0 :         result = ae_exp(result, _state);
   17724           0 :         ae_frame_leave(_state);
   17725           0 :         return result;
   17726             :     }
   17727             :     
   17728             :     /*
   17729             :      * Asymptotic expansion
   17730             :      */
   17731           0 :     if( n>1401 )
   17732             :     {
   17733           0 :         result = -0.5*x+(jarquebera_jbtbl1401(x, _state)+0.5*x)*ae_sqrt((double)1401/(double)n, _state);
   17734           0 :         if( ae_fp_greater(result,(double)(0)) )
   17735             :         {
   17736           0 :             result = (double)(0);
   17737             :         }
   17738           0 :         result = ae_exp(result, _state);
   17739           0 :         ae_frame_leave(_state);
   17740           0 :         return result;
   17741             :     }
   17742           0 :     ae_frame_leave(_state);
   17743           0 :     return result;
   17744             : }
   17745             : 
   17746             : 
   17747           0 : static double jarquebera_jbtbl5(double s, ae_state *_state)
   17748             : {
   17749             :     double x;
   17750             :     double tj;
   17751             :     double tj1;
   17752             :     double result;
   17753             : 
   17754             : 
   17755           0 :     result = (double)(0);
   17756           0 :     if( ae_fp_less_eq(s,0.4000) )
   17757             :     {
   17758           0 :         x = 2*(s-0.000000)/0.400000-1;
   17759           0 :         tj = (double)(1);
   17760           0 :         tj1 = x;
   17761           0 :         jarquebera_jbcheb(x, -1.097885e-20, &tj, &tj1, &result, _state);
   17762           0 :         jarquebera_jbcheb(x, -2.854501e-20, &tj, &tj1, &result, _state);
   17763           0 :         jarquebera_jbcheb(x, -1.756616e-20, &tj, &tj1, &result, _state);
   17764           0 :         if( ae_fp_greater(result,(double)(0)) )
   17765             :         {
   17766           0 :             result = (double)(0);
   17767             :         }
   17768           0 :         return result;
   17769             :     }
   17770           0 :     if( ae_fp_less_eq(s,1.1000) )
   17771             :     {
   17772           0 :         x = 2*(s-0.400000)/0.700000-1;
   17773           0 :         tj = (double)(1);
   17774           0 :         tj1 = x;
   17775           0 :         jarquebera_jbcheb(x, -1.324545e+00, &tj, &tj1, &result, _state);
   17776           0 :         jarquebera_jbcheb(x, -1.075941e+00, &tj, &tj1, &result, _state);
   17777           0 :         jarquebera_jbcheb(x, -9.772272e-01, &tj, &tj1, &result, _state);
   17778           0 :         jarquebera_jbcheb(x, 3.175686e-01, &tj, &tj1, &result, _state);
   17779           0 :         jarquebera_jbcheb(x, -1.576162e-01, &tj, &tj1, &result, _state);
   17780           0 :         jarquebera_jbcheb(x, 1.126861e-01, &tj, &tj1, &result, _state);
   17781           0 :         jarquebera_jbcheb(x, -3.434425e-02, &tj, &tj1, &result, _state);
   17782           0 :         jarquebera_jbcheb(x, -2.790359e-01, &tj, &tj1, &result, _state);
   17783           0 :         jarquebera_jbcheb(x, 2.809178e-02, &tj, &tj1, &result, _state);
   17784           0 :         jarquebera_jbcheb(x, -5.479704e-01, &tj, &tj1, &result, _state);
   17785           0 :         jarquebera_jbcheb(x, 3.717040e-02, &tj, &tj1, &result, _state);
   17786           0 :         jarquebera_jbcheb(x, -5.294170e-01, &tj, &tj1, &result, _state);
   17787           0 :         jarquebera_jbcheb(x, 2.880632e-02, &tj, &tj1, &result, _state);
   17788           0 :         jarquebera_jbcheb(x, -3.023344e-01, &tj, &tj1, &result, _state);
   17789           0 :         jarquebera_jbcheb(x, 1.601531e-02, &tj, &tj1, &result, _state);
   17790           0 :         jarquebera_jbcheb(x, -7.920403e-02, &tj, &tj1, &result, _state);
   17791           0 :         if( ae_fp_greater(result,(double)(0)) )
   17792             :         {
   17793           0 :             result = (double)(0);
   17794             :         }
   17795           0 :         return result;
   17796             :     }
   17797           0 :     result = -5.188419e+02*(s-1.100000e+00)-4.767297e+00;
   17798           0 :     return result;
   17799             : }
   17800             : 
   17801             : 
   17802           0 : static double jarquebera_jbtbl6(double s, ae_state *_state)
   17803             : {
   17804             :     double x;
   17805             :     double tj;
   17806             :     double tj1;
   17807             :     double result;
   17808             : 
   17809             : 
   17810           0 :     result = (double)(0);
   17811           0 :     if( ae_fp_less_eq(s,0.2500) )
   17812             :     {
   17813           0 :         x = 2*(s-0.000000)/0.250000-1;
   17814           0 :         tj = (double)(1);
   17815           0 :         tj1 = x;
   17816           0 :         jarquebera_jbcheb(x, -2.274707e-04, &tj, &tj1, &result, _state);
   17817           0 :         jarquebera_jbcheb(x, -5.700471e-04, &tj, &tj1, &result, _state);
   17818           0 :         jarquebera_jbcheb(x, -3.425764e-04, &tj, &tj1, &result, _state);
   17819           0 :         if( ae_fp_greater(result,(double)(0)) )
   17820             :         {
   17821           0 :             result = (double)(0);
   17822             :         }
   17823           0 :         return result;
   17824             :     }
   17825           0 :     if( ae_fp_less_eq(s,1.3000) )
   17826             :     {
   17827           0 :         x = 2*(s-0.250000)/1.050000-1;
   17828           0 :         tj = (double)(1);
   17829           0 :         tj1 = x;
   17830           0 :         jarquebera_jbcheb(x, -1.339000e+00, &tj, &tj1, &result, _state);
   17831           0 :         jarquebera_jbcheb(x, -2.011104e+00, &tj, &tj1, &result, _state);
   17832           0 :         jarquebera_jbcheb(x, -8.168177e-01, &tj, &tj1, &result, _state);
   17833           0 :         jarquebera_jbcheb(x, -1.085666e-01, &tj, &tj1, &result, _state);
   17834           0 :         jarquebera_jbcheb(x, 7.738606e-02, &tj, &tj1, &result, _state);
   17835           0 :         jarquebera_jbcheb(x, 7.022876e-02, &tj, &tj1, &result, _state);
   17836           0 :         jarquebera_jbcheb(x, 3.462402e-02, &tj, &tj1, &result, _state);
   17837           0 :         jarquebera_jbcheb(x, 6.908270e-03, &tj, &tj1, &result, _state);
   17838           0 :         jarquebera_jbcheb(x, -8.230772e-03, &tj, &tj1, &result, _state);
   17839           0 :         jarquebera_jbcheb(x, -1.006996e-02, &tj, &tj1, &result, _state);
   17840           0 :         jarquebera_jbcheb(x, -5.410222e-03, &tj, &tj1, &result, _state);
   17841           0 :         jarquebera_jbcheb(x, -2.893768e-03, &tj, &tj1, &result, _state);
   17842           0 :         jarquebera_jbcheb(x, 8.114564e-04, &tj, &tj1, &result, _state);
   17843           0 :         if( ae_fp_greater(result,(double)(0)) )
   17844             :         {
   17845           0 :             result = (double)(0);
   17846             :         }
   17847           0 :         return result;
   17848             :     }
   17849           0 :     if( ae_fp_less_eq(s,1.8500) )
   17850             :     {
   17851           0 :         x = 2*(s-1.300000)/0.550000-1;
   17852           0 :         tj = (double)(1);
   17853           0 :         tj1 = x;
   17854           0 :         jarquebera_jbcheb(x, -6.794311e+00, &tj, &tj1, &result, _state);
   17855           0 :         jarquebera_jbcheb(x, -3.578700e+00, &tj, &tj1, &result, _state);
   17856           0 :         jarquebera_jbcheb(x, -1.394664e+00, &tj, &tj1, &result, _state);
   17857           0 :         jarquebera_jbcheb(x, -7.928290e-01, &tj, &tj1, &result, _state);
   17858           0 :         jarquebera_jbcheb(x, -4.813273e-01, &tj, &tj1, &result, _state);
   17859           0 :         jarquebera_jbcheb(x, -3.076063e-01, &tj, &tj1, &result, _state);
   17860           0 :         jarquebera_jbcheb(x, -1.835380e-01, &tj, &tj1, &result, _state);
   17861           0 :         jarquebera_jbcheb(x, -1.013013e-01, &tj, &tj1, &result, _state);
   17862           0 :         jarquebera_jbcheb(x, -5.058903e-02, &tj, &tj1, &result, _state);
   17863           0 :         jarquebera_jbcheb(x, -1.856915e-02, &tj, &tj1, &result, _state);
   17864           0 :         jarquebera_jbcheb(x, -6.710887e-03, &tj, &tj1, &result, _state);
   17865           0 :         if( ae_fp_greater(result,(double)(0)) )
   17866             :         {
   17867           0 :             result = (double)(0);
   17868             :         }
   17869           0 :         return result;
   17870             :     }
   17871           0 :     result = -1.770029e+02*(s-1.850000e+00)-1.371015e+01;
   17872           0 :     return result;
   17873             : }
   17874             : 
   17875             : 
   17876           0 : static double jarquebera_jbtbl7(double s, ae_state *_state)
   17877             : {
   17878             :     double x;
   17879             :     double tj;
   17880             :     double tj1;
   17881             :     double result;
   17882             : 
   17883             : 
   17884           0 :     result = (double)(0);
   17885           0 :     if( ae_fp_less_eq(s,1.4000) )
   17886             :     {
   17887           0 :         x = 2*(s-0.000000)/1.400000-1;
   17888           0 :         tj = (double)(1);
   17889           0 :         tj1 = x;
   17890           0 :         jarquebera_jbcheb(x, -1.093681e+00, &tj, &tj1, &result, _state);
   17891           0 :         jarquebera_jbcheb(x, -1.695911e+00, &tj, &tj1, &result, _state);
   17892           0 :         jarquebera_jbcheb(x, -7.473192e-01, &tj, &tj1, &result, _state);
   17893           0 :         jarquebera_jbcheb(x, -1.203236e-01, &tj, &tj1, &result, _state);
   17894           0 :         jarquebera_jbcheb(x, 6.590379e-02, &tj, &tj1, &result, _state);
   17895           0 :         jarquebera_jbcheb(x, 6.291876e-02, &tj, &tj1, &result, _state);
   17896           0 :         jarquebera_jbcheb(x, 3.132007e-02, &tj, &tj1, &result, _state);
   17897           0 :         jarquebera_jbcheb(x, 9.411147e-03, &tj, &tj1, &result, _state);
   17898           0 :         jarquebera_jbcheb(x, -1.180067e-03, &tj, &tj1, &result, _state);
   17899           0 :         jarquebera_jbcheb(x, -3.487610e-03, &tj, &tj1, &result, _state);
   17900           0 :         jarquebera_jbcheb(x, -2.436561e-03, &tj, &tj1, &result, _state);
   17901           0 :         if( ae_fp_greater(result,(double)(0)) )
   17902             :         {
   17903           0 :             result = (double)(0);
   17904             :         }
   17905           0 :         return result;
   17906             :     }
   17907           0 :     if( ae_fp_less_eq(s,3.0000) )
   17908             :     {
   17909           0 :         x = 2*(s-1.400000)/1.600000-1;
   17910           0 :         tj = (double)(1);
   17911           0 :         tj1 = x;
   17912           0 :         jarquebera_jbcheb(x, -5.947854e+00, &tj, &tj1, &result, _state);
   17913           0 :         jarquebera_jbcheb(x, -2.772675e+00, &tj, &tj1, &result, _state);
   17914           0 :         jarquebera_jbcheb(x, -4.707912e-01, &tj, &tj1, &result, _state);
   17915           0 :         jarquebera_jbcheb(x, -1.691171e-01, &tj, &tj1, &result, _state);
   17916           0 :         jarquebera_jbcheb(x, -4.132795e-02, &tj, &tj1, &result, _state);
   17917           0 :         jarquebera_jbcheb(x, -1.481310e-02, &tj, &tj1, &result, _state);
   17918           0 :         jarquebera_jbcheb(x, 2.867536e-03, &tj, &tj1, &result, _state);
   17919           0 :         jarquebera_jbcheb(x, 8.772327e-04, &tj, &tj1, &result, _state);
   17920           0 :         jarquebera_jbcheb(x, 5.033387e-03, &tj, &tj1, &result, _state);
   17921           0 :         jarquebera_jbcheb(x, -1.378277e-03, &tj, &tj1, &result, _state);
   17922           0 :         jarquebera_jbcheb(x, -2.497964e-03, &tj, &tj1, &result, _state);
   17923           0 :         jarquebera_jbcheb(x, -3.636814e-03, &tj, &tj1, &result, _state);
   17924           0 :         jarquebera_jbcheb(x, -9.581640e-04, &tj, &tj1, &result, _state);
   17925           0 :         if( ae_fp_greater(result,(double)(0)) )
   17926             :         {
   17927           0 :             result = (double)(0);
   17928             :         }
   17929           0 :         return result;
   17930             :     }
   17931           0 :     if( ae_fp_less_eq(s,3.2000) )
   17932             :     {
   17933           0 :         x = 2*(s-3.000000)/0.200000-1;
   17934           0 :         tj = (double)(1);
   17935           0 :         tj1 = x;
   17936           0 :         jarquebera_jbcheb(x, -7.511008e+00, &tj, &tj1, &result, _state);
   17937           0 :         jarquebera_jbcheb(x, -8.140472e-01, &tj, &tj1, &result, _state);
   17938           0 :         jarquebera_jbcheb(x, 1.682053e+00, &tj, &tj1, &result, _state);
   17939           0 :         jarquebera_jbcheb(x, -2.568561e-02, &tj, &tj1, &result, _state);
   17940           0 :         jarquebera_jbcheb(x, -1.933930e+00, &tj, &tj1, &result, _state);
   17941           0 :         jarquebera_jbcheb(x, -8.140472e-01, &tj, &tj1, &result, _state);
   17942           0 :         jarquebera_jbcheb(x, -3.895025e+00, &tj, &tj1, &result, _state);
   17943           0 :         jarquebera_jbcheb(x, -8.140472e-01, &tj, &tj1, &result, _state);
   17944           0 :         jarquebera_jbcheb(x, -1.933930e+00, &tj, &tj1, &result, _state);
   17945           0 :         jarquebera_jbcheb(x, -2.568561e-02, &tj, &tj1, &result, _state);
   17946           0 :         jarquebera_jbcheb(x, 1.682053e+00, &tj, &tj1, &result, _state);
   17947           0 :         if( ae_fp_greater(result,(double)(0)) )
   17948             :         {
   17949           0 :             result = (double)(0);
   17950             :         }
   17951           0 :         return result;
   17952             :     }
   17953           0 :     result = -1.824116e+03*(s-3.200000e+00)-1.440330e+01;
   17954           0 :     return result;
   17955             : }
   17956             : 
   17957             : 
   17958           0 : static double jarquebera_jbtbl8(double s, ae_state *_state)
   17959             : {
   17960             :     double x;
   17961             :     double tj;
   17962             :     double tj1;
   17963             :     double result;
   17964             : 
   17965             : 
   17966           0 :     result = (double)(0);
   17967           0 :     if( ae_fp_less_eq(s,1.3000) )
   17968             :     {
   17969           0 :         x = 2*(s-0.000000)/1.300000-1;
   17970           0 :         tj = (double)(1);
   17971           0 :         tj1 = x;
   17972           0 :         jarquebera_jbcheb(x, -7.199015e-01, &tj, &tj1, &result, _state);
   17973           0 :         jarquebera_jbcheb(x, -1.095921e+00, &tj, &tj1, &result, _state);
   17974           0 :         jarquebera_jbcheb(x, -4.736828e-01, &tj, &tj1, &result, _state);
   17975           0 :         jarquebera_jbcheb(x, -1.047438e-01, &tj, &tj1, &result, _state);
   17976           0 :         jarquebera_jbcheb(x, -2.484320e-03, &tj, &tj1, &result, _state);
   17977           0 :         jarquebera_jbcheb(x, 7.937923e-03, &tj, &tj1, &result, _state);
   17978           0 :         jarquebera_jbcheb(x, 4.810470e-03, &tj, &tj1, &result, _state);
   17979           0 :         jarquebera_jbcheb(x, 2.139780e-03, &tj, &tj1, &result, _state);
   17980           0 :         jarquebera_jbcheb(x, 6.708443e-04, &tj, &tj1, &result, _state);
   17981           0 :         if( ae_fp_greater(result,(double)(0)) )
   17982             :         {
   17983           0 :             result = (double)(0);
   17984             :         }
   17985           0 :         return result;
   17986             :     }
   17987           0 :     if( ae_fp_less_eq(s,2.0000) )
   17988             :     {
   17989           0 :         x = 2*(s-1.300000)/0.700000-1;
   17990           0 :         tj = (double)(1);
   17991           0 :         tj1 = x;
   17992           0 :         jarquebera_jbcheb(x, -3.378966e+00, &tj, &tj1, &result, _state);
   17993           0 :         jarquebera_jbcheb(x, -7.802461e-01, &tj, &tj1, &result, _state);
   17994           0 :         jarquebera_jbcheb(x, 1.547593e-01, &tj, &tj1, &result, _state);
   17995           0 :         jarquebera_jbcheb(x, -6.241042e-02, &tj, &tj1, &result, _state);
   17996           0 :         jarquebera_jbcheb(x, 1.203274e-02, &tj, &tj1, &result, _state);
   17997           0 :         jarquebera_jbcheb(x, 5.201990e-03, &tj, &tj1, &result, _state);
   17998           0 :         jarquebera_jbcheb(x, -5.125597e-03, &tj, &tj1, &result, _state);
   17999           0 :         jarquebera_jbcheb(x, 1.584426e-03, &tj, &tj1, &result, _state);
   18000           0 :         jarquebera_jbcheb(x, 2.546069e-04, &tj, &tj1, &result, _state);
   18001           0 :         if( ae_fp_greater(result,(double)(0)) )
   18002             :         {
   18003           0 :             result = (double)(0);
   18004             :         }
   18005           0 :         return result;
   18006             :     }
   18007           0 :     if( ae_fp_less_eq(s,5.0000) )
   18008             :     {
   18009           0 :         x = 2*(s-2.000000)/3.000000-1;
   18010           0 :         tj = (double)(1);
   18011           0 :         tj1 = x;
   18012           0 :         jarquebera_jbcheb(x, -6.828366e+00, &tj, &tj1, &result, _state);
   18013           0 :         jarquebera_jbcheb(x, -3.137533e+00, &tj, &tj1, &result, _state);
   18014           0 :         jarquebera_jbcheb(x, -5.016671e-01, &tj, &tj1, &result, _state);
   18015           0 :         jarquebera_jbcheb(x, -1.745637e-01, &tj, &tj1, &result, _state);
   18016           0 :         jarquebera_jbcheb(x, -5.189801e-02, &tj, &tj1, &result, _state);
   18017           0 :         jarquebera_jbcheb(x, -1.621610e-02, &tj, &tj1, &result, _state);
   18018           0 :         jarquebera_jbcheb(x, -6.741122e-03, &tj, &tj1, &result, _state);
   18019           0 :         jarquebera_jbcheb(x, -4.516368e-03, &tj, &tj1, &result, _state);
   18020           0 :         jarquebera_jbcheb(x, 3.552085e-04, &tj, &tj1, &result, _state);
   18021           0 :         jarquebera_jbcheb(x, 2.787029e-03, &tj, &tj1, &result, _state);
   18022           0 :         jarquebera_jbcheb(x, 5.359774e-03, &tj, &tj1, &result, _state);
   18023           0 :         if( ae_fp_greater(result,(double)(0)) )
   18024             :         {
   18025           0 :             result = (double)(0);
   18026             :         }
   18027           0 :         return result;
   18028             :     }
   18029           0 :     result = -5.087028e+00*(s-5.000000e+00)-1.071300e+01;
   18030           0 :     return result;
   18031             : }
   18032             : 
   18033             : 
   18034           0 : static double jarquebera_jbtbl9(double s, ae_state *_state)
   18035             : {
   18036             :     double x;
   18037             :     double tj;
   18038             :     double tj1;
   18039             :     double result;
   18040             : 
   18041             : 
   18042           0 :     result = (double)(0);
   18043           0 :     if( ae_fp_less_eq(s,1.3000) )
   18044             :     {
   18045           0 :         x = 2*(s-0.000000)/1.300000-1;
   18046           0 :         tj = (double)(1);
   18047           0 :         tj1 = x;
   18048           0 :         jarquebera_jbcheb(x, -6.279320e-01, &tj, &tj1, &result, _state);
   18049           0 :         jarquebera_jbcheb(x, -9.277151e-01, &tj, &tj1, &result, _state);
   18050           0 :         jarquebera_jbcheb(x, -3.669339e-01, &tj, &tj1, &result, _state);
   18051           0 :         jarquebera_jbcheb(x, -7.086149e-02, &tj, &tj1, &result, _state);
   18052           0 :         jarquebera_jbcheb(x, -1.333816e-03, &tj, &tj1, &result, _state);
   18053           0 :         jarquebera_jbcheb(x, 3.871249e-03, &tj, &tj1, &result, _state);
   18054           0 :         jarquebera_jbcheb(x, 2.007048e-03, &tj, &tj1, &result, _state);
   18055           0 :         jarquebera_jbcheb(x, 7.482245e-04, &tj, &tj1, &result, _state);
   18056           0 :         jarquebera_jbcheb(x, 2.355615e-04, &tj, &tj1, &result, _state);
   18057           0 :         if( ae_fp_greater(result,(double)(0)) )
   18058             :         {
   18059           0 :             result = (double)(0);
   18060             :         }
   18061           0 :         return result;
   18062             :     }
   18063           0 :     if( ae_fp_less_eq(s,2.0000) )
   18064             :     {
   18065           0 :         x = 2*(s-1.300000)/0.700000-1;
   18066           0 :         tj = (double)(1);
   18067           0 :         tj1 = x;
   18068           0 :         jarquebera_jbcheb(x, -2.981430e+00, &tj, &tj1, &result, _state);
   18069           0 :         jarquebera_jbcheb(x, -7.972248e-01, &tj, &tj1, &result, _state);
   18070           0 :         jarquebera_jbcheb(x, 1.747737e-01, &tj, &tj1, &result, _state);
   18071           0 :         jarquebera_jbcheb(x, -3.808530e-02, &tj, &tj1, &result, _state);
   18072           0 :         jarquebera_jbcheb(x, -7.888305e-03, &tj, &tj1, &result, _state);
   18073           0 :         jarquebera_jbcheb(x, 9.001302e-03, &tj, &tj1, &result, _state);
   18074           0 :         jarquebera_jbcheb(x, -1.378767e-03, &tj, &tj1, &result, _state);
   18075           0 :         jarquebera_jbcheb(x, -1.108510e-03, &tj, &tj1, &result, _state);
   18076           0 :         jarquebera_jbcheb(x, 5.915372e-04, &tj, &tj1, &result, _state);
   18077           0 :         if( ae_fp_greater(result,(double)(0)) )
   18078             :         {
   18079           0 :             result = (double)(0);
   18080             :         }
   18081           0 :         return result;
   18082             :     }
   18083           0 :     if( ae_fp_less_eq(s,7.0000) )
   18084             :     {
   18085           0 :         x = 2*(s-2.000000)/5.000000-1;
   18086           0 :         tj = (double)(1);
   18087           0 :         tj1 = x;
   18088           0 :         jarquebera_jbcheb(x, -6.387463e+00, &tj, &tj1, &result, _state);
   18089           0 :         jarquebera_jbcheb(x, -2.845231e+00, &tj, &tj1, &result, _state);
   18090           0 :         jarquebera_jbcheb(x, -1.809956e-01, &tj, &tj1, &result, _state);
   18091           0 :         jarquebera_jbcheb(x, -7.543461e-02, &tj, &tj1, &result, _state);
   18092           0 :         jarquebera_jbcheb(x, -4.880397e-03, &tj, &tj1, &result, _state);
   18093           0 :         jarquebera_jbcheb(x, -1.160074e-02, &tj, &tj1, &result, _state);
   18094           0 :         jarquebera_jbcheb(x, -7.356527e-03, &tj, &tj1, &result, _state);
   18095           0 :         jarquebera_jbcheb(x, -4.394428e-03, &tj, &tj1, &result, _state);
   18096           0 :         jarquebera_jbcheb(x, 9.619892e-04, &tj, &tj1, &result, _state);
   18097           0 :         jarquebera_jbcheb(x, -2.758763e-04, &tj, &tj1, &result, _state);
   18098           0 :         jarquebera_jbcheb(x, 4.790977e-05, &tj, &tj1, &result, _state);
   18099           0 :         if( ae_fp_greater(result,(double)(0)) )
   18100             :         {
   18101           0 :             result = (double)(0);
   18102             :         }
   18103           0 :         return result;
   18104             :     }
   18105           0 :     result = -2.020952e+00*(s-7.000000e+00)-9.516623e+00;
   18106           0 :     return result;
   18107             : }
   18108             : 
   18109             : 
   18110           0 : static double jarquebera_jbtbl10(double s, ae_state *_state)
   18111             : {
   18112             :     double x;
   18113             :     double tj;
   18114             :     double tj1;
   18115             :     double result;
   18116             : 
   18117             : 
   18118           0 :     result = (double)(0);
   18119           0 :     if( ae_fp_less_eq(s,1.2000) )
   18120             :     {
   18121           0 :         x = 2*(s-0.000000)/1.200000-1;
   18122           0 :         tj = (double)(1);
   18123           0 :         tj1 = x;
   18124           0 :         jarquebera_jbcheb(x, -4.590993e-01, &tj, &tj1, &result, _state);
   18125           0 :         jarquebera_jbcheb(x, -6.562730e-01, &tj, &tj1, &result, _state);
   18126           0 :         jarquebera_jbcheb(x, -2.353934e-01, &tj, &tj1, &result, _state);
   18127           0 :         jarquebera_jbcheb(x, -4.069933e-02, &tj, &tj1, &result, _state);
   18128           0 :         jarquebera_jbcheb(x, -1.849151e-03, &tj, &tj1, &result, _state);
   18129           0 :         jarquebera_jbcheb(x, 8.931406e-04, &tj, &tj1, &result, _state);
   18130           0 :         jarquebera_jbcheb(x, 3.636295e-04, &tj, &tj1, &result, _state);
   18131           0 :         jarquebera_jbcheb(x, 1.178340e-05, &tj, &tj1, &result, _state);
   18132           0 :         jarquebera_jbcheb(x, -8.917749e-05, &tj, &tj1, &result, _state);
   18133           0 :         if( ae_fp_greater(result,(double)(0)) )
   18134             :         {
   18135           0 :             result = (double)(0);
   18136             :         }
   18137           0 :         return result;
   18138             :     }
   18139           0 :     if( ae_fp_less_eq(s,2.0000) )
   18140             :     {
   18141           0 :         x = 2*(s-1.200000)/0.800000-1;
   18142           0 :         tj = (double)(1);
   18143           0 :         tj1 = x;
   18144           0 :         jarquebera_jbcheb(x, -2.537658e+00, &tj, &tj1, &result, _state);
   18145           0 :         jarquebera_jbcheb(x, -9.962401e-01, &tj, &tj1, &result, _state);
   18146           0 :         jarquebera_jbcheb(x, 1.838715e-01, &tj, &tj1, &result, _state);
   18147           0 :         jarquebera_jbcheb(x, 1.055792e-02, &tj, &tj1, &result, _state);
   18148           0 :         jarquebera_jbcheb(x, -2.580316e-02, &tj, &tj1, &result, _state);
   18149           0 :         jarquebera_jbcheb(x, 1.781701e-03, &tj, &tj1, &result, _state);
   18150           0 :         jarquebera_jbcheb(x, 3.770362e-03, &tj, &tj1, &result, _state);
   18151           0 :         jarquebera_jbcheb(x, -4.838983e-04, &tj, &tj1, &result, _state);
   18152           0 :         jarquebera_jbcheb(x, -6.999052e-04, &tj, &tj1, &result, _state);
   18153           0 :         if( ae_fp_greater(result,(double)(0)) )
   18154             :         {
   18155           0 :             result = (double)(0);
   18156             :         }
   18157           0 :         return result;
   18158             :     }
   18159           0 :     if( ae_fp_less_eq(s,7.0000) )
   18160             :     {
   18161           0 :         x = 2*(s-2.000000)/5.000000-1;
   18162           0 :         tj = (double)(1);
   18163           0 :         tj1 = x;
   18164           0 :         jarquebera_jbcheb(x, -5.337524e+00, &tj, &tj1, &result, _state);
   18165           0 :         jarquebera_jbcheb(x, -1.877029e+00, &tj, &tj1, &result, _state);
   18166           0 :         jarquebera_jbcheb(x, 4.734650e-02, &tj, &tj1, &result, _state);
   18167           0 :         jarquebera_jbcheb(x, -4.249254e-02, &tj, &tj1, &result, _state);
   18168           0 :         jarquebera_jbcheb(x, 3.320250e-03, &tj, &tj1, &result, _state);
   18169           0 :         jarquebera_jbcheb(x, -6.432266e-03, &tj, &tj1, &result, _state);
   18170           0 :         if( ae_fp_greater(result,(double)(0)) )
   18171             :         {
   18172           0 :             result = (double)(0);
   18173             :         }
   18174           0 :         return result;
   18175             :     }
   18176           0 :     result = -8.711035e-01*(s-7.000000e+00)-7.212811e+00;
   18177           0 :     return result;
   18178             : }
   18179             : 
   18180             : 
   18181           0 : static double jarquebera_jbtbl11(double s, ae_state *_state)
   18182             : {
   18183             :     double x;
   18184             :     double tj;
   18185             :     double tj1;
   18186             :     double result;
   18187             : 
   18188             : 
   18189           0 :     result = (double)(0);
   18190           0 :     if( ae_fp_less_eq(s,1.2000) )
   18191             :     {
   18192           0 :         x = 2*(s-0.000000)/1.200000-1;
   18193           0 :         tj = (double)(1);
   18194           0 :         tj1 = x;
   18195           0 :         jarquebera_jbcheb(x, -4.339517e-01, &tj, &tj1, &result, _state);
   18196           0 :         jarquebera_jbcheb(x, -6.051558e-01, &tj, &tj1, &result, _state);
   18197           0 :         jarquebera_jbcheb(x, -2.000992e-01, &tj, &tj1, &result, _state);
   18198           0 :         jarquebera_jbcheb(x, -3.022547e-02, &tj, &tj1, &result, _state);
   18199           0 :         jarquebera_jbcheb(x, -9.808401e-04, &tj, &tj1, &result, _state);
   18200           0 :         jarquebera_jbcheb(x, 5.592870e-04, &tj, &tj1, &result, _state);
   18201           0 :         jarquebera_jbcheb(x, 3.575081e-04, &tj, &tj1, &result, _state);
   18202           0 :         jarquebera_jbcheb(x, 2.086173e-04, &tj, &tj1, &result, _state);
   18203           0 :         jarquebera_jbcheb(x, 6.089011e-05, &tj, &tj1, &result, _state);
   18204           0 :         if( ae_fp_greater(result,(double)(0)) )
   18205             :         {
   18206           0 :             result = (double)(0);
   18207             :         }
   18208           0 :         return result;
   18209             :     }
   18210           0 :     if( ae_fp_less_eq(s,2.2500) )
   18211             :     {
   18212           0 :         x = 2*(s-1.200000)/1.050000-1;
   18213           0 :         tj = (double)(1);
   18214           0 :         tj1 = x;
   18215           0 :         jarquebera_jbcheb(x, -2.523221e+00, &tj, &tj1, &result, _state);
   18216           0 :         jarquebera_jbcheb(x, -1.068388e+00, &tj, &tj1, &result, _state);
   18217           0 :         jarquebera_jbcheb(x, 2.179661e-01, &tj, &tj1, &result, _state);
   18218           0 :         jarquebera_jbcheb(x, -1.555524e-03, &tj, &tj1, &result, _state);
   18219           0 :         jarquebera_jbcheb(x, -3.238964e-02, &tj, &tj1, &result, _state);
   18220           0 :         jarquebera_jbcheb(x, 7.364320e-03, &tj, &tj1, &result, _state);
   18221           0 :         jarquebera_jbcheb(x, 4.895771e-03, &tj, &tj1, &result, _state);
   18222           0 :         jarquebera_jbcheb(x, -1.762774e-03, &tj, &tj1, &result, _state);
   18223           0 :         jarquebera_jbcheb(x, -8.201340e-04, &tj, &tj1, &result, _state);
   18224           0 :         if( ae_fp_greater(result,(double)(0)) )
   18225             :         {
   18226           0 :             result = (double)(0);
   18227             :         }
   18228           0 :         return result;
   18229             :     }
   18230           0 :     if( ae_fp_less_eq(s,8.0000) )
   18231             :     {
   18232           0 :         x = 2*(s-2.250000)/5.750000-1;
   18233           0 :         tj = (double)(1);
   18234           0 :         tj1 = x;
   18235           0 :         jarquebera_jbcheb(x, -5.212179e+00, &tj, &tj1, &result, _state);
   18236           0 :         jarquebera_jbcheb(x, -1.684579e+00, &tj, &tj1, &result, _state);
   18237           0 :         jarquebera_jbcheb(x, 8.299519e-02, &tj, &tj1, &result, _state);
   18238           0 :         jarquebera_jbcheb(x, -3.606261e-02, &tj, &tj1, &result, _state);
   18239           0 :         jarquebera_jbcheb(x, 7.310869e-03, &tj, &tj1, &result, _state);
   18240           0 :         jarquebera_jbcheb(x, -3.320115e-03, &tj, &tj1, &result, _state);
   18241           0 :         if( ae_fp_greater(result,(double)(0)) )
   18242             :         {
   18243           0 :             result = (double)(0);
   18244             :         }
   18245           0 :         return result;
   18246             :     }
   18247           0 :     result = -5.715445e-01*(s-8.000000e+00)-6.845834e+00;
   18248           0 :     return result;
   18249             : }
   18250             : 
   18251             : 
   18252           0 : static double jarquebera_jbtbl12(double s, ae_state *_state)
   18253             : {
   18254             :     double x;
   18255             :     double tj;
   18256             :     double tj1;
   18257             :     double result;
   18258             : 
   18259             : 
   18260           0 :     result = (double)(0);
   18261           0 :     if( ae_fp_less_eq(s,1.0000) )
   18262             :     {
   18263           0 :         x = 2*(s-0.000000)/1.000000-1;
   18264           0 :         tj = (double)(1);
   18265           0 :         tj1 = x;
   18266           0 :         jarquebera_jbcheb(x, -2.736742e-01, &tj, &tj1, &result, _state);
   18267           0 :         jarquebera_jbcheb(x, -3.657836e-01, &tj, &tj1, &result, _state);
   18268           0 :         jarquebera_jbcheb(x, -1.047209e-01, &tj, &tj1, &result, _state);
   18269           0 :         jarquebera_jbcheb(x, -1.319599e-02, &tj, &tj1, &result, _state);
   18270           0 :         jarquebera_jbcheb(x, -5.545631e-04, &tj, &tj1, &result, _state);
   18271           0 :         jarquebera_jbcheb(x, 9.280445e-05, &tj, &tj1, &result, _state);
   18272           0 :         jarquebera_jbcheb(x, 2.815679e-05, &tj, &tj1, &result, _state);
   18273           0 :         jarquebera_jbcheb(x, -2.213519e-05, &tj, &tj1, &result, _state);
   18274           0 :         jarquebera_jbcheb(x, 1.256838e-05, &tj, &tj1, &result, _state);
   18275           0 :         if( ae_fp_greater(result,(double)(0)) )
   18276             :         {
   18277           0 :             result = (double)(0);
   18278             :         }
   18279           0 :         return result;
   18280             :     }
   18281           0 :     if( ae_fp_less_eq(s,3.0000) )
   18282             :     {
   18283           0 :         x = 2*(s-1.000000)/2.000000-1;
   18284           0 :         tj = (double)(1);
   18285           0 :         tj1 = x;
   18286           0 :         jarquebera_jbcheb(x, -2.573947e+00, &tj, &tj1, &result, _state);
   18287           0 :         jarquebera_jbcheb(x, -1.515287e+00, &tj, &tj1, &result, _state);
   18288           0 :         jarquebera_jbcheb(x, 3.611880e-01, &tj, &tj1, &result, _state);
   18289           0 :         jarquebera_jbcheb(x, -3.271311e-02, &tj, &tj1, &result, _state);
   18290           0 :         jarquebera_jbcheb(x, -6.495815e-02, &tj, &tj1, &result, _state);
   18291           0 :         jarquebera_jbcheb(x, 4.141186e-02, &tj, &tj1, &result, _state);
   18292           0 :         jarquebera_jbcheb(x, 7.180886e-04, &tj, &tj1, &result, _state);
   18293           0 :         jarquebera_jbcheb(x, -1.388211e-02, &tj, &tj1, &result, _state);
   18294           0 :         jarquebera_jbcheb(x, 4.890761e-03, &tj, &tj1, &result, _state);
   18295           0 :         jarquebera_jbcheb(x, 3.233175e-03, &tj, &tj1, &result, _state);
   18296           0 :         jarquebera_jbcheb(x, -2.946156e-03, &tj, &tj1, &result, _state);
   18297           0 :         if( ae_fp_greater(result,(double)(0)) )
   18298             :         {
   18299           0 :             result = (double)(0);
   18300             :         }
   18301           0 :         return result;
   18302             :     }
   18303           0 :     if( ae_fp_less_eq(s,12.0000) )
   18304             :     {
   18305           0 :         x = 2*(s-3.000000)/9.000000-1;
   18306           0 :         tj = (double)(1);
   18307           0 :         tj1 = x;
   18308           0 :         jarquebera_jbcheb(x, -5.947819e+00, &tj, &tj1, &result, _state);
   18309           0 :         jarquebera_jbcheb(x, -2.034157e+00, &tj, &tj1, &result, _state);
   18310           0 :         jarquebera_jbcheb(x, 6.878986e-02, &tj, &tj1, &result, _state);
   18311           0 :         jarquebera_jbcheb(x, -4.078603e-02, &tj, &tj1, &result, _state);
   18312           0 :         jarquebera_jbcheb(x, 6.990977e-03, &tj, &tj1, &result, _state);
   18313           0 :         jarquebera_jbcheb(x, -2.866215e-03, &tj, &tj1, &result, _state);
   18314           0 :         jarquebera_jbcheb(x, 3.897866e-03, &tj, &tj1, &result, _state);
   18315           0 :         jarquebera_jbcheb(x, 2.512252e-03, &tj, &tj1, &result, _state);
   18316           0 :         jarquebera_jbcheb(x, 2.073743e-03, &tj, &tj1, &result, _state);
   18317           0 :         jarquebera_jbcheb(x, 3.022621e-03, &tj, &tj1, &result, _state);
   18318           0 :         jarquebera_jbcheb(x, 1.501343e-03, &tj, &tj1, &result, _state);
   18319           0 :         if( ae_fp_greater(result,(double)(0)) )
   18320             :         {
   18321           0 :             result = (double)(0);
   18322             :         }
   18323           0 :         return result;
   18324             :     }
   18325           0 :     result = -2.877243e-01*(s-1.200000e+01)-7.936839e+00;
   18326           0 :     return result;
   18327             : }
   18328             : 
   18329             : 
   18330           0 : static double jarquebera_jbtbl13(double s, ae_state *_state)
   18331             : {
   18332             :     double x;
   18333             :     double tj;
   18334             :     double tj1;
   18335             :     double result;
   18336             : 
   18337             : 
   18338           0 :     result = (double)(0);
   18339           0 :     if( ae_fp_less_eq(s,1.0000) )
   18340             :     {
   18341           0 :         x = 2*(s-0.000000)/1.000000-1;
   18342           0 :         tj = (double)(1);
   18343           0 :         tj1 = x;
   18344           0 :         jarquebera_jbcheb(x, -2.713276e-01, &tj, &tj1, &result, _state);
   18345           0 :         jarquebera_jbcheb(x, -3.557541e-01, &tj, &tj1, &result, _state);
   18346           0 :         jarquebera_jbcheb(x, -9.459092e-02, &tj, &tj1, &result, _state);
   18347           0 :         jarquebera_jbcheb(x, -1.044145e-02, &tj, &tj1, &result, _state);
   18348           0 :         jarquebera_jbcheb(x, -2.546132e-04, &tj, &tj1, &result, _state);
   18349           0 :         jarquebera_jbcheb(x, 1.002374e-04, &tj, &tj1, &result, _state);
   18350           0 :         jarquebera_jbcheb(x, 2.349456e-05, &tj, &tj1, &result, _state);
   18351           0 :         jarquebera_jbcheb(x, -7.025669e-05, &tj, &tj1, &result, _state);
   18352           0 :         jarquebera_jbcheb(x, -1.590242e-05, &tj, &tj1, &result, _state);
   18353           0 :         if( ae_fp_greater(result,(double)(0)) )
   18354             :         {
   18355           0 :             result = (double)(0);
   18356             :         }
   18357           0 :         return result;
   18358             :     }
   18359           0 :     if( ae_fp_less_eq(s,3.0000) )
   18360             :     {
   18361           0 :         x = 2*(s-1.000000)/2.000000-1;
   18362           0 :         tj = (double)(1);
   18363           0 :         tj1 = x;
   18364           0 :         jarquebera_jbcheb(x, -2.454383e+00, &tj, &tj1, &result, _state);
   18365           0 :         jarquebera_jbcheb(x, -1.467539e+00, &tj, &tj1, &result, _state);
   18366           0 :         jarquebera_jbcheb(x, 3.270774e-01, &tj, &tj1, &result, _state);
   18367           0 :         jarquebera_jbcheb(x, -8.075763e-03, &tj, &tj1, &result, _state);
   18368           0 :         jarquebera_jbcheb(x, -6.611647e-02, &tj, &tj1, &result, _state);
   18369           0 :         jarquebera_jbcheb(x, 2.990785e-02, &tj, &tj1, &result, _state);
   18370           0 :         jarquebera_jbcheb(x, 8.109212e-03, &tj, &tj1, &result, _state);
   18371           0 :         jarquebera_jbcheb(x, -1.135031e-02, &tj, &tj1, &result, _state);
   18372           0 :         jarquebera_jbcheb(x, 5.915919e-04, &tj, &tj1, &result, _state);
   18373           0 :         jarquebera_jbcheb(x, 3.522390e-03, &tj, &tj1, &result, _state);
   18374           0 :         jarquebera_jbcheb(x, -1.144701e-03, &tj, &tj1, &result, _state);
   18375           0 :         if( ae_fp_greater(result,(double)(0)) )
   18376             :         {
   18377           0 :             result = (double)(0);
   18378             :         }
   18379           0 :         return result;
   18380             :     }
   18381           0 :     if( ae_fp_less_eq(s,13.0000) )
   18382             :     {
   18383           0 :         x = 2*(s-3.000000)/10.000000-1;
   18384           0 :         tj = (double)(1);
   18385           0 :         tj1 = x;
   18386           0 :         jarquebera_jbcheb(x, -5.736127e+00, &tj, &tj1, &result, _state);
   18387           0 :         jarquebera_jbcheb(x, -1.920809e+00, &tj, &tj1, &result, _state);
   18388           0 :         jarquebera_jbcheb(x, 1.175858e-01, &tj, &tj1, &result, _state);
   18389           0 :         jarquebera_jbcheb(x, -4.002049e-02, &tj, &tj1, &result, _state);
   18390           0 :         jarquebera_jbcheb(x, 1.158966e-02, &tj, &tj1, &result, _state);
   18391           0 :         jarquebera_jbcheb(x, -3.157781e-03, &tj, &tj1, &result, _state);
   18392           0 :         jarquebera_jbcheb(x, 2.762172e-03, &tj, &tj1, &result, _state);
   18393           0 :         jarquebera_jbcheb(x, 5.780347e-04, &tj, &tj1, &result, _state);
   18394           0 :         jarquebera_jbcheb(x, -1.193310e-03, &tj, &tj1, &result, _state);
   18395           0 :         jarquebera_jbcheb(x, -2.442421e-05, &tj, &tj1, &result, _state);
   18396           0 :         jarquebera_jbcheb(x, 2.547756e-03, &tj, &tj1, &result, _state);
   18397           0 :         if( ae_fp_greater(result,(double)(0)) )
   18398             :         {
   18399           0 :             result = (double)(0);
   18400             :         }
   18401           0 :         return result;
   18402             :     }
   18403           0 :     result = -2.799944e-01*(s-1.300000e+01)-7.566269e+00;
   18404           0 :     return result;
   18405             : }
   18406             : 
   18407             : 
   18408           0 : static double jarquebera_jbtbl14(double s, ae_state *_state)
   18409             : {
   18410             :     double x;
   18411             :     double tj;
   18412             :     double tj1;
   18413             :     double result;
   18414             : 
   18415             : 
   18416           0 :     result = (double)(0);
   18417           0 :     if( ae_fp_less_eq(s,1.0000) )
   18418             :     {
   18419           0 :         x = 2*(s-0.000000)/1.000000-1;
   18420           0 :         tj = (double)(1);
   18421           0 :         tj1 = x;
   18422           0 :         jarquebera_jbcheb(x, -2.698527e-01, &tj, &tj1, &result, _state);
   18423           0 :         jarquebera_jbcheb(x, -3.479081e-01, &tj, &tj1, &result, _state);
   18424           0 :         jarquebera_jbcheb(x, -8.640733e-02, &tj, &tj1, &result, _state);
   18425           0 :         jarquebera_jbcheb(x, -8.466899e-03, &tj, &tj1, &result, _state);
   18426           0 :         jarquebera_jbcheb(x, -1.469485e-04, &tj, &tj1, &result, _state);
   18427           0 :         jarquebera_jbcheb(x, 2.150009e-05, &tj, &tj1, &result, _state);
   18428           0 :         jarquebera_jbcheb(x, 1.965975e-05, &tj, &tj1, &result, _state);
   18429           0 :         jarquebera_jbcheb(x, -4.710210e-05, &tj, &tj1, &result, _state);
   18430           0 :         jarquebera_jbcheb(x, -1.327808e-05, &tj, &tj1, &result, _state);
   18431           0 :         if( ae_fp_greater(result,(double)(0)) )
   18432             :         {
   18433           0 :             result = (double)(0);
   18434             :         }
   18435           0 :         return result;
   18436             :     }
   18437           0 :     if( ae_fp_less_eq(s,3.0000) )
   18438             :     {
   18439           0 :         x = 2*(s-1.000000)/2.000000-1;
   18440           0 :         tj = (double)(1);
   18441           0 :         tj1 = x;
   18442           0 :         jarquebera_jbcheb(x, -2.350359e+00, &tj, &tj1, &result, _state);
   18443           0 :         jarquebera_jbcheb(x, -1.421365e+00, &tj, &tj1, &result, _state);
   18444           0 :         jarquebera_jbcheb(x, 2.960468e-01, &tj, &tj1, &result, _state);
   18445           0 :         jarquebera_jbcheb(x, 1.149167e-02, &tj, &tj1, &result, _state);
   18446           0 :         jarquebera_jbcheb(x, -6.361109e-02, &tj, &tj1, &result, _state);
   18447           0 :         jarquebera_jbcheb(x, 1.976022e-02, &tj, &tj1, &result, _state);
   18448           0 :         jarquebera_jbcheb(x, 1.082700e-02, &tj, &tj1, &result, _state);
   18449           0 :         jarquebera_jbcheb(x, -8.563328e-03, &tj, &tj1, &result, _state);
   18450           0 :         jarquebera_jbcheb(x, -1.453123e-03, &tj, &tj1, &result, _state);
   18451           0 :         jarquebera_jbcheb(x, 2.917559e-03, &tj, &tj1, &result, _state);
   18452           0 :         jarquebera_jbcheb(x, -1.151067e-05, &tj, &tj1, &result, _state);
   18453           0 :         if( ae_fp_greater(result,(double)(0)) )
   18454             :         {
   18455           0 :             result = (double)(0);
   18456             :         }
   18457           0 :         return result;
   18458             :     }
   18459           0 :     if( ae_fp_less_eq(s,15.0000) )
   18460             :     {
   18461           0 :         x = 2*(s-3.000000)/12.000000-1;
   18462           0 :         tj = (double)(1);
   18463           0 :         tj1 = x;
   18464           0 :         jarquebera_jbcheb(x, -5.746892e+00, &tj, &tj1, &result, _state);
   18465           0 :         jarquebera_jbcheb(x, -2.010441e+00, &tj, &tj1, &result, _state);
   18466           0 :         jarquebera_jbcheb(x, 1.566146e-01, &tj, &tj1, &result, _state);
   18467           0 :         jarquebera_jbcheb(x, -5.129690e-02, &tj, &tj1, &result, _state);
   18468           0 :         jarquebera_jbcheb(x, 1.929724e-02, &tj, &tj1, &result, _state);
   18469           0 :         jarquebera_jbcheb(x, -2.524227e-03, &tj, &tj1, &result, _state);
   18470           0 :         jarquebera_jbcheb(x, 3.192933e-03, &tj, &tj1, &result, _state);
   18471           0 :         jarquebera_jbcheb(x, -4.254730e-04, &tj, &tj1, &result, _state);
   18472           0 :         jarquebera_jbcheb(x, 1.620685e-03, &tj, &tj1, &result, _state);
   18473           0 :         jarquebera_jbcheb(x, 7.289618e-04, &tj, &tj1, &result, _state);
   18474           0 :         jarquebera_jbcheb(x, -2.112350e-03, &tj, &tj1, &result, _state);
   18475           0 :         if( ae_fp_greater(result,(double)(0)) )
   18476             :         {
   18477           0 :             result = (double)(0);
   18478             :         }
   18479           0 :         return result;
   18480             :     }
   18481           0 :     result = -2.590621e-01*(s-1.500000e+01)-7.632238e+00;
   18482           0 :     return result;
   18483             : }
   18484             : 
   18485             : 
   18486           0 : static double jarquebera_jbtbl15(double s, ae_state *_state)
   18487             : {
   18488             :     double x;
   18489             :     double tj;
   18490             :     double tj1;
   18491             :     double result;
   18492             : 
   18493             : 
   18494           0 :     result = (double)(0);
   18495           0 :     if( ae_fp_less_eq(s,2.0000) )
   18496             :     {
   18497           0 :         x = 2*(s-0.000000)/2.000000-1;
   18498           0 :         tj = (double)(1);
   18499           0 :         tj1 = x;
   18500           0 :         jarquebera_jbcheb(x, -1.043660e+00, &tj, &tj1, &result, _state);
   18501           0 :         jarquebera_jbcheb(x, -1.361653e+00, &tj, &tj1, &result, _state);
   18502           0 :         jarquebera_jbcheb(x, -3.009497e-01, &tj, &tj1, &result, _state);
   18503           0 :         jarquebera_jbcheb(x, 4.951784e-02, &tj, &tj1, &result, _state);
   18504           0 :         jarquebera_jbcheb(x, 4.377903e-02, &tj, &tj1, &result, _state);
   18505           0 :         jarquebera_jbcheb(x, 1.003253e-02, &tj, &tj1, &result, _state);
   18506           0 :         jarquebera_jbcheb(x, -1.271309e-03, &tj, &tj1, &result, _state);
   18507           0 :         if( ae_fp_greater(result,(double)(0)) )
   18508             :         {
   18509           0 :             result = (double)(0);
   18510             :         }
   18511           0 :         return result;
   18512             :     }
   18513           0 :     if( ae_fp_less_eq(s,5.0000) )
   18514             :     {
   18515           0 :         x = 2*(s-2.000000)/3.000000-1;
   18516           0 :         tj = (double)(1);
   18517           0 :         tj1 = x;
   18518           0 :         jarquebera_jbcheb(x, -3.582778e+00, &tj, &tj1, &result, _state);
   18519           0 :         jarquebera_jbcheb(x, -8.349578e-01, &tj, &tj1, &result, _state);
   18520           0 :         jarquebera_jbcheb(x, 9.476514e-02, &tj, &tj1, &result, _state);
   18521           0 :         jarquebera_jbcheb(x, -2.717385e-02, &tj, &tj1, &result, _state);
   18522           0 :         jarquebera_jbcheb(x, 1.222591e-02, &tj, &tj1, &result, _state);
   18523           0 :         jarquebera_jbcheb(x, -6.635124e-03, &tj, &tj1, &result, _state);
   18524           0 :         jarquebera_jbcheb(x, 2.815993e-03, &tj, &tj1, &result, _state);
   18525           0 :         if( ae_fp_greater(result,(double)(0)) )
   18526             :         {
   18527           0 :             result = (double)(0);
   18528             :         }
   18529           0 :         return result;
   18530             :     }
   18531           0 :     if( ae_fp_less_eq(s,17.0000) )
   18532             :     {
   18533           0 :         x = 2*(s-5.000000)/12.000000-1;
   18534           0 :         tj = (double)(1);
   18535           0 :         tj1 = x;
   18536           0 :         jarquebera_jbcheb(x, -6.115476e+00, &tj, &tj1, &result, _state);
   18537           0 :         jarquebera_jbcheb(x, -1.655936e+00, &tj, &tj1, &result, _state);
   18538           0 :         jarquebera_jbcheb(x, 8.404310e-02, &tj, &tj1, &result, _state);
   18539           0 :         jarquebera_jbcheb(x, -2.663794e-02, &tj, &tj1, &result, _state);
   18540           0 :         jarquebera_jbcheb(x, 8.868618e-03, &tj, &tj1, &result, _state);
   18541           0 :         jarquebera_jbcheb(x, 1.381447e-03, &tj, &tj1, &result, _state);
   18542           0 :         jarquebera_jbcheb(x, 9.444801e-04, &tj, &tj1, &result, _state);
   18543           0 :         jarquebera_jbcheb(x, -1.581503e-04, &tj, &tj1, &result, _state);
   18544           0 :         jarquebera_jbcheb(x, -9.468696e-04, &tj, &tj1, &result, _state);
   18545           0 :         jarquebera_jbcheb(x, 1.728509e-03, &tj, &tj1, &result, _state);
   18546           0 :         jarquebera_jbcheb(x, 1.206470e-03, &tj, &tj1, &result, _state);
   18547           0 :         if( ae_fp_greater(result,(double)(0)) )
   18548             :         {
   18549           0 :             result = (double)(0);
   18550             :         }
   18551           0 :         return result;
   18552             :     }
   18553           0 :     result = -1.927937e-01*(s-1.700000e+01)-7.700983e+00;
   18554           0 :     return result;
   18555             : }
   18556             : 
   18557             : 
   18558           0 : static double jarquebera_jbtbl16(double s, ae_state *_state)
   18559             : {
   18560             :     double x;
   18561             :     double tj;
   18562             :     double tj1;
   18563             :     double result;
   18564             : 
   18565             : 
   18566           0 :     result = (double)(0);
   18567           0 :     if( ae_fp_less_eq(s,2.0000) )
   18568             :     {
   18569           0 :         x = 2*(s-0.000000)/2.000000-1;
   18570           0 :         tj = (double)(1);
   18571           0 :         tj1 = x;
   18572           0 :         jarquebera_jbcheb(x, -1.002570e+00, &tj, &tj1, &result, _state);
   18573           0 :         jarquebera_jbcheb(x, -1.298141e+00, &tj, &tj1, &result, _state);
   18574           0 :         jarquebera_jbcheb(x, -2.832803e-01, &tj, &tj1, &result, _state);
   18575           0 :         jarquebera_jbcheb(x, 3.877026e-02, &tj, &tj1, &result, _state);
   18576           0 :         jarquebera_jbcheb(x, 3.539436e-02, &tj, &tj1, &result, _state);
   18577           0 :         jarquebera_jbcheb(x, 8.439658e-03, &tj, &tj1, &result, _state);
   18578           0 :         jarquebera_jbcheb(x, -4.756911e-04, &tj, &tj1, &result, _state);
   18579           0 :         if( ae_fp_greater(result,(double)(0)) )
   18580             :         {
   18581           0 :             result = (double)(0);
   18582             :         }
   18583           0 :         return result;
   18584             :     }
   18585           0 :     if( ae_fp_less_eq(s,5.0000) )
   18586             :     {
   18587           0 :         x = 2*(s-2.000000)/3.000000-1;
   18588           0 :         tj = (double)(1);
   18589           0 :         tj1 = x;
   18590           0 :         jarquebera_jbcheb(x, -3.486198e+00, &tj, &tj1, &result, _state);
   18591           0 :         jarquebera_jbcheb(x, -8.242944e-01, &tj, &tj1, &result, _state);
   18592           0 :         jarquebera_jbcheb(x, 1.020002e-01, &tj, &tj1, &result, _state);
   18593           0 :         jarquebera_jbcheb(x, -3.130531e-02, &tj, &tj1, &result, _state);
   18594           0 :         jarquebera_jbcheb(x, 1.512373e-02, &tj, &tj1, &result, _state);
   18595           0 :         jarquebera_jbcheb(x, -8.054876e-03, &tj, &tj1, &result, _state);
   18596           0 :         jarquebera_jbcheb(x, 3.556839e-03, &tj, &tj1, &result, _state);
   18597           0 :         if( ae_fp_greater(result,(double)(0)) )
   18598             :         {
   18599           0 :             result = (double)(0);
   18600             :         }
   18601           0 :         return result;
   18602             :     }
   18603           0 :     if( ae_fp_less_eq(s,20.0000) )
   18604             :     {
   18605           0 :         x = 2*(s-5.000000)/15.000000-1;
   18606           0 :         tj = (double)(1);
   18607           0 :         tj1 = x;
   18608           0 :         jarquebera_jbcheb(x, -6.241608e+00, &tj, &tj1, &result, _state);
   18609           0 :         jarquebera_jbcheb(x, -1.832655e+00, &tj, &tj1, &result, _state);
   18610           0 :         jarquebera_jbcheb(x, 1.340545e-01, &tj, &tj1, &result, _state);
   18611           0 :         jarquebera_jbcheb(x, -3.361143e-02, &tj, &tj1, &result, _state);
   18612           0 :         jarquebera_jbcheb(x, 1.283219e-02, &tj, &tj1, &result, _state);
   18613           0 :         jarquebera_jbcheb(x, 3.484549e-03, &tj, &tj1, &result, _state);
   18614           0 :         jarquebera_jbcheb(x, 1.805968e-03, &tj, &tj1, &result, _state);
   18615           0 :         jarquebera_jbcheb(x, -2.057243e-03, &tj, &tj1, &result, _state);
   18616           0 :         jarquebera_jbcheb(x, -1.454439e-03, &tj, &tj1, &result, _state);
   18617           0 :         jarquebera_jbcheb(x, -2.177513e-03, &tj, &tj1, &result, _state);
   18618           0 :         jarquebera_jbcheb(x, -1.819209e-03, &tj, &tj1, &result, _state);
   18619           0 :         if( ae_fp_greater(result,(double)(0)) )
   18620             :         {
   18621           0 :             result = (double)(0);
   18622             :         }
   18623           0 :         return result;
   18624             :     }
   18625           0 :     result = -2.391580e-01*(s-2.000000e+01)-7.963205e+00;
   18626           0 :     return result;
   18627             : }
   18628             : 
   18629             : 
   18630           0 : static double jarquebera_jbtbl17(double s, ae_state *_state)
   18631             : {
   18632             :     double x;
   18633             :     double tj;
   18634             :     double tj1;
   18635             :     double result;
   18636             : 
   18637             : 
   18638           0 :     result = (double)(0);
   18639           0 :     if( ae_fp_less_eq(s,3.0000) )
   18640             :     {
   18641           0 :         x = 2*(s-0.000000)/3.000000-1;
   18642           0 :         tj = (double)(1);
   18643           0 :         tj1 = x;
   18644           0 :         jarquebera_jbcheb(x, -1.566973e+00, &tj, &tj1, &result, _state);
   18645           0 :         jarquebera_jbcheb(x, -1.810330e+00, &tj, &tj1, &result, _state);
   18646           0 :         jarquebera_jbcheb(x, -4.840039e-02, &tj, &tj1, &result, _state);
   18647           0 :         jarquebera_jbcheb(x, 2.337294e-01, &tj, &tj1, &result, _state);
   18648           0 :         jarquebera_jbcheb(x, -5.383549e-04, &tj, &tj1, &result, _state);
   18649           0 :         jarquebera_jbcheb(x, -5.556515e-02, &tj, &tj1, &result, _state);
   18650           0 :         jarquebera_jbcheb(x, -8.656965e-03, &tj, &tj1, &result, _state);
   18651           0 :         jarquebera_jbcheb(x, 1.404569e-02, &tj, &tj1, &result, _state);
   18652           0 :         jarquebera_jbcheb(x, 6.447867e-03, &tj, &tj1, &result, _state);
   18653           0 :         if( ae_fp_greater(result,(double)(0)) )
   18654             :         {
   18655           0 :             result = (double)(0);
   18656             :         }
   18657           0 :         return result;
   18658             :     }
   18659           0 :     if( ae_fp_less_eq(s,6.0000) )
   18660             :     {
   18661           0 :         x = 2*(s-3.000000)/3.000000-1;
   18662           0 :         tj = (double)(1);
   18663           0 :         tj1 = x;
   18664           0 :         jarquebera_jbcheb(x, -3.905684e+00, &tj, &tj1, &result, _state);
   18665           0 :         jarquebera_jbcheb(x, -6.222920e-01, &tj, &tj1, &result, _state);
   18666           0 :         jarquebera_jbcheb(x, 4.146667e-02, &tj, &tj1, &result, _state);
   18667           0 :         jarquebera_jbcheb(x, -4.809176e-03, &tj, &tj1, &result, _state);
   18668           0 :         jarquebera_jbcheb(x, 1.057028e-03, &tj, &tj1, &result, _state);
   18669           0 :         jarquebera_jbcheb(x, -1.211838e-04, &tj, &tj1, &result, _state);
   18670           0 :         jarquebera_jbcheb(x, -4.099683e-04, &tj, &tj1, &result, _state);
   18671           0 :         jarquebera_jbcheb(x, 1.161105e-04, &tj, &tj1, &result, _state);
   18672           0 :         jarquebera_jbcheb(x, 2.225465e-04, &tj, &tj1, &result, _state);
   18673           0 :         if( ae_fp_greater(result,(double)(0)) )
   18674             :         {
   18675           0 :             result = (double)(0);
   18676             :         }
   18677           0 :         return result;
   18678             :     }
   18679           0 :     if( ae_fp_less_eq(s,24.0000) )
   18680             :     {
   18681           0 :         x = 2*(s-6.000000)/18.000000-1;
   18682           0 :         tj = (double)(1);
   18683           0 :         tj1 = x;
   18684           0 :         jarquebera_jbcheb(x, -6.594282e+00, &tj, &tj1, &result, _state);
   18685           0 :         jarquebera_jbcheb(x, -1.917838e+00, &tj, &tj1, &result, _state);
   18686           0 :         jarquebera_jbcheb(x, 1.455980e-01, &tj, &tj1, &result, _state);
   18687           0 :         jarquebera_jbcheb(x, -2.999589e-02, &tj, &tj1, &result, _state);
   18688           0 :         jarquebera_jbcheb(x, 5.604263e-03, &tj, &tj1, &result, _state);
   18689           0 :         jarquebera_jbcheb(x, -3.484445e-03, &tj, &tj1, &result, _state);
   18690           0 :         jarquebera_jbcheb(x, -1.819937e-03, &tj, &tj1, &result, _state);
   18691           0 :         jarquebera_jbcheb(x, -2.930390e-03, &tj, &tj1, &result, _state);
   18692           0 :         jarquebera_jbcheb(x, 2.771761e-04, &tj, &tj1, &result, _state);
   18693           0 :         jarquebera_jbcheb(x, -6.232581e-04, &tj, &tj1, &result, _state);
   18694           0 :         jarquebera_jbcheb(x, -7.029083e-04, &tj, &tj1, &result, _state);
   18695           0 :         if( ae_fp_greater(result,(double)(0)) )
   18696             :         {
   18697           0 :             result = (double)(0);
   18698             :         }
   18699           0 :         return result;
   18700             :     }
   18701           0 :     result = -2.127771e-01*(s-2.400000e+01)-8.400197e+00;
   18702           0 :     return result;
   18703             : }
   18704             : 
   18705             : 
   18706           0 : static double jarquebera_jbtbl18(double s, ae_state *_state)
   18707             : {
   18708             :     double x;
   18709             :     double tj;
   18710             :     double tj1;
   18711             :     double result;
   18712             : 
   18713             : 
   18714           0 :     result = (double)(0);
   18715           0 :     if( ae_fp_less_eq(s,3.0000) )
   18716             :     {
   18717           0 :         x = 2*(s-0.000000)/3.000000-1;
   18718           0 :         tj = (double)(1);
   18719           0 :         tj1 = x;
   18720           0 :         jarquebera_jbcheb(x, -1.526802e+00, &tj, &tj1, &result, _state);
   18721           0 :         jarquebera_jbcheb(x, -1.762373e+00, &tj, &tj1, &result, _state);
   18722           0 :         jarquebera_jbcheb(x, -5.598890e-02, &tj, &tj1, &result, _state);
   18723           0 :         jarquebera_jbcheb(x, 2.189437e-01, &tj, &tj1, &result, _state);
   18724           0 :         jarquebera_jbcheb(x, 5.971721e-03, &tj, &tj1, &result, _state);
   18725           0 :         jarquebera_jbcheb(x, -4.823067e-02, &tj, &tj1, &result, _state);
   18726           0 :         jarquebera_jbcheb(x, -1.064501e-02, &tj, &tj1, &result, _state);
   18727           0 :         jarquebera_jbcheb(x, 1.014932e-02, &tj, &tj1, &result, _state);
   18728           0 :         jarquebera_jbcheb(x, 5.953513e-03, &tj, &tj1, &result, _state);
   18729           0 :         if( ae_fp_greater(result,(double)(0)) )
   18730             :         {
   18731           0 :             result = (double)(0);
   18732             :         }
   18733           0 :         return result;
   18734             :     }
   18735           0 :     if( ae_fp_less_eq(s,6.0000) )
   18736             :     {
   18737           0 :         x = 2*(s-3.000000)/3.000000-1;
   18738           0 :         tj = (double)(1);
   18739           0 :         tj1 = x;
   18740           0 :         jarquebera_jbcheb(x, -3.818669e+00, &tj, &tj1, &result, _state);
   18741           0 :         jarquebera_jbcheb(x, -6.070918e-01, &tj, &tj1, &result, _state);
   18742           0 :         jarquebera_jbcheb(x, 4.277196e-02, &tj, &tj1, &result, _state);
   18743           0 :         jarquebera_jbcheb(x, -4.879817e-03, &tj, &tj1, &result, _state);
   18744           0 :         jarquebera_jbcheb(x, 6.887357e-04, &tj, &tj1, &result, _state);
   18745           0 :         jarquebera_jbcheb(x, 1.638451e-05, &tj, &tj1, &result, _state);
   18746           0 :         jarquebera_jbcheb(x, 1.502800e-04, &tj, &tj1, &result, _state);
   18747           0 :         jarquebera_jbcheb(x, -3.165796e-05, &tj, &tj1, &result, _state);
   18748           0 :         jarquebera_jbcheb(x, 5.034960e-05, &tj, &tj1, &result, _state);
   18749           0 :         if( ae_fp_greater(result,(double)(0)) )
   18750             :         {
   18751           0 :             result = (double)(0);
   18752             :         }
   18753           0 :         return result;
   18754             :     }
   18755           0 :     if( ae_fp_less_eq(s,20.0000) )
   18756             :     {
   18757           0 :         x = 2*(s-6.000000)/14.000000-1;
   18758           0 :         tj = (double)(1);
   18759           0 :         tj1 = x;
   18760           0 :         jarquebera_jbcheb(x, -6.010656e+00, &tj, &tj1, &result, _state);
   18761           0 :         jarquebera_jbcheb(x, -1.496296e+00, &tj, &tj1, &result, _state);
   18762           0 :         jarquebera_jbcheb(x, 1.002227e-01, &tj, &tj1, &result, _state);
   18763           0 :         jarquebera_jbcheb(x, -2.338250e-02, &tj, &tj1, &result, _state);
   18764           0 :         jarquebera_jbcheb(x, 4.137036e-03, &tj, &tj1, &result, _state);
   18765           0 :         jarquebera_jbcheb(x, -2.586202e-03, &tj, &tj1, &result, _state);
   18766           0 :         jarquebera_jbcheb(x, -9.736384e-04, &tj, &tj1, &result, _state);
   18767           0 :         jarquebera_jbcheb(x, 1.332251e-03, &tj, &tj1, &result, _state);
   18768           0 :         jarquebera_jbcheb(x, 1.877982e-03, &tj, &tj1, &result, _state);
   18769           0 :         jarquebera_jbcheb(x, -1.160963e-05, &tj, &tj1, &result, _state);
   18770           0 :         jarquebera_jbcheb(x, -2.547247e-03, &tj, &tj1, &result, _state);
   18771           0 :         if( ae_fp_greater(result,(double)(0)) )
   18772             :         {
   18773           0 :             result = (double)(0);
   18774             :         }
   18775           0 :         return result;
   18776             :     }
   18777           0 :     result = -1.684623e-01*(s-2.000000e+01)-7.428883e+00;
   18778           0 :     return result;
   18779             : }
   18780             : 
   18781             : 
   18782           0 : static double jarquebera_jbtbl19(double s, ae_state *_state)
   18783             : {
   18784             :     double x;
   18785             :     double tj;
   18786             :     double tj1;
   18787             :     double result;
   18788             : 
   18789             : 
   18790           0 :     result = (double)(0);
   18791           0 :     if( ae_fp_less_eq(s,3.0000) )
   18792             :     {
   18793           0 :         x = 2*(s-0.000000)/3.000000-1;
   18794           0 :         tj = (double)(1);
   18795           0 :         tj1 = x;
   18796           0 :         jarquebera_jbcheb(x, -1.490213e+00, &tj, &tj1, &result, _state);
   18797           0 :         jarquebera_jbcheb(x, -1.719633e+00, &tj, &tj1, &result, _state);
   18798           0 :         jarquebera_jbcheb(x, -6.459123e-02, &tj, &tj1, &result, _state);
   18799           0 :         jarquebera_jbcheb(x, 2.034878e-01, &tj, &tj1, &result, _state);
   18800           0 :         jarquebera_jbcheb(x, 1.113868e-02, &tj, &tj1, &result, _state);
   18801           0 :         jarquebera_jbcheb(x, -4.030922e-02, &tj, &tj1, &result, _state);
   18802           0 :         jarquebera_jbcheb(x, -1.054022e-02, &tj, &tj1, &result, _state);
   18803           0 :         jarquebera_jbcheb(x, 7.525623e-03, &tj, &tj1, &result, _state);
   18804           0 :         jarquebera_jbcheb(x, 5.277360e-03, &tj, &tj1, &result, _state);
   18805           0 :         if( ae_fp_greater(result,(double)(0)) )
   18806             :         {
   18807           0 :             result = (double)(0);
   18808             :         }
   18809           0 :         return result;
   18810             :     }
   18811           0 :     if( ae_fp_less_eq(s,6.0000) )
   18812             :     {
   18813           0 :         x = 2*(s-3.000000)/3.000000-1;
   18814           0 :         tj = (double)(1);
   18815           0 :         tj1 = x;
   18816           0 :         jarquebera_jbcheb(x, -3.744750e+00, &tj, &tj1, &result, _state);
   18817           0 :         jarquebera_jbcheb(x, -5.977749e-01, &tj, &tj1, &result, _state);
   18818           0 :         jarquebera_jbcheb(x, 4.223716e-02, &tj, &tj1, &result, _state);
   18819           0 :         jarquebera_jbcheb(x, -5.363889e-03, &tj, &tj1, &result, _state);
   18820           0 :         jarquebera_jbcheb(x, 5.711774e-04, &tj, &tj1, &result, _state);
   18821           0 :         jarquebera_jbcheb(x, -5.557257e-04, &tj, &tj1, &result, _state);
   18822           0 :         jarquebera_jbcheb(x, 4.254794e-04, &tj, &tj1, &result, _state);
   18823           0 :         jarquebera_jbcheb(x, 9.034207e-05, &tj, &tj1, &result, _state);
   18824           0 :         jarquebera_jbcheb(x, 5.498107e-05, &tj, &tj1, &result, _state);
   18825           0 :         if( ae_fp_greater(result,(double)(0)) )
   18826             :         {
   18827           0 :             result = (double)(0);
   18828             :         }
   18829           0 :         return result;
   18830             :     }
   18831           0 :     if( ae_fp_less_eq(s,20.0000) )
   18832             :     {
   18833           0 :         x = 2*(s-6.000000)/14.000000-1;
   18834           0 :         tj = (double)(1);
   18835           0 :         tj1 = x;
   18836           0 :         jarquebera_jbcheb(x, -5.872768e+00, &tj, &tj1, &result, _state);
   18837           0 :         jarquebera_jbcheb(x, -1.430689e+00, &tj, &tj1, &result, _state);
   18838           0 :         jarquebera_jbcheb(x, 1.136575e-01, &tj, &tj1, &result, _state);
   18839           0 :         jarquebera_jbcheb(x, -1.726627e-02, &tj, &tj1, &result, _state);
   18840           0 :         jarquebera_jbcheb(x, 3.421110e-03, &tj, &tj1, &result, _state);
   18841           0 :         jarquebera_jbcheb(x, -1.581510e-03, &tj, &tj1, &result, _state);
   18842           0 :         jarquebera_jbcheb(x, -5.559520e-04, &tj, &tj1, &result, _state);
   18843           0 :         jarquebera_jbcheb(x, -6.838208e-04, &tj, &tj1, &result, _state);
   18844           0 :         jarquebera_jbcheb(x, 8.428839e-04, &tj, &tj1, &result, _state);
   18845           0 :         jarquebera_jbcheb(x, -7.170682e-04, &tj, &tj1, &result, _state);
   18846           0 :         jarquebera_jbcheb(x, -6.006647e-04, &tj, &tj1, &result, _state);
   18847           0 :         if( ae_fp_greater(result,(double)(0)) )
   18848             :         {
   18849           0 :             result = (double)(0);
   18850             :         }
   18851           0 :         return result;
   18852             :     }
   18853           0 :     result = -1.539373e-01*(s-2.000000e+01)-7.206941e+00;
   18854           0 :     return result;
   18855             : }
   18856             : 
   18857             : 
   18858           0 : static double jarquebera_jbtbl20(double s, ae_state *_state)
   18859             : {
   18860             :     double x;
   18861             :     double tj;
   18862             :     double tj1;
   18863             :     double result;
   18864             : 
   18865             : 
   18866           0 :     result = (double)(0);
   18867           0 :     if( ae_fp_less_eq(s,4.0000) )
   18868             :     {
   18869           0 :         x = 2*(s-0.000000)/4.000000-1;
   18870           0 :         tj = (double)(1);
   18871           0 :         tj1 = x;
   18872           0 :         jarquebera_jbcheb(x, -1.854794e+00, &tj, &tj1, &result, _state);
   18873           0 :         jarquebera_jbcheb(x, -1.948947e+00, &tj, &tj1, &result, _state);
   18874           0 :         jarquebera_jbcheb(x, 1.632184e-01, &tj, &tj1, &result, _state);
   18875           0 :         jarquebera_jbcheb(x, 2.139397e-01, &tj, &tj1, &result, _state);
   18876           0 :         jarquebera_jbcheb(x, -1.006237e-01, &tj, &tj1, &result, _state);
   18877           0 :         jarquebera_jbcheb(x, -3.810031e-02, &tj, &tj1, &result, _state);
   18878           0 :         jarquebera_jbcheb(x, 3.573620e-02, &tj, &tj1, &result, _state);
   18879           0 :         jarquebera_jbcheb(x, 9.951242e-03, &tj, &tj1, &result, _state);
   18880           0 :         jarquebera_jbcheb(x, -1.274092e-02, &tj, &tj1, &result, _state);
   18881           0 :         jarquebera_jbcheb(x, -3.464196e-03, &tj, &tj1, &result, _state);
   18882           0 :         jarquebera_jbcheb(x, 4.882139e-03, &tj, &tj1, &result, _state);
   18883           0 :         jarquebera_jbcheb(x, 1.575144e-03, &tj, &tj1, &result, _state);
   18884           0 :         jarquebera_jbcheb(x, -1.822804e-03, &tj, &tj1, &result, _state);
   18885           0 :         jarquebera_jbcheb(x, -7.061348e-04, &tj, &tj1, &result, _state);
   18886           0 :         jarquebera_jbcheb(x, 5.908404e-04, &tj, &tj1, &result, _state);
   18887           0 :         jarquebera_jbcheb(x, 1.978353e-04, &tj, &tj1, &result, _state);
   18888           0 :         if( ae_fp_greater(result,(double)(0)) )
   18889             :         {
   18890           0 :             result = (double)(0);
   18891             :         }
   18892           0 :         return result;
   18893             :     }
   18894           0 :     if( ae_fp_less_eq(s,15.0000) )
   18895             :     {
   18896           0 :         x = 2*(s-4.000000)/11.000000-1;
   18897           0 :         tj = (double)(1);
   18898           0 :         tj1 = x;
   18899           0 :         jarquebera_jbcheb(x, -5.030989e+00, &tj, &tj1, &result, _state);
   18900           0 :         jarquebera_jbcheb(x, -1.327151e+00, &tj, &tj1, &result, _state);
   18901           0 :         jarquebera_jbcheb(x, 1.346404e-01, &tj, &tj1, &result, _state);
   18902           0 :         jarquebera_jbcheb(x, -2.840051e-02, &tj, &tj1, &result, _state);
   18903           0 :         jarquebera_jbcheb(x, 7.578551e-03, &tj, &tj1, &result, _state);
   18904           0 :         jarquebera_jbcheb(x, -9.813886e-04, &tj, &tj1, &result, _state);
   18905           0 :         jarquebera_jbcheb(x, 5.905973e-05, &tj, &tj1, &result, _state);
   18906           0 :         jarquebera_jbcheb(x, -5.358489e-04, &tj, &tj1, &result, _state);
   18907           0 :         jarquebera_jbcheb(x, -3.450795e-04, &tj, &tj1, &result, _state);
   18908           0 :         jarquebera_jbcheb(x, -6.941157e-04, &tj, &tj1, &result, _state);
   18909           0 :         jarquebera_jbcheb(x, -7.432418e-04, &tj, &tj1, &result, _state);
   18910           0 :         jarquebera_jbcheb(x, -2.070537e-04, &tj, &tj1, &result, _state);
   18911           0 :         jarquebera_jbcheb(x, 9.375654e-04, &tj, &tj1, &result, _state);
   18912           0 :         jarquebera_jbcheb(x, 5.367378e-04, &tj, &tj1, &result, _state);
   18913           0 :         jarquebera_jbcheb(x, 9.890859e-04, &tj, &tj1, &result, _state);
   18914           0 :         jarquebera_jbcheb(x, 6.679782e-04, &tj, &tj1, &result, _state);
   18915           0 :         if( ae_fp_greater(result,(double)(0)) )
   18916             :         {
   18917           0 :             result = (double)(0);
   18918             :         }
   18919           0 :         return result;
   18920             :     }
   18921           0 :     if( ae_fp_less_eq(s,25.0000) )
   18922             :     {
   18923           0 :         x = 2*(s-15.000000)/10.000000-1;
   18924           0 :         tj = (double)(1);
   18925           0 :         tj1 = x;
   18926           0 :         jarquebera_jbcheb(x, -7.015854e+00, &tj, &tj1, &result, _state);
   18927           0 :         jarquebera_jbcheb(x, -7.487737e-01, &tj, &tj1, &result, _state);
   18928           0 :         jarquebera_jbcheb(x, 2.244254e-02, &tj, &tj1, &result, _state);
   18929           0 :         if( ae_fp_greater(result,(double)(0)) )
   18930             :         {
   18931           0 :             result = (double)(0);
   18932             :         }
   18933           0 :         return result;
   18934             :     }
   18935           0 :     result = -1.318007e-01*(s-2.500000e+01)-7.742185e+00;
   18936           0 :     return result;
   18937             : }
   18938             : 
   18939             : 
   18940           0 : static double jarquebera_jbtbl30(double s, ae_state *_state)
   18941             : {
   18942             :     double x;
   18943             :     double tj;
   18944             :     double tj1;
   18945             :     double result;
   18946             : 
   18947             : 
   18948           0 :     result = (double)(0);
   18949           0 :     if( ae_fp_less_eq(s,4.0000) )
   18950             :     {
   18951           0 :         x = 2*(s-0.000000)/4.000000-1;
   18952           0 :         tj = (double)(1);
   18953           0 :         tj1 = x;
   18954           0 :         jarquebera_jbcheb(x, -1.630822e+00, &tj, &tj1, &result, _state);
   18955           0 :         jarquebera_jbcheb(x, -1.724298e+00, &tj, &tj1, &result, _state);
   18956           0 :         jarquebera_jbcheb(x, 7.872756e-02, &tj, &tj1, &result, _state);
   18957           0 :         jarquebera_jbcheb(x, 1.658268e-01, &tj, &tj1, &result, _state);
   18958           0 :         jarquebera_jbcheb(x, -3.573597e-02, &tj, &tj1, &result, _state);
   18959           0 :         jarquebera_jbcheb(x, -2.994157e-02, &tj, &tj1, &result, _state);
   18960           0 :         jarquebera_jbcheb(x, 5.994825e-03, &tj, &tj1, &result, _state);
   18961           0 :         jarquebera_jbcheb(x, 7.394303e-03, &tj, &tj1, &result, _state);
   18962           0 :         jarquebera_jbcheb(x, -5.785029e-04, &tj, &tj1, &result, _state);
   18963           0 :         jarquebera_jbcheb(x, -1.990264e-03, &tj, &tj1, &result, _state);
   18964           0 :         jarquebera_jbcheb(x, -1.037838e-04, &tj, &tj1, &result, _state);
   18965           0 :         jarquebera_jbcheb(x, 6.755546e-04, &tj, &tj1, &result, _state);
   18966           0 :         jarquebera_jbcheb(x, 1.774473e-04, &tj, &tj1, &result, _state);
   18967           0 :         jarquebera_jbcheb(x, -2.821395e-04, &tj, &tj1, &result, _state);
   18968           0 :         jarquebera_jbcheb(x, -1.392603e-04, &tj, &tj1, &result, _state);
   18969           0 :         jarquebera_jbcheb(x, 1.353313e-04, &tj, &tj1, &result, _state);
   18970           0 :         if( ae_fp_greater(result,(double)(0)) )
   18971             :         {
   18972           0 :             result = (double)(0);
   18973             :         }
   18974           0 :         return result;
   18975             :     }
   18976           0 :     if( ae_fp_less_eq(s,15.0000) )
   18977             :     {
   18978           0 :         x = 2*(s-4.000000)/11.000000-1;
   18979           0 :         tj = (double)(1);
   18980           0 :         tj1 = x;
   18981           0 :         jarquebera_jbcheb(x, -4.539322e+00, &tj, &tj1, &result, _state);
   18982           0 :         jarquebera_jbcheb(x, -1.197018e+00, &tj, &tj1, &result, _state);
   18983           0 :         jarquebera_jbcheb(x, 1.396848e-01, &tj, &tj1, &result, _state);
   18984           0 :         jarquebera_jbcheb(x, -2.804293e-02, &tj, &tj1, &result, _state);
   18985           0 :         jarquebera_jbcheb(x, 6.867928e-03, &tj, &tj1, &result, _state);
   18986           0 :         jarquebera_jbcheb(x, -2.768758e-03, &tj, &tj1, &result, _state);
   18987           0 :         jarquebera_jbcheb(x, 5.211792e-04, &tj, &tj1, &result, _state);
   18988           0 :         jarquebera_jbcheb(x, 4.925799e-04, &tj, &tj1, &result, _state);
   18989           0 :         jarquebera_jbcheb(x, 5.046235e-04, &tj, &tj1, &result, _state);
   18990           0 :         jarquebera_jbcheb(x, -9.536469e-05, &tj, &tj1, &result, _state);
   18991           0 :         jarquebera_jbcheb(x, -6.489642e-04, &tj, &tj1, &result, _state);
   18992           0 :         if( ae_fp_greater(result,(double)(0)) )
   18993             :         {
   18994           0 :             result = (double)(0);
   18995             :         }
   18996           0 :         return result;
   18997             :     }
   18998           0 :     if( ae_fp_less_eq(s,25.0000) )
   18999             :     {
   19000           0 :         x = 2*(s-15.000000)/10.000000-1;
   19001           0 :         tj = (double)(1);
   19002           0 :         tj1 = x;
   19003           0 :         jarquebera_jbcheb(x, -6.263462e+00, &tj, &tj1, &result, _state);
   19004           0 :         jarquebera_jbcheb(x, -6.177316e-01, &tj, &tj1, &result, _state);
   19005           0 :         jarquebera_jbcheb(x, 2.590637e-02, &tj, &tj1, &result, _state);
   19006           0 :         if( ae_fp_greater(result,(double)(0)) )
   19007             :         {
   19008           0 :             result = (double)(0);
   19009             :         }
   19010           0 :         return result;
   19011             :     }
   19012           0 :     result = -1.028212e-01*(s-2.500000e+01)-6.855288e+00;
   19013           0 :     return result;
   19014             : }
   19015             : 
   19016             : 
   19017           0 : static double jarquebera_jbtbl50(double s, ae_state *_state)
   19018             : {
   19019             :     double x;
   19020             :     double tj;
   19021             :     double tj1;
   19022             :     double result;
   19023             : 
   19024             : 
   19025           0 :     result = (double)(0);
   19026           0 :     if( ae_fp_less_eq(s,4.0000) )
   19027             :     {
   19028           0 :         x = 2*(s-0.000000)/4.000000-1;
   19029           0 :         tj = (double)(1);
   19030           0 :         tj1 = x;
   19031           0 :         jarquebera_jbcheb(x, -1.436279e+00, &tj, &tj1, &result, _state);
   19032           0 :         jarquebera_jbcheb(x, -1.519711e+00, &tj, &tj1, &result, _state);
   19033           0 :         jarquebera_jbcheb(x, 1.148699e-02, &tj, &tj1, &result, _state);
   19034           0 :         jarquebera_jbcheb(x, 1.001204e-01, &tj, &tj1, &result, _state);
   19035           0 :         jarquebera_jbcheb(x, -3.207620e-03, &tj, &tj1, &result, _state);
   19036           0 :         jarquebera_jbcheb(x, -1.034778e-02, &tj, &tj1, &result, _state);
   19037           0 :         jarquebera_jbcheb(x, -1.220322e-03, &tj, &tj1, &result, _state);
   19038           0 :         jarquebera_jbcheb(x, 1.033260e-03, &tj, &tj1, &result, _state);
   19039           0 :         jarquebera_jbcheb(x, 2.588280e-04, &tj, &tj1, &result, _state);
   19040           0 :         jarquebera_jbcheb(x, -1.851653e-04, &tj, &tj1, &result, _state);
   19041           0 :         jarquebera_jbcheb(x, -1.287733e-04, &tj, &tj1, &result, _state);
   19042           0 :         if( ae_fp_greater(result,(double)(0)) )
   19043             :         {
   19044           0 :             result = (double)(0);
   19045             :         }
   19046           0 :         return result;
   19047             :     }
   19048           0 :     if( ae_fp_less_eq(s,15.0000) )
   19049             :     {
   19050           0 :         x = 2*(s-4.000000)/11.000000-1;
   19051           0 :         tj = (double)(1);
   19052           0 :         tj1 = x;
   19053           0 :         jarquebera_jbcheb(x, -4.234645e+00, &tj, &tj1, &result, _state);
   19054           0 :         jarquebera_jbcheb(x, -1.189127e+00, &tj, &tj1, &result, _state);
   19055           0 :         jarquebera_jbcheb(x, 1.429738e-01, &tj, &tj1, &result, _state);
   19056           0 :         jarquebera_jbcheb(x, -3.058822e-02, &tj, &tj1, &result, _state);
   19057           0 :         jarquebera_jbcheb(x, 9.086776e-03, &tj, &tj1, &result, _state);
   19058           0 :         jarquebera_jbcheb(x, -1.445783e-03, &tj, &tj1, &result, _state);
   19059           0 :         jarquebera_jbcheb(x, 1.311671e-03, &tj, &tj1, &result, _state);
   19060           0 :         jarquebera_jbcheb(x, -7.261298e-04, &tj, &tj1, &result, _state);
   19061           0 :         jarquebera_jbcheb(x, 6.496987e-04, &tj, &tj1, &result, _state);
   19062           0 :         jarquebera_jbcheb(x, 2.605249e-04, &tj, &tj1, &result, _state);
   19063           0 :         jarquebera_jbcheb(x, 8.162282e-04, &tj, &tj1, &result, _state);
   19064           0 :         if( ae_fp_greater(result,(double)(0)) )
   19065             :         {
   19066           0 :             result = (double)(0);
   19067             :         }
   19068           0 :         return result;
   19069             :     }
   19070           0 :     if( ae_fp_less_eq(s,25.0000) )
   19071             :     {
   19072           0 :         x = 2*(s-15.000000)/10.000000-1;
   19073           0 :         tj = (double)(1);
   19074           0 :         tj1 = x;
   19075           0 :         jarquebera_jbcheb(x, -5.921095e+00, &tj, &tj1, &result, _state);
   19076           0 :         jarquebera_jbcheb(x, -5.888603e-01, &tj, &tj1, &result, _state);
   19077           0 :         jarquebera_jbcheb(x, 3.080113e-02, &tj, &tj1, &result, _state);
   19078           0 :         if( ae_fp_greater(result,(double)(0)) )
   19079             :         {
   19080           0 :             result = (double)(0);
   19081             :         }
   19082           0 :         return result;
   19083             :     }
   19084           0 :     result = -9.313116e-02*(s-2.500000e+01)-6.479154e+00;
   19085           0 :     return result;
   19086             : }
   19087             : 
   19088             : 
   19089           0 : static double jarquebera_jbtbl65(double s, ae_state *_state)
   19090             : {
   19091             :     double x;
   19092             :     double tj;
   19093             :     double tj1;
   19094             :     double result;
   19095             : 
   19096             : 
   19097           0 :     result = (double)(0);
   19098           0 :     if( ae_fp_less_eq(s,4.0000) )
   19099             :     {
   19100           0 :         x = 2*(s-0.000000)/4.000000-1;
   19101           0 :         tj = (double)(1);
   19102           0 :         tj1 = x;
   19103           0 :         jarquebera_jbcheb(x, -1.360024e+00, &tj, &tj1, &result, _state);
   19104           0 :         jarquebera_jbcheb(x, -1.434631e+00, &tj, &tj1, &result, _state);
   19105           0 :         jarquebera_jbcheb(x, -6.514580e-03, &tj, &tj1, &result, _state);
   19106           0 :         jarquebera_jbcheb(x, 7.332038e-02, &tj, &tj1, &result, _state);
   19107           0 :         jarquebera_jbcheb(x, 1.158197e-03, &tj, &tj1, &result, _state);
   19108           0 :         jarquebera_jbcheb(x, -5.121233e-03, &tj, &tj1, &result, _state);
   19109           0 :         jarquebera_jbcheb(x, -1.051056e-03, &tj, &tj1, &result, _state);
   19110           0 :         if( ae_fp_greater(result,(double)(0)) )
   19111             :         {
   19112           0 :             result = (double)(0);
   19113             :         }
   19114           0 :         return result;
   19115             :     }
   19116           0 :     if( ae_fp_less_eq(s,15.0000) )
   19117             :     {
   19118           0 :         x = 2*(s-4.000000)/11.000000-1;
   19119           0 :         tj = (double)(1);
   19120           0 :         tj1 = x;
   19121           0 :         jarquebera_jbcheb(x, -4.148601e+00, &tj, &tj1, &result, _state);
   19122           0 :         jarquebera_jbcheb(x, -1.214233e+00, &tj, &tj1, &result, _state);
   19123           0 :         jarquebera_jbcheb(x, 1.487977e-01, &tj, &tj1, &result, _state);
   19124           0 :         jarquebera_jbcheb(x, -3.424720e-02, &tj, &tj1, &result, _state);
   19125           0 :         jarquebera_jbcheb(x, 1.116715e-02, &tj, &tj1, &result, _state);
   19126           0 :         jarquebera_jbcheb(x, -4.043152e-03, &tj, &tj1, &result, _state);
   19127           0 :         jarquebera_jbcheb(x, 1.718149e-03, &tj, &tj1, &result, _state);
   19128           0 :         jarquebera_jbcheb(x, -1.313701e-03, &tj, &tj1, &result, _state);
   19129           0 :         jarquebera_jbcheb(x, 3.097305e-04, &tj, &tj1, &result, _state);
   19130           0 :         jarquebera_jbcheb(x, 2.181031e-04, &tj, &tj1, &result, _state);
   19131           0 :         jarquebera_jbcheb(x, 1.256975e-04, &tj, &tj1, &result, _state);
   19132           0 :         if( ae_fp_greater(result,(double)(0)) )
   19133             :         {
   19134           0 :             result = (double)(0);
   19135             :         }
   19136           0 :         return result;
   19137             :     }
   19138           0 :     if( ae_fp_less_eq(s,25.0000) )
   19139             :     {
   19140           0 :         x = 2*(s-15.000000)/10.000000-1;
   19141           0 :         tj = (double)(1);
   19142           0 :         tj1 = x;
   19143           0 :         jarquebera_jbcheb(x, -5.858951e+00, &tj, &tj1, &result, _state);
   19144           0 :         jarquebera_jbcheb(x, -5.895179e-01, &tj, &tj1, &result, _state);
   19145           0 :         jarquebera_jbcheb(x, 2.933237e-02, &tj, &tj1, &result, _state);
   19146           0 :         if( ae_fp_greater(result,(double)(0)) )
   19147             :         {
   19148           0 :             result = (double)(0);
   19149             :         }
   19150           0 :         return result;
   19151             :     }
   19152           0 :     result = -9.443768e-02*(s-2.500000e+01)-6.419137e+00;
   19153           0 :     return result;
   19154             : }
   19155             : 
   19156             : 
   19157           0 : static double jarquebera_jbtbl100(double s, ae_state *_state)
   19158             : {
   19159             :     double x;
   19160             :     double tj;
   19161             :     double tj1;
   19162             :     double result;
   19163             : 
   19164             : 
   19165           0 :     result = (double)(0);
   19166           0 :     if( ae_fp_less_eq(s,4.0000) )
   19167             :     {
   19168           0 :         x = 2*(s-0.000000)/4.000000-1;
   19169           0 :         tj = (double)(1);
   19170           0 :         tj1 = x;
   19171           0 :         jarquebera_jbcheb(x, -1.257021e+00, &tj, &tj1, &result, _state);
   19172           0 :         jarquebera_jbcheb(x, -1.313418e+00, &tj, &tj1, &result, _state);
   19173           0 :         jarquebera_jbcheb(x, -1.628931e-02, &tj, &tj1, &result, _state);
   19174           0 :         jarquebera_jbcheb(x, 4.264287e-02, &tj, &tj1, &result, _state);
   19175           0 :         jarquebera_jbcheb(x, 1.518487e-03, &tj, &tj1, &result, _state);
   19176           0 :         jarquebera_jbcheb(x, -1.499826e-03, &tj, &tj1, &result, _state);
   19177           0 :         jarquebera_jbcheb(x, -4.836044e-04, &tj, &tj1, &result, _state);
   19178           0 :         if( ae_fp_greater(result,(double)(0)) )
   19179             :         {
   19180           0 :             result = (double)(0);
   19181             :         }
   19182           0 :         return result;
   19183             :     }
   19184           0 :     if( ae_fp_less_eq(s,15.0000) )
   19185             :     {
   19186           0 :         x = 2*(s-4.000000)/11.000000-1;
   19187           0 :         tj = (double)(1);
   19188           0 :         tj1 = x;
   19189           0 :         jarquebera_jbcheb(x, -4.056508e+00, &tj, &tj1, &result, _state);
   19190           0 :         jarquebera_jbcheb(x, -1.279690e+00, &tj, &tj1, &result, _state);
   19191           0 :         jarquebera_jbcheb(x, 1.665746e-01, &tj, &tj1, &result, _state);
   19192           0 :         jarquebera_jbcheb(x, -4.290012e-02, &tj, &tj1, &result, _state);
   19193           0 :         jarquebera_jbcheb(x, 1.487632e-02, &tj, &tj1, &result, _state);
   19194           0 :         jarquebera_jbcheb(x, -5.704465e-03, &tj, &tj1, &result, _state);
   19195           0 :         jarquebera_jbcheb(x, 2.211669e-03, &tj, &tj1, &result, _state);
   19196           0 :         if( ae_fp_greater(result,(double)(0)) )
   19197             :         {
   19198           0 :             result = (double)(0);
   19199             :         }
   19200           0 :         return result;
   19201             :     }
   19202           0 :     if( ae_fp_less_eq(s,25.0000) )
   19203             :     {
   19204           0 :         x = 2*(s-15.000000)/10.000000-1;
   19205           0 :         tj = (double)(1);
   19206           0 :         tj1 = x;
   19207           0 :         jarquebera_jbcheb(x, -5.866099e+00, &tj, &tj1, &result, _state);
   19208           0 :         jarquebera_jbcheb(x, -6.399767e-01, &tj, &tj1, &result, _state);
   19209           0 :         jarquebera_jbcheb(x, 2.498208e-02, &tj, &tj1, &result, _state);
   19210           0 :         if( ae_fp_greater(result,(double)(0)) )
   19211             :         {
   19212           0 :             result = (double)(0);
   19213             :         }
   19214           0 :         return result;
   19215             :     }
   19216           0 :     result = -1.080097e-01*(s-2.500000e+01)-6.481094e+00;
   19217           0 :     return result;
   19218             : }
   19219             : 
   19220             : 
   19221           0 : static double jarquebera_jbtbl130(double s, ae_state *_state)
   19222             : {
   19223             :     double x;
   19224             :     double tj;
   19225             :     double tj1;
   19226             :     double result;
   19227             : 
   19228             : 
   19229           0 :     result = (double)(0);
   19230           0 :     if( ae_fp_less_eq(s,4.0000) )
   19231             :     {
   19232           0 :         x = 2*(s-0.000000)/4.000000-1;
   19233           0 :         tj = (double)(1);
   19234           0 :         tj1 = x;
   19235           0 :         jarquebera_jbcheb(x, -1.207999e+00, &tj, &tj1, &result, _state);
   19236           0 :         jarquebera_jbcheb(x, -1.253864e+00, &tj, &tj1, &result, _state);
   19237           0 :         jarquebera_jbcheb(x, -1.618032e-02, &tj, &tj1, &result, _state);
   19238           0 :         jarquebera_jbcheb(x, 3.112729e-02, &tj, &tj1, &result, _state);
   19239           0 :         jarquebera_jbcheb(x, 1.210546e-03, &tj, &tj1, &result, _state);
   19240           0 :         jarquebera_jbcheb(x, -4.732602e-04, &tj, &tj1, &result, _state);
   19241           0 :         jarquebera_jbcheb(x, -2.410527e-04, &tj, &tj1, &result, _state);
   19242           0 :         if( ae_fp_greater(result,(double)(0)) )
   19243             :         {
   19244           0 :             result = (double)(0);
   19245             :         }
   19246           0 :         return result;
   19247             :     }
   19248           0 :     if( ae_fp_less_eq(s,15.0000) )
   19249             :     {
   19250           0 :         x = 2*(s-4.000000)/11.000000-1;
   19251           0 :         tj = (double)(1);
   19252           0 :         tj1 = x;
   19253           0 :         jarquebera_jbcheb(x, -4.026324e+00, &tj, &tj1, &result, _state);
   19254           0 :         jarquebera_jbcheb(x, -1.331990e+00, &tj, &tj1, &result, _state);
   19255           0 :         jarquebera_jbcheb(x, 1.779129e-01, &tj, &tj1, &result, _state);
   19256           0 :         jarquebera_jbcheb(x, -4.674749e-02, &tj, &tj1, &result, _state);
   19257           0 :         jarquebera_jbcheb(x, 1.669077e-02, &tj, &tj1, &result, _state);
   19258           0 :         jarquebera_jbcheb(x, -5.679136e-03, &tj, &tj1, &result, _state);
   19259           0 :         jarquebera_jbcheb(x, 8.833221e-04, &tj, &tj1, &result, _state);
   19260           0 :         if( ae_fp_greater(result,(double)(0)) )
   19261             :         {
   19262           0 :             result = (double)(0);
   19263             :         }
   19264           0 :         return result;
   19265             :     }
   19266           0 :     if( ae_fp_less_eq(s,25.0000) )
   19267             :     {
   19268           0 :         x = 2*(s-15.000000)/10.000000-1;
   19269           0 :         tj = (double)(1);
   19270           0 :         tj1 = x;
   19271           0 :         jarquebera_jbcheb(x, -5.893951e+00, &tj, &tj1, &result, _state);
   19272           0 :         jarquebera_jbcheb(x, -6.475304e-01, &tj, &tj1, &result, _state);
   19273           0 :         jarquebera_jbcheb(x, 3.116734e-02, &tj, &tj1, &result, _state);
   19274           0 :         if( ae_fp_greater(result,(double)(0)) )
   19275             :         {
   19276           0 :             result = (double)(0);
   19277             :         }
   19278           0 :         return result;
   19279             :     }
   19280           0 :     result = -1.045722e-01*(s-2.500000e+01)-6.510314e+00;
   19281           0 :     return result;
   19282             : }
   19283             : 
   19284             : 
   19285           0 : static double jarquebera_jbtbl200(double s, ae_state *_state)
   19286             : {
   19287             :     double x;
   19288             :     double tj;
   19289             :     double tj1;
   19290             :     double result;
   19291             : 
   19292             : 
   19293           0 :     result = (double)(0);
   19294           0 :     if( ae_fp_less_eq(s,4.0000) )
   19295             :     {
   19296           0 :         x = 2*(s-0.000000)/4.000000-1;
   19297           0 :         tj = (double)(1);
   19298           0 :         tj1 = x;
   19299           0 :         jarquebera_jbcheb(x, -1.146155e+00, &tj, &tj1, &result, _state);
   19300           0 :         jarquebera_jbcheb(x, -1.177398e+00, &tj, &tj1, &result, _state);
   19301           0 :         jarquebera_jbcheb(x, -1.297970e-02, &tj, &tj1, &result, _state);
   19302           0 :         jarquebera_jbcheb(x, 1.869745e-02, &tj, &tj1, &result, _state);
   19303           0 :         jarquebera_jbcheb(x, 1.717288e-04, &tj, &tj1, &result, _state);
   19304           0 :         jarquebera_jbcheb(x, -1.982108e-04, &tj, &tj1, &result, _state);
   19305           0 :         jarquebera_jbcheb(x, 6.427636e-05, &tj, &tj1, &result, _state);
   19306           0 :         if( ae_fp_greater(result,(double)(0)) )
   19307             :         {
   19308           0 :             result = (double)(0);
   19309             :         }
   19310           0 :         return result;
   19311             :     }
   19312           0 :     if( ae_fp_less_eq(s,15.0000) )
   19313             :     {
   19314           0 :         x = 2*(s-4.000000)/11.000000-1;
   19315           0 :         tj = (double)(1);
   19316           0 :         tj1 = x;
   19317           0 :         jarquebera_jbcheb(x, -4.034235e+00, &tj, &tj1, &result, _state);
   19318           0 :         jarquebera_jbcheb(x, -1.455006e+00, &tj, &tj1, &result, _state);
   19319           0 :         jarquebera_jbcheb(x, 1.942996e-01, &tj, &tj1, &result, _state);
   19320           0 :         jarquebera_jbcheb(x, -4.973795e-02, &tj, &tj1, &result, _state);
   19321           0 :         jarquebera_jbcheb(x, 1.418812e-02, &tj, &tj1, &result, _state);
   19322           0 :         jarquebera_jbcheb(x, -3.156778e-03, &tj, &tj1, &result, _state);
   19323           0 :         jarquebera_jbcheb(x, 4.896705e-05, &tj, &tj1, &result, _state);
   19324           0 :         if( ae_fp_greater(result,(double)(0)) )
   19325             :         {
   19326           0 :             result = (double)(0);
   19327             :         }
   19328           0 :         return result;
   19329             :     }
   19330           0 :     if( ae_fp_less_eq(s,25.0000) )
   19331             :     {
   19332           0 :         x = 2*(s-15.000000)/10.000000-1;
   19333           0 :         tj = (double)(1);
   19334           0 :         tj1 = x;
   19335           0 :         jarquebera_jbcheb(x, -6.086071e+00, &tj, &tj1, &result, _state);
   19336           0 :         jarquebera_jbcheb(x, -7.152176e-01, &tj, &tj1, &result, _state);
   19337           0 :         jarquebera_jbcheb(x, 3.725393e-02, &tj, &tj1, &result, _state);
   19338           0 :         if( ae_fp_greater(result,(double)(0)) )
   19339             :         {
   19340           0 :             result = (double)(0);
   19341             :         }
   19342           0 :         return result;
   19343             :     }
   19344           0 :     result = -1.132404e-01*(s-2.500000e+01)-6.764034e+00;
   19345           0 :     return result;
   19346             : }
   19347             : 
   19348             : 
   19349           0 : static double jarquebera_jbtbl301(double s, ae_state *_state)
   19350             : {
   19351             :     double x;
   19352             :     double tj;
   19353             :     double tj1;
   19354             :     double result;
   19355             : 
   19356             : 
   19357           0 :     result = (double)(0);
   19358           0 :     if( ae_fp_less_eq(s,4.0000) )
   19359             :     {
   19360           0 :         x = 2*(s-0.000000)/4.000000-1;
   19361           0 :         tj = (double)(1);
   19362           0 :         tj1 = x;
   19363           0 :         jarquebera_jbcheb(x, -1.104290e+00, &tj, &tj1, &result, _state);
   19364           0 :         jarquebera_jbcheb(x, -1.125800e+00, &tj, &tj1, &result, _state);
   19365           0 :         jarquebera_jbcheb(x, -9.595847e-03, &tj, &tj1, &result, _state);
   19366           0 :         jarquebera_jbcheb(x, 1.219666e-02, &tj, &tj1, &result, _state);
   19367           0 :         jarquebera_jbcheb(x, 1.502210e-04, &tj, &tj1, &result, _state);
   19368           0 :         jarquebera_jbcheb(x, -6.414543e-05, &tj, &tj1, &result, _state);
   19369           0 :         jarquebera_jbcheb(x, 6.754115e-05, &tj, &tj1, &result, _state);
   19370           0 :         if( ae_fp_greater(result,(double)(0)) )
   19371             :         {
   19372           0 :             result = (double)(0);
   19373             :         }
   19374           0 :         return result;
   19375             :     }
   19376           0 :     if( ae_fp_less_eq(s,15.0000) )
   19377             :     {
   19378           0 :         x = 2*(s-4.000000)/11.000000-1;
   19379           0 :         tj = (double)(1);
   19380           0 :         tj1 = x;
   19381           0 :         jarquebera_jbcheb(x, -4.065955e+00, &tj, &tj1, &result, _state);
   19382           0 :         jarquebera_jbcheb(x, -1.582060e+00, &tj, &tj1, &result, _state);
   19383           0 :         jarquebera_jbcheb(x, 2.004472e-01, &tj, &tj1, &result, _state);
   19384           0 :         jarquebera_jbcheb(x, -4.709092e-02, &tj, &tj1, &result, _state);
   19385           0 :         jarquebera_jbcheb(x, 1.105779e-02, &tj, &tj1, &result, _state);
   19386           0 :         jarquebera_jbcheb(x, 1.197391e-03, &tj, &tj1, &result, _state);
   19387           0 :         jarquebera_jbcheb(x, -8.386780e-04, &tj, &tj1, &result, _state);
   19388           0 :         if( ae_fp_greater(result,(double)(0)) )
   19389             :         {
   19390           0 :             result = (double)(0);
   19391             :         }
   19392           0 :         return result;
   19393             :     }
   19394           0 :     if( ae_fp_less_eq(s,25.0000) )
   19395             :     {
   19396           0 :         x = 2*(s-15.000000)/10.000000-1;
   19397           0 :         tj = (double)(1);
   19398           0 :         tj1 = x;
   19399           0 :         jarquebera_jbcheb(x, -6.311384e+00, &tj, &tj1, &result, _state);
   19400           0 :         jarquebera_jbcheb(x, -7.918763e-01, &tj, &tj1, &result, _state);
   19401           0 :         jarquebera_jbcheb(x, 3.626584e-02, &tj, &tj1, &result, _state);
   19402           0 :         if( ae_fp_greater(result,(double)(0)) )
   19403             :         {
   19404           0 :             result = (double)(0);
   19405             :         }
   19406           0 :         return result;
   19407             :     }
   19408           0 :     result = -1.293626e-01*(s-2.500000e+01)-7.066995e+00;
   19409           0 :     return result;
   19410             : }
   19411             : 
   19412             : 
   19413           0 : static double jarquebera_jbtbl501(double s, ae_state *_state)
   19414             : {
   19415             :     double x;
   19416             :     double tj;
   19417             :     double tj1;
   19418             :     double result;
   19419             : 
   19420             : 
   19421           0 :     result = (double)(0);
   19422           0 :     if( ae_fp_less_eq(s,4.0000) )
   19423             :     {
   19424           0 :         x = 2*(s-0.000000)/4.000000-1;
   19425           0 :         tj = (double)(1);
   19426           0 :         tj1 = x;
   19427           0 :         jarquebera_jbcheb(x, -1.067426e+00, &tj, &tj1, &result, _state);
   19428           0 :         jarquebera_jbcheb(x, -1.079765e+00, &tj, &tj1, &result, _state);
   19429           0 :         jarquebera_jbcheb(x, -5.463005e-03, &tj, &tj1, &result, _state);
   19430           0 :         jarquebera_jbcheb(x, 6.875659e-03, &tj, &tj1, &result, _state);
   19431           0 :         if( ae_fp_greater(result,(double)(0)) )
   19432             :         {
   19433           0 :             result = (double)(0);
   19434             :         }
   19435           0 :         return result;
   19436             :     }
   19437           0 :     if( ae_fp_less_eq(s,15.0000) )
   19438             :     {
   19439           0 :         x = 2*(s-4.000000)/11.000000-1;
   19440           0 :         tj = (double)(1);
   19441           0 :         tj1 = x;
   19442           0 :         jarquebera_jbcheb(x, -4.127574e+00, &tj, &tj1, &result, _state);
   19443           0 :         jarquebera_jbcheb(x, -1.740694e+00, &tj, &tj1, &result, _state);
   19444           0 :         jarquebera_jbcheb(x, 2.044502e-01, &tj, &tj1, &result, _state);
   19445           0 :         jarquebera_jbcheb(x, -3.746714e-02, &tj, &tj1, &result, _state);
   19446           0 :         jarquebera_jbcheb(x, 3.810594e-04, &tj, &tj1, &result, _state);
   19447           0 :         jarquebera_jbcheb(x, 1.197111e-03, &tj, &tj1, &result, _state);
   19448           0 :         if( ae_fp_greater(result,(double)(0)) )
   19449             :         {
   19450           0 :             result = (double)(0);
   19451             :         }
   19452           0 :         return result;
   19453             :     }
   19454           0 :     if( ae_fp_less_eq(s,25.0000) )
   19455             :     {
   19456           0 :         x = 2*(s-15.000000)/10.000000-1;
   19457           0 :         tj = (double)(1);
   19458           0 :         tj1 = x;
   19459           0 :         jarquebera_jbcheb(x, -6.628194e+00, &tj, &tj1, &result, _state);
   19460           0 :         jarquebera_jbcheb(x, -8.846221e-01, &tj, &tj1, &result, _state);
   19461           0 :         jarquebera_jbcheb(x, 4.386405e-02, &tj, &tj1, &result, _state);
   19462           0 :         if( ae_fp_greater(result,(double)(0)) )
   19463             :         {
   19464           0 :             result = (double)(0);
   19465             :         }
   19466           0 :         return result;
   19467             :     }
   19468           0 :     result = -1.418332e-01*(s-2.500000e+01)-7.468952e+00;
   19469           0 :     return result;
   19470             : }
   19471             : 
   19472             : 
   19473           0 : static double jarquebera_jbtbl701(double s, ae_state *_state)
   19474             : {
   19475             :     double x;
   19476             :     double tj;
   19477             :     double tj1;
   19478             :     double result;
   19479             : 
   19480             : 
   19481           0 :     result = (double)(0);
   19482           0 :     if( ae_fp_less_eq(s,4.0000) )
   19483             :     {
   19484           0 :         x = 2*(s-0.000000)/4.000000-1;
   19485           0 :         tj = (double)(1);
   19486           0 :         tj1 = x;
   19487           0 :         jarquebera_jbcheb(x, -1.050999e+00, &tj, &tj1, &result, _state);
   19488           0 :         jarquebera_jbcheb(x, -1.059769e+00, &tj, &tj1, &result, _state);
   19489           0 :         jarquebera_jbcheb(x, -3.922680e-03, &tj, &tj1, &result, _state);
   19490           0 :         jarquebera_jbcheb(x, 4.847054e-03, &tj, &tj1, &result, _state);
   19491           0 :         if( ae_fp_greater(result,(double)(0)) )
   19492             :         {
   19493           0 :             result = (double)(0);
   19494             :         }
   19495           0 :         return result;
   19496             :     }
   19497           0 :     if( ae_fp_less_eq(s,15.0000) )
   19498             :     {
   19499           0 :         x = 2*(s-4.000000)/11.000000-1;
   19500           0 :         tj = (double)(1);
   19501           0 :         tj1 = x;
   19502           0 :         jarquebera_jbcheb(x, -4.192182e+00, &tj, &tj1, &result, _state);
   19503           0 :         jarquebera_jbcheb(x, -1.860007e+00, &tj, &tj1, &result, _state);
   19504           0 :         jarquebera_jbcheb(x, 1.963942e-01, &tj, &tj1, &result, _state);
   19505           0 :         jarquebera_jbcheb(x, -2.838711e-02, &tj, &tj1, &result, _state);
   19506           0 :         jarquebera_jbcheb(x, -2.893112e-04, &tj, &tj1, &result, _state);
   19507           0 :         jarquebera_jbcheb(x, 2.159788e-03, &tj, &tj1, &result, _state);
   19508           0 :         if( ae_fp_greater(result,(double)(0)) )
   19509             :         {
   19510           0 :             result = (double)(0);
   19511             :         }
   19512           0 :         return result;
   19513             :     }
   19514           0 :     if( ae_fp_less_eq(s,25.0000) )
   19515             :     {
   19516           0 :         x = 2*(s-15.000000)/10.000000-1;
   19517           0 :         tj = (double)(1);
   19518           0 :         tj1 = x;
   19519           0 :         jarquebera_jbcheb(x, -6.917851e+00, &tj, &tj1, &result, _state);
   19520           0 :         jarquebera_jbcheb(x, -9.817020e-01, &tj, &tj1, &result, _state);
   19521           0 :         jarquebera_jbcheb(x, 5.383727e-02, &tj, &tj1, &result, _state);
   19522           0 :         if( ae_fp_greater(result,(double)(0)) )
   19523             :         {
   19524           0 :             result = (double)(0);
   19525             :         }
   19526           0 :         return result;
   19527             :     }
   19528           0 :     result = -1.532706e-01*(s-2.500000e+01)-7.845715e+00;
   19529           0 :     return result;
   19530             : }
   19531             : 
   19532             : 
   19533           0 : static double jarquebera_jbtbl1401(double s, ae_state *_state)
   19534             : {
   19535             :     double x;
   19536             :     double tj;
   19537             :     double tj1;
   19538             :     double result;
   19539             : 
   19540             : 
   19541           0 :     result = (double)(0);
   19542           0 :     if( ae_fp_less_eq(s,4.0000) )
   19543             :     {
   19544           0 :         x = 2*(s-0.000000)/4.000000-1;
   19545           0 :         tj = (double)(1);
   19546           0 :         tj1 = x;
   19547           0 :         jarquebera_jbcheb(x, -1.026266e+00, &tj, &tj1, &result, _state);
   19548           0 :         jarquebera_jbcheb(x, -1.030061e+00, &tj, &tj1, &result, _state);
   19549           0 :         jarquebera_jbcheb(x, -1.259222e-03, &tj, &tj1, &result, _state);
   19550           0 :         jarquebera_jbcheb(x, 2.536254e-03, &tj, &tj1, &result, _state);
   19551           0 :         if( ae_fp_greater(result,(double)(0)) )
   19552             :         {
   19553           0 :             result = (double)(0);
   19554             :         }
   19555           0 :         return result;
   19556             :     }
   19557           0 :     if( ae_fp_less_eq(s,15.0000) )
   19558             :     {
   19559           0 :         x = 2*(s-4.000000)/11.000000-1;
   19560           0 :         tj = (double)(1);
   19561           0 :         tj1 = x;
   19562           0 :         jarquebera_jbcheb(x, -4.329849e+00, &tj, &tj1, &result, _state);
   19563           0 :         jarquebera_jbcheb(x, -2.095443e+00, &tj, &tj1, &result, _state);
   19564           0 :         jarquebera_jbcheb(x, 1.759363e-01, &tj, &tj1, &result, _state);
   19565           0 :         jarquebera_jbcheb(x, -7.751359e-03, &tj, &tj1, &result, _state);
   19566           0 :         jarquebera_jbcheb(x, -6.124368e-03, &tj, &tj1, &result, _state);
   19567           0 :         jarquebera_jbcheb(x, -1.793114e-03, &tj, &tj1, &result, _state);
   19568           0 :         if( ae_fp_greater(result,(double)(0)) )
   19569             :         {
   19570           0 :             result = (double)(0);
   19571             :         }
   19572           0 :         return result;
   19573             :     }
   19574           0 :     if( ae_fp_less_eq(s,25.0000) )
   19575             :     {
   19576           0 :         x = 2*(s-15.000000)/10.000000-1;
   19577           0 :         tj = (double)(1);
   19578           0 :         tj1 = x;
   19579           0 :         jarquebera_jbcheb(x, -7.544330e+00, &tj, &tj1, &result, _state);
   19580           0 :         jarquebera_jbcheb(x, -1.225382e+00, &tj, &tj1, &result, _state);
   19581           0 :         jarquebera_jbcheb(x, 5.392349e-02, &tj, &tj1, &result, _state);
   19582           0 :         if( ae_fp_greater(result,(double)(0)) )
   19583             :         {
   19584           0 :             result = (double)(0);
   19585             :         }
   19586           0 :         return result;
   19587             :     }
   19588           0 :     result = -2.019375e-01*(s-2.500000e+01)-8.715788e+00;
   19589           0 :     return result;
   19590             : }
   19591             : 
   19592             : 
   19593           0 : static void jarquebera_jbcheb(double x,
   19594             :      double c,
   19595             :      double* tj,
   19596             :      double* tj1,
   19597             :      double* r,
   19598             :      ae_state *_state)
   19599             : {
   19600             :     double t;
   19601             : 
   19602             : 
   19603           0 :     *r = *r+c*(*tj);
   19604           0 :     t = 2*x*(*tj1)-(*tj);
   19605           0 :     *tj = *tj1;
   19606           0 :     *tj1 = t;
   19607           0 : }
   19608             : 
   19609             : 
   19610             : #endif
   19611             : #if defined(AE_COMPILE_VARIANCETESTS) || !defined(AE_PARTIAL_BUILD)
   19612             : 
   19613             : 
   19614             : /*************************************************************************
   19615             : Two-sample F-test
   19616             : 
   19617             : This test checks three hypotheses about dispersions of the given  samples.
   19618             : The following tests are performed:
   19619             :     * two-tailed test (null hypothesis - the dispersions are equal)
   19620             :     * left-tailed test (null hypothesis  -  the  dispersion  of  the first
   19621             :       sample is greater than or equal to  the  dispersion  of  the  second
   19622             :       sample).
   19623             :     * right-tailed test (null hypothesis - the  dispersion  of  the  first
   19624             :       sample is less than or equal to the dispersion of the second sample)
   19625             : 
   19626             : The test is based on the following assumptions:
   19627             :     * the given samples have normal distributions
   19628             :     * the samples are independent.
   19629             : 
   19630             : Input parameters:
   19631             :     X   -   sample 1. Array whose index goes from 0 to N-1.
   19632             :     N   -   sample size.
   19633             :     Y   -   sample 2. Array whose index goes from 0 to M-1.
   19634             :     M   -   sample size.
   19635             : 
   19636             : Output parameters:
   19637             :     BothTails   -   p-value for two-tailed test.
   19638             :                     If BothTails is less than the given significance level
   19639             :                     the null hypothesis is rejected.
   19640             :     LeftTail    -   p-value for left-tailed test.
   19641             :                     If LeftTail is less than the given significance level,
   19642             :                     the null hypothesis is rejected.
   19643             :     RightTail   -   p-value for right-tailed test.
   19644             :                     If RightTail is less than the given significance level
   19645             :                     the null hypothesis is rejected.
   19646             : 
   19647             :   -- ALGLIB --
   19648             :      Copyright 19.09.2006 by Bochkanov Sergey
   19649             : *************************************************************************/
   19650           0 : void ftest(/* Real    */ ae_vector* x,
   19651             :      ae_int_t n,
   19652             :      /* Real    */ ae_vector* y,
   19653             :      ae_int_t m,
   19654             :      double* bothtails,
   19655             :      double* lefttail,
   19656             :      double* righttail,
   19657             :      ae_state *_state)
   19658             : {
   19659             :     ae_int_t i;
   19660             :     double xmean;
   19661             :     double ymean;
   19662             :     double xvar;
   19663             :     double yvar;
   19664             :     ae_int_t df1;
   19665             :     ae_int_t df2;
   19666             :     double stat;
   19667             : 
   19668           0 :     *bothtails = 0;
   19669           0 :     *lefttail = 0;
   19670           0 :     *righttail = 0;
   19671             : 
   19672           0 :     if( n<=2||m<=2 )
   19673             :     {
   19674           0 :         *bothtails = 1.0;
   19675           0 :         *lefttail = 1.0;
   19676           0 :         *righttail = 1.0;
   19677           0 :         return;
   19678             :     }
   19679             :     
   19680             :     /*
   19681             :      * Mean
   19682             :      */
   19683           0 :     xmean = (double)(0);
   19684           0 :     for(i=0; i<=n-1; i++)
   19685             :     {
   19686           0 :         xmean = xmean+x->ptr.p_double[i];
   19687             :     }
   19688           0 :     xmean = xmean/n;
   19689           0 :     ymean = (double)(0);
   19690           0 :     for(i=0; i<=m-1; i++)
   19691             :     {
   19692           0 :         ymean = ymean+y->ptr.p_double[i];
   19693             :     }
   19694           0 :     ymean = ymean/m;
   19695             :     
   19696             :     /*
   19697             :      * Variance (using corrected two-pass algorithm)
   19698             :      */
   19699           0 :     xvar = (double)(0);
   19700           0 :     for(i=0; i<=n-1; i++)
   19701             :     {
   19702           0 :         xvar = xvar+ae_sqr(x->ptr.p_double[i]-xmean, _state);
   19703             :     }
   19704           0 :     xvar = xvar/(n-1);
   19705           0 :     yvar = (double)(0);
   19706           0 :     for(i=0; i<=m-1; i++)
   19707             :     {
   19708           0 :         yvar = yvar+ae_sqr(y->ptr.p_double[i]-ymean, _state);
   19709             :     }
   19710           0 :     yvar = yvar/(m-1);
   19711           0 :     if( ae_fp_eq(xvar,(double)(0))||ae_fp_eq(yvar,(double)(0)) )
   19712             :     {
   19713           0 :         *bothtails = 1.0;
   19714           0 :         *lefttail = 1.0;
   19715           0 :         *righttail = 1.0;
   19716           0 :         return;
   19717             :     }
   19718             :     
   19719             :     /*
   19720             :      * Statistic
   19721             :      */
   19722           0 :     df1 = n-1;
   19723           0 :     df2 = m-1;
   19724           0 :     stat = ae_minreal(xvar/yvar, yvar/xvar, _state);
   19725           0 :     *bothtails = 1-(fdistribution(df1, df2, 1/stat, _state)-fdistribution(df1, df2, stat, _state));
   19726           0 :     *lefttail = fdistribution(df1, df2, xvar/yvar, _state);
   19727           0 :     *righttail = 1-(*lefttail);
   19728             : }
   19729             : 
   19730             : 
   19731             : /*************************************************************************
   19732             : One-sample chi-square test
   19733             : 
   19734             : This test checks three hypotheses about the dispersion of the given sample
   19735             : The following tests are performed:
   19736             :     * two-tailed test (null hypothesis - the dispersion equals  the  given
   19737             :       number)
   19738             :     * left-tailed test (null hypothesis - the dispersion is  greater  than
   19739             :       or equal to the given number)
   19740             :     * right-tailed test (null hypothesis  -  dispersion is  less  than  or
   19741             :       equal to the given number).
   19742             : 
   19743             : Test is based on the following assumptions:
   19744             :     * the given sample has a normal distribution.
   19745             : 
   19746             : Input parameters:
   19747             :     X           -   sample 1. Array whose index goes from 0 to N-1.
   19748             :     N           -   size of the sample.
   19749             :     Variance    -   dispersion value to compare with.
   19750             : 
   19751             : Output parameters:
   19752             :     BothTails   -   p-value for two-tailed test.
   19753             :                     If BothTails is less than the given significance level
   19754             :                     the null hypothesis is rejected.
   19755             :     LeftTail    -   p-value for left-tailed test.
   19756             :                     If LeftTail is less than the given significance level,
   19757             :                     the null hypothesis is rejected.
   19758             :     RightTail   -   p-value for right-tailed test.
   19759             :                     If RightTail is less than the given significance level
   19760             :                     the null hypothesis is rejected.
   19761             : 
   19762             :   -- ALGLIB --
   19763             :      Copyright 19.09.2006 by Bochkanov Sergey
   19764             : *************************************************************************/
   19765           0 : void onesamplevariancetest(/* Real    */ ae_vector* x,
   19766             :      ae_int_t n,
   19767             :      double variance,
   19768             :      double* bothtails,
   19769             :      double* lefttail,
   19770             :      double* righttail,
   19771             :      ae_state *_state)
   19772             : {
   19773             :     ae_int_t i;
   19774             :     double xmean;
   19775             :     double xvar;
   19776             :     double s;
   19777             :     double stat;
   19778             : 
   19779           0 :     *bothtails = 0;
   19780           0 :     *lefttail = 0;
   19781           0 :     *righttail = 0;
   19782             : 
   19783           0 :     if( n<=1 )
   19784             :     {
   19785           0 :         *bothtails = 1.0;
   19786           0 :         *lefttail = 1.0;
   19787           0 :         *righttail = 1.0;
   19788           0 :         return;
   19789             :     }
   19790             :     
   19791             :     /*
   19792             :      * Mean
   19793             :      */
   19794           0 :     xmean = (double)(0);
   19795           0 :     for(i=0; i<=n-1; i++)
   19796             :     {
   19797           0 :         xmean = xmean+x->ptr.p_double[i];
   19798             :     }
   19799           0 :     xmean = xmean/n;
   19800             :     
   19801             :     /*
   19802             :      * Variance
   19803             :      */
   19804           0 :     xvar = (double)(0);
   19805           0 :     for(i=0; i<=n-1; i++)
   19806             :     {
   19807           0 :         xvar = xvar+ae_sqr(x->ptr.p_double[i]-xmean, _state);
   19808             :     }
   19809           0 :     xvar = xvar/(n-1);
   19810           0 :     if( ae_fp_eq(xvar,(double)(0)) )
   19811             :     {
   19812           0 :         *bothtails = 1.0;
   19813           0 :         *lefttail = 1.0;
   19814           0 :         *righttail = 1.0;
   19815           0 :         return;
   19816             :     }
   19817             :     
   19818             :     /*
   19819             :      * Statistic
   19820             :      */
   19821           0 :     stat = (n-1)*xvar/variance;
   19822           0 :     s = chisquaredistribution((double)(n-1), stat, _state);
   19823           0 :     *bothtails = 2*ae_minreal(s, 1-s, _state);
   19824           0 :     *lefttail = s;
   19825           0 :     *righttail = 1-(*lefttail);
   19826             : }
   19827             : 
   19828             : 
   19829             : #endif
   19830             : 
   19831             : }
   19832             : 

Generated by: LCOV version 1.16