fortran - language - फोरट्रान में यह कानूनी है: डॉट_प्रोडक्ट(एक्स, एक्स)?




फोरट्रान फुल फॉर्म इन कंप्यूटर (2)

मैंने इंटरनेट पर यह कोड देखा: dot_product(x, x) क्या फोरट्रान में "अपरिभाषित व्यवहार" है (एलियासिंग के कारण)?


आखिरकार मैंने फोरट्रान 77 एएनएसआई मानकों को इस बारे में कहने की कोशिश की है:

15.9.3.6 संस्थाओं के संघों पर प्रतिबंध

यदि एक उपप्रोग्राम संदर्भ संदर्भित उपप्रोग्राम में एक और डमी तर्क के साथ संबद्ध होने के लिए संदर्भित उपप्रोग्राम में एक डमी तर्क का कारण बनता है, तो उस उपप्रोग्राम के निष्पादन के दौरान डमी तर्क को परिभाषित नहीं किया जा सकता है। उदाहरण के लिए, यदि कोई सबस्ट्रैटन का नेतृत्व होता है

SUBROUTINE XYZ (A,B)

और इसके द्वारा संदर्भित है

CALL XYZ (C,C)

डमी तर्क A और B प्रत्येक एक ही वास्तविक तर्क सी और इसलिए एक दूसरे के साथ जुड़े हो जाते हैं। उप-विधि XYZ इस निष्पादन या XYZ द्वारा संदर्भित किसी भी प्रक्रिया में न तो A और B भी परिभाषित नहीं हो सकते।

इसलिए मानक उनके अलियासिंग के बजाय उपनाम वाले तर्कों के संशोधन को प्रतिबंधित करता है।


नहीं, वहां कोई अपरिभाषित व्यवहार नहीं है, एक सदिश का डॉट उत्पाद अपने आप में अच्छी तरह से परिभाषित है। फ़ंक्शन परिभाषा के लिए इनपुट आर्गुग्स में कोई संशोधन की आवश्यकता नहीं है, यह वास्तव में एक अजीब कार्यान्वयन होगा जो उन्हें संशोधित करेगा।

(2003 और 2008) उन तर्कों पर मानक के प्रतिबंध जो ओवरलैप करते हैं (या एलआईएज़ हैं लेकिन यह भाषा मानक उपयोग नहीं है) केवल तब लागू होते हैं जब कोई प्रक्रिया ऐसे तर्क को फिर से परिभाषित करने की कोशिश करता है यह आंतरिक dot_product के मामले में नहीं है, जिनके तर्क, मानक (ओं) में परिभाषित हैं, का intent(in)