| #include "rsbench.h" |
| |
| // Park & Miller Multiplicative Conguential Algorithm |
| // From "Numerical Recipes" Second Edition |
| double rn(unsigned long * seed) |
| { |
| double ret; |
| unsigned long n1; |
| unsigned long a = 16807; |
| unsigned long m = 2147483647; |
| n1 = ( a * (*seed) ) % m; |
| *seed = n1; |
| ret = (double) n1 / m; |
| return ret; |
| } |
| |
| size_t get_mem_estimate( Input input ) |
| { |
| size_t poles = input.n_nuclides * input.avg_n_poles * sizeof(Pole) + input.n_nuclides * sizeof(Pole *); |
| size_t windows = input.n_nuclides * input.avg_n_windows * sizeof(Window) + input.n_nuclides * sizeof(Window *); |
| size_t pseudo_K0RS = input.n_nuclides * input.numL * sizeof( double ) + input.n_nuclides * sizeof(double); |
| size_t other = input.n_nuclides * 2 * sizeof(int); |
| |
| size_t total = poles + windows + pseudo_K0RS + other; |
| |
| return total; |
| } |