26 #if defined(NFFT_LDOUBLE)
27 #if LDBL_MANT_DIG > 64
30 static const R num[24] =
32 K(3.035162425359883494754028782232869726547E21),
33 K(3.4967568944064301036001605717507506346E21),
34 K(1.9266526566893208886540195401514595829E21),
35 K(6.755170664882727663160830237424406199E20),
36 K(1.691728531049187527800862627495648317E20),
37 K(3.21979351672256057856444116302160246E19),
38 K(4.8378495427140832493758744745481812E18),
39 K(5.8843103809049324230843820398664955E17),
40 K(5.893958514163405862064178891925630E16),
41 K(4.919561837722192829918665308020810E15),
42 K(3.449165802442404074427531228315120E14),
43 K(2.041330296068782505988459692384726E13),
44 K(1.022234822943784007524609706893119E12),
45 K(4.33137871919821354846952908076307E10),
46 K(1.54921950559667418528481770869280E9),
47 K(4.6544421199876191938054157935810E7),
48 K(1.16527806807504975090675074910053E6),
49 K(24024.759267256769471083727721827),
50 K(400.96500811342195582435806376976),
51 K(5.2829901565447826961703902917085),
52 K(0.05289990244125101024092566765994),
53 K(0.0003783467106547406854542665695934),
54 K(1.7219414217921113919596660801124E-6),
55 K(3.747999317071488557713812635427084359354E-9)
84 static const R g = K(20.32098218798637390136718750000000000000);
85 #elif LDBL_MANT_DIG == 64
88 static const R num[17] =
90 K(2.715894658327717377557655133124376674911E12),
91 K(3.59017952609791210503852552872112955043E12),
92 K(2.22396659973781496931212735323581871017E12),
93 K(8.5694083451895624818099258668254858834E11),
94 K(2.2988587166874907293359744645339939547E11),
95 K(4.552617168754610815813502794395753410E10),
96 K(6.884887713165178784550917647709216425E9),
97 K(8.11048596140753186476028245385237278E8),
98 K(7.52139159654082231449961362311950170E7),
99 K(5.50924541722426515169752795795495283E6),
100 K(317673.536843541912671493184218236957),
101 K(14268.2798984503552014701437332033752),
102 K(489.361872040326367021390908360178781),
103 K(12.3894133003845444929588321786545861),
104 K(0.218362738950461496394157450728168315),
105 K(0.00239374952205844918669062799606398310),
106 K(0.00001229541408909435212800785616808830746135)
128 static const R g = K(12.22522273659706115722656250000000000000);
130 #error Unsupported size of long double
132 #elif defined(NFFT_SINGLE)
135 static const R num[6] =
137 K(14.02614328749964766195705772850038393570),
138 K(43.74732405540314316089531289293124360129),
139 K(50.59547402616588964511581430025589038612),
140 K(26.90456680562548195593733429204228910299),
141 K(6.595765571169314946316366571954421695196),
142 K(0.6007854010515290065101128585795542383721)
153 static const R g = K(1.428456135094165802001953125000000000000);
157 static const R num[13] =
159 K(5.690652191347156388090791033559122686859E7),
160 K(1.037940431163445451906271053616070238554E8),
161 K(8.63631312881385914554692728897786842234E7),
162 K(4.33388893246761383477372374059053331609E7),
163 K(1.46055780876850680841416998279135921857E7),
164 K(3.48171215498064590882071018964774556468E6),
165 K(601859.61716810987866702265336993523025),
166 K(75999.293040145426498753034435989091371),
167 K(6955.9996025153761403563101155151989875),
168 K(449.944556906316811944685860765098840962),
169 K(19.5199278824761748284786096623565213621),
170 K(0.509841665565667618812517864480469450999),
171 K(0.006061842346248906525783753964555936883222)
189 static const R g = K(6.024680040776729583740234375000000000000);
192 static inline R evaluate_rational(
const R z_)
201 for (i = N - 2; i >= 0; --i)
213 for (i = 1; i < N; ++i)
216 s2 *= K(1.0) + (i-1)*z;
223 R X(lambda)(
const R z,
const R eps)
225 const R d = K(1.0) - eps, zpg = z + g, emh = eps - K(0.5);
226 return EXP(-LOG1P(d / (zpg + emh)) * (z + emh)) *
227 POW(KE / (zpg + K(0.5)),d) *
228 (evaluate_rational(z + eps) / evaluate_rational(z + K(1.0)));
231 R X(lambda2)(
const R mu,
const R nu)
235 else if (nu == K(0.0))
240 POW((mu + nu + g + K(0.5)) / (K(1.0) * (mu + g + K(0.5))), mu) *
241 POW((mu + nu + g + K(0.5)) / (K(1.0) * (nu + g + K(0.5))), nu) *
242 SQRT(KE * (mu + nu + g + K(0.5)) /
243 ((mu + g + K(0.5)) * (nu + g + K(0.5)))) *
244 (evaluate_rational(mu + nu + K(1.0)) /
245 (evaluate_rational(mu + K(1.0)) * evaluate_rational(nu + K(1.0))))