Efficient Generation of Error-Inducing Floating-Point Inputs via Symbolic Execution
Floating point is widely used in software to emulate arithmetic over reals. Unfortunately, floating point leads to rounding errors that propagate and accumulate during execution. Generating inputs to maximize the numerical error is critical when evaluating the accuracy of floating-point code. In thi...
Uložené v:
| Vydané v: | 2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE) s. 1261 - 1272 |
|---|---|
| Hlavní autori: | , |
| Médium: | Konferenčný príspevok.. |
| Jazyk: | English |
| Vydavateľské údaje: |
ACM
01.10.2020
|
| Predmet: | |
| ISSN: | 1558-1225 |
| On-line prístup: | Získať plný text |
| Tagy: |
Pridať tag
Žiadne tagy, Buďte prvý, kto otaguje tento záznam!
|
| Abstract | Floating point is widely used in software to emulate arithmetic over reals. Unfortunately, floating point leads to rounding errors that propagate and accumulate during execution. Generating inputs to maximize the numerical error is critical when evaluating the accuracy of floating-point code. In this paper, we formulate the problem of generating high error-inducing floating-point inputs as a code coverage maximization problem solved using symbolic execution. Specifically, we define inaccuracy checks to detect large precision loss and cancellation. We inject these checks at strategic program locations to construct specialized branches that, when covered by a given input, are likely to lead to large errors in the result. We apply symbolic execution to generate inputs that exercise these specialized branches, and describe optimizations that make our approach practical. We implement a tool named FPGen and present an evaluation on 21 numerical programs including matrix computation and statistics libraries. We show that FPGen exposes errors for 20 of these programs and triggers errors that are, on average, over 2 orders of magnitude larger than the state of the art. |
|---|---|
| AbstractList | Floating point is widely used in software to emulate arithmetic over reals. Unfortunately, floating point leads to rounding errors that propagate and accumulate during execution. Generating inputs to maximize the numerical error is critical when evaluating the accuracy of floating-point code. In this paper, we formulate the problem of generating high error-inducing floating-point inputs as a code coverage maximization problem solved using symbolic execution. Specifically, we define inaccuracy checks to detect large precision loss and cancellation. We inject these checks at strategic program locations to construct specialized branches that, when covered by a given input, are likely to lead to large errors in the result. We apply symbolic execution to generate inputs that exercise these specialized branches, and describe optimizations that make our approach practical. We implement a tool named FPGen and present an evaluation on 21 numerical programs including matrix computation and statistics libraries. We show that FPGen exposes errors for 20 of these programs and triggers errors that are, on average, over 2 orders of magnitude larger than the state of the art. |
| Author | Guo, Hui Rubio-Gonzalez, Cindy |
| Author_xml | – sequence: 1 givenname: Hui surname: Guo fullname: Guo, Hui email: higuo@ucdavis.edu organization: University of California,Department of Computer Science,Davis,USA – sequence: 2 givenname: Cindy surname: Rubio-Gonzalez fullname: Rubio-Gonzalez, Cindy email: crubio@ucdavis.edu organization: University of California,Department of Computer Science,Davis,USA |
| BookMark | eNotjk1LAzEYhKMo2K2ePXjJH9ia5N1skqOUbV0oKFTPJZu8WyJtUvZD7L93i54GZp4ZJiM3MUUk5JGzBeeFfAZQSnO-ANAMpLki2eQyUFxwuCYzLqXOuRDyjmR9_8UYKwtjZmRbtW1wAeNA1xixs0NIkaaWVl2XuryOfnQh7unqkKYo7vP3FCa2jqdx6Ol3sHR7PjbpEBytftCNl_o9uW3toceHf52Tz1X1sXzNN2_revmyya3QesidkIXx0z3vOBpvWcNbJZrGKNDKo0O03qIGZ1rWMO-YBc9UqbmQ0iq0MCdPf7sBEXenLhxtd94ZocHIEn4BN61R7w |
| CODEN | IEEPAD |
| ContentType | Conference Proceeding |
| DBID | 6IE 6IH CBEJK RIE RIO |
| DOI | 10.1145/3377811.3380359 |
| DatabaseName | IEEE Electronic Library (IEL) Conference Proceedings IEEE Proceedings Order Plan (POP) 1998-present by volume IEEE Xplore All Conference Proceedings IEEE Electronic Library (IEL) IEEE Proceedings Order Plans (POP) 1998-present |
| DatabaseTitleList | |
| Database_xml | – sequence: 1 dbid: RIE name: IEEE Xplore url: https://ieeexplore.ieee.org/ sourceTypes: Publisher |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISBN | 1450371213 9781450371216 |
| EISSN | 1558-1225 |
| EndPage | 1272 |
| ExternalDocumentID | 9283956 |
| Genre | orig-research |
| GrantInformation_xml | – fundername: National Science Foundation grantid: CCF-1750983 funderid: 10.13039/100000001 – fundername: Advanced Scientific Computing Research grantid: DE-SC0020286 funderid: 10.13039/100006192 – fundername: U.S. Department of Energy funderid: 10.13039/100000015 |
| GroupedDBID | -~X .4S .DC 123 23M 29O 5VS 6IE 6IF 6IH 6IK 6IL 6IM 6IN 8US AAJGR AAWTH ABLEC ADZIZ AFFNX ALMA_UNASSIGNED_HOLDINGS APO ARCSS AVWKF BEFXN BFFAM BGNUA BKEBE BPEOZ CBEJK CHZPO EDO FEDTE I-F I07 IEGSK IJVOP IPLJI M43 OCL RIE RIL RIO RNS XOL |
| ID | FETCH-LOGICAL-a288t-c2549d213dc1e9da0b1f72bb97387deceeadae83c9f0b0dc0a3d07681255a7ea3 |
| IEDL.DBID | RIE |
| ISICitedReferencesCount | 29 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000652529800103&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| IngestDate | Wed Aug 27 02:32:58 EDT 2025 |
| IsDoiOpenAccess | false |
| IsOpenAccess | true |
| IsPeerReviewed | false |
| IsScholarly | true |
| Language | English |
| LinkModel | DirectLink |
| MergedId | FETCHMERGED-LOGICAL-a288t-c2549d213dc1e9da0b1f72bb97387deceeadae83c9f0b0dc0a3d07681255a7ea3 |
| OpenAccessLink | https://dl.acm.org/doi/pdf/10.1145/3377811.3380359 |
| PageCount | 12 |
| ParticipantIDs | ieee_primary_9283956 |
| PublicationCentury | 2000 |
| PublicationDate | 2020-Oct. |
| PublicationDateYYYYMMDD | 2020-10-01 |
| PublicationDate_xml | – month: 10 year: 2020 text: 2020-Oct. |
| PublicationDecade | 2020 |
| PublicationTitle | 2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE) |
| PublicationTitleAbbrev | ICSE |
| PublicationYear | 2020 |
| Publisher | ACM |
| Publisher_xml | – name: ACM |
| SSID | ssj0006499 ssj0002870079 |
| Score | 2.3113708 |
| Snippet | Floating point is widely used in software to emulate arithmetic over reals. Unfortunately, floating point leads to rounding errors that propagate and... |
| SourceID | ieee |
| SourceType | Publisher |
| StartPage | 1261 |
| SubjectTerms | catastrophic cancellation floating-point roundoff errors symbolic execution testing |
| Title | Efficient Generation of Error-Inducing Floating-Point Inputs via Symbolic Execution |
| URI | https://ieeexplore.ieee.org/document/9283956 |
| WOSCitedRecordID | wos000652529800103&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1LS8NAEF7a4sFT1VZ8swePbptkm2z2LCkKUgpV6K3sYxYKmkj6QP-9O9tYEbx4CyFMlsljvtmZ-T5CbjPtUMRCsxSMZCOXJkwh4WWiPNaXGrKIh0HhJzGZ5PO5nLbI3X4WBgBC8xkM8DDU8m1lNrhVNpQ-Fno83yZtIbLdrNZ-PwULdhFWnJq_cOZv1VD5xKN0yLnAmcqBz8iQtO6XlkoIJePu_xZxRPo_M3l0uo82x6QF5Qnpfosy0OYb7ZFZEUghvA26o5RGz9PK0aKuq5qhVIfxBuj4tVLY8sym1dJf-1h6Oyu6XSo6-3zTyBZMiw8w4b3sk5dx8Xz_wBrlBKaSPF8zg2mfTWJuTQzSqkjHTiRaS8FzYcEvVVkFOTfSRTqyJlLcYknOo51UCVD8lHTKqoQzQkWmQHmMkWqfuKXOeUSm4sgY7kSsjdPnpIc-WrzvyDEWjXsu_j59SQ4TTFhDN9wV6azrDVyTA7NdL1f1TXiiX7YBorY |
| linkProvider | IEEE |
| linkToHtml | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1LS8NAEB5qFfRUtRXf7sGj226yTTY5S0qLtRRaobeyTyhoIukD_ffubmNF8OIthDBZJo_5Zmfm-wDuY2GciIXAkZYp7pooxNwRXobcYv1U6JhQPyg8ZKNRMpul4xo87GZhtNa--Uy33aGv5atCrt1WWSe1sdDi-T3Yj7rdkGyntXY7Kq5kR1zNqfoPx_ZmFZlP0I06lDI3Vdm2OZmjrfulpuKDSa_xv2UcQ-tnKg-Nd_HmBGo6P4XGtywDqr7SJkwyTwthbaAtqbTzPSoMysqyKLET65DWAOq9Ftw1PeNxsbDXDnJrZ4k2C44mn2_C8QWj7ENL_2a24KWXTR_7uNJOwDxMkhWWLvFTYUCVDHSqOBGBYaEQKaMJU9oulSuuEypTQwRRknCqXFHO4p2IM83pGdTzItfngFjMNbcoIxI2dYuMsZiMB0RKalggpBEX0HQ-mr9v6THmlXsu_z59B4f96fNwPhyMnq7gKHTpq--Nu4b6qlzrGziQm9ViWd76p_sFWqql_Q |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=proceeding&rft.title=2020+IEEE%2FACM+42nd+International+Conference+on+Software+Engineering+%28ICSE%29&rft.atitle=Efficient+Generation+of+Error-Inducing+Floating-Point+Inputs+via+Symbolic+Execution&rft.au=Guo%2C+Hui&rft.au=Rubio-Gonzalez%2C+Cindy&rft.date=2020-10-01&rft.pub=ACM&rft.eissn=1558-1225&rft.spage=1261&rft.epage=1272&rft_id=info:doi/10.1145%2F3377811.3380359&rft.externalDocID=9283956 |