import numpy as np
from numba import njit
@njit
def dp_formula_with_numba(a: np.ndarray, b: float, x: np.ndarray):
""" formula dp """
q = a**.5
print((b - 1) / q)
print((b - 1) / (a**.5))
term1 = np.arcsinh((b - 1) / (a ** .5))
return ((1 - b) * np.arcsinh(b / (a ** .5)) - ((b ** 2 - 2 * b + a + 1) ** .5) + ((b ** 2 + a) ** .5) +
term1 * (b - 1)) * ((1 - x ** 2) ** .5)
def dp_formula(a, b, x):
""" formula dp """
print((b -1)/ (a**.5))
term1 = np.arcsinh((b - 1) / (a ** .5))
return ((1 - b) * np.arcsinh(b / (a ** .5)) - ((b ** 2 - 2 * b + a + 1) ** .5) + ((b ** 2 + a) ** .5) +
term1 * (b - 1)) * ((1 - x ** 2) ** .5)
Nx = 7
Nint = int(Nx/2)
XX1 = np.arange(0, Nint + 1) / Nint
XX1[0] = 0.0025
XX1[Nint] = 0.9999
b_int = 0
a_int = (0.25 * XX1) ** 2
print("a_int: " + str(a_int) + " dtype:" + str(a_int.dtype) + " type:" + str(type(a_int)))
print("b_int: " + str(b_int) + " type:" + str(type(b_int)))
print("XX1: " + str(XX1) + " dtype:" + str(XX1.dtype) + " type:" + str(type(XX1)))
print()
print()
w_numba = dp_formula_with_numba(a_int, b_int, XX1)
w = dp_formula(a_int, b_int, XX1)
print("")
print('With numba: ' + str(w_numba))
print('With numpy: ' + str(w))
aW1wb3J0IG51bXB5IGFzIG5wCmZyb20gbnVtYmEgaW1wb3J0IG5qaXQKCgpAbmppdApkZWYgZHBfZm9ybXVsYV93aXRoX251bWJhKGE6IG5wLm5kYXJyYXksIGI6IGZsb2F0LCB4OiBucC5uZGFycmF5KToKICAgICIiIiBmb3JtdWxhIGRwICIiIgogICAgcSA9IGEqKi41CiAgICBwcmludCgoYiAtIDEpIC8gcSkKICAgIHByaW50KChiIC0gMSkgLyAoYSoqLjUpKQogICAgdGVybTEgPSBucC5hcmNzaW5oKChiIC0gMSkgLyAoYSAqKiAuNSkpCiAgICByZXR1cm4gKCgxIC0gYikgKiBucC5hcmNzaW5oKGIgLyAoYSAqKiAuNSkpIC0gKChiICoqIDIgLSAyICogYiArIGEgKyAxKSAqKiAuNSkgKyAoKGIgKiogMiArIGEpICoqIC41KSArCiAgICAgICAgICAgIHRlcm0xICogKGIgLSAxKSkgKiAoKDEgLSB4ICoqIDIpICoqIC41KQoKCmRlZiBkcF9mb3JtdWxhKGEsIGIsIHgpOgogICAgIiIiIGZvcm11bGEgZHAgIiIiCiAgICBwcmludCgoYiAtMSkvIChhKiouNSkpCiAgICB0ZXJtMSA9IG5wLmFyY3NpbmgoKGIgLSAxKSAvIChhICoqIC41KSkKICAgIHJldHVybiAoKDEgLSBiKSAqIG5wLmFyY3NpbmgoYiAvIChhICoqIC41KSkgLSAoKGIgKiogMiAtIDIgKiBiICsgYSArIDEpICoqIC41KSArICgoYiAqKiAyICsgYSkgKiogLjUpICsKICAgICAgICAgICAgdGVybTEgKiAoYiAtIDEpKSAqICgoMSAtIHggKiogMikgKiogLjUpCgoKTnggPSA3Ck5pbnQgPSBpbnQoTngvMikKWFgxID0gbnAuYXJhbmdlKDAsIE5pbnQgKyAxKSAvIE5pbnQKWFgxWzBdID0gMC4wMDI1ClhYMVtOaW50XSA9IDAuOTk5OQpiX2ludCA9IDAKYV9pbnQgPSAoMC4yNSAqIFhYMSkgKiogMgpwcmludCgiYV9pbnQ6ICIgKyBzdHIoYV9pbnQpICsgIiAgIGR0eXBlOiIgKyBzdHIoYV9pbnQuZHR5cGUpICsgIiAgIHR5cGU6IiArIHN0cih0eXBlKGFfaW50KSkpCnByaW50KCJiX2ludDogIiArIHN0cihiX2ludCkgKyAiICAgdHlwZToiICsgc3RyKHR5cGUoYl9pbnQpKSkKcHJpbnQoIlhYMTogIiArIHN0cihYWDEpICsgIiAgIGR0eXBlOiIgKyBzdHIoWFgxLmR0eXBlKSArICIgICB0eXBlOiIgKyBzdHIodHlwZShYWDEpKSkKcHJpbnQoKQpwcmludCgpCndfbnVtYmEgPSBkcF9mb3JtdWxhX3dpdGhfbnVtYmEoYV9pbnQsIGJfaW50LCBYWDEpCncgPSBkcF9mb3JtdWxhKGFfaW50LCBiX2ludCwgWFgxKQpwcmludCgiIikKcHJpbnQoJ1dpdGggbnVtYmE6ICcgKyBzdHIod19udW1iYSkpCnByaW50KCdXaXRoIG51bXB5OiAnICsgc3RyKHcpKQ==