exp#
מעלה את e בחזקה.
exp מחזיר את e (בסיס הלוגריתמים הטבעיים, בערך 2.718281828459045) המועלה בחזקת EXPR. הוא ההיפוך של log: עבור כל $x חיובי וסופי, exp(log($x)) משחזר את $x בכפוף לעיגול נקודה צפה. ללא ארגומנט, exp פועל על $_.
תקציר#
exp EXPR
exp
מה מקבלים בחזרה#
מספר בנקודה צפה בדיוק כפול. התוצאה תמיד אי־שלילית: exp(0) == 1, exp של כל ערך חיובי גדול מ־1, ו־exp של כל ערך שלילי נמצא בקטע הפתוח (0, 1).
בכל יעד Linux ש־pperl תומך בו, הטיפוס הבסיסי הוא IEEE 754 binary64, ולכן טווח התוצאות הסופיות הוא בערך 5e-324 עד 1.7976931348623157e+308. ארגומנטים מעל בערך 709.78 עוברים גלישה ל־Inf; ארגומנטים מתחת בערך -745 עוברים תת־גלישה ל־0.0.
דוגמאות#
לקבל את e עצמו, ולוודא את הנסיעה חזור מול log:
my $e = exp(1); # 2.718281828459045
printf "%.15f\n", exp(log(42)); # 42.000000000000000
הצורה ללא־ארגומנט קוראת את $_:
for (1, 2, 3) {
printf "exp(%d) = %.6f\n", $_, exp;
}
# exp(1) = 2.718282
# exp(2) = 7.389056
# exp(3) = 20.085537
ניתן להרכיב עם פונקציות מספריות מובנות אחרות. הסינוס ההיפרבולי, למשל, אין לו אופרטור ייעודי אך הוא נובע מ־exp:
sub sinh { (exp($_[0]) - exp(-$_[0])) / 2 }
printf "%.6f\n", sinh(1); # 1.175201
גלישה בקצה העליון של טווח IEEE 754:
print exp(709), "\n"; # 8.21840746949e+307
print exp(710), "\n"; # Inf
תת־גלישה בקצה התחתון:
print exp(-745), "\n"; # 5e-324 (smallest subnormal)
print exp(-746), "\n"; # 0
מקרי קצה#
ארגומנט חיובי גדול מאוד: כל ארגומנט גדול מבערך
709.78מפיקInf.Infמתפשט דרך אריתמטיקה נוספת (Inf + 1 == Inf,Inf - InfהואNaN) ומומר למחרוזת כ־"Inf".ארגומנט שלילי מאוד: ארגומנטים מתחת לבערך
-745עוברים תת־גלישה ל־0.0. ערכים שביניהם מוצגים כמספרי נקודה צפה דנורמליים עם דיוק שמתקצר בהדרגה.קלט
NaN:exp(NaN)הואNaN.NaNמשווה כלא־שווה לכל דבר כולל עצמו - בדקו עםScalar::Util::looks_like_numberאו$x != $xבמקום==.exp(0)הוא בדיוק1, לא קירוב מעוגל.ארגומנט לא־מספרי: Perl ממיר את הארגומנט באמצעות כללי המרת המחרוזת־למספר הסטנדרטיים לפני קריאה לשגרת
exp(3)של C.exp("")ו־exp("abc")הם לפיכךexp(0) == 1, עם אזהרתArgument "…" isn't numericתחתuse warnings. מחרוזת מספרית מובילה כמו"3.5xyz"הופכת ל־3.5, שוב עם אזהרה.ארגומנט
undef: מומר ל־0, מניב1, עם אזהרתuninitializedתחתuse warnings.הקשר רשימה:
expהיא פונקציה מספרית חד־ארגומנטית. היא מתעלמת מהקשר רשימה ותמיד מחזירה סקלר יחיד.my @r = exp(2)מכניס איבר אחד אל@r.
הבדלים מ־upstream#
תואם מלא ל־upstream Perl 5.42.
ראו גם#
log- לוגריתם טבעי, ההיפוך שלexp;exp(log($x)) == $xעבור$xחיוביsqrt- שורש ריבועי;sqrt($x) == exp(log($x)/2)עבור$xחיוביsin- סינוס, הפונקציה הטרנסצנדנטית החד־ארגומנטית המובנית האחרתcos- קוסינוס; יחד עםsinו־expמכסה את הטרנסצנדנטיים הסטנדרטיים הזמינים ללא מודולabs- ערך מוחלט, שימושי בעת הזנת כמות עם סימן אלlogלאחר מניפולציה מבוססתexp$_- ארגומנט ברירת מחדל כש־expנקרא ללא אופרנד מפורש