Skip to content

Hw/fix formula handling#372

Merged
hexaeder merged 3 commits into
mainfrom
hw/fix_formula_handling
Jul 5, 2026
Merged

Hw/fix formula handling#372
hexaeder merged 3 commits into
mainfrom
hw/fix_formula_handling

Conversation

@hexaeder

Copy link
Copy Markdown
Member

No description provided.

@github-actions

Copy link
Copy Markdown
Contributor
Benchmark Results
┌──────────────────────────────────────────────┬────────┬────────────┬────────────┬────────────┬─────────┬──────────┬────────────┐
│ Key                                          │        │ Time       │            │            │ Allocs  │          │            │
│                                              │        │ target     │ baseline   │            │ target  │ baseline │            │
├──────────────────────────────────────────────┼────────┼────────────┼────────────┼────────────┼─────────┼──────────┼────────────┤
│ diffusion_static_edge → assemble             │    100 │ 605.634 μs │ 591.633 μs │  +2.4 % ➖ │    2875 │     2875 │  +0.0 % ➖ │
│                                              │    300 │   4.991 ms │   4.958 ms │  +0.7 % ➖ │   23085 │    23085 │  +0.0 % ➖ │
│                                              │   1000 │  96.442 ms │  97.993 ms │  -1.6 % ➖ │  251290 │   251290 │  +0.0 % ➖ │
│                                              │   3000 │    1.185 s │    1.206 s │  -1.7 % ➖ │ 2253290 │  2253290 │  +0.0 % ➖ │
│ diffusion_static_edge → seq → seq            │    100 │  12.939 μs │  12.869 μs │  +0.5 % ➖ │         │          │  +0.0 % ➖ │
│                                              │    300 │ 132.956 μs │ 132.545 μs │  +0.3 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   1000 │   1.557 ms │   1.558 ms │  -0.0 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   3000 │  15.319 ms │  15.212 ms │  +0.7 % ➖ │         │          │  +0.0 % ➖ │
│ diffusion_static_edge → ka → seq             │    100 │  20.761 μs │  20.631 μs │  +0.6 % ➖ │      61 │       61 │  +0.0 % ➖ │
│                                              │    300 │ 145.675 μs │ 145.384 μs │  +0.2 % ➖ │     143 │      143 │  +0.0 % ➖ │
│                                              │   1000 │   1.397 ms │   1.399 ms │  -0.1 % ➖ │    1037 │     1037 │  +0.0 % ➖ │
│                                              │   3000 │  14.060 ms │  14.158 ms │  -0.7 % ➖ │    8911 │     8911 │  +0.0 % ➖ │
│ diffusion_static_edge → poly → seq           │    100 │  13.110 μs │  13.250 μs │  -1.1 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │    300 │ 117.344 μs │ 117.103 μs │  +0.2 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │   1000 │   1.363 ms │   1.363 ms │  +0.0 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │   3000 │  13.839 ms │  13.666 ms │  +1.3 % ➖ │       3 │        3 │  +0.0 % ➖ │
│ diffusion_static_edge → thrd → seq           │    100 │  21.112 μs │  21.522 μs │  -1.9 % ➖ │      66 │       66 │  +0.0 % ➖ │
│                                              │    300 │ 137.413 μs │ 141.509 μs │  -2.9 % ➖ │      66 │       66 │  +0.0 % ➖ │
│                                              │   1000 │   1.426 ms │   1.421 ms │  +0.3 % ➖ │      66 │       66 │  +0.0 % ➖ │
│                                              │   3000 │  13.507 ms │  13.526 ms │  -0.1 % ➖ │      66 │       66 │  +0.0 % ➖ │
│ diffusion_static_edge → seq_buf → seq        │    100 │  15.473 μs │  15.323 μs │  +1.0 % ➖ │         │          │  +0.0 % ➖ │
│                                              │    300 │ 153.727 μs │ 153.347 μs │  +0.2 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   1000 │   1.782 ms │   1.780 ms │  +0.1 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   3000 │  17.494 ms │  17.382 ms │  +0.6 % ➖ │         │          │  +0.0 % ➖ │
│ diffusion_static_edge → ka_buf → seq         │    100 │  25.267 μs │  25.668 μs │  -1.6 % ➖ │      61 │       61 │  +0.0 % ➖ │
│                                              │    300 │ 184.002 μs │ 186.025 μs │  -1.1 % ➖ │     143 │      143 │  +0.0 % ➖ │
│                                              │   1000 │   1.798 ms │   1.797 ms │  +0.1 % ➖ │    1037 │     1037 │  +0.0 % ➖ │
│                                              │   3000 │  17.639 ms │  17.417 ms │  +1.3 % ➖ │    8911 │     8911 │  +0.0 % ➖ │
│ diffusion_static_edge → poly_buf → seq       │    100 │  19.148 μs │  18.718 μs │  +2.3 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │    300 │ 169.089 μs │ 167.977 μs │  +0.7 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │   1000 │   1.882 ms │   1.856 ms │  +1.4 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │   3000 │  18.140 ms │  18.043 ms │  +0.5 % ➖ │       3 │        3 │  +0.0 % ➖ │
│ diffusion_static_edge → poly_buf → ka        │    100 │ 152.145 μs │ 152.646 μs │  -0.3 % ➖ │      38 │       38 │  +0.0 % ➖ │
│                                              │    300 │ 369.545 μs │ 403.835 μs │  -8.5 % ✅ │      38 │       38 │  +0.0 % ➖ │
│                                              │   1000 │   3.555 ms │   3.227 ms │ +10.1 % ❌ │      38 │       38 │  +0.0 % ➖ │
│                                              │   3000 │  31.923 ms │  31.979 ms │  -0.2 % ➖ │      38 │       38 │  +0.0 % ➖ │
│ diffusion_static_edge → poly_buf → poly      │    100 │  14.231 μs │  14.111 μs │  +0.9 % ➖ │       6 │        6 │  +0.0 % ➖ │
│                                              │    300 │ 118.094 μs │ 105.215 μs │ +12.2 % ❌ │       6 │        6 │  +0.0 % ➖ │
│                                              │   1000 │   1.136 ms │   1.175 ms │  -3.4 % ➖ │       6 │        6 │  +0.0 % ➖ │
│                                              │   3000 │  10.405 ms │  10.940 ms │  -4.9 % ➖ │       6 │        6 │  +0.0 % ➖ │
│ diffusion_static_edge → poly_buf → thrd      │    100 │ 130.723 μs │ 133.127 μs │  -1.8 % ➖ │      25 │       25 │  +0.0 % ➖ │
│                                              │    300 │ 268.086 μs │ 259.793 μs │  +3.2 % ➖ │      25 │       25 │  +0.0 % ➖ │
│                                              │   1000 │   1.547 ms │   1.692 ms │  -8.6 % ✅ │      25 │       25 │  +0.0 % ➖ │
│                                              │   3000 │  14.805 ms │  15.516 ms │  -4.6 % ➖ │      25 │       25 │  +0.0 % ➖ │
│ diffusion_static_edge → poly_buf → sprs      │    100 │  25.838 μs │  25.708 μs │  +0.5 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │    300 │ 216.298 μs │ 211.652 μs │  +2.2 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │   1000 │   2.409 ms │   2.422 ms │  -0.5 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │   3000 │  23.263 ms │  23.186 ms │  +0.3 % ➖ │       3 │        3 │  +0.0 % ➖ │
│ diffusion_static_edge → thrd_buf → seq       │    100 │  28.072 μs │  28.062 μs │  +0.0 % ➖ │      66 │       66 │  +0.0 % ➖ │
│                                              │    300 │ 180.426 μs │ 194.046 μs │  -7.0 % ✅ │      66 │       66 │  +0.0 % ➖ │
│                                              │   1000 │   1.880 ms │   1.862 ms │  +1.0 % ➖ │      66 │       66 │  +0.0 % ➖ │
│                                              │   3000 │  17.057 ms │  16.969 ms │  +0.5 % ➖ │      66 │       66 │  +0.0 % ➖ │
│ diffusion_ode_edge → assemble                │    100 │ 586.666 μs │ 585.845 μs │  +0.1 % ➖ │    2884 │     2884 │  +0.0 % ➖ │
│                                              │    300 │   4.910 ms │   5.072 ms │  -3.2 % ➖ │   23093 │    23093 │  +0.0 % ➖ │
│                                              │   1000 │  86.852 ms │  62.420 ms │ +39.1 % ❌ │  251296 │   251296 │  +0.0 % ➖ │
│                                              │   3000 │    1.190 s │    1.073 s │ +10.9 % ❌ │ 2253296 │  2253296 │  +0.0 % ➖ │
│ diffusion_ode_edge → seq → seq               │    100 │  41.301 μs │  41.942 μs │  -1.5 % ➖ │         │          │  +0.0 % ➖ │
│                                              │    300 │ 394.202 μs │ 404.436 μs │  -2.5 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   1000 │   4.535 ms │   4.557 ms │  -0.5 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   3000 │  41.934 ms │  42.017 ms │  -0.2 % ➖ │         │          │  +0.0 % ➖ │
│ diffusion_ode_edge → ka → seq                │    100 │  56.413 μs │  57.225 μs │  -1.4 % ➖ │     100 │      100 │  +0.0 % ➖ │
│                                              │    300 │ 324.600 μs │ 325.310 μs │  -0.2 % ➖ │     245 │      245 │  +0.0 % ➖ │
│                                              │   1000 │   3.063 ms │   3.062 ms │  +0.0 % ➖ │    1808 │     1808 │  +0.0 % ➖ │
│                                              │   3000 │  28.230 ms │  28.160 ms │  +0.2 % ➖ │   15541 │    15541 │  +0.0 % ➖ │
│ diffusion_ode_edge → poly → seq              │    100 │  29.223 μs │  29.002 μs │  +0.8 % ➖ │       4 │        4 │  +0.0 % ➖ │
│                                              │    300 │ 259.313 μs │ 258.692 μs │  +0.2 % ➖ │       4 │        4 │  +0.0 % ➖ │
│                                              │   1000 │   2.961 ms │   2.967 ms │  -0.2 % ➖ │       4 │        4 │  +0.0 % ➖ │
│                                              │   3000 │  28.147 ms │  28.060 ms │  +0.3 % ➖ │       4 │        4 │  +0.0 % ➖ │
│ diffusion_ode_edge → thrd → seq              │    100 │  51.526 μs │  52.388 μs │  -1.6 % ➖ │      88 │       88 │  +0.0 % ➖ │
│                                              │    300 │ 380.926 μs │ 368.955 μs │  +3.2 % ➖ │      88 │       88 │  +0.0 % ➖ │
│                                              │   1000 │   3.156 ms │   3.186 ms │  -0.9 % ➖ │      88 │       88 │  +0.0 % ➖ │
│                                              │   3000 │  27.979 ms │  27.627 ms │  +1.3 % ➖ │      88 │       88 │  +0.0 % ➖ │
│ diffusion_ode_edge → seq_buf → seq           │    100 │  41.862 μs │  42.392 μs │  -1.3 % ➖ │         │          │  +0.0 % ➖ │
│                                              │    300 │ 396.639 μs │ 395.293 μs │  +0.3 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   1000 │   4.546 ms │   4.555 ms │  -0.2 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   3000 │  42.718 ms │  42.100 ms │  +1.5 % ➖ │         │          │  +0.0 % ➖ │
│ diffusion_ode_edge → ka_buf → seq            │    100 │  59.588 μs │  60.519 μs │  -1.5 % ➖ │     100 │      100 │  +0.0 % ➖ │
│                                              │    300 │ 373.291 μs │ 372.059 μs │  +0.3 % ➖ │     245 │      245 │  +0.0 % ➖ │
│                                              │   1000 │   3.423 ms │   3.429 ms │  -0.2 % ➖ │    1808 │     1808 │  +0.0 % ➖ │
│                                              │   3000 │  30.858 ms │  31.146 ms │  -0.9 % ➖ │   15541 │    15541 │  +0.0 % ➖ │
│ diffusion_ode_edge → poly_buf → seq          │    100 │  33.419 μs │  33.580 μs │  -0.5 % ➖ │       4 │        4 │  +0.0 % ➖ │
│                                              │    300 │ 294.615 μs │ 298.159 μs │  -1.2 % ➖ │       4 │        4 │  +0.0 % ➖ │
│                                              │   1000 │   3.324 ms │   3.350 ms │  -0.8 % ➖ │       4 │        4 │  +0.0 % ➖ │
│                                              │   3000 │  31.653 ms │  31.674 ms │  -0.1 % ➖ │       4 │        4 │  +0.0 % ➖ │
│ diffusion_ode_edge → poly_buf → ka           │    100 │ 167.928 μs │ 155.219 μs │  +8.2 % ❌ │      39 │       39 │  +0.0 % ➖ │
│                                              │    300 │ 662.508 μs │ 495.481 μs │ +33.7 % ❌ │      39 │       39 │  +0.0 % ➖ │
│                                              │   1000 │   4.018 ms │   4.787 ms │ -16.1 % ✅ │      39 │       39 │  +0.0 % ➖ │
│                                              │   3000 │  42.987 ms │  43.987 ms │  -2.3 % ➖ │      39 │       39 │  +0.0 % ➖ │
│ diffusion_ode_edge → poly_buf → poly         │    100 │  29.143 μs │  31.346 μs │  -7.0 % ✅ │       7 │        7 │  +0.0 % ➖ │
│                                              │    300 │ 242.979 μs │ 255.287 μs │  -4.8 % ➖ │       7 │        7 │  +0.0 % ➖ │
│                                              │   1000 │   2.595 ms │   2.677 ms │  -3.0 % ➖ │       7 │        7 │  +0.0 % ➖ │
│                                              │   3000 │  24.731 ms │  24.718 ms │  +0.1 % ➖ │       7 │        7 │  +0.0 % ➖ │
│ diffusion_ode_edge → poly_buf → thrd         │    100 │ 240.255 μs │ 148.259 μs │ +62.1 % ❌ │      26 │       26 │  +0.0 % ➖ │
│                                              │    300 │ 598.323 μs │ 392.329 μs │ +52.5 % ❌ │      26 │       26 │  +0.0 % ➖ │
│                                              │   1000 │   3.099 ms │   3.248 ms │  -4.6 % ➖ │      26 │       26 │  +0.0 % ➖ │
│                                              │   3000 │  28.334 ms │  29.423 ms │  -3.7 % ➖ │      26 │       26 │  +0.0 % ➖ │
│ diffusion_ode_edge → poly_buf → sprs         │    100 │  40.350 μs │  40.590 μs │  -0.6 % ➖ │       4 │        4 │  +0.0 % ➖ │
│                                              │    300 │ 343.637 μs │ 341.504 μs │  +0.6 % ➖ │       4 │        4 │  +0.0 % ➖ │
│                                              │   1000 │   3.894 ms │   3.978 ms │  -2.1 % ➖ │       4 │        4 │  +0.0 % ➖ │
│                                              │   3000 │  36.602 ms │  36.524 ms │  +0.2 % ➖ │       4 │        4 │  +0.0 % ➖ │
│ diffusion_ode_edge → thrd_buf → seq          │    100 │  56.473 μs │  55.963 μs │  +0.9 % ➖ │      88 │       88 │  +0.0 % ➖ │
│                                              │    300 │ 423.425 μs │ 422.874 μs │  +0.1 % ➖ │      88 │       88 │  +0.0 % ➖ │
│                                              │   1000 │   3.541 ms │   3.547 ms │  -0.2 % ➖ │      88 │       88 │  +0.0 % ➖ │
│                                              │   3000 │  30.730 ms │  30.785 ms │  -0.2 % ➖ │      88 │       88 │  +0.0 % ➖ │
│ kuramoto_homogeneous → assemble              │    100 │  72.968 μs │  71.055 μs │  +2.7 % ➖ │     465 │      465 │  +0.0 % ➖ │
│                                              │   1000 │ 782.505 μs │ 783.426 μs │  -0.1 % ➖ │    2294 │     2294 │  +0.0 % ➖ │
│                                              │  10000 │   5.190 ms │   5.236 ms │  -0.9 % ➖ │   20294 │    20294 │  +0.0 % ➖ │
│                                              │ 100000 │  48.152 ms │  46.462 ms │  +3.6 % ➖ │  200294 │   200294 │  +0.0 % ➖ │
│ kuramoto_homogeneous → seq → seq             │    100 │   1.064 μs │   1.066 μs │  -0.2 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   1000 │  10.596 μs │  10.446 μs │  +1.4 % ➖ │         │          │  +0.0 % ➖ │
│                                              │  10000 │ 111.915 μs │ 109.682 μs │  +2.0 % ➖ │         │          │  +0.0 % ➖ │
│                                              │ 100000 │   1.415 ms │   1.378 ms │  +2.7 % ➖ │         │          │  +0.0 % ➖ │
│ kuramoto_homogeneous → ka → seq              │    100 │   2.794 μs │   2.783 μs │  +0.4 % ➖ │      28 │       28 │  +0.0 % ➖ │
│                                              │   1000 │  12.348 μs │  12.259 μs │  +0.7 % ➖ │      31 │       31 │  +0.0 % ➖ │
│                                              │  10000 │ 165.784 μs │ 163.281 μs │  +1.5 % ➖ │     220 │      220 │  +0.0 % ➖ │
│                                              │ 100000 │   1.138 ms │   1.175 ms │  -3.2 % ➖ │    1188 │     1188 │  +0.0 % ➖ │
│ kuramoto_homogeneous → poly → seq            │    100 │   2.182 μs │   2.160 μs │  +1.0 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │   1000 │  11.983 μs │  12.198 μs │  -1.8 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │  10000 │ 105.075 μs │ 102.391 μs │  +2.6 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │ 100000 │   1.103 ms │   1.100 ms │  +0.3 % ➖ │       3 │        3 │  +0.0 % ➖ │
│ kuramoto_homogeneous → thrd → seq            │    100 │  10.285 μs │  10.105 μs │  +1.8 % ➖ │      66 │       66 │  +0.0 % ➖ │
│                                              │   1000 │  22.503 μs │  24.065 μs │  -6.5 % ✅ │      66 │       66 │  +0.0 % ➖ │
│                                              │  10000 │ 141.990 μs │ 135.179 μs │  +5.0 % ❌ │      66 │       66 │  +0.0 % ➖ │
│                                              │ 100000 │   1.107 ms │   1.143 ms │  -3.1 % ➖ │      66 │       66 │  +0.0 % ➖ │
│ kuramoto_homogeneous → seq_buf → seq         │    100 │   1.105 μs │   1.259 μs │ -12.2 % ✅ │         │          │  +0.0 % ➖ │
│                                              │   1000 │  11.192 μs │  10.876 μs │  +2.9 % ➖ │         │          │  +0.0 % ➖ │
│                                              │  10000 │ 110.403 μs │ 111.495 μs │  -1.0 % ➖ │         │          │  +0.0 % ➖ │
│                                              │ 100000 │   1.326 ms │   1.311 ms │  +1.2 % ➖ │         │          │  +0.0 % ➖ │
│ kuramoto_homogeneous → ka_buf → seq          │    100 │   2.863 μs │   2.910 μs │  -1.6 % ➖ │      28 │       28 │  +0.0 % ➖ │
│                                              │   1000 │  12.824 μs │  12.899 μs │  -0.6 % ➖ │      31 │       31 │  +0.0 % ➖ │
│                                              │  10000 │ 170.631 μs │ 172.785 μs │  -1.2 % ➖ │     220 │      220 │  +0.0 % ➖ │
│                                              │ 100000 │   1.302 ms │   1.302 ms │  -0.0 % ➖ │    1188 │     1188 │  +0.0 % ➖ │
│ kuramoto_homogeneous → poly_buf → seq        │    100 │   2.235 μs │   2.240 μs │  -0.2 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │   1000 │  12.589 μs │  13.075 μs │  -3.7 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │  10000 │ 115.321 μs │ 116.232 μs │  -0.8 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │ 100000 │   1.240 ms │   1.252 ms │  -1.0 % ➖ │       3 │        3 │  +0.0 % ➖ │
│ kuramoto_homogeneous → poly_buf → ka         │    100 │   2.972 μs │   2.949 μs │  +0.8 % ➖ │       7 │        7 │  +0.0 % ➖ │
│                                              │   1000 │ 146.466 μs │ 137.022 μs │  +6.9 % ❌ │      27 │       27 │  +0.0 % ➖ │
│                                              │  10000 │ 296.267 μs │ 299.501 μs │  -1.1 % ➖ │      38 │       38 │  +0.0 % ➖ │
│                                              │ 100000 │   2.044 ms │   2.053 ms │  -0.5 % ➖ │      38 │       38 │  +0.0 % ➖ │
│ kuramoto_homogeneous → poly_buf → poly       │    100 │   3.085 μs │   3.093 μs │  -0.3 % ➖ │       6 │        6 │  +0.0 % ➖ │
│                                              │   1000 │  14.771 μs │  14.732 μs │  +0.3 % ➖ │       6 │        6 │  +0.0 % ➖ │
│                                              │  10000 │ 141.879 μs │ 147.137 μs │  -3.6 % ➖ │       6 │        6 │  +0.0 % ➖ │
│                                              │ 100000 │   1.835 ms │   2.075 ms │ -11.6 % ✅ │       6 │        6 │  +0.0 % ➖ │
│ kuramoto_homogeneous → poly_buf → thrd       │    100 │ 117.233 μs │ 173.897 μs │ -32.6 % ✅ │      25 │       25 │  +0.0 % ➖ │
│                                              │   1000 │ 129.651 μs │ 130.623 μs │  -0.7 % ➖ │      25 │       25 │  +0.0 % ➖ │
│                                              │  10000 │ 272.823 μs │ 272.712 μs │  +0.0 % ➖ │      25 │       25 │  +0.0 % ➖ │
│                                              │ 100000 │   2.831 ms │   3.385 ms │ -16.4 % ✅ │      25 │       25 │  +0.0 % ➖ │
│ kuramoto_homogeneous → poly_buf → sprs       │    100 │   2.774 μs │   2.763 μs │  +0.4 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │   1000 │  17.256 μs │  17.355 μs │  -0.6 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │  10000 │ 164.843 μs │ 165.464 μs │  -0.4 % ➖ │       3 │        3 │  +0.0 % ➖ │
│                                              │ 100000 │   1.785 ms │   1.779 ms │  +0.3 % ➖ │       3 │        3 │  +0.0 % ➖ │
│ kuramoto_homogeneous → thrd_buf → seq        │    100 │  10.345 μs │  10.416 μs │  -0.7 % ➖ │      66 │       66 │  +0.0 % ➖ │
│                                              │   1000 │  24.276 μs │  24.546 μs │  -1.1 % ➖ │      66 │       66 │  +0.0 % ➖ │
│                                              │  10000 │ 144.123 μs │ 149.771 μs │  -3.8 % ➖ │      66 │       66 │  +0.0 % ➖ │
│                                              │ 100000 │   1.233 ms │   1.252 ms │  -1.5 % ➖ │      66 │       66 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → assemble            │    100 │ 152.926 μs │ 178.704 μs │ -14.4 % ✅ │     934 │      934 │  +0.0 % ➖ │
│                                              │   1000 │   1.442 ms │   1.504 ms │  -4.1 % ➖ │    6381 │     6381 │  +0.0 % ➖ │
│                                              │  10000 │  14.123 ms │  14.099 ms │  +0.2 % ➖ │   60410 │    60410 │  +0.0 % ➖ │
│                                              │ 100000 │ 122.421 ms │ 122.348 ms │  +0.1 % ➖ │  600435 │   600435 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → seq → seq           │    100 │   1.063 μs │   1.062 μs │  +0.1 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   1000 │  10.180 μs │  10.220 μs │  -0.4 % ➖ │         │          │  +0.0 % ➖ │
│                                              │  10000 │ 107.178 μs │ 107.088 μs │  +0.1 % ➖ │         │          │  +0.0 % ➖ │
│                                              │ 100000 │   1.337 ms │   1.349 ms │  -0.9 % ➖ │         │          │  +0.0 % ➖ │
│ kuramoto_heterogeneous → ka → seq            │    100 │   3.977 μs │   4.006 μs │  -0.7 % ➖ │      46 │       46 │  +0.0 % ➖ │
│                                              │   1000 │  13.305 μs │  13.265 μs │  +0.3 % ➖ │      47 │       47 │  +0.0 % ➖ │
│                                              │  10000 │ 195.778 μs │ 196.951 μs │  -0.6 % ➖ │     293 │      293 │  +0.0 % ➖ │
│                                              │ 100000 │   1.278 ms │   1.183 ms │  +8.1 % ❌ │    1261 │     1261 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → poly → seq          │    100 │   2.791 μs │   2.904 μs │  -3.9 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │   1000 │  12.869 μs │  12.344 μs │  +4.3 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │  10000 │ 110.223 μs │ 107.168 μs │  +2.9 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │ 100000 │   1.082 ms │   1.107 ms │  -2.3 % ➖ │       5 │        5 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → thrd → seq          │    100 │  18.898 μs │  18.287 μs │  +3.3 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │   1000 │  33.389 μs │  32.397 μs │  +3.1 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │  10000 │ 149.290 μs │ 150.743 μs │  -1.0 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │ 100000 │   1.158 ms │   1.125 ms │  +3.0 % ➖ │     110 │      110 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → seq_buf → seq       │    100 │   1.106 μs │   1.102 μs │  +0.4 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   1000 │  10.651 μs │  10.585 μs │  +0.6 % ➖ │         │          │  +0.0 % ➖ │
│                                              │  10000 │ 108.160 μs │ 107.148 μs │  +0.9 % ➖ │         │          │  +0.0 % ➖ │
│                                              │ 100000 │   1.306 ms │   1.280 ms │  +2.1 % ➖ │         │          │  +0.0 % ➖ │
│ kuramoto_heterogeneous → ka_buf → seq        │    100 │   4.032 μs │   4.029 μs │  +0.1 % ➖ │      46 │       46 │  +0.0 % ➖ │
│                                              │   1000 │  13.750 μs │  13.665 μs │  +0.6 % ➖ │      47 │       47 │  +0.0 % ➖ │
│                                              │  10000 │ 201.297 μs │ 206.585 μs │  -2.6 % ➖ │     293 │      293 │  +0.0 % ➖ │
│                                              │ 100000 │   1.388 ms │   1.364 ms │  +1.8 % ➖ │    1261 │     1261 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → poly_buf → seq      │    100 │   2.890 μs │   2.781 μs │  +3.9 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │   1000 │  13.755 μs │  13.635 μs │  +0.9 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │  10000 │ 119.226 μs │ 116.912 μs │  +2.0 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │ 100000 │   1.294 ms │   1.251 ms │  +3.5 % ➖ │       5 │        5 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → poly_buf → ka       │    100 │   3.671 μs │   3.740 μs │  -1.8 % ➖ │       9 │        9 │  +0.0 % ➖ │
│                                              │   1000 │ 138.784 μs │ 139.055 μs │  -0.2 % ➖ │      29 │       29 │  +0.0 % ➖ │
│                                              │  10000 │ 308.665 μs │ 297.880 μs │  +3.6 % ➖ │      40 │       40 │  +0.0 % ➖ │
│                                              │ 100000 │   1.917 ms │   1.889 ms │  +1.5 % ➖ │      40 │       40 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → poly_buf → poly     │    100 │   3.781 μs │   3.681 μs │  +2.7 % ➖ │       8 │        8 │  +0.0 % ➖ │
│                                              │   1000 │  16.304 μs │  16.995 μs │  -4.1 % ➖ │       8 │        8 │  +0.0 % ➖ │
│                                              │  10000 │ 150.753 μs │ 141.378 μs │  +6.6 % ❌ │       8 │        8 │  +0.0 % ➖ │
│                                              │ 100000 │   1.876 ms │   1.832 ms │  +2.4 % ➖ │       8 │        8 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → poly_buf → thrd     │    100 │ 118.214 μs │ 118.355 μs │  -0.1 % ➖ │      27 │       27 │  +0.0 % ➖ │
│                                              │   1000 │ 131.344 μs │ 131.424 μs │  -0.1 % ➖ │      27 │       27 │  +0.0 % ➖ │
│                                              │  10000 │ 273.473 μs │ 309.377 μs │ -11.6 % ✅ │      27 │       27 │  +0.0 % ➖ │
│                                              │ 100000 │   2.863 ms │   2.503 ms │ +14.4 % ❌ │      27 │       27 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → poly_buf → sprs     │    100 │   3.356 μs │   3.468 μs │  -3.2 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │   1000 │  18.448 μs │  18.688 μs │  -1.3 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │  10000 │ 168.018 μs │ 165.574 μs │  +1.5 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │ 100000 │   1.805 ms │   1.784 ms │  +1.2 % ➖ │       5 │        5 │  +0.0 % ➖ │
│ kuramoto_heterogeneous → thrd_buf → seq      │    100 │  18.988 μs │  17.816 μs │  +6.6 % ❌ │     110 │      110 │  +0.0 % ➖ │
│                                              │   1000 │  33.419 μs │  33.599 μs │  -0.5 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │  10000 │ 157.201 μs │ 154.649 μs │  +1.7 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │ 100000 │   1.280 ms │   1.266 ms │  +1.1 % ➖ │     110 │      110 │  +0.0 % ➖ │
│ powergrid → assemble                         │    100 │ 261.516 μs │ 264.500 μs │  -1.1 % ➖ │    1466 │     1466 │  +0.0 % ➖ │
│                                              │   1000 │   2.004 ms │   1.991 ms │  +0.7 % ➖ │   11658 │    11658 │  +0.0 % ➖ │
│                                              │  10000 │  16.296 ms │  17.189 ms │  -5.2 % ✅ │  115275 │   115275 │  +0.0 % ➖ │
│                                              │ 100000 │ 241.041 ms │ 215.769 ms │ +11.7 % ❌ │ 1150392 │  1150392 │  +0.0 % ➖ │
│ powergrid → seq → seq                        │    100 │   7.286 μs │   7.216 μs │  +1.0 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   1000 │  72.136 μs │  71.445 μs │  +1.0 % ➖ │         │          │  +0.0 % ➖ │
│                                              │  10000 │ 729.956 μs │ 725.350 μs │  +0.6 % ➖ │         │          │  +0.0 % ➖ │
│                                              │ 100000 │   8.227 ms │   8.031 ms │  +2.4 % ➖ │         │          │  +0.0 % ➖ │
│ powergrid → ka → seq                         │    100 │  10.190 μs │  10.296 μs │  -1.0 % ➖ │      46 │       46 │  +0.0 % ➖ │
│                                              │   1000 │  74.820 μs │  75.541 μs │  -1.0 % ➖ │      47 │       47 │  +0.0 % ➖ │
│                                              │  10000 │ 556.661 μs │ 564.142 μs │  -1.3 % ➖ │     293 │      293 │  +0.0 % ➖ │
│                                              │ 100000 │   3.679 ms │   3.606 ms │  +2.0 % ➖ │    1261 │     1261 │  +0.0 % ➖ │
│ powergrid → poly → seq                       │    100 │   5.344 μs │   5.524 μs │  -3.3 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │   1000 │  35.993 μs │  36.704 μs │  -1.9 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │  10000 │ 342.165 μs │ 343.017 μs │  -0.2 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │ 100000 │   3.587 ms │   3.532 ms │  +1.6 % ➖ │       5 │        5 │  +0.0 % ➖ │
│ powergrid → thrd → seq                       │    100 │  22.674 μs │  22.633 μs │  +0.2 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │   1000 │  75.722 μs │  74.690 μs │  +1.4 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │  10000 │ 563.842 μs │ 556.411 μs │  +1.3 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │ 100000 │   3.898 ms │   3.882 ms │  +0.4 % ➖ │     110 │      110 │  +0.0 % ➖ │
│ powergrid → seq_buf → seq                    │    100 │   7.758 μs │   7.678 μs │  +1.0 % ➖ │         │          │  +0.0 % ➖ │
│                                              │   1000 │  75.341 μs │  75.772 μs │  -0.6 % ➖ │         │          │  +0.0 % ➖ │
│                                              │  10000 │ 767.993 μs │ 769.986 μs │  -0.3 % ➖ │         │          │  +0.0 % ➖ │
│                                              │ 100000 │   8.739 ms │   8.649 ms │  +1.0 % ➖ │         │          │  +0.0 % ➖ │
│ powergrid → ka_buf → seq                     │    100 │  10.691 μs │  10.786 μs │  -0.9 % ➖ │      46 │       46 │  +0.0 % ➖ │
│                                              │   1000 │  79.277 μs │  79.117 μs │  +0.2 % ➖ │      47 │       47 │  +0.0 % ➖ │
│                                              │  10000 │ 626.865 μs │ 628.367 μs │  -0.2 % ➖ │     293 │      293 │  +0.0 % ➖ │
│                                              │ 100000 │   4.280 ms │   4.137 ms │  +3.5 % ➖ │    1261 │     1261 │  +0.0 % ➖ │
│ powergrid → poly_buf → seq                   │    100 │   5.596 μs │   5.463 μs │  +2.4 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │   1000 │  39.889 μs │  40.860 μs │  -2.4 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │  10000 │ 381.553 μs │ 373.041 μs │  +2.3 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │ 100000 │   4.290 ms │   4.108 ms │  +4.4 % ➖ │       5 │        5 │  +0.0 % ➖ │
│ powergrid → poly_buf → ka                    │    100 │   6.854 μs │   6.723 μs │  +1.9 % ➖ │       9 │        9 │  +0.0 % ➖ │
│                                              │   1000 │ 172.915 μs │ 172.344 μs │  +0.3 % ➖ │      40 │       40 │  +0.0 % ➖ │
│                                              │  10000 │ 608.598 μs │ 627.505 μs │  -3.0 % ➖ │      40 │       40 │  +0.0 % ➖ │
│                                              │ 100000 │   5.096 ms │   4.952 ms │  +2.9 % ➖ │      40 │       40 │  +0.0 % ➖ │
│ powergrid → poly_buf → poly                  │    100 │   6.700 μs │   6.800 μs │  -1.5 % ➖ │       8 │        8 │  +0.0 % ➖ │
│                                              │   1000 │  45.617 μs │  42.764 μs │  +6.7 % ❌ │       8 │        8 │  +0.0 % ➖ │
│                                              │  10000 │ 412.378 μs │ 420.230 μs │  -1.9 % ➖ │       8 │        8 │  +0.0 % ➖ │
│                                              │ 100000 │   6.199 ms │   6.007 ms │  +3.2 % ➖ │       8 │        8 │  +0.0 % ➖ │
│ powergrid → poly_buf → thrd                  │    100 │ 120.698 μs │ 120.809 μs │  -0.1 % ➖ │      27 │       27 │  +0.0 % ➖ │
│                                              │   1000 │ 158.894 μs │ 158.945 μs │  -0.0 % ➖ │      27 │       27 │  +0.0 % ➖ │
│                                              │  10000 │ 562.249 μs │ 513.618 μs │  +9.5 % ❌ │      27 │       27 │  +0.0 % ➖ │
│                                              │ 100000 │   7.269 ms │   7.166 ms │  +1.4 % ➖ │      27 │       27 │  +0.0 % ➖ │
│ powergrid → poly_buf → sprs                  │    100 │   6.607 μs │   6.490 μs │  +1.8 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │   1000 │  50.684 μs │  48.953 μs │  +3.5 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │  10000 │ 482.512 μs │ 478.275 μs │  +0.9 % ➖ │       5 │        5 │  +0.0 % ➖ │
│                                              │ 100000 │   5.310 ms │   5.269 ms │  +0.8 % ➖ │       5 │        5 │  +0.0 % ➖ │
│ powergrid → thrd_buf → seq                   │    100 │  22.423 μs │  22.403 μs │  +0.1 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │   1000 │  77.104 μs │  79.407 μs │  -2.9 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │  10000 │ 619.674 μs │ 619.333 μs │  +0.1 % ➖ │     110 │      110 │  +0.0 % ➖ │
│                                              │ 100000 │   4.356 ms │   4.465 ms │  -2.4 % ➖ │     110 │      110 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → assemble        │    100 │ 495.441 μs │ 464.726 μs │  +6.6 % ❌ │    3112 │     3110 │  +0.1 % ➖ │
│                                              │   1000 │   4.307 ms │   4.395 ms │  -2.0 % ➖ │   30096 │    30096 │  +0.0 % ➖ │
│                                              │  10000 │  59.819 ms │  54.173 ms │ +10.4 % ❌ │  300234 │   300234 │  +0.0 % ➖ │
│                                              │ 100000 │    1.285 s │    1.298 s │  -1.0 % ➖ │ 3000328 │  3000328 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → seq → seq       │    100 │   9.864 μs │   9.499 μs │  +3.8 % ➖ │     102 │      102 │  +0.0 % ➖ │
│                                              │   1000 │  97.815 μs │  94.730 μs │  +3.3 % ➖ │    1002 │     1002 │  +0.0 % ➖ │
│                                              │  10000 │   1.039 ms │ 999.174 μs │  +4.0 % ➖ │   10002 │    10002 │  +0.0 % ➖ │
│                                              │ 100000 │  11.135 ms │  10.595 ms │  +5.1 % ❌ │  100002 │   100002 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → ka → seq        │    100 │  70.704 μs │  68.952 μs │  +2.5 % ➖ │    1132 │     1132 │  +0.0 % ➖ │
│                                              │   1000 │ 687.064 μs │ 682.557 μs │  +0.7 % ➖ │   11033 │    11033 │  +0.0 % ➖ │
│                                              │  10000 │   7.074 ms │   7.030 ms │  +0.6 % ➖ │  110189 │   110189 │  +0.0 % ➖ │
│                                              │ 100000 │  71.579 ms │  70.053 ms │  +2.2 % ➖ │ 1100849 │  1100849 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → poly → seq      │    100 │  10.376 μs │  10.030 μs │  +3.4 % ➖ │     105 │      105 │  +0.0 % ➖ │
│                                              │   1000 │  92.977 μs │  88.420 μs │  +5.2 % ❌ │    1005 │     1005 │  +0.0 % ➖ │
│                                              │  10000 │ 958.164 μs │ 918.566 μs │  +4.3 % ➖ │   10005 │    10005 │  +0.0 % ➖ │
│                                              │ 100000 │  10.114 ms │   9.769 ms │  +3.5 % ➖ │  100005 │   100005 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → thrd → seq      │    100 │ 473.168 μs │ 463.333 μs │  +2.1 % ➖ │    2368 │     2368 │  +0.0 % ➖ │
│                                              │   1000 │   4.901 ms │   4.715 ms │  +3.9 % ➖ │   23068 │    23068 │  +0.0 % ➖ │
│                                              │  10000 │  62.013 ms │  60.783 ms │  +2.0 % ➖ │  230068 │   230068 │  +0.0 % ➖ │
│                                              │ 100000 │ 747.070 ms │ 705.078 ms │  +6.0 % ❌ │ 2300068 │  2300068 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → seq_buf → seq   │    100 │   9.935 μs │  10.090 μs │  -1.5 % ➖ │     102 │      102 │  +0.0 % ➖ │
│                                              │   1000 │ 100.028 μs │ 100.949 μs │  -0.9 % ➖ │    1002 │     1002 │  +0.0 % ➖ │
│                                              │  10000 │   1.057 ms │   1.079 ms │  -2.1 % ➖ │   10002 │    10002 │  +0.0 % ➖ │
│                                              │ 100000 │  12.022 ms │  11.420 ms │  +5.3 % ❌ │  100002 │   100002 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → ka_buf → seq    │    100 │  70.895 μs │  69.642 μs │  +1.8 % ➖ │    1132 │     1132 │  +0.0 % ➖ │
│                                              │   1000 │ 701.785 μs │ 688.406 μs │  +1.9 % ➖ │   11033 │    11033 │  +0.0 % ➖ │
│                                              │  10000 │   7.128 ms │   7.086 ms │  +0.6 % ➖ │  110189 │   110189 │  +0.0 % ➖ │
│                                              │ 100000 │  72.940 ms │  71.997 ms │  +1.3 % ➖ │ 1100849 │  1100849 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → poly_buf → seq  │    100 │  10.631 μs │  10.356 μs │  +2.7 % ➖ │     105 │      105 │  +0.0 % ➖ │
│                                              │   1000 │  95.030 μs │  91.846 μs │  +3.5 % ➖ │    1005 │     1005 │  +0.0 % ➖ │
│                                              │  10000 │ 999.515 μs │ 936.672 μs │  +6.7 % ❌ │   10005 │    10005 │  +0.0 % ➖ │
│                                              │ 100000 │  10.508 ms │  10.208 ms │  +2.9 % ➖ │  100005 │   100005 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → poly_buf → ka   │    100 │  11.472 μs │  11.582 μs │  -0.9 % ➖ │     109 │      109 │  +0.0 % ➖ │
│                                              │   1000 │ 227.516 μs │ 226.544 μs │  +0.4 % ➖ │    1040 │     1040 │  +0.0 % ➖ │
│                                              │  10000 │   1.526 ms │   1.488 ms │  +2.6 % ➖ │   10040 │    10040 │  +0.0 % ➖ │
│                                              │ 100000 │  12.906 ms │  12.478 ms │  +3.4 % ➖ │  100040 │   100040 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → poly_buf → poly │    100 │  11.687 μs │  11.617 μs │  +0.6 % ➖ │     108 │      108 │  +0.0 % ➖ │
│                                              │   1000 │  98.426 μs │  95.421 μs │  +3.1 % ➖ │    1008 │     1008 │  +0.0 % ➖ │
│                                              │  10000 │   1.002 ms │ 990.592 μs │  +1.2 % ➖ │   10008 │    10008 │  +0.0 % ➖ │
│                                              │ 100000 │  13.446 ms │  12.793 ms │  +5.1 % ❌ │  100008 │   100008 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → poly_buf → thrd │    100 │ 125.806 μs │ 125.335 μs │  +0.4 % ➖ │     127 │      127 │  +0.0 % ➖ │
│                                              │   1000 │ 215.879 μs │ 210.841 μs │  +2.4 % ➖ │    1027 │     1027 │  +0.0 % ➖ │
│                                              │  10000 │   1.398 ms │   1.345 ms │  +4.0 % ➖ │   10027 │    10027 │  +0.0 % ➖ │
│                                              │ 100000 │  15.655 ms │  15.421 ms │  +1.5 % ➖ │  100027 │   100027 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → poly_buf → sprs │    100 │  11.477 μs │  11.101 μs │  +3.4 % ➖ │     105 │      105 │  +0.0 % ➖ │
│                                              │   1000 │ 101.770 μs │ 100.398 μs │  +1.4 % ➖ │    1005 │     1005 │  +0.0 % ➖ │
│                                              │  10000 │   1.080 ms │   1.054 ms │  +2.4 % ➖ │   10005 │    10005 │  +0.0 % ➖ │
│                                              │ 100000 │  12.897 ms │  11.970 ms │  +7.7 % ❌ │  100005 │   100005 │  +0.0 % ➖ │
│ powergrid_inhomogeneous_pq → thrd_buf → seq  │    100 │ 468.381 μs │ 464.055 μs │  +0.9 % ➖ │    2368 │     2368 │  +0.0 % ➖ │
│                                              │   1000 │   4.823 ms │   4.785 ms │  +0.8 % ➖ │   23068 │    23068 │  +0.0 % ➖ │
│                                              │  10000 │  67.244 ms │  63.923 ms │  +5.2 % ❌ │  230068 │   230068 │  +0.0 % ➖ │
│                                              │ 100000 │ 721.430 ms │ 645.232 ms │ +11.8 % ❌ │ 2300068 │  2300068 │  +0.0 % ➖ │
└──────────────────────────────────────────────┴────────┴────────────┴────────────┴────────────┴─────────┴──────────┴────────────┘

https://github.com/JuliaDynamics/NetworkDynamics.jl/actions/runs/28445109501/artifacts/7983013161

@hexaeder hexaeder merged commit 6165e4f into main Jul 5, 2026
9 of 11 checks passed
@hexaeder hexaeder deleted the hw/fix_formula_handling branch July 5, 2026 19:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant