円周率を近似するプログラムを作成しようとしています。基本的に、0.00 から 1.00 の間のランダムなポイントを取り、それらを円の境界と比較します。合計ポイントに対する円内のポイントの比率は pi に近づく必要があります (非常に簡単な説明であり、仕様はさらに詳しく説明されています)。
ただし、gcc でコンパイルすると、次のエラーが発生します。
Undefined first referenced
symbol in file
pow /var/tmp//cc6gSbfE.o
ld: fatal: symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
これで何が起こっているのですか?このエラーはこれまで見たことがなく、なぜ発生するのかわかりません。これが私のコードです(ただし、エラーを回避できないため、完全にはテストしていません):
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
float x, y;
float coordSquared;
float coordRoot;
float ratio;
int n;
int count;
int i;
printf("Enter number of points: ");
scanf("%d", &n);
srand(time(0));
for (i = 0; i < n; i++) {
x = rand();
y = rand();
coordSquared = pow(x, 2) + pow(y, 2);
coordRoot = pow(coordSquared, 0.5);
if ((x < coordRoot) && (y < coordRoot)) {
count++;
}
}
ratio = count / n;
ratio = ratio * 4;
printf("Pi is approximately %f", ratio);
return 0;
}