FORTRAN77 العلاج المترجم لـ PI = 4.D0*DATAN (1.D0)
سؤال
عند استخدام ما يلي لحساب PI في Fortran77 ، هل سيقوم المترجم بتقييم هذه القيمة أم أنه سيتم تقييمه في وقت التشغيل؟
PI = 4.d0*datan (1.d0)
المحلول
تعديل: يعتمد على المترجم: انظر تحرير بلدي أدناه. تحرير نهاية
أنا الثاني اقتراح ميك شارب بأنه سيتم تقييمه في وقت التشغيل. فقط بدافع الفضول ، جمعت PI=4.D0*DATAN(1.D0)
مع برنامج التحويل البرمجي FTN77 من Silverfrost ونظرت إلى الثنائي المولد. الجزء ذي الصلة يبدو هكذا:
fld1 ; push 1.D0 onto the FPU register stack
call ATAN_X
fmul dbl_404000 ; multiply by 4.D0
في الواقع ، لا يوجد انكماش مترجم هنا.
هذا بالطبع قد يكون مختلفًا مع برنامج مترجم آخر (على سبيل المثال G77). تعديل: على ما يبدو ، مع G77 (الواجهة الأمامية FORTRAN77 لـ GCC) من الممكن (وتمكينها افتراضيًا) استخدام GCC's وظيفة ATAN مدمجة ل طيّق تلقائي PI=4.D0*DATAN(1.D0)
في ثابت. تحرير نهاية
نصائح أخرى
عادة ما يتم تقييم المكالمات إلى وظائف الرياضيات في وقت التشغيل. بعد كل شيء ، لا يوجد شيء يمنعك من كتابة وظائف الرياضيات الخاصة بك. لن يكون هذا ممكنًا إذا تم تقييمها في وقت الترجمة.