के साथ सी प्रोग्राम की यादृच्छिक पीढ़ी क्या कोई भी सी प्रोग्रामों के यादृच्छिक जनरेटर को जानता है जिसमें फ़्लोटिंग-पॉइंट कंप्यूटेशंस शामिल हैं?फ्लोटिंग-पॉइंट
मैं कुछ ऐसा ढूंढ रहा हूं जो Csmith जैसा होगा, सिवाय इसके कि सिस्मिथ फ़्लोटिंग-पॉइंट एक्सप्रेशन उत्पन्न नहीं करता है, और यह कई अन्य संरचनाएं उत्पन्न करता है, जिससे इसे संशोधित करना थोड़ा मुश्किल हो जाता है। अनुक्रमिक गणना उत्पन्न करना मेरे उद्देश्य के लिए एक अच्छी शुरुआत होगी जब तक कि इनमें कुछ फ़्लोटिंग-पॉइंट शामिल हों। कंडीशनर भी बेहतर होंगे, लेकिन मुझे लूप, पॉइंटर्स या यहां तक कि सरणी की आवश्यकता नहीं होगी।
चूंकि इतनी सारी भाषाएं सी-जैसे सिंटैक्स का उपयोग करती हैं, ऐसे जनरेटर को सी के लिए विशिष्ट नहीं होना पड़ सकता है, भले ही यह किसी अन्य सी-जैसी भाषा के लिए विशिष्ट हो, फिर भी मैं एक जेनरेट किए गए प्रोग्राम को टेक्स्ट-प्रोसेस करने में सक्षम हो सकता हूं एक सी प्रोग्राम में वह भाषा।
संपादित करें: यहां एक सिस्मिथ-जेनरेटेड प्रोग्राम का एक स्निपेट है जिसे मैं ढूंढ रहा हूं उसे स्पष्ट करने के लिए।
...
int64_t *l_374 = &g_189;
int32_t l_375 = (-1L);
int i, j, k;
l_375 &= ((g_106 == ((*l_374) = (&g_324[4] == l_373[0][0][5]))) < 0x80C8L);
return (*g_207);
...
मैं भी स्पष्ट करना चाहिए कि जब एक Csmith कार्यक्रम लेने और प्रतिस्थापन, कहते हैं, int64_t
float
के साथ एक वाक्य रचना सही सी कार्यक्रम दे सकता है, यह लगभग निश्चित रूप से नहीं एक परिभाषित कार्यक्रम दे देंगे। मैं जांच सकता हूं कि एक प्रतिस्थापित कार्यक्रम में अनिर्धारित व्यवहार है, लेकिन यह सस्ता नहीं है, और यदि मुझे 99% प्रतिस्थापित कार्यक्रमों को अस्वीकार करना है क्योंकि वे अपरिभाषित हैं, तो प्रक्रिया उपयोगी होने में बहुत धीमी होगी।
मैं पूरी तरह वंचित नींद रहा हूँ पर अधिक तो मुझसे पूछें, तो माफ करना अगर यह बेवकूफ है, लेकिन मैं यह अधिकार पढ़ रहा हूँ? आप यादृच्छिक रूप से सी प्रोग्राम उत्पन्न करना चाहते हैं? पहुंच से बहुत दूर! आप पर अच्छा! क्यूं कर? : पी – TheIronKnuckle
@TheIronKnuckle "अंतर परीक्षण" के लिए: दो अलग-अलग कंपाइलरों के साथ एक यादृच्छिक रूप से जेनरेट * परिभाषित * सी प्रोग्राम संकलित करें, और यदि प्रोग्राम अलग-अलग परिणाम देते हैं, तो आपको कंप्यूटर्स में से एक में एक बग मिला है। http://www.linux-mips.org/pub/linux/mips/people/macro/DEC/DTJ/DTJT08/DTJT08PF.PDF –
@TheIronKnuckle खैर, यह फ़्लोटिंग-पॉइंट के साथ थोड़ा और जटिल है, क्योंकि फ़्लोटिंग -पॉइंट सी 99 में अंडरस्पेस्फीड किया गया है, और दो कंपाइलर्स दोनों सही होंगे और फ़्लोटिंग पॉइंट की उपस्थिति में अलग-अलग परिणाम देंगे। यही कारण है कि सुविधा कोस्मिथ में शामिल नहीं किया गया था। लेकिन मुझे अभी भी लगता है कि मैं अपने उद्देश्य के लिए यादृच्छिक फ्लोटिंग-पॉइंट प्रोग्राम का उपयोग करने में सक्षम हूं। –