/*							j1l.c
 *
 *	Bessel function of order one
 *
 *
 *
 * SYNOPSIS:
 *
 * __float128 x, y, j1q();
 *
 * y = j1q( x );
 *
 *
 *
 * DESCRIPTION:
 *
 * Returns Bessel function of first kind, order one of the argument.
 *
 * The domain is divided into two major intervals [0, 2] and
 * (2, infinity). In the first interval the rational approximation is
 * J1(x) = .5x + x x^2 R(x^2)
 *
 * The second interval is further partitioned into eight equal segments
 * of 1/x.
 * J1(x) = sqrt(2/(pi x)) (P1(x) cos(X) - Q1(x) sin(X)),
 * X = x - 3 pi / 4,
 *
 * and the auxiliary functions are given by
 *
 * J1(x)cos(X) + Y1(x)sin(X) = sqrt( 2/(pi x)) P1(x),
 * P1(x) = 1 + 1/x^2 R(1/x^2)
 *
 * Y1(x)cos(X) - J1(x)sin(X) = sqrt( 2/(pi x)) Q1(x),
 * Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)).
 *
 *
 *
 * ACCURACY:
 *
 *                      Absolute error:
 * arithmetic   domain      # trials      peak         rms
 *    IEEE      0, 30       100000      2.8e-34      2.7e-35
 *
 *
 */

/*							y1l.c
 *
 *	Bessel function of the second kind, order one
 *
 *
 *
 * SYNOPSIS:
 *
 * __float128, y, y1q();
 *
 * y = y1q( x );
 *
 *
 *
 * DESCRIPTION:
 *
 * Returns Bessel function of the second kind, of order
 * one, of the argument.
 *
 * The domain is divided into two major intervals [0, 2] and
 * (2, infinity). In the first interval the rational approximation is
 * Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2) .
 * In the second interval the approximation is the same as for J1(x), and
 * Y1(x) = sqrt(2/(pi x)) (P1(x) sin(X) + Q1(x) cos(X)),
 * X = x - 3 pi / 4.
 *
 * ACCURACY:
 *
 *  Absolute error, when y0(x) < 1; else relative error:
 *
 * arithmetic   domain     # trials      peak         rms
 *    IEEE      0, 30       100000      2.7e-34     2.9e-35
 *
 */

/* Copyright 2001 by Stephen L. Moshier (moshier@na-net.onrl.gov).

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA */

#include "quadmath-imp.h"

/* 1 / sqrt(pi) */
static const __float128 ONEOSQPI = 5.6418958354775628694807945156077258584405E-1Q;
/* 2 / pi */
static const __float128 TWOOPI = 6.3661977236758134307553505349005744813784E-1Q;
static const __float128 zero = 0.0Q;

/* J1(x) = .5x + x x^2 R(x^2)
   Peak relative error 1.9e-35
   0 <= x <= 2  */
#define NJ0_2N 6
static const __float128 J0_2N[NJ0_2N + 1] = {
 -5.943799577386942855938508697619735179660E16Q,
  1.812087021305009192259946997014044074711E15Q,
 -2.761698314264509665075127515729146460895E13Q,
  2.091089497823600978949389109350658815972E11Q,
 -8.546413231387036372945453565654130054307E8Q,
  1.797229225249742247475464052741320612261E6Q,
 -1.559552840946694171346552770008812083969E3Q
};
#define NJ0_2D 6
static const __float128 J0_2D[NJ0_2D + 1] = {
  9.510079323819108569501613916191477479397E17Q,
  1.063193817503280529676423936545854693915E16Q,
  5.934143516050192600795972192791775226920E13Q,
  2.168000911950620999091479265214368352883E11Q,
  5.673775894803172808323058205986256928794E8Q,
  1.080329960080981204840966206372671147224E6Q,
  1.411951256636576283942477881535283304912E3Q,
 /* 1.000000000000000000000000000000000000000E0Q */
};

/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
   0 <= 1/x <= .0625
   Peak relative error 3.6e-36  */
