このボードにはFPU:MC68881が載っているのでビルドスクリプトに「-m68881」を追加してFPU用の演算ライブラリを利用できるようにします。
includeファイルのmath.hを覗いてみるといろいろな組込み関数が用意されていますが
おそらく一生使わないであろうベッセル関数やガンマ関数といった特殊関数も入っていてせっかくなので動作だけ見てみました。
Γ(n+1)=n!
が成立します。
ただガンマ関数は引数によって値が爆発的に増大するので標準Cライブラリにおける実装はそれの自然対数をとった log|Γ(x)| になっているようです。
なのでこのように書いてΓ(1)~Γ(13)で求めると、(14を超えるとlongに収まらないので)
ちゃんと階乗の値になっています・・・実数計算なので一部誤差ありますが。
もっとも階乗なら教科書的には整数で再帰的に計算するのが普通ですけど。
ガンマ関数の引数はもちろん実数も可能で、面白い性質として
Γ(1/2)=√π
になるとされています。
やってみたら・・・なりました。(いつものように小数表現ができないので1,000,000倍しています)