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