Skip to content

Instantly share code, notes, and snippets.

@avelican
Created June 13, 2024 23:51
Show Gist options
  • Save avelican/d2e1b9312b2aa90642007b3afd52a3f7 to your computer and use it in GitHub Desktop.
Save avelican/d2e1b9312b2aa90642007b3afd52a3f7 to your computer and use it in GitHub Desktop.
pi fraction finder
#include <stdio.h>
#include <math.h>
#include <float.h>
int main() {
const double PI = 3.141592653589793;
double m = 1;
double n = 1;
// double max_m = 10000;
// double max_n = 10000;
double max_m = 100000;
double max_n = 100000;
double best_diff = DBL_MAX;
while (1) {
while (1) {
double q = m / n;
double diff = fabs(PI - q);
if (diff < best_diff) {
best_diff = diff;
printf("found new best: %.0f/%.0f\n", m, n);
printf("error: %.15f\n", best_diff);
}
n += 1;
if (n >= max_n) {
// printf("n break: %.0f\n", n);
n = 1;
break;
}
}
m += 1;
if (m >= max_m) {
printf("m break: %.0f\n", m);
break;
}
}
return 0;
}
double PI = 3.141592653589793;
double m = 1;
double n = 1;
// double max_m = 10000;
// double max_n = 10000;
double max_m = 100000;
double max_n = 100000;
double best_diff = 999999;
while (true) {
while (true) {
double q = m/n;
double diff = Math.Abs(PI-q);
if (diff < best_diff) {
best_diff = diff;
Console.WriteLine($"found new best: {m}/{n}");
Console.WriteLine($"error: {best_diff}");
}
n += 1;
if (n >= max_n){
// Console.WriteLine($"n break: {n}");
n = 1;
break;
}
}
m += 1;
if (m >= max_m){
Console.WriteLine($"m break: {m}");
break;
}
}
PI = 3.141592653589793
m = 1
n = 1
max_m = 10000
max_n = 10000
best_diff = 999999
while True:
while True:
q = m/n
diff = abs(PI-q)
if diff < best_diff:
best_diff = diff
print(f"found new best: {m}/{n}");
print(f"error: {best_diff}")
n += 1
if n >= max_n:
# print(f"n break: {n}")
n = 1
break
m += 1
if m >= max_m:
print(f"m break: {m}")
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment