Skip to content

Commit e2fa1fc

Browse files
authored
Merge pull request #2 from daedalus/sourcery/master
Sourcery refactored master branch
2 parents bb7e804 + 0b15853 commit e2fa1fc

19 files changed

+59
-120
lines changed

FormalDerivative.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
def FormalDerivative(Fx):
2-
return [(x[0] * x[1], x[1] - 1) for x in Fx if (x[1]-1) > -1]
2+
return [(x[0] * x[1], x[1] - 1) for x in Fx if x[1] > 0]
33

44

55
def polyrep(Fx):

binGCD.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,9 @@ def gcd(a, b):
1212
if b == 0:
1313
return a
1414
if a & 1 == 1:
15-
if b & 1 == 0:
16-
return gcd(a, b >> 1)
17-
else:
18-
return gcd(abs(a - b), min(a, b))
15+
return gcd(a, b >> 1) if b & 1 == 0 else gcd(abs(a - b), min(a, b))
1916
else:
20-
if b & 1 == 1:
21-
return gcd(a >> 1, b)
22-
else:
23-
return 2 * gcd(a >> 1, b >> 1)
17+
return gcd(a >> 1, b) if b & 1 == 1 else 2 * gcd(a >> 1, b >> 1)
2418

2519

2620
def test():

dft.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ def Fk(signal, k):
2727

2828
def nyquist_norm(histogram):
2929
N = len(histogram)
30-
tmp = []
31-
for n in range(0, N / 2):
32-
tmp.append(histogram[n] * 2)
33-
return tmp
30+
return [histogram[n] * 2 for n in range(0, N / 2)]
3431

3532

3633
print nyquist_norm(dft_slow(signal))

dx.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77

88

99
def __df(f, x, h):
10-
r = (f(x + h / 2) - f(x - h / 2)) / h
11-
return r
10+
return (f(x + h / 2) - f(x - h / 2)) / h
1211

1312

1413
def derivative(f):

e.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,14 @@
1111

1212
def direct_e():
1313
x = 6444429920 + 0.22 # or int(0x1801e3260,16) + 0.22
14-
ret = (1 + (1.0 / x)) ** x
15-
return ret
14+
return (1 + (1.0 / x)) ** x
1615

1716

1817
# taylor aproximation of e
1918

2019

2120
def taylor_e():
22-
accum = 0
23-
for n in xrange(0, 15):
24-
accum += 1.0 / (math.factorial(n))
25-
return accum
21+
return sum(1.0 / (math.factorial(n)) for n in xrange(0, 15))
2622

2723

2824
# by limits definition:
@@ -49,7 +45,7 @@ def test():
4945
pi = math.pi
5046

5147
def exp(n, precision=100):
52-
return sum([(n ** x) / math.factorial(x) for x in range(0, precision)])
48+
return sum((n ** x) / math.factorial(x) for x in range(0, precision))
5349

5450
def test_exp():
5551
print(exp(0))

fft.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@
44
pi_i = (-2j) * complex(gmpy2.const_pi())
55

66
def fft(X):
7-
if (N:=len(X)) == 1:
7+
if (N:=len(X)) == 1:
88
return X
9-
else:
10-
N2 = N >> 1
11-
E = fft(X[::2])
12-
O = fft(X[1::2])
13-
for k in range(0, N2):
14-
q = exp((pi_i * k) / N ) * O[k]
15-
X[k] = E[k] + q
16-
X[k + N2] = E[k] - q
9+
N2 = N >> 1
10+
E = fft(X[::2])
11+
O = fft(X[1::2])
12+
for k in range(0, N2):
13+
q = exp((pi_i * k) / N ) * O[k]
14+
X[k] = E[k] + q
15+
X[k + N2] = E[k] - q
1716
return X

