Browse Source

Bug fixes:

fix function rdivide
fix a copy/paste bug in cpline
add copying of tlines
pre-master-46
Holger Vogt 8 months ago
parent
commit
29d5584c56
  1. 18
      src/xspice/icm/tlines/cpline/cfunc.mod
  2. 10
      src/xspice/icm/tlines/cpmlin/cfunc.mod
  3. 10
      src/xspice/icm/tlines/mlin/cfunc.mod
  4. 10
      src/xspice/icm/tlines/msopen/cfunc.mod
  5. 10
      src/xspice/icm/tlines/tline/cfunc.mod
  6. 2
      visualc/make-install-vngspice.bat
  7. 2
      visualc/make-install-vngspiced.bat

18
src/xspice/icm/tlines/cpline/cfunc.mod

@ -39,16 +39,18 @@ static void copy_complex(DoubleComplex s, Complex_t *d)
static DoubleComplex divide(DoubleComplex n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / denom;
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / denom;
return rez;
}
static DoubleComplex rdivide(double n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1 * n2._Val[0] + n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1 * n2._Val[0] - n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1 * n2._Val[0]) / denom;
rez._Val[1] = (-1. * n1 * n2._Val[1]) / denom;
return rez;
}
#endif
@ -116,10 +118,10 @@ void cm_cpline (ARGS)
double bon = o*l/C0*sqrt(ero);
DoubleComplex ge = _Cbuild(aen, ben);
DoubleComplex go = _Cbuild(aon, bon);
DoubleComplex tango = _Cmulcr(ctanh(_Cmulcr(go, l)), 2.);
DoubleComplex tange = _Cmulcr(ctanh(_Cmulcr(ge, l)), 2.);
DoubleComplex singo = _Cmulcr(csinh(_Cmulcr(go, l)), 2.);
DoubleComplex singe = _Cmulcr(csinh(_Cmulcr(ge, l)), 2.);
DoubleComplex tango = _Cmulcr(ctanh(go), 2.);
DoubleComplex tange = _Cmulcr(ctanh(ge), 2.);
DoubleComplex singo = _Cmulcr(csinh(go), 2.);
DoubleComplex singe = _Cmulcr(csinh(ge), 2.);
DoubleComplex zotango = rdivide(zo, tango);
DoubleComplex zetange = rdivide(ze, tange);

10
src/xspice/icm/tlines/cpmlin/cfunc.mod

@ -41,16 +41,18 @@ static void copy_complex(DoubleComplex s, Complex_t *d)
static DoubleComplex divide(DoubleComplex n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / denom;
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / denom;
return rez;
}
static DoubleComplex rdivide(double n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1 * n2._Val[0] + n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1 * n2._Val[0] - n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1 * n2._Val[0]) / denom;
rez._Val[1] = (-1. * n1 * n2._Val[1]) / denom;
return rez;
}
#endif

10
src/xspice/icm/tlines/mlin/cfunc.mod

@ -32,16 +32,18 @@ typedef double complex DoubleComplex;
static DoubleComplex divide(DoubleComplex n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / denom;
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / denom;
return rez;
}
static DoubleComplex rdivide(double n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1 * n2._Val[0] + n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1 * n2._Val[0] - n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1 * n2._Val[0]) / denom;
rez._Val[1] = (-1. * n1 * n2._Val[1]) / denom;
return rez;
}
#endif

10
src/xspice/icm/tlines/msopen/cfunc.mod

@ -33,16 +33,18 @@ typedef double complex DoubleComplex;
static DoubleComplex divide(DoubleComplex n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / denom;
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / denom;
return rez;
}
static DoubleComplex rdivide(double n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1 * n2._Val[0] + n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1 * n2._Val[0] - n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1 * n2._Val[0]) / denom;
rez._Val[1] = (-1. * n1 * n2._Val[1]) / denom;
return rez;
}
#endif

