📄 dloadfns.c
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1988 Jaijeet S Roychowdhury**********/#include "spice.h"#include "distodef.h"#include "suffix.h"/* * all subFns are local to this file so they need not be renamed to * the awful 7 letter standard; however, for reasons of uniformity, * they are being renamed, losing all readability in the process. * the renaming convention is as follows: * example: 3v3F1m2 * 3v => 3 variable term xyz * 2F1m2 => Two F1 minus F2 * therefore the old name would be : S3v3F1minusF2 * for the imaginary sub functions, the v is replaced by an i * */doubleS2v2F1(cxy, r1h1x, i1h1x, r1h1y, i1h1y)double cxy;double r1h1x, i1h1x; /* 5 arguments */double r1h1y, i1h1y;{return(cxy*(r1h1x*r1h1y - i1h1x*i1h1y));}doubleS2i2F1(cxy, r1h1x, i1h1x, r1h1y, i1h1y)double cxy;double r1h1x, i1h1x; /* 5 arguments */double r1h1y, i1h1y;{return(cxy*(r1h1x*i1h1y + i1h1x*r1h1y));}doubleS2v3F1(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r2h11x, i2h11x, r2h11y, i2h11y) /* 9 arguments */double cxy, r1h1x, i1h1x, r1h1y, i1h1y;double r2h11x, i2h11x, r2h11y, i2h11y;{return(cxy*(r1h1x*r2h11y - i1h1x*i2h11y + r1h1y*r2h11x - i1h1y* i2h11x));}doubleS2i3F1(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r2h11x, i2h11x, r2h11y, i2h11y) /* 9 arguments */double cxy, r1h1x, i1h1x, r1h1y, i1h1y;double r2h11x, i2h11x, r2h11y, i2h11y;{return(cxy*(r1h1x*i2h11y + i1h1x*r2h11y + r1h1y*i2h11x + i1h1y* r2h11x));}doubleS2vF12(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r1h2x, i1h2x, r1h2y, i1h2y) /* 9 arguments */double cxy, r1h1x, i1h1x, r1h1y, i1h1y;double r1h2x, i1h2x, r1h2y, i1h2y;{return(cxy*(r1h1x*r1h2y - i1h1x*i1h2y + r1h1y*r1h2x - i1h1y*i1h2x));}doubleS2iF12(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r1h2x, i1h2x, r1h2y, i1h2y) /* 9 arguments */double cxy, r1h1x, i1h1x, r1h1y, i1h1y;double r1h2x, i1h2x, r1h2y, i1h2y;{return(cxy*(r1h1x*i1h2y + i1h1x*r1h2y + r1h1y*i1h2x + i1h1y*r1h2x));}doubleS2v2F12(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r1h2x, i1h2x, r1h2y, i1h2y, r2h11x, i2h11x, r2h11y, i2h11y, h2f1f2x, ih2f1f2x, h2f1f2y, ih2f1f2y) /* 17 arguments */double cxy, r1h1x, i1h1x, r1h1y, i1h1y;double r1h2x, i1h2x, r1h2y, i1h2y;double r2h11x, i2h11x, r2h11y, i2h11y;double h2f1f2x, ih2f1f2x, h2f1f2y, ih2f1f2y;{return ( cxy * ( 2*(r1h1x*h2f1f2y - i1h1x*ih2f1f2y +r1h1y*h2f1f2x - i1h1y*ih2f1f2x) + r1h2x*r2h11y - i1h2x*i2h11y + r1h2y*r2h11x - i1h2y*i2h11x ));}doubleS2i2F12(cxy, r1h1x, i1h1x, r1h1y, i1h1y, r1h2x, i1h2x, r1h2y, i1h2y, r2h11x, i2h11x, r2h11y, i2h11y, h2f1f2x, ih2f1f2x, h2f1f2y, ih2f1f2y) /* 17 arguments */double cxy, r1h1x, i1h1x, r1h1y, i1h1y;double r1h2x, i1h2x, r1h2y, i1h2y;double r2h11x, i2h11x, r2h11y, i2h11y;double h2f1f2x, ih2f1f2x, h2f1f2y, ih2f1f2y;{return ( cxy * ( 2*(r1h1x*ih2f1f2y + i1h1x*h2f1f2y +r1h1y*ih2f1f2x + i1h1y*h2f1f2x) + r1h2x*i2h11y + i1h2x*r2h11y + r1h2y*i2h11x + i1h2y*r2h11x ));}doubleS3v3F1(cxyz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z) /* 7 arguments */double cxyz, r1h1x, i1h1x, r1h1y;double i1h1y, r1h1z,i1h1z;{return( cxyz * ( (r1h1x*r1h1y - i1h1x*i1h1y)*r1h1z - (i1h1x*r1h1y + r1h1x*i1h1y)*i1h1z ));}doubleS3i3F1(cxyz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z) /* 7 arguments */double cxyz, r1h1x, i1h1x, r1h1y;double i1h1y, r1h1z,i1h1z;{return( cxyz * ( (r1h1x*r1h1y - i1h1x*i1h1y)*i1h1z + (i1h1x*r1h1y + r1h1x*i1h1y)*r1h1z ));}doubleS3v2F12(cxyz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z) /* 13 arguments */double cxyz, r1h1x, i1h1x, r1h1y, i1h1y;double r1h1z, i1h1z, r1h2x, i1h2x, r1h2y;double i1h2y, r1h2z, i1h2z;{return ( cxyz * ( (r1h1x*r1h1y - i1h1x*i1h1y)*r1h2z - (i1h1x*r1h1y + r1h1x*i1h1y)*i1h2z + (r1h1x*r1h1z - i1h1x*i1h1z)*r1h2y - (i1h1x*r1h1z + r1h1x*i1h1z)*i1h2y + (r1h1z*r1h1y - i1h1z*i1h1y)*r1h2x - (i1h1z*r1h1y + r1h1z*i1h1y)*i1h2x ));}doubleS3i2F12(cxyz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z) /* 13 arguments */double cxyz, r1h1x, i1h1x, r1h1y, i1h1y;double r1h1z, i1h1z, r1h2x, i1h2x, r1h2y;double i1h2y, r1h2z, i1h2z;{return ( cxyz * ( (r1h1x*r1h1y - i1h1x*i1h1y)*i1h2z + (i1h1x*r1h1y + r1h1x*i1h1y)*r1h2z + (r1h1x*r1h1z - i1h1x*i1h1z)*i1h2y + (i1h1x*r1h1z + r1h1x*i1h1z)*r1h2y + (r1h1z*r1h1y - i1h1z*i1h1y)*i1h2x + (i1h1z*r1h1y + r1h1z*i1h1y)*r1h2x ));} /* the load functions */ /* also renamed... */doubleDFn2F1(cxx,cyy,czz,cxy,cyz,cxz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z) /* 12 variables */double cxx,cyy,czz,cxy,cyz,cxz;double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;{double temp; temp = S2v2F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x) + S2v2F1(cyy,r1h1y,i1h1y,r1h1y,i1h1y) + S2v2F1(czz,r1h1z,i1h1z,r1h1z,i1h1z) + S2v2F1(cxy,r1h1x,i1h1x,r1h1y,i1h1y) + S2v2F1(cyz,r1h1y,i1h1y,r1h1z,i1h1z) + S2v2F1(cxz,r1h1x,i1h1x,r1h1z,i1h1z); return(temp);}doubleDFi2F1(cxx,cyy,czz,cxy,cyz,cxz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z) /* 12 variables */double cxx,cyy,czz,cxy,cyz,cxz;double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;{double temp; temp = S2i2F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x) + S2i2F1(cyy,r1h1y,i1h1y,r1h1y,i1h1y) + S2i2F1(czz,r1h1z,i1h1z,r1h1z,i1h1z) + S2i2F1(cxy,r1h1x,i1h1x,r1h1y,i1h1y) + S2i2F1(cyz,r1h1y,i1h1y,r1h1z,i1h1z) + S2i2F1(cxz,r1h1x,i1h1x,r1h1z,i1h1z); return(temp);}doubleDFn3F1(cxx,cyy,czz,cxy,cyz,cxz,cxxx,cyyy,czzz,cxxy,cxxz,cxyy,cyyz,cxzz,cyzz,cxyz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z, r2h11x,i2h11x,r2h11y,i2h11y,r2h11z,i2h11z) /* 28 args - 16 + 6 + 6 */double cxx,cyy,czz,cxy,cyz,cxz,cxxx,cyyy,czzz,cxxy,cxxz,cxyy,cyyz,cxzz,cyzz,cxyz;double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;double r2h11x,i2h11x,r2h11y,i2h11y,r2h11z,i2h11z;{double temp; temp = S2v3F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r2h11x,i2h11x,r2h11x,i2h11x) +S2v3F1(cyy,r1h1y,i1h1y,r1h1y,i1h1y,r2h11y,i2h11y,r2h11y,i2h11y) +S2v3F1(czz,r1h1z,i1h1z,r1h1z,i1h1z,r2h11z,i2h11z,r2h11z,i2h11z); temp += S2v3F1(cxy,r1h1x,i1h1x,r1h1y,i1h1y,r2h11x,i2h11x,r2h11y,i2h11y) +S2v3F1(cyz,r1h1y,i1h1y,r1h1z,i1h1z,r2h11y,i2h11y,r2h11z,i2h11z) +S2v3F1(cxz,r1h1x,i1h1x,r1h1z,i1h1z,r2h11x,i2h11x,r2h11z,i2h11z) +S3v3F1(cxxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h1x,i1h1x); temp += S3v3F1(cyyy,r1h1y,i1h1y,r1h1y,i1h1y,r1h1y,i1h1y) +S3v3F1(czzz,r1h1z,i1h1z,r1h1z,i1h1z,r1h1z,i1h1z) +S3v3F1(cxxy,r1h1x,i1h1x,r1h1x,i1h1x,r1h1y,i1h1y) +S3v3F1(cxxz,r1h1x,i1h1x,r1h1x,i1h1x,r1h1z,i1h1z) +S3v3F1(cxyy,r1h1x,i1h1x,r1h1y,i1h1y,r1h1y,i1h1y); temp += S3v3F1(cyyz,r1h1y,i1h1y,r1h1y,i1h1y,r1h1z,i1h1z) +S3v3F1(cxzz,r1h1x,i1h1x,r1h1z,i1h1z,r1h1z,i1h1z) +S3v3F1(cyzz,r1h1y,i1h1y,r1h1z,i1h1z,r1h1z,i1h1z) +S3v3F1(cxyz,r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z); return(temp);}doubleDFi3F1(cxx,cyy,czz,cxy,cyz,cxz,cxxx,cyyy,czzz,cxxy,cxxz,cxyy,cyyz,cxzz,cyzz,cxyz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z, r2h11x,i2h11x,r2h11y,i2h11y,r2h11z,i2h11z) /* 28 args - 10 + 6 + 6 */double cxx,cyy,czz,cxy,cyz,cxz,cxxx,cyyy,czzz,cxxy,cxxz,cxyy,cyyz,cxzz,cyzz,cxyz;double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;double r2h11x,i2h11x,r2h11y,i2h11y,r2h11z,i2h11z;{double temp; temp = S2i3F1(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r2h11x,i2h11x,r2h11x,i2h11x) +S2i3F1(cyy,r1h1y,i1h1y,r1h1y,i1h1y,r2h11y,i2h11y,r2h11y,i2h11y) +S2i3F1(czz,r1h1z,i1h1z,r1h1z,i1h1z,r2h11z,i2h11z,r2h11z,i2h11z) +S2i3F1(cxy,r1h1x,i1h1x,r1h1y,i1h1y,r2h11x,i2h11x,r2h11y,i2h11y); temp += S2i3F1(cyz,r1h1y,i1h1y,r1h1z,i1h1z,r2h11y,i2h11y,r2h11z,i2h11z) +S2i3F1(cxz,r1h1x,i1h1x,r1h1z,i1h1z,r2h11x,i2h11x,r2h11z,i2h11z) +S3i3F1(cxxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h1x,i1h1x) +S3i3F1(cyyy,r1h1y,i1h1y,r1h1y,i1h1y,r1h1y,i1h1y); temp += S3i3F1(czzz,r1h1z,i1h1z,r1h1z,i1h1z,r1h1z,i1h1z) +S3i3F1(cxxy,r1h1x,i1h1x,r1h1x,i1h1x,r1h1y,i1h1y) +S3i3F1(cxxz,r1h1x,i1h1x,r1h1x,i1h1x,r1h1z,i1h1z) +S3i3F1(cxyy,r1h1x,i1h1x,r1h1y,i1h1y,r1h1y,i1h1y); temp += S3i3F1(cyyz,r1h1y,i1h1y,r1h1y,i1h1y,r1h1z,i1h1z) +S3i3F1(cxzz,r1h1x,i1h1x,r1h1z,i1h1z,r1h1z,i1h1z) +S3i3F1(cyzz,r1h1y,i1h1y,r1h1z,i1h1z,r1h1z,i1h1z) +S3i3F1(cxyz,r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z); return(temp);}doubleDFnF12(cxx,cyy,czz,cxy,cyz,cxz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z, r1h2x,i1h2x,r1h2y,i1h2y,r1h2z,i1h2z) /* 18 args - 6 + 6 + 6 */double cxx,cyy,czz,cxy,cyz,cxz;double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;double r1h2x,i1h2x,r1h2y,i1h2y,r1h2z,i1h2z;{double temp; temp = S2vF12(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h2x,i1h2x,r1h2x,i1h2x) +S2vF12(cyy,r1h1y,i1h1y,r1h1y,i1h1y,r1h2y,i1h2y,r1h2y,i1h2y) +S2vF12(czz,r1h1z,i1h1z,r1h1z,i1h1z,r1h2z,i1h2z,r1h2z,i1h2z); temp += S2vF12(cxy,r1h1x,i1h1x,r1h1y,i1h1y,r1h2x,i1h2x,r1h2y,i1h2y) +S2vF12(cyz,r1h1y,i1h1y,r1h1z,i1h1z,r1h2y,i1h2y,r1h2z,i1h2z) +S2vF12(cxz,r1h1x,i1h1x,r1h1z,i1h1z,r1h2x,i1h2x,r1h2z,i1h2z); return(0.5*temp);}doubleDFiF12(cxx,cyy,czz,cxy,cyz,cxz, r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z, r1h2x,i1h2x,r1h2y,i1h2y,r1h2z,i1h2z) /* 18 args - 6 + 6 + 6 */double cxx,cyy,czz,cxy,cyz,cxz;double r1h1x,i1h1x,r1h1y,i1h1y,r1h1z,i1h1z;double r1h2x,i1h2x,r1h2y,i1h2y,r1h2z,i1h2z;{double temp; temp = S2iF12(cxx,r1h1x,i1h1x,r1h1x,i1h1x,r1h2x,i1h2x,r1h2x,i1h2x) +S2iF12(cyy,r1h1y,i1h1y,r1h1y,i1h1y,r1h2y,i1h2y,r1h2y,i1h2y) +S2iF12(czz,r1h1z,i1h1z,r1h1z,i1h1z,r1h2z,i1h2z,r1h2z,i1h2z); temp += S2iF12(cxy,r1h1x,i1h1x,r1h1y,i1h1y,r1h2x,i1h2x,r1h2y,i1h2y) +S2iF12(cyz,r1h1y,i1h1y,r1h1z,i1h1z,r1h2y,i1h2y,r1h2z,i1h2z) +S2iF12(cxz,r1h1x,i1h1x,r1h1z,i1h1z,r1h2x,i1h2x,r1h2z,i1h2z); return(temp*0.5); /* divided by two to scale down */}doubleDFn2F12(p)DpassStr* p; /* 40 vars - 16 + 6 + 6 + 6 + 6 *//* * a structure because a standard C compiler can handle only * 32 variables. * */{double temp; temp = S2v2F12(p->cxx,p->r1h1x,p->i1h1x, p->r1h1x,p->i1h1x, p->r1h2x,p->i1h2x, p->r1h2x,p->i1h2x,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -