[TikZ/PGF] ifthenelse の仕様について
if の判定が false の場合も then 側の式が展開されますね。
たとえば
\begin{tikzpicture}[
declare function={
foo(\x)=(\x)^(10);
hoge(\x)=ifthenelse(\x<1,foo(\x),1);
hogeSAFE(\x)=ifthenelse(\x<1,foo(min(\x,1)),1);
}
]
\draw[domain=0:3,samples=40] plot (\x,{hoge(\x)});
\end{tikzpicture}
において、hoge(\x) をプロットしようとすると \x>1 のときにも
foo(\x) が計算されてしまうために dimension too large error
となります。このため hogeSAFE(\x) のようにする必要があるの
ですが、これでも無駄な計算が生じるのが気に入りません。
そこで質問なのですが、
(1) ifthenelse のこの仕様のメリットは何でしょうか?
(2) 無駄な計算の生じない書き方はありませんか?
(2)はもちろん区間別にプロットすればよいのですが、そんなコードが
大量にあると見づらくなるので、1つの関数として定義したいのです。