Compare commits

..
3 Commits
Author SHA1 Message Date
wyj bbbebf1fdf update: rerun MC integral 2025-12-07 18:53:12 -05:00
wyj 37b7fdce8f fix: memcpy 2025-12-07 18:52:39 -05:00
wyj fb2a2fce59 clean: clean and omp 2025-12-07 17:22:50 -05:00
3 changed files with 8 additions and 2 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ double percentile(const double *arr, size_t n, double perc) {
}
double *arr_copy = malloc(sizeof(double)*n);
memcpy(arr_copy, arr, n);
memcpy(arr_copy, arr, n*sizeof(double));
// nearest-rank: ceil(0.9*n) - 1
size_t k = (size_t)(perc*n) - 1;
double ans = select_k(arr_copy, n, k);
+5
View File
@@ -89,6 +89,11 @@ int MC_pixel_render(const System *system, int i, int j, const Spline_data spline
gsl_monte_miser_init(miser_state);
gsl_monte_miser_integrate(&F, xl, xu, 2, 100, r, miser_state, &color, &err);
//printf("%g +- %g ", color, err);
if (err > pixel_render_err) {
int ncalls = 100*(err/pixel_render_err)*(err/pixel_render_err);
if (ncalls > pixel_render_max) ncalls = pixel_render_max;
gsl_monte_miser_integrate(&F, xl, xu, 2, ncalls, r, miser_state, &color, &err);
}
rgb[c] = color;
}
//printf(")\n");
+2 -1
View File
@@ -25,6 +25,7 @@ int buffer_normalize_srgb(double *buffer, int W, int H) {
max = percentile(buffer, W*H*3, cutperc);
printf("max in the buffer: %g\n", max);
if (max == 0) return 1;
#pragma omp parallel for
for (int j = 0; j < H; j++) {
for (int i = 0; i < W; i++) {
for (int c = 0; c < 3; c++) {
@@ -39,7 +40,7 @@ int buffer_normalize_srgb(double *buffer, int W, int H) {
int write_png(char *filename, double *buffer, int W, int H) {
buffer_normalize_srgb(buffer, W, H);
size_t bufsize = W*H*3;
printf("bufsize: %d\n", bufsize);
//printf("bufsize: %d\n", bufsize);
uint8_t *img = (uint8_t *)malloc(bufsize*sizeof(uint8_t));
if (!img) {return 1;}