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
152 changes: 140 additions & 12 deletions dist/dist.toml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,39 @@ test_cases = [
{ n = 6, a = -1, b = 1, expected = [-1, -0.73205080756887729, -0.26794919243112271, 0.26794919243112271, 0.73205080756887729, 1] },
]

[chebyshev_2]
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, 1] },
{ n = 4, a = -1, b = 1, expected = [-1, -0.5, 0.5, 1] },
{ n = 5, a = -1, b = 1, expected = [-1, -0.70710678118654752, 0, 0.70710678118654752, 1] },
{ n = 6, a = -1, b = 1, expected = [-1, -0.80901699437494742, -0.30901699437494742, 0.30901699437494742, 0.80901699437494742, 1] },
]

[chebyshev_3]
test_cases = [
{ n = 0, a = -1, b = 1, expected = [] },
{ n = 1, a = -1, b = 1, expected = [-1] },
{ n = 2, a = -1, b = 1, expected = [-1, 0.5] },
{ n = 3, a = -1, b = 1, expected = [-1, -0.30901699437494742, 0.80901699437494742] },
{ n = 4, a = -1, b = 1, expected = [-1, -0.62348980185873353, 0.2225209339563144, 0.90096886790241913] },
{ n = 5, a = -1, b = 1, expected = [-1, -0.76604444311897804, -0.17364817766693035, 0.5, 0.93969262078590838] },
{ n = 6, a = -1, b = 1, expected = [-1, -0.84125353283118117, -0.41541501300188643, 0.14231483827328514, 0.65486073394528506, 0.95949297361449739] },
]

[chebyshev_4]
test_cases = [
{ n = 0, a = -1, b = 1, expected = [] },
{ n = 1, a = -1, b = 1, expected = [1] },
{ n = 2, a = -1, b = 1, expected = [-0.5, 1] },
{ n = 3, a = -1, b = 1, expected = [-0.80901699437494742, 0.30901699437494742, 1] },
{ n = 4, a = -1, b = 1, expected = [-0.90096886790241913, -0.2225209339563144, 0.62348980185873353, 1] },
{ n = 5, a = -1, b = 1, expected = [-0.93969262078590838, -0.5, 0.17364817766693035, 0.76604444311897804, 1] },
{ n = 6, a = -1, b = 1, expected = [-0.95949297361449739, -0.65486073394528506, -0.14231483827328514, 0.41541501300188643, 0.84125353283118117, 1] },
]

[chebyshev_ellipse]
test_cases = [
{ n = 0, a = -1, b = 1, ratio=0.1, expected = [] },
Expand Down Expand Up @@ -167,18 +200,7 @@ test_cases = [
{ n = 6, a = -1, b = 1, ratio=10, expected = [-1, -0.99539432839813447, -0.93721714482639173, 0.93721714482639173, 0.99539432839813447, 1] },
]

[circle_proj]
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, 1] },
{ n = 4, a = -1, b = 1, expected = [-1, -0.5, 0.5, 1] },
{ n = 5, a = -1, b = 1, expected = [-1, -0.70710678118654752, 0, 0.70710678118654752, 1] },
{ n = 6, a = -1, b = 1, expected = [-1, -0.80901699437494742, -0.30901699437494742, 0.30901699437494742, 0.80901699437494742, 1] },
]