#define NP16_IN 9
static const __float128 P16_IN[NP16_IN + 1] = {
  5.143674369359646114999545149085139822905E-16Q,
  4.836645664124562546056389268546233577376E-13Q,
  1.730945562285804805325011561498453013673E-10Q,
  3.047976856147077889834905908605310585810E-8Q,
  2.855227609107969710407464739188141162386E-6Q,
  1.439362407936705484122143713643023998457E-4Q,
  3.774489768532936551500999699815873422073E-3Q,
  4.723962172984642566142399678920790598426E-2Q,
  2.359289678988743939925017240478818248735E-1Q,
  3.032580002220628812728954785118117124520E-1Q,
};
#define NP16_ID 9
static const __float128 P16_ID[NP16_ID + 1] = {
  4.389268795186898018132945193912677177553E-15Q,
  4.132671824807454334388868363256830961655E-12Q,
  1.482133328179508835835963635130894413136E-9Q,
  2.618941412861122118906353737117067376236E-7Q,
  2.467854246740858470815714426201888034270E-5Q,
  1.257192927368839847825938545925340230490E-3Q,
  3.362739031941574274949719324644120720341E-2Q,
  4.384458231338934105875343439265370178858E-1Q,
  2.412830809841095249170909628197264854651E0Q,
  4.176078204111348059102962617368214856874E0Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
    0.0625 <= 1/x <= 0.125
    Peak relative error 1.9e-36  */
#define NP8_16N 11
static const __float128 P8_16N[NP8_16N + 1] = {
  2.984612480763362345647303274082071598135E-16Q,
  1.923651877544126103941232173085475682334E-13Q,
  4.881258879388869396043760693256024307743E-11Q,
  6.368866572475045408480898921866869811889E-9Q,
  4.684818344104910450523906967821090796737E-7Q,
  2.005177298271593587095982211091300382796E-5Q,
  4.979808067163957634120681477207147536182E-4Q,
  6.946005761642579085284689047091173581127E-3Q,
  5.074601112955765012750207555985299026204E-2Q,
  1.698599455896180893191766195194231825379E-1Q,
  1.957536905259237627737222775573623779638E-1Q,
  2.991314703282528370270179989044994319374E-2Q,
};
#define NP8_16D 10
static const __float128 P8_16D[NP8_16D + 1] = {
  2.546869316918069202079580939942463010937E-15Q,
  1.644650111942455804019788382157745229955E-12Q,
  4.185430770291694079925607420808011147173E-10Q,
  5.485331966975218025368698195861074143153E-8Q,
  4.062884421686912042335466327098932678905E-6Q,
  1.758139661060905948870523641319556816772E-4Q,
  4.445143889306356207566032244985607493096E-3Q,
  6.391901016293512632765621532571159071158E-2Q,
  4.933040207519900471177016015718145795434E-1Q,
  1.839144086168947712971630337250761842976E0Q,
  2.715120873995490920415616716916149586579E0Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
  0.125 <= 1/x <= 0.1875
  Peak relative error 1.3e-36  */
#define NP5_8N 10
static const __float128 P5_8N[NP5_8N + 1] = {
  2.837678373978003452653763806968237227234E-12Q,
  9.726641165590364928442128579282742354806E-10Q,
  1.284408003604131382028112171490633956539E-7Q,
  8.524624695868291291250573339272194285008E-6Q,
  3.111516908953172249853673787748841282846E-4Q,
  6.423175156126364104172801983096596409176E-3Q,
  7.430220589989104581004416356260692450652E-2Q,
  4.608315409833682489016656279567605536619E-1Q,
  1.396870223510964882676225042258855977512E0Q,
  1.718500293904122365894630460672081526236E0Q,
  5.465927698800862172307352821870223855365E-1Q
};
#define NP5_8D 10
static const __float128 P5_8D[NP5_8D + 1] = {
  2.421485545794616609951168511612060482715E-11Q,
  8.329862750896452929030058039752327232310E-9Q,
  1.106137992233383429630592081375289010720E-6Q,
  7.405786153760681090127497796448503306939E-5Q,
  2.740364785433195322492093333127633465227E-3Q,
  5.781246470403095224872243564165254652198E-2Q,
  6.927711353039742469918754111511109983546E-1Q,
  4.558679283460430281188304515922826156690E0Q,
  1.534468499844879487013168065728837900009E1Q,
  2.313927430889218597919624843161569422745E1Q,
  1.194506341319498844336768473218382828637E1Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
   Peak relative error 1.4e-36
   0.1875 <= 1/x <= 0.25  */
#define NP4_5N 10
static const __float128 P4_5N[NP4_5N + 1] = {
  1.846029078268368685834261260420933914621E-10Q,
  3.916295939611376119377869680335444207768E-8Q,
  3.122158792018920627984597530935323997312E-6Q,
  1.218073444893078303994045653603392272450E-4Q,
  2.536420827983485448140477159977981844883E-3Q,
  2.883011322006690823959367922241169171315E-2Q,
  1.755255190734902907438042414495469810830E-1Q,
  5.379317079922628599870898285488723736599E-1Q,
  7.284904050194300773890303361501726561938E-1Q,
  3.270110346613085348094396323925000362813E-1Q,
  1.804473805689725610052078464951722064757E-2Q,
};
#define NP4_5D 9
static const __float128 P4_5D[NP4_5D + 1] = {
  1.575278146806816970152174364308980863569E-9Q,
  3.361289173657099516191331123405675054321E-7Q,
  2.704692281550877810424745289838790693708E-5Q,
  1.070854930483999749316546199273521063543E-3Q,
  2.282373093495295842598097265627962125411E-2Q,
  2.692025460665354148328762368240343249830E-1Q,
  1.739892942593664447220951225734811133759E0Q,
  5.890727576752230385342377570386657229324E0Q,
  9.517442287057841500750256954117735128153E0Q,
  6.100616353935338240775363403030137736013E0Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
   Peak relative error 3.0e-36
   0.25 <= 1/x <= 0.3125  */
#define NP3r2_4N 9
static const __float128 P3r2_4N[NP3r2_4N + 1] = {
  8.240803130988044478595580300846665863782E-8Q,
  1.179418958381961224222969866406483744580E-5Q,
  6.179787320956386624336959112503824397755E-4Q,
  1.540270833608687596420595830747166658383E-2Q,
  1.983904219491512618376375619598837355076E-1Q,
  1.341465722692038870390470651608301155565E0Q,
  4.617865326696612898792238245990854646057E0Q,
  7.435574801812346424460233180412308000587E0Q,
  4.671327027414635292514599201278557680420E0Q,
  7.299530852495776936690976966995187714739E-1Q,
};
#define NP3r2_4D 9
static const __float128 P3r2_4D[NP3r2_4D + 1] = {
  7.032152009675729604487575753279187576521E-7Q,
  1.015090352324577615777511269928856742848E-4Q,
  5.394262184808448484302067955186308730620E-3Q,
  1.375291438480256110455809354836988584325E-1Q,
  1.836247144461106304788160919310404376670E0Q,
  1.314378564254376655001094503090935880349E1Q,
  4.957184590465712006934452500894672343488E1Q,
  9.287394244300647738855415178790263465398E1Q,
  7.652563275535900609085229286020552768399E1Q,
  2.147042473003074533150718117770093209096E1Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
   Peak relative error 1.0e-35
   0.3125 <= 1/x <= 0.375  */
#define NP2r7_3r2N 9
static const __float128 P2r7_3r2N[NP2r7_3r2N + 1] = {
  4.599033469240421554219816935160627085991E-7Q,
  4.665724440345003914596647144630893997284E-5Q,
  1.684348845667764271596142716944374892756E-3Q,
  2.802446446884455707845985913454440176223E-2Q,
  2.321937586453963310008279956042545173930E-1Q,
  9.640277413988055668692438709376437553804E-1Q,
  1.911021064710270904508663334033003246028E0Q,
  1.600811610164341450262992138893970224971E0Q,
  4.266299218652587901171386591543457861138E-1Q,
  1.316470424456061252962568223251247207325E-2Q,
};
#define NP2r7_3r2D 8
static const __float128 P2r7_3r2D[NP2r7_3r2D + 1] = {
  3.924508608545520758883457108453520099610E-6Q,
  4.029707889408829273226495756222078039823E-4Q,
  1.484629715787703260797886463307469600219E-2Q,
  2.553136379967180865331706538897231588685E-1Q,
  2.229457223891676394409880026887106228740E0Q,
  1.005708903856384091956550845198392117318E1Q,
  2.277082659664386953166629360352385889558E1Q,
  2.384726835193630788249826630376533988245E1Q,
  9.700989749041320895890113781610939632410E0Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
   Peak relative error 1.7e-36
   0.3125 <= 1/x <= 0.4375  */
#define NP2r3_2r7N 9
static const __float128 P2r3_2r7N[NP2r3_2r7N + 1] = {
  3.916766777108274628543759603786857387402E-6Q,
  3.212176636756546217390661984304645137013E-4Q,
  9.255768488524816445220126081207248947118E-3Q,
  1.214853146369078277453080641911700735354E-1Q,
  7.855163309847214136198449861311404633665E-1Q,
  2.520058073282978403655488662066019816540E0Q,
  3.825136484837545257209234285382183711466E0Q,
  2.432569427554248006229715163865569506873E0Q,
  4.877934835018231178495030117729800489743E-1Q,
  1.109902737860249670981355149101343427885E-2Q,
};
#define NP2r3_2r7D 8
static const __float128 P2r3_2r7D[NP2r3_2r7D + 1] = {
  3.342307880794065640312646341190547184461E-5Q,
  2.782182891138893201544978009012096558265E-3Q,
  8.221304931614200702142049236141249929207E-2Q,
  1.123728246291165812392918571987858010949E0Q,
  7.740482453652715577233858317133423434590E0Q,
  2.737624677567945952953322566311201919139E1Q,
  4.837181477096062403118304137851260715475E1Q,
  3.941098643468580791437772701093795299274E1Q,
  1.245821247166544627558323920382547533630E1Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* J1(x)cosX + Y1(x)sinX = sqrt( 2/(pi x)) P1(x), P1(x) = 1 + 1/x^2 R(1/x^2),
   Peak relative error 1.7e-35
   0.4375 <= 1/x <= 0.5  */
#define NP2_2r3N 8
static const __float128 P2_2r3N[NP2_2r3N + 1] = {
  3.397930802851248553545191160608731940751E-4Q,
  2.104020902735482418784312825637833698217E-2Q,
  4.442291771608095963935342749477836181939E-1Q,
  4.131797328716583282869183304291833754967E0Q,
  1.819920169779026500146134832455189917589E1Q,
  3.781779616522937565300309684282401791291E1Q,
  3.459605449728864218972931220783543410347E1Q,
  1.173594248397603882049066603238568316561E1Q,
  9.455702270242780642835086549285560316461E-1Q,
};
#define NP2_2r3D 8
static const __float128 P2_2r3D[NP2_2r3D + 1] = {
  2.899568897241432883079888249845707400614E-3Q,
  1.831107138190848460767699919531132426356E-1Q,
  3.999350044057883839080258832758908825165E0Q,
  3.929041535867957938340569419874195303712E1Q,
  1.884245613422523323068802689915538908291E2Q,
  4.461469948819229734353852978424629815929E2Q,
  5.004998753999796821224085972610636347903E2Q,
  2.386342520092608513170837883757163414100E2Q,
  3.791322528149347975999851588922424189957E1Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
   Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
   Peak relative error 8.0e-36
   0 <= 1/x <= .0625  */
#define NQ16_IN 10
static const __float128 Q16_IN[NQ16_IN + 1] = {
  -3.917420835712508001321875734030357393421E-18Q,
  -4.440311387483014485304387406538069930457E-15Q,
  -1.951635424076926487780929645954007139616E-12Q,
  -4.318256438421012555040546775651612810513E-10Q,
  -5.231244131926180765270446557146989238020E-8Q,
  -3.540072702902043752460711989234732357653E-6Q,
  -1.311017536555269966928228052917534882984E-4Q,
  -2.495184669674631806622008769674827575088E-3Q,
  -2.141868222987209028118086708697998506716E-2Q,
  -6.184031415202148901863605871197272650090E-2Q,
  -1.922298704033332356899546792898156493887E-2Q,
};
#define NQ16_ID 9
static const __float128 Q16_ID[NQ16_ID + 1] = {
  3.820418034066293517479619763498400162314E-17Q,
  4.340702810799239909648911373329149354911E-14Q,
  1.914985356383416140706179933075303538524E-11Q,
  4.262333682610888819476498617261895474330E-9Q,
  5.213481314722233980346462747902942182792E-7Q,
  3.585741697694069399299005316809954590558E-5Q,
  1.366513429642842006385029778105539457546E-3Q,
  2.745282599850704662726337474371355160594E-2Q,
  2.637644521611867647651200098449903330074E-1Q,
  1.006953426110765984590782655598680488746E0Q,
 /* 1.000000000000000000000000000000000000000E0 */
 };

/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
   Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
   Peak relative error 1.9e-36
   0.0625 <= 1/x <= 0.125  */
#define NQ8_16N 11
static const __float128 Q8_16N[NQ8_16N + 1] = {
  -2.028630366670228670781362543615221542291E-17Q,
  -1.519634620380959966438130374006858864624E-14Q,
  -4.540596528116104986388796594639405114524E-12Q,
  -7.085151756671466559280490913558388648274E-10Q,
  -6.351062671323970823761883833531546885452E-8Q,
  -3.390817171111032905297982523519503522491E-6Q,
  -1.082340897018886970282138836861233213972E-4Q,
  -2.020120801187226444822977006648252379508E-3Q,
  -2.093169910981725694937457070649605557555E-2Q,
  -1.092176538874275712359269481414448063393E-1Q,
  -2.374790947854765809203590474789108718733E-1Q,
  -1.365364204556573800719985118029601401323E-1Q,
};
#define NQ8_16D 11
static const __float128 Q8_16D[NQ8_16D + 1] = {
  1.978397614733632533581207058069628242280E-16Q,
  1.487361156806202736877009608336766720560E-13Q,
  4.468041406888412086042576067133365913456E-11Q,
  7.027822074821007443672290507210594648877E-9Q,
  6.375740580686101224127290062867976007374E-7Q,
  3.466887658320002225888644977076410421940E-5Q,
  1.138625640905289601186353909213719596986E-3Q,
  2.224470799470414663443449818235008486439E-2Q,
  2.487052928527244907490589787691478482358E-1Q,
  1.483927406564349124649083853892380899217E0Q,
  4.182773513276056975777258788903489507705E0Q,
  4.419665392573449746043880892524360870944E0Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
   Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
   Peak relative error 1.5e-35
   0.125 <= 1/x <= 0.1875  */
#define NQ5_8N 10
static const __float128 Q5_8N[NQ5_8N + 1] = {
  -3.656082407740970534915918390488336879763E-13Q,
  -1.344660308497244804752334556734121771023E-10Q,
  -1.909765035234071738548629788698150760791E-8Q,
  -1.366668038160120210269389551283666716453E-6Q,
  -5.392327355984269366895210704976314135683E-5Q,
  -1.206268245713024564674432357634540343884E-3Q,
  -1.515456784370354374066417703736088291287E-2Q,
  -1.022454301137286306933217746545237098518E-1Q,
  -3.373438906472495080504907858424251082240E-1Q,
  -4.510782522110845697262323973549178453405E-1Q,
  -1.549000892545288676809660828213589804884E-1Q,
};
#define NQ5_8D 10
static const __float128 Q5_8D[NQ5_8D + 1] = {
  3.565550843359501079050699598913828460036E-12Q,
  1.321016015556560621591847454285330528045E-9Q,
  1.897542728662346479999969679234270605975E-7Q,
  1.381720283068706710298734234287456219474E-5Q,
  5.599248147286524662305325795203422873725E-4Q,
  1.305442352653121436697064782499122164843E-2Q,
  1.750234079626943298160445750078631894985E-1Q,
  1.311420542073436520965439883806946678491E0Q,
  5.162757689856842406744504211089724926650E0Q,
  9.527760296384704425618556332087850581308E0Q,
  6.604648207463236667912921642545100248584E0Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
   Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
   Peak relative error 1.3e-35
   0.1875 <= 1/x <= 0.25  */
#define NQ4_5N 10
static const __float128 Q4_5N[NQ4_5N + 1] = {
  -4.079513568708891749424783046520200903755E-11Q,
  -9.326548104106791766891812583019664893311E-9Q,
  -8.016795121318423066292906123815687003356E-7Q,
  -3.372350544043594415609295225664186750995E-5Q,
  -7.566238665947967882207277686375417983917E-4Q,
  -9.248861580055565402130441618521591282617E-3Q,
  -6.033106131055851432267702948850231270338E-2Q,
  -1.966908754799996793730369265431584303447E-1Q,
  -2.791062741179964150755788226623462207560E-1Q,
  -1.255478605849190549914610121863534191666E-1Q,
  -4.320429862021265463213168186061696944062E-3Q,
};
#define NQ4_5D 9
static const __float128 Q4_5D[NQ4_5D + 1] = {
  3.978497042580921479003851216297330701056E-10Q,
  9.203304163828145809278568906420772246666E-8Q,
  8.059685467088175644915010485174545743798E-6Q,
  3.490187375993956409171098277561669167446E-4Q,
  8.189109654456872150100501732073810028829E-3Q,
  1.072572867311023640958725265762483033769E-1Q,
  7.790606862409960053675717185714576937994E-1Q,
  3.016049768232011196434185423512777656328E0Q,
  5.722963851442769787733717162314477949360E0Q,
  4.510527838428473279647251350931380867663E0Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
   Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
   Peak relative error 2.1e-35
   0.25 <= 1/x <= 0.3125  */
#define NQ3r2_4N 9
static const __float128 Q3r2_4N[NQ3r2_4N + 1] = {
  -1.087480809271383885936921889040388133627E-8Q,
  -1.690067828697463740906962973479310170932E-6Q,
  -9.608064416995105532790745641974762550982E-5Q,
  -2.594198839156517191858208513873961837410E-3Q,
  -3.610954144421543968160459863048062977822E-2Q,
  -2.629866798251843212210482269563961685666E-1Q,
  -9.709186825881775885917984975685752956660E-1Q,
  -1.667521829918185121727268867619982417317E0Q,
  -1.109255082925540057138766105229900943501E0Q,
  -1.812932453006641348145049323713469043328E-1Q,
};
#define NQ3r2_4D 9
static const __float128 Q3r2_4D[NQ3r2_4D + 1] = {
  1.060552717496912381388763753841473407026E-7Q,
  1.676928002024920520786883649102388708024E-5Q,
  9.803481712245420839301400601140812255737E-4Q,
  2.765559874262309494758505158089249012930E-2Q,
  4.117921827792571791298862613287549140706E-1Q,
  3.323769515244751267093378361930279161413E0Q,
  1.436602494405814164724810151689705353670E1Q,
  3.163087869617098638064881410646782408297E1Q,
  3.198181264977021649489103980298349589419E1Q,
  1.203649258862068431199471076202897823272E1Q,
 /* 1.000000000000000000000000000000000000000E0  */
};

/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
   Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
   Peak relative error 1.6e-36
   0.3125 <= 1/x <= 0.375  */
#define NQ2r7_3r2N 9
static const __float128 Q2r7_3r2N[NQ2r7_3r2N + 1] = {
  -1.723405393982209853244278760171643219530E-7Q,
  -2.090508758514655456365709712333460087442E-5Q,
  -9.140104013370974823232873472192719263019E-4Q,
  -1.871349499990714843332742160292474780128E-2Q,
  -1.948930738119938669637865956162512983416E-1Q,
  -1.048764684978978127908439526343174139788E0Q,
  -2.827714929925679500237476105843643064698E0Q,
  -3.508761569156476114276988181329773987314E0Q,
  -1.669332202790211090973255098624488308989E0Q,
  -1.930796319299022954013840684651016077770E-1Q,
};
#define NQ2r7_3r2D 9
static const __float128 Q2r7_3r2D[NQ2r7_3r2D + 1] = {
  1.680730662300831976234547482334347983474E-6Q,
  2.084241442440551016475972218719621841120E-4Q,
  9.445316642108367479043541702688736295579E-3Q,
  2.044637889456631896650179477133252184672E-1Q,
  2.316091982244297350829522534435350078205E0Q,
  1.412031891783015085196708811890448488865E1Q,
  4.583830154673223384837091077279595496149E1Q,
  7.549520609270909439885998474045974122261E1Q,
  5.697605832808113367197494052388203310638E1Q,
  1.601496240876192444526383314589371686234E1Q,
  /* 1.000000000000000000000000000000000000000E0 */
};

/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
   Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
   Peak relative error 9.5e-36
   0.375 <= 1/x <= 0.4375  */
#define NQ2r3_2r7N 9
static const __float128 Q2r3_2r7N[NQ2r3_2r7N + 1] = {
  -8.603042076329122085722385914954878953775E-7Q,
  -7.701746260451647874214968882605186675720E-5Q,
  -2.407932004380727587382493696877569654271E-3Q,
  -3.403434217607634279028110636919987224188E-2Q,
  -2.348707332185238159192422084985713102877E-1Q,
  -7.957498841538254916147095255700637463207E-1Q,
  -1.258469078442635106431098063707934348577E0Q,
  -8.162415474676345812459353639449971369890E-1Q,
  -1.581783890269379690141513949609572806898E-1Q,
  -1.890595651683552228232308756569450822905E-3Q,
};
#define NQ2r3_2r7D 8
static const __float128 Q2r3_2r7D[NQ2r3_2r7D + 1] = {
  8.390017524798316921170710533381568175665E-6Q,
  7.738148683730826286477254659973968763659E-4Q,
  2.541480810958665794368759558791634341779E-2Q,
  3.878879789711276799058486068562386244873E-1Q,
  3.003783779325811292142957336802456109333E0Q,
  1.206480374773322029883039064575464497400E1Q,
  2.458414064785315978408974662900438351782E1Q,
  2.367237826273668567199042088835448715228E1Q,
  9.231451197519171090875569102116321676763E0Q,
 /* 1.000000000000000000000000000000000000000E0 */
};

/* Y1(x)cosX - J1(x)sinX = sqrt( 2/(pi x)) Q1(x),
   Q1(x) = 1/x (.375 + 1/x^2 R(1/x^2)),
   Peak relative error 1.4e-36
   0.4375 <= 1/x <= 0.5  */
#define NQ2_2r3N 9
static const __float128 Q2_2r3N[NQ2_2r3N + 1] = {
  -5.552507516089087822166822364590806076174E-6Q,
  -4.135067659799500521040944087433752970297E-4Q,
  -1.059928728869218962607068840646564457980E-2Q,
  -1.212070036005832342565792241385459023801E-1Q,
  -6.688350110633603958684302153362735625156E-1Q,
  -1.793587878197360221340277951304429821582E0Q,
  -2.225407682237197485644647380483725045326E0Q,
  -1.123402135458940189438898496348239744403E0Q,
  -1.679187241566347077204805190763597299805E-1Q,
  -1.458550613639093752909985189067233504148E-3Q,
};
#define NQ2_2r3D 8
static const __float128 Q2_2r3D[NQ2_2r3D + 1] = {
  5.415024336507980465169023996403597916115E-5Q,
  4.179246497380453022046357404266022870788E-3Q,
  1.136306384261959483095442402929502368598E-1Q,
  1.422640343719842213484515445393284072830E0Q,
  8.968786703393158374728850922289204805764E0Q,
  2.914542473339246127533384118781216495934E1Q,
  4.781605421020380669870197378210457054685E1Q,
  3.693865837171883152382820584714795072937E1Q,
  1.153220502744204904763115556224395893076E1Q,
  /* 1.000000000000000000000000000000000000000E0 */
};


/* Evaluate P[n] x^n  +  P[n-1] x^(n-1)  +  ...  +  P[0] */

static __float128
neval (__float128 x, const __float128 *p, int n)
{
  __float128 y;

  p += n;
  y = *p--;
  do
    {
      y = y * x + *p--;
    }
  while (--n > 0);
  return y;
}


/* Evaluate x^n+1  +  P[n] x^(n)  +  P[n-1] x^(n-1)  +  ...  +  P[0] */

static __float128
deval (__float128 x, const __float128 *p, int n)
{
  __float128 y;

  p += n;
  y = x + *p--;
  do
    {
      y = y * x + *p--;
    }
  while (--n > 0);
  return y;
}


/* Bessel function of the first kind, order one.  */

__float128
j1q (__float128 x)
{
  __float128 xx, xinv, z, p, q, c, s, cc, ss;

  if (! finiteq (x))
    {
      if (x != x)
	return x;
      else
	return 0.0Q;
    }
  if (x == 0.0Q)
    return x;
  xx = fabsq (x);
  if (xx <= 2.0Q)
    {
      /* 0 <= x <= 2 */
      z = xx * xx;
      p = xx * z * neval (z, J0_2N, NJ0_2N) / deval (z, J0_2D, NJ0_2D);
      p += 0.5Q * xx;
      if (x < 0)
	p = -p;
      return p;
    }

  xinv = 1.0Q / xx;
  z = xinv * xinv;
  if (xinv <= 0.25)
    {
      if (xinv <= 0.125)
	{
	  if (xinv <= 0.0625)
	    {
	      p = neval (z, P16_IN, NP16_IN) / deval (z, P16_ID, NP16_ID);
	      q = neval (z, Q16_IN, NQ16_IN) / deval (z, Q16_ID, NQ16_ID);
	    }
	  else
	    {
	      p = neval (z, P8_16N, NP8_16N) / deval (z, P8_16D, NP8_16D);
	      q = neval (z, Q8_16N, NQ8_16N) / deval (z, Q8_16D, NQ8_16D);
	    }
	}
      else if (xinv <= 0.1875)
	{
	  p = neval (z, P5_8N, NP5_8N) / deval (z, P5_8D, NP5_8D);
	  q = neval (z, Q5_8N, NQ5_8N) / deval (z, Q5_8D, NQ5_8D);
	}
      else
	{
	  p = neval (z, P4_5N, NP4_5N) / deval (z, P4_5D, NP4_5D);
	  q = neval (z, Q4_5N, NQ4_5N) / deval (z, Q4_5D, NQ4_5D);
	}
    }				/* .25 */
  else /* if (xinv <= 0.5) */
    {
      if (xinv <= 0.375)
	{
	  if (xinv <= 0.3125)
	    {
	      p = neval (z, P3r2_4N, NP3r2_4N) / deval (z, P3r2_4D, NP3r2_4D);
	      q = neval (z, Q3r2_4N, NQ3r2_4N) / deval (z, Q3r2_4D, NQ3r2_4D);
	    }
	  else
	    {
	      p = neval (z, P2r7_3r2N, NP2r7_3r2N)
		  / deval (z, P2r7_3r2D, NP2r7_3r2D);
	      q = neval (z, Q2r7_3r2N, NQ2r7_3r2N)
		  / deval (z, Q2r7_3r2D, NQ2r7_3r2D);
	    }
	}
      else if (xinv <= 0.4375)
	{
	  p = neval (z, P2r3_2r7N, NP2r3_2r7N)
	      / deval (z, P2r3_2r7D, NP2r3_2r7D);
	  q = neval (z, Q2r3_2r7N, NQ2r3_2r7N)
	      / deval (z, Q2r3_2r7D, NQ2r3_2r7D);
	}
      else
	{
	  p = neval (z, P2_2r3N, NP2_2r3N) / deval (z, P2_2r3D, NP2_2r3D);
	  q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D);
	}
    }
  p = 1.0Q + z * p;
  q = z * q;
  q = q * xinv + 0.375Q * xinv;
  /* X = x - 3 pi/4
     cos(X) = cos(x) cos(3 pi/4) + sin(x) sin(3 pi/4)
     = 1/sqrt(2) * (-cos(x) + sin(x))
     sin(X) = sin(x) cos(3 pi/4) - cos(x) sin(3 pi/4)
     = -1/sqrt(2) * (sin(x) + cos(x))
     cf. Fdlibm.  */
  sincosq (xx, &s, &c);
  ss = -s - c;
  cc = s - c;
  z = cosq (xx + xx);
  if ((s * c) > 0)
    cc = z / ss;
  else
    ss = z / cc;
  z = ONEOSQPI * (p * cc - q * ss) / sqrtq (xx);
  if (x < 0)
    z = -z;
  return z;
}


/* Y1(x) = 2/pi * (log(x) * J1(x) - 1/x) + x R(x^2)
   Peak relative error 6.2e-38
   0 <= x <= 2   */
#define NY0_2N 7
static __float128 Y0_2N[NY0_2N + 1] = {
  -6.804415404830253804408698161694720833249E19Q,
  1.805450517967019908027153056150465849237E19Q,
  -8.065747497063694098810419456383006737312E17Q,
  1.401336667383028259295830955439028236299E16Q,
  -1.171654432898137585000399489686629680230E14Q,
  5.061267920943853732895341125243428129150E11Q,
  -1.096677850566094204586208610960870217970E9Q,
  9.541172044989995856117187515882879304461E5Q,
};
#define NY0_2D 7
static __float128 Y0_2D[NY0_2D + 1] = {
  3.470629591820267059538637461549677594549E20Q,
  4.120796439009916326855848107545425217219E18Q,
  2.477653371652018249749350657387030814542E16Q,
  9.954678543353888958177169349272167762797E13Q,
  2.957927997613630118216218290262851197754E11Q,
  6.748421382188864486018861197614025972118E8Q,
  1.173453425218010888004562071020305709319E6Q,
  1.450335662961034949894009554536003377187E3Q,
  /* 1.000000000000000000000000000000000000000E0 */
};


/* Bessel function of the second kind, order one.  */

__float128
y1q (__float128 x)
{
  __float128 xx, xinv, z, p, q, c, s, cc, ss;

  if (! finiteq (x))
    {
      if (x != x)
	return x;
      else
	return 0.0Q;
    }
  if (x <= 0.0Q)
    {
      if (x < 0.0Q)
	return (zero / (zero * x));
      return -HUGE_VALQ + x;
    }
  xx = fabsq (x);
  if (xx <= 0x1p-114)
    return -TWOOPI / x;
  if (xx <= 2.0Q)
   {
      /* 0 <= x <= 2 */
      z = xx * xx;
      p = xx * neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D);
      p = -TWOOPI / xx + p;
      p = TWOOPI * logq (x) * j1q (x) + p;
      return p;
    }

  xinv = 1.0Q / xx;
  z = xinv * xinv;
  if (xinv <= 0.25)
    {
      if (xinv <= 0.125)
	{
	  if (xinv <= 0.0625)
	    {
	      p = neval (z, P16_IN, NP16_IN) / deval (z, P16_ID, NP16_ID);
	      q = neval (z, Q16_IN, NQ16_IN) / deval (z, Q16_ID, NQ16_ID);
	    }
	  else
	    {
	      p = neval (z, P8_16N, NP8_16N) / deval (z, P8_16D, NP8_16D);
	      q = neval (z, Q8_16N, NQ8_16N) / deval (z, Q8_16D, NQ8_16D);
	    }
	}
      else if (xinv <= 0.1875)
	{
	  p = neval (z, P5_8N, NP5_8N) / deval (z, P5_8D, NP5_8D);
	  q = neval (z, Q5_8N, NQ5_8N) / deval (z, Q5_8D, NQ5_8D);
	}
      else
	{
	  p = neval (z, P4_5N, NP4_5N) / deval (z, P4_5D, NP4_5D);
	  q = neval (z, Q4_5N, NQ4_5N) / deval (z, Q4_5D, NQ4_5D);
	}
    }				/* .25 */
  else /* if (xinv <= 0.5) */
    {
      if (xinv <= 0.375)
	{
	  if (xinv <= 0.3125)
	    {
	      p = neval (z, P3r2_4N, NP3r2_4N) / deval (z, P3r2_4D, NP3r2_4D);
	      q = neval (z, Q3r2_4N, NQ3r2_4N) / deval (z, Q3r2_4D, NQ3r2_4D);
	    }
	  else
	    {
	      p = neval (z, P2r7_3r2N, NP2r7_3r2N)
		  / deval (z, P2r7_3r2D, NP2r7_3r2D);
	      q = neval (z, Q2r7_3r2N, NQ2r7_3r2N)
		  / deval (z, Q2r7_3r2D, NQ2r7_3r2D);
	    }
	}
      else if (xinv <= 0.4375)
	{
	  p = neval (z, P2r3_2r7N, NP2r3_2r7N)
	      / deval (z, P2r3_2r7D, NP2r3_2r7D);
	  q = neval (z, Q2r3_2r7N, NQ2r3_2r7N)
	      / deval (z, Q2r3_2r7D, NQ2r3_2r7D);
	}
      else
	{
	  p = neval (z, P2_2r3N, NP2_2r3N) / deval (z, P2_2r3D, NP2_2r3D);
	  q = neval (z, Q2_2r3N, NQ2_2r3N) / deval (z, Q2_2r3D, NQ2_2r3D);
	}
    }
  p = 1.0Q + z * p;
  q = z * q;
  q = q * xinv + 0.375Q * xinv;
  /* X = x - 3 pi/4
     cos(X) = cos(x) cos(3 pi/4) + sin(x) sin(3 pi/4)
     = 1/sqrt(2) * (-cos(x) + sin(x))
     sin(X) = sin(x) cos(3 pi/4) - cos(x) sin(3 pi/4)
     = -1/sqrt(2) * (sin(x) + cos(x))
     cf. Fdlibm.  */
  sincosq (xx, &s, &c);
  ss = -s - c;
  cc = s - c;
  z = cosq (xx + xx);
  if ((s * c) > 0)
    cc = z / ss;
  else
    ss = z / cc;
  z = ONEOSQPI * (p * ss + q * cc) / sqrtq (xx);
  return z;
}
