Note
Go to the end to download the full example code.
Optimal Transport Barycenter solvers comparison
This example illustrates solutions returned for different variants of exact, regularized and unbalanced OT barycenter problems with free support using our wrapper ot.solve_bary_sample.
# Author: Cédric Vincent-Cuaz <cedvincentcuaz@gmail.com>
#
# License: MIT License
# sphinx_gallery_thumbnail_number = 2
import numpy as np
import matplotlib.pylab as pl
import ot
from ot.plot import plot2D_samples_mat
2D data example
We first generate two sets of samples in 2D of 8 and 16 points uniformly separated on circles. The weights of the samples are uniform.
# Problem size
n1, n2 = 8, 16
nbary = 12
# Generate random data
np.random.seed(0)
r1, r2 = 1, 3
x1 = r1 * np.array(
[(np.cos(2 * i * np.pi / n1), np.sin(2 * i * np.pi / n1)) for i in range(n1)]
)
x2 = r2 * np.array(
[(np.cos(2 * i * np.pi / n2), np.sin(2 * i * np.pi / n2)) for i in range(n2)]
)
style = {"markeredgecolor": "k"}
pl.figure(1, (4, 4))
pl.plot(x1[:, 0], x1[:, 1], "ob", **style)
pl.plot(x2[:, 0], x2[:, 1], "or", **style)
pl.title("Source distributions")
pl.show()

Set up parameters for balanced OT barycenter solvers and solve
# balanced OT
lst_balanced_solvers = [ # name, param for ot.solve function
("Exact OT", dict()),
("Entropic Reg. OT", dict(reg=1.0)),
]
lst_balanced_res = []
for name, param in lst_balanced_solvers:
print(f"-- name = {name} / param = {param}")
res = ot.solve_bary_sample(X_a_list=[x1, x2], n=nbary, **param)
lst_balanced_res.append(res)
list_P = [res.list_res[k].plan for k in range(2)]
print("X:", res.X)
print("loss:", res.value)
print("loss:", res.log)
print(
"marginals OT 1:",
res.list_res[0].plan.sum(axis=1),
res.list_res[0].plan.sum(axis=0),
)
print(
"marginals OT 2:",
res.list_res[1].plan.sum(axis=1),
res.list_res[1].plan.sum(axis=0),
)
-- name = Exact OT / param = {}
/home/circleci/project/ot/solvers/_bary.py:162: RuntimeWarning: invalid value encountered in scalar divide
if abs(new_criterion - prev_criterion) / abs(prev_criterion) < tol_bary:
BCD converged in 4 iterations
X: [[ 1.84114117 0.60729556]
[ 0.28701257 1.94290965]
[ 1.49550334 -1.29255481]
[ 0.60729556 -1.84114117]
[-1.94290965 0.28701257]
[-0.60729556 1.84114117]
[ 1.29255481 1.49550334]
[-1.49550334 1.29255481]
[ 1.94290965 -0.28701257]
[-1.29255481 -1.49550334]
[-1.84114117 -0.60729556]
[-0.28701257 -1.94290965]]
loss: 1.1589629991802717
loss: {'stopping_criterion': [np.float64(3.5548104740331845), np.float64(1.2465846410185621), np.float64(1.1650649412388852), np.float64(1.1589629991802715), np.float64(1.1589629991802717)]}
marginals OT 1: [0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125] [0.08333333 0.08333333 0.08333333 0.08333333 0.08333333 0.08333333
0.08333333 0.08333333 0.08333333 0.08333333 0.08333333 0.08333333]
marginals OT 2: [0.0625 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625
0.0625 0.0625 0.0625 0.0625 0.0625 0.0625] [0.08333333 0.08333333 0.08333333 0.08333333 0.08333333 0.08333333
0.08333333 0.08333333 0.08333333 0.08333333 0.08333333 0.08333333]
-- name = Entropic Reg. OT / param = {'reg': 1.0}
BCD converged in 14 iterations
X: [[ 1.74513458 0.63006858]
[ 0.32292074 1.82909418]
[ 1.41519337 -1.20237787]
[ 0.64094898 -1.74169796]
[-1.83108912 0.30287904]
[-0.63325353 1.74362168]
[ 1.19878558 1.41897616]
[-1.41333452 1.20660735]
[ 1.82957495 -0.32101269]
[-1.17898838 -1.43635404]
[-1.75427084 -0.60505515]
[-0.34162181 -1.82474926]]
loss: 2.843917885588441
loss: {'stopping_criterion': [np.float64(4.936424991370039), np.float64(3.1120231938544416), np.float64(2.8852594148180186), np.float64(2.8529760102988124), np.float64(2.8490581667579313), np.float64(2.8472209935218347), np.float64(2.8460319485917838), np.float64(2.8452320968523264), np.float64(2.8447103568721888), np.float64(2.844382959911707), np.float64(2.844182839395433), np.float64(2.8440618969858695), np.float64(2.8439889115755976), np.float64(2.8439447352801928), np.float64(2.843917885588441)]}
marginals OT 1: [0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125] [0.08333333 0.08333333 0.08333333 0.08333333 0.08333333 0.08333333
0.08333333 0.08333333 0.08333333 0.08333333 0.08333333 0.08333333]
marginals OT 2: [0.0625 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625 0.0625
0.0625 0.0625 0.0625 0.0625 0.0625 0.0625] [0.08333333 0.08333333 0.08333333 0.08333333 0.08333333 0.08333333
0.08333333 0.08333333 0.08333333 0.08333333 0.08333333 0.08333333]
Plot distributions and plans for balanced OT barycenter solvers
def plot_list_res(
lst_res,
lst_solvers,
fig_num=1,
n_cols=2,
show_masses=False,
show_legend=True,
s=100,
fig_width=None,
fig_height=None,
):
n_plots = len(lst_res)
n_rows = int(np.ceil(n_plots / n_cols))
if fig_width is None:
fig_width = 8 * n_cols
if fig_height is None:
fig_height = 4 * n_rows
fig, axes = pl.subplots(
n_rows,
n_cols,
figsize=(fig_width, fig_height),
squeeze=False,
num=fig_num,
)
axes = axes.ravel()
legend_handles = None
for i, (name, param) in enumerate(lst_solvers):
ax = axes[i]
pl.sca(ax)
X = lst_res[i].X
list_P = [lst_res[i].list_res[k].plan for k in range(2)]
loss = lst_res[i].value
plot2D_samples_mat(x1, X, list_P[0])
plot2D_samples_mat(x2, X, list_P[1])
if show_masses:
# Marginals induced by transport plans
a1 = list_P[0].sum(axis=1) * list_P[0].shape[0]
a2 = list_P[1].sum(axis=1) * list_P[1].shape[0]
# weighted average barycenter masses
b = (
0.5
* (list_P[0].sum(axis=0) + list_P[1].sum(axis=0))
* list_P[0].shape[1]
)
# background uniform distribution
ax.scatter(x1[:, 0], x1[:, 1], s=s, color="blue", marker="o", alpha=0.25)
ax.scatter(x2[:, 0], x2[:, 1], s=s, color="red", marker="o", alpha=0.25)
ax.scatter(X[:, 0], X[:, 1], s=s, color="green", marker="o", alpha=0.25)
list_size_1 = s * a1
list_size_2 = s * a2
list_size_b = s * b
else:
list_size_1 = s
list_size_2 = s
list_size_b = s
if i == 0: # add labels
h1 = ax.scatter(
x1[:, 0],
x1[:, 1],
s=list_size_1,
color="blue",
marker="o",
alpha=1,
label="Source distribution 1",
)
h2 = ax.scatter(
x2[:, 0],
x2[:, 1],
s=list_size_2,
color="red",
marker="o",
alpha=1,
label="Source distribution 2",
)
h3 = ax.scatter(
X[:, 0],
X[:, 1],
s=list_size_b,
color="green",
marker="o",
alpha=1,
label="Barycenter distribution",
)
else:
h1 = ax.scatter(
x1[:, 0], x1[:, 1], s=list_size_1, color="blue", marker="o", alpha=1
)
h2 = ax.scatter(
x2[:, 0], x2[:, 1], s=list_size_2, color="red", marker="o", alpha=1
)
h3 = ax.scatter(
X[:, 0], X[:, 1], s=list_size_b, color="green", marker="o", alpha=1
)
if legend_handles is None:
legend_handles = [h1, h2, h3]
ax.set_title(name)
############################################################
# remove unused axes
for j in range(i + 1, len(axes)):
fig.delaxes(axes[j])
############################################################
# Single legend above all subplots
if show_legend:
labels = [h.get_label() for h in legend_handles]
fig.legend(
legend_handles,
labels,
loc="upper center",
bbox_to_anchor=(0.5, 1.02),
ncol=3,
frameon=False,
)
fig.tight_layout()
pl.show()
plot_list_res(
lst_balanced_res,
lst_balanced_solvers,
fig_num=2,
n_cols=2,
show_masses=False,
fig_width=8,
fig_height=4,
show_legend=True,
)