[ellipse_proj]
[chebyshev_ellipse_2]
test_cases = [
{ n = 0, a = -1, b = 1, ratio=0.1, expected = [] },
{ n = 0, a = -1, b = 1, ratio=0.25, expected = [] },
Expand Down Expand Up @@ -231,6 +253,112 @@ test_cases = [
{ n = 6, a = -1, b = 1, ratio=10, expected = [-1, -0.99737108303933162, -0.95575857698159284, 0.95575857698159284, 0.99737108303933162, 1] },
]

[chebyshev_ellipse_3]
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 = [-1] },
{ n = 1, a = -1, b = 1, ratio=0.25, expected = [-1] },
{ n = 1, a = -1, b = 1, ratio=0.5, expected = [-1] },
{ n = 1, a = -1, b = 1, ratio=1, expected = [-1] },
{ n = 1, a = -1, b = 1, ratio=2, expected = [-1] },
{ n = 1, a = -1, b = 1, ratio=4, expected = [-1] },
{ n = 1, a = -1, b = 1, ratio=10, expected = [-1] },
{ n = 2, a = -1, b = 1, ratio=0.1, expected = [-1, 0.057639041770423496] },
{ n = 2, a = -1, b = 1, ratio=0.25, expected = [-1, 0.14285714285714286] },
{ n = 2, a = -1, b = 1, ratio=0.5, expected = [-1, 0.27735009811261456] },
{ n = 2, a = -1, b = 1, ratio=1, expected = [-1, 0.5] },
{ n = 2, a = -1, b = 1, ratio=2, expected = [-1, 0.75592894601845445] },
{ n = 2, a = -1, b = 1, ratio=4, expected = [-1, 0.91766293548224706] },
{ n = 2, a = -1, b = 1, ratio=10, expected = [-1, 0.98532927816429315] },
{ n = 3, a = -1, b = 1, ratio=0.1, expected = [-1, -0.032474831849204189, 0.13635270034363571] },
{ n = 3, a = -1, b = 1, ratio=0.25, expected = [-1, -0.080963253288587561, 0.32537191156083274] },
{ n = 3, a = -1, b = 1, ratio=0.5, expected = [-1, -0.16035745659092821, 0.56691527068179906] },
{ n = 3, a = -1, b = 1, ratio=1, expected = [-1, -0.30901699437494742, 0.80901699437494742] },
{ n = 3, a = -1, b = 1, ratio=2, expected = [-1, -0.54489367559639157, 0.93990358609142108] },
{ n = 3, a = -1, b = 1, ratio=4, expected = [-1, -0.79255116609520918, 0.98390150628085824] },
{ n = 3, a = -1, b = 1, ratio=10, expected = [-1, -0.95575857698159284, 0.99737108303933162] },
{ n = 4, a = -1, b = 1, ratio=0.1, expected = [-1, -0.079494959925657342, 0.022818404579427524, 0.20331498879447428] },
{ n = 4, a = -1, b = 1, ratio=0.25, expected = [-1, -0.19552046276308693, 0.056968201365638952, 0.46074506910122695] },
{ n = 4, a = -1, b = 1, ratio=0.5, expected = [-1, -0.37037885225181449, 0.11338577055901961, 0.7202531754184074] },
{ n = 4, a = -1, b = 1, ratio=1, expected = [-1, -0.62348980185873353, 0.2225209339563144, 0.90096886790241913] },
{ n = 4, a = -1, b = 1, ratio=2, expected = [-1, -0.84724343008465092, 0.41526615903084789, 0.97221333384253229] },
{ n = 4, a = -1, b = 1, ratio=4, expected = [-1, -0.95421062226516765, 0.67424133956007544, 0.99283052961498301] },
{ n = 4, a = -1, b = 1, ratio=10, expected = [-1, -0.99222943742132315, 0.91594577052210233, 0.99884244244843866] },
{ n = 5, a = -1, b = 1, ratio=0.1, expected = [-1, -0.11833795894158127, -0.017629957600788755, 0.057639041770423496, 0.26493033347827537] },
{ n = 5, a = -1, b = 1, ratio=0.25, expected = [-1, -0.28553473433189729, -0.044038977667112633, 0.14285714285714286, 0.56617578220042313] },
{ n = 5, a = -1, b = 1, ratio=0.5, expected = [-1, -0.51188893752124797, -0.087822836315555545, 0.27735009811261456, 0.80847921136549297] },
{ n = 5, a = -1, b = 1, ratio=1, expected = [-1, -0.76604444311897804, -0.17364817766693035, 0.5, 0.93969262078590838] },
{ n = 5, a = -1, b = 1, ratio=2, expected = [-1, -0.92213024790162571, -0.33257924500670243, 0.75592894601845445, 0.98384099140124085] },
{ n = 5, a = -1, b = 1, ratio=4, expected = [-1, -0.9786977822771654, -0.57636984852806411, 0.91766293548224706, 0.99588570824610313] },
{ n = 5, a = -1, b = 1, ratio=10, expected = [-1, -0.99649804089283165, -0.86984993848753992, 0.98532927816429315, 0.9993382857214844] },
{ n = 6, a = -1, b = 1, ratio=0.1, expected = [-1, -0.15375281481221037, -0.045620920864954852, 0.014376343523197691, 0.086327014407878458, 0.32238526483200046] },
{ n = 6, a = -1, b = 1, ratio=0.25, expected = [-1, -0.36254235482854673, -0.11343425713232236, 0.035921375558654029, 0.21171560181161955, 0.64827668906364343] },
{ n = 6, a = -1, b = 1, ratio=0.5, expected = [-1, -0.61405735741523609, -0.22261255349676177, 0.071704100602558301, 0.39754496524895059, 0.86230416086215657] },
{ n = 6, a = -1, b = 1, ratio=1, expected = [-1, -0.84125353283118117, -0.41541501300188643, 0.14231483827328514, 0.65486073394528506, 0.95949297361449739] },
{ n = 6, a = -1, b = 1, ratio=2, expected = [-1, -0.95205576196820758, -0.67440059245084041, 0.27635765666319524, 0.86614521133423427, 0.98939408165087796] },
{ n = 6, a = -1, b = 1, ratio=4, expected = [-1, -0.98733795607027894, -0.87716846769181833, 0.49854485334997433, 0.96080981373823645, 0.99731657377267433] },
{ n = 6, a = -1, b = 1, ratio=10, expected = [-1, -0.99794130914948955, -0.9768552425194707, 0.82095788391636415, 0.99340649946574101, 0.99956919596139692] },
]

