@@ -331,74 +331,65 @@ function pFqweniger(α::Tuple{T1, T1, T1}, β::Tuple{T2, T2}, z::T3; kmax::Int =
331
331
if norm (z) < eps (real (T)) || norm (α* β* γ) < eps (absα* absβ* absγ)
332
332
return one (T)
333
333
end
334
- ζ = inv (z)
335
- Nlo = δ* λ* ζ/ (α* β* γ)
336
- Dlo = δ* λ* ζ/ (α* β* γ)
337
- Tlo = Nlo/ Dlo
334
+ μlo = T (α* β* γ)/ T (δ* λ)
335
+ Rlo = one (T)
338
336
a0 = T (α+ 1 )* T (β+ 1 )* T (γ+ 1 )
339
337
b0 = 2 * T (δ+ 1 )* T (λ+ 1 )
340
- Nmid2 = (b0* ζ- a0)* Nlo + b0* ζ
341
- Dmid2 = (b0* ζ- a0)* Dlo
342
- Tmid2 = Nmid2/ Dmid2
338
+ μmid2 = inv (b0- a0* z)
339
+ Rmid2 = Rlo + b0* z* μmid2* μlo
343
340
if norm (a0) < eps ((absα+ 1 )* (absβ+ 1 )* (absγ+ 1 ))
344
- return Tmid2
341
+ return Rmid2
345
342
end
346
- Nmid2 /= a0
347
- Dmid2 /= a0
343
+ μmid2 *= a0
348
344
k = 1
349
345
a0 = T (α+ 2 )* T (β+ 2 )* T (γ+ 2 )
350
346
a1 = (T (1 - β)* γ+ β+ 5 )* α+ T (5 + β)* γ+ 5 * T (β)+ 13
351
347
b0 = 6 * T (δ+ 2 )* T (λ+ 2 )
352
348
b1 = 6 * T (δ+ λ+ 3 )
353
- t0 = b0* ζ- 3 * (T (β+ γ+ 3 )* α+ T (β+ 3 )* γ+ 3 * T (β)+ 7 )
354
- t1 = b1* ζ- a1
355
- Nmid1 = t0* Nmid2 + t1* Nlo + b1* ζ
356
- Dmid1 = t0* Dmid2 + t1* Dlo
357
- Tmid1 = Nmid1/ Dmid1
349
+ t0 = b0- 3 * (T (β+ γ+ 3 )* α+ T (β+ 3 )* γ+ 3 * T (β)+ 7 )* z
350
+ t1 = b1- a1* z
351
+ μmid1 = inv (t0 + t1* z* μmid2)
352
+ Rmid1 = (t0* Rmid2 + (t1* Rlo + b1* z* μlo)* z* μmid2)* μmid1
358
353
if norm (a0) < eps ((absα+ 2 )* (absβ+ 2 )* (absγ+ 2 ))
359
- return Tmid1
354
+ return Rmid1
360
355
end
361
- Nmid1 /= a0
362
- Dmid1 /= a0
356
+ μmid1 *= a0
363
357
k = 2
364
358
a0 = T (α+ 3 )* T (β+ 3 )* T (γ+ 3 )
365
359
a2 = 5 * (T (γ- 1 )* T (β- 1 )* α+ T (1 - β)* γ+ T (β)+ 23 )/ 3
366
360
b0 = 10 * T (δ+ 3 )* T (λ+ 3 )
367
361
b1 = - 10 * (T (δ- 1 )* λ- T (δ+ 11 ))
368
362
b2 = T (40 )
369
- t0 = b0* ζ+ 5 * ((T (β- 1 )* γ- T (β+ 11 ))* α- T (β+ 11 )* γ- 11 * T (β)- 49 )/ 3
370
- t1 = b1* ζ+ (T (3 + β)* γ+ T (3 * β- 11 ))* α+ T (3 * β- 11 )* γ- 11 * T (β)- 93
371
- t2 = b2* ζ- a2
372
- Nhi = t0* Nmid1 + t1* Nmid2 + t2* Nlo + b2* ζ
373
- Dhi = t0* Dmid1 + t1* Dmid2 + t2* Dlo
374
- Thi = Nhi/ Dhi
363
+ t0 = b0+ 5 * ((T (β- 1 )* γ- T (β+ 11 ))* α- T (β+ 11 )* γ- 11 * T (β)- 49 )/ 3 * z
364
+ t1 = b1+ ((T (3 + β)* γ+ T (3 * β- 11 ))* α+ T (3 * β- 11 )* γ- 11 * T (β)- 93 )* z
365
+ t2 = b2- a2* z
366
+ μhi = inv (t0 + (t1 + t2* z* μmid2)* z* μmid1)
367
+ Rhi = (t0* Rmid1 + (t1* Rmid2 + (t2* Rlo + b2* z* μlo)* z* μmid2)* z* μmid1)* μhi
375
368
if norm (a0) < eps ((absα+ 3 )* (absβ+ 3 )* (absγ+ 3 ))
376
- return Thi
369
+ return Rhi
377
370
end
378
- Nhi /= a0
379
- Dhi /= a0
371
+ μhi *= a0
380
372
k = 3
381
- while k < 6 || (k < kmax && errcheck (Tmid1, Thi, 8 eps (real (T))))
373
+ z2 = z* z
374
+ while k < 6 || (k < kmax && errcheck (Rmid1, Rhi, 8 eps (real (T))))
382
375
a0 = T (α+ k+ 1 )* T (β+ k+ 1 )* T (γ+ k+ 1 )
383
- a3 = T (k- α- 2 )* T (k- β- 2 )* T (k- γ- 2 )* k* T (2 k+ 1 )/ T ((k- 1 )* (2 k- 3 ))
376
+ a3 = T (k- α- 2 )* T (k- β- 2 )* T (k- γ- 2 )* k* T (2 k+ 1 )/ T ((k- 1 )* (2 k- 3 ))* z2
384
377
b0 = T (4 k+ 2 )* T (δ+ k+ 1 )* T (λ+ k+ 1 )
385
378
b1 = (T (k* (k- 1 ))- T (δ+ 1 )* T (λ+ 1 ))* T (2 k- 1 )* T (4 k+ 2 )/ T (k- 1 )
386
379
b2 = T (k- δ- 2 )* T (k- λ- 2 )* T (4 k+ 2 )* k/ T (k- 1 )
387
- t0 = b0* ζ- ((T (2 k+ α+ β+ γ)* k- T (α+ β+ γ+ 2 ))* k- T (γ+ 1 )* T (α+ 1 )* T (β+ 1 ))* T (2 k+ 1 )/ T (k- 1 )
388
- t1 = b1* ζ- (((T (6 k- 12 )* k+ (T (- 2 β- 2 γ- 3 )* α+ T (- 2 β- 3 )* γ- 3 β- 2 ))* k+ (T (2 β+ 2 γ+ 3 )* α+ T (2 β+ 3 )* γ+ 3 β+ 8 ))* k+ 3 * T (γ+ 1 )* T (α+ 1 )* T (β+ 1 ))* T (2 k- 1 )/ T ((k- 1 )* (2 k- 3 ))
389
- t2 = b2* ζ- ((T (2 k- α- β- γ- 6 )* k+ T (α+ β+ γ+ 4 ))* k+ T (γ+ 1 )* T (α+ 1 )* T (β+ 1 ))* T (2 k+ 1 )/ T (k- 1 )
390
- Nhi, Nmid1, Nmid2, Nlo = t0* Nhi + t1* Nmid1 + t2* Nmid2 - a3* Nlo, Nhi, Nmid1, Nmid2
391
- Dhi, Dmid1, Dmid2, Dlo = t0* Dhi + t1* Dmid1 + t2* Dmid2 - a3* Dlo, Dhi, Dmid1, Dmid2
392
- Thi, Tmid1, Tmid2, Tlo = Nhi/ Dhi, Thi, Tmid1, Tmid2
380
+ t0 = b0- ((T (2 k+ α+ β+ γ)* k- T (α+ β+ γ+ 2 ))* k- T (γ+ 1 )* T (α+ 1 )* T (β+ 1 ))* T (2 k+ 1 )/ T (k- 1 )* z
381
+ t1 = b1- (((T (6 k- 12 )* k+ (T (- 2 β- 2 γ- 3 )* α+ T (- 2 β- 3 )* γ- 3 β- 2 ))* k+ (T (2 β+ 2 γ+ 3 )* α+ T (2 β+ 3 )* γ+ 3 β+ 8 ))* k+ 3 * T (γ+ 1 )* T (α+ 1 )* T (β+ 1 ))* T (2 k- 1 )/ T ((k- 1 )* (2 k- 3 ))* z
382
+ t2 = b2- ((T (2 k- α- β- γ- 6 )* k+ T (α+ β+ γ+ 4 ))* k+ T (γ+ 1 )* T (α+ 1 )* T (β+ 1 ))* T (2 k+ 1 )/ T (k- 1 )* z
383
+ μhi, μmid1, μmid2, μlo = inv (t0 + (t1 + (t2 - a3* μmid2)* z* μmid1)* z* μhi), μhi, μmid1, μmid2
384
+ Rhi, Rmid1, Rmid2, Rlo = (t0* Rhi + (t1* Rmid1 + (t2* Rmid2 - a3* Rlo* μlo)* z* μmid2)* z* μmid1)* μhi, Rhi, Rmid1, Rmid2
393
385
if norm (a0) < eps ((absα+ k+ 1 )* (absβ+ k+ 1 )* (absγ+ k+ 1 ))
394
- return Thi
386
+ return Rhi
395
387
end
396
- Nhi /= a0
397
- Dhi /= a0
388
+ μhi *= a0
398
389
k += 1
399
390
end
400
391
k < kmax || @warn " Rational approximation to " * pFq2string (Val {3} (), Val {2} ())* " reached the maximum type of (" * string (kmax, " , " , kmax)* " )."
401
- return isfinite (Thi ) ? Thi : isfinite (Tmid1 ) ? Tmid1 : isfinite (Tmid2 ) ? Tmid2 : Tlo
392
+ return isfinite (Rhi ) ? Rhi : isfinite (Rmid1 ) ? Rmid1 : isfinite (Rmid2 ) ? Rmid2 : Rlo
402
393
end
403
394
404
395
# ₘFₙ(α;β;z)
0 commit comments