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 εξαναγκάζει το όρισμα μέσω των τυπικών κανόνων μετατροπής συμβολοσειράς σε αριθμό πριν καλέσει τη ρουτίνα C
exp(3). Τα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για θετικό$xsqrt- τετραγωνική ρίζα·sqrt($x) == exp(log($x)/2)για θετικό$xsin- ημίτονο, η άλλη μοναδιαία υπερβατική ενσωματωμένη συνάρτησηcos- συνημίτονο· μαζί με τιςsinκαιexpκαλύπτει τις τυπικές υπερβατικές συναρτήσεις που είναι διαθέσιμες χωρίς άρθρωμαabs- απόλυτη τιμή, χρήσιμη όταν τροφοδοτείτε μια προσημασμένη ποσότητα στηlogμετά από χειρισμό βασισμένο σεexp$_- προεπιλεγμένο όρισμα όταν ηexpκαλείται χωρίς ρητό τελεστέο