[chebyshev_ellipse_4]
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 = [1] },
{ n = 1, a = -1, b = 1, ratio=0.25, expected = [1] },
{ n = 1, a = -1, b = 1, ratio=0.5, expected = [1] },
{ n = 1, a = -1, b = 1, ratio=1, expected = [1] },
{ n = 1, a = -1, b = 1, ratio=2, expected = [1] },
{ n = 1, a = -1, b = 1, ratio=4, expected = [1] },
{ n = 1, a = -1, b = 1, ratio=10, expected = [1] },
{ n = 2, a = -1, b = 1, ratio=0.1, expected = [-0.057639041770423496, 1] },
{ n = 2, a = -1, b = 1, ratio=0.25, expected = [-0.14285714285714286, 1] },
{ n = 2, a = -1, b = 1, ratio=0.5, expected = [-0.27735009811261456, 1] },
{ n = 2, a = -1, b = 1, ratio=1, expected = [-0.5, 1] },
{ n = 2, a = -1, b = 1, ratio=2, expected = [-0.75592894601845445, 1] },
{ n = 2, a = -1, b = 1, ratio=4, expected = [-0.91766293548224706, 1] },
{ n = 2, a = -1, b = 1, ratio=10, expected = [-0.98532927816429315, 1] },
{ n = 3, a = -1, b = 1, ratio=0.1, expected = [-0.13635270034363571, 0.032474831849204189, 1] },
{ n = 3, a = -1, b = 1, ratio=0.25, expected = [-0.32537191156083274, 0.080963253288587561, 1] },
{ n = 3, a = -1, b = 1, ratio=0.5, expected = [-0.56691527068179906, 0.16035745659092821, 1] },
{ n = 3, a = -1, b = 1, ratio=1, expected = [-0.80901699437494742, 0.30901699437494742, 1] },
{ n = 3, a = -1, b = 1, ratio=2, expected = [-0.93990358609142108, 0.54489367559639157, 1] },
{ n = 3, a = -1, b = 1, ratio=4, expected = [-0.98390150628085824, 0.79255116609520918, 1] },
{ n = 3, a = -1, b = 1, ratio=10, expected = [-0.99737108303933162, 0.95575857698159284, 1] },
{ n = 4, a = -1, b = 1, ratio=0.1, expected = [-0.20331498879447428, -0.022818404579427524, 0.079494959925657342, 1] },
{ n = 4, a = -1, b = 1, ratio=0.25, expected = [-0.46074506910122695, -0.056968201365638952, 0.19552046276308693, 1] },
{ n = 4, a = -1, b = 1, ratio=0.5, expected = [-0.7202531754184074, -0.11338577055901961, 0.37037885225181449, 1] },
{ n = 4, a = -1, b = 1, ratio=1, expected = [-0.90096886790241913, -0.2225209339563144, 0.62348980185873353, 1] },
{ n = 4, a = -1, b = 1, ratio=2, expected = [-0.97221333384253229, -0.41526615903084789, 0.84724343008465092, 1] },
{ n = 4, a = -1, b = 1, ratio=4, expected = [-0.99283052961498301, -0.67424133956007544, 0.95421062226516765, 1] },
{ n = 4, a = -1, b = 1, ratio=10, expected = [-0.99884244244843866, -0.91594577052210233, 0.99222943742132315, 1] },
{ n = 5, a = -1, b = 1, ratio=0.1, expected = [-0.26493033347827537, -0.057639041770423496, 0.017629957600788755, 0.11833795894158127, 1] },
{ n = 5, a = -1, b = 1, ratio=0.25, expected = [-0.56617578220042313, -0.14285714285714286, 0.044038977667112633, 0.28553473433189729, 1] },
{ n = 5, a = -1, b = 1, ratio=0.5, expected = [-0.80847921136549297, -0.27735009811261456, 0.087822836315555545, 0.51188893752124797, 1] },
{ n = 5, a = -1, b = 1, ratio=1, expected = [-0.93969262078590838, -0.5, 0.17364817766693035, 0.76604444311897804, 1] },
{ n = 5, a = -1, b = 1, ratio=2, expected = [-0.98384099140124085, -0.75592894601845445, 0.33257924500670243, 0.92213024790162571, 1] },
{ n = 5, a = -1, b = 1, ratio=4, expected = [-0.99588570824610313, -0.91766293548224706, 0.57636984852806411, 0.9786977822771654, 1] },
{ n = 5, a = -1, b = 1, ratio=10, expected = [-0.9993382857214844, -0.98532927816429315, 0.86984993848753992, 0.99649804089283165, 1] },
{ n = 6, a = -1, b = 1, ratio=0.1, expected = [-0.32238526483200046, -0.086327014407878458, -0.014376343523197691, 0.045620920864954852, 0.15375281481221037, 1] },
{ n = 6, a = -1, b = 1, ratio=0.25, expected = [-0.64827668906364343, -0.21171560181161955, -0.035921375558654029, 0.11343425713232236, 0.36254235482854673, 1] },
{ n = 6, a = -1, b = 1, ratio=0.5, expected = [-0.86230416086215657, -0.39754496524895059, -0.071704100602558301, 0.22261255349676177, 0.61405735741523609, 1] },
{ n = 6, a = -1, b = 1, ratio=1, expected = [-0.95949297361449739, -0.65486073394528506, -0.14231483827328514, 0.41541501300188643, 0.84125353283118117, 1] },
{ n = 6, a = -1, b = 1, ratio=2, expected = [-0.98939408165087796, -0.86614521133423427, -0.27635765666319524, 0.67440059245084041, 0.95205576196820758, 1] },
{ n = 6, a = -1, b = 1, ratio=4, expected = [-0.99731657377267433, -0.96080981373823645, -0.49854485334997433, 0.87716846769181833, 0.98733795607027894, 1] },
{ n = 6, a = -1, b = 1, ratio=10, expected = [-0.99956919596139692, -0.99340649946574101, -0.82095788391636415, 0.9768552425194707, 0.99794130914948955, 1] },
]

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


