sinh, sinhf, sinhl
من cppreference.com
معرفة في ملف <math.h>
|
||
float sinhf( float arg ); |
(1) | (منذ C99) |
double sinh( double arg ); |
(2) | |
long double sinhl( long double arg ); |
(3) | (منذ C99) |
معرفة في ملف <tgmath.h>
|
||
#define sinh( arg ) |
(4) | (منذ C99) |
1-3) تحسب جيب الزاوية الزائدي
arg
(وحدة القياس هو القياس الدائري).4) ماكرو عام النوع: إذا كان المعطى من النوع long double يتم استدعاء
sinhl
. أما إذا كان المعطى عدد صحيح أو من النوع double يتم استدعاء sinh
. فيما عدا ذلك يتم استدعاء sinhf
. إذا كان المعطى عددا مركبا يتم استدعاء الدالة المركبة المناسبة (csinhf أو csinh أو csinhl).محتويات |
[تعديل] المعطيات
arg | - | عدد ذو فاصلة عائمة يعبر عن زاوية مقاسة بالتقدير الدائري |
[تعديل] القيمة المُرجعة
في حالة النجاح, تُرجع جيب الزاوية الزائديarg
أي earg -e-arg |
2 |
لو كان الفشل نتيجة للطفح (Overflow) يتم إرجاع ±HUGE_VAL
أو ±HUGE_VALF
أو ±HUGE_VALL
.
لو كان هناك خطأ في المدى نتيجة الطفح لأسفل (Underflow) يتم إرجاع القيمة الصحيحة بعد التقريب.
[تعديل] التعامل مع الأخطاء
يتم الإبلاغ عن الأخطاء كما هو موضح في math_errhandling.
إذا كانت البيئة تدعم حسابات الفاصلة العائمة طبقا للـ IEEE (المعيار IEC 60559 تحديدا):
- لو كان المعطى ±0 أو ±∞ يتم إرجاعه دون تعديل
- لو كان المعطى NaN يتم إرجاع NaN
[تعديل] ملحوظات
تشترط POSIX أن يتم إرجاع arg
كما هي في حالة الـ Underflow. مالم يكن ذلك ممكنا يتم إرجاع قيمة تحددها البيئة بشرط ألا تزيد عن DBL_MIN و FLT_MIN و LDBL_MIN.
[تعديل] مثال
قم بتشغيل هذا الكود:
#include <stdio.h> #include <math.h> #include <errno.h> #include <fenv.h> #pragma STDC FENV_ACCESS ON int main(void) { printf("sinh(1) = %f\nsinh(-1)=%f\n", sinh(1), sinh(-1)); printf("log(sinh(1) + cosh(1))=%f\n", log(sinh(1)+cosh(1))); // special values printf("sinh(+0) = %f\nsinh(-0)=%f\n", sinh(0.0), sinh(-0.0)); // error handling errno=0; feclearexcept(FE_ALL_EXCEPT); printf("sinh(710.5) = %f\n", sinh(710.5)); if(errno == ERANGE) perror(" errno == ERANGE"); if(fetestexcept(FE_OVERFLOW)) puts(" FE_OVERFLOW raised"); }
خرج ممكن:
sinh(1) = 1.175201 sinh(-1)=-1.175201 log(sinh(1) + cosh(1))=1.000000 sinh(+0) = 0.000000 sinh(-0)=-0.000000 sinh(710.5) = inf errno == ERANGE: Numerical result out of range FE_OVERFLOW raised
[تعديل] أنظر أيضا
(C99)(C99) |
تحسب جيب تمام الزاوية الزائدي (ch(x)) (دالة) |
(C99)(C99) |
تحسب ظل الزاوية الزائدي (دالة) |
(C99)(C99)(C99) |
تحسب معكوس جيب الزاوية الزائدي (قاطع تمام الزاوية الزائدي) (arsinh(x)) (دالة) |
(C99)(C99)(C99) |
تحسب جيب الزاوية المركبة الزائدي (دالة) |
مقالة مرجع C++ عن sinh
|