Set up parameters for unbalanced OT barycenter solvers and solve
lambda_unbalanced_vals = [1, 2.5, 10]
# unbalanced OT KL
lst_unbalanced_solvers = [
(
"Unbalanced KL No Reg \n" + r"$\lambda_u$=%s" % lambda_val,
dict(unbalanced=lambda_val),
)
for lambda_val in lambda_unbalanced_vals
] + [
(
"Unbalanced KL with KL Reg \n"
+ r"$\lambda_u$=%s, $\lambda_{ent}$=%s" % (lambda_val, 0.1),
dict(reg=0.1, unbalanced=lambda_val, unbalanced_type="kl", reg_type="kl"),
)
for lambda_val in lambda_unbalanced_vals
]
lst_unbalanced_res = []
for name, param in lst_unbalanced_solvers:
print(f"-- name = {name} / param = {param}")
res = ot.solve_bary_sample(X_a_list=[x1, x2], n=nbary, **param)
lst_unbalanced_res.append(res)
list_P = [res.list_res[k].plan for k in range(2)]
print("X:", res.X)
print("loss:", res.value)
print("loss:", res.log)
print(
"marginals OT 1:",
res.list_res[0].plan.sum(axis=1),
res.list_res[0].plan.sum(axis=0),
)
print(
"marginals OT 2:",
res.list_res[1].plan.sum(axis=1),
res.list_res[1].plan.sum(axis=0),
)
-- name = Unbalanced KL No Reg
$\lambda_u$=1 / param = {'unbalanced': 1}
BCD converged in 19 iterations
X: [[ 2.73309406e+00 1.13981794e+00]
[ 1.56554060e+00 2.42446865e+00]
[ 2.33584421e+00 -1.68611571e+00]
[ 1.04768727e+00 -3.09021185e-02]
[-9.21750458e-01 5.41230220e-01]
[-1.03655713e-01 1.43390903e+00]
[ 1.04768727e+00 -3.09021185e-02]
[ 7.46726238e-01 7.46726238e-01]
[ 2.95773740e+00 -7.24654594e-32]
[-4.56978745e-01 -1.10324492e+00]
[-2.76214828e+00 5.95794784e-02]
[ 7.57192081e-01 -9.41610048e-01]]
loss: 0.8156206216899978
loss: {'stopping_criterion': [np.float64(0.9793293190550253), np.float64(0.8543325708607069), np.float64(0.8288789083180792), np.float64(0.8219574448681899), np.float64(0.8195840664796413), np.float64(0.8182782311927407), np.float64(0.8174360620725586), np.float64(0.8168531793971974), np.float64(0.8163834905610549), np.float64(0.8161073710204839), np.float64(0.8159370905214629), np.float64(0.8158305469634906), np.float64(0.8157621733682839), np.float64(0.815716831647574), np.float64(0.8156857241679643), np.float64(0.8156637260950893), np.float64(0.8156477877700095), np.float64(0.8156360296708335), np.float64(0.8156272440107248), np.float64(0.8156206216899978)]}
marginals OT 1: [0.14488511 0.10386344 0.09239477 0.07553914 0.06029111 0.06466776
0.06466778 0.10057852] [0.00137193 0.00251392 0.00279821 0.07166427 0.12811452 0.09239477
0.07166427 0.09997758 0.00155657 0.12933554 0.00771573 0.09778032]
marginals OT 2: [0.07210436 0.07211275 0.04133113 0.04595124 0.01634922 0.01077561
0.01008633 0.01813995 0.05586022 0.01379789 0.00557438 0.0096174
0.00557438 0.01252993 0.04916616 0.03852079] [0.07211275 0.08440354 0.0837123 0.00198732 0.01008633 0.02712483
0.00198732 0.00287882 0.07210436 0.02076615 0.08779807 0.01252993]
-- name = Unbalanced KL No Reg
$\lambda_u$=2.5 / param = {'unbalanced': 2.5}
BCD converged in 147 iterations
X: [[ 1.75916227 0.63536543]
[-0.43128951 2.03199054]
[ 0.63260879 -1.75681055]
[ 1.27809612 -1.27809583]
[-1.75985069 0.62926878]
[-1.27447552 1.27447552]
[ 1.27805247 1.27805247]
[ 0.43128994 2.03198933]
[ 2.11695968 -0.32380378]
[-1.21870014 -1.21870014]
[-2.1250867 -0.3264692 ]
[-0.32519775 -2.12106236]]
loss: 1.012521956682006
loss: {'stopping_criterion': [np.float64(1.6543038457215027), np.float64(1.2766733820925698), np.float64(1.1549420397743804), np.float64(1.0796690008698673), np.float64(1.0614359605777381), np.float64(1.056644404426096), np.float64(1.052245676106074), np.float64(1.040404895228308), np.float64(1.0287085917097596), np.float64(1.0261257799524386), np.float64(1.0250441656840636), np.float64(1.0243949446135003), np.float64(1.0239017733211542), np.float64(1.0234337365554402), np.float64(1.0228101549007391), np.float64(1.0221295564725252), np.float64(1.0218482823756463), np.float64(1.0216894392513793), np.float64(1.0215872674950233), np.float64(1.0215162291422692), np.float64(1.0214598164442372), np.float64(1.0214079021469153), np.float64(1.0213551848472826), np.float64(1.021298749492615), np.float64(1.0212365746198167), np.float64(1.0211669704582198), np.float64(1.021088326102815), np.float64(1.0209989683363352), np.float64(1.0208970672363211), np.float64(1.0207805580976839), np.float64(1.020647062438803), np.float64(1.0204937952851503), np.float64(1.0203174452056738), np.float64(1.020114008411319), np.float64(1.0198785472083014), np.float64(1.0196049093456208), np.float64(1.0193242177414579), np.float64(1.0192093387140257), np.float64(1.0191630655023523), np.float64(1.01913712663923), np.float64(1.0191194406283075), np.float64(1.0191051109399434), np.float64(1.0190920219388155), np.float64(1.0190792378488969), np.float64(1.0190663317748392), np.float64(1.019053098367578), np.float64(1.0190394291197475), np.float64(1.0190252572592038), np.float64(1.0190105325423873), np.float64(1.018995208686241), np.float64(1.0189792355603693), np.float64(1.0189625520561378), np.float64(1.0189450766829553), np.float64(1.0189266926243918), np.float64(1.0189072227662967), np.float64(1.0188863891653384), np.float64(1.0188637533384182), np.float64(1.0188386418250182), np.float64(1.0188100736900307), np.float64(1.0187767123586748), np.float64(1.0187368358138469), np.float64(1.0186882719047394), np.float64(1.0186282748189233), np.float64(1.0185533637728519), np.float64(1.0184591311095532), np.float64(1.0183400130337417), np.float64(1.0181890176871877), np.float64(1.0179974092367328), np.float64(1.0177543511138627), np.float64(1.017446601957201), np.float64(1.017045967675591), np.float64(1.0164767583698064), np.float64(1.0158222230713658), np.float64(1.0156085289128036), np.float64(1.0154983154812163), np.float64(1.0154297384493223), np.float64(1.0153823501568355), np.float64(1.0153472490189512), np.float64(1.0153196253215053), np.float64(1.0152964443578698), np.float64(1.015275576616455), np.float64(1.015255397892461), np.float64(1.015234567963896), np.float64(1.015211888339991), np.float64(1.015186199021757), np.float64(1.0151562949124775), np.float64(1.0151208506442315), np.float64(1.0150783460328032), np.float64(1.0150269857195076), np.float64(1.0149646066888853), np.float64(1.014888566501431), np.float64(1.0147956031142111), np.float64(1.0146816536134449), np.float64(1.014541613014629), np.float64(1.0143690201684257), np.float64(1.0141721294587536), np.float64(1.0140500333685747), np.float64(1.0139678067074809), np.float64(1.013897901846465), np.float64(1.0138348946426363), np.float64(1.0137765457239434), np.float64(1.013721632138481), np.float64(1.0136728564886415), np.float64(1.0136475857630862), np.float64(1.013631434504593), np.float64(1.0136175258746798), np.float64(1.0136042970732402), np.float64(1.013591107238666), np.float64(1.0135776610430336), np.float64(1.0135638101701523), np.float64(1.013549471506805), np.float64(1.013534591206511), np.float64(1.0135191284728375), np.float64(1.0135030481409726), np.float64(1.0134863172672317), np.float64(1.013468903577034), np.float64(1.0134507747941273), np.float64(1.0134318984027975), np.float64(1.0134122416364795), np.float64(1.0133917715978282), np.float64(1.0133704554674263), np.float64(1.0133482607827913), np.float64(1.0133251557808776), np.float64(1.0133011098022198), np.float64(1.0132760937577818), np.float64(1.0132500806585205), np.float64(1.0132230462084182), np.float64(1.0131949694594218), np.float64(1.013165833524924), np.float64(1.0131356263456996), np.float64(1.0131043414989689), np.float64(1.0130719790375227), np.float64(1.0130385463416993), np.float64(1.0130040589625504), np.float64(1.0129685414300464), np.float64(1.0129320279958183), np.float64(1.0128945632761657), np.float64(1.0128562027581691), np.float64(1.012817013130272), np.float64(1.0127770723990293), np.float64(1.012736469756368), np.float64(1.0126953051670178), np.float64(1.0126536886540967), np.float64(1.0126117392756038), np.float64(1.0125696071398163), np.float64(1.0125368375022983), np.float64(1.0125263988798812), np.float64(1.012521956682006)]}
marginals OT 1: [0.10519574 0.09978745 0.11238741 0.09958179 0.10535861 0.09191738
0.10523055 0.09971987] [0.06690896 0.05619368 0.067076 0.08047725 0.06698385 0.08085498
0.08042594 0.05619373 0.05764828 0.09191738 0.05710157 0.05739717]
marginals OT 2: [0.04370016 0.05578002 0.05430234 0.04785734 0.04668079 0.04785731
0.05417119 0.05572529 0.04380001 0.04009479 0.05209757 0.04003162
0.04374992 0.05569528 0.05430393 0.03996487] [0.05578014 0.07119775 0.05569539 0.05430394 0.0557257 0.05417119
0.05430234 0.07119768 0.08366491 0.05209757 0.08389439 0.08378143]
-- name = Unbalanced KL No Reg
$\lambda_u$=10 / param = {'unbalanced': 10}
BCD converged in 12 iterations
X: [[ 1.82074549 0.6294374 ]
[-0.62789474 1.82224861]
[ 0.63003989 -1.8201331 ]
[ 1.48406534 -1.2881548 ]
[-1.95725595 0.26789071]
[-1.4819154 1.28844781]
[ 1.28858778 1.4824035 ]
[ 0.26769023 1.95730585]
[ 1.95735118 -0.26583032]
[-1.28772028 -1.48407916]
[-1.82223757 -0.627887 ]
[-0.26528103 -1.95735837]]
loss: 1.1213900871011715
loss: {'stopping_criterion': [np.float64(2.654720244931114), np.float64(1.3956794887823305), np.float64(1.1932596712223411), np.float64(1.1602759725893586), np.float64(1.144375121053439), np.float64(1.138015263016813), np.float64(1.1327575714801612), np.float64(1.127261599818235), np.float64(1.1224327114664423), np.float64(1.1215530890306828), np.float64(1.121416593731658), np.float64(1.1213938881659422), np.float64(1.1213900871011715)]}
marginals OT 1: [0.11979118 0.11769648 0.11980552 0.11767453 0.11980046 0.11766952
0.11978194 0.11770166] [0.07813443 0.07812094 0.07814238 0.08055024 0.07876938 0.08059295
0.08057051 0.07876615 0.07878271 0.08057614 0.07812446 0.07879098]
marginals OT 2: [0.05768233 0.06133303 0.0594347 0.05608432 0.05767285 0.06129702
0.05943683 0.0560843 0.05767004 0.06129396 0.05938931 0.05606317
0.05768314 0.06134408 0.05940112 0.05606948] [0.07551875 0.07557258 0.07550106 0.07854535 0.08042855 0.07848045
0.07848999 0.08042634 0.08042186 0.07855543 0.07557614 0.08042321]
-- name = Unbalanced KL with KL Reg
$\lambda_u$=1, $\lambda_{ent}$=0.1 / param = {'reg': 0.1, 'unbalanced': 1, 'unbalanced_type': 'kl', 'reg_type': 'kl'}
BCD converged in 196 iterations
X: [[ 2.67324047e+00 1.10754552e+00]
[ 1.61461149e+00 2.28086520e+00]
[ 2.28144022e+00 -1.61577590e+00]
[ 8.92292838e-01 -3.74215653e-01]
[-1.21498913e+00 1.46213009e-01]
[-5.14172874e-01 2.75409120e+00]
[ 3.65180887e-01 8.96086079e-01]
[-9.36592489e-01 9.34378030e-01]
[ 2.82330825e+00 -6.68814283e-04]
[-9.68994784e-01 -1.14106159e+00]
[-2.80146090e+00 -5.34721474e-01]
[ 1.24492531e-01 -1.48554800e+00]]
loss: -2.6020852139652106e-18
loss: {'stopping_criterion': [np.float64(1.7083748998780734e-10), np.float64(-7.224101421232643e-10), np.float64(-4.5647908369916834e-10), np.float64(-5.689692883503739e-10), np.float64(-5.313356438857442e-10), np.float64(-5.635175243101642e-10), np.float64(-5.553726731971631e-10), np.float64(-3.5403962747593276e-10), np.float64(-3.134207841176684e-10), np.float64(-9.991966802569419e-11), np.float64(1.281478968079286e-10), np.float64(4.882211752932353e-10), np.float64(7.001881565868451e-10), np.float64(3.3612386702089325e-10), np.float64(4.97012027887711e-10), np.float64(1.0373192018894861e-09), np.float64(9.869674236955353e-10), np.float64(1.0741946980356853e-09), np.float64(1.126230317013456e-09), np.float64(1.1827792083425603e-09), np.float64(1.2359004622659875e-09), np.float64(1.5756417702690595e-09), np.float64(1.6387758001740887e-09), np.float64(2.0800180303192153e-09), np.float64(2.163638792218245e-09), np.float64(1.2309275244058726e-09), np.float64(6.835813369347743e-10), np.float64(3.801933644211747e-10), np.float64(2.2065351412345335e-10), np.float64(1.576883649698213e-10), np.float64(1.1556543677744557e-10), np.float64(7.184322342763949e-11), np.float64(6.72156898282733e-11), np.float64(4.5370238599060086e-11), np.float64(4.873469878520498e-11), np.float64(3.2438485274635664e-11), np.float64(5.231606163905167e-11), np.float64(3.662051304559322e-11), np.float64(3.594829121877918e-11), np.float64(3.5426675698904675e-11), np.float64(4.2287578386895897e-11), np.float64(4.163001605765604e-11), np.float64(6.019014258361322e-11), np.float64(3.222203515292066e-11), np.float64(2.9470957141689014e-11), np.float64(4.799421472224952e-11), np.float64(3.5140653407983446e-11), np.float64(1.9932839233349764e-11), np.float64(1.6611185083698077e-12), np.float64(1.2523129018157664e-11), np.float64(6.624208863728609e-11), np.float64(2.675797365798982e-11), np.float64(-1.9340953404806127e-10), np.float64(-2.0111694384525314e-10), np.float64(-2.1678663183165303e-10), np.float64(-2.5401419769671696e-10), np.float64(-2.3419835255139576e-10), np.float64(-1.3867029920178187e-10), np.float64(-8.017109372204789e-11), np.float64(-2.2389115301307827e-11), np.float64(1.8105546575886144e-11), np.float64(3.361284557981681e-11), np.float64(5.090061228410492e-11), np.float64(5.0405273271242335e-11), np.float64(4.594942503745314e-11), np.float64(3.706484533357035e-11), np.float64(1.66099255660343e-11), np.float64(-5.9933452515106844e-12), np.float64(-2.8579319900218225e-11), np.float64(-4.959943339290923e-11), np.float64(-8.844503547513621e-11), np.float64(-1.2540447217983253e-10), np.float64(-1.1668329475376937e-10), np.float64(-5.85432568308425e-11), np.float64(4.3411462142053936e-11), np.float64(1.73071712777223e-10), np.float64(2.233841540563719e-10), np.float64(2.6437733035775124e-10), np.float64(2.841110159634841e-10), np.float64(2.948499075103306e-10), np.float64(3.119836858474223e-10), np.float64(3.9573674372184175e-10), np.float64(5.007088771380452e-10), np.float64(6.340545250296814e-10), np.float64(5.340284612090351e-10), np.float64(5.647094749282322e-10), np.float64(4.80179923600943e-10), np.float64(3.2925129810068565e-10), np.float64(2.773941345721176e-10), np.float64(2.4086388179106466e-10), np.float64(2.0116169580780552e-10), np.float64(1.737647283006627e-10), np.float64(1.492040497229341e-10), np.float64(1.2696221201105584e-10), np.float64(1.0663724330645108e-10), np.float64(9.122476038458949e-11), np.float64(7.31762090158683e-11), np.float64(5.624618045624308e-11), np.float64(4.025453364739362e-11), np.float64(2.499323924903818e-11), np.float64(1.0503961849622767e-11), np.float64(-4.473294130946659e-12), np.float64(-1.9720624439001355e-11), np.float64(-3.666559590664864e-11), np.float64(-4.476503022432521e-11), np.float64(-6.140294696310722e-11), np.float64(-6.79773785004778e-11), np.float64(-9.151224396319879e-11), np.float64(-8.583812046575323e-11), np.float64(-9.124588324499472e-11), np.float64(-8.17774632733137e-11), np.float64(-8.648760223620156e-11), np.float64(-8.146017757906798e-11), np.float64(-8.774323975724307e-11), np.float64(-8.674694382954096e-11), np.float64(-8.163063541094528e-11), np.float64(-7.649302111861767e-11), np.float64(-6.919674468836012e-11), np.float64(-6.292761060497365e-11), np.float64(-5.7460007672066604e-11), np.float64(-5.030664166488785e-11), np.float64(-4.438418599664318e-11), np.float64(-3.9436318793883984e-11), np.float64(-3.526676910572957e-11), np.float64(-3.172217436647751e-11), np.float64(-2.8682386327139042e-11), np.float64(-2.6052349513805417e-11), np.float64(-2.3758244069999046e-11), np.float64(-2.174119955247744e-11), np.float64(-1.9954228373808558e-11), np.float64(-1.8360435567743583e-11), np.float64(-1.6929896286960178e-11), np.float64(-1.5639042144632853e-11), np.float64(-1.4467836650933208e-11), np.float64(-1.3401205058855004e-11), np.float64(-1.1075253127795781e-11), np.float64(-9.153337809930662e-12), np.float64(-7.564641621438106e-12), np.float64(-6.2517374090076405e-12), np.float64(-5.166636216080711e-12), np.float64(-4.270092092417688e-12), np.float64(-3.5288664351762478e-12), np.float64(-2.916496037730365e-12), np.float64(-2.4103822236776207e-12), np.float64(-1.9918372506921855e-12), np.float64(-1.6463028856827933e-12), np.float64(-1.3604360693530992e-12), np.float64(-1.1244213025951577e-12), np.float64(-9.293464435511378e-13), np.float64(-7.679204494515091e-13), np.float64(-6.346043482374775e-13), np.float64(-5.243409872957017e-13), np.float64(-4.3356420884044233e-13), np.float64(-3.58271138450883e-13), np.float64(-2.960461736867259e-13), np.float64(-2.448219578454758e-13), np.float64(-2.021278110164726e-13), np.float64(-1.670482328852696e-13), np.float64(-1.37922659404488e-13), np.float64(-1.141300595697281e-13), np.float64(-9.435681402880647e-14), np.float64(-7.787650732615781e-14), np.float64(-6.435693991613256e-14), np.float64(-5.318185128388997e-14), np.float64(-4.387072302658446e-14), np.float64(-3.6251383839225326e-14), np.float64(-2.9886249724997427e-14), np.float64(-2.482172453688314e-14), np.float64(-2.0474073825216266e-14), np.float64(-1.684850176042474e-14), np.float64(-1.3997483727656856e-14), np.float64(-1.1616575756878689e-14), np.float64(-9.583913523902865e-15), np.float64(-7.848756367057064e-15), np.float64(-6.3547257733720386e-15), np.float64(-5.560656102243655e-15), np.float64(-4.355890648177763e-15), np.float64(-3.5514126361935183e-15), np.float64(-2.955101441326491e-15), np.float64(-2.4273118237605473e-15), np.float64(-2.0660556598883772e-15), np.float64(-1.7525043916055694e-15), np.float64(-1.5469396597023177e-15), np.float64(-1.0586150012148465e-15), np.float64(-6.574601973952099e-16), np.float64(-7.988401606873197e-16), np.float64(-6.218983661376853e-16), np.float64(-5.117434254131581e-16), np.float64(-3.7339922820400773e-16), np.float64(-2.6194324487249787e-16), np.float64(-1.6436504934880247e-16), np.float64(-1.4094628242311558e-16), np.float64(-2.2941717969793274e-16), np.float64(-6.938893903907228e-17), np.float64(-2.5240226575462543e-16), np.float64(-2.6020852139652106e-18), np.float64(-2.6020852139652106e-18)]}
marginals OT 1: [0.06511394 0.06505919 0.06542103 0.08720513 0.09025411 0.08099069
0.08095141 0.06540024] [0.00342089 0.00621653 0.00616502 0.11591243 0.08729366 0.00595931
0.11593877 0.08709493 0.00607672 0.08103414 0.0037425 0.08154084]
marginals OT 2: [0.06271858 0.06333169 0.04209957 0.03609597 0.03986905 0.03716368
0.01643944 0.01272938 0.03964264 0.03782185 0.01666903 0.01156879
0.01646471 0.01152334 0.04213958 0.03608489] [0.06333856 0.07570326 0.07569847 0.00249822 0.01220803 0.07702018
0.00249793 0.01696203 0.06275873 0.02820141 0.07746326 0.0280121 ]
-- name = Unbalanced KL with KL Reg
$\lambda_u$=2.5, $\lambda_{ent}$=0.1 / param = {'reg': 0.1, 'unbalanced': 2.5, 'unbalanced_type': 'kl', 'reg_type': 'kl'}
BCD converged in 252 iterations
X: [[ 1.69385367 0.70161716]
[-0.70161716 1.69385367]
[ 0.70161716 -1.69385367]
[ 1.51155693 -1.26936002]
[-1.96640526 0.17125901]
[-1.51155693 1.26936002]
[ 1.26936002 1.51155693]
[ 0.17125901 1.96640526]
[ 1.96640526 -0.17125901]
[-1.26936002 -1.51155693]
[-1.69385367 -0.70161716]
[-0.17125901 -1.96640526]]
loss: -4.3298697960381105e-15
loss: {'stopping_criterion': [np.float64(-3.481034072105871e-10), np.float64(-1.74991113266465e-09), np.float64(-1.6117589207720329e-09), np.float64(-1.6956539505841306e-09), np.float64(-8.24356749529187e-10), np.float64(-1.0108024139920957e-09), np.float64(-1.1976257485724062e-09), np.float64(-1.1549109446562511e-09), np.float64(-1.040564689969159e-09), np.float64(-7.64027952016022e-10), np.float64(-8.077332691591721e-10), np.float64(-7.807174073892753e-10), np.float64(-8.983390697991922e-10), np.float64(-7.733769458173612e-10), np.float64(-7.595461204434883e-10), np.float64(-7.427534143289449e-10), np.float64(-6.860461365665316e-10), np.float64(-6.923774886757883e-10), np.float64(-6.484460191025221e-10), np.float64(-6.455297130170123e-10), np.float64(-6.340604430388197e-10), np.float64(-8.673573248518807e-10), np.float64(-7.260561873945193e-10), np.float64(-5.897922428221847e-10), np.float64(-5.074697884133172e-10), np.float64(-4.565651468002585e-10), np.float64(-4.1577397080772016e-10), np.float64(-3.6942923720140186e-10), np.float64(-3.2994090792826114e-10), np.float64(-3.10332481934239e-10), np.float64(-2.9387148270387797e-10), np.float64(-2.8984015187916157e-10), np.float64(-2.745389748870508e-10), np.float64(-2.864887216347256e-10), np.float64(-2.9476243668113966e-10), np.float64(-3.1978852899072763e-10), np.float64(-2.4743912474534113e-10), np.float64(-2.704554080690258e-10), np.float64(-2.896387851780702e-10), np.float64(-3.296410644448855e-10), np.float64(-3.9958741870904646e-10), np.float64(-4.148099086442869e-10), np.float64(-4.797666153244506e-10), np.float64(-5.644245903990708e-10), np.float64(-6.579679856510978e-10), np.float64(-8.559365161087129e-10), np.float64(-1.0837901132099148e-09), np.float64(-1.2791263048761436e-09), np.float64(-1.3385597630310997e-09), np.float64(-1.3635396700628633e-09), np.float64(-1.2002025762125612e-09), np.float64(-1.0580410714222666e-09), np.float64(-9.210434082085328e-10), np.float64(-8.488675873330465e-10), np.float64(-7.068775842444808e-10), np.float64(-5.654270662791561e-10), np.float64(-4.700260181067506e-10), np.float64(-3.723417685286279e-10), np.float64(-3.135170179024982e-10), np.float64(-3.03663927336828e-10), np.float64(-2.967341650172983e-10), np.float64(-2.8033991794629287e-10), np.float64(-2.7978883099244456e-10), np.float64(-3.0467697809122285e-10), np.float64(-2.977318669383777e-10), np.float64(-3.3932701093419837e-10), np.float64(-3.36601024830685e-10), np.float64(-3.3587155279235503e-10), np.float64(-3.0509503257114545e-10), np.float64(-3.065485643105603e-10), np.float64(-2.8082022818232133e-10), np.float64(-2.7907171018526356e-10), np.float64(-2.737946258601909e-10), np.float64(-2.661923181879189e-10), np.float64(-2.723707648311091e-10), np.float64(-2.72294881087376e-10), np.float64(-2.7239746569485135e-10), np.float64(-2.62597027456124e-10), np.float64(-2.562641487902084e-10), np.float64(-2.534367160578199e-10), np.float64(-2.5524288238543136e-10), np.float64(-2.3609444954608705e-10), np.float64(-2.349991312655675e-10), np.float64(-2.3299032148038634e-10), np.float64(-2.302979751345191e-10), np.float64(-2.0997162342162312e-10), np.float64(-2.0668855515992846e-10), np.float64(-2.0317986182405434e-10), np.float64(-1.9952606233886172e-10), np.float64(-1.9578885734894413e-10), np.float64(-1.8357759756781888e-10), np.float64(-1.7999601809037813e-10), np.float64(-1.7643425609392693e-10), np.float64(-1.7291129639218639e-10), np.float64(-1.623124967764511e-10), np.float64(-1.5350737347930021e-10), np.float64(-1.5042023182587627e-10), np.float64(-1.4740042519889585e-10), np.float64(-1.3840098511685994e-10), np.float64(-1.3564477319150114e-10), np.float64(-1.3295503586974178e-10), np.float64(-1.3033066292855722e-10), np.float64(-1.2261866522145226e-10), np.float64(-1.158217965979702e-10), np.float64(-1.1356884876967399e-10), np.float64(-1.113709957589748e-10), np.float64(-1.0482614776208266e-10), np.float64(-1.0281733797690151e-10), np.float64(-9.715991899916787e-11), np.float64(-9.531331279788446e-11), np.float64(-8.974535004036e-11), np.float64(-8.805409179579726e-11), np.float64(-8.32338087342066e-11), np.float64(-7.838832360995696e-11), np.float64(-7.692668724246232e-11), np.float64(-7.549771918746728e-11), np.float64(-7.138215019075744e-11), np.float64(-6.724271139901816e-11), np.float64(-6.600350821450718e-11), np.float64(-6.479158876082636e-11), np.float64(-5.880645970179899e-11), np.float64(-5.772918254542958e-11), np.float64(-5.6677496029777785e-11), np.float64(-5.5647375596379334e-11), np.float64(-5.051692397728402e-11), np.float64(-4.9598852802645865e-11), np.float64(-4.870465142303715e-11), np.float64(-4.597566771735728e-11), np.float64(-4.342592951900315e-11), np.float64(-4.264588682190151e-11), np.float64(-4.188646651748229e-11), np.float64(-3.955019645118796e-11), np.float64(-3.736475018278895e-11), np.float64(-3.6701613970180347e-11), np.float64(-3.46634942971491e-11), np.float64(-3.405625781383037e-11), np.float64(-3.2190278220767254e-11), np.float64(-3.1628755170487466e-11), np.float64(-2.9888536090538764e-11), np.float64(-2.9378832699933355e-11), np.float64(-2.778613450438172e-11), np.float64(-2.6259605601097746e-11), np.float64(-2.5825369620591232e-11), np.float64(-2.541689081425602e-11), np.float64(-2.3136215165919793e-11), np.float64(-2.2749829797774623e-11), np.float64(-2.2414292644157285e-11), np.float64(-2.0429991032244743e-11), np.float64(-2.0102586262282784e-11), np.float64(-1.983890829393431e-11), np.float64(-1.811822913921901e-11), np.float64(-1.7846862876425007e-11), np.float64(-1.76562930942481e-11), np.float64(-1.6173173911226968e-11), np.float64(-1.59574575775423e-11), np.float64(-1.52268475606121e-11), np.float64(-1.4511974955055962e-11), np.float64(-1.4421019933763546e-11), np.float64(-1.3321954650535872e-11), np.float64(-1.3214096483693538e-11), np.float64(-1.2731787846220755e-11), np.float64(-1.2257583836827735e-11), np.float64(-1.1401102284480658e-11), np.float64(-1.093647394867503e-11), np.float64(-1.0605905043092889e-11), np.float64(-9.639955500517772e-12), np.float64(-8.955530761411978e-12), np.float64(-8.370554249736983e-12), np.float64(-7.5097983387451e-12), np.float64(-6.404266006398984e-12), np.float64(-5.818345805153058e-12), np.float64(-5.017819493247089e-12), np.float64(-4.242384221697648e-12), np.float64(-3.686939642477682e-12), np.float64(-3.24881788138498e-12), np.float64(-2.789185549190165e-12), np.float64(-2.445516011917448e-12), np.float64(-2.0753954110830364e-12), np.float64(-1.7424672815735676e-12), np.float64(-1.5198675651362237e-12), np.float64(-1.3533896225936815e-12), np.float64(-1.16157083951407e-12), np.float64(-9.810763312856352e-13), np.float64(-8.228417947009348e-13), np.float64(-7.439049376500861e-13), np.float64(-6.486755577128633e-13), np.float64(-5.549449788588845e-13), np.float64(-4.689026944504349e-13), np.float64(-3.934630399271555e-13), np.float64(-3.552713678800501e-13), np.float64(-3.118894031928221e-13), np.float64(-2.6836866062751596e-13), np.float64(-2.277067423506196e-13), np.float64(-1.9154122732345513e-13), np.float64(-1.7272294705605873e-13), np.float64(-1.5237811012980274e-13), np.float64(-1.3239409568654992e-13), np.float64(-1.1313172620930345e-13), np.float64(-9.536815781530095e-14), np.float64(-8.587575095475586e-14), np.float64(-7.643885524544203e-14), np.float64(-6.70019595361282e-14), np.float64(-5.800915303666443e-14), np.float64(-4.9432680171435095e-14), np.float64(-4.285460875053104e-14), np.float64(-3.9468428525424315e-14), np.float64(-3.5638159090467525e-14), np.float64(-3.144706717250756e-14), np.float64(-2.7172708527700706e-14), np.float64(-2.2898349882893854e-14), np.float64(-2.0233814623793478e-14), np.float64(-1.8318679906315083e-14), np.float64(-1.6930901125533637e-14), np.float64(-1.529332216421153e-14), np.float64(-1.3433698597964394e-14), np.float64(-1.1268763699945339e-14), np.float64(-1.1102230246251565e-14), np.float64(-9.631184738623233e-15), np.float64(-8.881784197001252e-15), np.float64(-8.18789480661053e-15), np.float64(-7.216449660063518e-15), np.float64(-6.5780714209040525e-15), np.float64(4.163336342344337e-16), np.float64(-8.909539772616881e-15), np.float64(-9.325873406851315e-15), np.float64(-8.604228440844963e-15), np.float64(-7.188694084447889e-15), np.float64(-4.274358644806853e-15), np.float64(-6.855627177060342e-15), np.float64(-6.522560269672795e-15), np.float64(-5.35682609381638e-15), np.float64(-2.7478019859472624e-15), np.float64(-6.217248937900877e-15), np.float64(-6.772360450213455e-15), np.float64(-6.13398221105399e-15), np.float64(-5.662137425588298e-15), np.float64(-4.718447854656915e-15), np.float64(-3.802513859341161e-15), np.float64(-3.969047313034935e-15), np.float64(-1.2490009027033011e-15), np.float64(-5.412337245047638e-15), np.float64(-5.162537064506978e-15), np.float64(-3.552713678800501e-15), np.float64(-5.745404152435185e-15), np.float64(-5.6343818499726694e-15), np.float64(-5.10702591327572e-15), np.float64(-4.9960036108132044e-15), np.float64(-4.773959005888173e-15), np.float64(-4.052314039881821e-15), np.float64(-3.913536161803677e-15), np.float64(-2.3037127760972e-15), np.float64(-4.3298697960381105e-15), np.float64(-4.3298697960381105e-15)]}
marginals OT 1: [0.09973766 0.09973766 0.09973766 0.09973766 0.09973766 0.09973766
0.09973766 0.09973766] [0.06749926 0.06749926 0.06749926 0.06598803 0.06598803 0.06598803
0.06598803 0.06598803 0.06598803 0.06598803 0.06749926 0.06598803]
marginals OT 2: [0.04657563 0.05227775 0.04657563 0.03938462 0.04657563 0.05227775
0.04657563 0.03938462 0.04657563 0.05227775 0.04657563 0.03938462
0.04657563 0.05227775 0.04657563 0.03938462] [0.05271093 0.05271093 0.05271093 0.06605135 0.06605135 0.06605135
0.06605135 0.06605135 0.06605135 0.06605135 0.05271093 0.06605135]
-- name = Unbalanced KL with KL Reg
$\lambda_u$=10, $\lambda_{ent}$=0.1 / param = {'reg': 0.1, 'unbalanced': 10, 'unbalanced_type': 'kl', 'reg_type': 'kl'}
X: [[ 1.82295827 0.62071009]
[-0.62071009 1.82295827]
[ 0.62071009 -1.82295827]
[ 1.48472534 -1.28716017]
[-1.95319153 0.27003949]
[-1.48472534 1.28716017]
[ 1.28716017 1.48472534]
[ 0.27003949 1.95319153]
[ 1.95319153 -0.27003949]
[-1.28716017 -1.48472534]
[-1.82295827 -0.62071009]
[-0.27003949 -1.95319153]]
loss: -6.777911565336581e-14
loss: {'stopping_criterion': [np.float64(1.91858529063893e-10), np.float64(-1.0895514934716743e-08), np.float64(-8.76812727979015e-09), np.float64(-1.068237809320749e-08), np.float64(-8.524138450649588e-09), np.float64(-7.661017986659857e-09), np.float64(-1.0389622606687965e-08), np.float64(-7.100362464651511e-09), np.float64(-9.001810186148873e-09), np.float64(-4.975917400340535e-09), np.float64(-2.494313089407285e-09), np.float64(-1.5506653738839304e-09), np.float64(-1.2503489910109522e-09), np.float64(-1.0763919755518714e-09), np.float64(-9.63891799710126e-10), np.float64(-8.958868646935514e-10), np.float64(-7.878623309309774e-10), np.float64(-7.440171811978757e-10), np.float64(-6.712680966636242e-10), np.float64(-5.748012621431542e-10), np.float64(-5.494200649991399e-10), np.float64(-4.886551718819021e-10), np.float64(-4.4529674392279617e-10), np.float64(-6.061595114736917e-10), np.float64(-7.976907467899252e-10), np.float64(-8.22540591194354e-10), np.float64(-8.186091804418538e-10), np.float64(-7.99839527942936e-10), np.float64(-7.711318250613886e-10), np.float64(-7.464276419177907e-10), np.float64(-7.413906155662175e-10), np.float64(-7.217080266741505e-10), np.float64(-7.163966087020412e-10), np.float64(-6.748779868281929e-10), np.float64(-6.52141174395382e-10), np.float64(-6.146690378905362e-10), np.float64(-5.956948823104824e-10), np.float64(-5.598473351575706e-10), np.float64(-5.365380362221117e-10), np.float64(-5.225057053692694e-10), np.float64(-5.042641859631658e-10), np.float64(-4.767992667353838e-10), np.float64(-4.5925091507470484e-10), np.float64(-4.4154085943048926e-10), np.float64(-4.151773369542866e-10), np.float64(-3.93269694587417e-10), np.float64(-3.7025749133334784e-10), np.float64(-3.5200203862828516e-10), np.float64(-3.3624864004266897e-10), np.float64(-3.1517244369894115e-10), np.float64(-2.984944513784171e-10), np.float64(-2.8196001089497713e-10), np.float64(-2.685044409034276e-10), np.float64(-2.5659518954057603e-10), np.float64(-2.3964180639879373e-10), np.float64(-2.271192678371392e-10), np.float64(-2.1165896813002405e-10), np.float64(-1.9987334010096447e-10), np.float64(-1.8624785047549608e-10), np.float64(-1.7747464609030317e-10), np.float64(-1.6544932091022702e-10), np.float64(-1.5504592054682576e-10), np.float64(-1.4737400189090977e-10), np.float64(-1.4075579590766552e-10), np.float64(-1.302528640501066e-10), np.float64(-1.2313922104212338e-10), np.float64(-1.1380640874136816e-10), np.float64(-1.0740458522562335e-10), np.float64(-9.988193605536821e-11), np.float64(-9.484252272429217e-11), np.float64(-8.909922799560377e-11), np.float64(-8.540368412468524e-11), np.float64(-8.124906303308421e-11), np.float64(-7.564471271592765e-11), np.float64(-7.133493795663526e-11), np.float64(-6.551503783924773e-11), np.float64(-6.135392194295264e-11), np.float64(-5.7666427188962643e-11), np.float64(-5.361716626239854e-11), np.float64(-5.102385181032787e-11), np.float64(-4.860639668535782e-11), np.float64(-4.646011353415247e-11), np.float64(-4.4428516421390896e-11), np.float64(-4.1145031826061995e-11), np.float64(-3.859618180612756e-11), np.float64(-3.4918345992451805e-11), np.float64(-3.261940717536049e-11), np.float64(-3.007499804752456e-11), np.float64(-2.868749682249927e-11), np.float64(-2.755462524817176e-11), np.float64(-2.67770250417243e-11), np.float64(-2.6253776930218464e-11), np.float64(-2.4664992270828634e-11), np.float64(-2.3066160093065946e-11), np.float64(-2.09188222299872e-11), np.float64(-1.872185739770771e-11), np.float64(-1.736571997312808e-11), np.float64(-1.6014134462949414e-11), np.float64(-1.5324408408901036e-11), np.float64(-1.4872936215937216e-11), np.float64(-1.4727163932803933e-11), np.float64(-1.4221457345087174e-11), np.float64(-1.3245904373349049e-11), np.float64(-1.2478351685274447e-11), np.float64(-1.0652534410127146e-11), np.float64(-9.351797114476312e-12), np.float64(-8.378908677997288e-12), np.float64(-7.808143021037495e-12), np.float64(-7.662648293660368e-12), np.float64(-8.120892847074401e-12), np.float64(-7.880696095696749e-12), np.float64(-7.660372336459886e-12), np.float64(-7.1757599862110055e-12), np.float64(-6.31095176117924e-12), np.float64(-5.233868893839144e-12), np.float64(-4.595712699284604e-12), np.float64(-4.028388733701149e-12), np.float64(-3.894495836931355e-12), np.float64(-3.958777750057152e-12), np.float64(-4.3100523150485515e-12), np.float64(-4.238720485716385e-12), np.float64(-4.19081436220381e-12), np.float64(-3.893052546999343e-12), np.float64(-3.0334623701833152e-12), np.float64(-2.153000000504335e-12), np.float64(-1.7243984018477931e-12), np.float64(-1.5296097721773094e-12), np.float64(-1.6521228829446954e-12), np.float64(-2.1933566074494593e-12), np.float64(-2.50849341298931e-12), np.float64(-2.84655632398767e-12), np.float64(-2.7075008901533693e-12), np.float64(-2.3628321521584894e-12), np.float64(-1.3501977313978841e-12), np.float64(-8.75632899521861e-13), np.float64(-4.390932062392494e-13), np.float64(-4.118372309847018e-13), np.float64(-5.133116154354411e-13), np.float64(-1.0563772079308364e-12), np.float64(-1.38311584407802e-12), np.float64(-1.5273893261280591e-12), np.float64(-1.4451773111545663e-12), np.float64(-1.0546563622426675e-12), np.float64(-4.063416270128073e-13), np.float64(-4.207745263329343e-14), np.float64(2.273181642920008e-13), np.float64(1.6381340728344185e-13), np.float64(-1.5776269179923474e-13), np.float64(-9.514056209525279e-13), np.float64(-1.2646550473505158e-12), np.float64(-1.4261369862822448e-12), np.float64(-1.1397549570801857e-12), np.float64(-4.687916721479723e-13), np.float64(-3.558264793923627e-14), np.float64(3.035349749325178e-13), np.float64(5.326294960639189e-13), np.float64(3.5849101465146305e-13), np.float64(-2.3159252293680765e-13), np.float64(-8.298361997560733e-13), np.float64(-1.095235013792717e-12), np.float64(-1.1734502258775592e-12), np.float64(-8.950618024528012e-13), np.float64(-3.186895192186512e-13), np.float64(6.100675520315235e-14), np.float64(4.563571742721706e-13), np.float64(5.189737528610294e-13), np.float64(2.967071033310731e-13), np.float64(-3.2229774404868294e-13), np.float64(-8.901768211444505e-13), np.float64(-1.2375100943984307e-12), np.float64(-1.1498579866042746e-12), np.float64(-8.438805210175815e-13), np.float64(-2.489120021209601e-13), np.float64(3.9351855107838674e-13), np.float64(6.180056466575934e-13), np.float64(5.569433803032098e-13), np.float64(6.505906924303417e-14), np.float64(-3.1424862712015056e-13), np.float64(-8.461564782180631e-13), np.float64(-1.0775269565499457e-12), np.float64(-9.069966999675216e-13), np.float64(-3.448907825998049e-13), np.float64(5.900835375882707e-14), np.float64(5.929146063010649e-13), np.float64(8.160139230994901e-13), np.float64(6.697975507563569e-13), np.float64(2.280953204092384e-13), np.float64(-4.084510507595951e-13), np.float64(-7.048805983345119e-13), np.float64(-8.623657343775903e-13), np.float64(-6.617484338278246e-13), np.float64(-1.7930101847696278e-13), np.float64(4.4486636596730023e-13), np.float64(7.105427357601002e-13), np.float64(7.733258478026528e-13), np.float64(5.170308625679354e-13), np.float64(-2.736699755701011e-14), np.float64(-6.383227280082338e-13), np.float64(-8.706368959110478e-13), np.float64(-8.953948693601887e-13), np.float64(-5.080935672197029e-13), np.float64(-1.5937251518494122e-13), np.float64(4.0228931297292547e-13), np.float64(7.314704397742844e-13), np.float64(6.949441022641167e-13), np.float64(3.8125058665627876e-13), np.float64(-1.7763568394002505e-14), np.float64(-5.345723863570129e-13), np.float64(-7.123746037507317e-13), np.float64(-6.213363157314689e-13), np.float64(-2.6334490144108713e-13), np.float64(1.166289287368727e-13), np.float64(5.747069486972123e-13), np.float64(7.290834602713403e-13), np.float64(6.203926261605375e-13), np.float64(3.7586600498684675e-13), np.float64(-1.8274270985330077e-13), np.float64(-6.333267243974205e-13), np.float64(-8.458234113106755e-13), np.float64(-6.831202270518588e-13), np.float64(-4.203859482743155e-13), np.float64(1.3300471835009375e-13), np.float64(5.637712519046545e-13), np.float64(6.774580896262705e-13), np.float64(4.973799150320701e-13), np.float64(2.2831736501416344e-13), np.float64(-4.873879078104437e-13), np.float64(-7.217559883088143e-13), np.float64(-7.848721672587544e-13), np.float64(-5.626055177287981e-13), np.float64(-2.2437607327674414e-13), np.float64(2.4674706722294104e-13), np.float64(3.3995029014022293e-13), np.float64(3.976263762694998e-13), np.float64(2.4741320103771614e-13), np.float64(-4.285460875053104e-14), np.float64(-4.53859172466764e-13), np.float64(-5.215272658176673e-13), np.float64(-5.055955654142963e-13), np.float64(-4.0140113455322535e-13), np.float64(7.172040739078511e-14), np.float64(5.115352585960409e-13), np.float64(6.886713421749846e-13), np.float64(6.515343820012731e-13), np.float64(5.365152766501069e-13), np.float64(-1.0874634526203408e-13), np.float64(-5.309641615269811e-13), np.float64(-6.581957201490241e-13), np.float64(-5.844214001626824e-13), np.float64(-4.2404968425557854e-13), np.float64(2.1271873151818e-13), np.float64(3.3673064336881e-13), np.float64(5.537792446830281e-13), np.float64(4.59243754136196e-13), np.float64(1.7258416917798058e-13), np.float64(-2.9765079290200447e-13), np.float64(-4.055644708955697e-13), np.float64(-5.681011217006926e-13), np.float64(-4.55357973550008e-13), np.float64(-4.1300296516055823e-14), np.float64(3.850253449400043e-13), np.float64(7.158718062783009e-13), np.float64(7.755462938519031e-13), np.float64(6.855627177060342e-13), np.float64(9.214851104388799e-14), np.float64(-2.1188606424971113e-13), np.float64(-4.2182923820632823e-13), np.float64(-5.079270337660091e-13), np.float64(-3.3678615452004124e-13), np.float64(2.6961766153021927e-13), np.float64(5.296874050486622e-13), np.float64(7.51620987671231e-13), np.float64(7.192579865034077e-13), np.float64(4.880540416252188e-13), np.float64(8.032463583163008e-14), np.float64(-2.1005419625907962e-13), np.float64(-4.55580018154933e-13), np.float64(-4.351519145018301e-13), np.float64(-2.1882495815361835e-13), np.float64(3.0475622025960547e-13), np.float64(5.501155087017651e-13), np.float64(7.168710070004636e-13), np.float64(6.014633235906786e-13), np.float64(3.314570840018405e-13), np.float64(-9.603429163007604e-14), np.float64(-3.559375016948252e-13), np.float64(-5.289102489314246e-13), np.float64(-4.1178171983347056e-13), np.float64(-2.531308496145357e-14), np.float64(2.456368441983159e-13), np.float64(5.924705170912148e-13), np.float64(7.174816296640074e-13), np.float64(6.01130256683291e-13), np.float64(4.618527782440651e-14), np.float64(-2.353672812205332e-13), np.float64(-5.42565992134314e-13), np.float64(-6.052935930256353e-13), np.float64(-4.360956040727615e-13), np.float64(-7.310818617156656e-14), np.float64(2.2637447472106942e-13), np.float64(5.225264665398299e-13), np.float64(5.413447468072263e-13), np.float64(4.014566457044566e-13), np.float64(5.184741524999481e-14), np.float64(-3.781974733385596e-13), np.float64(-5.495603971894525e-13), np.float64(-5.864753127582389e-13), np.float64(-3.9268588380991787e-13), np.float64(-1.4499512701604544e-13), np.float64(2.846056723626589e-13), np.float64(5.543898673465719e-13), np.float64(5.579425810253724e-13), np.float64(1.8801626922027026e-13), np.float64(-6.783462680459706e-14), np.float64(-4.505840145441198e-13), np.float64(-6.485922909860165e-13), np.float64(-5.868638908168577e-13), np.float64(-3.3267832932892816e-13), np.float64(-3.8469227803261674e-14), np.float64(3.1652458432063213e-13), np.float64(4.2893466556392923e-13), np.float64(3.3401059695847835e-13), np.float64(6.206146707654625e-14), np.float64(-2.0411450307733503e-13), np.float64(-5.106470801763408e-13), np.float64(-6.472600233564663e-13), np.float64(-5.48172618408671e-13), np.float64(-2.6650903706126883e-13), np.float64(1.5987211554602254e-14), np.float64(3.3634206531019117e-13), np.float64(4.823919041996305e-13), np.float64(3.633204848085825e-13), np.float64(2.600697435184429e-13), np.float64(-2.918221220227224e-13), np.float64(-5.042632977847461e-13), np.float64(-5.697109450863991e-13), np.float64(-4.420352972545061e-13), np.float64(-2.401967513776526e-13), np.float64(2.9515279109659787e-13), np.float64(3.777533841287095e-13), np.float64(4.531930386519889e-13), np.float64(3.1519231669108194e-13), np.float64(8.515410598874951e-14), np.float64(-2.4302782009044677e-13), np.float64(-3.8219427622721014e-13), np.float64(-3.9390712913700554e-13), np.float64(-2.7572388816565763e-13), np.float64(-3.880229471064922e-14), np.float64(2.9704017023846063e-13), np.float64(3.56548124358369e-13), np.float64(3.5482727867020003e-13), np.float64(2.2143398226148747e-13), np.float64(-1.2195799925507345e-13), np.float64(-4.208300374841656e-13), np.float64(-5.181965967437918e-13), np.float64(-4.865552405419749e-13), np.float64(-3.8602454566216693e-13), np.float64(1.2828627049543684e-13), np.float64(3.4688918404413016e-13), np.float64(4.476419235288631e-13), np.float64(3.8363756615922284e-13), np.float64(2.2026824808563106e-13), np.float64(-1.535993554568904e-13), np.float64(-3.5582647939236267e-13), np.float64(-5.120348589571222e-13), np.float64(-4.6956882826521e-13), np.float64(-1.8701706849810762e-13), np.float64(4.2021941482062175e-14), np.float64(2.212674488077937e-13), np.float64(3.434474926677922e-13), np.float64(2.9531932455029164e-13), np.float64(2.353672812205332e-14), np.float64(-2.8421709430404007e-13), np.float64(-4.461986335968504e-13), np.float64(-5.21471754666436e-13), np.float64(-4.673483822159596e-13), np.float64(-5.96189764223709e-14), np.float64(1.6187051699034782e-13), np.float64(3.2779334802057747e-13), np.float64(3.91853216541449e-13), np.float64(3.0692115515762453e-13), np.float64(1.27675647831893e-15), np.float64(-2.071676163950542e-13), np.float64(-4.5197179332490123e-13), np.float64(-4.886646642887627e-13), np.float64(-3.6559644200906405e-13), np.float64(-6.80566714095221e-14), np.float64(1.3677947663381929e-13), np.float64(3.577693696854567e-13), np.float64(3.773648060700907e-13), np.float64(1.9395596240201485e-13), np.float64(-8.421041641781812e-14), np.float64(-2.822186928597148e-13), np.float64(-4.557465516086268e-13), np.float64(-4.463651670505442e-13), np.float64(-2.9015678748578466e-13), np.float64(-4.9960036108132044e-15), np.float64(3.013145288832675e-13), np.float64(4.606870440682087e-13), np.float64(4.178879464689089e-13), np.float64(1.6642243139131097e-13), np.float64(6.311617894994015e-14), np.float64(-3.4622305022935507e-13), np.float64(-4.4564352208453784e-13), np.float64(-3.977929097231936e-13), np.float64(-1.713629238508929e-13), np.float64(2.5479618415147343e-14), np.float64(3.094746681142624e-13), np.float64(3.950173521616307e-13), np.float64(3.356759314954161e-13), np.float64(1.1163292512605949e-13), np.float64(-7.088774012231625e-14), np.float64(-3.184119634624949e-13), np.float64(-4.20274925971853e-13), np.float64(-3.4389158187764224e-13), np.float64(-1.2539969063141143e-13), np.float64(1.8285373215576328e-13), np.float64(4.021227795192317e-13), np.float64(4.3598458177029897e-13), np.float64(2.893241202173158e-13), np.float64(1.2145839889399213e-13), np.float64(-1.8535173396116988e-13), np.float64(-3.893552147360424e-13), np.float64(-3.9795944317688736e-13), np.float64(-2.5662805214210493e-13), np.float64(-1.6692203175239229e-13), np.float64(2.449707103835408e-13), np.float64(3.8125058665627876e-13), np.float64(3.9324099532223045e-13), np.float64(2.473021787352536e-13), np.float64(8.093525849517391e-14), np.float64(-2.0694557179012918e-13), np.float64(-3.241851231905457e-13), np.float64(-3.3717473257866004e-13), np.float64(-2.4052981828504016e-13), np.float64(4.091171845743702e-14), np.float64(2.9964919434632975e-13), np.float64(4.0945025148175773e-13), np.float64(3.9535041906901824e-13), np.float64(2.8493873927004643e-13), np.float64(-4.551914400963142e-15), np.float64(-2.5834889783027393e-13), np.float64(-3.4772185131259903e-13), np.float64(-3.241851231905457e-13), np.float64(-2.58792987040124e-13), np.float64(1.3244960683778118e-13), np.float64(3.03146396873899e-13), np.float64(3.852473895449293e-13), np.float64(3.4450220454118607e-13), np.float64(2.212674488077937e-13), np.float64(-1.5670797992584085e-13), np.float64(-2.2504220709151923e-13), np.float64(-3.2807090377673376e-13), np.float64(-2.7605695507304517e-13), np.float64(-1.3061773884714967e-13), np.float64(1.0402789740737717e-13), np.float64(2.2237767183241886e-13), np.float64(2.851052727237402e-13), np.float64(2.3303581286882036e-13), np.float64(8.609779555968089e-14), np.float64(-1.5393242236427795e-13), np.float64(-2.8849145294884693e-13), np.float64(-3.280153926255025e-13), np.float64(-2.702282841937631e-13), np.float64(-2.148281552649678e-14), np.float64(2.4225066397320916e-13), np.float64(3.7259084706420253e-13), np.float64(4.175548795615214e-13), np.float64(3.664291092775329e-13), np.float64(4.884981308350689e-15), np.float64(-1.8074430840897548e-13), np.float64(-3.078648447285559e-13), np.float64(-3.381184221495914e-13), np.float64(-2.5096591471651664e-13), np.float64(2.015054789694659e-14), np.float64(1.9584334154387761e-13), np.float64(3.202438314531264e-13), np.float64(3.6320946250611996e-13), np.float64(2.5618396293225487e-13), np.float64(1.9872992140790302e-14), np.float64(-1.3533618670180658e-13), np.float64(-2.959299472138355e-13), np.float64(-3.1691316237925093e-13), np.float64(-2.1038726316646716e-13), np.float64(5.828670879282072e-15), np.float64(1.7214007996813052e-13), np.float64(3.272382365082649e-13), np.float64(3.3623104300772866e-13), np.float64(2.2176704916887502e-13), np.float64(-5.717648576819556e-15), np.float64(-2.592925874012053e-13), np.float64(-3.9773739857196233e-13), np.float64(-3.751443600208404e-13), np.float64(-1.1213252548714081e-13), np.float64(-2.6645352591003757e-14), np.float64(2.9093394360302227e-13), np.float64(3.6060043839825084e-13), np.float64(3.0042635046356736e-13), np.float64(1.724176357242868e-13), np.float64(2.015054789694659e-14), np.float64(-2.0883295093199195e-13), np.float64(-2.8294033782572114e-13), np.float64(-2.474687121889474e-13), np.float64(-7.932543510946743e-14), np.float64(1.3072876114961218e-13), np.float64(3.1358249330537546e-13), np.float64(3.5044189772293066e-13), np.float64(2.5673907444456745e-13), np.float64(1.3250511798901243e-13), np.float64(-1.0536016503692736e-13), np.float64(-2.7317037520901977e-13), np.float64(-3.0031532816110484e-13), np.float64(-1.5709655798445965e-13), np.float64(-9.120482147295661e-14), np.float64(1.3677947663381929e-13), np.float64(2.954858580039854e-13), np.float64(3.103628465339625e-13), np.float64(2.204902926905561e-13), np.float64(7.09432512735475e-14), np.float64(-2.886579864025407e-13), np.float64(-3.360645095540349e-13), np.float64(-3.568256801145253e-13), np.float64(-2.2565282975506307e-13), np.float64(-8.842926391139372e-14), np.float64(2.1821433549007452e-13), np.float64(2.5501822875639846e-13), np.float64(2.5923707624997405e-13), np.float64(1.7574830479816228e-13), np.float64(-3.22519788653608e-14), np.float64(-2.128297538206425e-13), np.float64(-2.787770014833768e-13), np.float64(-2.484124017598788e-13), np.float64(-1.9556578578772132e-13), np.float64(1.0014211682118912e-13), np.float64(2.2493118478905672e-13), np.float64(3.176348073452573e-13), np.float64(2.737809978725636e-13), np.float64(1.7785772854495008e-13), np.float64(-1.0247358517290195e-13), np.float64(-1.5393242236427795e-13), np.float64(-2.2820634271170093e-13), np.float64(-1.908473379330644e-13), np.float64(-1.3022916078853086e-13), np.float64(1.0985656828665924e-13), np.float64(1.5271117703719028e-13), np.float64(2.2093438190040615e-13), np.float64(1.9206858326015208e-13), np.float64(1.715294573045867e-14), np.float64(-1.7391643680753077e-13), np.float64(-2.680078381445128e-13), np.float64(-3.0059288391726113e-13), np.float64(-2.6267876762631204e-13), np.float64(5.051514762044462e-15), np.float64(1.4288570326925765e-13), np.float64(2.358668815816145e-13), np.float64(2.5768276401549883e-13), np.float64(1.939004512507836e-13), np.float64(-7.494005416219807e-15), np.float64(-1.3722356584366935e-13), np.float64(-2.2859492077031973e-13), np.float64(-2.6123547769429933e-13), np.float64(-1.8141044222375058e-13), np.float64(-6.827871601444713e-15), np.float64(1.071365218763276e-13), np.float64(2.2615243011614439e-13), np.float64(2.3975266216780255e-13), np.float64(1.6131540547803525e-13), np.float64(1.1102230246251565e-16), np.float64(-1.2245759961615477e-13), np.float64(-2.358668815816145e-13), np.float64(-2.4302782009044677e-13), np.float64(-1.5698553568199713e-13), np.float64(6.084022174945858e-14), np.float64(1.7513768213461844e-13), np.float64(2.6501023597802487e-13), np.float64(2.3947510641164627e-13), np.float64(9.953149415764528e-14), np.float64(4.213296378452469e-14), np.float64(-1.8418599978531347e-13), np.float64(-2.7083890685730694e-13), np.float64(-2.466915560717098e-13), np.float64(-7.815970093361102e-14), np.float64(-1.9040324872321435e-14), np.float64(1.9501067427540875e-13), np.float64(2.4091839634365897e-13), np.float64(2.032263246576349e-13), np.float64(6.98885394001536e-14), np.float64(-3.419486915845482e-14), np.float64(-1.729727472365994e-13), np.float64(-2.0650148258027912e-13), np.float64(-1.4410694859634532e-13), np.float64(-5.612177389480166e-14), np.float64(1.1818324097134791e-13), np.float64(2.457478665007784e-13), np.float64(2.655098363391062e-13), np.float64(1.8079981956020674e-13), np.float64(8.215650382226158e-14), np.float64(-9.969802761133906e-14), np.float64(-2.2332136140335024e-13), np.float64(-2.3064883336587627e-13), np.float64(-1.5010215292932116e-13), np.float64(-9.775513731824503e-14), np.float64(1.4616086119190186e-13), np.float64(2.2792878695554464e-13), np.float64(2.4896751327219135e-13), np.float64(1.709743457922741e-13), np.float64(5.573319583618286e-14), np.float64(-1.0458300891968975e-13), np.float64(-1.3367085216486885e-13), np.float64(-1.375566327510569e-13), np.float64(-5.2513549064769904e-14), np.float64(5.3290705182007514e-14), np.float64(1.9123591599168321e-13), np.float64(2.468025783741723e-13), np.float64(2.3686608230377715e-13), np.float64(1.9934054407144686e-13), np.float64(3.9246383920499284e-14), np.float64(-1.0952350137927169e-13), np.float64(-1.630917623174355e-13), np.float64(-1.4011014570769476e-13), np.float64(-7.127631818093505e-14), np.float64(9.29256671611256e-14), np.float64(1.8279822100453202e-13), np.float64(2.515210262288292e-13), np.float64(2.2676305277968822e-13), np.float64(1.7369439220260574e-13), np.float64(8.493206138382448e-15), np.float64(-9.009459844833145e-14), np.float64(-1.7102985694350537e-13), np.float64(-1.5382140006181544e-13), np.float64(-6.827871601444713e-14), np.float64(8.198997036856781e-14), np.float64(1.1940448629843559e-13), np.float64(2.0156099012069717e-13), np.float64(1.795230630818878e-13), np.float64(6.156186671546493e-14), np.float64(-7.571721027943568e-14), np.float64(-1.532107773982716e-13), np.float64(-1.9978463328129692e-13), np.float64(-1.634803403760543e-13), np.float64(-2.7033930649622562e-14), np.float64(7.133182933216631e-14), np.float64(1.9328982858723975e-13), np.float64(2.120525977034049e-13), np.float64(1.7508217098338719e-13), np.float64(-2.070565940925917e-14), np.float64(-6.94999613415348e-14), np.float64(-1.8857138073258284e-13), np.float64(-2.2221113837872508e-13), np.float64(-1.6975310046518644e-13), np.float64(-4.474198789239381e-14), np.float64(4.18554080283684e-14), np.float64(1.758593271006248e-13), np.float64(1.769140389740187e-13), np.float64(9.764411501578252e-14), np.float64(-2.9476421303797906e-14), np.float64(-1.2251311076738602e-13), np.float64(-2.0278223544778484e-13), np.float64(-1.9351187319216478e-13), np.float64(-6.050715484207103e-14), np.float64(3.3584246494910985e-14), np.float64(1.226796442210798e-13), np.float64(1.9184653865522705e-13), np.float64(1.8096635301390052e-13), np.float64(7.277511926417901e-14), np.float64(-1.942890293094024e-14), np.float64(-1.5815126985785355e-13), np.float64(-2.024491685403973e-13), np.float64(-1.7552626019323725e-13), np.float64(-7.965850201685498e-14), np.float64(2.042810365310288e-14), np.float64(1.6892043319671757e-13), np.float64(2.1865842469992458e-13), np.float64(1.9895196601282805e-13), np.float64(1.0480505352461478e-13), np.float64(-6.106226635438361e-16), np.float64(-1.2817524819297432e-13), np.float64(-1.4538370507466425e-13), np.float64(-1.0930145677434666e-13), np.float64(-4.424238753131249e-14), np.float64(9.264811140496931e-14), np.float64(1.9617640845126516e-13), np.float64(2.199351811782435e-13), np.float64(1.5443202272535927e-13), np.float64(1.1457501614131615e-13), np.float64(-6.611378111642807e-14), np.float64(-1.3072876114961218e-13), np.float64(-1.602051824534101e-13), np.float64(-1.1463052729254741e-13), np.float64(-3.6193270602780103e-14), np.float64(1.555977569012157e-13), np.float64(1.8035573035035668e-13), np.float64(1.9806378759312793e-13), np.float64(1.3700152123874432e-13), np.float64(4.657385588302532e-14), np.float64(-7.87148124459236e-14), np.float64(-1.3028467193976212e-13), np.float64(-1.3578027591165664e-13), np.float64(-1.0935696792557792e-13), np.float64(1.63202784619898e-14), np.float64(1.3800072196090696e-13), np.float64(1.9018120411828932e-13), np.float64(1.8912649224489542e-13), np.float64(1.5876189252139739e-13), np.float64(-1.4710455076283324e-14), np.float64(-9.597878047884478e-14), np.float64(-1.6797674362578618e-13), np.float64(-1.6259216195635418e-13), np.float64(-1.241229341530925e-13), np.float64(3.7692071686024065e-14), np.float64(7.260858581048524e-14), np.float64(1.5182299861749016e-13), np.float64(1.3711254354120683e-13), np.float64(6.927791673660977e-14), np.float64(-5.140332604014475e-14), np.float64(-8.365530490550555e-14), np.float64(-1.488809076022335e-13), np.float64(-1.3095080575453721e-13), np.float64(-3.302913498259841e-14), np.float64(7.704947790898586e-14), np.float64(1.3911094498553211e-13), np.float64(1.712519015484304e-13), np.float64(1.5443202272535927e-13), np.float64(1.354472090042691e-14), np.float64(-2.603472992745992e-14), np.float64(-1.2606582444618653e-13), np.float64(-1.6286971771251046e-13), np.float64(-1.2867484855405564e-13), np.float64(-3.419486915845482e-14), np.float64(3.7192471324942744e-15), np.float64(1.3117285035946225e-13), np.float64(1.5315526624704034e-13), np.float64(1.2168044349891716e-13), np.float64(2.8144153674247718e-14), np.float64(-4.113376306236205e-14), np.float64(-1.2567724638756772e-13), np.float64(-1.389999226830696e-13), np.float64(-8.809619700400617e-14), np.float64(3.885780586188048e-16), np.float64(7.166489623955385e-14), np.float64(1.4088730182493236e-13), np.float64(1.463829057968269e-13), np.float64(8.559819519859957e-14), np.float64(2.3703261575747092e-14), np.float64(-8.3322237998118e-14), np.float64(-1.471600619140645e-13), np.float64(-1.4632739464559563e-13), np.float64(-7.349676423018536e-14), np.float64(-4.385380947269368e-15), np.float64(1.0791367799356522e-13), np.float64(1.4971357487070236e-13), np.float64(1.422750806057138e-13), np.float64(7.455147610357926e-14), np.float64(4.030109579389318e-14), np.float64(-1.0696998842263383e-13), np.float64(-1.2473355681663634e-13), np.float64(-1.176836406102666e-13), np.float64(-6.905587213168474e-14), np.float64(-2.4424906541753444e-15), np.float64(8.58202398035246e-14), np.float64(9.731104810839497e-14), np.float64(7.022160630754115e-14), np.float64(2.2870594307278225e-14), np.float64(-4.2743586448068527e-14), np.float64(-1.1901590823981678e-13), np.float64(-1.3805623311213822e-13), np.float64(-1.0241807402167069e-13), np.float64(-4.957145804951324e-14), np.float64(5.795364188543317e-14), np.float64(1.3666845433135677e-13), np.float64(1.5087930904655877e-13), np.float64(1.162403506782539e-13), np.float64(8.670841822322473e-14), np.float64(-5.828670879282072e-14), np.float64(-8.432143872028064e-14), np.float64(-1.145195049900849e-13), np.float64(-8.321121569565548e-14), np.float64(-2.1760371282653068e-14), np.float64(7.166489623955385e-14), np.float64(9.092726571680032e-14), np.float64(1.1179945857975326e-13), np.float64(8.570921750106208e-14), np.float64(2.609024107869118e-14), np.float64(-6.222800053024002e-14), np.float64(-1.0114131754335176e-13), np.float64(-1.0824674490095276e-13), np.float64(-7.710498906021712e-14), np.float64(1.5154544286133387e-14), np.float64(1.0136336214827679e-13), np.float64(1.3500311979441904e-13), np.float64(1.3278267374516872e-13), np.float64(1.1091128016005314e-13), np.float64(-1.9817480989559044e-14), np.float64(-5.029310301551959e-14), np.float64(-1.103006574965093e-13), np.float64(-1.1185496973098452e-13), np.float64(-6.811218256075335e-14), np.float64(1.787459069646502e-14), np.float64(6.822320486321587e-14), np.float64(1.1263212584822213e-13), np.float64(1.0802470029602773e-13), np.float64(6.139533326177116e-14), np.float64(-2.4868995751603507e-14), np.float64(-8.548717289613705e-14), np.float64(-1.3011813848606835e-13), np.float64(-1.2129186544029835e-13), np.float64(-4.4020342926387457e-14), np.float64(4.984901380566953e-14), np.float64(1.0619283230539622e-13), np.float64(1.4593881658697683e-13), np.float64(1.2784218128558678e-13), np.float64(4.035660694512444e-14), np.float64(-2.4980018054066022e-14), np.float64(-1.1335377081422848e-13), np.float64(-1.3283818489639998e-13), np.float64(-1.1041167979897182e-13), np.float64(-3.247402347028583e-14), np.float64(-2.220446049250313e-15), np.float64(8.798517470154366e-14), np.float64(1.3344880755994382e-13), np.float64(1.1562972801471005e-13), np.float64(5.206945985491984e-14), np.float64(-4.440892098500626e-15), np.float64(-8.076872504148014e-14), np.float64(-1.0225154056797692e-13), np.float64(-8.465450562766819e-14), np.float64(-1.815214645262131e-14), np.float64(4.674038933671909e-14), np.float64(1.18849374786123e-13), np.float64(1.2401191185062999e-13), np.float64(7.499556531342932e-14), np.float64(2.3037127760971998e-14), np.float64(-7.105427357601002e-14), np.float64(-1.3272716259393746e-13), np.float64(-1.3550272015550036e-13), np.float64(-9.320322291728189e-14), np.float64(-6.566969190657801e-14), np.float64(5.972999872483342e-14), np.float64(1.0241807402167069e-13), np.float64(1.0691447727140257e-13), np.float64(6.561418075534675e-14), np.float64(3.93574062229618e-14), np.float64(-8.459899447643693e-14), np.float64(-1.0313971898767704e-13), np.float64(-1.1085576900882188e-13), np.float64(-6.816769371198461e-14), np.float64(-6.827871601444713e-15), np.float64(7.444045380111675e-14), np.float64(8.848477506262498e-14), np.float64(8.471001677889944e-14), np.float64(5.268008251846368e-14), np.float64(-2.930988785010413e-14), np.float64(-1.0030865027488289e-13), np.float64(-1.2195799925507345e-13), np.float64(-1.1068923555512811e-13), np.float64(-8.931744233109384e-14), np.float64(2.5479618415147343e-14), np.float64(7.405187574249794e-14), np.float64(9.792167077193881e-14), np.float64(8.465450562766819e-14), np.float64(6.433742427702782e-14), np.float64(-5.2735593669694936e-14), np.float64(-7.416289804496046e-14), np.float64(-1.109667913112844e-13), np.float64(-9.692247004977617e-14), np.float64(-5.007105841059456e-14), np.float64(2.8699265186560297e-14), np.float64(4.835021272242557e-14), np.float64(8.815170815523743e-14), np.float64(7.87148124459236e-14), np.float64(1.3711254354120683e-14), np.float64(-3.7192471324942744e-14), np.float64(-9.664491429361988e-14), np.float64(-1.1235457009206584e-13), np.float64(-9.980904991380157e-14), np.float64(2.831068712794149e-15), np.float64(5.617728504603292e-14), np.float64(1.1651790643441018e-13), np.float64(1.199040866595169e-13), np.float64(9.231504449758177e-14), np.float64(-1.887379141862766e-14), np.float64(-1.7430501486614958e-14), np.float64(-9.947598300641403e-14), np.float64(-1.1085576900882188e-13), np.float64(-8.043565813409259e-14), np.float64(-8.93729534823251e-15), np.float64(3.902433931557425e-14), np.float64(8.848477506262498e-14), np.float64(9.225953334635051e-14), np.float64(5.995204332975845e-14), np.float64(-3.091971123581061e-14), np.float64(-5.3290705182007514e-14), np.float64(-9.409140133698202e-14), np.float64(-9.248157795127554e-14), np.float64(-3.963496197911809e-14), np.float64(9.603429163007604e-15), np.float64(8.498757253505573e-14), np.float64(1.2762013668066174e-13), np.float64(1.192379528447418e-13), np.float64(3.824718319833664e-14), np.float64(1.2156942119645464e-14), np.float64(-8.548717289613705e-14), np.float64(-1.0730305533002138e-13), np.float64(-8.720801858430605e-14), np.float64(-4.796163466380676e-14), np.float64(-1.0547118733938987e-15), np.float64(9.209299989265674e-14), np.float64(9.936496070395151e-14), np.float64(7.904787935331115e-14), np.float64(2.270406085358445e-14), np.float64(-3.141931159689193e-14), np.float64(-8.826273045769994e-14), np.float64(-9.958700530887654e-14), np.float64(-6.533662499919046e-14), np.float64(-2.248201624865942e-14), np.float64(3.2807090377673376e-14), np.float64(9.575673587391975e-14), np.float64(9.814371537686384e-14), np.float64(6.766809335090329e-14), np.float64(4.618527782440651e-14), np.float64(-5.917488721252084e-14), np.float64(-1.1679546219056647e-13), np.float64(-1.2212453270876722e-13), np.float64(-9.031664305325648e-14), np.float64(-4.796163466380676e-14), np.float64(2.958744360626042e-14), np.float64(6.411537967210279e-14), np.float64(7.177591854201637e-14), np.float64(4.418687638008123e-14), np.float64(-6.661338147750939e-16), np.float64(-6.533662499919046e-14), np.float64(-7.860379014346108e-14), np.float64(-8.165690346118026e-14), np.float64(-5.645484080218921e-14), np.float64(-1.0325074129013956e-14), np.float64(5.4012350148013866e-14), np.float64(7.877032359715486e-14), np.float64(7.654987754790454e-14), np.float64(6.200595592531499e-14), np.float64(-7.549516567451064e-15), np.float64(-7.416289804496046e-14), np.float64(-9.875433804040767e-14), np.float64(-9.720002580593246e-14), np.float64(-6.139533326177116e-14), np.float64(5.0182080713057076e-14), np.float64(7.216449660063518e-14), np.float64(1.2040368702059823e-13), np.float64(1.0852430065710905e-13), np.float64(6.666889262874065e-14), np.float64(-5.995204332975845e-15), np.float64(-2.5146551507759796e-14), np.float64(-6.88338275267597e-14), np.float64(-6.328271240363392e-14), np.float64(-2.8199664825478976e-14), np.float64(5.684341886080802e-14), np.float64(9.54236689665322e-14), np.float64(1.2218004385999848e-13), np.float64(1.1018963519404679e-13), np.float64(4.951594689828198e-14), np.float64(-1.915134717478395e-14), np.float64(-5.895284260759581e-14), np.float64(-8.076872504148014e-14), np.float64(-7.166489623955385e-14), np.float64(6.2727600891321345e-15), np.float64(2.9254376698872875e-14), np.float64(8.681944052568724e-14), np.float64(1.0835776720341528e-13), np.float64(8.715250743307479e-14), np.float64(3.064215547965432e-14), np.float64(-1.2490009027033011e-14), np.float64(-6.561418075534675e-14), np.float64(-7.66053886991358e-14), np.float64(-5.689893001203927e-14), np.float64(1.2490009027033011e-14), np.float64(3.325117958752344e-14), np.float64(7.66053886991358e-14), np.float64(8.221201497349284e-14), np.float64(4.729550084903167e-14), np.float64(9.658940314238862e-15), np.float64(-5.839773109528323e-14), np.float64(-8.587575095475586e-14), np.float64(-8.859579736508749e-14), np.float64(-3.4916514124461173e-14), np.float64(-1.4765966227514582e-14), np.float64(5.184741524999481e-14), np.float64(9.209299989265674e-14), np.float64(9.031664305325648e-14), np.float64(5.551115123125783e-14), np.float64(1.7819079545233762e-14), np.float64(-6.394884621840902e-14), np.float64(-7.388534228880417e-14), np.float64(-7.011058400507864e-14), np.float64(-3.3084646133829665e-14), np.float64(-1.1657341758564144e-14), np.float64(6.111777750561487e-14), np.float64(6.827871601444713e-14), np.float64(5.4067861299245124e-14), np.float64(2.5091040356528538e-14), np.float64(-1.687538997430238e-14), np.float64(-6.777911565336581e-14)]}
marginals OT 1: [0.11874817 0.11664081 0.11874817 0.11664081 0.11874817 0.11664081
0.11874817 0.11664081] [0.07780397 0.07780397 0.07780397 0.07964714 0.07793787 0.07964714
0.07964714 0.07793787 0.07793787 0.07964714 0.07780397 0.07793787]
marginals OT 2: [0.05739964 0.06007011 0.05858539 0.05593689 0.05739964 0.06007011
0.05858539 0.05593689 0.05739964 0.06007011 0.05858539 0.05593689
0.05739964 0.06007011 0.05858539 0.05593689] [0.07520683 0.07520683 0.07520683 0.07772843 0.07905677 0.07772843
0.07772843 0.07905677 0.07905677 0.07772843 0.07520683 0.07905677]
Plot distributions and plans for unbalanced OT barycenter solvers
plot_list_res(
lst_unbalanced_res,
lst_unbalanced_solvers,
fig_num=3,
n_cols=3,
show_masses=True,
fig_width=12,
fig_height=8.5,
show_legend=False,
)

Total running time of the script: (0 minutes 13.487 seconds)