{"id":"https://openalex.org/W4384389552","doi":"https://doi.org/10.1145/3632878","title":"Efficient CHAD","display_name":"Efficient CHAD","publication_year":2024,"publication_date":"2024-01-02","ids":{"openalex":"https://openalex.org/W4384389552","doi":"https://doi.org/10.1145/3632878"},"language":"en","primary_location":{"id":"doi:10.1145/3632878","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3632878","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3632878","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3632878","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5078688846","display_name":"Tom Smeding","orcid":"https://orcid.org/0000-0002-4986-6820"},"institutions":[{"id":"https://openalex.org/I193662353","display_name":"Utrecht University","ror":"https://ror.org/04pp8hn57","country_code":"NL","type":"education","lineage":["https://openalex.org/I193662353"]}],"countries":["NL"],"is_corresponding":false,"raw_author_name":"Tom J. Smeding","raw_affiliation_strings":["Utrecht University, Utrecht, Netherlands"],"raw_orcid":"https://orcid.org/0000-0002-4986-6820","affiliations":[{"raw_affiliation_string":"Utrecht University, Utrecht, Netherlands","institution_ids":["https://openalex.org/I193662353"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5031234153","display_name":"Matthijs V\u00e1k\u00e1r","orcid":"https://orcid.org/0000-0003-4603-0523"},"institutions":[{"id":"https://openalex.org/I193662353","display_name":"Utrecht University","ror":"https://ror.org/04pp8hn57","country_code":"NL","type":"education","lineage":["https://openalex.org/I193662353"]}],"countries":["NL"],"is_corresponding":false,"raw_author_name":"Matthijs I. L. V\u00e1k\u00e1r","raw_affiliation_strings":["Utrecht University, Utrecht, Netherlands"],"raw_orcid":"https://orcid.org/0000-0003-4603-0523","affiliations":[{"raw_affiliation_string":"Utrecht University, Utrecht, Netherlands","institution_ids":["https://openalex.org/I193662353"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I193662353"],"apc_list":null,"apc_paid":null,"fwci":1.2091,"has_fulltext":true,"cited_by_count":5,"citation_normalized_percentile":{"value":0.79002675,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":96,"max":98},"biblio":{"volume":"8","issue":"POPL","first_page":"1060","last_page":"1088"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9994000196456909,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9984999895095825,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8482812643051147},{"id":"https://openalex.org/keywords/parallelism","display_name":"Parallelism (grammar)","score":0.6027381420135498},{"id":"https://openalex.org/keywords/associative-property","display_name":"Associative property","score":0.577633798122406},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.523747444152832},{"id":"https://openalex.org/keywords/simple","display_name":"Simple (philosophy)","score":0.5210144519805908},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.5138988494873047},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.49142730236053467},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.48037394881248474},{"id":"https://openalex.org/keywords/automatic-differentiation","display_name":"Automatic differentiation","score":0.4529624283313751},{"id":"https://openalex.org/keywords/algorithm","display_name":"Algorithm","score":0.37242719531059265},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.37168413400650024},{"id":"https://openalex.org/keywords/mathematics","display_name":"Mathematics","score":0.14066863059997559},{"id":"https://openalex.org/keywords/computation","display_name":"Computation","score":0.08591926097869873}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8482812643051147},{"id":"https://openalex.org/C2781172179","wikidata":"https://www.wikidata.org/wiki/Q853109","display_name":"Parallelism (grammar)","level":2,"score":0.6027381420135498},{"id":"https://openalex.org/C159423971","wikidata":"https://www.wikidata.org/wiki/Q177251","display_name":"Associative property","level":2,"score":0.577633798122406},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.523747444152832},{"id":"https://openalex.org/C2780586882","wikidata":"https://www.wikidata.org/wiki/Q7520643","display_name":"Simple (philosophy)","level":2,"score":0.5210144519805908},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.5138988494873047},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.49142730236053467},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.48037394881248474},{"id":"https://openalex.org/C133512626","wikidata":"https://www.wikidata.org/wiki/Q787371","display_name":"Automatic differentiation","level":3,"score":0.4529624283313751},{"id":"https://openalex.org/C11413529","wikidata":"https://www.wikidata.org/wiki/Q8366","display_name":"Algorithm","level":1,"score":0.37242719531059265},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.37168413400650024},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.14066863059997559},{"id":"https://openalex.org/C45374587","wikidata":"https://www.wikidata.org/wiki/Q12525525","display_name":"Computation","level":2,"score":0.08591926097869873},{"id":"https://openalex.org/C202444582","wikidata":"https://www.wikidata.org/wiki/Q837863","display_name":"Pure mathematics","level":1,"score":0.0},{"id":"https://openalex.org/C111472728","wikidata":"https://www.wikidata.org/wiki/Q9471","display_name":"Epistemology","level":1,"score":0.0},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.0},{"id":"https://openalex.org/C138885662","wikidata":"https://www.wikidata.org/wiki/Q5891","display_name":"Philosophy","level":0,"score":0.0}],"mesh":[],"locations_count":3,"locations":[{"id":"doi:10.1145/3632878","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3632878","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3632878","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},{"id":"pmh:oai:pure.ed.ac.uk:openaire/ad01f3e1-2648-4a6c-b239-80ea704f8ea2","is_oa":true,"landing_page_url":"https://www.research.ed.ac.uk/en/publications/ad01f3e1-2648-4a6c-b239-80ea704f8ea2","pdf_url":null,"source":{"id":"https://openalex.org/S4306400321","display_name":"Edinburgh Research Explorer (University of Edinburgh)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I98677209","host_organization_name":"University of Edinburgh","host_organization_lineage":["https://openalex.org/I98677209"],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Smeding, T J & V\u00e1k\u00e1r, M I L 2024, 'Efficient CHAD', Proceedings of the ACM on Programming Languages, vol. 8, no. POPL, 36, pp. 1060-1088. https://doi.org/10.1145/3632878","raw_type":"info:eu-repo/semantics/publishedVersion"},{"id":"pmh:oai:arXiv.org:2307.05738","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2307.05738","pdf_url":"https://arxiv.org/pdf/2307.05738","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":"2331-8422","issn":["2331-8422"],"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"}],"best_oa_location":{"id":"doi:10.1145/3632878","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3632878","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3632878","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G87116160","display_name":"Correct Expressive Differential Programming: Laying the Mathematical Foundations for Tomorrow\u2019s Machine Learning","funder_award_id":"VI.Veni.202.124","funder_id":"https://openalex.org/F4320321800","funder_display_name":"Nederlandse Organisatie voor Wetenschappelijk Onderzoek"}],"funders":[{"id":"https://openalex.org/F4320321800","display_name":"Nederlandse Organisatie voor Wetenschappelijk Onderzoek","ror":"https://ror.org/04jsz6e67"}],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W4384389552.pdf","grobid_xml":"https://content.openalex.org/works/W4384389552.grobid-xml"},"referenced_works_count":57,"referenced_works":["https://openalex.org/W1521014576","https://openalex.org/W1575675278","https://openalex.org/W1853291804","https://openalex.org/W1859991118","https://openalex.org/W1923962694","https://openalex.org/W1965256357","https://openalex.org/W2018435387","https://openalex.org/W2065209187","https://openalex.org/W2074802267","https://openalex.org/W2083310717","https://openalex.org/W2104958979","https://openalex.org/W2114058479","https://openalex.org/W2118227920","https://openalex.org/W2127114597","https://openalex.org/W2129902163","https://openalex.org/W2138452186","https://openalex.org/W2478429860","https://openalex.org/W2644985445","https://openalex.org/W2747329762","https://openalex.org/W2766220735","https://openalex.org/W2780016542","https://openalex.org/W2899771611","https://openalex.org/W2901943374","https://openalex.org/W2903224116","https://openalex.org/W2914196042","https://openalex.org/W2953384591","https://openalex.org/W2962727772","https://openalex.org/W2966177220","https://openalex.org/W2966295917","https://openalex.org/W3021448353","https://openalex.org/W3023853936","https://openalex.org/W3041191542","https://openalex.org/W3101155261","https://openalex.org/W3105664040","https://openalex.org/W3120040307","https://openalex.org/W3125452349","https://openalex.org/W3147570207","https://openalex.org/W3148154580","https://openalex.org/W3186563435","https://openalex.org/W3194443187","https://openalex.org/W3195241200","https://openalex.org/W3203610362","https://openalex.org/W4206834996","https://openalex.org/W4226262645","https://openalex.org/W4233723952","https://openalex.org/W4246263814","https://openalex.org/W4283832132","https://openalex.org/W4284970658","https://openalex.org/W4294344923","https://openalex.org/W4315630753","https://openalex.org/W4320736106","https://openalex.org/W4321636553","https://openalex.org/W4324297897","https://openalex.org/W4385804225","https://openalex.org/W4403605283","https://openalex.org/W6929416592","https://openalex.org/W6948428206"],"related_works":["https://openalex.org/W4230546540","https://openalex.org/W1543341614","https://openalex.org/W1718642889","https://openalex.org/W2553993726","https://openalex.org/W2788637467","https://openalex.org/W3194443187","https://openalex.org/W2336344634","https://openalex.org/W1598048107","https://openalex.org/W2156468295","https://openalex.org/W2999031440"],"abstract_inverted_index":{"We":[0,91],"show":[1,45],"how":[2,103],"the":[3,32,47,75,78,88,104,113],"basic":[4],"Combinatory":[5],"Homomorphic":[6],"Automatic":[7],"Differentiation":[8],"(CHAD)":[9],"algorithm":[10,70],"can":[11,135],"be":[12],"optimised,":[13],"using":[14],"well-known":[15],"methods,":[16],"to":[17,77,107],"yield":[18],"a":[19,67],"simple,":[20],"composable,":[21],"and":[22,53,131],"generally":[23],"applicable":[24],"reverse-mode":[25,41],"automatic":[26],"differentiation":[27],"(AD)":[28],"technique":[29],"that":[30,36,46,71,118,133],"has":[31],"correct":[33,79],"computational":[34],"complexity":[35,98],"we":[37,44,101,134],"would":[38],"expect":[39],"of":[40,50,74,87,96],"AD.":[42],"Specifically,":[43],"standard":[48],"optimisations":[49],"sparse":[51],"vectors":[52],"state-passing":[54],"style":[55],"code":[56],"(as":[57],"well":[58],"as":[59],"defunctionalisation/closure":[60],"conversion,":[61],"for":[62,140],"higher-order":[63],"languages)":[64],"give":[65],"us":[66,128],"purely":[68],"functional":[69,110],"is":[72,122],"most":[73,141],"way":[76],"complexity,":[80],"with":[81],"(functional)":[82],"mutable":[83],"updates":[84],"taking":[85],"care":[86],"final":[89],"log-factors.":[90],"provide":[92],"an":[93],"Agda":[94],"formalisation":[95],"our":[97],"proof.":[99],"Finally,":[100],"discuss":[102],"techniques":[105],"apply":[106],"differentiating":[108],"parallel":[109],"array":[111,143],"programs:":[112],"key":[114],"observations":[115],"are":[116],"1)":[117],"all":[119],"required":[120],"mutability":[121],"(commutative,":[123],"associative)":[124],"accumulation,":[125],"which":[126],"lets":[127],"preserve":[129],"task-parallelism":[130],"2)":[132],"write":[136],"down":[137],"data-parallel":[138,142],"derivatives":[139],"primitives.":[144]},"counts_by_year":[{"year":2026,"cited_by_count":2},{"year":2025,"cited_by_count":3}],"updated_date":"2026-08-26T07:47:46.906454","created_date":"2023-07-15T00:00:00"}
