プロが教えるわが家の防犯対策術!

C言語のプログラムで#include<math.h>を使わず#include<stdio.h>だけで√(sqrt)を表現することは可能でしょうか?

A 回答 (4件)

ご自分で sqrt 関数を作れば可能です。


こんな感じでしょうか。

#include <stdio.h>

static double
sqrt (double s)
{
 double x = s / 2.0;
 double last_x = 0.0;

 while (x != last_x)
 {
  last_x = x;
  x = (x + s / x) / 2.0;
 }

 return (x);
}

int
main (int argc, char * argv[])
{
 printf ("sqrt (%f) = %f\n", 3.0, sqrt (3.0));
}
    • good
    • 1

sqrt()の関数及び引数の型定義が、math.h以下のincludeファイル内で


記述されているので、コンパイル時に警告(warning)メッセージが出力
されますがコンパイル及び実行はできます。
    • good
    • 0

もちろん出来ます


こういった関数は、どれも望む誤差に収まるまでテイラー展開を利用してやれば良いです
これなら加減乗除とこれらの繰り返しだけでOKです

・誤差を小さく
・計算を速く
を考えると、いろいろ工夫が必要でしょうが…

あと、平方根限るなら、開閉法が速いでしょう
    • good
    • 1

「√(sqrt)を表現する」とはどういうことでしょうか?



例えば
#include <stdio.h>
double sqrt(double);

int main()
{
printf("sqrt(5) = %f\n", sqrt(5));
return 0;
}
でちゃんと平方根を表示してくれますが, これは希望に沿ったものですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!