34 SUBROUTINE libtetrabz_polcmplx(ltetra,bvec,nb,nge,eig1,eig2,ngw,wght,ne,e0,comm)
BIND(C)
40 INTEGER(C_INT),
INTENT(IN) :: ltetra, nb, nge(3), ngw(3), ne
41 REAL(c_double),
INTENT(IN) :: bvec(9), eig1(nb,product(nge(1:3))), eig2(nb,product(nge(1:3)))
42 COMPLEX(C_DOUBLE_COMPLEX),
INTENT(IN) :: e0(ne)
43 COMPLEX(C_DOUBLE_COMPLEX),
INTENT(OUT) :: wght(ne*nb*nb,product(ngw(1:3)))
44 INTEGER(C_INT),
INTENT(IN),
OPTIONAL :: comm
47 INTEGER :: nt_local, nk_local, nkbz, ik, kintp(8)
48 INTEGER,
ALLOCATABLE :: ik_global(:,:), ik_local(:,:)
49 REAL(8) :: wlsm(4,20), wintp(1,8)
50 REAL(8),
ALLOCATABLE :: kvec(:,:)
51 COMPLEX(8),
ALLOCATABLE :: wghtd(:,:,:)
53 IF(
PRESENT(comm))
THEN
55 & nt_local,nkbz,ik_global,ik_local,kvec,comm)
58 & nt_local,nkbz,ik_global,ik_local,kvec)
63 ALLOCATE(wghtd(ne*nb*nb,1,nk_local))
64 CALL libtetrabz_polcmplx_main(wlsm,nt_local,ik_global,ik_local,nb,nkbz,eig1,eig2,ne,e0,nk_local,wghtd)
68 wght(1:ne*nb*nb,1:product(ngw(1:3))) = 0d0
71 wght(1:ne*nb*nb,kintp(1:8)) = wght(1:ne*nb*nb, kintp(1:8)) &
72 & + matmul(wghtd(1:ne*nb*nb,1:1,ik), wintp(1:1,1:8))
74 DEALLOCATE(wghtd, kvec)
79 CALL libtetrabz_polcmplx_main(wlsm,nt_local,ik_global,ik_local,nb,nkbz,eig1,eig2,ne,e0,nk_local,wght)
82 DEALLOCATE(ik_global, ik_local)
88 SUBROUTINE libtetrabz_polcmplx_main(wlsm,nt_local,ik_global,ik_local,nb,nkBZ,eig1,eig2,ne,e0,nk_local,polcmplx)
97 INTEGER,
INTENT(IN) :: nt_local, nb, nkBZ, nk_local, ne, &
98 & ik_global(20,nt_local), ik_local(20,nt_local)
99 REAL(8),
INTENT(IN) :: wlsm(4,20), eig1(nb,nkBZ), eig2(nb,nkBZ)
100 COMPLEX(8),
INTENT(IN) :: e0(ne)
101 COMPLEX(8),
INTENT(OUT) :: polcmplx(ne*nb,nb,nk_local)
103 INTEGER :: ib, indx(4), it
104 REAL(8) :: e(4), ei1(4,nb), ej1(4,nb), ei2(4), ej2(4,nb), thr = 1d-8, tsmall(4,4), v
105 COMPLEX(8) :: w1(ne*nb,4), w2(ne*nb,4)
107 polcmplx(1:ne*nb,1:nb,1:nk_local) = 0d0
116 ei1(1:4, ib) = matmul(wlsm(1:4,1:20), eig1(ib, ik_global(1:20,it)))
117 ej1(1:4, ib) = matmul(wlsm(1:4,1:20), eig2(ib, ik_global(1:20,it)))
123 w1(1:ne*nb,1:4) = 0d0
124 e(1:4) = ei1(1:4, ib)
127 IF(e(1) <= 0d0 .AND. 0d0 < e(2))
THEN
133 ei2(1:4 ) = matmul(tsmall(1:4,1:4), ei1(indx(1:4), ib))
134 ej2(1:4,1:nb) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),1:nb))
136 w1(1:ne*nb,indx(1:4)) = w1(1:ne*nb, indx(1:4)) &
137 & + v * matmul(w2(1:ne*nb,1:4), tsmall(1:4,1:4))
141 ELSE IF(e(2) <= 0d0 .AND. 0d0 < e(3))
THEN
147 ei2(1:4 ) = matmul(tsmall(1:4,1:4), ei1(indx(1:4), ib))
148 ej2(1:4,1:nb) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),1:nb))
150 w1(1:ne*nb,indx(1:4)) = w1(1:ne*nb, indx(1:4)) &
151 & + v * matmul(w2(1:ne*nb,1:4), tsmall(1:4,1:4))
159 ei2(1:4 ) = matmul(tsmall(1:4,1:4), ei1(indx(1:4), ib))
160 ej2(1:4,1:nb) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),1:nb))
162 w1(1:ne*nb,indx(1:4)) = w1(1:ne*nb, indx(1:4)) &
163 & + v * matmul(w2(1:ne*nb,1:4), tsmall(1:4,1:4))
171 ei2(1:4 ) = matmul(tsmall(1:4,1:4), ei1(indx(1:4), ib))
172 ej2(1:4,1:nb) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),1:nb))
174 w1(1:ne*nb,indx(1:4)) = w1(1:ne*nb, indx(1:4)) &
175 & + v * matmul(w2(1:ne*nb,1:4), tsmall(1:4,1:4))
179 ELSE IF(e(3) <= 0d0 .AND. 0d0 < e(4))
THEN
185 ei2(1:4 ) = matmul(tsmall(1:4,1:4), ei1(indx(1:4), ib))
186 ej2(1:4,1:nb) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),1:nb))
188 w1(1:ne*nb,indx(1:4)) = w1(1:ne*nb, indx(1:4)) &
189 & + v * matmul(w2(1:ne*nb,1:4), tsmall(1:4,1:4))
197 ei2(1:4 ) = matmul(tsmall(1:4,1:4), ei1(indx(1:4), ib))
198 ej2(1:4,1:nb) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),1:nb))
200 w1(1:ne*nb,indx(1:4)) = w1(1:ne*nb, indx(1:4)) &
201 & + v * matmul(w2(1:ne*nb,1:4), tsmall(1:4,1:4))
209 ei2(1:4 ) = matmul(tsmall(1:4,1:4), ei1(indx(1:4), ib))
210 ej2(1:4,1:nb) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),1:nb))
212 w1(1:ne*nb,indx(1:4)) = w1(1:ne*nb, indx(1:4)) &
213 & + v * matmul(w2(1:ne*nb,1:4), tsmall(1:4,1:4))
217 ELSE IF( e(4) <= 0d0 )
THEN
219 ei2(1:4 ) = ei1(1:4, ib)
220 ej2(1:4,1:nb) = ej1(1:4,1:nb)
222 w1(1:ne*nb,1:4) = w1(1:ne*nb,1:4) + w2(1:ne*nb,1:4)
230 polcmplx(1:ne*nb,ib,ik_local(1:20,it)) = polcmplx(1:ne*nb,ib, ik_local(1:20,it)) &
231 & + matmul(w1(1:ne*nb,1:4), wlsm(1:4,1:20))
240 polcmplx(1:ne*nb,1:nb,1:nk_local) = polcmplx(1:ne*nb,1:nb,1:nk_local) / dble(6 * nkbz)
255 INTEGER,
INTENT(IN) :: nb, ne
256 COMPLEX(8),
INTENT(IN) :: e0(ne)
257 REAL(8),
INTENT(IN) :: ei1(4), ej1(4,nb)
258 COMPLEX(8),
INTENT(OUT) :: w1(ne,nb,4)
260 INTEGER :: ib, indx(4)
261 REAL(8) :: de(4), e(4), thr = 1d-8, tsmall(4,4), v
262 COMPLEX(8) :: w2(ne,4)
266 w1(1:ne,ib,1:4) = 0d0
267 e(1:4) = - ej1(1:4, ib)
270 IF((e(1) <= 0d0 .AND. 0d0 < e(2)) .OR. (e(1) < 0d0 .AND. 0d0 <= e(2)))
THEN
276 de(1:4) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),ib) - ei1(indx(1:4)))
278 w1(1:ne,ib,indx(1:4)) = w1(1:ne,ib, indx(1:4)) &
279 & + v * matmul(w2(1:ne,1:4), tsmall(1:4,1:4))
283 ELSE IF((e(2) <= 0d0 .AND. 0d0 < e(3)) .OR. (e(2) < 0d0 .AND. 0d0 <= e(3)))
THEN
289 de(1:4) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),ib) - ei1(indx(1:4)))
291 w1(1:ne,ib,indx(1:4)) = w1(1:ne,ib, indx(1:4)) &
292 & + v * matmul(w2(1:ne,1:4), tsmall(1:4,1:4))
300 de(1:4) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),ib) - ei1(indx(1:4)))
302 w1(1:ne,ib,indx(1:4)) = w1(1:ne,ib, indx(1:4)) &
303 & + v * matmul(w2(1:ne,1:4), tsmall(1:4,1:4))
311 de(1:4) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),ib) - ei1(indx(1:4)))
313 w1(1:ne,ib,indx(1:4)) = w1(1:ne,ib, indx(1:4)) &
314 & + v * matmul(w2(1:ne,1:4), tsmall(1:4,1:4))
318 ELSE IF((e(3) <= 0d0 .AND. 0d0 < e(4)) .OR. (e(3) < 0d0 .AND. 0d0 <= e(4)))
THEN
324 de(1:4) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),ib) - ei1(indx(1:4)))
326 w1(1:ne,ib,indx(1:4)) = w1(1:ne,ib, indx(1:4)) &
327 & + v * matmul(w2(1:ne,1:4), tsmall(1:4,1:4))
335 de(1:4) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),ib) - ei1(indx(1:4)))
337 w1(1:ne,ib,indx(1:4)) = w1(1:ne,ib, indx(1:4)) &
338 & + v * matmul(w2(1:ne,1:4), tsmall(1:4,1:4))
346 de(1:4) = matmul(tsmall(1:4,1:4), ej1(indx(1:4),ib) - ei1(indx(1:4)))
348 w1(1:ne,ib,indx(1:4)) = w1(1:ne,ib, indx(1:4)) &
349 & + v * matmul(w2(1:ne,1:4), tsmall(1:4,1:4))
353 ELSE IF(e(4) <= 0d0)
THEN
355 de(1:4) = ej1(1:4,ib) - ei1(1:4)
357 w1(1:ne,ib,1:4) = w1(1:ne,ib,1:4) + w2(1:ne,1:4)
372 INTEGER,
INTENT(IN) :: ne
373 COMPLEX(8),
INTENT(IN) :: e0(ne)
374 REAL(8),
INTENT(IN) :: de(4)
375 COMPLEX(8),
INTENT(OUT) :: w1(ne,4)
377 INTEGER :: ie, indx(4)
378 REAL(8) :: e(4), thr, w2(2,4), x(4)
389 w1(ie,1:4) = 0.25d0 / (de(1:4) + e0(ie))
393 x(1:4) = (e(1:4) + dble(e0(ie))) / aimag(e0(ie))
395 thr = max(1d-3, maxval(x(1:4)) * 1d-2)
397 IF(abs(x(4) - x(3)) < thr)
THEN
398 IF(abs(x(4) - x(2)) < thr)
THEN
399 IF(abs(x(4) - x(1)) < thr)
THEN
403 w2(1,4) = 0.25d0 * x(4) / ((1d0 + x(4)**2))
404 w2(2,4) = 0.25d0 / ((1d0 + x(4)**2))
405 w2(1:2,3) = w2(1:2,4)
406 w2(1:2,2) = w2(1:2,4)
407 w2(1:2,1) = w2(1:2,4)
413 w2(1:2,4) = libtetrabz_polcmplx_1211(x(4),x(1))
414 w2(1:2,3) = w2(1:2,4)
415 w2(1:2,2) = w2(1:2,4)
416 w2(1:2,1) = libtetrabz_polcmplx_1222(x(1),x(4))
426 ELSE IF(abs(x(2) - x(1)) < thr )
THEN
430 w2(1:2,4) = libtetrabz_polcmplx_1221(x(4),x(2))
431 w2(1:2,3) = w2(1:2,4)
432 w2(1:2,2) = libtetrabz_polcmplx_1221(x(2),x(4))
433 w2(1:2,1) = w2(1:2,2)
446 w2(1:2,4) = libtetrabz_polcmplx_1231(x(4),x(1),x(2))
447 w2(1:2,3) = w2(1:2,4)
448 w2(1:2,2) = libtetrabz_polcmplx_1233(x(2),x(1),x(4))
449 w2(1:2,1) = libtetrabz_polcmplx_1233(x(1),x(2),x(4))
459 ELSE IF(abs(x(3) - x(2)) < thr)
THEN
460 IF(abs(x(3) - x(1)) < thr)
THEN
464 w2(1:2,4) = libtetrabz_polcmplx_1222(x(4),x(3))
465 w2(1:2,3) = libtetrabz_polcmplx_1211(x(3),x(4))
466 w2(1:2,2) = w2(1:2,3)
467 w2(1:2,1) = w2(1:2,3)
480 w2(1:2,4) = libtetrabz_polcmplx_1233(x(4),x(1),x(3))
481 w2(1:2,3) = libtetrabz_polcmplx_1231(x(3),x(1),x(4))
482 w2(1:2,2) = w2(1:2,3)
483 w2(1:2,1) = libtetrabz_polcmplx_1233(x(1),x(4),x(3))
493 ELSE IF(abs(x(2) - x(1)) < thr)
THEN
497 w2(1:2,4) = libtetrabz_polcmplx_1233(x(4),x(3),x(2))
498 w2(1:2,3) = libtetrabz_polcmplx_1233(x(3),x(4),x(2))
499 w2(1:2,2) = libtetrabz_polcmplx_1231(x(2),x(3),x(4))
500 w2(1:2,1) = w2(1:2,2)
527 w1(ie,indx(1:4)) = cmplx(w2(1,1:4) / aimag(e0(ie)), &
528 & w2(2,1:4) / (- aimag(e0(ie))), kind(0d0))
543 REAL(8),
INTENT(IN) :: g1, g2, g3, g4
546 REAL(8) :: w2, w3, w4
550 w2 = 2d0*(3d0*g2**2 - 1d0)*(atan(g2) - atan(g1)) + (g2**2 - &
551 & 3d0)*g2*log((1d0 + g2**2)/( 1d0 + g1**2))
552 w2 = -2d0*(g2**2 - 1d0) + w2/(g2 - g1 )
554 w3 = 2d0*(3d0*g3**2 - 1d0)*(atan(g3) - atan(g1)) + (g3**2 - &
555 & 3d0)*g3*log((1d0 + g3**2)/( 1d0 + g1**2))
556 w3 = -2d0*(g3**2 - 1d0) + w3/(g3 - g1 )
558 w4 = 2d0*(3d0*g4**2 - 1d0)*(atan(g4) - atan(g1)) + (g4**2 - &
559 & 3d0)*g4*log((1d0 + g4**2)/( 1d0 + g1**2))
560 w4 = -2d0*(g4**2 - 1d0) + w4/(g4 - g1 )
562 w2 = (w2 - w3)/(g2 - g3)
563 w4 = (w4 - w3)/(g4 - g3)
564 w(1) = (w4 - w2)/(2d0*(g4 - g2))
568 w2 = 2d0*(3d0 - g2**2)* &
569 & g2*(atan(g2) - atan(g1)) + (3d0*g2**2 - 1d0)* &
570 & log((1d0 + g2**2)/(1d0 + g1**2))
571 w2 = 4d0*g2 - w2/(g2 - g1)
573 w3 = 2d0*(3d0 - g3**2)* &
574 & g3*(atan(g3) - atan(g1)) + (3d0*g3**2 - 1d0)* &
575 & log((1d0 + g3**2)/(1d0 + g1**2))
576 w3 = 4d0*g3 - w3/(g3 - g1)
578 w4 = 2d0*(3d0 - g4**2)* &
579 & g4*(atan(g4) - atan(g1)) + (3d0*g4**2 - 1d0)* &
580 & log((1d0 + g4**2)/(1d0 + g1**2))
581 w4 = 4d0*g4 - w4/(g4 - g1)
583 w2 = (w2 - w3)/(g2 - g3)
584 w4 = (w4 - w3)/(g4 - g3)
585 w(2) = (w4 - w2)/(2d0*(g4 - g2))
591 FUNCTION libtetrabz_polcmplx_1231(g1,g2,g3)
RESULT(w)
595 REAL(8),
INTENT(IN) :: g1, g2, g3
602 w2 = 2d0*(-1d0 + 3d0*g2**2)*(atan(g2) - atan(g1)) + &
603 & g2*(-3d0 + g2**2)*log((1d0 + g2**2)/(1d0 + g1**2))
604 w2 = 2d0*(1d0 - g2**2) + w2/(g2 - g1)
605 w2 = -g1 + w2/(g2 - g1)
607 w3 = 2d0*(-1d0 + 3d0*g3**2)*(atan(g3) - atan(g1)) + &
608 & g3*(-3d0 + g3**2)*log((1d0 + g3**2)/(1d0 + g1**2))
609 w3 = 2d0*(1 - g3**2) + w3/(g3 - g1)
610 w3 = -g1 + w3/(g3 - g1)
612 w(1) = (w3 - w2)/(2d0*(g3 - g2))
617 & g2*(3d0 - g2**2)*(atan(g2) - atan(g1)) + (-1d0 + 3d0*g2**2)* &
618 & log((1d0 + g2**2)/(1d0 + g1**2))
619 w2 = 4d0*g2 - w2/(g2 - g1)
620 w2 = 1 + w2/(g2 - g1)
623 & g3*(3d0 - g3**2)*(atan(g3) - atan(g1)) + (-1d0 + 3d0*g3**2)* &
624 & log((1d0 + g3**2)/(1d0 + g1**2))
625 w3 = 4d0*g3 - w3/(g3 - g1)
626 w3 = 1 + w3/(g3 - g1)
628 w(2) = (w3 - w2)/(2d0*(g3 - g2))
630 END FUNCTION libtetrabz_polcmplx_1231
634 FUNCTION libtetrabz_polcmplx_1233(g1, g2, g3)
RESULT(w)
638 REAL(8),
INTENT(IN) :: g1, g2, g3
645 w2 = 2d0*(1d0 - 3d0*g2**2)*(atan(g2) - atan(g1)) + &
646 & g2*(3d0 - g2**2)*log((1d0 + g2**2)/(1d0 + g1**2))
647 w2 = 2d0*(1 - g2**2) - w2/(g2 - g1)
649 w3 = 2d0*(1d0 - 3d0*g3**2)*(atan(g3) - atan(g1)) + &
650 & g3*(3d0 - g3**2)*log((1d0 + g3**2)/(1d0 + g1**2))
651 w3 = 2d0*(1 - g3**2) - w3/(g3 - g1)
653 w2 = (w3 - w2)/(g3 - g2)
654 w3 = 4d0*(1d0 - 3d0*g1*g3)*(atan(g3) - atan(g1)) + (3d0*g1 + &
655 & 3d0*g3 - 3d0*g1*g3**2 + g3**3) * log((1d0 + g3**2)/( &
657 w3 = -4d0*(1d0 - g1**2) + w3/(g3 - g1)
658 w3 = 4d0*g1 + w3/(g3 - g1)
660 w(1) = (w3 - w2)/(2d0*(g3 - g2))
665 & g2*(3d0 - g2**2)*(atan(g2) - atan(g1)) + (-1d0 + 3d0*g2**2)* &
666 & log((1d0 + g2**2)/(1d0 + g1**2))
667 w2 = 4d0*g2 - w2/(g2 - g1)
670 & g3*(3d0 - g3**2)*(atan(g3) - atan(g1)) + (-1d0 + 3d0*g3**2)* &
671 & log((1d0 + g3**2)/(1d0 + g1**2))
672 w3 = 4d0*g3 - w3/(g3 - g1)
674 w2 = (w3 - w2)/(g3 - g2)
675 w3 = (3d0*g1 - 3d0*g1*g3**2 + 3d0*g3 + g3**3)*(atan(g3) - &
676 & atan(g1)) + (3d0*g1*g3 - 1d0)* &
677 & log((1d0 + g3**2)/(1d0 + g1**2))
678 w3 = w3/(g3 - g1) - 4d0*g1
679 w3 = w3/(g3 - g1) - 2d0
680 w3 = (2d0*w3)/(g3 - g1)
681 w(2) = (w3 - w2)/(2d0*(g3 - g2))
683 END FUNCTION libtetrabz_polcmplx_1233
687 FUNCTION libtetrabz_polcmplx_1221(g1,g2)
RESULT(w)
691 REAL(8),
INTENT(IN) :: g1, g2
696 w(1) = -2d0*(-1d0 + 2d0*g1*g2 + g2**2)*(atan(g2) - &
697 & atan(g1)) + (g1 + 2d0*g2 - g1*g2**2)* &
698 & log((1d0 + g2**2)/(1d0 + g1**2))
699 w(1) = 2d0*(-1d0 + g1**2) + w(1)/(g2 - g1)
700 w(1) = 3d0*g1 + w(1)/(g2 - g1)
701 w(1) = 2d0 + (3d0*w(1))/(g2 - g1)
702 w(1) = w(1)/(2d0*(g2 - g1))
706 w(2) = 2d0*(g1 + 2d0*g2 - g1*g2**2)*(atan(g2) - &
707 & atan(g1)) + (-1d0 + 2d0*g1*g2 + g2**2)* &
708 & log((1 + g2**2)/(1 + g1**2))
709 w(2) = -4d0*g1 + w(2)/(g2 - g1)
710 w(2) = -3d0 + w(2)/(g2 - g1)
711 w(2) = (3d0*w(2))/(2d0*(g2 - g1)**2)
713 END FUNCTION libtetrabz_polcmplx_1221
717 FUNCTION libtetrabz_polcmplx_1222(g1,g2)
RESULT(w)
721 REAL(8),
INTENT(IN) :: g1, g2
726 w(1) = 2d0*(-1d0 + g1**2 + 2d0*g1*g2)*(atan(g2) - &
727 & atan(g1)) + (-2d0*g1 - g2 + g1**2*g2) * log((1d0 + g2**2)/( &
729 w(1) = 2d0*(1d0 - g1**2) + w(1)/(g2 - g1)
730 w(1) = g1 - w(1)/(g2 - g1)
731 w(1) = 1d0 - (3d0*w(1))/(g2 - g1)
732 w(1) = w(1)/(2d0*(g2 - g1))
736 w(2) = 2d0*(-2d0*g1 - g2 + g1**2*g2)*(atan(g2) - atan(g1)) + (1d0 - &
737 & g1**2 - 2d0*g1*g2) * log((1d0 + g2**2)/(1d0 + g1**2))
738 w(2) = 4d0*g1 + w(2)/(g2 - g1)
739 w(2) = 1d0 + w(2)/(g2 - g1)
740 w(2) = (3d0*w(2))/(2d0*(g2 - g1)**2)
742 END FUNCTION libtetrabz_polcmplx_1222
746 FUNCTION libtetrabz_polcmplx_1211(g1,g2)
RESULT(w)
750 REAL(8),
INTENT(IN) :: g1, g2
755 w(1) = 2d0*(3d0*g2**2 - 1d0)*(atan(g2) - atan(g1)) + &
756 & g2*(g2**2 - 3d0)*log((1d0 + g2**2)/(1d0 + g1**2))
757 w(1) = 2d0*(1d0 - g1**2) + w(1)/(g2 - g1)
758 w(1) = -5d0*g1 + w(1)/(g2 - g1)
759 w(1) = -11d0 + (3d0*w(1))/(g2 - g1)
760 w(1) = w(1)/(6d0*(g2 - g1))
764 w(2) = 2d0*g2*(-3d0 + g2**2)*(atan(g2) - atan(g1)) + (1d0 - &
765 & 3d0*g2**2)*log((1d0 + g2**2)/(1d0 + g1**2))
766 w(2) = 4d0*g2 + w(2)/(g2 - g1)
767 w(2) = 1d0 + w(2)/(g2 - g1)
768 w(2) = w(2)/(2d0*(g2 - g1)**2)
770 END FUNCTION libtetrabz_polcmplx_1211