# Tikz getting jagged line when plotting polar function

It seems like one of the functions I'm using has a piecewise representation in tikz?

I tried with more sample points, but it did not improve.

I'm getting these jagged edges in my plot. I have no idea why. It should be smooth like this wolframalpha:

But for the values with x greater than 0.5*pi it is smooth. can I set some options in pgf to not approximate the log and trig functions maybe?

\documentclass[tikz]{standalone}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\usepackage[latin1]{inputenc}
\begin{document}
\begin{tikzpicture}

\draw [->,thick] (-1,0) -- (5,0) node[right] {$x$};
\draw [->,thick] (0,-2) -- (0,2) node[above] {$y$};
\draw[domain= 0.01*pi:0.99*pi,scale=1.5,samples=600] plot ({deg(\x)}:{-1*ln(tan(\x/2 r))});

\end{tikzpicture}

\end{document}

• Try samples=60
– user31034
Jan 11 at 11:05
• Or even samples=30 but adding option smooth
– NBur
Jan 11 at 11:10
• still doesn't look right with fewer samples. Jan 11 at 11:28

The default implementation of function ln in tikz (actually pgfmath) is rather basic and not accurate enough. Installing the floating-point calculation only for ln will give smoother calculation results hence fixes the problem.

Quoting Henri Menke's comment:

It should be noted that fpu doesn't actually give you more accuracy (i.e. decimal digits) but significantly increases the range of accessible numbers.

Note the option /pgf/fpu/install only is available since pgf-tikz v3.1.6.

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta, fpu}

\begin{document}
\begin{tikzpicture}
\tikzset{/pgf/fpu/install only=ln}
\draw [->,thick] (-1,0) -- (5,0) node[right] {$x$};
\draw [->,thick] (0,-2) -- (0,2) node[above] {$y$};
\draw[domain= 0.01*pi:0.99*pi,scale=1.5,samples=600]
plot ({deg(\x)}:{-1*ln(tan(\x/2 r))});
\end{tikzpicture}
\end{document}


• It should be noted that fpu doesn't actually give you more accuracy (i.e. decimal digits) but significantly increases the range of accessible numbers. Jan 11 at 13:07
• Updating pgf and using fpu was indeed working Jan 12 at 14:39