def chebyshev_2(n):
return [mp.sin(mp.pi / 2 * x) for x in uniform(n)]


def chebyshev_3(n):
return [mp.cos(((2*n - 1 - 2*k) * mp.pi) / (2*n - 1)) for k in range(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_stretched(n):
return stretched(chebyshev(n))

Expand All @@ -69,12 +81,16 @@ def chebyshev_ellipse_stretched(n, ratio):
return stretched(chebyshev_ellipse(n, ratio))


def circle_proj(n):
return [mp.sin(mp.pi / 2 * x) for x in uniform(n)]
def chebyshev_ellipse_2(n, ratio):
return [0] if n == 1 else [mp.sign(2*k+1 - n) / mp.sqrt(1 + (mp.tan(mp.pi * mp.mpf(k) / (n-1)) / ratio) ** 2) for k in range(n)]


def ellipse_proj(n, ratio):
return [0] if n == 1 else [mp.sign(2*k+1 - n) / mp.sqrt(1 + (mp.tan(mp.pi * mp.mpf(k) / (n-1)) / ratio) ** 2) for k in range(n)]
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_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 logistic(n, steepness):
Expand All @@ -96,8 +112,9 @@ 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_ellipse, chebyshev_ellipse_stretched,
circle_proj, ellipse_proj, logistic, logistic_stretched, erf, erf_stretched]
functions = [uniform, quadratic, cubic, chebyshev, chebyshev_stretched, chebyshev_2, chebyshev_3, chebyshev_4,
chebyshev_ellipse, chebyshev_ellipse_stretched, chebyshev_ellipse_2, chebyshev_ellipse_3, chebyshev_ellipse_4,
logistic, logistic_stretched, erf, erf_stretched]
sections = []

for func in functions:
Expand Down