Bug fixes:

fix function rdivide
fix a copy/paste bug in cpline
add copying of tlines
This commit is contained in:
Holger Vogt 2025-07-22 19:16:54 +02:00
parent 3e37603abb
commit 79e2aa9174
7 changed files with 38 additions and 24 deletions

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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