tan, tanf, tanl
من cppreference.com
<tbody>
</tbody>
| معرفة في ملف <math.h>
|
||
float tanf( float arg ); |
(1) | (منذ C99) |
double tan( double arg ); |
(2) | |
long double tanl( long double arg ); |
(3) | (منذ C99) |
| معرفة في ملف <tgmath.h>
|
||
#define tan( arg ) |
(4) | (منذ C99) |
1-3) تحسب ظل الزاوية
arg (وحدة القياس هو القياس الدائري).4) ماكرو عام النوع: إذا كان المعطى من النوع
long double يتم استدعاء tanl. أما إذا كان المعطى عدد صحيح أو من النوع double يتم استدعاء tan. فيما عدا ذلك يتم استدعاء tanf. إذا كان المعطى عددا مركبا يتم استدعاء الدالة المركبة المناسبة (ctanf أو ctan أو ctanl).المعطيات
| arg | - | عدد ذو فاصلة عائمة يعبر عن زاوية مقاسة بالتقدير الدائري |
القيمة المُرجعة
في حالة النجاح, تُرجع ظل الزاوية arg ويكون الناتج في الفترة [-1 ; +1].
|
الناتج لا يعتد به إذا كانت القيمة المطلقة لـ |
(until C++11) |
لو كان هناك خطأ في المجال يتم إرجاع قيمة تحددها البيئة (غالبا NaN على الأنظمة الداعمة لذلك). لو كان هناك خطأ في المدى نتيجة الطفح لأسفل (Underflow) يتم إرجاع القيمة الصحيحة بعد التقريب.
التعامل مع الأخطاء
يتم الإبلاغ عن الأخطاء كما هو موضح في math_errhandling.
إذا كانت البيئة تدعم حسابات الفاصلة العائمة طبقا للـ IEEE (المعيار IEC 60559 تحديدا):
- لو كان المعطى ±0 يتم إرجاعه دون تعديل
- لو كان المعطى ±∞ يتم إرجاع NaN ورفع الإشارة FE_INVALID
- لو كان المعطى NaN يتم إرجاع NaN
ملحوظات
لا يحدد المعيار سلوك حال كون الزاوية لا نهائية. POSIX على النقيض تعتبره خطأ في المجال.
الدالة لها أقطاب رياضية عند π(1/2 + n); لكن بسبب أنه لا يمكن التعبير عن π/2 بالضبط باستخدام عدد ذو فاصلة عائمة لا يوجد قيمة تؤدي إلى خطأ قطبي.
مثال
قم بتشغيل هذا الكود:
#include <stdio.h>
#include <math.h>
#include <errno.h>
#include <fenv.h>
#pragma STDC FENV_ACCESS ON
int main(void)
{
double pi = acos(-1);
// typical usage
printf("tan (pi/4) = %+f\n", tan( pi/4)); // 45 deg
printf("tan(3*pi/4) = %+f\n", tan(3*pi/4)); // 135 deg
printf("tan(5*pi/4) = %+f\n", tan(5*pi/4)); // -135 deg
printf("tan(7*pi/4) = %+f\n", tan(7*pi/4)); // -45 deg
// special values
printf("tan(+0) = %f\n", tan(0.0));
printf("tan(-0) = %f\n", tan(-0.0));
// error handling
feclearexcept(FE_ALL_EXCEPT);
printf("tan(INFINITY) = %f\n", tan(INFINITY));
if(fetestexcept(FE_INVALID)) puts(" FE_INVALID raised");
}
خرج ممكن:
tan (pi/4) = +1.000000
tan(3*pi/4) = -1.000000
tan(5*pi/4) = +1.000000
tan(7*pi/4) = -1.000000
tan(+0) = 0.000000
tan(-0) = -0.000000
tan(INFINITY) = -nan
FE_INVALID raised
أنظر أيضا
(C99)(C99) |
تحسب جيب الزاوية (sin(x)) (دالة) |
(C99)(C99) |
تحسب جيب تمام الزاوية (cos(x)) (دالة) |
(C99)(C99) |
تحسب معكوس ظل الزاوية (ظل تمام الزاوية) (arctan(x)) (دالة) |
(C99)(C99)(C99) |
computes the complex tangent (دالة) |
مقالة مرجع C++ عن tan
| |