legendre_symbol.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def factor(n0):
1717
while n % i == 0:
1818
n = n // i
1919
factors.append(i)
20-
if len(factors) == 0:
20+
if not factors:
2121
factors = [n]
2222
print("factor(%d)=%s" % (n0, str(factors)))
2323
return factors
@@ -42,7 +42,7 @@ def legendre_naive(p, q):
4242
def legendre_prop0(p, q):
4343
print("legendre_prop0(%d|%d)" % (p, q))
4444
phi = (p - 1) * (q - 1)
45-
_pow = pow(int(-1), int(phi // 4))
45+
_pow = pow(-1, int(phi // 4))
4646
return _pow * legendre_naive(q, p)
4747

4848

@@ -79,18 +79,17 @@ def _legendre(p, q):
7979
ret = legendre_naive(q, p)
8080
if p1 == 2:
8181
ret = legendre_prop1(p1, q)
82-
else:
83-
if p1 > 2:
84-
fp1 = factor(p1)[::-1]
85-
tmp = 1
86-
for f in fp1:
87-
# while tmp2 > 1:
88-
if f == 2:
89-
tmp *= legendre_prop1(f, q)
90-
else:
91-
tmp *= _legendre(q, f)
92-
# tmp = legendre_prop2(p1,q)
93-
ret = tmp
82+
elif p1 > 2:
83+
fp1 = factor(p1)[::-1]
84+
tmp = 1
85+
for f in fp1:
86+
# while tmp2 > 1:
87+
if f == 2:
88+
tmp *= legendre_prop1(f, q)
89+
else:
90+
tmp *= _legendre(q, f)
91+
# tmp = legendre_prop2(p1,q)
92+
ret = tmp
9493
print("<legendre(%d|%d) r=%d -> %d" % (p, q, r, ret))
9594
return ret
9695

math_rels.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,11 @@ def sgn(x):
1111

1212

1313
def max(a, b):
14-
if b > a:
15-
return b
16-
else:
17-
return a
14+
return max(b, a)
1815

1916

2017
def min(a, b):
21-
if b < a:
22-
return b
23-
else:
24-
return a
18+
return min(b, a)
2519

2620

2721
def close(a, b, e):

mean.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
# AM => GM => HM
66
# arithmetric mean
77
def AM(data):
8-
accum = 0
9-
for i in range(0, len(data) - 1):
10-
accum += data[i]
8+
accum = sum(data[i] for i in range(0, len(data) - 1))
119
return accum / len(data)
1210

1311

@@ -21,7 +19,5 @@ def GM(data):
2119

2220
# harmonic mean
2321
def HM(data):
24-
accum = 0
25-
for i in range(0, len(data) - 1):
26-
accum += 1 / data[i]
22+
accum = sum(1 / data[i] for i in range(0, len(data) - 1))
2723
return len(data) * (accum ** -1)

newton_method.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ def newtons_method(
1515
epsilon, # Do not divide by a number smaller than this
1616
max_iterations, # The maximum number of iterations to execute
1717
):
18-
for i in range(max_iterations):
19-
y = f(x0)
20-
yprime = f_prime(x0)
21-
if abs(yprime) < epsilon: # Stop if the denominator is too small
22-
break
23-
x1 = x0 - y / yprime # Do Newton's computation
24-
if abs(x1 - x0) <= tolerance: # Stop when the result is within the desired tolerance
25-
return x1 # x1 is a solution within tolerance and maximum number of iterations
26-
x0 = x1 # Update x0 to start the process again
27-
return None
18+
for _ in range(max_iterations):
19+
y = f(x0)
20+
yprime = f_prime(x0)
21+
if abs(yprime) < epsilon: # Stop if the denominator is too small
22+
break
23+
x1 = x0 - y / yprime # Do Newton's computation
24+
if abs(x1 - x0) <= tolerance: # Stop when the result is within the desired tolerance
25+
return x1 # x1 is a solution within tolerance and maximum number of iterations
26+
x0 = x1 # Update x0 to start the process again
27+
return None

0 commit comments

Comments
 (0)