Blame sysdeps/ieee754/ldbl-128ibm/e_j0l.c

Packit 6c4009
/* Bessel function of order zero.  IBM Extended Precision version.
Packit 6c4009
   Copyright 2001 by Stephen L. Moshier (moshier@na-net.ornl.gov).
Packit 6c4009
Packit 6c4009
   This library is free software; you can redistribute it and/or
Packit 6c4009
   modify it under the terms of the GNU Lesser General Public
Packit 6c4009
   License as published by the Free Software Foundation; either
Packit 6c4009
   version 2.1 of the License, or (at your option) any later version.
Packit 6c4009
Packit 6c4009
   This library is distributed in the hope that it will be useful,
Packit 6c4009
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 6c4009
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 6c4009
   Lesser General Public License for more details.
Packit 6c4009
Packit 6c4009
   You should have received a copy of the GNU Lesser General Public
Packit 6c4009
   License along with this library; if not, see
Packit 6c4009
   <http://www.gnu.org/licenses/>.  */
Packit 6c4009
Packit 6c4009
/* This file was copied from sysdeps/ieee754/ldbl-128/e_j0l.c.  */
Packit 6c4009
Packit 6c4009
Packit 6c4009
#include <math.h>
Packit 6c4009
#include <math_private.h>
Packit 6c4009
#include <float.h>
Packit 6c4009
Packit 6c4009
/* 1 / sqrt(pi) */
Packit 6c4009
static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L;
Packit 6c4009
/* 2 / pi */
Packit 6c4009
static const long double TWOOPI = 6.3661977236758134307553505349005744813784E-1L;
Packit 6c4009
static const long double zero = 0;
Packit 6c4009
Packit 6c4009
/* J0(x) = 1 - x^2/4 + x^2 x^2 R(x^2)
Packit 6c4009
   Peak relative error 3.4e-37
Packit 6c4009
   0 <= x <= 2  */
Packit 6c4009
#define NJ0_2N 6
Packit 6c4009
static const long double J0_2N[NJ0_2N + 1] = {
Packit 6c4009
  3.133239376997663645548490085151484674892E16L,
Packit 6c4009
 -5.479944965767990821079467311839107722107E14L,
Packit 6c4009
  6.290828903904724265980249871997551894090E12L,
Packit 6c4009
 -3.633750176832769659849028554429106299915E10L,
Packit 6c4009
  1.207743757532429576399485415069244807022E8L,
Packit 6c4009
 -2.107485999925074577174305650549367415465E5L,
Packit 6c4009
  1.562826808020631846245296572935547005859E2L,
Packit 6c4009
};
Packit 6c4009
#define NJ0_2D 6
Packit 6c4009
static const long double J0_2D[NJ0_2D + 1] = {
Packit 6c4009
  2.005273201278504733151033654496928968261E18L,
Packit 6c4009
  2.063038558793221244373123294054149790864E16L,
Packit 6c4009
  1.053350447931127971406896594022010524994E14L,
Packit 6c4009
  3.496556557558702583143527876385508882310E11L,
Packit 6c4009
  8.249114511878616075860654484367133976306E8L,
Packit 6c4009
  1.402965782449571800199759247964242790589E6L,
Packit 6c4009
  1.619910762853439600957801751815074787351E3L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2),
Packit 6c4009
   0 <= 1/x <= .0625
Packit 6c4009
   Peak relative error 3.3e-36  */
