1       REAL*8 FUNCTION vbfdistr(ID1,ID2,ID3,ID4,HH1,HH2,PP,KEYIN)
 
   17       INTEGER I1,I2,I3,I4,ID1,ID2,ID3,ID4,H1,H2,HH1,HH2,BUF_H,KEY,KEYIN
 
   18       real*8 p(0:3,6), pp(0:3,6),ans
 
   22       INTEGER BUF_I,IGLU,I,J,K
 
   25       DATA    initialized/.false./
 
   27       LOGICAL FLIPER,TESTUJEMY
 
   30       testujemy=id1.eq.-222.and.id2.eq.1.and.id3.eq.-1.and.id4.eq.1
 
   33       IF(.NOT.initialized) 
THEN 
   38       IF (keyin.NE.keystored) 
THEN 
   39        CALL vbf_reinit(keyin) 
 
   45           WRITE(*,*) 
'non-standard state -- implementation not finished' 
   47       ELSE IF(key.NE.0.AND.key.NE.1) 
THEN 
   48           WRITE(*,*) 
'WRONG KEY' 
   55       IF (testujemy) 
WRITE(*,*) 
'idsy=',id1,id2,id3,id4
 
   63       IF(i1+i2.EQ.42.AND.i3+i4.EQ.0) 
THEN 
   65       ELSEIF(i3+i4.EQ.42.AND.i1+i2.EQ.0) 
THEN 
   67       ELSEIF(i1*i2*i3*i4.LT.0) 
THEN 
   72       IF(mod(i1+i2+i3+i4,2).EQ.1) 
THEN 
   77       IF(i1.LT.0.and.i2.LT.0.AND.(i3.GT.0.OR.i4.GT.0)) 
THEN 
   82       IF(i3.LT.0.and.i4.LT.0.AND.(i1.GT.0.OR.i2.GT.0)) 
THEN 
   90       IF(sign(mod(i1,2),i1)+sign(mod(i2,2),i2).NE.sign(mod(i3,2),i3)+sign
THEN 
   91         IF(i1+i2+i3+i4.LT.20) 
THEN  
  101       IF(i1.EQ.21) iglu=iglu+1 
 
  102       IF(i2.EQ.21) iglu=iglu+1 
 
  103       IF(i3.EQ.21) iglu=iglu+1 
 
  104       IF(i4.EQ.21) iglu=iglu+1
 
  107       IF(iglu.EQ.1.OR.iglu.GT.2) 
THEN 
  115       IF(iglu.EQ.2.AND.i1+i2.NE.i3+i4) 
THEN 
  117          IF(.NOT.(i1+i2.EQ.0.OR.i3+i4.EQ.0)) 
THEN 
  151       IF((i1*i1.EQ.25.OR.i2*i2.EQ.25.OR.i3*i3.EQ.25.OR.i4*i4.EQ.25)) 
THEN 
  159       if(testujemy) 
write(*,*) 
'doszlimy do stepX',i1,i2, i3, i4
 
  163       IF(i1*i2.LT.0.AND.i1+i2.LT.11.AND.i1**2.LT.i2**2) 
THEN 
  176       if(testujemy) 
write(*,*) 
'doszlimy do step2',i1,i2, i3, i4
 
  182      $    (i1.LT.0.OR.i1.EQ.21).AND.
 
  183      $    (i2.LT.0.OR.i2.EQ.21).AND.
 
  184      $    (i3.LT.0.OR.i3.EQ.21).AND.
 
  185      $    (i4.LT.0.OR.i4.EQ.21)     ) 
THEN 
  213       fliper=(i1*i2.LT.0.AND.i1+i2.LT.11)
 
  215         fliper=i2*i2.GT.i1*i1
 
  216         IF(id1*id2.EQ.-2.AND.(id1.EQ.1.OR.id1.EQ.-2)) fliper=.NOT.fliper
 
  242       if(testujemy) 
write(*,*) 
'doszlimy do step3',i1,i2,i3,i4
 
  246       IF(i1.LT.0.OR.(i2.EQ.21.AND.i1.NE.21)) 
THEN   
  260       IF(i1.GT.0.AND.i2.GT.0.AND.i1+i2.LT.11.AND.i1.LT.i2) 
THEN 
  278       IF(i3.LT.0.OR.(i4.EQ.21.AND.i3.NE.21)) 
THEN 
  292       IF(mod(i3,2).EQ.1.AND.mod(i4,2).EQ.0.AND.i3*i4.GT.0.AND.i3.NE.21) 
