def zeta(s): """ zeta(s) -- calculate the Riemann zeta function of a real or complex argument s. """ Float.store() Float._prec += 8 si = s s = ComplexFloat(s) if s.real < 0: # Reflection formula (XXX: gets bad around the zeros) pi = pi_float() y = power(2, s) * power(pi, s-1) * sin(pi*s/2) * gamma(1-s) * zeta(1-s) else: p = Float._prec n = int((p + 2.28*abs(float(s.imag)))/2.54) + 3 d = _zeta_coefs(n) if isinstance(si, (int, long)): t = 0 for k in range(n): t += (((-1)**k * (d[k] - d[n])) << p) // (k+1)**si y = (Float((t, -p)) / -d[n]) / (Float(1) - Float(2)**(1-si)) else: t = Float(0) for k in range(n): t += (-1)**k * Float(d[k]-d[n]) * exp(-_logk(k+1)*s) y = (t / -d[n]) / (Float(1) - exp(log(2)*(1-s))) Float.revert() if isinstance(y, ComplexFloat) and s.imag == 0: return +y.real else: return +y
def getSlope(times, valueList, maxCoverage, sqrt=False, verbose=False, tmpFileName="tmpFig.png"): x = np.array(times) x = np.array(times).astype(float)[0:maxCoverage] averageValues = np.array(valueList).astype(float)[0:maxCoverage] try: a, b = np.polyfit(x, averageValues, 1) popt = curve_fit(f.power, x, averageValues) aPower = popt[0][0] bPower = popt[0][1] if verbose: plt.figure(num=None, figsize=(3, 3), dpi=80, facecolor='w', edgecolor='k') label = "{}x+{}".format(a, b) print(label) plt.plot(x, averageValues) y = a * np.array(x) + b plt.plot(x, y, label=label) y = f.power(x, aPower, bPower) label = "{}x^{}".format(aPower, bPower) plt.plot(x, y, label=label) plt.legend(loc='upper left', prop={'size': 6}) plt.savefig(tmpFileName) plt.close() if sqrt: valueSlope = aPower else: valueSlope = a except (TypeError, RuntimeError, ValueError): if (verbose): print("Error fitting...") print(x) print(averageValues) traceback.print_exc(file=sys.stdout) valueSlope = 0 return valueSlope
def plot(x, y): maxCoverage = 31 #gyradiusList vs averageSizes indexes = range(1, maxCoverage) xPlot = np.array(x)[indexes] xPlot = [np.mean(i) for i in xPlot] yPlot = np.array(y) plt.xlabel("Gyradius") plt.ylabel("Island size") plt.grid(True) plt.loglog(xPlot, yPlot, ".") # fit popt = curve_fit(f.power, xPlot, yPlot) aPower = popt[0][0] bPower = popt[0][1] label = "{}x^{}".format(aPower, bPower) yPlot = f.power(xPlot, aPower, bPower) plt.loglog(xPlot, yPlot, label=label) plt.legend(loc='upper left', prop={'size': 12}) plt.savefig("gyradiusVsSize.png") plt.close()
folder = "flux3.5e" + str(i) flux = float("3.5e" + str(i)) print(folder) try: os.chdir(folder) meanValues = mk.getIslandDistribution(temperatures, False, False) except OSError: print("error changing to {}".format(folder)) a = 0 #do nothing os.chdir(workingPath) mtt = meanValues.getAeRatioTimesPossible() #/flux**.063 r = np.array(mk.getRtt(temperatures)) #/flux**0.5 plt.loglog(mtt, r, "-", label="N " + folder) if (i < -7): popt = curve_fit(f.power, r, mtt) a = popt[0][0] b = popt[0][1] x = r a = 2e2 b = 2 / 3 label = "{}x^{}".format(a, b) y = f.power(x, a, b) plt.loglog(x, y, label=label) plt.legend(loc='lower right', prop={'size': 6}) plt.savefig("aeRatioVsRate.png") plt.close() print("Good bye!")
def test_power(): assert f.power(1, 1) == 1 assert f.power(5, 2) == 25 assert f.power(2, -2) == 0.25 assert f.power(-2, 2) == 4
- To quit, press X """) op = input("> Enter operator key: ").lower() if op == 'x': break elif op == 'a': print("> The answer is: ", f.add(num1, num2)) elif op == 's': in_order = bool( int(input( ">> Enter 1 -> num1 - num2 OR Enter 0 -> num2 - num1: "))) print("> The answer is: ", f.subtract(num1, num2, in_order=in_order)) elif op == 'm': print("> The answer is: ", f.multiply(num1, num2)) elif op == 'd': in_order = bool( int(input(">> Enter 1 -> num1 / num2 OR Enter 0 -> num2 / num1"))) print("> The answer is: ", f.divide(num1, num2, in_order=in_order)) elif op == 'p': print("> The answer is: ", f.power(num1, num2)) else: print("> Invalid entry, try again...")
def plot(ax, ax2, data, i): marker = ["o", "s", "H", "D", "^", "d", "h", "p", "o"] cm = plt.get_cmap("Accent") alpha = 0.5 mew = 0 lw = 3 data = np.array(data) flux = data[0, 0] x = data[:, 6] / flux**0.17 if ax2 != None: ax2.plot(x, data[:, 5], label="isld", lw=lw, ls="--", color=cm(i / 8)) ax2.text(x[0] / 8, data[:, 5][0], fun.base10(flux), color=cm(i / 8), size=10) lg1, = ax.plot(x, data[:, 3], label=r"$F=$" + fun.base10(flux), lw=lw, marker="", ls="-", mew=mew, ms=8, alpha=alpha, color=cm(i / 8)) ax.plot(x, data[:, 4], label=r"$N_h$" + fun.base10(flux), lw=lw + 1, marker="", ls="-.", mew=1, color=cm(i / 8), markeredgecolor=cm(i / 8), ms=7, alpha=1) ax.text(x[0] / 8, data[:, 4][0], fun.base10(flux), color=cm(i / 8), size=10) if i == 0: ax.annotate("", xytext=(x[1], data[:, 4][1] * 1.5), xy=(x[1] / 80, data[:, 4][1] * 3), arrowprops=dict(arrowstyle="->", connectionstyle="angle3", ls="-", color="gray"), ha="center", va="center") if i == 4: xFit = np.array([1e2, 1e12]) ax2.plot(xFit, fun.power(xFit, 4e4, -0.3333), ls=":", color="black") bbox_props = dict(boxstyle="round", fc="w", ec="0.5", alpha=0.3) label = r"$\theta=0.30$" ax.annotate(r"$1/3$", xy=(1e5, 3e2), bbox=bbox_props) ax.annotate(label, xy=(0.5, 0.93), xycoords="axes fraction", bbox=bbox_props) ax.annotate("", xy=(1e9, 1e-5), xycoords='data', xytext=(1e9, 1e4), arrowprops=dict(arrowstyle="-", connectionstyle="arc3", ls="--", color="gray")) ax.annotate("", xy=(8e10, 1e-5), xycoords='data', xytext=(8e10, 1e4), arrowprops=dict(arrowstyle="-", connectionstyle="arc3", ls="--", color="gray")) addEllipses() alpha = 0.2 arrow = dict(arrowstyle="-[", ls="-", color="gray", alpha=0) ax.annotate("A", xy=(7e2, 3), xytext=(7e2, 1), ha="center", va="center", arrowprops=arrow, color="green", alpha=alpha) ax.annotate("B", xy=(7e2, 1e-4), xytext=(7e2, 1e-4), ha="center", va="center", arrowprops=arrow, color="blue", alpha=alpha) ax.annotate("C", xy=(8e9, 1), xytext=(8e9, 5e-1), ha="center", va="center", arrowprops=arrow, color="red", alpha=alpha) ax.annotate("D", xy=(8e11, 2e2), xytext=(8e11, 7e2), ha="center", va="center", arrowprops=arrow, color="brown", alpha=alpha) y = 3e-5 ax.text(2e7, y, "$I$", color="gray") ax.text(5e9, y, "$II$", color="gray") ax.text(2e11, y, "$III$", color="gray") ax2.annotate("", xy=(x[-1] * 18, data[:, 5][-1]), xytext=(x[-1] * 2, data[:, 5][-1] / 1.5), arrowprops=dict(arrowstyle="->", connectionstyle="angle3", ls="-", color="gray"), ha="center", va="center")