Jspice3
distfns.c
Go to the documentation of this file.
1 /***************************************************************************
2 JSPICE3 adaptation of Spice3f2 - Copyright (c) Stephen R. Whiteley 1992
3 Copyright 1990 Regents of the University of California. All rights reserved.
4 Authors: 1988 Jaijeet S Roychowdhury
5  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #include "spice.h"
9 #include <math.h>
10 #define JOB char
11 #include "distodef.h"
12 #include "distoext.h"
13 
14 /*
15  * all subFns are local to this file so they need not be renamed to
16  * the awful 7 letter standard; however, for reasons of uniformity,
17  * they are being renamed, losing all readability in the process.
18  * the renaming convention is as follows:
19  * example: 3v3F1m2
20  * 3v => 3 variable term xyz
21  * 2F1m2 => Two F1 minus F2
22  * therefore the old name would be : S3v3F1minusF2
23  * for the imaginary sub functions, the v is replaced by an i
24  *
25  */
26 
27 
28 double
29 S2v2F1(cxy, r1h1x, i1h1x, r1h1y, i1h1y)
30 
31 double cxy, r1h1x, i1h1x, r1h1y, i1h1y;
32 {
33  return (cxy*(r1h1x*r1h1y - i1h1x*i1h1y));
34 }
35 
36 
37 double
38 S2i2F1(cxy, r1h1x, i1h1x, r1h1y, i1h1y)
39 
40 double cxy, r1h1x, i1h1x, r1h1y, i1h1y;
41 {
42  return (cxy*(r1h1x*i1h1y + i1h1x*r1h1y));
43 }
44 
45 
46 double
47 S2v3F1(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r2h11x, i2h11x, r2h11y, i2h11y)
48 
49 double cxy, r1h1x, i1h1x, r1h1y, i1h1y;
50 double r2h11x, i2h11x, r2h11y, i2h11y;
51 {
52  return (cxy*(r1h1x*r2h11y - i1h1x*i2h11y + r1h1y*r2h11x - i1h1y*i2h11x));
53 }
54 
55 
56 double
57 S2i3F1(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r2h11x, i2h11x, r2h11y, i2h11y)
58 
59 double cxy, r1h1x, i1h1x, r1h1y, i1h1y;
60 double r2h11x, i2h11x, r2h11y, i2h11y;
61 {
62  return (cxy*(r1h1x*i2h11y + i1h1x*r2h11y + r1h1y*i2h11x + i1h1y*r2h11x));
63 }
64 
65 
66 double
67 S2vF12(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r1h2x, i1h2x, r1h2y, i1h2y)
68 
69 double cxy, r1h1x, i1h1x, r1h1y, i1h1y;
70 double r1h2x, i1h2x, r1h2y, i1h2y;
71 {
72  return (cxy*(r1h1x*r1h2y - i1h1x*i1h2y + r1h1y*r1h2x - i1h1y*i1h2x));
73 }
74 
75 
76 double
77 S2iF12(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r1h2x, i1h2x, r1h2y, i1h2y)
78 
79 double cxy, r1h1x, i1h1x, r1h1y, i1h1y;
80 double r1h2x, i1h2x, r1h2y, i1h2y;
81 {
82  return (cxy*(r1h1x*i1h2y + i1h1x*r1h2y + r1h1y*i1h2x + i1h1y*r1h2x));
83 }
84 
85 
86 double
87 S2v2F12(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r1h2x, i1h2x, r1h2y, i1h2y,
88  r2h11x, i2h11x, r2h11y, i2h11y, h2f1f2x, ih2f1f2x, h2f1f2y, ih2f1f2y)
89 
90 double cxy, r1h1x, i1h1x, r1h1y, i1h1y;
91 double r1h2x, i1h2x, r1h2y, i1h2y;
92 double r2h11x, i2h11x, r2h11y, i2h11y;
93 double h2f1f2x, ih2f1f2x, h2f1f2y, ih2f1f2y;
94 {
95  return ( cxy * (
96  2*(r1h1x*h2f1f2y - i1h1x*ih2f1f2y
97  +r1h1y*h2f1f2x - i1h1y*ih2f1f2x)
98  + r1h2x*r2h11y - i1h2x*i2h11y
99  + r1h2y*r2h11x - i1h2y*i2h11x
100  ));
101 }
102 
103 
104 double
105 S2i2F12(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r1h2x, i1h2x, r1h2y, i1h2y,
106  r2h11x, i2h11x, r2h11y, i2h11y, h2f1f2x, ih2f1f2x, h2f1f2y, ih2f1f2y)
107 
108 double cxy, r1h1x, i1h1x, r1h1y, i1h1y;
109 double r1h2x, i1h2x, r1h2y, i1h2y;
110 double r2h11x, i2h11x, r2h11y, i2h11y;
111 double h2f1f2x, ih2f1f2x, h2f1f2y, ih2f1f2y;
112 {
113  return ( cxy * (
114  2*(r1h1x*ih2f1f2y + i1h1x*h2f1f2y
115  +r1h1y*ih2f1f2x + i1h1y*h2f1f2x)
116  + r1h2x*i2h11y + i1h2x*r2h11y
117  + r1h2y*i2h11x + i1h2y*r2h11x
118  ));
119 }
120 
121 
122 double
123 S3v3F1(cxyz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z)
124 
125 double cxyz, r1h1x, i1h1x, r1h1y;
126 double i1h1y, r1h1z,i1h1z;
127 {
128  return ( cxyz * (
129  (r1h1x*r1h1y - i1h1x*i1h1y)*r1h1z - (i1h1x*r1h1y + r1h1x*i1h1y)*i1h1z
130  ));
131 }
132 
133 
134 double
135 S3i3F1(cxyz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z)
136 
137 double cxyz, r1h1x, i1h1x, r1h1y;
138 double i1h1y, r1h1z,i1h1z;
139 {
140  return( cxyz * (
141  (r1h1x*r1h1y - i1h1x*i1h1y)*i1h1z + (i1h1x*r1h1y + r1h1x*i1h1y)*r1h1z
142  ));
143 }
144 
145 
146 double
147 S3v2F12(cxyz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y,
148  i1h2y, r1h2z, i1h2z)
149 
150 double cxyz, r1h1x, i1h1x, r1h1y, i1h1y;
151 double r1h1z, i1h1z, r1h2x, i1h2x, r1h2y;
152 double i1h2y, r1h2z, i1h2z;
153 {
154  return ( cxyz * (
155  (r1h1x*r1h1y - i1h1x*i1h1y)*r1h2z - (i1h1x*r1h1y + r1h1x*i1h1y)*i1h2z
156  +
157  (r1h1x*r1h1z - i1h1x*i1h1z)*r1h2y - (i1h1x*r1h1z + r1h1x*i1h1z)*i1h2y
158  +
159  (r1h1z*r1h1y - i1h1z*i1h1y)*r1h2x - (i1h1z*r1h1y + r1h1z*i1h1y)*i1h2x
160  ));
161 }
162 
163 
164 double
165 S3i2F12(cxyz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y,
166  i1h2y, r1h2z, i1h2z)
167 
168 double cxyz, r1h1x, i1h1x, r1h1y, i1h1y;
169 double r1h1z, i1h1z, r1h2x, i1h2x, r1h2y;
170 double i1h2y, r1h2z, i1h2z;
171 {
172  return ( cxyz * (
173  (r1h1x*r1h1y - i1h1x*i1h1y)*i1h2z + (i1h1x*r1h1y + r1h1x*i1h1y)*r1h2z
174  +
175  (r1h1x*r1h1z - i1h1x*i1h1z)*i1h2y + (i1h1x*r1h1z + r1h1x*i1h1z)*r1h2y
176  +
177  (r1h1z*r1h1y - i1h1z*i1h1y)*i1h2x + (i1h1z*r1h1y + r1h1z*i1h1y)*r1h2x
178  ));
179 }
180 
181 
182 /* the load functions */
183 /* also renamed... */
184 
185 double
186 DFn2F1(cxx,cyy,czz,cxy,cyz,cxz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z)
187 
188 double cxx,cyy,czz,cxy,cyz,cxz;
189 double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;
190 {
191  double temp;
192 
193  temp = S2v2F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x) +
194  S2v2F1(cyy,r1h1y,i1h1y,r1h1y,i1h1y) +
195  S2v2F1(czz,r1h1z,i1h1z,r1h1z,i1h1z) +
196  S2v2F1(cxy,r1h1x,i1h1x,r1h1y,i1h1y) +
197  S2v2F1(cyz,r1h1y,i1h1y,r1h1z,i1h1z) +
198  S2v2F1(cxz,r1h1x,i1h1x,r1h1z,i1h1z);
199 
200  return (temp);
201 }
202 
203 
204 double
205 DFi2F1(cxx,cyy,czz,cxy,cyz,cxz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z)
206 
207 double cxx,cyy,czz,cxy,cyz,cxz;
208 double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;
209 {
210  double temp;
211 
212  temp = S2i2F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x) +
213  S2i2F1(cyy,r1h1y,i1h1y,r1h1y,i1h1y) +
214  S2i2F1(czz,r1h1z,i1h1z,r1h1z,i1h1z) +
215  S2i2F1(cxy,r1h1x,i1h1x,r1h1y,i1h1y) +
216  S2i2F1(cyz,r1h1y,i1h1y,r1h1z,i1h1z) +
217  S2i2F1(cxz,r1h1x,i1h1x,r1h1z,i1h1z);
218 
219  return (temp);
220 }
221 
222 
223 double
224 DFn3F1(cxx,cyy,czz,cxy,cyz,cxz,cxxx,cyyy,czzz,cxxy,cxxz,cxyy,cyyz,cxzz,cyzz,
225  cxyz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z, r2h11x,i2h11x,r2h11y,i2h11y,
226  r2h11z,i2h11z)
227 
228 double cxx,cyy,czz,cxy,cyz,cxz,cxxx,cyyy,czzz,cxxy,cxxz,cxyy,cyyz,cxzz,cyzz;
229 double cxyz;
230 double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;
231 double r2h11x,i2h11x,r2h11y,i2h11y,r2h11z,i2h11z;
232 {
233  double temp;
234 
235  temp = S2v3F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r2h11x,i2h11x,r2h11x,i2h11x)
236  +S2v3F1(cyy,r1h1y,i1h1y,r1h1y,i1h1y,r2h11y,i2h11y,r2h11y,i2h11y)
237  +S2v3F1(czz,r1h1z,i1h1z,r1h1z,i1h1z,r2h11z,i2h11z,r2h11z,i2h11z);
238  temp +=
239  S2v3F1(cxy,r1h1x,i1h1x,r1h1y,i1h1y,r2h11x,i2h11x,r2h11y,i2h11y)
240  +S2v3F1(cyz,r1h1y,i1h1y,r1h1z,i1h1z,r2h11y,i2h11y,r2h11z,i2h11z)
241  +S2v3F1(cxz,r1h1x,i1h1x,r1h1z,i1h1z,r2h11x,i2h11x,r2h11z,i2h11z)
242  +S3v3F1(cxxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h1x,i1h1x);
243  temp +=
244  S3v3F1(cyyy,r1h1y,i1h1y,r1h1y,i1h1y,r1h1y,i1h1y)
245  +S3v3F1(czzz,r1h1z,i1h1z,r1h1z,i1h1z,r1h1z,i1h1z)
246  +S3v3F1(cxxy,r1h1x,i1h1x,r1h1x,i1h1x,r1h1y,i1h1y)
247  +S3v3F1(cxxz,r1h1x,i1h1x,r1h1x,i1h1x,r1h1z,i1h1z)
248  +S3v3F1(cxyy,r1h1x,i1h1x,r1h1y,i1h1y,r1h1y,i1h1y);
249  temp +=
250  S3v3F1(cyyz,r1h1y,i1h1y,r1h1y,i1h1y,r1h1z,i1h1z)
251  +S3v3F1(cxzz,r1h1x,i1h1x,r1h1z,i1h1z,r1h1z,i1h1z)
252  +S3v3F1(cyzz,r1h1y,i1h1y,r1h1z,i1h1z,r1h1z,i1h1z)
253  +S3v3F1(cxyz,r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z);
254 
255  return (temp);
256 }
257 
258 
259 double
260 DFi3F1(cxx,cyy,czz,cxy,cyz,cxz,cxxx,cyyy,czzz,cxxy,cxxz,cxyy,cyyz,cxzz,cyzz,
261  cxyz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z, r2h11x,i2h11x,r2h11y,i2h11y,
262  r2h11z,i2h11z)
263 
264 double cxx,cyy,czz,cxy,cyz,cxz,cxxx,cyyy,czzz,cxxy,cxxz,cxyy,cyyz,cxzz,cyzz;
265 double cxyz;
266 double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;
267 double r2h11x,i2h11x,r2h11y,i2h11y,r2h11z,i2h11z;
268 {
269  double temp;
270 
271  temp = S2i3F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r2h11x,i2h11x,r2h11x,i2h11x)
272  +S2i3F1(cyy,r1h1y,i1h1y,r1h1y,i1h1y,r2h11y,i2h11y,r2h11y,i2h11y)
273  +S2i3F1(czz,r1h1z,i1h1z,r1h1z,i1h1z,r2h11z,i2h11z,r2h11z,i2h11z)
274  +S2i3F1(cxy,r1h1x,i1h1x,r1h1y,i1h1y,r2h11x,i2h11x,r2h11y,i2h11y);
275  temp +=
276  S2i3F1(cyz,r1h1y,i1h1y,r1h1z,i1h1z,r2h11y,i2h11y,r2h11z,i2h11z)
277  +S2i3F1(cxz,r1h1x,i1h1x,r1h1z,i1h1z,r2h11x,i2h11x,r2h11z,i2h11z)
278  +S3i3F1(cxxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h1x,i1h1x)
279  +S3i3F1(cyyy,r1h1y,i1h1y,r1h1y,i1h1y,r1h1y,i1h1y);
280  temp +=
281  S3i3F1(czzz,r1h1z,i1h1z,r1h1z,i1h1z,r1h1z,i1h1z)
282  +S3i3F1(cxxy,r1h1x,i1h1x,r1h1x,i1h1x,r1h1y,i1h1y)
283  +S3i3F1(cxxz,r1h1x,i1h1x,r1h1x,i1h1x,r1h1z,i1h1z)
284  +S3i3F1(cxyy,r1h1x,i1h1x,r1h1y,i1h1y,r1h1y,i1h1y);
285  temp +=
286  S3i3F1(cyyz,r1h1y,i1h1y,r1h1y,i1h1y,r1h1z,i1h1z)
287  +S3i3F1(cxzz,r1h1x,i1h1x,r1h1z,i1h1z,r1h1z,i1h1z)
288  +S3i3F1(cyzz,r1h1y,i1h1y,r1h1z,i1h1z,r1h1z,i1h1z)
289  +S3i3F1(cxyz,r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z);
290 
291  return (temp);
292 }
293 
294 
295 double
296 DFnF12(cxx,cyy,czz,cxy,cyz,cxz,r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z,
297  r1h2x,i1h2x,r1h2y,i1h2y,r1h2z,i1h2z)
298 
299 double cxx,cyy,czz,cxy,cyz,cxz;
300 double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;
301 double r1h2x,i1h2x,r1h2y,i1h2y,r1h2z,i1h2z;
302 {
303  double temp;
304 
305  temp = S2vF12(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h2x,i1h2x,r1h2x,i1h2x)
306  +S2vF12(cyy,r1h1y,i1h1y,r1h1y,i1h1y,r1h2y,i1h2y,r1h2y,i1h2y)
307  +S2vF12(czz,r1h1z,i1h1z,r1h1z,i1h1z,r1h2z,i1h2z,r1h2z,i1h2z);
308  temp +=
309  S2vF12(cxy,r1h1x,i1h1x,r1h1y,i1h1y,r1h2x,i1h2x,r1h2y,i1h2y)
310  +S2vF12(cyz,r1h1y,i1h1y,r1h1z,i1h1z,r1h2y,i1h2y,r1h2z,i1h2z)
311  +S2vF12(cxz,r1h1x,i1h1x,r1h1z,i1h1z,r1h2x,i1h2x,r1h2z,i1h2z);
312 
313  return (0.5*temp);
314 }
315 
316 
317 double
318 DFiF12(cxx,cyy,czz,cxy,cyz,cxz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z,
319  r1h2x,i1h2x,r1h2y,i1h2y,r1h2z,i1h2z)
320 
321 double cxx,cyy,czz,cxy,cyz,cxz;
322 double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;
323 double r1h2x,i1h2x,r1h2y,i1h2y,r1h2z,i1h2z;
324 {
325  double temp;
326 
327  temp = S2iF12(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h2x,i1h2x,r1h2x,i1h2x)
328  +S2iF12(cyy,r1h1y,i1h1y,r1h1y,i1h1y,r1h2y,i1h2y,r1h2y,i1h2y)
329  +S2iF12(czz,r1h1z,i1h1z,r1h1z,i1h1z,r1h2z,i1h2z,r1h2z,i1h2z);
330  temp +=
331  S2iF12(cxy,r1h1x,i1h1x,r1h1y,i1h1y,r1h2x,i1h2x,r1h2y,i1h2y)
332  +S2iF12(cyz,r1h1y,i1h1y,r1h1z,i1h1z,r1h2y,i1h2y,r1h2z,i1h2z)
333  +S2iF12(cxz,r1h1x,i1h1x,r1h1z,i1h1z,r1h2x,i1h2x,r1h2z,i1h2z);
334 
335  return (temp*0.5); /* divided by two to scale down */
336 }
337 
338 
339 double
341 
342 /*
343  * a structure because a standard C compiler can handle only
344  * 32 variables.
345  *
346  */
347 DpassStr* p;
348 {
349 double temp;
350 
351  temp = S2v2F12(p->cxx,p->r1h1x, p->i1h1x,
352  p->r1h1x, p->i1h1x, p->r1h2x, p->i1h2x,
353  p->r1h2x, p->i1h2x, p->r2h11x, p->i2h11x,
354  p->r2h11x, p->i2h11x, p->h2f1f2x, p->ih2f1f2x,
355  p->h2f1f2x, p->ih2f1f2x);
356  temp += S2v2F12(p->cyy, p->r1h1y, p->i1h1y,
357  p->r1h1y, p->i1h1y, p->r1h2y, p->i1h2y,
358  p->r1h2y, p->i1h2y, p->r2h11y, p->i2h11y,
359  p->r2h11y, p->i2h11y, p->h2f1f2y, p->ih2f1f2y,
360  p->h2f1f2y, p->ih2f1f2y);
361  temp += S2v2F12(p->czz, p->r1h1z, p->i1h1z,
362  p->r1h1z, p->i1h1z, p->r1h2z, p->i1h2z,
363  p->r1h2z, p->i1h2z, p->r2h11z, p->i2h11z,
364  p->r2h11z, p->i2h11z, p->h2f1f2z, p->ih2f1f2z,
365  p->h2f1f2z, p->ih2f1f2z);
366  temp += S2v2F12(p->cxy, p->r1h1x, p->i1h1x,
367  p->r1h1y, p->i1h1y, p->r1h2x, p->i1h2x,
368  p->r1h2y, p->i1h2y, p->r2h11x, p->i2h11x,
369  p->r2h11y, p->i2h11y, p->h2f1f2x, p->ih2f1f2x,
370  p->h2f1f2y, p->ih2f1f2y);
371  temp += S2v2F12(p->cyz, p->r1h1y, p->i1h1y,
372  p->r1h1z, p->i1h1z, p->r1h2y, p->i1h2y,
373  p->r1h2z, p->i1h2z, p->r2h11y, p->i2h11y,
374  p->r2h11z, p->i2h11z, p->h2f1f2y, p->ih2f1f2y,
375  p->h2f1f2z, p->ih2f1f2z);
376  temp += S2v2F12(p->cxz, p->r1h1x, p->i1h1x,
377  p->r1h1z, p->i1h1z, p->r1h2x, p->i1h2x,
378  p->r1h2z, p->i1h2z, p->r2h11x, p->i2h11x,
379  p->r2h11z, p->i2h11z, p->h2f1f2x, p->ih2f1f2x,
380  p->h2f1f2z, p->ih2f1f2z);
381  temp += S3v2F12(p->cxxx, p->r1h1x,
382  p->i1h1x, p->r1h1x, p->i1h1x, p->r1h1x, p->i1h1x,
383  p->r1h2x, p->i1h2x, p->r1h2x, p->i1h2x, p->r1h2x, p->i1h2x)
384  + S3v2F12(p->cyyy,p->r1h1y,
385  p->i1h1y, p->r1h1y, p->i1h1y, p->r1h1y, p->i1h1y,
386  p->r1h2y, p->i1h2y, p->r1h2y, p->i1h2y, p->r1h2y, p->i1h2y);
387  temp += S3v2F12(p->czzz, p->r1h1z,
388  p->i1h1z, p->r1h1z, p->i1h1z, p->r1h1z, p->i1h1z,
389  p->r1h2z, p->i1h2z, p->r1h2z, p->i1h2z, p->r1h2z, p->i1h2z)
390  + S3v2F12(p->cxxy,p->r1h1x,
391  p->i1h1x, p->r1h1x, p->i1h1x, p->r1h1y, p->i1h1y,
392  p->r1h2x, p->i1h2x, p->r1h2x, p->i1h2x, p->r1h2y, p->i1h2y);
393  temp += S3v2F12(p->cxxz,p->r1h1x,
394  p->i1h1x, p->r1h1x, p->i1h1x, p->r1h1z, p->i1h1z,
395  p->r1h2x, p->i1h2x, p->r1h2x, p->i1h2x, p->r1h2z, p->i1h2z)
396  + S3v2F12(p->cxyy,p->r1h1x,
397  p->i1h1x, p->r1h1y, p->i1h1y, p->r1h1y, p->i1h1y,
398  p->r1h2x, p->i1h2x, p->r1h2y, p->i1h2y, p->r1h2y, p->i1h2y);
399  temp += S3v2F12(p->cyyz, p->r1h1y,
400  p->i1h1y, p->r1h1y, p->i1h1y, p->r1h1z, p->i1h1z,
401  p->r1h2y, p->i1h2y, p->r1h2y, p->i1h2y, p->r1h2z, p->i1h2z)
402  + S3v2F12(p->cxzz, p->r1h1x,
403  p->i1h1x, p->r1h1z, p->i1h1z, p->r1h1z, p->i1h1z,
404  p->r1h2x, p->i1h2x, p->r1h2z, p->i1h2z, p->r1h2z, p->i1h2z);
405  temp += S3v2F12(p->cyzz, p->r1h1y,
406  p->i1h1y, p->r1h1z, p->i1h1z, p->r1h1z, p->i1h1z,
407  p->r1h2y, p->i1h2y, p->r1h2z, p->i1h2z, p->r1h2z, p->i1h2z)
408  + S3v2F12(p->cxyz, p->r1h1x,
409  p->i1h1x, p->r1h1y, p->i1h1y, p->r1h1z, p->i1h1z,
410  p->r1h2x, p->i1h2x, p->r1h2y, p->i1h2y, p->r1h2z, p->i1h2z);
411 
412  return (temp/3.);
413  /* divided by 3 to get kernel (otherwise we get 3*kernel) */
414 }
415 
416 
417 double
419 DpassStr* p;
420 
421 {
422  double temp;
423 
424  temp = S2i2F12(p->cxx, p->r1h1x, p->i1h1x,
425  p->r1h1x, p->i1h1x, p->r1h2x, p->i1h2x,
426  p->r1h2x, p->i1h2x, p->r2h11x, p->i2h11x,
427  p->r2h11x, p->i2h11x, p->h2f1f2x, p->ih2f1f2x,
428  p->h2f1f2x, p->ih2f1f2x);
429  temp += S2i2F12(p->cyy, p->r1h1y, p->i1h1y,
430  p->r1h1y, p->i1h1y, p->r1h2y, p->i1h2y,
431  p->r1h2y, p->i1h2y, p->r2h11y, p->i2h11y,
432  p->r2h11y, p->i2h11y, p->h2f1f2y, p->ih2f1f2y,
433  p->h2f1f2y, p->ih2f1f2y);
434  temp += S2i2F12(p->czz, p->r1h1z, p->i1h1z,
435  p->r1h1z, p->i1h1z, p->r1h2z, p->i1h2z,
436  p->r1h2z, p->i1h2z, p->r2h11z, p->i2h11z,
437  p->r2h11z, p->i2h11z, p->h2f1f2z, p->ih2f1f2z,
438  p->h2f1f2z, p->ih2f1f2z);
439  temp += S2i2F12(p->cxy, p->r1h1x, p->i1h1x,
440  p->r1h1y, p->i1h1y, p->r1h2x, p->i1h2x,
441  p->r1h2y, p->i1h2y, p->r2h11x, p->i2h11x,
442  p->r2h11y, p->i2h11y, p->h2f1f2x, p->ih2f1f2x,
443  p->h2f1f2y, p->ih2f1f2y);
444  temp += S2i2F12(p->cyz, p->r1h1y, p->i1h1y,
445  p->r1h1z, p->i1h1z, p->r1h2y, p->i1h2y,
446  p->r1h2z, p->i1h2z, p->r2h11y, p->i2h11y,
447  p->r2h11z, p->i2h11z, p->h2f1f2y, p->ih2f1f2y,
448  p->h2f1f2z,p->ih2f1f2z);
449  temp += S2i2F12(p->cxz, p->r1h1x, p->i1h1x,
450  p->r1h1z, p->i1h1z, p->r1h2x, p->i1h2x,
451  p->r1h2z, p->i1h2z, p->r2h11x, p->i2h11x,
452  p->r2h11z, p->i2h11z, p->h2f1f2x, p->ih2f1f2x,
453  p->h2f1f2z, p->ih2f1f2z);
454  temp += S3i2F12(p->cxxx, p->r1h1x,
455  p->i1h1x, p->r1h1x, p->i1h1x, p->r1h1x, p->i1h1x,
456  p->r1h2x, p->i1h2x, p->r1h2x, p->i1h2x, p->r1h2x, p->i1h2x);
457  temp += S3i2F12(p->cyyy, p->r1h1y,
458  p->i1h1y, p->r1h1y, p->i1h1y, p->r1h1y, p->i1h1y,
459  p->r1h2y, p->i1h2y, p->r1h2y, p->i1h2y, p->r1h2y, p->i1h2y)
460  + S3i2F12(p->czzz, p->r1h1z,
461  p->i1h1z, p->r1h1z, p->i1h1z, p->r1h1z, p->i1h1z,
462  p->r1h2z, p->i1h2z, p->r1h2z, p->i1h2z, p->r1h2z, p->i1h2z);
463  temp += S3i2F12(p->cxxy, p->r1h1x,
464  p->i1h1x, p->r1h1x, p->i1h1x, p->r1h1y, p->i1h1y,
465  p->r1h2x, p->i1h2x, p->r1h2x, p->i1h2x, p->r1h2y, p->i1h2y)
466  + S3i2F12(p->cxxz, p->r1h1x,
467  p->i1h1x, p->r1h1x, p->i1h1x, p->r1h1z, p->i1h1z,
468  p->r1h2x, p->i1h2x, p->r1h2x, p->i1h2x, p->r1h2z, p->i1h2z);
469  temp += S3i2F12(p->cxyy, p->r1h1x,
470  p->i1h1x, p->r1h1y, p->i1h1y, p->r1h1y, p->i1h1y,
471  p->r1h2x, p->i1h2x, p->r1h2y, p->i1h2y, p->r1h2y, p->i1h2y)
472  + S3i2F12(p->cyyz, p->r1h1y,
473  p->i1h1y, p->r1h1y, p->i1h1y, p->r1h1z, p->i1h1z,
474  p->r1h2y, p->i1h2y, p->r1h2y, p->i1h2y, p->r1h2z, p->i1h2z);
475  temp += S3i2F12(p->cxzz, p->r1h1x,
476  p->i1h1x, p->r1h1z, p->i1h1z, p->r1h1z, p->i1h1z,
477  p->r1h2x, p->i1h2x, p->r1h2z, p->i1h2z, p->r1h2z, p->i1h2z);
478  temp += S3i2F12(p->cyzz, p->r1h1y,
479  p->i1h1y, p->r1h1z, p->i1h1z, p->r1h1z, p->i1h1z,
480  p->r1h2y, p->i1h2y, p->r1h2z, p->i1h2z, p->r1h2z, p->i1h2z)
481  + S3i2F12(p->cxyz, p->r1h1x,
482  p->i1h1x, p->r1h1y, p->i1h1y, p->r1h1z, p->i1h1z,
483  p->r1h2x, p->i1h2x, p->r1h2y, p->i1h2y, p->r1h2z, p->i1h2z);
484 
485  return (temp/3.);
486  /* divided by 3 to get kernel (otherwise we get 3*kernel) */
487 }
488 
489 
490 double
491 D1n2F1(cxx,r1h1x,i1h1x)
492 
493 double cxx;
494 double r1h1x,i1h1x;
495 {
496  double temp;
497 
498  temp = S2v2F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x);
499  return (temp);
500 }
501 
502 
503 double
504 D1n3F1(cxx,cxxx,r1h1x,i1h1x,r2h11x,i2h11x)
505 
506 double cxx,cxxx;
507 double r1h1x,i1h1x;
508 double r2h11x,i2h11x;
509 {
510  double temp;
511 
512  temp = S2v3F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r2h11x,i2h11x,r2h11x,i2h11x)
513  + S3v3F1(cxxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h1x,i1h1x);
514  return (temp);
515 }
516 
517 
518 double
519 D1nF12(cxx,r1h1x,i1h1x,r1h2x,i1h2x)
520 
521 double cxx;
522 double r1h1x,i1h1x;
523 double r1h2x,i1h2x;
524 {
525  double temp;
526 
527  temp = S2vF12(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h2x,i1h2x,r1h2x,i1h2x);
528  return (0.5*temp);
529 }
530 
531 
532 double
533 D1n2F12(cxx,cxxx,r1h1x,i1h1x,r1h2x,i1h2x,r2h11x,i2h11x,h2f1f2x,ih2f1f2x)
534 
535 double cxx,cxxx;
536 double r1h1x,i1h1x;
537 double r1h2x,i1h2x;
538 double r2h11x,i2h11x;
539 double h2f1f2x,ih2f1f2x;
540 {
541  double temp;
542 
543  temp = S2v2F12(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h2x,i1h2x,r1h2x,i1h2x,
544  r2h11x,i2h11x,r2h11x,i2h11x,h2f1f2x,ih2f1f2x,h2f1f2x,ih2f1f2x)
545  + S3v2F12(cxxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h1x,i1h1x,
546  r1h2x,i1h2x,r1h2x,i1h2x,r1h2x,i1h2x);
547 
548  return (temp/3.);
549  /* divided by 3 to get kernel (otherwise we get 3*kernel) */
550 }
551 
552 
553 double
554 D1i2F1(cxx,r1h1x,i1h1x)
555 
556 double cxx;
557 double r1h1x,i1h1x;
558 {
559  double temp;
560 
561  temp = S2i2F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x);
562  return (temp);
563 }
564 
565 
566 double
567 D1i3F1(cxx,cxxx,r1h1x,i1h1x,r2h11x,i2h11x)
568 
569 double cxx,cxxx;
570 double r1h1x,i1h1x;
571 double r2h11x,i2h11x;
572 {
573  double temp;
574 
575  temp = S2i3F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r2h11x,i2h11x,r2h11x,i2h11x)
576  + S3i3F1(cxxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h1x,i1h1x);
577 
578  return (temp);
579 }
580 
581 
582 double
583 D1iF12(cxx,r1h1x,i1h1x,r1h2x,i1h2x)
584 
585 double cxx;
586 double r1h1x,i1h1x;
587 double r1h2x,i1h2x;
588 {
589  double temp;
590 
591  temp = S2iF12(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h2x,i1h2x,r1h2x,i1h2x);
592  return (0.5*temp);
593 }
594 
595 
596 double
597 D1i2F12(cxx,cxxx,r1h1x,i1h1x,r1h2x,i1h2x,r2h11x,i2h11x,h2f1f2x,ih2f1f2x)
598 
599 double cxx,cxxx;
600 double r1h1x,i1h1x;
601 double r1h2x,i1h2x;
602 double r2h11x,i2h11x;
603 double h2f1f2x,ih2f1f2x;
604 {
605  double temp;
606 
607  temp = S2i2F12(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h2x,i1h2x,r1h2x,i1h2x,
608  r2h11x,i2h11x,r2h11x,i2h11x,h2f1f2x,ih2f1f2x,h2f1f2x,ih2f1f2x)
609  + S3i2F12(cxxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h1x,i1h1x,
610  r1h2x,i1h2x,r1h2x,i1h2x,r1h2x,i1h2x);
611 
612  return (temp/3.);
613  /* divided by 3 to get kernel (otherwise we get 3*kernel) */
614 }
615 
double DFn3F1(double cxx, double cyy, double czz, double cxy, double cyz, double cxz, double cxxx, double cyyy, double czzz, double cxxy, double cxxz, double cxyy, double cyyz, double cxzz, double cyzz, double cxyz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z, double r2h11x, double i2h11x, double r2h11y, double i2h11y, double r2h11z, double i2h11z)
Definition: distfns.c:224
double D1i2F1(double cxx, double r1h1x, double i1h1x)
Definition: distfns.c:554
double D1nF12(double cxx, double r1h1x, double i1h1x, double r1h2x, double i1h2x)
Definition: distfns.c:519
double DFi3F1(double cxx, double cyy, double czz, double cxy, double cyz, double cxz, double cxxx, double cyyy, double czzz, double cxxy, double cxxz, double cxyy, double cyyz, double cxzz, double cyzz, double cxyz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z, double r2h11x, double i2h11x, double r2h11y, double i2h11y, double r2h11z, double i2h11z)
Definition: distfns.c:260
double DFi2F1(double cxx, double cyy, double czz, double cxy, double cyz, double cxz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z)
Definition: distfns.c:205
Definition: cddefs.h:215
double S3i2F12(double cxyz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z, double r1h2x, double i1h2x, double r1h2y, double i1h2y, double r1h2z, double i1h2z)
Definition: distfns.c:165
double S3i3F1(double cxyz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z)
Definition: distfns.c:135
double D1n2F12(double cxx, double cxxx, double r1h1x, double i1h1x, double r1h2x, double i1h2x, double r2h11x, double i2h11x, double h2f1f2x, double ih2f1f2x)
Definition: distfns.c:533
double S3v2F12(double cxyz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z, double r1h2x, double i1h2x, double r1h2y, double i1h2y, double r1h2z, double i1h2z)
Definition: distfns.c:147
double D1i2F12(double cxx, double cxxx, double r1h1x, double i1h1x, double r1h2x, double i1h2x, double r2h11x, double i2h11x, double h2f1f2x, double ih2f1f2x)
Definition: distfns.c:597
double DFnF12(double cxx, double cyy, double czz, double cxy, double cyz, double cxz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z, double r1h2x, double i1h2x, double r1h2y, double i1h2y, double r1h2z, double i1h2z)
Definition: distfns.c:296
double S2i2F1(double cxy, double r1h1x, double i1h1x, double r1h1y, double i1h1y)
Definition: distfns.c:38
double DFiF12(double cxx, double cyy, double czz, double cxy, double cyz, double cxz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z, double r1h2x, double i1h2x, double r1h2y, double i1h2y, double r1h2z, double i1h2z)
Definition: distfns.c:318
double S2iF12(double cxy, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h2x, double i1h2x, double r1h2y, double i1h2y)
Definition: distfns.c:77
double D1n3F1(double cxx, double cxxx, double r1h1x, double i1h1x, double r2h11x, double i2h11x)
Definition: distfns.c:504
double DFi2F12(DpassStr *p)
Definition: distfns.c:418
double S2v2F12(double cxy, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h2x, double i1h2x, double r1h2y, double i1h2y, double r2h11x, double i2h11x, double r2h11y, double i2h11y, double h2f1f2x, double ih2f1f2x, double h2f1f2y, double ih2f1f2y)
Definition: distfns.c:87
double S3v3F1(double cxyz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z)
Definition: distfns.c:123
double DFn2F12(DpassStr *p)
Definition: distfns.c:340
double S2i2F12(double cxy, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h2x, double i1h2x, double r1h2y, double i1h2y, double r2h11x, double i2h11x, double r2h11y, double i2h11y, double h2f1f2x, double ih2f1f2x, double h2f1f2y, double ih2f1f2y)
Definition: distfns.c:105
double S2vF12(double cxy, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h2x, double i1h2x, double r1h2y, double i1h2y)
Definition: distfns.c:67
double DFn2F1(double cxx, double cyy, double czz, double cxy, double cyz, double cxz, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r1h1z, double i1h1z)
Definition: distfns.c:186
double D1i3F1(double cxx, double cxxx, double r1h1x, double i1h1x, double r2h11x, double i2h11x)
Definition: distfns.c:567
double S2i3F1(double cxy, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r2h11x, double i2h11x, double r2h11y, double i2h11y)
Definition: distfns.c:57
double S2v3F1(double cxy, double r1h1x, double i1h1x, double r1h1y, double i1h1y, double r2h11x, double i2h11x, double r2h11y, double i2h11y)
Definition: distfns.c:47
double D1n2F1(double cxx, double r1h1x, double i1h1x)
Definition: distfns.c:491
double S2v2F1(double cxy, double r1h1x, double i1h1x, double r1h1y, double i1h1y)
Definition: distfns.c:29
double D1iF12(double cxx, double r1h1x, double i1h1x, double r1h2x, double i1h2x)
Definition: distfns.c:583