Sass の数学関数ライブラリ、MathSass を少しアップデートした。
おもな変更は log() の実装で、これにより pow() の指数に小数が使えるようになった。また log() に必要な frexp() と ldexp()、定数 $LN2 と $SQRT2 も追加。
今回も 404 Blog Not Found:javascript - Mathを再発明してみた の JavaScript 実装を参考にした、というよりほぼ JS を Sass に翻訳しただけです。dankogai さんありがとうございます。
あと小さなアップデートとして atan2($y, $x) の $x が負のゼロ (-0) の場合の結果を修正した。Sass でゼロが正か負かを判別するには 1/-0.0 == 1/0 という式が必要みたいで、引数に渡すときは -0 ではなく -0.0 とする必要がある。
-0 == 0 // true
-0.0 == 0 // true
1/-0 == 1/0 // true
1/-0.0 == 1/0 // false
Compass を使えば pow() の指数に小数使うとかふつうにできるんだけど、なるべくあれを使いたくないという人は僕だけではないだろうし、頭の体操にもなるし、というふうに自分を納得させつつ作業した。
そして今回もちゃんとした数学の知識がないまま突き進んでるので、どうやら期待した値が得られているようだけど自分が何をやっているのかはよくわかっていないという状態で、まじで誰かに添削してほしいです…