summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/dvips
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/dvips')
-rw-r--r--Master/texmf-dist/dvips/pstricks/pst-tools.pro156
-rw-r--r--Master/texmf-dist/dvips/pstricks/pstricks.pro9
2 files changed, 159 insertions, 6 deletions
diff --git a/Master/texmf-dist/dvips/pstricks/pst-tools.pro b/Master/texmf-dist/dvips/pstricks/pst-tools.pro
index 580f9381c3d..d463d158ff1 100644
--- a/Master/texmf-dist/dvips/pstricks/pst-tools.pro
+++ b/Master/texmf-dist/dvips/pstricks/pst-tools.pro
@@ -1,13 +1,165 @@
-% $Id: pst-tools.pro 490 2011-04-23 09:25:30Z herbert $
+% $Id: pst-tools.pro 622 2012-01-01 15:36:14Z herbert $
%
%% PostScript tools prologue for pstricks.tex.
-%% Version 0.01, 2011/04/23
+%% Version 0.02, 2012/01/01
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%
%
+/Pi2 1.57079632679489661925640 def
+/factorial { % n on stack, returns n!
+ dup 0 eq { 1 }{
+ dup 1 gt { dup 1 sub factorial mul } if }
+ ifelse } def
+%
+/MoverN { % m n on stack, returns the binomial coefficient m over n
+ 2 dict begin
+ /n exch def /m exch def
+ n 0 eq { 1 }{
+ m n eq { 1 }{
+ m factorial n factorial m n sub factorial mul div } ifelse } ifelse
+ end
+} def
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% subroutines for complex numbers, given as an array [a b]
+% which is a+bi = Real+i Imag
+%
+/cxadd { % [a1 b1] [a2 b2] = [a1+a2 b1+b2]
+ dup 0 get % [a1 b1] [a2 b2] a2
+ 3 -1 roll % [a2 b2] a2 [a1 b1]
+ dup 0 get % [a2 b2] a2 [a1 b1] a1
+ 3 -1 roll % [a2 b2] [a1 b1] a1 a2
+ add % [a2 b2] [a1 b1] a1+a2
+ 3 1 roll % a1+a2 [a2 b2] [a1 b1]
+ 1 get % a1+a2 [a2 b2] b1
+ exch 1 get % a1+a2 b1 b2
+ add 2 array astore
+} def
+%
+/cxneg { % [a b]
+ dup 1 get % [a b] b
+ exch 0 get % b a
+ neg exch neg % -a -b
+ 2 array astore
+} def
+%
+/cxsub { cxneg cxadd } def % same as negative addition
+%
+% [a1 b1][a2 b2] = [a1a2-b1b2 a1b2+b1a2] = [a3 b3]
+/cxmul { % [a1 b1] [a2 b2]
+ dup 0 get % [a1 b1] [a2 b2] a2
+ exch 1 get % [a1 b1] a2 b2
+ 3 -1 roll % a2 b2 [a1 b1]
+ dup 0 get % a2 b2 [a1 b1] a1
+ exch 1 get % a2 b2 a1 b1
+ dup % a2 b2 a1 b1 b1
+ 5 -1 roll dup % b2 a1 b1 b1 a2 a2
+ 3 1 roll mul % b2 a1 b1 a2 b1a2
+ 5 -2 roll dup % b1 a2 b1a2 b2 a1 a1
+ 3 -1 roll dup % b1 a2 b1a2 a1 a1 b2 b2
+ 3 1 roll mul % b1 a2 b1a2 a1 b2 a1b2
+ 4 -1 roll add % b1 a2 a1 b2 b3
+ 4 2 roll mul % b1 b2 b3 a1a2
+ 4 2 roll mul sub % b3 a3
+ exch 2 array astore
+} def
+%
+% [a b]^2 = [a^2-b^2 2ab] = [a2 b2]
+/cxsqr { % [a b] square root
+ dup 0 get exch 1 get % a b
+ dup dup mul % a b b^2
+ 3 -1 roll % b b^2 a
+ dup dup mul % b b^2 a a^2
+ 3 -1 roll sub % b a a2
+ 3 1 roll mul 2 mul % a2 b2
+ 2 array astore
+} def
+%
+/cxsqrt { % [a b]
+% dup cxnorm sqrt /r exch def
+% cxarg 2 div RadtoDeg dup cos r mul exch sin r mul cxmake2
+ cxlog % log[a b]
+ 2 cxrdiv % log[a b]/2
+ aload pop exch % b a
+ 2.781 exch exp % b exp(a)
+ exch cxconv exch % [Re +iIm] exp(a)
+ cxrmul %
+} def
+%
+/cxarg { % [a b]
+ aload pop % a b
+ exch atan % arctan b/a
+ DegtoRad % arg(z)=atan(b/a)
+} def
+%
+% log[a b] = [a^2-b^2 2ab] = [a2 b2]
+/cxlog { % [a b]
+ dup % [a b][a b]
+ cxnorm % [a b] |z|
+ log % [a b] log|z|
+ exch % log|z|[a b]
+ cxarg % log|z| Theta
+ cxmake2 % [log|z| Theta]
+} def
+%
+% square of magnitude of complex number
+/cxnorm2 { % [a b]
+ dup 0 get exch 1 get % a b
+ dup mul % a b^2
+ exch dup mul add % a^2+b^2
+} def
+%
+/cxnorm { % [a b]
+ cxnorm2 sqrt
+} def
+%
+/cxconj { % conjugent complex
+ dup 0 get exch 1 get % a b
+ neg 2 array astore % [a -b]
+} def
+%
+/cxre { 0 get } def % real value
+/cxim { 1 get } def % imag value
+%
+% 1/[a b] = ([a -b]/(a^2+b^2)
+/cxrecip { % [a b]
+ dup cxnorm2 exch % n2 [a b]
+ dup 0 get exch 1 get % n2 a b
+ 3 -1 roll % a b n2
+ dup % a b n2 n2
+ 4 -1 roll exch div % b n2 a/n2
+ 3 1 roll div % a/n2 b/n2
+ neg 2 array astore
+} def
+%
+/cxmake1 { 0 2 array astore } def % make a complex number, real given
+/cxmake2 { 2 array astore } def % dito, both given
+%
+/cxdiv { cxrecip cxmul } def
+%
+% multiplikation by a real number
+/cxrmul { % [a b] r
+ exch aload pop % r a b
+ 3 -1 roll dup % a b r r
+ 3 1 roll mul % a r b*r
+ 3 1 roll mul % b*r a*r
+ exch 2 array astore % [a*r b*r]
+} def
+%
+% division by a real number
+/cxrdiv { % [a b] r
+ 1 exch div % [a b] 1/r
+ cxrmul
+} def
+%
+% exp(i theta) = cos(theta)+i sin(theta) polar<->cartesian
+/cxconv { % theta
+ RadtoDeg dup sin exch cos cxmake2
+} def
+
%%%%% ### bubblesort ###
%% syntax : array bubblesort --> array2 trie par ordre croissant
%% code de Bill Casselman
diff --git a/Master/texmf-dist/dvips/pstricks/pstricks.pro b/Master/texmf-dist/dvips/pstricks/pstricks.pro
index a91ca474cff..707b9307f5d 100644
--- a/Master/texmf-dist/dvips/pstricks/pstricks.pro
+++ b/Master/texmf-dist/dvips/pstricks/pstricks.pro
@@ -1,4 +1,4 @@
-% $Id: pstricks.pro 594 2011-10-31 18:13:18Z herbert $
+% $Id: pstricks.pro 622 2012-01-01 15:36:14Z herbert $
%
%% PostScript prologue for pstricks.tex.
%% Version 1.09, 2011/10/31
@@ -361,9 +361,10 @@ tx@Dict begin
/showpoints ED
counttomark 2 div dup cvi /n ED % n 2 div on stack
n eq not { exch pop } if % even numbers of points? delete one
- showpoints
- { ] aload /Points ED }
- { n 2 mul 1 add -1 roll pop } ifelse % delete the mark symbol
+ ] aload /Points ED
+ showpoints not { Points aload pop } if
+% { ] aload /Points ED }
+% { n 2 mul 1 add -1 roll pop } ifelse % delete the mark symbol
} def
%
/Line {