nexttoward, nexttowardf, nexttowardl – поиск ближайшего допустимого значения.
Синтаксис:
#include < math.h >
double nexttoward (double x, double y);
float nexttowardf (float x, float y);
long double nexttowardl (long double x, long double y);
Аргументы:
x – переменная, относительно которой осуществляется поиск.
y – переменная, определяющая направление поиска.
Возвращаемое значение:
Наименьшее допустимое число большее аргумента x, если x меньше y.
Наибольшее допустимое число меньшее аргумента x, если x больше y.
Из двух ближайших к аргументу x чисел будет возвращено наиболее удаленное, если x равен y.
nan – если один из аргументов или оба аргумента не числа (NAN).
HUGE_VAL, если аргумент x - бесконечность. HUGE_VAL возвращает функция nexttoward. Функции nexttowardf и nexttowardl возвращают HUGE_VALF и HUGE_VALL соответственно.
-HUGE_VAL, если аргумент x – минус бесконечность. -HUGE_VAL возвращает функция nexttoward. Функции nexttowardf и nexttowardl возвращают -HUGE_VALF и -HUGE_VALL соответственно.
Описание:
Числа с плавающее точкой определенные типами float, double и long double имеют ограниченную точность зависящую от типа числа, а следовательно и минимально допустимый дискрет изменения.
Функции nexttoward, nexttowardf, nexttowardl определяют ближайшие к аргументу x допустимые значения отличные от аргумента x. Направление поиска определяется аргументом y. То есть, если y больше x, то будет искаться допустимое значение минимально большее аргумента x. Если y меньше x, то будет искаться максимальное допустимое значение меньшее аргумента x.
Отличие от функций nextafter, nextafterf, nextafterl заключается в возвращаемом значении при равенстве аргументов x и y. Так у функций nextafter, nextafterf, nextafterl будет возвращено ближайшее к аргументу x допустимое число, а у функций nexttoward, nexttowardf, nexttowardl из двух ближайших к аргументу x чисел будет возвращено наиболее удаленное.
Между собой функции отличаются типом аргументов и возвращаемых значений, а соответственно и шагом минимального дискрета. Так аргументы и возвращаемое значение функции nexttoward являются числами с плавающей точкой двойной точности (тип double, точность не менее десяти значащих десятичных цифр, разрядность - 64).
Аргументы и возвращаемое значение функции nexttowardf являются числами с плавающей точкой (тип float, точность не менее шести значащих десятичных цифр, разрядность - 32).
Аргументы и возвращаемое значение функции nexttowardl являются числами с плавающей точкой повышенной точности (тип long double, точность не менее десяти значащих десятичных цифр, разрядность - 80).
Пример:
В примере ищется значение минимально большее десяти для различных типов переменных с плавающей точкой с помощью функций nexttoward, nexttowardf, nexttowardl и результат выводится на консоль.
#include < stdio.h > //Для printf
#include < math.h > //Для nexttoward, nexttowardf, nexttowardl
int main (void)
{
printf (“Аргументы: 10 и 12”);
//Ищем минимально большее 10 значение для типа float
printf (“nexttowardf: %.20f\n", nexttowardf (10,12) );
//Ищем минимально большее 10 значение для типа double
printf (“nexttoward : %.20f\n", nexttoward (10,12) );
//Ищем минимально большее 10 значение для типа long double
printf (“nexttowardl: %.20Lf\n", nexttowardl (10,12) );
return 0;
}
| |
Результат:
Аргументы: 10 и 12
nexttowardf: 10.00000095367431640625
nexttoward : 10.00000000000000177636
nexttowardl: 10.00000000000000000087
|
Смотри так же:
nextafter, nextafterf, nextafterl
nexttoward, nexttowardf, nexttowardl
|