コンパイル時にマンデルブロ集合を計算する

マンデルブロ集合(http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%B3%E3%83%87%E3%83%AB%E3%83%96%E3%83%AD%E9%9B%86%E5%90%88)とは有名な 複素平面上の集合、及びそれを複素平面上にプロットしたフラクタル図形の呼称です。
簡単に計算出来、比較的見栄えのするため進捗した感が味わえるので実装したことのある人も多いと思います。
あまり詳しい説明をする気は無いので詳細は各自でググるなりお願いします。今回はそれをconstexprで実装しコンパイル時に計算してみました。
計算するだけでは面白く無いので結果を実行時にプロットしてみました。実装ではコンパイル時間や再帰深度の都合から区間は実軸距軸とも-1から1までの範囲で、収束判定の打ち切りを72回までにしているので精度はそこまで良くないと思いますがそれでも特徴的なフラクタル図形を描くような結果が出ているのが分かります。

それにしても、そんなことよりiotaや複素数に対するabs等が既に全て実装されているSproutを賞賛したい…素晴らしいです。

実行結果です、ご確認下さい。
http://melpon.org/wandbox/permlink/S4CHO69I7VmU7jZs
この規模はclangで試すとコンパイルエラーになりました

clangでもこのくらいの規模だと計算出来ました
http://melpon.org/wandbox/permlink/1Pgz6O2RH9amRvpy

[追記]
折角なのでもう少しそれっぽく見える範囲まで描画してみました。
今回は実軸虚軸とも-1.5から1.5までの範囲です。

http://melpon.org/wandbox/permlink/bPAYMl4AE1pAxOxA

f:id:fimbul:20140423133633p:plain

描画が綺麗な方(-1.5から1.5)のソースコードをgistに残しておきます
https://gist.github.com/fimbul/11189672