{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2601-10774","title":"Analytic Bijections for Smooth and Interpretable Normalizing Flows","arxiv_id":"2601.10774","date":"2026-01-15","proceeding":"ICML","authors":["Mathis Gerdes","Miranda C. N. Cheng"],"abstract":"A key challenge in normalizing flows is finding expressive invertible scalar bijections. Existing approaches face trade-offs: affine transformations are smooth and analytically invertible but lack expressivity; monotonic splines offer local control but are only piecewise smooth and act on bounded domains; residual flows achieve smoothness but need numerical inversion. We introduce three families of analytic bijections that are globally smooth ($C^\\infty$), defined on all of $\\mathbb{R}$, and analytically invertible in closed form, combining the favorable properties of prior approaches. Beyond serving as drop-in replacements in coupling flows, where they match or exceed spline performance, we develop radial flows: a novel architecture using direct parametrization that transforms the radial coordinate while preserving angular direction. Radial flows exhibit exceptional training stability, produce geometrically interpretable transformations, and on targets with radial structure can achieve comparable quality to coupling flows with $1000\\times$ fewer parameters. We provide comprehensive evaluation on 1D and 2D benchmarks, and demonstrate applicability to higher-dimensional physics problems through experiments on $φ^4$ lattice field theory, where our bijections outperform affine baselines and enable problem-specific designs that address mode collapse.","url_abs":"https://arxiv.org/abs/2601.10774","url_pdf":"https://arxiv.org/pdf/2601.10774","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2601.10774","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2601.10774"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/mathisgerdes/bijx","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":13},"by_repo_kind":{"found_in_text":{"samples":13,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"8be1ef1124fbd029","entry":"adjoint","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/lie.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/lie.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8be1ef1124fbd029"}},{"code_sha256_prefix":"06f32e66b7cdb6ab","entry":"cg_stage","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/cg.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/cg.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"06f32e66b7cdb6ab"}},{"code_sha256_prefix":"283b58126f59439f","entry":"complex_affine_apply","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/bijections/affine_complex.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/bijections/affine_complex.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"283b58126f59439f"}},{"code_sha256_prefix":"3e0c5b0e8e2bcf4e","entry":"crouch_grossmann_step","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/cg.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/cg.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3e0c5b0e8e2bcf4e"}},{"code_sha256_prefix":"de1f4a7d8e2a203b","entry":"default_wrap","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/utils.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"de1f4a7d8e2a203b"}},{"code_sha256_prefix":"e3fe2073ab6ad0a5","entry":"effective_sample_size","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/utils.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e3fe2073ab6ad0a5"}},{"code_sha256_prefix":"206a73c4c25578b2","entry":"fft_momenta","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/fourier.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/fourier.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"206a73c4c25578b2"}},{"code_sha256_prefix":"94b82def5524a931","entry":"is_shape","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/utils.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"94b82def5524a931"}},{"code_sha256_prefix":"762160e1309bf0da","entry":"log_cosh_stable","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/bijections/analytic.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/bijections/analytic.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"762160e1309bf0da"}},{"code_sha256_prefix":"3f87b22a721ff27d","entry":"odeint_rk4","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/solvers.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/solvers.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3f87b22a721ff27d"}},{"code_sha256_prefix":"f24e34dbe0529dea","entry":"safe_exp_scale","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/bijections/analytic.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/bijections/analytic.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f24e34dbe0529dea"}},{"code_sha256_prefix":"052a30835c3cd56b","entry":"sample_haar","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/lie.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/lie.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"052a30835c3cd56b"}},{"code_sha256_prefix":"e32dc18a724087a4","entry":"scalar_prod","repo":"mathisgerdes/bijx","repo_kind":"found_in_text","path":"src/bijx/lie.py","file_url":"https://github.com/mathisgerdes/bijx/blob/HEAD/src/bijx/lie.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e32dc18a724087a4"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}