2
subroutine ffcxs3(cs3,ipi12,y,z,dyz,d2yzz,dy2z,xpi,piDpj,ii,ns,
4
***#[*comment:***********************************************************
6
* calculates the s3 as defined in appendix b. *
7
* (ip = ii+3, is1 = ii, is2 = ii+1) *
9
* log( xk*y^2 + (-xk+xm1-xm2)*y + xm2 - i*eps ) *
10
* /1 - log( ... ) |y=yi *
11
* s3 = \ dy -------------------------------------------------- *
14
* = r(yi,y-,+) + r(yi,y+,-) *
16
* with y+- the roots of the argument of the logarithm. *
17
* the sign of the argument to the logarithms in r is passed *
20
* input: y(4),z(4) (real) roots in form (z-,z+,1-z-,1-z+) *
21
* dyz(2,2),d2yzz, (real) y() - z(), y+ - z- - z+ *
22
* dy2z(4) (real) y() - 2z() *
23
* xpi (real(ns)) p(i).p(i) (B&D metric) i=1,3 *
24
* m(i)^2 = si.si i=4,6 *
25
* ii (integer) xk = xpi(ii+3) etc *
26
* ns (integer) size of arrays *
27
* isoort (integer) returns kind of action taken *
28
* cs3 (complex)(20) assumed zero. *
29
* ccy (complex)(3) if i0 != 0: complex y *
31
* output: cs3 (complex) mod factors pi^2/12, in array *
32
* ipi12 (integer) these factors *
33
* ier (integer) 0=ok 1=inaccurate 2=error *
35
* calls: ffcrr,ffcxr,real/dble,DCMPLX,log,ffadd1,ffadd2,ffadd3 *
37
***#]*comment:***********************************************************
43
integer ipi12(2),ii,ns,isoort(2),ier
44
DOUBLE COMPLEX cs3(20)
45
DOUBLE PRECISION y(4),z(4),dyz(2,2),d2yzz,dy2z(4),
46
+ xpi(ns),piDpj(ns,ns)
50
integer i,ip,ieps(2),ipi12p(2),ier0,i2,i3
51
DOUBLE COMPLEX c,csum,cs3p(14)
52
DOUBLE PRECISION yy,yy1,zz,zz1,dyyzz,xdilog,xlog,x00(3)
53
DOUBLE PRECISION absc,xmax
59
absc(c) = abs(DBLE(c)) + abs(DIMAG(c))
63
if ( ltest .and. ns .ne. 6 )
64
+ print *,'ffcxs3: error: only for ns=6, not ',ns
66
if ( isoort(2) .ne. 0 ) then
67
if ( (z(2).gt.z(1) .or. z(1).eq.z(2) .and. z(4).lt.z(3) )
68
+ .eqv. xpi(ip) .gt. 0 ) then
76
if ( piDpj(ip,ii) .gt. 0 ) then
85
* #[ special case |z| >> |y|:
86
if ( xpi(ip).lt.0 .and. max(abs(y(2)),abs(y(4))) .lt.
87
+ xloss*min(abs(z(1)), abs(z(2)))/2 ) then
89
* we will obtain cancellations of the type Li_2(x) + Li_2(-x)
93
print *,'ffcxs3: special case |z| >> |y|'
94
print *,' y,y1 = ',y(2),y(4)
95
print *,' z,z1- = ',z(1),z(3)
96
print *,' z,z1+ = ',z(2),z(4)
100
if ( y(2) .eq. 0 ) goto 10
103
if ( lwarn .and. abs(zz) .lt. xloss )
104
+ call ffwarn(44,ier,abs(zz),x1)
105
dyyzz = dyz(2,2)*yy/y(2)
106
call ffcxr(cs3(1),ipi12(1),yy,yy1,zz,zz1,dyyzz,.FALSE.,x0,
107
+ x0,x0,.FALSE.,x00,0,ier)
109
if ( y(4) .eq. 0 ) goto 30
112
if ( lwarn .and. abs(zz) .lt. xloss )
113
+ call ffwarn(44,ier,abs(zz),x1)
114
dyyzz = -yy*dyz(2,2)/y(4)
115
call ffcxr(cs3(8),ipi12(2),yy,yy1,zz,zz1,dyyzz,.FALSE.,x0,
116
+ x0,x0,.FALSE.,x00,0,ier)
120
* And now the remaining Li_2(x^2) terms
121
call ffxli2(xdilog,xlog,(y(2)/dyz(2,1))**2,ier)
123
call ffxli2(xdilog,xlog,(y(4)/dyz(2,1))**2,ier)
132
call ffcxr(cs3p(1),ipi12p(1),y(2),y(4),z(1),z(3),
133
+ dyz(2,1),.FALSE.,x0,x0,x0,.FALSE.,x00,ieps(1),ier0)
134
call ffcxr(cs3p(8),ipi12p(2),y(2),y(4),z(2),z(4),
135
+ dyz(2,2),.FALSE.,x0,x0,x0,.FALSE.,x00,ieps(2),ier0)
139
csum = csum + cs3p(i)
140
xmax = max(xmax,absc(csum))
142
csum = csum + (ipi12p(1)+ipi12(2))*DBLE(pi12)
143
print '(a,3g20.10,3i3)','cmp',csum,xmax,ipi12p,ier0
148
* #] special case |z| >> |y|:
150
if ( xpi(ip) .eq. 0 ) then
155
if ( lwrite ) print *, 'ieps = ',ieps
156
if ( isoort(1) .ne. 0 ) call ffcxr(cs3(1),ipi12(1),y(2),y(4),
157
+ z(1),z(3),dyz(2,1),ld2yzz,d2yzz,z(2),z(4),.TRUE.,dy2z(1),
159
if ( isoort(2) .ne. 0 ) then
160
if ( mod(isoort(2),10) .eq. 2 ) then
161
* both roots are equal: multiply by 2
162
if ( lwrite ) print *,'ffcxs3: skipped next R as it ',
165
cs3(i) = 2*DBLE(cs3(i))
167
ipi12(1) = 2*ipi12(1)
169
call ffcxr(cs3(8),ipi12(2),y(2),y(4),z(2),z(4),dyz(2,2),
170
+ ld2yzz,d2yzz,z(1),z(3),.TRUE.,dy2z(2),ieps(2),ier)
179
if ( cs3(i).ne.0 ) print '(i3,2g20.10,1x)',i,cs3(i)
181
print '(a3,2g20.10,1x)','pi ',(ipi12(1)+ipi12(2))*pi12
182
print *,'+-----------'
185
910 csum = csum + cs3(i)
186
csum = csum+(ipi12(1)+ipi12(2))*DBLE(pi12)
187
print '(a,2g20.10)','Si ',csum
188
print *,' ipi12,ier=',ipi12,ier
195
subroutine ffcs3(cs3,ipi12,cy,cz,cdyz,cd2yzz,cpi,cpiDpj,ii,ns,
197
***#[*comment:***********************************************************
199
* calculates the s3 as defined in appendix b. *
201
* log( cpi(ii+3)*y^2 + (cpi(ii+3)+cpi(ii)-cpi(ii+1))*y *
202
* /1 + cpi(ii+1)) - log( ... ) |y=cyi *
203
* s3 = \ dy ---------------------------------------------------- *
206
* = r(cyi,cy+) + r(cyi,cy-) + ( eta(-cy-,-cy+) - *
207
* eta(1-cy-,1-cy+) - eta(...) )*log(1-1/cyi) *
209
* with y+- the roots of the argument of the logarithm. *
211
* input: cy(4) (complex) cy(1)=y^-,cy(2)=y^+,cy(i+2)=1-cy(1) *
212
* cz(4) (complex) cz(1)=z^-,cz(2)=z^+,cz(i+2)=1-cz(1) *
213
* cpi(6) (complex) masses & momenta (B&D) *
214
* ii (integer) position of cp,cma,cmb in cpi *
215
* ns (integer) size of arrays *
216
* isoort(2)(integer) returns the kind of action taken *
217
* cs3 (complex)(14) assumed zero. *
219
* output: cs3 (complex) mod factors ipi12 *
220
* ipi12(2) (integer) these factors *
221
* ier (integer) 0=ok, 1=numerical problems, 2=error *
223
* calls: ffcrr,DIMAG,DBLE,zfflog *
225
***#]*comment:***********************************************************
231
integer ipi12(2),ii,ns,isoort(2),ier
232
DOUBLE COMPLEX cs3(20),cpi(ns),cpiDpj(ns,ns)
233
DOUBLE COMPLEX cy(4),cz(4),cdyz(2,2),cd2yzz
237
integer i,ip,ieps(2),ieps0,ni(4),ipi12p(2),ier0,ntot,i2,i3
239
DOUBLE COMPLEX c,csum,zdilog,zlog,cyy,cyy1,czz,czz1,cdyyzz
241
DOUBLE PRECISION absc,xmax,y,y1,z,z1,dyz,d2yzz,zz,zz1,
250
absc(c) = abs(DBLE(c)) + abs(DIMAG(c))
254
if ( ns .ne. 6 ) then
255
print *,'ffcs3: error: only for ns=6, not ',ns
260
call ffieps(ieps,cz(1),cpi(ip),cpiDpj(ip,ii),isoort)
264
* #[ special case |cz| >> |cy|:
265
if ( isoort(2) .ne. 0 .and. max(absc(cy(2)),absc(cy(4))) .lt.
266
+ xloss*min(absc(cz(1)),absc(cz(2)))/2 ) then
268
* we will obtain cancellations of the type Li_2(x) + Li_2(-x)
271
if ( lwrite ) print *,'Special case |cz| >> |cy|'
272
cyy = cdyz(2,1)/cd2yzz
273
cyy1 = cdyz(2,2)/cd2yzz
274
if ( absc(cy(2)) .lt. xclogm ) then
275
if ( DIMAG(cy(2)) .eq. 0 .and. abs(DBLE(cy(2))) .gt.
277
czz = cz(2)*cyy*DCMPLX(1/DBLE(cy(2)))
278
cdyyzz = cyy*cdyz(2,2)*DCMPLX(1/DBLE(cy(2)))
279
elseif ( cy(2) .eq. 0 .and. cz(2) .ne. 0 .and. cyy
284
* the answer is rounded off to zero
285
if (lwarn) call ffwarn(42,ier,absc(cy(2)),xclogm)
288
czz = cz(2)*cyy/cy(2)
289
cdyyzz = cyy*cdyz(2,2)/cy(2)
292
if ( lwarn .and. absc(czz) .lt. xloss )
293
+ call ffwarn(43,ier,absc(czz),x1)
294
if ( isoort(1) .eq. -10 ) then
298
* do not know the im part
301
call ffcrr(cs3(1),ipi12(1),cyy,cyy1,czz,czz1,cdyyzz,.FALSE.,
302
+ c0,c0,c0,-1,ieps0,ier)
304
if ( absc(cy(4)) .lt. xclogm ) then
305
if ( DIMAG(cy(4)) .eq. 0 .and. abs(DBLE(cy(4))) .gt.
307
czz = cz(4)*cyy*DCMPLX(1/DBLE(cy(4)))
308
cdyyzz = -cyy*cdyz(2,2)*DCMPLX(1/DBLE(cy(4)))
309
elseif ( cy(4) .eq. 0 .and. cz(4) .ne. 0 .and. cyy
314
* the answer is rounded off to zero
315
if (lwarn) call ffwarn(42,ier,absc(cy(4)),xclogm)
318
czz = cz(4)*cyy/cy(4)
319
cdyyzz = -cyy*cdyz(2,2)/cy(4)
322
if ( lwarn .and. absc(czz) .lt. xloss )
323
+ call ffwarn(43,ier,absc(czz),x1)
324
call ffcrr(cs3(8),ipi12(2),cyy,cyy1,czz,czz1,cdyyzz,.FALSE.,
325
+ c0,c0,c0,-1,ieps0,ier)
331
* And now the remaining Li_2(x^2) terms
334
c = cy(2)*cy(2)/(cdyz(2,1)*cdyz(2,1))
335
call ffzli2(zdilog,zlog,c,.FALSE.,ier)
338
c = cy(4)*cy(4)/(cdyz(2,1)*cdyz(2,1))
339
call ffzli2(zdilog,zlog,c,.FALSE.,ier)
349
call ffcrr(cs3p(1),ipi12p(1),cy(2),cy(4),cz(1),
350
+ cz(3),cdyz(2,1),.TRUE.,cd2yzz,cz(2),
351
+ cz(4),isoort(1),ieps(1),ier0)
352
call ffcrr(cs3p(8),ipi12p(2),cy(2),cy(4),cz(2),
353
+ cz(4),cdyz(2,2),.TRUE.,cd2yzz,cz(1),
354
+ cz(3),isoort(2),ieps(2),ier0)
358
csum = csum + cs3p(i)
359
xmax = max(xmax,absc(csum))
361
csum = csum + (ipi12p(1)+ipi12(2))*DBLE(pi12)
362
print '(a,3g20.10,3i3)','cmp',csum,xmax,ipi12p,ier0
367
* #] special case |cz| >> |cy|:
369
if ( isoort(2) .eq. 0 ) then
374
if ( isoort(1) .eq. 0 ) then
376
elseif ( mod(isoort(1),10).eq.0 .or. mod(isoort(1),10).eq.-1
377
+ .or. mod(isoort(1),10).eq.-3 ) then
378
call ffcrr(cs3(1),ipi12(1),cy(2),cy(4),cz(1),cz(3),
379
+ cdyz(2,1),ld2yzz,cd2yzz,cz(2),cz(4),isoort(1),
381
elseif ( mod(isoort(1),10) .eq. -5 .or. mod(isoort(1),10) .eq.
387
dyz = DBLE(cdyz(2,1))
393
call ffcxr(cs3(1),ipi12(1),y,y1,z,z1,dyz,ld2yzz,d2yzz,zz,zz1
394
+ ,.FALSE.,x00,ieps(1),ier)
399
if ( isoort(2) .eq. 0 ) then
401
elseif ( mod(isoort(2),5) .eq. 0 ) then
402
if ( lwrite ) print *,'ffcs3: skipped next R as it is the ',
405
100 cs3(i) = 2*DBLE(cs3(i))
406
ipi12(1) = 2*ipi12(1)
407
elseif ( mod(isoort(2),10).eq.-1 .or. mod(isoort(1),10).eq.-3 )
409
call ffcrr(cs3(8),ipi12(2),cy(2),cy(4),cz(2),cz(4),
410
+ cdyz(2,2),ld2yzz,cd2yzz,cz(1),cz(3),isoort(2),
412
elseif ( mod(isoort(2),10) .eq. -6 ) then
417
dyz = DBLE(cdyz(2,2))
423
call ffcxr(cs3(8),ipi12(2),y,y1,z,z1,dyz,ld2yzz,d2yzz,zz,zz1
424
+ ,.FALSE.,x00,ieps(2),ier)
431
if ( mod(isoort(1),10).eq.-5 .or. mod(isoort(1),10).eq.-6 )
433
if ( mod(isoort(2),10).ne.-5 .and. mod(isoort(1),10).ne.-6
435
print *,'ffcxs3: error: I assumed both would be real!'
438
* we called ffcxr - no eta's
439
elseif ( DIMAG(cpi(ip)).eq.0 ) then
440
call ffgeta(ni,cz(1),cdyz(1,1),cd2yzz,
441
+ cpi(ip),cpiDpj(ii,ip),ieps,isoort,ier)
442
if ( lwrite ) print *,'ffcs3: eta''s are ',ni
443
ntot = ni(1) + ni(2) + ni(3) + ni(4)
444
if ( ntot .ne. 0 ) call ffclgy(cs3(15),ipi12(2),ntot,
445
+ cy(1),cz(1),cd2yzz,ier)
448
* cpi(ip) is really complex (occurs in transformed
451
print *,'THIS PART IS NOT READY ',
452
+ 'and should not be reached'
460
if ( cs3(i).ne.0 ) print '(i3,2g20.10,1x)',i,cs3(i)
462
print '(a3,2g20.10,1x)','pi ',(ipi12(1)+ipi12(2))*pi12
463
print *,'+-----------'
466
910 csum = csum + cs3(i)
467
csum = csum+(ipi12(1)+ipi12(2))*DBLE(pi12)
468
print '(a,2g20.10)','Si ',csum
469
print *,' ipi12,ier=',ipi12,ier
475
subroutine ffclgy(cs3,ipi12,ntot,cy,cz,cd2yzz,ier)
476
***#[*comment:***********************************************************
478
* calculates the the difference of two S's with cy(3,4),cz(3,4), *
479
* cy(4)cz(3)-cy(3)cz(4) given. Note the difference with ffdcs4, *
480
* in which the cy's are the same and only the cz's different. *
481
* Here both can be different. Also we skip an intermediat *
484
* input: cy(4) (complex) cy,1-cy in S with s3,s4 *
485
* cz(4) (complex) cz,1-cz in S with s3,s4 *
486
* cdyz(2,2) (complex) cy - cz *
487
* cd2yzz (complex) 2*cy - cz+ - cz- *
488
* cdyzzy(4) (complex) cy(i,4)*cz(i,4)-cy(i,3)*cz(i,4) *
489
* cpiDpj(6,6) (complex) usual *
490
* cs3 (complex) assumed zero. *
492
* output: cs3 (complex) mod factors pi^2/12, in array *
493
* ipi12 (integer) these factors *
494
* isoort (integer) returns kind of action taken *
495
* ier (integer) number of digits lost *
497
***#]*comment:***********************************************************
504
DOUBLE COMPLEX cy(4),cz(4),cd2yzz
505
integer ipi12,ntot,ier
510
DOUBLE COMPLEX c,cc,clogy,c2y1,zfflog,zfflo1,csum
511
DOUBLE PRECISION absc
519
absc(c) = abs(DBLE(c)) + abs(DIMAG(c))
523
if ( 1 .lt. xloss*absc(cy(2)) ) then
524
clogy = zfflo1(1/cy(2),ier)
526
if ( absc(cy(2)) .lt. xclogm .or. absc(cy(4)) .lt. xclogm )
528
if ( ntot .ne. 0 ) call fferr(15,ier)
532
if ( DBLE(c) .gt. -abs(DIMAG(c)) ) then
533
clogy = zfflog(c,0,c0,ier)
535
* take out the factor 2*pi^2
537
if ( absc(cc) .lt. xloss ) then
538
c2y1 = -cd2yzz - cz(1) + cz(4)
539
if ( absc(c2y1) .lt. xloss*max(absc(cz(1)),
540
+ absc(cz(4))) ) then
541
c2y1 = -cd2yzz - cz(2) + cz(3)
542
if ( lwarn .and. absc(c2y1) .lt. xloss*max(
543
+ absc(cz(2)),absc(cz(3))) ) call ffwarn(
544
+ 56,ier,absc(c2y1),absc(cy(2)))
547
clogy = zfflo1(csum,ier)
550
print *,'c+ = ',-1+csum
554
clogy = zfflog(-c,0,c0,ier)
556
if ( DIMAG(c) .lt. -precc*absc(c) .or.
557
+ DIMAG(csum) .lt. -precc*absc(csum) ) then
559
elseif ( DIMAG(c) .gt. precc*absc(c) .or.
560
+ DIMAG(csum) .gt. precc*absc(csum) ) then
569
if ( ltest .and. cs3 .ne. 0 ) then
570
print *,'ffclgy: error: cs3 al bezet! ',cs3
572
cs3 = cs3 + ntot*c2ipi*clogy
573
if ( ipi .ne. 0 ) then
574
ipi12 = ipi12 - 24*ntot*ipi
580
subroutine ffieps(ieps,cz,cp,cpDs,isoort)
581
***#[*comment:***********************************************************
583
* Get the ieps prescription in such a way that it is compatible *
584
* with the imaginary part of cz if non-zero, compatible with the *
585
* real case if zero. *
587
* Input: cz complex(4) the roots z-,z+,1-z-,1-z+ *
590
* isoort integer(2) which type of Ri *
592
* Output: ieps integer(2) z -> z-ieps*i*epsilon *
593
* will give correct im part *
595
***#]*comment:***********************************************************
601
integer ieps(2),isoort(2)
602
DOUBLE COMPLEX cp,cpDs,cz(4)
606
if ( DIMAG(cp) .ne. 0 ) then
607
* do not calculate ANY eta terms, we'll do them ourselves.
610
elseif ( isoort(2) .ne. 0 ) then
611
if ( DIMAG(cz(1)) .lt. 0 ) then
613
if ( DIMAG(cz(2)) .lt. 0 ) then
618
elseif ( DIMAG(cz(1)) .gt. 0 ) then
620
if ( DIMAG(cz(2)) .le. 0 ) then
626
if ( DIMAG(cz(2)) .lt. 0 ) then
629
elseif ( DIMAG(cz(2)) .gt. 0 ) then
633
if ( (DBLE(cz(2)).gt.DBLE(cz(1))
634
+ .or. (DBLE(cz(1)).eq.DBLE(cz(2))
635
+ .and. DBLE(cz(4)).lt.DBLE(cz(3)))
636
+ ) .eqv. DBLE(cp).gt.0 ) then
646
if ( DIMAG(cz(1)) .lt. 0 ) then
648
elseif ( DIMAG(cz(1)) .gt. 0 ) then
650
elseif ( DBLE(cpDs) .gt. 0 ) then
661
subroutine ffgeta(ni,cz,cdyz,cd2yzz,cp,cpDs,ieps,isoort,ier)
662
***#[*comment:***********************************************************
664
* Get the eta terms which arise from splitting up *
665
* log(p2(x-z-)(x-z+)) - log(p2(y-z-)(y-z+)) *
667
* Input: cz complex(4) the roots z-,z+,1-z-,1-z+ *
668
* cdyz complex(2,2) y-z *
669
* cd2yzz complex(2) 2y-(z-)-(z+) *
672
* ieps integer(2) the assumed im part if Im(z)=0 *
673
* isoort integer(2) which type of Ri *
675
* Output: ni integer(4) eta()/(2*pi*i) *
677
***#]*comment:***********************************************************
683
integer ni(4),ieps(2),isoort(2),ier
684
DOUBLE COMPLEX cp,cpDs,cz(4),cdyz(2,2),cd2yzz
688
integer i,nffeta,nffet1
696
* #[ complex masses or imaginary roots:
698
* only complex because of complex roots in y or z
699
* [checked and in agreement with ieps definition 23-sep-1991]
701
if ( lwrite ) print *,'ffgeta: isoort = ',isoort
703
* isoort = +1: y is real, z is real
704
* isoort = -1-n*10: y is complex, possibly z as well
705
* isoort = -3-n*10: y,z complex, (y-z-)*(y-z+) real
706
* isoort = 0: y is complex, one z root only
707
* isoort = -10-n*10: y is real, z is complex
708
* isoort = -5,6-n*10: y,z real
710
if ( isoort(1) .gt. 0 ) then
718
elseif ( mod(isoort(1),10) .ne. 0 .and. isoort(2) .ne. 0 ) then
719
cmip = DCMPLX(DBLE(x0),-DBLE(cp))
721
* ni(1) = eta(p2,(x-z-)(x-z+)) = 0 by definition (see ni(3))
722
* ni(2) = eta(x-z-,x-z+)
725
if ( ieps(1) .gt. 0 .neqv. ieps(2) .gt. 0 ) then
728
ni(2) = nffet1(-cz(1),-cz(2),cmip,ier)
729
if ( cz(3).ne.0 .and. cz(4).ne.0 ) then
730
i = nffet1(cz(3),cz(4),cmip,ier)
731
if ( i .ne. ni(2) ) call fferr(53,ier)
735
* ni(3) compensates for whatever convention we chose in ni(1)
736
* ni(4) = -eta(y-z-,y-z+)
738
*** if ( DBLE(cd2yzz).eq.0 .and. ( DIMAG(cz(1)).eq.0 .and.
739
*** + DIMAG(cz(2)).eq.0 .or. DBLE(cdyz(2,1)).eq.0 .and.
740
*** + DBLE(cdyz(2,2)) .eq. 0 ) ) then
741
if ( mod(isoort(1),10).eq.-3 ) then
742
* follow the i*epsilon prescription as (y-z-)(y-z+) real
745
if ( DIMAG(cdyz(2,1)).eq.0 .or. DIMAG(cdyz(2,2))
746
+ .eq.0 ) print *,'ffgeta: error: calling nffet1',
747
+ ' with im(y-z-)=im(y-z+)=0: ',cdyz(2,1),cdyz(2,2)
749
ni(4) = -nffet1(cdyz(2,1),cdyz(2,2),cmip,ier)
751
if ( DBLE(cp) .lt. 0 .and. DIMAG(cdyz(2,1)*
752
+ cdyz(2,2)) .lt. 0 ) then
757
ni(4) = -nffeta(cdyz(2,1),cdyz(2,2),ier)
759
elseif ( (mod(isoort(1),10).eq.-1 .or. mod(isoort(1),10).eq.-3)
760
+ .and. isoort(2) .eq. 0 ) then
762
if ( DIMAG(cz(1)) .ne. 0 ) then
763
ni(2) = nffet1(-cpDs,-cz(1),DCMPLX(DBLE(0),
766
ni(2) = nffet1(-cpDs,DCMPLX(DBLE(0),DBLE(1)),
767
+ DCMPLX(DBLE(0),DBLE(-1)),ier)
770
ni(4) = -nffeta(-cpDs,cdyz(2,1),ier)
777
* #] complex masses or imaginary roots: