تبديل اسم الدالة لا يحول أساس المدخلات تلقائيًا.
أساس الدالة
logaddexp2 تحسب log2(2**x+2**y)، وlogaddexp تحسب ln(exp(x)+exp(y))؛ ln للأساس e. [1] [2] [3]
ثبت أساس المدخلين والناتج قبل تبديل الدالة. [1] [2] [3]
المثال المؤلف
شغّلنا NumPy 2.3.5 على CPython 3.12.14؛ لكل نداء مدخلان جديدان من float64 بالشكل (1,). المثال x=0.875 وy=2.375.
أنشأنا مدخلين جديدين لكل واحد من المسارات الثلاثة، وحفظنا البايتات والقيم والشكل والنوع قبل كل نداء وبعده. بقيت المدخلات دون تغيير.
الاسم وحده لا يكفي
رجعت logaddexp2 بالقيمة 2.811751795439824، وlogaddexp على القيمتين نفسيهما بالقيمة 2.5764132779827524.
في المسار الثالث استُخدم c=0.6931471805599453؛ أعطى المدخلان المحولان 0.6065037829899521 و1.64622455382987 ناتج logaddexp خامًا 1.948957829443478. قسمته في Python على c أعطت 2.811751795439824.
الناتج الخام في المسار الثالث والقيمة بعد القسمة مرحلتان مختلفتان. نفذنا ثلاثة نداءات لكل حالة؛ القسمة الإضافية عملية Python وليست نداء NumPy رابعًا.

التحويل وحدود الدليل
بوضع c=ln(2)، نستخدم logaddexp(c*x,c*y)/c لتمثيل جمع الأساس اثنين؛ التحويل يطال المدخلين والناتج. [1] [2] [3]
في تحكم مستقل x=y=-1.625، رجعت logaddexp2 بالقيمة -0.625، وlogaddexp بالقيمة -0.9318528194400547؛ المسار المحول أعطى -0.6249999999999999.
رياضيًا، exp(c*x)=2**x عندما c=ln(2). لذلك ln(2**x+2**y)/ln(2) يعيد لوغاريتم المجموع للأساس اثنين. [1] [2] [3]
الشبكة هي x=i/4 وy=j/4، حيث i وj من -8 إلى 8 شاملًا: 17×17=289 زوجًا. المثال والتحكم خارج شبكة الأرباع، فأصبح الإجمالي 291 حالة و873 نداءً و873 قيمة ناتجة أصلًا؛ أضفنا 291 قسمة في Python.
بنى المرجع قيمًا مستقلة باستخدام exp وln في Decimal بدقة 90، دون دوال NumPy لتوليد التوقعات. لمسار التحويل، استعاد القيم العائمة الفعلية بعد الضرب باستخدام Decimal.from_float، وقسم على قيمة c العائمة نفسها.
مرت المقارنات بسماحية مطلقة 1e-13. بلغ أكبر فرق مرصود مع المرجع المحول إلى float، وأكبر فرق بين المسار المحول وlogaddexp2، مقدار 4.440892098500626e-16. هذه نتائج العينة، وليست ضمان دقة عامًّا.
القيمة -0.6249999999999999 في التحكم قريبة من -0.625 وليست مطابقة لها بوصفها float؛ فصلنا الهوية الرياضية عن تقريب الضرب والقسمة العائمين.
اقتصر الفحص على مدخلات محدودة معتدلة ومصفوفات float64 بالشكل (1,). لم نفحص مدخلات مفردة أو محاور أعلى أو بث الأشكال أو قيمًا هائلة أو غير منتهية أو مركبة أو float32 أو out وwhere أو الأداء والإصدارات الأخرى.
| المسار | المثال | التحكم |
|---|---|---|
| logaddexp2 | 2.811751795439824 | -0.625 |
| logaddexp دون تحويل | 2.5764132779827524 | -0.9318528194400547 |
| logaddexp بمدخلين محولين ثم قسمة c | 2.811751795439824 | -0.6249999999999999 |
للتوسع: خصائص اللوغاريتمات.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
