1c
2c     intermediates involving moments and separation distance
3c
4                  dir = dix*xr + diy*yr + diz*zr
5                  qix = qixx*xr + qixy*yr + qixz*zr
6                  qiy = qixy*xr + qiyy*yr + qiyz*zr
7                  qiz = qixz*xr + qiyz*yr + qizz*zr
8                  qir = qix*xr + qiy*yr + qiz*zr
9                  dkr = dkx*xr + dky*yr + dkz*zr
10                  qkx = qkxx*xr + qkxy*yr + qkxz*zr
11                  qky = qkxy*xr + qkyy*yr + qkyz*zr
12                  qkz = qkxz*xr + qkyz*yr + qkzz*zr
13                  qkr = qkx*xr + qky*yr + qkz*zr
14                  dik = dix*dkx + diy*dky + diz*dkz
15                  qik = qix*qkx + qiy*qky + qiz*qkz
16                  diqk = dix*qkx + diy*qky + diz*qkz
17                  dkqi = dkx*qix + dky*qiy + dkz*qiz
18                  qiqk = 2.0d0*(qixy*qkxy+qixz*qkxz+qiyz*qkyz)
19     &                      + qixx*qkxx + qiyy*qkyy + qizz*qkzz
20c
21c     extra intermediates needed for polarization energy
22c
23                  diu = dix*ukx + diy*uky + diz*ukz
24                  qiu = qix*ukx + qiy*uky + qiz*ukz
25                  uir = uix*xr + uiy*yr + uiz*zr
26                  dku = dkx*uix + dky*uiy + dkz*uiz
27                  qku = qkx*uix + qky*uiy + qkz*uiz
28                  ukr = ukx*xr + uky*yr + ukz*zr
29c
30c     additional intermediates involving moments and distance
31c
32                  dirx = diy*zr - diz*yr
33                  diry = diz*xr - dix*zr
34                  dirz = dix*yr - diy*xr
35                  dkrx = dky*zr - dkz*yr
36                  dkry = dkz*xr - dkx*zr
37                  dkrz = dkx*yr - dky*xr
38                  dikx = diy*dkz - diz*dky
39                  diky = diz*dkx - dix*dkz
40                  dikz = dix*dky - diy*dkx
41                  qirx = qiz*yr - qiy*zr
42                  qiry = qix*zr - qiz*xr
43                  qirz = qiy*xr - qix*yr
44                  qkrx = qkz*yr - qky*zr
45                  qkry = qkx*zr - qkz*xr
46                  qkrz = qky*xr - qkx*yr
47                  qikx = qky*qiz - qkz*qiy
48                  qiky = qkz*qix - qkx*qiz
49                  qikz = qkx*qiy - qky*qix
50                  qixk = qixx*qkx + qixy*qky + qixz*qkz
51                  qiyk = qixy*qkx + qiyy*qky + qiyz*qkz
52                  qizk = qixz*qkx + qiyz*qky + qizz*qkz
53                  qkxi = qkxx*qix + qkxy*qiy + qkxz*qiz
54                  qkyi = qkxy*qix + qkyy*qiy + qkyz*qiz
55                  qkzi = qkxz*qix + qkyz*qiy + qkzz*qiz
56                  qikrx = qizk*yr - qiyk*zr
57                  qikry = qixk*zr - qizk*xr
58                  qikrz = qiyk*xr - qixk*yr
59                  qkirx = qkzi*yr - qkyi*zr
60                  qkiry = qkxi*zr - qkzi*xr
61                  qkirz = qkyi*xr - qkxi*yr
62                  diqkx = dix*qkxx + diy*qkxy + diz*qkxz
63                  diqky = dix*qkxy + diy*qkyy + diz*qkyz
64                  diqkz = dix*qkxz + diy*qkyz + diz*qkzz
65                  dkqix = dkx*qixx + dky*qixy + dkz*qixz
66                  dkqiy = dkx*qixy + dky*qiyy + dkz*qiyz
67                  dkqiz = dkx*qixz + dky*qiyz + dkz*qizz
68                  diqkrx = diqkz*yr - diqky*zr
69                  diqkry = diqkx*zr - diqkz*xr
70                  diqkrz = diqky*xr - diqkx*yr
71                  dkqirx = dkqiz*yr - dkqiy*zr
72                  dkqiry = dkqix*zr - dkqiz*xr
73                  dkqirz = dkqiy*xr - dkqix*yr
74                  dqikx = diy*qkz - diz*qky + dky*qiz - dkz*qiy
75                             - 2.0d0*(qixy*qkxz+qiyy*qkyz+qiyz*qkzz
76                                     -qixz*qkxy-qiyz*qkyy-qizz*qkyz)
77                  dqiky = diz*qkx - dix*qkz + dkz*qix - dkx*qiz
78                             - 2.0d0*(qixz*qkxx+qiyz*qkxy+qizz*qkxz
79                                     -qixx*qkxz-qixy*qkyz-qixz*qkzz)
80                  dqikz = dix*qky - diy*qkx + dkx*qiy - dky*qix
81                             - 2.0d0*(qixx*qkxy+qixy*qkyy+qixz*qkyz
82                                     -qixy*qkxx-qiyy*qkxy-qiyz*qkxz)
83