THEN 
  307       IF(mod(i3,2).EQ.1.AND.mod(i4,2).EQ.1.AND.i3*i4.GT.0.AND.i3.GT.i4.AND.i3.NE.
THEN 
  322       IF(mod(i3,2).EQ.0.AND.mod(i4,2).EQ.0.AND.i3*i4.GT.0.AND.i3.GT.i4) 
THEN 
  335       if(testujemy) 
write(*,*) 
'doszlimy do case-a ',i1,i2,i3,i4
 
  345       if(testujemy) 
write(*,*) 
'doszlimy do 0 case-a ',i1,i2,i3,i4
 
  346            IF(abs(i1).EQ.1) 
CALL ddx(p,i3,i4,h1,h2,key,ans)
 
  347            IF(abs(i1).EQ.2) 
CALL uux(p,i3,i4,h1,h2,key,ans)
 
  348            IF(abs(i1).EQ.3) 
CALL ssx(p,i3,i4,h1,h2,key,ans)
 
  349            IF(abs(i1).EQ.4) 
CALL ccx(p,i3,i4,h1,h2,key,ans)
 
  350       if(testujemy) 
write(*,*) 
'doszlimy do 0 case-a ',i1,i2,i3,i4,ans
 
  352            IF(abs(i1).EQ.2) 
CALL udx(p,i3,i4,h1,h2,key,ans)
 
  353            IF(abs(i1).EQ.4) 
CALL csx(p,i3,i4,h1,h2,key,ans)
 
  354            IF(abs(i1).EQ.3) 
CALL sux(p,i3,i4,h1,h2,key,ans)
 
  356       if(testujemy) 
write(*,*) 
'doszlimy do 2 case-a ',i1,i2,i3,i4
 
  357            IF(abs(i1).EQ.1) 
CALL dd(p,i3,i4,h1,h2,key,ans)
 
  358             IF(abs(i1).EQ.4) 
CALL cux(p,i3,i4,h1,h2,key,ans)
 
  359            IF(abs(i1).EQ.3) 
CALL sdx(p,i3,i4,h1,h2,key,ans)
 
  361            IF(abs(i1).EQ.2) 
CALL ud(p,i3,i4,h1,h2,key,ans)
 
  362            IF(abs(i1).EQ.4) 
CALL cdx(p,i3,i4,h1,h2,key,ans)
 
  364       if(testujemy) 
write(*,*) 
'doszlimy do 4 case-a ',i1,i2,i3,i4
 
  365            IF(abs(i1).EQ.2) 
CALL uu(p,i3,i4,h1,h2,key,ans)
 
  366            IF(abs(i1).EQ.1) 
CALL ds(p,i3,i4,h1,h2,key,ans)
 
  367            IF(abs(i1).EQ.3) 
CALL sd(p,i3,i4,h1,h2,key,ans)
 
  369            CALL gd(p,i3,i4,h1,h2,key,ans)
 
  371            CALL gu(p,i3,i4,h1,h2,key,ans)
 
  373            CALL gd(p,i3,i4,h1,h2,key,ans)
 
  375            CALL gu(p,i3,i4,h1,h2,key,ans)
 
  377            CALL gd(p,i3,i4,h1,h2,key,ans)
 
  379            CALL gg(p,i3,i4,h1,h2,key,ans)
 
  381            CALL cc(p,i3,i4,h1,h2,key,ans)
 
  383            CALL cs(p,i3,i4,h1,h2,key,ans)
 
  385            IF(abs(i1).EQ.1) 
CALL dc(p,i3,i4,h1,h2,key,ans)
 
  386            IF(abs(i1).EQ.4) 
CALL cd(p,i3,i4,h1,h2,key,ans)
 
  387            IF(abs(i1).EQ.3) 
CALL su(p,i3,i4,h1,h2,key,ans)
 
  388            IF(abs(i1).EQ.2) 
CALL us(p,i3,i4,h1,h2,key,ans)
 
  390            if(testujemy) 
write(*,*) 
'doszlismy do cu i1,i2=',i1,i2,i3,i4
 
  391            IF(abs(i1).EQ.3) 
CALL ss(p,i3,i4,h1,h2,key,ans)
 
  392            IF(abs(i1).EQ.4) 
CALL cu(p,i3,i4,h1,h2,key,ans)
 
  394       if(testujemy) 
write(*,*) 
'doszlimy do -2  case-a ',i1,i2,i3,i4
 
  395            IF(abs(i1).EQ.2) 
CALL ucx(p,i3,i4,h1,h2,key,ans)
 
  396            IF(abs(i1).EQ.1) 
CALL dsx(p,i3,i4,h1,h2,key,ans)
 
  398       if(testujemy) 
write(*,*) 
'doszlimy do -1  case-a ',i1,i2,i3,i4
 
  399            IF(abs(i1).EQ.2) 
CALL usx(p,i3,i4,h1,h2,key,ans)
 
  400            IF(abs(i1).EQ.3) 
CALL scx(p,i3,i4,h1,h2,key,ans)
 
  402       if(testujemy) 
write(*,*) 
'doszlimy do -3  case-a ',i1,i2,i3,i4
 
  403            CALL dcx(p,i3,i4,h1,h2,key,ans)
 
  408       IF(i3.NE.i4) ans=ans/2.d0   
 
  412       END FUNCTION vbfdistr