[pstricks] Thomae's Function

Juergen Rose rose at rz.uni-potsdam.de
Sun Jun 8 16:25:33 CEST 2008

On So, 2008-06-08 at 11:19 +0200, Jean-Côme Charpentier wrote:
> Herbert Voss a écrit :
> > sebastian perez schrieb:
> >
> >> I'd like to know if it is possible to use pstricks to make the graph of Thomae's function
> >>
> >>
> >> http://en.wikipedia.org/wiki/Thomae's_function
> >
> >
> > not yet possible
>
> ... with a direct way. Otherwise, we can cheat :-)
>
> \documentclass{article}
> \usepackage{multido}
>
> \makeatletter
> \newcommand\IfRelPrime[4]{%
>   \def\reserved at a{#1}%
>   \def\reserved at b{#2}%
>   \loop\ifnum\reserved at b>0
>     \pst at mod\reserved at a\reserved at b\reserved at c
>     \let\reserved at a\reserved at b
>     \let\reserved at b\reserved at c
>   \repeat
>   \ifnum\reserved at a=1
>     \def\reserved at c{#3}%
>   \else
>     \def\reserved at c{#4}%
>   \fi
>   \reserved at c\ignorespaces
> }
> \makeatother
>
> \begin{document}
> \begin{center}
>   \psset{unit=4cm,dotsize=1pt 0}
>   \begin{pspicture}(2.5,1.5)
>     \psaxes{->}(0,0)(2.5,1.5)
>     \multido{\ip=1+1}{50}{%
>       \multido{\iq=1+1}{100}{%
>         \unless\ifnum\ip>\numexpr2*\iq % for x \in [0,2]
>           \IfRelPrime{\ip}{\iq}{%
>             \psdots(!\ip\space \iq\space div 1 \iq\space div)
>           }{\relax}
>        \fi
>       }%
>     }%
>   \end{pspicture}
> \end{center}
> \end{document}
>
> Attention! The two loops can't be extended. For instance, with
>
>   \multido{\ip=1+1}{80}{%
>     \multido{\iq=1+1}{160}{%
>
> I obtain a beautiful
>
> Runaway text?
> " tx at Dict begin STP newpath 0.8 SLW 0  setgray  [ 41 147 div 1 147 di\ETC.
> ! TeX capacity exceeded, sorry [main memory size=1500000].
> \pst at code ...r .5 add exch itransform Dot } repeat
>
> l.36     }
>           %
> No pages of output.
>
> I suppose (I'm not sure) that it's working with recursive macro rather
> multido but I'm too lasy to test it :-)
>
>   Jean-Côme Charpentier
>
> _______________________________________________
> PSTricks mailing list
> PSTricks at tug.org
> http://tug.org/mailman/listinfo/pstricks

It seems that it works for me with tetex-3.0_p1-r6:

rose at condor:/home/rose/Txt_grizzly/Test/TeX(42)$latex thomae_function.tex This is pdfeTeX, Version 3.141592-1.30.5-2.2 (Web2C 7.5.5) entering extended mode (./thomae_function.tex LaTeX2e <2003/12/01> Babel <v3.8d> and hyphenation patterns for american, french, german, ngerman, b ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur kish, ukrainian, nohyphenation, loaded. (/usr/share/texmf/tex/latex/base/article.cls Document Class: article 2004/02/16 v1.4f Standard LaTeX document class (/usr/share/texmf/tex/latex/base/size10.clo)) (/usr/share/texmf/tex/latex/pstricks/pstricks-add.sty (/usr/share/texmf/tex/latex/pstricks/pstricks.sty (/usr/share/texmf/tex/generic/pstricks/pstricks.tex PSTricks' v1.04 <2004/06/22> (tvz) (/usr/share/texmf/tex/generic/pstricks/pstricks.con)) (/usr/share/texmf/tex/latex/xcolor/xcolor.sty (/usr/share/texmf/tex/latex/graphics/color.cfg) (/usr/share/texmf/tex/latex/graphics/dvips.def))) (/usr/share/texmf/tex/generic/pstricks/pstricks-add.tex (/usr/share/texmf/tex/generic/pstricks/pst-plot.tex v97 patch 2, 1999/12/12 (/usr/share/texmf/tex/generic/multido/multido.tex v1.41, 2004/05/18 <tvz>)) (/usr/share/texmf/tex/generic/pstricks/pst-node.tex v97 patch 11, 2000/11/09) (/usr/share/texmf/tex/generic/xkeyval/pst-xkey.tex (/usr/share/texmf/tex/latex/xkeyval/xkeyval.sty (/usr/share/texmf/tex/generic/xkeyval/xkeyval.tex (/usr/share/texmf/tex/generic/xkeyval/keyval.tex)))) pstricks-add' v2.32, 2005/01/16 (hv))) (/usr/share/texmf/tex/generic/multido/multido.sty) (./thomae_function.aux) [1] (./thomae_function.aux) ) Output written on thomae_function.dvi (1 page, 976712 bytes). Transcript written on thomae_function.log. and with app-text/texlive-2007-r3 respectively app-text/texlive-core-2007-r13 rose at grizzly:/home/rose/Txt/Test/TeX(15)$ latex  thomae_function.tex
This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
%&-line parsing enabled.
entering extended mode
(./thomae_function.tex
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, usenglishmax,
dumylang, noh
yphenation, basque, german, ngerman, french, loaded.
(/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
(/usr/share/texmf-dist/tex/latex/base/size10.clo))
(/usr/share/texmf-dist/tex/latex/pstricks/pstricks.sty
(/usr/share/texmf-dist/tex/generic/pstricks/pstricks.tex
PSTricks' v1.15  <2006/12/22> (tvz)
(/usr/share/texmf-dist/tex/generic/pstricks/pstricks.con))
(/usr/share/texmf-site/tex/latex/xcolor/xcolor.sty
(/usr/share/texmf/tex/latex/config/color.cfg)
(/usr/share/texmf-dist/tex/latex/graphics/dvips.def)))
(/usr/share/texmf-dist/tex/generic/pstricks/pst-plot.tex
v97 patch 2, 1999/12/12
(/usr/share/texmf-dist/tex/generic/multido/multido.tex
v1.41, 2004/05/18 <tvz>))
(/usr/share/texmf-dist/tex/generic/pstricks/pst-node.tex
v97 patch 11, 2000/11/09)
(/usr/share/texmf-dist/tex/latex/xkeyval/pst-xkey.tex
(/usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.sty
(/usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.tex
(/usr/share/texmf-dist/tex/latex/xkeyval/keyval.tex))))
pstricks-add' v2.82, 2006/11/22 (dr,hv)))
(/usr/share/texmf-dist/tex/generic/multido/multido.sty)
(./thomae_function.aux)
[1] (./thomae_function.aux) )
Output written on thomae_function.dvi (1 page, 979096 bytes).
Transcript written on thomae_function.log.

as well.

Juergen