Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions dist/dist.toml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,17 @@ test_cases = [
{ n = 6, a = -1, b = 1, expected = [-1, -0.84125353283118117, -0.41541501300188643, 0.14231483827328514, 0.65486073394528506, 0.95949297361449739] },
]

[chebyshev_3_stretched]
test_cases = [
{ n = 0, a = -1, b = 1, expected = [] },
{ n = 1, a = -1, b = 1, expected = [0] },
{ n = 2, a = -1, b = 1, expected = [-1, 1] },
{ n = 3, a = -1, b = 1, expected = [-1, -0.2360679774997897, 1] },
{ n = 4, a = -1, b = 1, expected = [-1, -0.6038754716096765, 0.28620826421558111, 1] },
{ n = 5, a = -1, b = 1, expected = [-1, -0.75877048314363354, -0.14795590447907633, 0.54663680618864507, 1] },
{ n = 6, a = -1, b = 1, expected = [-1, -0.83797189445798956, -0.40333035650565958, 0.16592899658748098, 0.68907034240874556, 1] },
]

[chebyshev_4]
test_cases = [
{ n = 0, a = -1, b = 1, expected = [] },
Expand All @@ -105,6 +116,17 @@ test_cases = [
{ n = 6, a = -1, b = 1, expected = [-0.95949297361449739, -0.65486073394528506, -0.14231483827328514, 0.41541501300188643, 0.84125353283118117, 1] },
]

[chebyshev_4_stretched]
test_cases = [
{ n = 0, a = -1, b = 1, expected = [] },
{ n = 1, a = -1, b = 1, expected = [0] },
{ n = 2, a = -1, b = 1, expected = [-1, 1] },
{ n = 3, a = -1, b = 1, expected = [-1, 0.2360679774997897, 1] },
{ n = 4, a = -1, b = 1, expected = [-1, -0.28620826421558111, 0.6038754716096765, 1] },
{ n = 5, a = -1, b = 1, expected = [-1, -0.54663680618864507, 0.14795590447907633, 0.75877048314363354, 1] },
{ n = 6, a = -1, b = 1, expected = [-1, -0.68907034240874556, -0.16592899658748098, 0.40333035650565958, 0.83797189445798956, 1] },
]

[chebyshev_ellipse]
test_cases = [
{ n = 0, a = -1, b = 1, ratio=0.1, expected = [] },
Expand Down Expand Up @@ -370,6 +392,59 @@ test_cases = [
{ n = 6, a = -1, b = 1, ratio=10, expected = [-1, -0.99794130914948955, -0.9768552425194707, 0.82095788391636415, 0.99340649946574101, 0.99956919596139692] },
]

[chebyshev_ellipse_3_stretched]
test_cases = [
{ n = 0, a = -1, b = 1, ratio=0.1, expected = [] },
{ n = 0, a = -1, b = 1, ratio=0.25, expected = [] },
{ n = 0, a = -1, b = 1, ratio=0.5, expected = [] },
{ n = 0, a = -1, b = 1, ratio=1, expected = [] },
{ n = 0, a = -1, b = 1, ratio=2, expected = [] },
{ n = 0, a = -1, b = 1, ratio=4, expected = [] },
{ n = 0, a = -1, b = 1, ratio=10, expected = [] },
{ n = 1, a = -1, b = 1, ratio=0.1, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=0.25, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=0.5, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=1, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=2, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=4, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=10, expected = [0] },
{ n = 2, a = -1, b = 1, ratio=0.1, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=0.25, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=0.5, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=1, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=2, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=4, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=10, expected = [-1, 1] },
{ n = 3, a = -1, b = 1, ratio=0.1, expected = [-1, 0.70286068376167707, 1] },
{ n = 3, a = -1, b = 1, ratio=0.25, expected = [-1, 0.38683600987001892, 1] },
{ n = 3, a = -1, b = 1, ratio=0.5, expected = [-1, 0.071714034727257432, 1] },
{ n = 3, a = -1, b = 1, ratio=1, expected = [-1, -0.2360679774997897, 1] },
{ n = 3, a = -1, b = 1, ratio=2, expected = [-1, -0.53079490376058224, 1] },
{ n = 3, a = -1, b = 1, ratio=4, expected = [-1, -0.79086780946732889, 1] },
{ n = 3, a = -1, b = 1, ratio=10, expected = [-1, -0.95570034692693509, 1] },
{ n = 4, a = -1, b = 1, ratio=0.1, expected = [-1, 0.52994859807495435, 0.700001103790995, 1] },
{ n = 4, a = -1, b = 1, ratio=0.25, expected = [-1, 0.10146466245735329, 0.44716312753460063, 1] },
{ n = 4, a = -1, b = 1, ratio=0.5, expected = [-1, -0.26799013453929962, 0.29444408121870447, 1] },
{ n = 4, a = -1, b = 1, ratio=1, expected = [-1, -0.6038754716096765, 0.28620826421558111, 1] },
{ n = 4, a = -1, b = 1, ratio=2, expected = [-1, -0.84509123095955537, 0.43520595337770613, 1] },
{ n = 4, a = -1, b = 1, ratio=4, expected = [-1, -0.95404588894603205, 0.68026464335985525, 1] },
{ n = 4, a = -1, b = 1, ratio=10, expected = [-1, -0.99222493738009838, 0.91705532145415738, 1] },
{ n = 5, a = -1, b = 1, ratio=0.1, expected = [-1, 0.39400885206704689, 0.55323975779427069, 0.67224868244269674, 1] },
{ n = 5, a = -1, b = 1, ratio=0.25, expected = [-1, -0.087630809021572823, 0.22075827400394992, 0.45942384736848358, 1] },
{ n = 5, a = -1, b = 1, ratio=0.5, expected = [-1, -0.46019720944405707, 0.0087781578597242606, 0.41262347953466476, 1] },
{ n = 5, a = -1, b = 1, ratio=1, expected = [-1, -0.75877048314363354, -0.14795590447907633, 0.54663680618864507, 1] },
{ n = 5, a = -1, b = 1, ratio=2, expected = [-1, -0.92149597428836999, -0.32714289311878757, 0.77023153935154257, 1] },
{ n = 5, a = -1, b = 1, ratio=4, expected = [-1, -0.97865387017420546, -0.57549658307418465, 0.92161597987231963, 1] },
{ n = 5, a = -1, b = 1, ratio=10, expected = [-1, -0.99649688186118576, -0.86980686315873362, 0.98598635592862072, 1] },
{ n = 6, a = -1, b = 1, ratio=0.1, expected = [-1, 0.27987993770529384, 0.44342061956700969, 0.53416159496009949, 0.64298112403103417, 1] },
{ n = 6, a = -1, b = 1, ratio=0.25, expected = [-1, -0.22651621611711129, 0.075748688008588917, 0.25697509699920888, 0.47028179170570392, 1] },
{ n = 6, a = -1, b = 1, ratio=0.5, expected = [-1, -0.58552136574071642, -0.16513374899689262, 0.15094421537071715, 0.50087724080684543, 1] },
{ n = 6, a = -1, b = 1, ratio=1, expected = [-1, -0.83797189445798956, -0.40333035650565958, 0.16592899658748098, 0.68907034240874556, 1] },
{ n = 6, a = -1, b = 1, ratio=2, expected = [-1, -0.95180016018545064, -0.67266474696761507, 0.2831622134957023, 0.87609406155027173, 1] },
{ n = 6, a = -1, b = 1, ratio=4, expected = [-1, -0.98732094441513186, -0.87700344159647292, 0.5005581719270628, 0.96344419255933844, 1] },
{ n = 6, a = -1, b = 1, ratio=10, expected = [-1, -0.99794086560778346, -0.97685025601787063, 0.82135020642868417, 0.99383597576107601, 1] },
]

[chebyshev_ellipse_4]
test_cases = [
{ n = 0, a = -1, b = 1, ratio=0.1, expected = [] },
Expand Down Expand Up @@ -423,6 +498,59 @@ test_cases = [
{ n = 6, a = -1, b = 1, ratio=10, expected = [-0.99956919596139692, -0.99340649946574101, -0.82095788391636415, 0.9768552425194707, 0.99794130914948955, 1] },
]

[chebyshev_ellipse_4_stretched]
test_cases = [
{ n = 0, a = -1, b = 1, ratio=0.1, expected = [] },
{ n = 0, a = -1, b = 1, ratio=0.25, expected = [] },
{ n = 0, a = -1, b = 1, ratio=0.5, expected = [] },
{ n = 0, a = -1, b = 1, ratio=1, expected = [] },
{ n = 0, a = -1, b = 1, ratio=2, expected = [] },
{ n = 0, a = -1, b = 1, ratio=4, expected = [] },
{ n = 0, a = -1, b = 1, ratio=10, expected = [] },
{ n = 1, a = -1, b = 1, ratio=0.1, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=0.25, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=0.5, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=1, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=2, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=4, expected = [0] },
{ n = 1, a = -1, b = 1, ratio=10, expected = [0] },
{ n = 2, a = -1, b = 1, ratio=0.1, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=0.25, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=0.5, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=1, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=2, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=4, expected = [-1, 1] },
{ n = 2, a = -1, b = 1, ratio=10, expected = [-1, 1] },
{ n = 3, a = -1, b = 1, ratio=0.1, expected = [-1, -0.70286068376167707, 1] },
{ n = 3, a = -1, b = 1, ratio=0.25, expected = [-1, -0.38683600987001892, 1] },
{ n = 3, a = -1, b = 1, ratio=0.5, expected = [-1, -0.071714034727257432, 1] },
{ n = 3, a = -1, b = 1, ratio=1, expected = [-1, 0.2360679774997897, 1] },
{ n = 3, a = -1, b = 1, ratio=2, expected = [-1, 0.53079490376058224, 1] },
{ n = 3, a = -1, b = 1, ratio=4, expected = [-1, 0.79086780946732889, 1] },
{ n = 3, a = -1, b = 1, ratio=10, expected = [-1, 0.95570034692693509, 1] },
{ n = 4, a = -1, b = 1, ratio=0.1, expected = [-1, -0.700001103790995, -0.52994859807495435, 1] },
{ n = 4, a = -1, b = 1, ratio=0.25, expected = [-1, -0.44716312753460063, -0.10146466245735329, 1] },
{ n = 4, a = -1, b = 1, ratio=0.5, expected = [-1, -0.29444408121870447, 0.26799013453929962, 1] },
{ n = 4, a = -1, b = 1, ratio=1, expected = [-1, -0.28620826421558111, 0.6038754716096765, 1] },
{ n = 4, a = -1, b = 1, ratio=2, expected = [-1, -0.43520595337770613, 0.84509123095955537, 1] },
{ n = 4, a = -1, b = 1, ratio=4, expected = [-1, -0.68026464335985525, 0.95404588894603205, 1] },
{ n = 4, a = -1, b = 1, ratio=10, expected = [-1, -0.91705532145415738, 0.99222493738009838, 1] },
{ n = 5, a = -1, b = 1, ratio=0.1, expected = [-1, -0.67224868244269674, -0.55323975779427069, -0.39400885206704689, 1] },
{ n = 5, a = -1, b = 1, ratio=0.25, expected = [-1, -0.45942384736848358, -0.22075827400394992, 0.087630809021572823, 1] },
{ n = 5, a = -1, b = 1, ratio=0.5, expected = [-1, -0.41262347953466476, -0.0087781578597242606, 0.46019720944405707, 1] },
{ n = 5, a = -1, b = 1, ratio=1, expected = [-1, -0.54663680618864507, 0.14795590447907633, 0.75877048314363354, 1] },
{ n = 5, a = -1, b = 1, ratio=2, expected = [-1, -0.77023153935154257, 0.32714289311878757, 0.92149597428836999, 1] },
{ n = 5, a = -1, b = 1, ratio=4, expected = [-1, -0.92161597987231963, 0.57549658307418465, 0.97865387017420546, 1] },
{ n = 5, a = -1, b = 1, ratio=10, expected = [-1, -0.98598635592862072, 0.86980686315873362, 0.99649688186118576, 1] },
{ n = 6, a = -1, b = 1, ratio=0.1, expected = [-1, -0.64298112403103417, -0.53416159496009949, -0.44342061956700969, -0.27987993770529384, 1] },
{ n = 6, a = -1, b = 1, ratio=0.25, expected = [-1, -0.47028179170570392, -0.25697509699920888, -0.075748688008588917, 0.22651621611711129, 1] },
{ n = 6, a = -1, b = 1, ratio=0.5, expected = [-1, -0.50087724080684543, -0.15094421537071715, 0.16513374899689262, 0.58552136574071642, 1] },
{ n = 6, a = -1, b = 1, ratio=1, expected = [-1, -0.68907034240874556, -0.16592899658748098, 0.40333035650565958, 0.83797189445798956, 1] },
{ n = 6, a = -1, b = 1, ratio=2, expected = [-1, -0.87609406155027173, -0.2831622134957023, 0.67266474696761507, 0.95180016018545064, 1] },
{ n = 6, a = -1, b = 1, ratio=4, expected = [-1, -0.96344419255933844, -0.5005581719270628, 0.87700344159647292, 0.98732094441513186, 1] },
{ n = 6, a = -1, b = 1, ratio=10, expected = [-1, -0.99383597576107601, -0.82135020642868417, 0.97685025601787063, 0.99794086560778346, 1] },
]

[logistic]
test_cases = [
{ n = 0, a = -1, b = 1, steepness=0.1, expected = [] },
Expand Down
22 changes: 20 additions & 2 deletions dist/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,18 @@ def chebyshev_3(n):
return [mp.cos(((2*n - 1 - 2*k) * mp.pi) / (2*n - 1)) for k in range(n)]


def chebyshev_3_stretched(n):
return stretched(chebyshev_3(n))


def chebyshev_4(n):
return [mp.cos(((2*n - 2 - 2*k) * mp.pi) / (2*n - 1)) for k in range(n)]


def chebyshev_4_stretched(n):
return stretched(chebyshev_4(n))


def chebyshev_ellipse(n, ratio):
return [mp.sign(2*k+1 - n) / mp.sqrt(1 + (mp.tan(mp.pi * (2*mp.mpf(k) + 1) / (2*n)) / ratio) ** 2) for k in range(n)]

Expand All @@ -97,10 +105,18 @@ def chebyshev_ellipse_3(n, ratio):
return [(-1 if theta < mp.pi/2 else 1) / mp.sqrt(1 + (mp.tan(theta) / ratio) ** 2) for theta in (mp.pi * (2*k) / (2*n - 1) for k in range(n))]


def chebyshev_ellipse_3_stretched(n, ratio):
return stretched(chebyshev_ellipse_3(n, ratio))


def chebyshev_ellipse_4(n, ratio):
return [(-1 if theta < mp.pi/2 else 1) / mp.sqrt(1 + (mp.tan(theta) / ratio) ** 2) for theta in (mp.pi * (2*k + 1) / (2*n - 1) for k in range(n))]


def chebyshev_ellipse_4_stretched(n, ratio):
return stretched(chebyshev_ellipse_4(n, ratio))


def logistic(n, steepness):
return [2 / (1 + mp.exp(-steepness * x)) - 1 for x in uniform(n)]

Expand All @@ -120,8 +136,10 @@ def erf_stretched(n, steepness):
def generate_test_cases():
mapping_intervals_section = 'mapping_intervals = [\n' + '\n'.join([f'\t[{i[0]}, {i[1]}],' for i in mapping_intervals]) + '\n]'

functions = [uniform, quadratic, cubic, chebyshev, chebyshev_stretched, chebyshev_augmented, chebyshev_2, chebyshev_3, chebyshev_4,
chebyshev_ellipse, chebyshev_ellipse_stretched, chebyshev_ellipse_augmented, chebyshev_ellipse_2, chebyshev_ellipse_3, chebyshev_ellipse_4,
functions = [uniform, quadratic, cubic, chebyshev, chebyshev_stretched, chebyshev_augmented, chebyshev_2,
chebyshev_3, chebyshev_3_stretched, chebyshev_4, chebyshev_4_stretched,
chebyshev_ellipse, chebyshev_ellipse_stretched, chebyshev_ellipse_augmented, chebyshev_ellipse_2,
chebyshev_ellipse_3, chebyshev_ellipse_3_stretched, chebyshev_ellipse_4, chebyshev_ellipse_4_stretched,
logistic, logistic_stretched, erf, erf_stretched]
sections = []

Expand Down