rustの三角関数を自分用にカスタマイズする

以前にrustの三角関数が衝撃的過ぎる!っていう話をしました。

rustの三角関数が衝撃的過ぎる!

多くの他の言語だと、sin(x)と書けるところが、rustだとx.sin()と書きます。

今回は、多くの他の言語と同じようにsin(x)と書けるように自分用のsin()のラッパーを作りましょう。

rust三角関数のラッパーづくり

では、関数作っていきましょ。

ひとまず基本的な3つ、sin,cos,tan。

基本の仕上がり目標

出来上がりの目標は、x.sin()をmy_sin(x)にしていきます。cos,tanも同様に変換します。

sin()正弦

fn my_sin(x: f32) -> f32 {
     return x.sin();
 }

cos()余弦

fn my_cos(x: f32) -> f32 {
     return x.cos();
 }

tan()正接

fn my_tan(x: f32) -> f32 {
     return x.tan();
 }

これで完成です。簡単ですね。

では、さらにちょっと工夫してみましょう。

発展形

では、発展していきましょう。

計算するときに\(Asin(x)\)を計算する場面があると思います。

これをコードにすると

A*x.sin();//標準の方法
A*my_sin(x);//自作のラッパー

となります。

けど、これをmy_sin(A,x)って書けたらどうでしょう?

ではこれを作ってみましょう

fn my_sin(a:f32,x:f32)->f32{
  return a*x.sin();
}
fn my_cos(a:f32,x:f32)->f32{
  return a*x.cos();
}
fn my_tan(a:f32,x:f32)->f32{
  return a*x.tan();
}

完成!

まとめ

元々ある関数を自分が買いやすいように違う関数にしてみたり、あとはマクロを組んでみたりするとより一層、プログラミングが楽になります。

「標準だと使いづらいな。」とか「このプログラムだとこういう特殊な使い方をする関数が欲しいな」とか思ったら、是非自分で自作関数にしてみたらいかがでしょうか?

コメント

  1. […] ここで出てきているmy_sinとmy_cosは、rustの三角関数を自分用にカスタマイズするで解説しています。 […]

タイトルとURLをコピーしました