Moved gromacs module from mdevaluate to pygmx

This commit is contained in:
Niels Müller
2016-06-03 12:34:36 +02:00
parent eeb5c607f8
commit a601636d55
10 changed files with 10017 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
from libc.math cimport floor, ceil, fabs, log10
def is_log_step(long long step, long long per_decade):
# The first step will never be written
if step == 0:
return True
if step == 1:
return True
cdef double log_step = log10(step)
cdef double log_next = log10(step+1)
cdef double log_prev = log10(step-1)
cdef long long decade = int(log10(step))
# Idea: Is there a number x = decade + n / per_decade
# with 0 <= n < per_decade where
# | log_step - x | <= | log_prev - x |
# | log_step - x | < | log_next - x |
# Calculate the closest numbers
cdef double n_smaller = floor((log_step - decade) * per_decade);
cdef double n_larger = ceil((log_step - decade) * per_decade);
cdef double prev_dist = fabs(log_prev-decade-n_smaller/per_decade);
cdef double dist_to_smaller = fabs(log_step-decade-n_smaller/per_decade);
cdef double next_dist = fabs(log_next-decade-n_larger/per_decade);
cdef double dist_to_larger = fabs(log_step-decade-n_larger/per_decade);
if dist_to_larger < next_dist or dist_to_smaller <= prev_dist:
return True
else:
return False