Описание
Вычисляет значение arcsin(x) в диапазоне [-пи/2, пи/2]. Значение аргумента x должно быть в диапазоне [-1, 1].
Использование
#include <math.h> double asin(double x); /* ANSI */
Возвращаемое значение
Возвращает значение arcsin от входного аргумента. Если значение меньше -1 или больше 1, устанавливает errno в EDOM, печатает DOMAIN сообщение об ошибке в stderr и возвращает 0. Обработку ошибки можно моди- фицировать посредством функции matherr.
Пример
#include <math.h> #include <stdio.h> main () { double x, y; x = .94; y = asin(x); printf("Арксинус от %f равен %fn", x, y); }
Рекомендация
Смотрите также atan, atan2, acos.
оглавление
Improve Article
Save Article
Improve Article
Save Article
Math.Asin() is an inbuilt Math class method which returns the angle whose sine value is given as a double value argument. If the argument is NaN, then the result will be NaN.
Syntax:
public static double Asin(double num)
Parameter:
num: It is the number that represents a sine and type of this parameter is System.Double. It must be greater than or equal to -1, but less than or equal to 1.
Return Type: Returns an angle Θ, measured in radians and its type is System.Double. Here the angle is always measured in radians, such that -π/2 ≤ Θ ≤ π/2.
Note: If the value of the num is greater than 1 or less than -1 or equals to NaN, then this method always returns NaN as result. To convert the radians(return value) to degrees multiply it by 180 / Math.PI. A positive return value always represents a counter clock-wise angle from the x-axis and a negative return value always represents a clockwise angle.
Examples:
Input : Math.Asin(2) Output : NaN Input : Math.Asin(0.3584) Output : 0.366553473829125 Input : Math.Asin(0.0) Output : 0 Input : Math.Asin(-0.0) Output : 0 Input : Math.Asin(Double.PositiveInfinity) Output : NaN Input : Math.Asin(Double.NegativeInfinity) Output : NaN
Program: To illustrate the Math.Asin() method
using
System;
class
Geeks {
public
static
void
Main(String[] args)
{
double
a = Math.PI;
Console.WriteLine(Math.Asin(a));
Console.WriteLine(Math.Asin(2));
Console.WriteLine(Math.Asin(0.3584));
double
d = 0.0;
double
e = -0.0;
double
posi = Double.PositiveInfinity;
double
nega = Double.NegativeInfinity;
double
nan = Double.NaN;
double
res = Math.Asin(d);
double
rest = res * (180 / Math.PI);
Console.WriteLine(rest);
Console.WriteLine(Math.Asin(e));
Console.WriteLine(Math.Asin(posi));
Console.WriteLine(Math.Asin(nega));
Console.WriteLine(Math.Asin(nan));
}
}
Output:
NaN NaN 0.366553473829125 0 0 NaN NaN NaN
Reference: https://msdn.microsoft.com/en-us/library/system.math.Asin
In the C Programming Language, the asin function returns the arc sine of x.
Syntax
The syntax for the asin function in the C Language is:
double asin(double x);
Parameters or Arguments
- x
- A value between -1 and 1. A domain error will occur if x is not between -1 and 1.
Returns
The asin function returns the arc sine of a number represented by x. It will return a value between -π/2 and π/2.
Required Header
In the C Language, the required header for the asin function is:
#include <math.h>
Applies To
In the C Language, the asin function can be used in the following versions:
- ANSI/ISO 9899-1990
asin Example
/* Example using asin by TechOnTheNet.com */ #include <stdio.h> #include <math.h> int main(int argc, const char * argv[]) { /* Define temporary variables */ double value; double result; /* Assign the value we will find the asin of */ value = 0.5; /* Calculate the Arc Sine of value */ result = asin(value); /* Display the result of the calculation */ printf("The Arc Sine of %f is %fn", value, result); return 0; }
When compiled and run, this application will output:
The Arc Sine of 0.500000 is 0.523599
Similar Functions
Other C functions that are similar to the asin function:
- acos function <math.h>
- atan function <math.h>
- atan2 function <math.h>
- cos function <math.h>
- sin function <math.h>
- tan function <math.h>
Defined in header |
||
(1) | ||
float asin ( float arg ); |
||
float asinf( float arg ); |
(since C++11) | |
double asin ( double arg ); |
(2) | |
(3) | ||
long double asin ( long double arg ); |
||
long double asinl( long double arg ); |
(since C++11) | |
double asin ( IntegralType arg ); |
(4) | (since C++11) |
1-3) Computes the principal value of the arc sine of arg
.
4) A set of overloads or a function template accepting an argument of any integral type. Equivalent to 2) (the argument is cast to double).
[edit] Parameters
[edit] Return value
If no errors occur, the arc sine of arg
(arcsin(arg)) in the range [- , +], is returned.
If a domain error occurs, an implementation-defined value is returned (NaN where supported)
If a range error occurs due to underflow, the correct result (after rounding) is returned.
[edit] Error handling
Errors are reported as specified in math_errhandling.
Domain error occurs if arg
is outside the range [-1.0, 1.0]
If the implementation supports IEEE floating-point arithmetic (IEC 60559),
- If the argument is ±0, it is returned unmodified
- If |arg| > 1, a domain error occurs and NaN is returned.
- if the argument is NaN, NaN is returned
[edit] Example
#include <cmath> #include <iostream> #include <cerrno> #include <cfenv> #include <cstring> #pragma STDC FENV_ACCESS ON int main() { std::cout << "asin(1.0) = " << asin(1) << 'n' << "2*asin(1.0) = " << 2*asin(1) << 'n' << "asin(-0.5) = " << asin(-0.5) << 'n' << "6*asin(-0.5) =" << 6*asin(-0.5) << 'n'; // special values std::cout << "asin(0.0) = " << asin(0) << " asin(-0.0)=" << asin(-0.0) << 'n'; // error handling errno = 0; std::feclearexcept(FE_ALL_EXCEPT); std::cout << "asin(1.1) = " << asin(1.1) << 'n'; if (errno == EDOM) std::cout << " errno == EDOM: " << std::strerror(errno) << 'n'; if (std::fetestexcept(FE_INVALID)) std::cout << " FE_INVALID raised" << 'n'; }
Possible output:
asin(1.0) = 1.5708 2*asin(1.0) = 3.14159 asin(-0.5) = -0.523599 6*asin(-0.5) = -3.14159 asin(0.0) = 0 asin(-0.0)=-0 asin(1.1) = nan errno == EDOM: Numerical argument out of domain FE_INVALID raised
[edit] See also
acosacosfacosl (C++11)(C++11) |
computes arc cosine (arccos(x)) (function) [edit] |
atanatanfatanl (C++11)(C++11) |
computes arc tangent (arctan(x)) (function) [edit] |
atan2atan2fatan2l (C++11)(C++11) |
arc tangent, using signs to determine quadrants (function) [edit] |
sinsinfsinl (C++11)(C++11) |
computes sine (sin(x)) (function) [edit] |
asin(std::complex) (C++11) |
computes arc sine of a complex number (arcsin(z)) (function template) [edit] |
asin(std::valarray) |
applies the function std::asin to each element of valarray (function template) [edit] |
C documentation for asin |
Craw 238 / 49 / 6 Регистрация: 10.06.2012 Сообщений: 268 Записей в блоге: 1 |
||||
1 |
||||
Вычислить арксинус угла в градусах02.11.2013, 23:42. Показов 12965. Ответов 8 Метки нет (Все метки)
Краткое описание: Компилируется без проблем, но во время работы возникает ошибка — входная строка имела неверный формат. Честно говоря, никак не могу понять, в чём дело, может быть ошибка где-то в вычислении?
0 |
chedman 81 / 80 / 9 Регистрация: 30.10.2013 Сообщений: 251 |
||||
03.11.2013, 08:43 |
2 |
|||
У меня это работает
0 |
238 / 49 / 6 Регистрация: 10.06.2012 Сообщений: 268 Записей в блоге: 1 |
|
03.11.2013, 14:53 [ТС] |
3 |
х и у должны быть равны: arcsin (sin x) = x, но у меня это не получается никак. Например, если у = 45, то х = -62217693,87. Всё верно только при у = 0 (х = 0). Прилагаю проект, чтобы могли увидеть проблему и помочь с решением.
0 |
chedman 81 / 80 / 9 Регистрация: 30.10.2013 Сообщений: 251 |
||||||||
03.11.2013, 15:56 |
4 |
|||||||
А почему у тебя
А не
1 |
Craw 238 / 49 / 6 Регистрация: 10.06.2012 Сообщений: 268 Записей в блоге: 1 |
||||
03.11.2013, 20:50 [ТС] |
5 |
|||
Да, спасибо, а то я и не заметил. Проблема теперь немного иного характера. Вычисляю arcsin x я так:
где y = sin a, x = a. При у = 1 ответ верный — х = 90. А вот при 0,5 (или 0.5) вместо 45 выдает ошибку — неверный формат строки. Не могу понять, почему отказывается работать с разделителями?
0 |
81 / 80 / 9 Регистрация: 30.10.2013 Сообщений: 251 |
|
03.11.2013, 21:05 |
6 |
Вроде нормальная строка кода, может вместо «180» написать «180.», хотя врятли.
0 |
238 / 49 / 6 Регистрация: 10.06.2012 Сообщений: 268 Записей в блоге: 1 |
|
03.11.2013, 21:15 [ТС] |
7 |
Скорее всего это так, где-то с типами. Но никак не могу найти. Вот проект (делаю калькулятор), буду очень благодарен, если посмотрите ошибку:
0 |
81 / 80 / 9 Регистрация: 30.10.2013 Сообщений: 251 |
|
03.11.2013, 21:25 |
8 |
поменяй 180 на 180.0
0 |
Craw 238 / 49 / 6 Регистрация: 10.06.2012 Сообщений: 268 Записей в блоге: 1 |
||||
03.11.2013, 21:35 [ТС] |
9 |
|||
причиной всех бед! Но всё равно спасибо за помощь, иногда бывает очень трудно разглядеть такие ошибки. Да и компилятор не помог, хотя тут явная ошибка, ничего не заподозрил.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
03.11.2013, 21:35 |
Помогаю со студенческими работами здесь Найти значение угла в градусах, минутах и секундах Описать функцию, которая вычисляет тангенс угла, введенного в градусах Известны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Найти величину угла в градусах, если дана его величина R в радианах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 9 |
Содержание
- Тригонометрические функции (синус, косинус, тангенс)
- Обратные тригонометрические функции (арккосинус, арксинус, арктангенс)
- Гиперболические функции (гаперболический косинус, гиперболический синус, гиперболический тангенс)
- Обратные гиперболические функции (ареакосинус, ареасинус, ареатангенс)
- Вычисление логарифмов в C#
- Методы округления чисел в C#
- Сравнение различных методов округления в C#
- Возведение в степень и извлечение корней в C#
- Прочие математические операции
- Константы класса Math
- Итого
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Статический класс Math
содержит ряд методов и констант для выполнения математических, тригонометрических, логарифмических и других операций. Так как класс статический, то и все его методы также являются статическими, т.е. вызывать эти методы можно без создания объекта типа Math
. Рассмотрим основные методы этого класса.
Все тригонометрические, обратные тригонометрические, гиперболические и обратные гиперболические методы в C# используют значения углов измеренных в радианах
Тригонометрические функции (синус, косинус, тангенс)
Cos(x)
— возвращает косинус указанного угла x
. Например,
x = Math.Cos(1);//0,5403023058681398 x = Math.Cos(0.5); //0,8775825618903728 x = Math.Cos(0.75);//0,7316888688738209 x = Math.Cos(-1);//0,5403023058681398
Sin(x)
— возвращает синус указанного угла x
. Например,
x = Math.Sin(1);//0,8414709848078965 x = Math.Sin(0.5); //0,479425538604203 x = Math.Sin(0.75);//0,6816387600233341 x = Math.Sin(-1);//-0,8414709848078965
Tan(x)
— возвращает тангенс указанного угла x
. Например,
x = Math.Tan(1);//1,5574077246549023 x = Math.Tan(0.5); //0,5463024898437905 x = Math.Tan(0.75);//0,9315964599440725 x = Math.Tan(-1);//-1,5574077246549023
Обратные тригонометрические функции (арккосинус, арксинус, арктангенс)
Acos(x)
— вычисляет арккосинус заданного числа. Параметр x должен находиться в диапазоне от -1 до 1. Значение, возвращаемое методом — радианы. Пример:
x = Math.Acos(1); //0 x = Math.Acos(0); //1,5707963267948966 x = Math.Acos(-1);//3,141592653589793 x = Math.Acos(0.5);//1,0471975511965979
Asin(x)
— вычисляет арксинус числа. Параметр x
должен находиться в диапазоне от -1 до 1. Например,
x = Math.Asin(1); //1,5707963267948966 x = Math.Asin(0); // 0 x = Math.Asin(10);//ошибка x>1 x = Math.Asin(-1);//-1,5707963267948966 x = Math.Asin(0.6);//0,6435011087932844
Atan(x)
— возвращает арктангенс числа. Значение, возвращаемое методом лежит в диапазоне от -Пи/2 до +Пи/2. Например,
x = Math.Atan(1); //0,7853981633974483 x = Math.Atan(0); //0 x = Math.Atan(10);//1,4711276743037347 x = Math.Atan(-1);//-0,7853981633974483 x = Math.Atan(0.6);//0,5404195002705842
Atan2(x, y)
— возвращает арктангенс для точки в декартовой системе координат с координатами (x,y
). Например,
x = Math.Atan2(1,1); //0,7853981633974483 x = Math.Atan2(1,-1); //2,356194490192345 x = Math.Atan2(-1,1);//-0,7853981633974483 x = Math.Atan2(-1,-1);//-2,356194490192345
Этот метод возвращает значение (θ), в зависимости от того, в каком квадранте располагается точка, а именно:
- для (
x
,y
) в квадранте 1: 0 < θ < π/2. - для (
x
,y
) в квадранте 2: π/2 < θ ≤ π. - для (
x
,y
) в квадранте 3: -π < θ < -π/2. - для (
x
,y
) в квадранте 4: -π/2 < θ < 0.
При этом стоит особо отметить, что точки могут лежать и за пределами указанных квадрантов, например, когда одна из координат равна нулю. В этом случае метод работает следующим образом:
- если
y
равно 0, иx
не является отрицательным, то θ = 0. - если
y
равно 0, иx
является отрицательным, то θ = π. - если
y
— положительное число, аx
равно 0, то θ = π/2. - если
y
— отрицательное число, ах
равно 0, то θ = -π/2. - если
y
равен 0, их
равен 0, то θ = 0.
Гиперболические функции (гаперболический косинус, гиперболический синус, гиперболический тангенс)
Cosh(x)
— вычисляет гиперболический косинус указанного угла
x = Math.Cosh(1);//1,5430806348152437 x = Math.Cosh(0.5); //1,1276259652063807 x = Math.Cosh(0.75);//1,2946832846768448 x = Math.Cosh(-1);//1,5430806348152437
Sinh(x)
— вычисляет гиперболический синус указанного угла
x = Math.Sinh(1);//1,1752011936438014 x = Math.Sinh(0.5); //0,5210953054937474 x = Math.Sinh(0.75);//0,82231673193583 x = Math.Sinh(-1);//-1,1752011936438014
Tanh(x)
— вычисляет гиперболический тангенс указанного угла
x = Math.Tanh(1);//0,7615941559557649 x = Math.Tanh(0.5); //0,46211715726000974 x = Math.Tanh(0.75);//0,6351489523872873 x = Math.Tanh(-1);//-0,7615941559557649
Обратные гиперболические функции (ареакосинус, ареасинус, ареатангенс)
Acosh(x)
— вычисляет ареакосинус. Параметр x
должен быть больше 1. Например,
x = Math.Acosh(1); //0 x = Math.Acosh(0); // ошибка - x<1 x = Math.Acosh(10);//2,993222846126381 x = Math.Acosh(3.14);//1,810991348900196 x = Math.Acosh(10000);//9,903487550036129
Asinh(x)
— вычисляет ареасинус. Например,
x = Math.Asinh(1);//0,881373587019543 x = Math.Asinh(0.5); //0,48121182505960347 x = Math.Asinh(0.75);//0,6931471805599453 x = Math.Asinh(-1);//-0,881373587019543
Atanh(x)
— вычисляет ареатангенс. Значение x должно быть в пределах от -1 до 1. Например,
x = Math.Atanh(-0.5);//-0,5493061443340549 x = Math.Atanh(0.5); //0,5493061443340549 x = Math.Atanh(0.75);//0,9729550745276566 x = Math.Atanh(-0.75);//-0,9729550745276566
ILogB(x)
— вычисляет целочисленный логарифм с основанием 2 указанного числа, то есть значение (int)log2(x)
.
x = Math.ILogB(15);//3
Log2(x)
— вычисляет логарифм с основанием 2 указанного числа.
x = Math.Log2(15);//3,9068905956085187
Log(x)
— вычисляет натуральный логарифм (с основанием e
) указанного числа.
x = Math.Log(15);//2,70805020110221
Log(x, y)
— вычисляет логарифм указанного числа x
по основанию y
.
x = Math.Log(15, 2);//3,9068905956085187
Log10(x)
— вычисляет логарифм с основанием 10 указанного числа
x = Math.Log10(15);//1,1760912590556813
Методы округления чисел в C#
Ceiling(x)
— возвращает наименьшее целое число, которое больше или равно заданному числу
x = Math.Ceiling(7.256);//8
Floor(x)
— возвращает наибольшее целое число, которое меньше или равно указанному числу
x = Math.Floor(7.256);//7
Round(x)
— округляет значение до ближайшего целого значения; значения посередине округляются до ближайшего четного числа
x = Math.Round(7.256);//7
Round(x, Int32 y)
— округляет значение до указанного числа знаков после запятой; значения посередине округляются до ближайшего четного числа.
x = Math.Round(7.256, 1);//7,3
Round(x, Int32 y, MidpointRounding)
— округляет значение до указанного числа дробных цифр, используя указанное соглашение о округлении
x = Math.Round(7.256, 2, MidpointRounding.ToZero);//7,25 x = Math.Round(7.256, 2, MidpointRounding.ToPositiveInfinity);//7,26 x = Math.Round(7.256, 2, MidpointRounding.ToNegativeInfinity);//7,25 x = Math.Round(7.256, 2, MidpointRounding.ToEven);//7,26
Round(x, MidpointRounding)
— округляет значение на целое число, используя указанное соглашение об округлении
x = Math.Round(7.256, MidpointRounding.ToZero);//7
Truncate(x)
— вычисляет целую часть заданного числа
x = Math.Truncate(7.256);//7
Сравнение различных методов округления в C#
7,256 | 7,556 | 7,5 | |
Ceiling(x) | 8 | 8 | 8 |
Floor(x) | 7 | 7 | 7 |
Round(x) | 7 | 8 | 8 |
Round(x, 2) | 7,26 | 7,56 | 7,5 |
Round(x, ToZero) | 7 | 7 | 7 |
Round(x, 2, ToZero) | 7,25 | 7,55 | 7,5 |
Round(x, 2, ToPositiveInfinity) | 7,26 | 7,56 | 7,5 |
Round(x, 2, ToNegativeInfinity) | 7,25 | 7,55 | 7,5 |
Round(x, 2, ToEven) | 7,26 | 7,56 | 7,5 |
Truncate(x) | 7 | 7 | 7 |
Возведение в степень и извлечение корней в C#
Cbrt(x)
— возвращает кубический корень из x
.
x = Math.Cbrt(27);//3
Exp(x)
— возвращает e
, возведенное в указанную степень x
.
x = Math.Exp(3);//20,085536923187668
Pow(x, y)
— возвращает число x
, возведенное в степень y
.
x = Math.Pow(3,3);//27
Sqrt(x)
— возвращает квадратный корень из числа x
.
x = Math.Sqrt(9);//3
Прочие математические операции
Abs(x)
— возвращает абсолютное значение числа
x = Math.Abs(-2.7);//2.7 x = Math.Abs(2.7);//2.7
BigMul(Int32, Int32)
— умножает два 32-битовых числа и возвращает значение в Int64
.
double x = Math.BigMul(Int32.MaxValue, Int32.MaxValue);//4,6116860141324206E+18
BitDecrement(x)
— возвращает ближайшее самое маленькое значение, которое меньше, чем x
.
x = Math.BitDecrement(1);//0,9999999999999999 x = Math.BitDecrement(-1);//-1,0000000000000002
BitIncrement(Double)
— возвращает наименьшее ближайшее значение, которое больше указанного значения
x = Math.BitIncrement(1);//1,0000000000000002 x = Math.BitIncrement(-1);//-0,9999999999999999
Clamp(x, min, max)
— Возвращает x
, ограниченное диапазоном от min
до max
включительно.
x = Math.Clamp(3, 5, 10);//5 x = Math.Clamp(4, 5, 10);//5 x = Math.Clamp(11, 5, 10);//10
CopySign(Double, Double)
— возвращает значение с величиной x
и знаком y
.
double x = Math.CopySign(-3, 5);//3 (знак + взят у 5) x = Math.CopySign(5, -10);//-5 (знак - взят у -10)
DivRem(Int32, Int32, Int32)
— Вычисляет частное чисел и возвращает остаток в выходном параметре
x = Math.DivRem(-3, 5, out int y);//x = 0; y = -3 x = Math.DivRem(10, 10, out int z);//x = 1; z = 0
FusedMultiplyAdd(x, y, z)
— возвращает значение (x * y) + z, округленное в рамках одной тернарной операции.
x = Math.FusedMultiplyAdd(10.4566d, 5.56012f, 10.83789f);//68,97784156904221 x = (10.4566d * 5.56012f) + 10.83789f; //68,9778415690422
Метод FusedMultiplyAdd
округляет значение один раз — в конце вычислений, в то время как обычное вычисление (x * y) + z вначале округляет значение, полученное в скобках, затем добавляет к полученному значению z и ещё раз округляет результат.
IEEERemainder(x, y)
— Возвращает остаток от деления одного указанного числа на другое указанное число
double x = Math.IEEERemainder(10, 3);//1
Функция IEEERemainder
не совпадает с оператором %
, который также вычисляет остаток от деления. Различие заключается в формулах, используемых при вычислениях. Оператор действует следующим образом:
a % b = (Math.Abs(а) - (Math.Abs(b) * (Math.Floor(Math.Abs(a) / Math.Abs(b))))) * Math.Sign(a)
в то время, как метод IEEERemainder
производит вычисления следующим образом:
IEEERemainder(а,b) = a-(b * Math.Round(a/b))
x = Math.IEEERemainder(-16.3, 4.1);//0,09999999999999787 x = -16.3 % 4.1;//-4,000000000000002
Max(x, y)
— возвращает большее из чисел
x = Math.Max(-16.3, 4.1);//4,1 x = Math.Max(10, 5);//10
MaxMagnitude(x, y)
— возвращает большую величину из двух чисел двойной точности с плавающей запятой. При сравнении двух чисел не учитывается знак
x = Math.MaxMagnitude(-16.3, 4.1);//-16,3 x = Math.MaxMagnitude(10, 5);//10
Min(Byte, Byte)
— возвращает меньшее из двух чисел
x = Math.Min(-16.3, 4.1);//-16,3 x = Math.Min(10, 5);//5
MinMagnitude(x, y)
— возвращает меньшую величину из чисел. При сравнении не учитывается знак
x = Math.MinMagnitude(-16.3, 4.1);//4.1 x = Math.MinMagnitude(10, -5);//-5
ScaleB(x, y)
— Возвращает значение x * 2^n, вычисленное наиболее эффективно.
x = Math.ScaleB(-16.3, 8);//4172,8
Sign(x)
— возвращает целое число, указывающее знак десятичного числа.
x = Math.Sign(-16.3);//-1 x = Math.Sign(10);//1 x = Math.Sign(0);//0
Константы класса Math
В классе Math также определены две константы — E
и PI
:
x = Math.E;//2,718281828459045 x = Math.PI;//3,141592653589793
Итого
В статическом классе Math
содержатся функции для тригонометрических, гиперболических и прочих вычислений. Кроме этого, класс содержит ряд методов округления чисел как в большую, так и меньшую сторону, а также методы для возведения чисел в степень и вычисления корней.
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
The asin() function returns the arc sine (inverse sine) of a number in radians.
The asin()
function takes a single argument (1 ≥ x ≥ -1), and returns the arc sine in radians. Mathematically, asin(x) = sin-1(x)
.
The asin()
function is included in <math.h>
header file.
asin() Prototype
double asin(double x);
To find arc sine of type int
, float
or long double
, you can explicitly convert the type to double
using cast operator.
int x = 0; double result; result = asin(double(x));
Also, two functions asinf() and asinl() were introduced in C99 to work specifically with type float
and long double
respectively.
float asinf(float x); long double asinl(long double x);
asin() Parameter
The asin()
function takes a single argument in the range of [-1, +1]. It’s because the value of sine is in the range of 1 and -1.
Parameter | Description |
---|---|
double value | Required. A double value between — 1 and +1 inclusive. |
asin() Return Value
The asin()
functions returns the value in range of [-π/2, +π/2] in radians. If the parameter passed to the asin()
function is less than -1 or greater than 1, the function returns NaN (not a number).
Parameter (x) | Return Value |
---|---|
x = [-1, +1] | [-π/2, +π/2] in radians |
-1 > x or x > 1 | NaN (not a number) |
Example 1: asin() function with different parameters
#include <stdio.h>
#include <math.h>
int main()
{
// constant PI is defined
const double PI = 3.1415926;
double x, result;
x = -0.5;
result = asin(x);
printf("Inverse of sin(%.2f) = %.2lf in radiansn", x, result);
// converting radians to degree
result = asin(x)*180/PI;
printf("Inverse of sin(%.2f) = %.2lf in degreesn", x, result);
// paramter not in range
x = 1.2;
result = asin(x);
printf("Inverse of sin(%.2f) = %.2lf", x, result);
return 0;
}
Output
Inverse of sin(-0.50) = -0.52 in radians Inverse of sin(-0.50) = -30.00 in degrees Inverse of sin(1.20) = nan
Example 2: asinf() and asinl() function
#include <stdio.h>
#include <math.h>
int main()
{
float fx, fasinx;
long double lx, ldasinx;
// arc sinine of type float
fx = -0.505405;
fasinx = asinf(fx);
// arc sinine of type long double
lx = -0.50540593;
ldasinx = asinf(lx);
printf("asinf(x) = %f in radiansn", fasinx);
printf("asinl(x) = %Lf in radians", ldasinx);
return 0;
}
Output
asinf(x) = -0.529851 in radians asinl(x) = -0.529852 in radians