summaryrefslogtreecommitdiff
path: root/graphics/pstricks/contrib/pst-func/tex/pst-func.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pstricks/contrib/pst-func/tex/pst-func.tex')
-rw-r--r--graphics/pstricks/contrib/pst-func/tex/pst-func.tex73
1 files changed, 60 insertions, 13 deletions
diff --git a/graphics/pstricks/contrib/pst-func/tex/pst-func.tex b/graphics/pstricks/contrib/pst-func/tex/pst-func.tex
index 1e982ddb2b..7960baf61b 100644
--- a/graphics/pstricks/contrib/pst-func/tex/pst-func.tex
+++ b/graphics/pstricks/contrib/pst-func/tex/pst-func.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-func.tex 308 2021-10-30 14:11:45Z herbert $
+%% $Id: pst-func.tex 689 2023-04-03 06:46:27Z herbert $
%%
%% This is file `pst-func.tex',
%%
@@ -31,8 +31,8 @@
% interface to the `xkeyval' package
\pst@addfams{pst-func}
%
-\def\fileversion{0.99}
-\def\filedate{2021/11/03}
+\def\fileversion{1.01}
+\def\filedate{2023/04/02}
\message{`PST-func' v\fileversion, \filedate\space (hv)}
%
\pstheader{pst-func.pro}
@@ -233,14 +233,14 @@
\def\psBessel{\@ifnextchar[{\psBessel@i}{\psBessel@i[]}}
\def\psBessel@i[#1]#2#3#4{{%%% #2 = n
\pst@killglue
- \psset{plotpoints=500}%
- \psset{#1}%
+ \psset{plotpoints=500,constI=1,constII=0}%
+ \psset{#1,algebraic=false}%
+ \pstVerb{ /toDegrees { 57.29577951 mul } def }
\parametricplot{#3}{#4}{%
/J1 0 def
- /k { 57.29577951 mul } def
- /xBessel t k def
+ /xBessel t toDegrees def
0 0.1 180 {
- /tB exch k def
+ /tB exch toDegrees def
/J1 J1 0.1 xBessel
tB sin mul tB #2\space mul sub cos mul add def
} for
@@ -706,7 +706,9 @@ grestore
\def\psPrintValue{\pst@object{psPrintValue}}
\def\psPrintValue@i#1{\expandafter\psPrintValue@ii#1,,\@nil}
\def\psPrintValue@ii#1,#2,#3\@nil{% #1,#2 only for algebraic code
+ \addbefore@par{algebraic=false}%
\begin@SpecialObj
+ \use@par
\addto@pscode{
gsave \psk@PSfont\space findfont \psk@fontscale scalefont setfont
\ifPst@algebraic
@@ -1465,14 +1467,18 @@ grestore
\def\psBetaDist@i#1#2{%
\ifdim#1pt<\z@ \psframebox*{\color{red}!!!\#1 must be greater than 0!!!}
\else
+ \begingroup
\addbefore@par{plotpoints=200,alpha=1,beta=1}%
- \begin@OpenObj
- \psplot[algebraic=false]{#1}{#2}{
+ \addto@par{algebraic=false}%
+% \begin@OpenObj
+ \use@par
+ \psplot{#1}{#2}{
\psk@beta \psk@alpha add GAMMA
\psk@beta GAMMA \psk@alpha GAMMA mul div
1 x sub \psk@beta 1.0 sub exp mul
x \psk@alpha 1.0 sub exp mul }
- \end@OpenObj%
+% \end@OpenObj%
+ \endgroup
\fi%
\ignorespaces%
}
@@ -1508,6 +1514,44 @@ grestore
\endgroup%
\ignorespaces%
}
+
+\define@key[psset]{pst-func}{lambda}[1]{\def\psk@lambda{#1 }}
+\psset[pst-func]{lambda=0.5}
+
+\def\psNonCentralTDist{\pst@object{psNonCentralTDist}}
+\def\psNonCentralTDist@i#1#2{%
+ \leavevmode
+ \pst@killglue
+ \begingroup
+ \addbefore@par{plotpoints=500}%
+ \use@par
+ \ifdim\psk@nue pt<\z@ \psframebox*{\color{red}!!!nue must be greater than 0!!!}
+ \else
+ \psplot[algebraic=false]{#1}{#2}{% P(x) = a ( b/c + d/e )
+ \psk@nue dup 2 div exp \psk@nue factorial mul % nominator of a
+ 2 \psk@nue exp Euler \psk@lambda dup mul 2 div exp mul
+ \psk@nue x dup mul add \psk@nue 2 div exp mul
+ \psk@nue 2 div GAMMA mul % denominator of a
+ div % a
+ 2 sqrt \psk@lambda mul x mul
+ \psk@nue 2 div 1 add
+ 1.5
+ \psk@lambda dup mul x dup mul mul 2 div \psk@nue x dup mul add div
+ tx@FuncDict begin ConfHyperFunc end % Confluent Hypergeometric Funtion of the First Kind
+ mul % b
+ \psk@nue x dup mul add \psk@nue 1 add 2 div GAMMA mul % c
+ div % b/c
+ \psk@nue 1 add 2 div 0.5 \psk@lambda dup mul x dup mul mul 2 div \psk@nue x dup mul add div
+ tx@FuncDict begin ConfHyperFunc end % d
+ \psk@nue x dup mul add sqrt \psk@nue 2 div 1 add GAMMA mul % e
+ div % d/e
+ add % b/c + d/e
+ mul % (b/c + d/e) * a
+ }%
+ \fi
+ \endgroup
+ \ignorespaces
+}
%
\def\psFDist{\pst@object{psFDist}}
\def\psFDist@i#1#2{%
@@ -1656,6 +1700,7 @@ grestore
\fi
0 0 % the start point
0 1 nVal 1 sub { dup XvalRelCum exch get exch YvalRelCum exch get } for
+% pstack
\if@star 1 0 0 0 \fi % add values for the closed curve
end
}% filling the area under the curve.
@@ -1676,14 +1721,16 @@ grestore
\leavevmode
\pst@killglue
\begingroup
- \addbefore@par{plotpoints=200,startAngle=0,endAngle=360}%
+ \addbefore@par{plotpoints=200,startAngle=0,endAngle=360,algebraic=false}%
\use@par
\parametricplot{\psk@startAngle}{\psk@endAngle}{%
t cos dup mul 1 #1\space div exp \pst@radiusA \pst@number\psxunit div mul
t 90 gt { t 270 lt { neg } if } if
t sin dup mul 1 #1\space div exp \pst@radiusB \pst@number\psyunit div mul
t 180 gt { neg } if }
- \endgroup\ignorespaces}
+ \endgroup
+ \ignorespaces
+}
%
\def\psWeierstrass{\pst@object{psWeierstrass}}
\def\psWeierstrass@i(#1,#2){\@ifnextchar[{\psWeierstrass@ii(#1,#2)}{\psWeierstrass@iii(#1,#2)}}