Det är välkänt att flytta-punkt undantag kan vara katastrofal och skriva undantagsfria numeriska program är mycket svårt. Det är därför viktigt att automatiskt upptäcka sådana fel. I detta dokument presenterar vi Ariadne, ett praktiskt symboliskt avrättningssystem som är särskilt utformat och implementerat för att upptäcka flyttalsundantag. Ariadne omvandlar systematiskt ett numeriskt program för att uttryckligen kontrollera varje undantag som utlöser tillstånd. Ariadne kör symboliskt det omvandlade programmet med hjälp av verklig aritmetik för att hitta kandidat realvärderade ingångar som kan nå och utlösa ett undantag. Ariadne omvandlar varje kandidat in till ett flyttal nummer, sedan testar den mot det ursprungliga programmet. I allmänhet kan approximering av flyttal aritmetik med verklig aritmetik ändra vägar från genomförbara till ogenomförbara och vice versa. Den viktigaste insikten i detta arbete är att när det gäller problemet med att upptäcka flyttalsundantag fungerar denna approximation bra i praktiken eftersom många, om en insats når ett undantag, sannolikt gör det, och åtminstone en av dem kommer att göra det över både flyttal och verklig aritmetik. För att förverkliga Ariadne utvecklade vi också en ny, praktisk linjäriseringsteknik för att lösa icke-linjära begränsningar. Vi utvärderade i stor utsträckning Ariadne över 467 skalärfunktioner i det allmänt använda GNU Scientific Library (GSL). Våra resultat visar att Ariadne är praktisk och identifierar ett stort antal realtidsundantag i GSL. GSL-utvecklarna bekräftade våra preliminära resultat och ser fram emot Ariadnes offentliggörande, vilket vi planerar att göra inom en snar framtid.
Ariadne REF bygger på SMT-lösning för att upptäcka flyttalsundantag.
Automatic detection of floating-point exceptions
{'venue': 'POPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}