summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-05-20 22:00:54 +0000
committerKarl Berry <karl@freefriends.org>2014-05-20 22:00:54 +0000
commit22ffe2908d71591f30ac96514d5ad0a71113766d (patch)
treec293af2202b3e0d95e3d11f6f721bd5c4eebc76b
parent8db754efe5c2736dfbd92d0fe891c6cc89e4071d (diff)
pst-func (19may14)
git-svn-id: svn://tug.org/texlive/trunk@34156 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/generic/pst-func/Changes3
-rw-r--r--Master/texmf-dist/doc/generic/pst-func/pst-func-doc.pdfbin3384351 -> 3397668 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-func/pst-func-doc.tex110
-rw-r--r--Master/texmf-dist/dvips/pst-func/pst-func.pro21
-rw-r--r--Master/texmf-dist/tex/generic/pst-func/pst-func.tex170
-rw-r--r--Master/texmf-dist/tex/latex/pst-func/pst-func.sty4
6 files changed, 293 insertions, 15 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-func/Changes b/Master/texmf-dist/doc/generic/pst-func/Changes
index 8aa33af14e2..c15453770a6 100644
--- a/Master/texmf-dist/doc/generic/pst-func/Changes
+++ b/Master/texmf-dist/doc/generic/pst-func/Changes
@@ -1,4 +1,7 @@
..... pst-func.tex
+0.80 2014-05-19 - added \psZero for calculating and printing
+ the zeros of a function or the intermediate
+ point of two functions.
0.79 2014-03-21 - allow option algebraic for \psVolume
0.78 2014-02-03 - added \psWeierstrass as original defined
0.77 2014-02-01 - added \psWeierstrass
diff --git a/Master/texmf-dist/doc/generic/pst-func/pst-func-doc.pdf b/Master/texmf-dist/doc/generic/pst-func/pst-func-doc.pdf
index 284f88e215f..367b9332fdf 100644
--- a/Master/texmf-dist/doc/generic/pst-func/pst-func-doc.pdf
+++ b/Master/texmf-dist/doc/generic/pst-func/pst-func-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-func/pst-func-doc.tex b/Master/texmf-dist/doc/generic/pst-func/pst-func-doc.tex
index e582a82e4ea..6530ae60883 100644
--- a/Master/texmf-dist/doc/generic/pst-func/pst-func-doc.tex
+++ b/Master/texmf-dist/doc/generic/pst-func/pst-func-doc.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-func-doc.tex 890 2014-02-02 15:47:16Z herbert $
+%% $Id: pst-func-doc.tex 918 2014-05-19 12:32:37Z herbert $
\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,
smallheadings, headexclude,footexclude,oneside]{pst-doc}
\usepackage[utf8]{inputenc}
@@ -66,6 +66,7 @@ Thanks to \\
Patrice Mégret,
Svend Mortensen,
Matthias Rüss,
+ Thomas Söll,
Jose-Emilio Vila-Forcen,
Timothy Van Zandt,
Michael Zedler,
@@ -496,6 +497,7 @@ options can be set in the usual way with \Lcs{psset}.
\end{pspicture*}
\end{LTXexample}
+
\clearpage
\subsection{\Lcs{psBernstein}}
The polynomials defined by
@@ -586,6 +588,112 @@ which plots the envelope curve instead of the Bernstein polynomial.
\end{pspicture*}
\end{LTXexample}
+
+\clearpage
+\subsection{Calculating the zeros of a function or the the intermediate point of two function}
+
+\begin{BDef}
+\Lcs{psZero}\OptArgs\Largr{$x_0,x_1$}\Largb{functionA}\OptArg{functionB}\Largb{node name}
+\end{BDef}
+
+If the second function is not given the macro calculates and displays the zeros of
+the first function. If the second function is defined too, then the macro calculates the
+intermediate point of the two functions. The intervall is defined as $[x_0,x_1]$.
+Possible optional arguments are
+
+
+\medskip
+\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule
+\emph{Name} & \emph{Default} & \emph{Meaning} \\\midrule
+\Lkeyword{markZeros} & false & Mark the zeros/intermediate points with a symbol.\\
+\Lkeyword{Newton} & false & Use Newton method instead of the bisector one.\\
+\Lkeyword{PrintCoord} & false & Print the pair of coordinate of the zero/intermediate point.\\
+\Lkeyword{onlyNode} & false & Calculate only the node, do not print anything.\\
+\Lkeyword{onlyYVal} & false & Print only the value.\\
+\Lkeyword{originV} & false & Put the values without an offset.\\
+\Lkeyword{PointName} & I & The printed prefix for the calculated Points.\\
+\Lkeyword{decimals} & 2 & The decimals for the $x$ value.\\
+\Lkeyword{ydecimals} & 2 & The decimals for the $y$ value.\\
+\Lkeyword{xShift} & 0 & $x$ move for the printed value.\\
+\Lkeyword{yShift} & 0 & $y$ move for the printed value.\\\bottomrule
+\end{tabularx}
+
+\medskip
+The following example was done by Thomas Söll.
+
+\bigskip
+\definecolor{BeigeTS}{rgb}{0.98,0.95,0.87}
+\definecolor{CornBlauTS}{rgb}{0.39,0.59,0.93}
+\definecolor{SandBraun}{rgb}{0.96,0.64,0.38}
+\psset{yunit=1.25cm,arrowinset=0.02,arrowlength=2,linewidth=0.5pt,saveNodeCoors,NodeCoorPrefix=n}
+\def\funkf{2*sqrt(x)*cos(ln(x))*sin(x)}
+\begin{pspicture}[plotpoints=500,algebraic,fontscale=5,markZeros,PrintCoord,
+ PointName=N,dotscale=0.7](-0.5,-3)(10,2.5)
+\psStep[fillstyle=solid,fillcolor=BeigeTS,opacity=0.7,linewidth=0.3pt,
+ linecolor=SandBraun!50](0.001,9.5){40}{\funkf}
+\psStep[StepType=Riemann,fillstyle=solid,opacity=0.3,fillcolor=CornBlauTS,
+ linecolor=CornBlauTS,linewidth=0.3pt](0.001,9.5){40}{\funkf}
+\psaxes[labelFontSize=\scriptstyle,ticksize=-0.1 0]{->}(0,0)(0,-2.75)(10,2.5)
+\psplot[linecolor=BeigeTS!60,linewidth=0.8pt]{0.001}{9.75}{\funkf}
+\psplotTangent[linecolor=blue,Derive={Derive(1,\funkf)}]{1.29}{1.5}{\funkf}
+\uput[90](6,1.2){$f(x)=2\cdot\sqrt{x}\cdot\cos{(\ln{x})}\cdot\sin{x}$}
+{\psset{dotscale=1.5,linecolor=blue!50!black!90,ydecimals=0}
+ \psZero[xShift=-0.2,yShift=0.15,postString=1,Newton](0.5,1){\funkf}{N1}
+ \psZero[xShift=-0.05,yShift=0.15,postString=2](2,4){\funkf}{N2}
+ \psZero[xShift=-0.45,yShift=0.15,postString=3](4,6){\funkf}{N3}
+ \psZero[xShift=-0.45,yShift=0.15,postString=4](6,7){\funkf}{N4}
+ \psZero[xShift=-0.45,yShift=0.15,postString=5](9,11){\funkf}{N5}
+ \psZero[xShift=-1.15,yShift=0,PointName=M,
+ postString={m=1}](0.5,2){Derive(1,\funkf)-1+\funkf}[\funkf]{M}%
+}
+\pcline{->}(0.5,-1)(M)
+\nbput[nrot=:U,labelsep=0.01]{%
+ \scriptsize Steigung ist hier
+ \psPrintValueNew[PSfont=Palatino-Roman,decimals=0,round,fontscale=7]{nMx,{Derive(1,\funkf)}}}
+\psdot[linecolor=green,strokeopacity=0.8](*{nMx} {\funkf})
+\uput[90](*{nMx} {\funkf}){$m=$
+ \psPrintValueNew[PSfont=Palatino-Roman,decimals=0,round,fontscale=8]{nMx,{Derive(1,\funkf)}}}
+\end{pspicture}
+
+
+%\begin{LTXexample}[pos=t]
+\begin{lstlisting}
+\definecolor{BeigeTS}{rgb}{0.98,0.95,0.87}
+\definecolor{CornBlauTS}{rgb}{0.39,0.59,0.93}
+\definecolor{SandBraun}{rgb}{0.96,0.64,0.38}
+\psset{yunit=1.25cm,arrowinset=0.02,arrowlength=2,linewidth=0.5pt,saveNodeCoors,NodeCoorPrefix=n}
+\def\funkf{2*sqrt(x)*cos(ln(x))*sin(x)}
+\begin{pspicture}[plotpoints=500,algebraic,fontscale=5,markZeros,PrintCoord,
+ PointName=N,dotscale=0.7](-0.5,-3)(10,2.5)
+\psStep[fillstyle=solid,fillcolor=BeigeTS,opacity=0.7,linewidth=0.3pt,
+ linecolor=SandBraun!50](0.001,9.5){40}{\funkf}
+\psStep[StepType=Riemann,fillstyle=solid,opacity=0.3,fillcolor=CornBlauTS,
+ linecolor=CornBlauTS,linewidth=0.3pt](0.001,9.5){40}{\funkf}
+\psaxes[labelFontSize=\scriptstyle,ticksize=-0.1 0]{->}(0,0)(0,-2.75)(10,2.5)
+\psplot[linecolor=BeigeTS!60,linewidth=0.8pt]{0.001}{9.75}{\funkf}
+\psplotTangent[linecolor=blue,Derive={Derive(1,\funkf)}]{1.29}{1.5}{\funkf}
+\uput[90](6,1.2){$f(x)=2\cdot\sqrt{x}\cdot\cos{(\ln{x})}\cdot\sin{x}$}
+{\psset{dotscale=1.5,linecolor=blue!50!black!90,ydecimals=0}
+ \psZero[xShift=-0.2,yShift=0.15,postString=1,Newton](0.5,1){\funkf}{N1}
+ \psZero[xShift=-0.05,yShift=0.15,postString=2](2,4){\funkf}{N2}
+ \psZero[xShift=-0.45,yShift=0.15,postString=3](4,6){\funkf}{N3}
+ \psZero[xShift=-0.45,yShift=0.15,postString=4](6,7){\funkf}{N4}
+ \psZero[xShift=-0.45,yShift=0.15,postString=5](9,11){\funkf}{N5}
+ \psZero[xShift=-1.15,yShift=0,PointName=M,
+ postString={m=1}](0.5,2){Derive(1,\funkf)-1+\funkf}[\funkf]{M}%
+}
+\pcline{->}(0.5,-1)(M)
+\nbput[nrot=:U,labelsep=0.01]{%
+ \scriptsize Steigung ist hier
+ \psPrintValueNew[PSfont=Palatino-Roman,decimals=0,round,fontscale=7]{nMx,{Derive(1,\funkf)}}}
+\psdot[linecolor=green,strokeopacity=0.8](*{nMx} {\funkf})
+\uput[90](*{nMx} {\funkf}){$m=$
+ \psPrintValueNew[PSfont=Palatino-Roman,decimals=0,round,fontscale=8]{nMx,{Derive(1,\funkf)}}}
+\end{pspicture}
+\end{lstlisting}
+%\end{LTXexample}
+
+
\psset{unit=1cm}
\clearpage
\section{\Lcs{psFourier}}
diff --git a/Master/texmf-dist/dvips/pst-func/pst-func.pro b/Master/texmf-dist/dvips/pst-func/pst-func.pro
index 6bbdb70d79c..25a8995ee10 100644
--- a/Master/texmf-dist/dvips/pst-func/pst-func.pro
+++ b/Master/texmf-dist/dvips/pst-func/pst-func.pro
@@ -1,4 +1,4 @@
-%% $Id: pst-func.pro 789 2013-06-10 13:50:35Z herbert $
+%% $Id: pst-func.pro 918 2014-05-19 12:32:37Z herbert $
%%
%% This is file `pst-func.pro',
%%
@@ -16,7 +16,7 @@
%% `pst-func' is a PSTricks package to plot special math functions
%%
%%
-%% version 0.15 / 2013-06-10 Herbert Voss
+%% version 0.16 / 2014-05-07 Herbert Voss
%
/tx@FuncDict 100 dict def
tx@FuncDict begin
@@ -24,7 +24,8 @@ tx@FuncDict begin
/eps1 1.0e-05 def
/eps2 1.0e-04 def
/eps8 1.0e-08 def
-/Pi2 1.57079632679489661925640 def
+%
+/PiHalf 1.57079632679489661925640 def
/CEuler 0.5772156649 def % Euler-Mascheroni constant
%
/factorial { % n on stack, returns n!
@@ -113,8 +114,8 @@ tx@FuncDict begin
dup dup /t ED % leave one on stack
neg 1 add /t1 ED % t1=1-t
envelope
- { t t1 mul 4 mul Pi2 mul n mul sqrt 1 exch Div } % envelope
- { noveri t i exp mul t1 ni exp mul } ifelse % t f(t)
+ { t t1 mul 4 mul PiHalf mul n mul sqrt 1 exch Div } % envelope
+ { noveri t i exp mul t1 ni exp mul } ifelse % t f(t)
ScreenCoor % convert to screen coor
} for
end
@@ -136,7 +137,7 @@ tx@FuncDict begin
Sum
} def
/si { % integral sin from x to infty -> si(x)=Si(x)-pi/2
- Si Pi2 sub
+ Si PiHalf sub
} def
/Ci { % integral cosin from x to infty (arg on stack)
abs /arg exch def
@@ -187,8 +188,8 @@ tx@FuncDict begin
/Steffensen {% the start value must be on top of the stack
/y0 exch def % the start value
- /Iter 0 def
- {
+ /Iter 0 def /MaxIter 200 def
+ { pstack
y0 func /F exch def
F abs eps2 lt { exit } if
y0 F sub /Phi exch def
@@ -201,7 +202,9 @@ tx@FuncDict begin
/Iter Iter 1 add def
Iter MaxIter gt { exit } if
} loop
- y0 % the returned value ist the zero point
+ y0 28 mul % the returned value ist the zero point
+ 0
+ 3 0 360 arc gsave 0 0 1 setrgbcolor fill grestore 1 setlinewidth stroke
} def
%
/Horner {% x [coeff] must be on top of the stack
diff --git a/Master/texmf-dist/tex/generic/pst-func/pst-func.tex b/Master/texmf-dist/tex/generic/pst-func/pst-func.tex
index cf5c27b9d78..790f1d01006 100644
--- a/Master/texmf-dist/tex/generic/pst-func/pst-func.tex
+++ b/Master/texmf-dist/tex/generic/pst-func/pst-func.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-func.tex 897 2014-03-21 08:06:41Z herbert $
+%% $Id: pst-func.tex 918 2014-05-19 12:32:37Z herbert $
%%
%% This is file `pst-func.tex',
%%
@@ -23,6 +23,7 @@
\ifx\PSTricksLoaded\endinput\else \input pstricks.tex\fi
\ifx\PSTnodesLoaded\endinput\else \input pst-plot.tex\fi
\ifx\PSTmathLoaded\endinput \else \input pst-math.tex\fi
+\ifx\PSTtoolsLoaded\endinput \else \input pst-tools.tex\fi
\ifx\PSTricksAddLoaded\endinput\else\input pstricks-add.tex\fi
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey.tex \fi
%
@@ -30,8 +31,8 @@
% interface to the `xkeyval' package
\pst@addfams{pst-func}
%
-\def\fileversion{0.79}
-\def\filedate{2014/03/21}
+\def\fileversion{0.80}
+\def\filedate{2015/05/19}
\message{`PST-func' v\fileversion, \filedate\space (hv)}
%
\pstheader{pst-func.pro}
@@ -100,6 +101,47 @@
zeroLineWidth=0.5\pslinewidth,%
zeroLineColor=black}%
%
+\def\psGetZeros{\pst@object{psGetZeros}}
+\def\psGetZeros@i(#1,#2)#3{%
+ \pst@killglue
+ \begin@SpecialObj
+ \use@par
+ \typeout{>>> GetZeros}%
+ \addto@pscode{
+ tx@FuncDict begin
+ /xStart #1 def /xEnd #2 def
+ /x xStart def
+ /func { /x exch def \ifPst@algebraic (#3) AlgParser cvx exec \else #3 \fi } def
+ #1 Steffensen
+ \ifPst@markZeros \fi
+ end
+ }%
+ \end@SpecialObj
+\ignorespaces
+}
+\iffalse
+/Steffensen {% the start value and the function must be on top of the stack
+ /y0 exch def % the start value
+ /Iter 0 def /MaxIter 200 def
+ {
+ y0 Function /F exch def
+ F abs eps2 lt { exit } if
+ y0 F sub /Phi exch def
+ Phi Function /F2 exch def
+ F2 abs eps2 le { exit }{
+ Phi y0 sub dup mul Phi F2 sub 2 Phi mul sub y0 add Div /Diff exch def
+ y0 Diff sub /y0 exch def
+ Diff abs eps1 le { exit } if
+ } ifelse
+ /Iter Iter 1 add def
+ Iter MaxIter gt { exit } if
+ } loop
+ y0 % the returned value ist the zero point
+ 0 \tx@ScreenCoor pstack
+ 3 0 360 arc gsave 0 0 1 setrgbcolor fill grestore 1 setlinewidth stroke
+} def
+\fi
+%
\def\psPolynomial{\pst@object{psPolynomial}}
\def\psPolynomial@i#1#2{%
\pst@killglue%
@@ -1225,6 +1267,128 @@
\endgroup
\ignorespaces}
%
+\define@boolkey[psset]{pst-func}[Pst@]{Newton}[true]{}
+\define@boolkey[psset]{pst-func}[Pst@]{PrintCoord}[true]{}
+\define@boolkey[psset]{pst-func}[Pst@]{onlyNode}[true]{}
+\define@boolkey[psset]{pst-func}[Pst@]{onlyYVal}[true]{}
+\define@boolkey[psset]{pst-func}[Pst@]{originV}[true]{}
+\define@key[psset]{pst-func}{PointName}[]{\def\psk@PointName{#1}}
+\define@key[psset]{pst-func}{ydecimals}[2]{\pst@getint{#1}\psk@ydecimals }
+\psset[pst-func]{originV=false,onlyNode=false,ydecimals=2,
+ PrintCoord=false,onlyYVal=false,Newton=false,PointName=I,
+}
+%--------------------------------------------------------------------
+%------------- calculate the value of an intersectionpoint -----------
+%---------------------------------------------------------------------
+\def\psZero{\def\pst@par{}\pst@object{psZero}}
+\def\psZero@i(#1,#2)#3{\@ifnextchar[{\psZero@ii(#1,#2)#3}{\psZero@ii(#1,#2){#3}[0]}}
+\def\psZero@ii(#1,#2)#3[#4]#5{%
+% (#1,#2) Intervall für die Nullstelle, bzw #1 Startwert für Newton, #3 1. Funktion, #4 2. Funktion, #5 Knotenname
+ \begingroup
+ \pst@killglue
+% \addbefore@par{fontscale=40,PSfont=Times-Roman}%
+ \use@par
+ \pstVerb{
+ /FunctionA
+ \ifPst@algebraic (#3) tx@AlgToPs begin AlgToPs end cvx \else {#3} \fi def
+ /FunctionB
+ \ifPst@algebraic (#4) tx@AlgToPs begin AlgToPs end cvx \else {#4} \fi def
+ \ifPst@Newton % --------------------------- Newton-Verfahren --- TS 05.2014
+ /eps 1e-6 def % eps f\"{u}r (f(x+eps)-f(x))/eps
+ /x0 #1 def % Startwert wird vorgegeben
+ /Xend x0 def
+ {
+ /xe x0 eps add def % xe=x+eps
+ /x x0 def % x nun x0 setzen, damit f(x0) berechnet werden kann
+ /func0 FunctionA FunctionB sub def % func0=F(x0)-FB(x0)
+ func0 0 eq {exit} if % wenn func0 = 0 -> exit
+ /x xe def % x xe setzen
+ /func1 FunctionA FunctionB sub def % func1=F(xe)-FB(xe)
+ /Xend x0 func0 eps mul func1 func0 sub div sub def % Xend=x0-(func0*eps)/(func1-func0)
+ /x Xend def % x wird nun Xend
+ /funcend FunctionA FunctionB sub def % funcend=F(Xend)-FB(Xend)
+ funcend abs 1e-6 le {exit} if % Wenn funcend < 1e-6 -> exit
+ /x0 Xend def % sonst x0 = Xend und
+ } loop % die Schleife beginnt mit x0 = Xend
+ /xM Xend def
+ \else % -------------------- Intervallhalbierungsverfahren von Manuel L.
+ /Xinf #1 def % linker Wert des Intervalls, in dem die Nullstelle gesucht wird
+ /Xsup #2 def % linker Wert des Intervalls, in dem die Nullstelle gesucht wird
+ { /xM Xinf Xsup add 2 div def % Mittelwert -> Mitte des Intervalls ist xM2
+ /x Xinf def % Variable x wird als linker Wert festgelegt
+ /F_1 FunctionA FunctionB sub def % Definition der Differenzfunktion F_1 an der Stelle x=Xinf2
+ /x xM def % Variable x wird als Mittelwert festgelegt
+ /F_M FunctionA FunctionB sub def % Definition der Differenzfunktion F_M an der Stelle x=xM2
+ F_M 0 eq {exit} if % Ist F_M = 0 => fertig
+ F_1 F_M mul 0 ge {/Xinf xM def} {/Xsup xM def} ifelse % F_1 * F_M > 0 (F_1 und F_M haben gleiches VZ) => neuer linker x-Wert = xM2
+ Xinf Xsup sub abs 1e-6 le {exit} if } loop % Die Schleife endet, wenn die Differenz von linkem und rechtem Wert < 10^-6
+ \fi
+ /x xM def FunctionA /yM exch def % x wird Mittelwert und an dieser Stelle die Funktion berechnet und als yM2 definiert
+ }%
+ \pnode(! xM yM){#5}%
+ \addto@pscode{
+ \ifPst@onlyNode \else
+ /dec \psk@decimals\space def % Anzahl der Dezimahlen f\"{u}r x
+ /ydec \psk@ydecimals\space def % Anzahl der Dezimalen f\"{u}r y
+ /symb { /Symbol findfont \psk@fontscale\space scalefont setfont } bind def % Symbolschrift f\"{u}r Klammer und senkrechten Strich
+ /schrift { \psk@PSfont findfont \psk@fontscale scalefont setfont } bind def % Schrift f\"{u}r die Ergebnisse
+ /TiefSchrift { /Symbol findfont \psk@fontscale 1.6 div scalefont setfont } bind def % Schrift f\"{u}r tiefergestellte Buchstaben
+ /spdx \psk@fontscale 4 div def % Abstand, der mit der Schriftg\"{o}{\ss}e skaliert ist
+ /spdy \psk@fontscale 15 div def % Abstand, der mit der Schriftg\"{o}{\ss}e skaliert ist
+ /Wert { 10 dec exp mul round 10 dec exp div dec 0 eq {cvi 15 string cvs} {15 string cvs } ifelse % x-Wert runden und als string ablegen
+ \ifPst@comma dot2comma \fi show } def % gegebenenfalls Komma statt Punkt und Ergebnis anzeigen
+ /yWert { 10 ydec exp mul round 10 ydec exp div ydec 0 eq {cvi 15 string cvs} {15 string cvs } ifelse % y-Wert runden und als string ablegen
+ \ifPst@comma dot2comma \fi show } def % gegebenenfalls Komma statt Punkt und Ergebnis anzeigen
+ /FunctionA \ifPst@algebraic (#3) tx@AlgToPs begin AlgToPs end cvx \else {#3} \fi def
+ /FunctionB \ifPst@algebraic (#4) tx@AlgToPs begin AlgToPs end cvx \else {#4} \fi def
+ \ifPst@Newton
+ /eps 1e-6 def
+ /x0 #1 def
+ /Xend x0 def
+ { /xe x0 eps add def
+ /x x0 def
+ /func0 FunctionA FunctionB sub def
+ func0 0 eq {exit} if
+ /x xe def
+ /func1 FunctionA FunctionB sub def
+ /Xend x0 func0 eps mul func1 func0 sub div sub def
+ /x Xend def
+ /funcend FunctionA FunctionB sub def
+ funcend abs 1e-6 le {exit} if
+ /x0 Xend def
+ } loop
+ /xM Xend def
+ \else
+ /Xinf #1 def /Xsup #2 def
+ { /xM Xinf Xsup add 2 div def
+ /x Xinf def /F_1 FunctionA FunctionB sub def
+ /x Xsup def /F_2 FunctionA FunctionB sub def
+ /x xM def /F_M FunctionA FunctionB sub def
+ F_M 0 eq {exit} if
+ F_1 F_M mul 0 ge {/Xinf xM def} {/Xsup xM def} ifelse
+ Xinf Xsup sub abs 1e-6 le {exit} if } loop
+ \fi
+ /x xM def FunctionA /yM exch def
+ \ifPst@originV 0 0 \else
+ xM \psk@xShift\space add \pst@number\psxunit mul
+ yM \psk@yShift\space add \pst@number\psyunit mul
+ \fi
+ \ifPst@PrintCoord
+ moveto schrift (\psk@PointName) show
+ spdx neg spdy 2 mul neg rmoveto TiefSchrift (\psk@postString) show
+ 0 spdy 3 mul rmoveto symb (\string\050) show
+ 0 spdy neg rmoveto schrift xM Wert
+ spdx 3 div spdy rmoveto symb (\string\174) show
+ spdx 3 div spdy neg rmoveto yM yWert 0 spdy rmoveto symb (\string\051) show
+ \else
+ \ifPst@onlyYVal moveto schrift yM yWert \else moveto schrift xM Wert \fi
+ \fi\fi
+ }%
+ \ifPst@markZeros \psdot(#5)\fi
+\endgroup\use@pscode\ignorespaces
+}%
+%
+
\catcode`\@=\PstAtCode\relax
%
%% END: pst-func.tex
diff --git a/Master/texmf-dist/tex/latex/pst-func/pst-func.sty b/Master/texmf-dist/tex/latex/pst-func/pst-func.sty
index 934cfad3050..2f8d9173e66 100644
--- a/Master/texmf-dist/tex/latex/pst-func/pst-func.sty
+++ b/Master/texmf-dist/tex/latex/pst-func/pst-func.sty
@@ -6,7 +6,7 @@
[\filedate\space v\fileversion\space `PST-func' (hv)]
\IfFileExists{pst-func.pro}{%
\ProvidesFile{pst-func.pro}
- [2013/06/03 v. 0.14, PostScript prologue file (hv)]
+ [2014/05/07 v. 0.16, PostScript prologue file (hv)]
\@addtofilelist{pst-func.pro}}{}%
\endinput
-%% $Id: pst-func.sty 784 2013-06-03 07:24:05Z herbert $
+%% $Id: pst-func.sty 918 2014-05-19 12:32:37Z herbert $