Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
788d621
Use backward stable algorithm with correction for infinite condition …
unalmis Apr 30, 2026
2078288
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis Apr 30, 2026
892699a
Add back analytical formulae because much faster
unalmis Apr 30, 2026
158203f
Fix typo in comment for root multiplicity check
unalmis May 1, 2026
10c78ed
.
unalmis May 1, 2026
342856e
simplify formulae
unalmis May 1, 2026
26463f9
make sure types remain real
unalmis May 1, 2026
e3bd373
better documentation
unalmis May 1, 2026
bf939bb
.
unalmis May 1, 2026
c9a2469
.
unalmis May 1, 2026
61a41f9
.
unalmis May 1, 2026
28ec657
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis May 1, 2026
c9cbff1
better filtering
unalmis May 2, 2026
95f11fa
.
unalmis May 2, 2026
205b1b4
.
unalmis May 2, 2026
8d301ff
.
unalmis May 2, 2026
97bf192
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis May 4, 2026
74895a1
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis May 4, 2026
b2426ad
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis May 11, 2026
593a8a5
.
unalmis May 15, 2026
68b0f26
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis May 18, 2026
54a204d
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis May 19, 2026
7fa245e
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis May 19, 2026
5e17736
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis Jun 8, 2026
21704b1
Merge branch 'ku/sparse_pullback' into ku/condition_number
unalmis Jun 16, 2026
79b48ab
Merge remote-tracking branch 'upstream/ku/sparse_pullback' into ku/co…
unalmis Jun 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions desc/integrals/_bounce_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from desc.backend import dct, ifft, jax, jnp
from desc.integrals._interp_utils import (
_JF_BUG,
_eps,
_root_eps,
chebder,
nufft1d2r,
nufft2d2r,
Expand Down Expand Up @@ -105,7 +105,7 @@ def _bounce_points(
)
assert intersect.shape[-2:] == (knots.size - 1, B.shape[-1] - 1)

dB_dz = flatten_mat(jnp.sign(poly_val(x=intersect, c=B[..., None, :], der=True)))
dB_dz = flatten_mat(jnp.sign(poly_val(x=intersect, c=B[..., None, :], der=1)))
# Only consider intersect if it is within knots that bound that polynomial.
mask = flatten_mat(intersect >= 0)
z1 = (dB_dz <= 0) & mask
Expand Down Expand Up @@ -370,10 +370,11 @@ def bounce_points_jvp(num_well, primals, tangents):
dB_dz += dB_dt * dt_dz
dB_do += dB_dt * dt_do

regularization = _root_eps()
dB_dz = jnp.where(
jnp.abs(dB_dz) > _eps,
jnp.abs(dB_dz) > regularization,
dB_dz,
dB_dz + jnp.copysign(_eps, dB_dz.real),
dB_dz + jnp.copysign(regularization, dB_dz.real),
)
dz = jnp.where(mask, (dp[..., None] - dB_do) / dB_dz, 0.0)

Expand Down Expand Up @@ -703,7 +704,7 @@ def get_mins(knots, B, num_mins=-1, fill_value=0.0):
a_max=jnp.diff(knots),
sentinel=0.0,
)
b = flatten_mat((poly_val(x=mins, c=b[..., None, :], der=True) > 0) & (mins > 0))
b = flatten_mat((poly_val(x=mins, c=b[..., None, :], der=1) > 0) & (mins > 0))
mins = flatten_mat(
jnp.stack(
[
Expand Down
Loading