summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2015-09-30 11:48:55 +0200
committerErich Eckner <git@eckner.net>2015-09-30 11:48:55 +0200
commitb9c251fbb813025ed2f13c1ac5b6b90243385b1b (patch)
treeb33afdb2cd4968b7faa99210a2b7a161a0292729
parentb2b8170095b90d3944096e76077d0fa9bef1187b (diff)
downloadPlasmapropagation-b9c251fbb813025ed2f13c1ac5b6b90243385b1b.tar.xz
jetzt vollständig auf double umgestellt und überprüfung der Arraylängen
implementiert
-rw-r--r--Physikunit.pas71
-rw-r--r--Plasmapropagation.lps106
-rwxr-xr-xgenLikoInc4
-rw-r--r--linearkombination.inc2
-rw-r--r--linearkombinationen.inc62
5 files changed, 141 insertions, 104 deletions
diff --git a/Physikunit.pas b/Physikunit.pas
index f95dc32..b4b1456 100644
--- a/Physikunit.pas
+++ b/Physikunit.pas
@@ -106,8 +106,9 @@ type
_aX,_aP: longint;
_dX,_dP,iDX: double;
ffts: array of array[0..1,boolean] of fftw_plan_double; // fft-Algorithmen
- fftTmp: Pcomplex_double; // Zwischenspeicher für ffts
+ fftTmp,lFftTmp: Pcomplex_double; // Zwischenspeicher für ffts
procedure initialisiereDichte(ort,tlc: longint; breite,n: double); inline;
+ procedure pruefeArrayEnden(fehler: string);
public
emFelder: array[tEMFeldGroesze,boolean] of pDouble; // EM-Felder und deren Zeitableitungen
// dPhiDX und B[xyz] haben keine sinnvolle Ableitung hier!
@@ -585,8 +586,9 @@ begin
setlength(impulsRaumGradient,length(teilchen));
for i:=0 to length(impulsRaumGradient)-1 do
for j:=0 to length(impulsRaumGradient[i])-1 do begin
- fftw_getmem(impulsRaumGradient[i,j],aP*aX*sizeof(double));
+ fftw_getmem(impulsRaumGradient[i,j],(aP*aX+1)*sizeof(double));
fillchar(impulsRaumGradient[i,j]^,aP*aX*sizeof(double),#0);
+ (impulsRaumGradient[i,j]+aP*aX)^:=pi;
end;
fillchar(iMGamma,sizeof(iMGamma),#0);
setlength(iMGamma,length(teilchen));
@@ -639,8 +641,13 @@ begin
lichters[true].grep('^rechts .*');
lichters[true].subst('^rechts *','');
- fftw_getmem(fftTmp,(aP+1)*(aX+1)*sizeof(complex_double));
- fillchar(fftTmp^,(aP+1)*(aX+1)*sizeof(complex_double),#0);
+ i:=max((aP div 2 + 1)*aX,(aX div 2 + 1)*aP);
+ fftw_getmem(fftTmp,(i+1)*sizeof(complex_double));
+ fillchar(fftTmp^,(i+1)*sizeof(complex_double),#0);
+ lFftTmp:=fftTmp+i;
+
+ lFftTmp^.re:=pi;
+ lFftTmp^.im:=sqr(pi);
fillchar(ffts,sizeof(ffts),#0);
setlength(ffts,length(teilchen));
@@ -651,11 +658,14 @@ begin
fftw_plan_many_dft_c2r(1,@_aX,aP,fftTmp,nil,aP,1,impulsRaumGradient[i,0],nil,aP,1,[fftw_measure]);
ffts[i,1,false]:= // Planung der Hintransformationen über p
- fftw_plan_many_dft_r2c(1,@_aP,aX,impulsraum[i,false],nil,1,aP,fftTmp,nil,1,aP,[fftw_preserve_input,fftw_measure]);
+ fftw_plan_many_dft_r2c(1,@_aP,aX,impulsraum[i,false],nil,1,aP,fftTmp,nil,1,aP div 2 + 1,[fftw_preserve_input,fftw_measure]);
ffts[i,1,true]:= // Planung der Rücktransformationen über p
- fftw_plan_many_dft_c2r(1,@_aP,aX,fftTmp,nil,1,aP,impulsRaumGradient[i,1],nil,1,aP,[fftw_measure]);
+ fftw_plan_many_dft_c2r(1,@_aP,aX,fftTmp,nil,1,aP div 2 + 1,impulsRaumGradient[i,1],nil,1,aP,[fftw_measure]);
end;
- (*
+
+ pruefeArrayEnden('FFT schreibt beim Planen über das Ende hinaus!');
+
+ (*
fftw_plan_many_dft_r2c(int rank, const int *n, int howmany,
double *in, const int *inembed,
int istride, int idist,
@@ -729,6 +739,26 @@ begin
(impulsraum[tlc,false]+i+ort*aP)^:=(impulsraum[tlc,false]+i+ort*aP)^ * ges;
end;
+procedure tFelder.pruefeArrayEnden(fehler: string);
+var
+ i,j: longint;
+begin
+ if (abs(lFftTmp^.re-pi)>1e-10) or (abs(lFftTmp^.im-sqr(pi))>1e-10) then begin
+ gitter.prot.schreibe(fehler);
+ gitter.prot.schreibe(floattostr(lFftTmp^.re)+' vs. '+floattostr(pi)+' und '+floattostr(lFftTmp^.im)+' vs. '+floattostr(sqr(pi)));
+ gitter.prot.destroyall;
+ halt(1);
+ end;
+ for i:=0 to length(impulsRaumGradient)-1 do
+ for j:=0 to 1 do
+ if abs((impulsRaumGradient[i,j]+aP*aX)^-pi)>1e-10 then begin
+ gitter.prot.schreibe(fehler);
+ gitter.prot.schreibe(floattostr((impulsRaumGradient[i,j]+aP*aX)^)+' vs. '+floattostr(pi));
+ gitter.prot.destroyall;
+ halt(1);
+ end;
+end;
+
procedure tFelder.berechneAbleitungen;
var
i,j,k: longint;
@@ -829,26 +859,35 @@ begin
// Gradienten der Phasenraumbesetzungsdichte berechnen
+ pruefeArrayEnden('Jemand hat das FFT-Array überschrieben!');
+
for i:=0 to length(ffts)-1 do begin
- fftw_execute(ffts[i,0,false]);
- for j:=0 to aX-1 do
+ fftw_execute(ffts[i,0,false]); // FFT in x
+ pruefeArrayEnden('Vorwärts-FFT ('+inttostr(i)+',0) schreibt beim Ausführen über das Ende hinaus!');
+
+ for j:=0 to aX div 2 do
for k:=0 to aP-1 do begin // *i*k*2*pi;
- tmp:=(fftTmp+j+k*aX)^.re;
- (fftTmp+j+k*aX)^.re:=- 2*pi/dX/aX * j * (fftTmp+j+k*aX)^.im/aX;
- (fftTmp+j+k*aX)^.im:= 2*pi/dX/aX * j * tmp/aX;
+ tmp:=(fftTmp+j+k*(aX div 2 + 1))^.re;
+ (fftTmp+j+k*(aX div 2 + 1))^.re:=- 2*pi/dX/aX * j * (fftTmp+j+k*(aX div 2 + 1))^.im/aX * byte(2*j<ax);
+ (fftTmp+j+k*(aX div 2 + 1))^.im:= 2*pi/dX/aX * j * tmp/aX * byte(2*j<ax);
end;
fftw_execute(ffts[i,0,true]);
- fftw_execute(ffts[i,1,false]);
+ pruefeArrayEnden('Rückwärts-FFT ('+inttostr(i)+',0) schreibt beim Ausführen über das Ende hinaus!');
+
+ fftw_execute(ffts[i,1,false]); // FFT in p
+ pruefeArrayEnden('Vorwärts-FFT ('+inttostr(i)+',1) schreibt beim Ausführen über das Ende hinaus!');
for j:=0 to aX-1 do
- for k:=0 to aP-1 do begin // *i*k*2*pi;
+ for k:=0 to aP div 2 do begin // *i*k*2*pi;
tmp:=(fftTmp+j+k*aX)^.re;
- (fftTmp+j+k*aX)^.re:=- 2*pi/dP/aP * k * (fftTmp+j+k*aX)^.im/aP;
- (fftTmp+j+k*aX)^.im:= 2*pi/dP/aP * k * tmp/aP;
+ (fftTmp+j+k*aX)^.re:=- 2*pi/dP/aP * k * (fftTmp+j+k*aX)^.im/aP * byte(2*k < aP);
+ (fftTmp+j+k*aX)^.im:= 2*pi/dP/aP * k * tmp/aP * byte(2*k < aP);
end;
fftw_execute(ffts[i,1,true]);
+ pruefeArrayEnden('Rückwärts-FFT ('+inttostr(i)+',1) schreibt beim Ausführen über das Ende hinaus!');
+
end;
// Zeitableitung der Phasenraumbesetzungsdichte berechnen
diff --git a/Plasmapropagation.lps b/Plasmapropagation.lps
index d9cdf52..be47378 100644
--- a/Plasmapropagation.lps
+++ b/Plasmapropagation.lps
@@ -3,12 +3,12 @@
<ProjectSession>
<Version Value="9"/>
<BuildModes Active="Default"/>
- <Units Count="19">
+ <Units Count="20">
<Unit0>
<Filename Value="Plasmapropagation.lpr"/>
<IsPartOfProject Value="True"/>
<TopLine Value="19"/>
- <CursorPos Y="46"/>
+ <CursorPos Y="48"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit0>
@@ -17,9 +17,9 @@
<IsPartOfProject Value="True"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="618"/>
- <CursorPos X="59" Y="643"/>
- <FoldState Value=" T3lM0{F5 pjdmK0G51214]DWuB0f3]9BkH031 pp4pD0G2 T0!0Pc071F311)"/>
+ <TopLine Value="1039"/>
+ <CursorPos Y="1106"/>
+ <FoldState Value=" T3lN0{F5 pjdmK0G514 pm0s30U3]K2k30f2 T0!dPc071F311Z"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit1>
@@ -28,14 +28,14 @@
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<CursorPos X="20" Y="8"/>
- <UsageCount Value="168"/>
+ <UsageCount Value="170"/>
</Unit2>
<Unit3>
<Filename Value="input.plap"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="3"/>
<CursorPos X="33" Y="23"/>
- <UsageCount Value="167"/>
+ <UsageCount Value="169"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="None"/>
</Unit3>
@@ -43,15 +43,15 @@
<Filename Value="linearkombination.inc"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
- <CursorPos X="54" Y="16"/>
- <UsageCount Value="115"/>
+ <TopLine Value="76"/>
+ <UsageCount Value="117"/>
</Unit4>
<Unit5>
<Filename Value="linearkombinationen.inc"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
- <CursorPos X="29" Y="16"/>
- <UsageCount Value="78"/>
+ <TopLine Value="25"/>
+ <UsageCount Value="80"/>
</Unit5>
<Unit6>
<Filename Value="input.epost"/>
@@ -68,7 +68,7 @@
<TopLine Value="19"/>
<CursorPos X="66" Y="48"/>
<FoldState Value=" T3iA05B pj0jV034 piaj60U6 plLmM041p"/>
- <UsageCount Value="24"/>
+ <UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
@@ -114,8 +114,8 @@
<Unit14>
<Filename Value="rk3_8.inc"/>
<EditorIndex Value="-1"/>
- <CursorPos X="41" Y="6"/>
- <UsageCount Value="9"/>
+ <CursorPos X="71" Y="11"/>
+ <UsageCount Value="10"/>
</Unit14>
<Unit15>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/math.pp"/>
@@ -145,137 +145,135 @@
<CursorPos X="60" Y="95"/>
<UsageCount Value="10"/>
</Unit18>
+ <Unit19>
+ <Filename Value="/usr/lib/fpc/src/rtl/inc/systemh.inc"/>
+ <EditorIndex Value="-1"/>
+ <TopLine Value="295"/>
+ <CursorPos X="3" Y="315"/>
+ <UsageCount Value="10"/>
+ </Unit19>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="Physikunit.pas"/>
- <Caret Line="595" TopLine="576"/>
+ <Caret Line="1534" TopLine="1518"/>
</Position1>
<Position2>
<Filename Value="Physikunit.pas"/>
- <Caret Line="597" TopLine="576"/>
+ <Caret Line="1070" TopLine="1050"/>
</Position2>
<Position3>
<Filename Value="Physikunit.pas"/>
- <Caret Line="604" TopLine="585"/>
+ <Caret Line="1074" TopLine="1050"/>
</Position3>
<Position4>
<Filename Value="Physikunit.pas"/>
- <Caret Line="605" TopLine="585"/>
+ <Caret Line="1077" TopLine="1062"/>
</Position4>
<Position5>
<Filename Value="Physikunit.pas"/>
- <Caret Line="606" TopLine="585"/>
+ <Caret Line="1079" TopLine="1062"/>
</Position5>
<Position6>
<Filename Value="Physikunit.pas"/>
- <Caret Line="608" TopLine="585"/>
+ <Caret Line="1079" TopLine="1062"/>
</Position6>
<Position7>
- <Filename Value="Physikunit.pas"/>
- <Caret Line="609" TopLine="585"/>
+ <Filename Value="Plasmapropagation.lpr"/>
+ <Caret Line="48" TopLine="19"/>
</Position7>
<Position8>
<Filename Value="Physikunit.pas"/>
- <Caret Line="615" TopLine="600"/>
+ <Caret Line="1074" TopLine="1062"/>
</Position8>
<Position9>
<Filename Value="Physikunit.pas"/>
- <Caret Line="616" TopLine="600"/>
+ <Caret Line="1077" TopLine="1062"/>
</Position9>
<Position10>
<Filename Value="Physikunit.pas"/>
- <Caret Line="617" TopLine="600"/>
+ <Caret Line="1079" TopLine="1062"/>
</Position10>
<Position11>
<Filename Value="Physikunit.pas"/>
- <Caret Line="618" TopLine="600"/>
+ <Caret Line="1079" TopLine="112"/>
</Position11>
<Position12>
<Filename Value="Physikunit.pas"/>
- <Caret Line="565" Column="39" TopLine="548"/>
+ <Caret Line="1079" TopLine="91"/>
</Position12>
<Position13>
<Filename Value="Physikunit.pas"/>
- <Caret Line="16" Column="100"/>
+ <Caret Line="109" Column="11" TopLine="85"/>
</Position13>
<Position14>
<Filename Value="Physikunit.pas"/>
- <Caret Line="108" Column="73" TopLine="88"/>
+ <Caret Line="645" Column="21" TopLine="617"/>
</Position14>
<Position15>
<Filename Value="Physikunit.pas"/>
- <Caret Line="109" Column="40" TopLine="89"/>
+ <Caret Line="651" Column="75" TopLine="619"/>
</Position15>
<Position16>
<Filename Value="Physikunit.pas"/>
- <Caret Line="642" Column="57" TopLine="622"/>
+ <Caret Line="653" Column="46" TopLine="621"/>
</Position16>
<Position17>
<Filename Value="Physikunit.pas"/>
- <Caret Line="650" Column="57" TopLine="630"/>
+ <Caret Line="656" Column="75" TopLine="624"/>
</Position17>
<Position18>
<Filename Value="Physikunit.pas"/>
- <Caret Line="112" Column="49" TopLine="83"/>
+ <Caret Line="660" Column="6" TopLine="629"/>
</Position18>
<Position19>
<Filename Value="Physikunit.pas"/>
+ <Caret Line="108" Column="9" TopLine="88"/>
</Position19>
<Position20>
<Filename Value="Physikunit.pas"/>
- <Caret Line="88" Column="62" TopLine="83"/>
+ <Caret Line="109" Column="95" TopLine="88"/>
</Position20>
<Position21>
<Filename Value="Physikunit.pas"/>
- <Caret Line="936" Column="69" TopLine="486"/>
+ <Caret Line="650" Column="16" TopLine="618"/>
</Position21>
<Position22>
<Filename Value="Physikunit.pas"/>
+ <Caret Line="663" Column="22" TopLine="639"/>
</Position22>
<Position23>
<Filename Value="Physikunit.pas"/>
- <Caret Line="108" Column="9" TopLine="93"/>
+ <Caret Line="719" Column="26" TopLine="687"/>
</Position23>
<Position24>
<Filename Value="Physikunit.pas"/>
- <Caret Line="109" Column="95" TopLine="93"/>
+ <Caret Line="724" Column="24" TopLine="690"/>
</Position24>
<Position25>
<Filename Value="Physikunit.pas"/>
- <Caret Line="562" TopLine="551"/>
+ <Caret Line="869" TopLine="831"/>
</Position25>
<Position26>
<Filename Value="Physikunit.pas"/>
- <Caret Line="644" Column="28" TopLine="627"/>
+ <Caret Line="665" Column="69" TopLine="487"/>
</Position26>
<Position27>
<Filename Value="Physikunit.pas"/>
- <Caret Line="672" Column="3" TopLine="548"/>
+ <Caret Line="747" TopLine="643"/>
</Position27>
<Position28>
<Filename Value="Physikunit.pas"/>
- <Caret Line="715" Column="2" TopLine="463"/>
+ <Caret Line="112" TopLine="99"/>
</Position28>
<Position29>
<Filename Value="Physikunit.pas"/>
- <Caret Line="843" Column="46" TopLine="811"/>
+ <Caret Line="761" Column="42" TopLine="682"/>
</Position29>
<Position30>
<Filename Value="Physikunit.pas"/>
- <Caret Line="834" Column="43" TopLine="819"/>
+ <Caret Line="747" Column="36" TopLine="689"/>
</Position30>
</JumpHistory>
</ProjectSession>
- <Debugging>
- <BreakPoints Count="1">
- <Item1>
- <Kind Value="bpkSource"/>
- <WatchScope Value="wpsLocal"/>
- <WatchKind Value="wpkWrite"/>
- <Source Value="Plasmapropagation.lpr"/>
- <Line Value="46"/>
- </Item1>
- </BreakPoints>
- </Debugging>
</CONFIG>
diff --git a/genLikoInc b/genLikoInc
index 6db0770..2c0120f 100755
--- a/genLikoInc
+++ b/genLikoInc
@@ -21,7 +21,7 @@ do
do
echo -ne ",fak${j}" >> ${file}
done
- echo ": extended); overload; inline;" >> ${file}
+ echo ": double); overload; inline;" >> ${file}
done
echo "{\$ENDIF}" >> ${file}
@@ -60,7 +60,7 @@ for ((i=3; i<=maximum; i++))
do
echo -ne "\n{\$IFDEF lkA${i}},fak${i}{\$ENDIF}" >> ${file}
done
-echo ": extended);" >> ${file}
+echo ": double);" >> ${file}
echo "var" >> ${file}
echo " i,j: longint;" >> ${file}
echo " emF: tEMFeldGroesze;" >> ${file}
diff --git a/linearkombination.inc b/linearkombination.inc
index 8fca2c0..5727f04 100644
--- a/linearkombination.inc
+++ b/linearkombination.inc
@@ -62,7 +62,7 @@ fak2
{$IFDEF lkA29},fak29{$ENDIF}
{$IFDEF lkA30},fak30{$ENDIF}
{$IFDEF lkA31},fak31{$ENDIF}
-{$IFDEF lkA32},fak32{$ENDIF}: extended);
+{$IFDEF lkA32},fak32{$ENDIF}: double);
var
i,j: longint;
emF: tEMFeldGroesze;
diff --git a/linearkombinationen.inc b/linearkombinationen.inc
index 5862886..1d11858 100644
--- a/linearkombinationen.inc
+++ b/linearkombinationen.inc
@@ -3,37 +3,37 @@
{$IFDEF LiKoInterface}
// Werte werden auf (in1 + \sum_i faki * ini') gesetzt
-procedure liKo(in1,in2: tFelder; fak2: extended); overload; inline;
-procedure liKo(in1,in2,in3: tFelder; fak2,fak3: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4: tFelder; fak2,fak3,fak4: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5: tFelder; fak2,fak3,fak4,fak5: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6: tFelder; fak2,fak3,fak4,fak5,fak6: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7: tFelder; fak2,fak3,fak4,fak5,fak6,fak7: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28,in29: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28,fak29: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28,in29,in30: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28,fak29,fak30: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28,in29,in30,in31: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28,fak29,fak30,fak31: extended); overload; inline;
-procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28,in29,in30,in31,in32: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28,fak29,fak30,fak31,fak32: extended); overload; inline;
+procedure liKo(in1,in2: tFelder; fak2: double); overload; inline;
+procedure liKo(in1,in2,in3: tFelder; fak2,fak3: double); overload; inline;
+procedure liKo(in1,in2,in3,in4: tFelder; fak2,fak3,fak4: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5: tFelder; fak2,fak3,fak4,fak5: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6: tFelder; fak2,fak3,fak4,fak5,fak6: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7: tFelder; fak2,fak3,fak4,fak5,fak6,fak7: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28,in29: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28,fak29: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28,in29,in30: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28,fak29,fak30: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28,in29,in30,in31: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28,fak29,fak30,fak31: double); overload; inline;
+procedure liKo(in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14,in15,in16,in17,in18,in19,in20,in21,in22,in23,in24,in25,in26,in27,in28,in29,in30,in31,in32: tFelder; fak2,fak3,fak4,fak5,fak6,fak7,fak8,fak9,fak10,fak11,fak12,fak13,fak14,fak15,fak16,fak17,fak18,fak19,fak20,fak21,fak22,fak23,fak24,fak25,fak26,fak27,fak28,fak29,fak30,fak31,fak32: double); overload; inline;
{$ENDIF}
// implementation **************************************************************