Packit 6c4009
#define NP16_IN 9
Packit 6c4009
static const long double P16_IN[NP16_IN + 1] = {
Packit 6c4009
  -1.901689868258117463979611259731176301065E-16L,
Packit 6c4009
  -1.798743043824071514483008340803573980931E-13L,
Packit 6c4009
  -6.481746687115262291873324132944647438959E-11L,
Packit 6c4009
  -1.150651553745409037257197798528294248012E-8L,
Packit 6c4009
  -1.088408467297401082271185599507222695995E-6L,
Packit 6c4009
  -5.551996725183495852661022587879817546508E-5L,
Packit 6c4009
  -1.477286941214245433866838787454880214736E-3L,
Packit 6c4009
  -1.882877976157714592017345347609200402472E-2L,
Packit 6c4009
  -9.620983176855405325086530374317855880515E-2L,
Packit 6c4009
  -1.271468546258855781530458854476627766233E-1L,
Packit 6c4009
};
Packit 6c4009
#define NP16_ID 9
Packit 6c4009
static const long double P16_ID[NP16_ID + 1] = {
Packit 6c4009
  2.704625590411544837659891569420764475007E-15L,
Packit 6c4009
  2.562526347676857624104306349421985403573E-12L,
Packit 6c4009
  9.259137589952741054108665570122085036246E-10L,
Packit 6c4009
  1.651044705794378365237454962653430805272E-7L,
Packit 6c4009
  1.573561544138733044977714063100859136660E-5L,
Packit 6c4009
  8.134482112334882274688298469629884804056E-4L,
Packit 6c4009
  2.219259239404080863919375103673593571689E-2L,
Packit 6c4009
  2.976990606226596289580242451096393862792E-1L,
Packit 6c4009
  1.713895630454693931742734911930937246254E0L,
Packit 6c4009
  3.231552290717904041465898249160757368855E0L,
Packit 6c4009
  /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
Packit 6c4009
    0.0625 <= 1/x <= 0.125
Packit 6c4009
    Peak relative error 2.4e-35  */
Packit 6c4009
#define NP8_16N 10
Packit 6c4009
static const long double P8_16N[NP8_16N + 1] = {
Packit 6c4009
  -2.335166846111159458466553806683579003632E-15L,
Packit 6c4009
  -1.382763674252402720401020004169367089975E-12L,
Packit 6c4009
  -3.192160804534716696058987967592784857907E-10L,
Packit 6c4009
  -3.744199606283752333686144670572632116899E-8L,
Packit 6c4009
  -2.439161236879511162078619292571922772224E-6L,
Packit 6c4009
  -9.068436986859420951664151060267045346549E-5L,
Packit 6c4009
  -1.905407090637058116299757292660002697359E-3L,
Packit 6c4009
  -2.164456143936718388053842376884252978872E-2L,
Packit 6c4009
  -1.212178415116411222341491717748696499966E-1L,
Packit 6c4009
  -2.782433626588541494473277445959593334494E-1L,
Packit 6c4009
  -1.670703190068873186016102289227646035035E-1L,
Packit 6c4009
};
Packit 6c4009
#define NP8_16D 10
Packit 6c4009
static const long double P8_16D[NP8_16D + 1] = {
Packit 6c4009
  3.321126181135871232648331450082662856743E-14L,
Packit 6c4009
  1.971894594837650840586859228510007703641E-11L,
Packit 6c4009
  4.571144364787008285981633719513897281690E-9L,
Packit 6c4009
  5.396419143536287457142904742849052402103E-7L,
Packit 6c4009
  3.551548222385845912370226756036899901549E-5L,
Packit 6c4009
  1.342353874566932014705609788054598013516E-3L,
Packit 6c4009
  2.899133293006771317589357444614157734385E-2L,
Packit 6c4009
  3.455374978185770197704507681491574261545E-1L,
Packit 6c4009
  2.116616964297512311314454834712634820514E0L,
Packit 6c4009
  5.850768316827915470087758636881584174432E0L,
Packit 6c4009
  5.655273858938766830855753983631132928968E0L,
Packit 6c4009
  /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
Packit 6c4009
  0.125 <= 1/x <= 0.1875
Packit 6c4009
  Peak relative error 2.7e-35  */
Packit 6c4009
#define NP5_8N 10
Packit 6c4009
static const long double P5_8N[NP5_8N + 1] = {
Packit 6c4009
  -1.270478335089770355749591358934012019596E-12L,
Packit 6c4009
  -4.007588712145412921057254992155810347245E-10L,
Packit 6c4009
  -4.815187822989597568124520080486652009281E-8L,
Packit 6c4009
  -2.867070063972764880024598300408284868021E-6L,
Packit 6c4009
  -9.218742195161302204046454768106063638006E-5L,
Packit 6c4009
  -1.635746821447052827526320629828043529997E-3L,
Packit 6c4009
  -1.570376886640308408247709616497261011707E-2L,
Packit 6c4009
  -7.656484795303305596941813361786219477807E-2L,
Packit 6c4009
  -1.659371030767513274944805479908858628053E-1L,
Packit 6c4009
  -1.185340550030955660015841796219919804915E-1L,
Packit 6c4009
  -8.920026499909994671248893388013790366712E-3L,
Packit 6c4009
};
Packit 6c4009
#define NP5_8D 9
Packit 6c4009
static const long double P5_8D[NP5_8D + 1] = {
Packit 6c4009
  1.806902521016705225778045904631543990314E-11L,
Packit 6c4009
  5.728502760243502431663549179135868966031E-9L,
Packit 6c4009
  6.938168504826004255287618819550667978450E-7L,
Packit 6c4009
  4.183769964807453250763325026573037785902E-5L,
Packit 6c4009
  1.372660678476925468014882230851637878587E-3L,
Packit 6c4009
  2.516452105242920335873286419212708961771E-2L,
Packit 6c4009
  2.550502712902647803796267951846557316182E-1L,
Packit 6c4009
  1.365861559418983216913629123778747617072E0L,
Packit 6c4009
  3.523825618308783966723472468855042541407E0L,
Packit 6c4009
  3.656365803506136165615111349150536282434E0L,
Packit 6c4009
  /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
Packit 6c4009
   Peak relative error 3.5e-35
Packit 6c4009
   0.1875 <= 1/x <= 0.25  */
Packit 6c4009
#define NP4_5N 9
Packit 6c4009
static const long double P4_5N[NP4_5N + 1] = {
Packit 6c4009
  -9.791405771694098960254468859195175708252E-10L,
Packit 6c4009
  -1.917193059944531970421626610188102836352E-7L,
Packit 6c4009
  -1.393597539508855262243816152893982002084E-5L,
Packit 6c4009
  -4.881863490846771259880606911667479860077E-4L,
Packit 6c4009
  -8.946571245022470127331892085881699269853E-3L,
Packit 6c4009
  -8.707474232568097513415336886103899434251E-2L,
Packit 6c4009
  -4.362042697474650737898551272505525973766E-1L,
Packit 6c4009
  -1.032712171267523975431451359962375617386E0L,
Packit 6c4009
  -9.630502683169895107062182070514713702346E-1L,
Packit 6c4009
  -2.251804386252969656586810309252357233320E-1L,
Packit 6c4009
};
Packit 6c4009
#define NP4_5D 9
Packit 6c4009
static const long double P4_5D[NP4_5D + 1] = {
Packit 6c4009
  1.392555487577717669739688337895791213139E-8L,
Packit 6c4009
  2.748886559120659027172816051276451376854E-6L,
Packit 6c4009
  2.024717710644378047477189849678576659290E-4L,
Packit 6c4009
  7.244868609350416002930624752604670292469E-3L,
Packit 6c4009
  1.373631762292244371102989739300382152416E-1L,
Packit 6c4009
  1.412298581400224267910294815260613240668E0L,
Packit 6c4009
  7.742495637843445079276397723849017617210E0L,
Packit 6c4009
  2.138429269198406512028307045259503811861E1L,
Packit 6c4009
  2.651547684548423476506826951831712762610E1L,
Packit 6c4009
  1.167499382465291931571685222882909166935E1L,
Packit 6c4009
  /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
Packit 6c4009
   Peak relative error 2.3e-36
Packit 6c4009
   0.25 <= 1/x <= 0.3125  */
Packit 6c4009
#define NP3r2_4N 9
Packit 6c4009
static const long double P3r2_4N[NP3r2_4N + 1] = {
Packit 6c4009
  -2.589155123706348361249809342508270121788E-8L,
Packit 6c4009
  -3.746254369796115441118148490849195516593E-6L,
Packit 6c4009
  -1.985595497390808544622893738135529701062E-4L,
Packit 6c4009
  -5.008253705202932091290132760394976551426E-3L,
Packit 6c4009
  -6.529469780539591572179155511840853077232E-2L,
Packit 6c4009
  -4.468736064761814602927408833818990271514E-1L,
Packit 6c4009
  -1.556391252586395038089729428444444823380E0L,
Packit 6c4009
  -2.533135309840530224072920725976994981638E0L,
Packit 6c4009
  -1.605509621731068453869408718565392869560E0L,
Packit 6c4009
  -2.518966692256192789269859830255724429375E-1L,
Packit 6c4009
};
Packit 6c4009
#define NP3r2_4D 9
Packit 6c4009
static const long double P3r2_4D[NP3r2_4D + 1] = {
Packit 6c4009
  3.682353957237979993646169732962573930237E-7L,
Packit 6c4009
  5.386741661883067824698973455566332102029E-5L,
Packit 6c4009
  2.906881154171822780345134853794241037053E-3L,
Packit 6c4009
  7.545832595801289519475806339863492074126E-2L,
Packit 6c4009
  1.029405357245594877344360389469584526654E0L,
Packit 6c4009
  7.565706120589873131187989560509757626725E0L,
Packit 6c4009
  2.951172890699569545357692207898667665796E1L,
Packit 6c4009
  5.785723537170311456298467310529815457536E1L,
Packit 6c4009
  5.095621464598267889126015412522773474467E1L,
Packit 6c4009
  1.602958484169953109437547474953308401442E1L,
Packit 6c4009
  /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
Packit 6c4009
   Peak relative error 1.0e-35
Packit 6c4009
   0.3125 <= 1/x <= 0.375  */
Packit 6c4009
#define NP2r7_3r2N 9
Packit 6c4009
static const long double P2r7_3r2N[NP2r7_3r2N + 1] = {
Packit 6c4009
  -1.917322340814391131073820537027234322550E-7L,
Packit 6c4009
  -1.966595744473227183846019639723259011906E-5L,
Packit 6c4009
  -7.177081163619679403212623526632690465290E-4L,
Packit 6c4009
  -1.206467373860974695661544653741899755695E-2L,
Packit 6c4009
  -1.008656452188539812154551482286328107316E-1L,
Packit 6c4009
  -4.216016116408810856620947307438823892707E-1L,
Packit 6c4009
  -8.378631013025721741744285026537009814161E-1L,
Packit 6c4009
  -6.973895635309960850033762745957946272579E-1L,
Packit 6c4009
  -1.797864718878320770670740413285763554812E-1L,
Packit 6c4009
  -4.098025357743657347681137871388402849581E-3L,
Packit 6c4009
};
Packit 6c4009
#define NP2r7_3r2D 8
Packit 6c4009
static const long double P2r7_3r2D[NP2r7_3r2D + 1] = {
Packit 6c4009
  2.726858489303036441686496086962545034018E-6L,
Packit 6c4009
  2.840430827557109238386808968234848081424E-4L,
Packit 6c4009
  1.063826772041781947891481054529454088832E-2L,
Packit 6c4009
  1.864775537138364773178044431045514405468E-1L,
Packit 6c4009
  1.665660052857205170440952607701728254211E0L,
Packit 6c4009
  7.723745889544331153080842168958348568395E0L,
Packit 6c4009
  1.810726427571829798856428548102077799835E1L,
Packit 6c4009
  1.986460672157794440666187503833545388527E1L,
Packit 6c4009
  8.645503204552282306364296517220055815488E0L,
Packit 6c4009
  /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
Packit 6c4009
   Peak relative error 1.3e-36
Packit 6c4009
   0.3125 <= 1/x <= 0.4375  */
Packit 6c4009
#define NP2r3_2r7N 9
Packit 6c4009
static const long double P2r3_2r7N[NP2r3_2r7N + 1] = {
Packit 6c4009
  -1.594642785584856746358609622003310312622E-6L,
Packit 6c4009
  -1.323238196302221554194031733595194539794E-4L,
Packit 6c4009
  -3.856087818696874802689922536987100372345E-3L,
Packit 6c4009
  -5.113241710697777193011470733601522047399E-2L,
Packit 6c4009
  -3.334229537209911914449990372942022350558E-1L,
Packit 6c4009
  -1.075703518198127096179198549659283422832E0L,
Packit 6c4009
  -1.634174803414062725476343124267110981807E0L,
Packit 6c4009
  -1.030133247434119595616826842367268304880E0L,
Packit 6c4009
  -1.989811539080358501229347481000707289391E-1L,
Packit 6c4009
  -3.246859189246653459359775001466924610236E-3L,
Packit 6c4009
};
Packit 6c4009
#define NP2r3_2r7D 8
Packit 6c4009
static const long double P2r3_2r7D[NP2r3_2r7D + 1] = {
Packit 6c4009
  2.267936634217251403663034189684284173018E-5L,
Packit 6c4009
  1.918112982168673386858072491437971732237E-3L,
Packit 6c4009
  5.771704085468423159125856786653868219522E-2L,
Packit 6c4009
  8.056124451167969333717642810661498890507E-1L,
Packit 6c4009
  5.687897967531010276788680634413789328776E0L,
Packit 6c4009
  2.072596760717695491085444438270778394421E1L,
Packit 6c4009
  3.801722099819929988585197088613160496684E1L,
Packit 6c4009
  3.254620235902912339534998592085115836829E1L,
Packit 6c4009
  1.104847772130720331801884344645060675036E1L,
Packit 6c4009
  /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* J0(x)cosX + Y0(x)sinX = sqrt( 2/(pi x)) P0(x), P0(x) = 1 + 1/x^2 R(1/x^2)
Packit 6c4009
   Peak relative error 1.2e-35
Packit 6c4009
   0.4375 <= 1/x <= 0.5  */
Packit 6c4009
#define NP2_2r3N 8
Packit 6c4009
static const long double P2_2r3N[NP2_2r3N + 1] = {
Packit 6c4009
  -1.001042324337684297465071506097365389123E-4L,
Packit 6c4009
  -6.289034524673365824853547252689991418981E-3L,
Packit 6c4009
  -1.346527918018624234373664526930736205806E-1L,
Packit 6c4009
  -1.268808313614288355444506172560463315102E0L,
Packit 6c4009
  -5.654126123607146048354132115649177406163E0L,
Packit 6c4009
  -1.186649511267312652171775803270911971693E1L,
Packit 6c4009
  -1.094032424931998612551588246779200724257E1L,
Packit 6c4009
  -3.728792136814520055025256353193674625267E0L,
Packit 6c4009
  -3.000348318524471807839934764596331810608E-1L,
Packit 6c4009
};
Packit 6c4009
#define NP2_2r3D 8
Packit 6c4009
static const long double P2_2r3D[NP2_2r3D + 1] = {
Packit 6c4009
  1.423705538269770974803901422532055612980E-3L,
Packit 6c4009
  9.171476630091439978533535167485230575894E-2L,
Packit 6c4009
  2.049776318166637248868444600215942828537E0L,
Packit 6c4009
  2.068970329743769804547326701946144899583E1L,
Packit 6c4009
  1.025103500560831035592731539565060347709E2L,
Packit 6c4009
  2.528088049697570728252145557167066708284E2L,
Packit 6c4009
  2.992160327587558573740271294804830114205E2L,
Packit 6c4009
  1.540193761146551025832707739468679973036E2L,
Packit 6c4009
  2.779516701986912132637672140709452502650E1L,
Packit 6c4009
  /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
Packit 6c4009
   Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
Packit 6c4009
   Peak relative error 2.2e-35
Packit 6c4009
   0 <= 1/x <= .0625  */
Packit 6c4009
#define NQ16_IN 10
Packit 6c4009
static const long double Q16_IN[NQ16_IN + 1] = {
Packit 6c4009
  2.343640834407975740545326632205999437469E-18L,
Packit 6c4009
  2.667978112927811452221176781536278257448E-15L,
Packit 6c4009
  1.178415018484555397390098879501969116536E-12L,
Packit 6c4009
  2.622049767502719728905924701288614016597E-10L,
Packit 6c4009
  3.196908059607618864801313380896308968673E-8L,
Packit 6c4009
  2.179466154171673958770030655199434798494E-6L,
Packit 6c4009
  8.139959091628545225221976413795645177291E-5L,
Packit 6c4009
  1.563900725721039825236927137885747138654E-3L,
Packit 6c4009
  1.355172364265825167113562519307194840307E-2L,
Packit 6c4009
  3.928058355906967977269780046844768588532E-2L,
Packit 6c4009
  1.107891967702173292405380993183694932208E-2L,
Packit 6c4009
};
Packit 6c4009
#define NQ16_ID 9
Packit 6c4009
static const long double Q16_ID[NQ16_ID + 1] = {
Packit 6c4009
  3.199850952578356211091219295199301766718E-17L,
Packit 6c4009
  3.652601488020654842194486058637953363918E-14L,
Packit 6c4009
  1.620179741394865258354608590461839031281E-11L,
Packit 6c4009
  3.629359209474609630056463248923684371426E-9L,
Packit 6c4009
  4.473680923894354600193264347733477363305E-7L,
Packit 6c4009
  3.106368086644715743265603656011050476736E-5L,
Packit 6c4009
  1.198239259946770604954664925153424252622E-3L,
Packit 6c4009
  2.446041004004283102372887804475767568272E-2L,
Packit 6c4009
  2.403235525011860603014707768815113698768E-1L,
Packit 6c4009
  9.491006790682158612266270665136910927149E-1L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
 };
Packit 6c4009
Packit 6c4009
/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
Packit 6c4009
   Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
Packit 6c4009
   Peak relative error 5.1e-36
Packit 6c4009
   0.0625 <= 1/x <= 0.125  */
Packit 6c4009
#define NQ8_16N 11
Packit 6c4009
static const long double Q8_16N[NQ8_16N + 1] = {
Packit 6c4009
  1.001954266485599464105669390693597125904E-17L,
Packit 6c4009
  7.545499865295034556206475956620160007849E-15L,
Packit 6c4009
  2.267838684785673931024792538193202559922E-12L,
Packit 6c4009
  3.561909705814420373609574999542459912419E-10L,
Packit 6c4009
  3.216201422768092505214730633842924944671E-8L,
Packit 6c4009
  1.731194793857907454569364622452058554314E-6L,
Packit 6c4009
  5.576944613034537050396518509871004586039E-5L,
Packit 6c4009
  1.051787760316848982655967052985391418146E-3L,
Packit 6c4009
  1.102852974036687441600678598019883746959E-2L,
Packit 6c4009
  5.834647019292460494254225988766702933571E-2L,
Packit 6c4009
  1.290281921604364618912425380717127576529E-1L,
Packit 6c4009
  7.598886310387075708640370806458926458301E-2L,
Packit 6c4009
};
Packit 6c4009
#define NQ8_16D 11
Packit 6c4009
static const long double Q8_16D[NQ8_16D + 1] = {
Packit 6c4009
  1.368001558508338469503329967729951830843E-16L,
Packit 6c4009
  1.034454121857542147020549303317348297289E-13L,
Packit 6c4009
  3.128109209247090744354764050629381674436E-11L,
Packit 6c4009
  4.957795214328501986562102573522064468671E-9L,
Packit 6c4009
  4.537872468606711261992676606899273588899E-7L,
Packit 6c4009
  2.493639207101727713192687060517509774182E-5L,
Packit 6c4009
  8.294957278145328349785532236663051405805E-4L,
Packit 6c4009
  1.646471258966713577374948205279380115839E-2L,
Packit 6c4009
  1.878910092770966718491814497982191447073E-1L,
Packit 6c4009
  1.152641605706170353727903052525652504075E0L,
Packit 6c4009
  3.383550240669773485412333679367792932235E0L,
Packit 6c4009
  3.823875252882035706910024716609908473970E0L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
Packit 6c4009
   Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
Packit 6c4009
   Peak relative error 3.9e-35
Packit 6c4009
   0.125 <= 1/x <= 0.1875  */
Packit 6c4009
#define NQ5_8N 10
Packit 6c4009
static const long double Q5_8N[NQ5_8N + 1] = {
Packit 6c4009
  1.750399094021293722243426623211733898747E-13L,
Packit 6c4009
  6.483426211748008735242909236490115050294E-11L,
Packit 6c4009
  9.279430665656575457141747875716899958373E-9L,
Packit 6c4009
  6.696634968526907231258534757736576340266E-7L,
Packit 6c4009
  2.666560823798895649685231292142838188061E-5L,
Packit 6c4009
  6.025087697259436271271562769707550594540E-4L,
Packit 6c4009
  7.652807734168613251901945778921336353485E-3L,
Packit 6c4009
  5.226269002589406461622551452343519078905E-2L,
Packit 6c4009
  1.748390159751117658969324896330142895079E-1L,
Packit 6c4009
  2.378188719097006494782174902213083589660E-1L,
Packit 6c4009
  8.383984859679804095463699702165659216831E-2L,
Packit 6c4009
};
Packit 6c4009
#define NQ5_8D 10
Packit 6c4009
static const long double Q5_8D[NQ5_8D + 1] = {
Packit 6c4009
  2.389878229704327939008104855942987615715E-12L,
Packit 6c4009
  8.926142817142546018703814194987786425099E-10L,
Packit 6c4009
  1.294065862406745901206588525833274399038E-7L,
Packit 6c4009
  9.524139899457666250828752185212769682191E-6L,
Packit 6c4009
  3.908332488377770886091936221573123353489E-4L,
Packit 6c4009
  9.250427033957236609624199884089916836748E-3L,
Packit 6c4009
  1.263420066165922645975830877751588421451E-1L,
Packit 6c4009
  9.692527053860420229711317379861733180654E-1L,
Packit 6c4009
  3.937813834630430172221329298841520707954E0L,
Packit 6c4009
  7.603126427436356534498908111445191312181E0L,
Packit 6c4009
  5.670677653334105479259958485084550934305E0L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
Packit 6c4009
   Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
Packit 6c4009
   Peak relative error 3.2e-35
Packit 6c4009
   0.1875 <= 1/x <= 0.25  */
Packit 6c4009
#define NQ4_5N 10
Packit 6c4009
static const long double Q4_5N[NQ4_5N + 1] = {
Packit 6c4009
  2.233870042925895644234072357400122854086E-11L,
Packit 6c4009
  5.146223225761993222808463878999151699792E-9L,
Packit 6c4009
  4.459114531468296461688753521109797474523E-7L,
Packit 6c4009
  1.891397692931537975547242165291668056276E-5L,
Packit 6c4009
  4.279519145911541776938964806470674565504E-4L,
Packit 6c4009
  5.275239415656560634702073291768904783989E-3L,
Packit 6c4009
  3.468698403240744801278238473898432608887E-2L,
Packit 6c4009
  1.138773146337708415188856882915457888274E-1L,
Packit 6c4009
  1.622717518946443013587108598334636458955E-1L,
Packit 6c4009
  7.249040006390586123760992346453034628227E-2L,
Packit 6c4009
  1.941595365256460232175236758506411486667E-3L,
Packit 6c4009
};
Packit 6c4009
#define NQ4_5D 9
Packit 6c4009
static const long double Q4_5D[NQ4_5D + 1] = {
Packit 6c4009
  3.049977232266999249626430127217988047453E-10L,
Packit 6c4009
  7.120883230531035857746096928889676144099E-8L,
Packit 6c4009
  6.301786064753734446784637919554359588859E-6L,
Packit 6c4009
  2.762010530095069598480766869426308077192E-4L,
Packit 6c4009
  6.572163250572867859316828886203406361251E-3L,
Packit 6c4009
  8.752566114841221958200215255461843397776E-2L,
Packit 6c4009
  6.487654992874805093499285311075289932664E-1L,
Packit 6c4009
  2.576550017826654579451615283022812801435E0L,
Packit 6c4009
  5.056392229924022835364779562707348096036E0L,
Packit 6c4009
  4.179770081068251464907531367859072157773E0L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
Packit 6c4009
   Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
Packit 6c4009
   Peak relative error 1.4e-36
Packit 6c4009
   0.25 <= 1/x <= 0.3125  */
Packit 6c4009
#define NQ3r2_4N 10
Packit 6c4009
static const long double Q3r2_4N[NQ3r2_4N + 1] = {
Packit 6c4009
  6.126167301024815034423262653066023684411E-10L,
Packit 6c4009
  1.043969327113173261820028225053598975128E-7L,
Packit 6c4009
  6.592927270288697027757438170153763220190E-6L,
Packit 6c4009
  2.009103660938497963095652951912071336730E-4L,
Packit 6c4009
  3.220543385492643525985862356352195896964E-3L,
Packit 6c4009
  2.774405975730545157543417650436941650990E-2L,
Packit 6c4009
  1.258114008023826384487378016636555041129E-1L,
Packit 6c4009
  2.811724258266902502344701449984698323860E-1L,
Packit 6c4009
  2.691837665193548059322831687432415014067E-1L,
Packit 6c4009
  7.949087384900985370683770525312735605034E-2L,
Packit 6c4009
  1.229509543620976530030153018986910810747E-3L,
Packit 6c4009
};
Packit 6c4009
#define NQ3r2_4D 9
Packit 6c4009
static const long double Q3r2_4D[NQ3r2_4D + 1] = {
Packit 6c4009
  8.364260446128475461539941389210166156568E-9L,
Packit 6c4009
  1.451301850638956578622154585560759862764E-6L,
Packit 6c4009
  9.431830010924603664244578867057141839463E-5L,
Packit 6c4009
  3.004105101667433434196388593004526182741E-3L,
Packit 6c4009
  5.148157397848271739710011717102773780221E-2L,
Packit 6c4009
  4.901089301726939576055285374953887874895E-1L,
Packit 6c4009
  2.581760991981709901216967665934142240346E0L,
Packit 6c4009
  7.257105880775059281391729708630912791847E0L,
Packit 6c4009
  1.006014717326362868007913423810737369312E1L,
Packit 6c4009
  5.879416600465399514404064187445293212470E0L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0*/
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
Packit 6c4009
   Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
Packit 6c4009
   Peak relative error 3.8e-36
Packit 6c4009
   0.3125 <= 1/x <= 0.375  */
Packit 6c4009
#define NQ2r7_3r2N 9
Packit 6c4009
static const long double Q2r7_3r2N[NQ2r7_3r2N + 1] = {
Packit 6c4009
  7.584861620402450302063691901886141875454E-8L,
Packit 6c4009
  9.300939338814216296064659459966041794591E-6L,
Packit 6c4009
  4.112108906197521696032158235392604947895E-4L,
Packit 6c4009
  8.515168851578898791897038357239630654431E-3L,
Packit 6c4009
  8.971286321017307400142720556749573229058E-2L,
Packit 6c4009
  4.885856732902956303343015636331874194498E-1L,
Packit 6c4009
  1.334506268733103291656253500506406045846E0L,
Packit 6c4009
  1.681207956863028164179042145803851824654E0L,
Packit 6c4009
  8.165042692571721959157677701625853772271E-1L,
Packit 6c4009
  9.805848115375053300608712721986235900715E-2L,
Packit 6c4009
};
Packit 6c4009
#define NQ2r7_3r2D 9
Packit 6c4009
static const long double Q2r7_3r2D[NQ2r7_3r2D + 1] = {
Packit 6c4009
  1.035586492113036586458163971239438078160E-6L,
Packit 6c4009
  1.301999337731768381683593636500979713689E-4L,
Packit 6c4009
  5.993695702564527062553071126719088859654E-3L,
Packit 6c4009
  1.321184892887881883489141186815457808785E-1L,
Packit 6c4009
  1.528766555485015021144963194165165083312E0L,
Packit 6c4009
  9.561463309176490874525827051566494939295E0L,
Packit 6c4009
  3.203719484883967351729513662089163356911E1L,
Packit 6c4009
  5.497294687660930446641539152123568668447E1L,
Packit 6c4009
  4.391158169390578768508675452986948391118E1L,
Packit 6c4009
  1.347836630730048077907818943625789418378E1L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
Packit 6c4009
   Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
Packit 6c4009
   Peak relative error 2.2e-35
Packit 6c4009
   0.375 <= 1/x <= 0.4375  */
Packit 6c4009
#define NQ2r3_2r7N 9
Packit 6c4009
static const long double Q2r3_2r7N[NQ2r3_2r7N + 1] = {
Packit 6c4009
  4.455027774980750211349941766420190722088E-7L,
Packit 6c4009
  4.031998274578520170631601850866780366466E-5L,
Packit 6c4009
  1.273987274325947007856695677491340636339E-3L,
Packit 6c4009
  1.818754543377448509897226554179659122873E-2L,
Packit 6c4009
  1.266748858326568264126353051352269875352E-1L,
Packit 6c4009
  4.327578594728723821137731555139472880414E-1L,
Packit 6c4009
  6.892532471436503074928194969154192615359E-1L,
Packit 6c4009
  4.490775818438716873422163588640262036506E-1L,
Packit 6c4009
  8.649615949297322440032000346117031581572E-2L,
Packit 6c4009
  7.261345286655345047417257611469066147561E-4L,
Packit 6c4009
};
Packit 6c4009
#define NQ2r3_2r7D 8
Packit 6c4009
static const long double Q2r3_2r7D[NQ2r3_2r7D + 1] = {
Packit 6c4009
  6.082600739680555266312417978064954793142E-6L,
Packit 6c4009
  5.693622538165494742945717226571441747567E-4L,
Packit 6c4009
  1.901625907009092204458328768129666975975E-2L,
Packit 6c4009
  2.958689532697857335456896889409923371570E-1L,
Packit 6c4009
  2.343124711045660081603809437993368799568E0L,
Packit 6c4009
  9.665894032187458293568704885528192804376E0L,
Packit 6c4009
  2.035273104990617136065743426322454881353E1L,
Packit 6c4009
  2.044102010478792896815088858740075165531E1L,
Packit 6c4009
  8.445937177863155827844146643468706599304E0L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* Y0(x)cosX - J0(x)sinX = sqrt( 2/(pi x)) Q0(x),
Packit 6c4009
   Q0(x) = 1/x (-.125 + 1/x^2 R(1/x^2))
Packit 6c4009
   Peak relative error 3.1e-36
Packit 6c4009
   0.4375 <= 1/x <= 0.5  */
Packit 6c4009
#define NQ2_2r3N 9
Packit 6c4009
static const long double Q2_2r3N[NQ2_2r3N + 1] = {
Packit 6c4009
  2.817566786579768804844367382809101929314E-6L,
Packit 6c4009
  2.122772176396691634147024348373539744935E-4L,
Packit 6c4009
  5.501378031780457828919593905395747517585E-3L,
Packit 6c4009
  6.355374424341762686099147452020466524659E-2L,
Packit 6c4009
  3.539652320122661637429658698954748337223E-1L,
Packit 6c4009
  9.571721066119617436343740541777014319695E-1L,
Packit 6c4009
  1.196258777828426399432550698612171955305E0L,
Packit 6c4009
  6.069388659458926158392384709893753793967E-1L,
Packit 6c4009
  9.026746127269713176512359976978248763621E-2L,
Packit 6c4009
  5.317668723070450235320878117210807236375E-4L,
Packit 6c4009
};
Packit 6c4009
#define NQ2_2r3D 8
Packit 6c4009
static const long double Q2_2r3D[NQ2_2r3D + 1] = {
Packit 6c4009
  3.846924354014260866793741072933159380158E-5L,
Packit 6c4009
  3.017562820057704325510067178327449946763E-3L,
Packit 6c4009
  8.356305620686867949798885808540444210935E-2L,
Packit 6c4009
  1.068314930499906838814019619594424586273E0L,
Packit 6c4009
  6.900279623894821067017966573640732685233E0L,
Packit 6c4009
  2.307667390886377924509090271780839563141E1L,
Packit 6c4009
  3.921043465412723970791036825401273528513E1L,
Packit 6c4009
  3.167569478939719383241775717095729233436E1L,
Packit 6c4009
  1.051023841699200920276198346301543665909E1L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0*/
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
Packit 6c4009
/* Evaluate P[n] x^n  +  P[n-1] x^(n-1)  +  ...  +  P[0] */
Packit 6c4009
Packit 6c4009
static long double
Packit 6c4009
neval (long double x, const long double *p, int n)
Packit 6c4009
{
Packit 6c4009
  long double y;
Packit 6c4009
Packit 6c4009
  p += n;
Packit 6c4009
  y = *p--;
Packit 6c4009
  do
Packit 6c4009
    {
Packit 6c4009
      y = y * x + *p--;
Packit 6c4009
    }
Packit 6c4009
  while (--n > 0);
Packit 6c4009
  return y;
Packit 6c4009
}
Packit 6c4009
Packit 6c4009
Packit 6c4009
/* Evaluate x^n+1  +  P[n] x^(n)  +  P[n-1] x^(n-1)  +  ...  +  P[0] */
Packit 6c4009
Packit 6c4009
static long double
Packit 6c4009
deval (long double x, const long double *p, int n)
Packit 6c4009
{
Packit 6c4009
  long double y;
Packit 6c4009
Packit 6c4009
  p += n;
Packit 6c4009
  y = x + *p--;
Packit 6c4009
  do
Packit 6c4009
    {
Packit 6c4009
      y = y * x + *p--;
Packit 6c4009
    }
Packit 6c4009
  while (--n > 0);
Packit 6c4009
  return y;
Packit 6c4009
}
Packit 6c4009
Packit 6c4009
Packit 6c4009
/* Bessel function of the first kind, order zero.  */
Packit 6c4009
Packit 6c4009
long double
Packit 6c4009
__ieee754_j0l (long double x)
Packit 6c4009
{
Packit 6c4009
  long double xx, xinv, z, p, q, c, s, cc, ss;
Packit 6c4009
Packit 6c4009
  if (! isfinite (x))
Packit 6c4009
    {
Packit 6c4009
      if (x != x)
Packit 6c4009
	return x + x;
Packit 6c4009
      else
Packit 6c4009
	return 0;
Packit 6c4009
    }
Packit 6c4009
  if (x == 0)
Packit 6c4009
    return 1;
Packit 6c4009
Packit 6c4009
  xx = fabsl (x);
Packit 6c4009
  if (xx <= 2)
Packit 6c4009
    {
Packit 6c4009
      if (xx < 0x1p-57L)
Packit 6c4009
	return 1;
Packit 6c4009
      /* 0 <= x <= 2 */
Packit 6c4009
      z = xx * xx;
Packit 6c4009
      p = z * z * neval (z, J0_2N, NJ0_2N) / deval (z, J0_2D, NJ0_2D);
Packit 6c4009
      p -= 0.25L * z;
Packit 6c4009
      p += 1;
Packit 6c4009
      return p;
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  /* X = x - pi/4
Packit 6c4009
     cos(X) = cos(x) cos(pi/4) + sin(x) sin(pi/4)
Packit 6c4009
     = 1/sqrt(2) * (cos(x) + sin(x))
Packit 6c4009
     sin(X) = sin(x) cos(pi/4) - cos(x) sin(pi/4)
Packit 6c4009
     = 1/sqrt(2) * (sin(x) - cos(x))
Packit 6c4009
     sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
Packit 6c4009
     cf. Fdlibm.  */
Packit 6c4009
  __sincosl (xx, &s, &c);
Packit 6c4009
  ss = s - c;
Packit 6c4009
  cc = s + c;
Packit 6c4009
  if (xx <= LDBL_MAX / 2)
Packit 6c4009
    {
Packit 6c4009
      z = -__cosl (xx + xx);
Packit 6c4009
      if ((s * c) < 0)
Packit 6c4009
	cc = z / ss;
Packit 6c4009
      else
Packit 6c4009
	ss = z / cc;
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  if (xx > 0x1p256L)
Packit 6c4009
    return ONEOSQPI * cc / sqrtl (xx);
Packit 6c4009
Packit 6c4009
  xinv = 1 / xx;
Packit 6c4009
  z = xinv * xinv;
Packit 6c4009
  if (xinv <= 0.25)
Packit 6c4009
    {
Packit 6c4009
      if (xinv <= 0.125)
Packit 6c4009
	{
Packit 6c4009
	  if (xinv <= 0.0625)
Packit 6c4009
	    {
Packit 6c4009
	      p = neval (z, P16_IN, NP16_IN) / deval (z, P16_ID, NP16_ID);
Packit 6c4009
	      q = neval (z, Q16_IN, NQ16_IN) / deval (z, Q16_ID, NQ16_ID);
Packit 6c4009
	    }
Packit 6c4009
	  else
Packit 6c4009
	    {
Packit 6c4009
	      p = neval (z, P8_16N, NP8_16N) / deval (z, P8_16D, NP8_16D);
Packit 6c4009
	      q = neval (z, Q8_16N, NQ8_16N) / deval (z, Q8_16D, NQ8_16D);
Packit 6c4009
	    }
Packit 6c4009
	}
Packit 6c4009
      else if (xinv <= 0.1875)
Packit 6c4009
	{
Packit 6c4009
	  p = neval (z, P5_8N, NP5_8N) / deval (z, P5_8D, NP5_8D);
Packit 6c4009
	  q = neval (z, Q5_8N, NQ5_8N) / deval (z, Q5_8D, NQ5_8D);
Packit 6c4009
	}
Packit 6c4009
      else
Packit 6c4009
	{
Packit 6c4009
	  p = neval (z, P4_5N, NP4_5N) / deval (z, P4_5D, NP4_5D);
Packit 6c4009
	  q = neval (z, Q4_5N, NQ4_5N) / deval (z, Q4_5D, NQ4_5D);
Packit 6c4009
	}
Packit 6c4009
    }				/* .25 */
Packit 6c4009
  else /* if (xinv <= 0.5) */
Packit 6c4009
    {
Packit 6c4009
      if (xinv <= 0.375)
Packit 6c4009
	{
Packit 6c4009
	  if (xinv <= 0.3125)
Packit 6c4009
	    {
Packit 6c4009
	      p = neval (z, P3r2_4N, NP3r2_4N) / deval (z, P3r2_4D, NP3r2_4D);
Packit 6c4009
	      q = neval (z, Q3r2_4N, NQ3r2_4N) / deval (z, Q3r2_4D, NQ3r2_4D);
Packit 6c4009
	    }
Packit 6c4009
	  else
Packit 6c4009
	    {
Packit 6c4009
	      p = neval (z, P2r7_3r2N, NP2r7_3r2N)
Packit 6c4009
		  / deval (z, P2r7_3r2D, NP2r7_3r2D);
Packit 6c4009
	      q = neval (z, Q2r7_3r2N, NQ2r7_3r2N)
Packit 6c4009
		  / deval (z, Q2r7_3r2D, NQ2r7_3r2D);
Packit 6c4009
	    }
Packit 6c4009
	}
Packit 6c4009
      else if (xinv <= 0.4375)
Packit 6c4009
	{
Packit 6c4009
	  p = neval (z, P2r3_2r7N, NP2r3_2r7N)
Packit 6c4009
	      / deval (z, P2r3_2r7D, NP2r3_2r7D);
Packit 6c4009
	  q = neval (z, Q2r3_2r7N, NQ2r3_2r7N)
Packit 6c4009
	      / deval (z, Q2r3_2r7D, NQ2r3_2r7D);
Packit 6c4009
	}
Packit 6c4009
      else
Packit 6c4009
	{
Packit 6c4009
	  p = neval (z, P2_2r3N, NP2_2r3N) / deval (z, P2_2r3D, NP2_2r3D);
Packit 6c4009
	  q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D);
Packit 6c4009
	}
Packit 6c4009
    }
Packit 6c4009
  p = 1 + z * p;
Packit 6c4009
  q = z * xinv * q;
Packit 6c4009
  q = q - 0.125L * xinv;
Packit 6c4009
  z = ONEOSQPI * (p * cc - q * ss) / sqrtl (xx);
Packit 6c4009
  return z;
Packit 6c4009
}
Packit 6c4009
strong_alias (__ieee754_j0l, __j0l_finite)
Packit 6c4009
Packit 6c4009
Packit 6c4009
/* Y0(x) = 2/pi * log(x) * J0(x) + R(x^2)
Packit 6c4009
   Peak absolute error 1.7e-36 (relative where Y0 > 1)
Packit 6c4009
   0 <= x <= 2   */
Packit 6c4009
#define NY0_2N 7
Packit 6c4009
static const long double Y0_2N[NY0_2N + 1] = {
Packit 6c4009
 -1.062023609591350692692296993537002558155E19L,
Packit 6c4009
  2.542000883190248639104127452714966858866E19L,
Packit 6c4009
 -1.984190771278515324281415820316054696545E18L,
Packit 6c4009
  4.982586044371592942465373274440222033891E16L,
Packit 6c4009
 -5.529326354780295177243773419090123407550E14L,
Packit 6c4009
  3.013431465522152289279088265336861140391E12L,
Packit 6c4009
 -7.959436160727126750732203098982718347785E9L,
Packit 6c4009
  8.230845651379566339707130644134372793322E6L,
Packit 6c4009
};
Packit 6c4009
#define NY0_2D 7
Packit 6c4009
static const long double Y0_2D[NY0_2D + 1] = {
Packit 6c4009
  1.438972634353286978700329883122253752192E20L,
Packit 6c4009
  1.856409101981569254247700169486907405500E18L,
Packit 6c4009
  1.219693352678218589553725579802986255614E16L,
Packit 6c4009
  5.389428943282838648918475915779958097958E13L,
Packit 6c4009
  1.774125762108874864433872173544743051653E11L,
Packit 6c4009
  4.522104832545149534808218252434693007036E8L,
Packit 6c4009
  8.872187401232943927082914504125234454930E5L,
Packit 6c4009
  1.251945613186787532055610876304669413955E3L,
Packit 6c4009
 /* 1.000000000000000000000000000000000000000E0 */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
static const long double U0 = -7.3804295108687225274343927948483016310862e-02L;
Packit 6c4009
Packit 6c4009
/* Bessel function of the second kind, order zero.  */
Packit 6c4009
Packit 6c4009
long double
Packit 6c4009
 __ieee754_y0l(long double x)
Packit 6c4009
{
Packit 6c4009
  long double xx, xinv, z, p, q, c, s, cc, ss;
Packit 6c4009
Packit 6c4009
  if (! isfinite (x))
Packit 6c4009
    return 1 / (x + x * x);
Packit 6c4009
  if (x <= 0)
Packit 6c4009
    {
Packit 6c4009
      if (x < 0)
Packit 6c4009
	return (zero / (zero * x));
Packit 6c4009
      return -1 / zero; /* -inf and divide by zero exception.  */
Packit 6c4009
    }
Packit 6c4009
  xx = fabsl (x);
Packit 6c4009
  if (xx <= 0x1p-57)
Packit 6c4009
    return U0 + TWOOPI * __ieee754_logl (x);
Packit 6c4009
  if (xx <= 2)
Packit 6c4009
    {
Packit 6c4009
      /* 0 <= x <= 2 */
Packit 6c4009
      z = xx * xx;
Packit 6c4009
      p = neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D);
Packit 6c4009
      p = TWOOPI * __ieee754_logl (x) * __ieee754_j0l (x) + p;
Packit 6c4009
      return p;
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  /* X = x - pi/4
Packit 6c4009
     cos(X) = cos(x) cos(pi/4) + sin(x) sin(pi/4)
Packit 6c4009
     = 1/sqrt(2) * (cos(x) + sin(x))
Packit 6c4009
     sin(X) = sin(x) cos(pi/4) - cos(x) sin(pi/4)
Packit 6c4009
     = 1/sqrt(2) * (sin(x) - cos(x))
Packit 6c4009
     sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
Packit 6c4009
     cf. Fdlibm.  */
Packit 6c4009
  __sincosl (x, &s, &c);
Packit 6c4009
  ss = s - c;
Packit 6c4009
  cc = s + c;
Packit 6c4009
  if (xx <= LDBL_MAX / 2)
Packit 6c4009
    {
Packit 6c4009
      z = -__cosl (x + x);
Packit 6c4009
      if ((s * c) < 0)
Packit 6c4009
	cc = z / ss;
Packit 6c4009
      else
Packit 6c4009
	ss = z / cc;
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  if (xx > 0x1p256L)
Packit 6c4009
    return ONEOSQPI * ss / sqrtl (x);
Packit 6c4009
Packit 6c4009
  xinv = 1 / xx;
Packit 6c4009
  z = xinv * xinv;
Packit 6c4009
  if (xinv <= 0.25)
Packit 6c4009
    {
Packit 6c4009
      if (xinv <= 0.125)
Packit 6c4009
	{
Packit 6c4009
	  if (xinv <= 0.0625)
Packit 6c4009
	    {
Packit 6c4009
	      p = neval (z, P16_IN, NP16_IN) / deval (z, P16_ID, NP16_ID);
Packit 6c4009
	      q = neval (z, Q16_IN, NQ16_IN) / deval (z, Q16_ID, NQ16_ID);
Packit 6c4009
	    }
Packit 6c4009
	  else
Packit 6c4009
	    {
Packit 6c4009
	      p = neval (z, P8_16N, NP8_16N) / deval (z, P8_16D, NP8_16D);
Packit 6c4009
	      q = neval (z, Q8_16N, NQ8_16N) / deval (z, Q8_16D, NQ8_16D);
Packit 6c4009
	    }
Packit 6c4009
	}
Packit 6c4009
      else if (xinv <= 0.1875)
Packit 6c4009
	{
Packit 6c4009
	  p = neval (z, P5_8N, NP5_8N) / deval (z, P5_8D, NP5_8D);
Packit 6c4009
	  q = neval (z, Q5_8N, NQ5_8N) / deval (z, Q5_8D, NQ5_8D);
Packit 6c4009
	}
Packit 6c4009
      else
Packit 6c4009
	{
Packit 6c4009
	  p = neval (z, P4_5N, NP4_5N) / deval (z, P4_5D, NP4_5D);
Packit 6c4009
	  q = neval (z, Q4_5N, NQ4_5N) / deval (z, Q4_5D, NQ4_5D);
Packit 6c4009
	}
Packit 6c4009
    }				/* .25 */
Packit 6c4009
  else /* if (xinv <= 0.5) */
Packit 6c4009
    {
Packit 6c4009
      if (xinv <= 0.375)
Packit 6c4009
	{
Packit 6c4009
	  if (xinv <= 0.3125)
Packit 6c4009
	    {
Packit 6c4009
	      p = neval (z, P3r2_4N, NP3r2_4N) / deval (z, P3r2_4D, NP3r2_4D);
Packit 6c4009
	      q = neval (z, Q3r2_4N, NQ3r2_4N) / deval (z, Q3r2_4D, NQ3r2_4D);
Packit 6c4009
	    }
Packit 6c4009
	  else
Packit 6c4009
	    {
Packit 6c4009
	      p = neval (z, P2r7_3r2N, NP2r7_3r2N)
Packit 6c4009
		  / deval (z, P2r7_3r2D, NP2r7_3r2D);
Packit 6c4009
	      q = neval (z, Q2r7_3r2N, NQ2r7_3r2N)
Packit 6c4009
		  / deval (z, Q2r7_3r2D, NQ2r7_3r2D);
Packit 6c4009
	    }
Packit 6c4009
	}
Packit 6c4009
      else if (xinv <= 0.4375)
Packit 6c4009
	{
Packit 6c4009
	  p = neval (z, P2r3_2r7N, NP2r3_2r7N)
Packit 6c4009
	      / deval (z, P2r3_2r7D, NP2r3_2r7D);
Packit 6c4009
	  q = neval (z, Q2r3_2r7N, NQ2r3_2r7N)
Packit 6c4009
	      / deval (z, Q2r3_2r7D, NQ2r3_2r7D);
Packit 6c4009
	}
Packit 6c4009
      else
Packit 6c4009
	{
Packit 6c4009
	  p = neval (z, P2_2r3N, NP2_2r3N) / deval (z, P2_2r3D, NP2_2r3D);
Packit 6c4009
	  q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D);
Packit 6c4009
	}
Packit 6c4009
    }
Packit 6c4009
  p = 1 + z * p;
Packit 6c4009
  q = z * xinv * q;
Packit 6c4009
  q = q - 0.125L * xinv;
Packit 6c4009
  z = ONEOSQPI * (p * ss + q * cc) / sqrtl (x);
Packit 6c4009
  return z;
Packit 6c4009
}
Packit 6c4009
strong_alias (__ieee754_y0l, __y0l_finite)