10
src/xspice/icm/tlines/tline/cfunc.mod

@ -31,16 +31,18 @@ typedef double complex DoubleComplex;
static DoubleComplex divide(DoubleComplex n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1._Val[0] * n2._Val[0] + n1._Val[1] * n2._Val[1]) / denom;
rez._Val[1] = (n1._Val[1] * n2._Val[0] - n1._Val[0] * n2._Val[1]) / denom;
return rez;
}
static DoubleComplex rdivide(double n1, DoubleComplex n2)
{
DoubleComplex rez;
rez._Val[0] = (n1 * n2._Val[0] + n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
rez._Val[1] = (n1 * n2._Val[0] - n1 * n2._Val[1]) / (n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1]);
double denom = n2._Val[0] * n2._Val[0] + n2._Val[1] * n2._Val[1];
rez._Val[0] = (n1 * n2._Val[0]) / denom;
rez._Val[1] = (-1. * n1 * n2._Val[1]) / denom;
return rez;
}
#endif

2
visualc/make-install-vngspice.bat

@ -20,6 +20,7 @@ copy %cmsrc%\table.cm %dst%\lib\ngspice\table.cm
copy %cmsrc%\xtraevt.cm %dst%\lib\ngspice\xtraevt.cm
copy %cmsrc%\xtradev.cm %dst%\lib\ngspice\xtradev.cm
copy %cmsrc%\spice2poly.cm %dst%\lib\ngspice\spice2poly.cm
copy %cmsrc%\tlines.cm %dst%\lib\ngspice\tlines.cm
copy xspice\verilog\ivlng.dll %dst%\lib\ngspice\ivlng.dll
copy xspice\verilog\shim.vpi %dst%\lib\ngspice\ivlng.vpi
@ -50,6 +51,7 @@ copy %cmsrc%\table64.cm %dst%\lib\ngspice\table.cm
copy %cmsrc%\xtraevt64.cm %dst%\lib\ngspice\xtraevt.cm
copy %cmsrc%\xtradev64.cm %dst%\lib\ngspice\xtradev.cm
copy %cmsrc%\spice2poly64.cm %dst%\lib\ngspice\spice2poly.cm
copy %cmsrc%\tlines64.cm %dst%\lib\ngspice\tlines.cm
copy xspice\verilog\ivlng.dll %dst%\lib\ngspice\ivlng.dll
copy xspice\verilog\shim.vpi %dst%\lib\ngspice\ivlng.vpi

2
visualc/make-install-vngspiced.bat

@ -20,6 +20,7 @@ copy %cmsrc%\table.cm %dst%\lib\ngspice\table.cm
copy %cmsrc%\xtraevt.cm %dst%\lib\ngspice\xtraevt.cm
copy %cmsrc%\xtradev.cm %dst%\lib\ngspice\xtradev.cm
copy %cmsrc%\spice2poly.cm %dst%\lib\ngspice\spice2poly.cm
copy %cmsrc%\tlines.cm %dst%\lib\ngspice\tlines.cm
copy xspice\verilog\ivlng.dll %dst%\lib\ngspice\ivlng.dll
copy xspice\verilog\shim.vpi %dst%\lib\ngspice\ivlng.vpi
@ -50,6 +51,7 @@ copy %cmsrc%\table64.cm %dst%\lib\ngspice\table.cm
copy %cmsrc%\xtraevt64.cm %dst%\lib\ngspice\xtraevt.cm
copy %cmsrc%\xtradev64.cm %dst%\lib\ngspice\xtradev.cm
copy %cmsrc%\spice2poly64.cm %dst%\lib\ngspice\spice2poly.cm
copy %cmsrc%\tlines64.cm %dst%\lib\ngspice\tlines.cm
copy xspice\verilog\ivlng.dll %dst%\lib\ngspice\ivlng.dll
copy xspice\verilog\shim.vpi %dst%\lib\ngspice\ivlng.vpi

Loading…
Cancel
Save