Cでグラフ書くプログラムを作っているのだけれど、
目盛の描画でけっこう苦労している。
例えば、X軸を

xmin = -1.2
xmax = 2.3

までの範囲に描くとすると、切りのいい目盛の位置は、

-1.5
-1.0
-0.5
0
0.5
1.0
1.5
2.0
2.5

とか
-2.0
-1.0
0
1.0
2.0
3.0

になると思うけれど、xmin, xmaxが一般の場合に、どうやってこいう切りのいい数字を
求めたらいいかわからない。なにかお勧めのアルゴリズムとかありますか?
できれば、リニアスケールだけでなく、Logスケールにも対応しているものがあるとうれしい。
なにかヒントよろしく。