Минус бесконечность
Заполнить массив единицами и минус единицами и поменять единицы и минус единицы местами
Помогите решить задачу,не могу понять как заполнить массив единицами и минус единицами в случайном.
Бесконечность
Есть значит функция нахождения интеграла Симпсоном, мне нужно посчитать интеграл от sin(x)/x на.
Погрешность и бесконечность
Как задать в программе бесконечность(infinity) и погрешность (EPS) например для типа float?
Программа выводит бесконечность
#include <iostream> #include <cmath> using namespace std; double f(double x) < return.
Нарушитель
8936 / 4800 / 1111
Регистрация: 12.03.2015
Сообщений: 22,645
Сообщение от VladosYetti
Есть аналог 0x3f3f3f3f (условная бесконечность)
Чот я не слышал про такое, хотя работаю программистом уже 20 лет.
Дай ссылку, хоть почитаю, интересно жэж.
Регистрация: 27.08.2020
Сообщений: 34
Verevkin, для алгоритмов Форда-Фолкерсона, Форда-Беллмана , Дейкстры и др. берут условно бесконечность как 10e9 или 0x3f3f3f3f. Мне просто стало интересно есть конст 0x3f3f3f3f только с минусом
Чтобы не писать какой-то моветон const int negativeINF = -0x3F3F3F3F;
https://www.google.com.ua/amp/. f3f3f/amp/
Нарушитель
8936 / 4800 / 1111
Регистрация: 12.03.2015
Сообщений: 22,645
Сообщение от VladosYetti
для алгоритмов Форда-Фолкерсона, Форда-Беллмана , Дейкстры и др.
кто все эти люди?
Сообщение от VladosYetti
берут условно бесконечность как 10e9 или 0x3f3f3f3f.
Мне, почему-то, кажется, что 10 9 = 0х3B9ACA00.
Сообщение от VladosYetti
Чтобы не писать какой-то моветон const int negativeINF = -0x3F3F3F3F;
А паркуа бы не па?
Регистрация: 27.08.2020
Сообщений: 34
Verevkin, есть что-то подобное или нет?
11126 / 6084 / 1663
Регистрация: 18.10.2014
Сообщений: 15,294
Сообщение от VladosYetti
для алгоритмов Форда-Фолкерсона, Форда-Беллмана , Дейкстры и др. берут условно бесконечность как 10e9 или 0x3f3f3f3f. Мне просто стало интересно есть конст 0x3f3f3f3f только с минусом
Что за белиберда? Никакого 0x3f3f3f3f здесь нет и никогда не было. Ничего общего между 10e9 и 0x3f3f3f3f нет. Никто никогда никакого 0x3f3f3f3f в этой роли не «брал».
Если вы хотите использовать к качестве бесконечности 10e9 , то используйте на здоровье. Тогда отрицательной бесконечностью, разумеется, будет -10e9 . Вот и все.
Сообщение от Verevkin
Мне, почему-то, кажется, что 10 9 = 0х3B9ACA00.
10e9 = 1e10 = 0x501502f9
0х3B9ACA00 = 0.0047237873077392578125
0x3f3f3f3f = 0.747058808803558349609375
2771 / 1924 / 570
Регистрация: 05.06.2014
Сообщений: 5,582
Используйте std::numeric_limits
713 / 416 / 205
Регистрация: 19.12.2016
Сообщений: 1,665
Я в темах систем исчисления почти ноль. Но нашел вот что.
Никогда не используйте INT_MAX в качестве бесконечности для целых чисел. В некоторых алгоритмах, например, Флойда–Уоршелла, используются значения вроде ∞+w, что приведёт к переполнению при использовании INT_MAX. Вместо этого лучше использовать int oo = 0x3f3f3f3f, поскольку:
Это число достаточно большое для задач, связанных с целыми числами;
2 * oo не приведёт к переполнению;
Все байты равны, поэтому вы без проблем можете использовать memset(array, oo, sizeof(array));
Его довольно легко запомнить.
Может это поможет понять о чем просит ТС.
11126 / 6084 / 1663
Регистрация: 18.10.2014
Сообщений: 15,294
Сообщение от ram876
Может это поможет понять о чем просит ТС.
Ну то есть ТС, вместо того, чтобы вменяемо объяснить, что ему нужно, упомянул 10e9 и тем самым сбил всех с толку.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
С++ и бесконечность простых чисел
Тысячи лет назад математики знали, что количество простых числ бесконечно и придумали простое.
почему в программе бесконечность получается
// ConsoleApplication11.cpp : Defines the entry point for the console application. // #include.
Машинные ноль, эпсилон и бесконечность
Здравствуйте! Помогите пожалуйста разобраться что это такое и с чем его едят? я видел на вики.
Повторять действие бесконечность раз
У меня есть одна программа С++. Там есть ветвление. Как мне сделать так, чтобы при выборе.
Бесконечность вместо чисел, coutСчитаю комплексные в цикле. z,с заданы. for(int i=0;i<20;i++) < cout << "z=" << z << '\n';.
Второй цикл у меня уходит в бесконечность! Как исправить
Напишите программу, запрашивающую у пользователя N целых чисел и выводящую на экран: а) количество.
Бесконечность double 1.#INF?
> Что из себя представляет это значение в памяти? ближайший гугл, IEEE 754 > Infinity The values +infinity and -infinity are denoted with an exponent of all 1s and a fraction of all 0s. The sign bit distinguishes between negative infinity and positive infinity. Being able to denote infinity as a specific value is useful because it allows operations to continue past overflow situations. Operations with infinite values are well defined in IEEE floating point.
21 мар 2015 в 20:59
Жаль нельзя минус поставить за коммент. На русский переводите, я же не на англ. форуме вопрос задаю. Хочется прочитать коммент на русском, а не ссылку на стандарт.
21 мар 2015 в 21:11
@manking ужасно. Вроде и ответ принес, но нет — недостаточно постарался, все-таки минус. Из чего состоит double/float? Из знака (1 бит), экспоненты (11/8 бит) и мантиссы (52/23 бит). Для значений «бесконечность» зарезервированы состояния, в которых все биты экспоненты выставлены в 1, а все биты мантиссы — в ноль. вики для стопроцентности ru.wikipedia.org/wiki/…
21 мар 2015 в 21:37
@Etki Вот так лучше. А как проверить на бесконечность, используя конструкции языка? Это возможно или нет?
21 мар 2015 в 22:02
@manking, без умения хотя бы читать и понимать английский Вам в сфере IT ничего не светит.
21 мар 2015 в 23:36
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Согласно стандарту языка C++, способ представления типов с плавающей точкой (floating-point types) определяется реализацией. Можно воспользоваться статическим членом is_iec559 шаблонного класса std::numeric_limits для проверки соответствия некоторого типа стандарту IEEE 754-2008:
std::numeric_limits::is_iec559
Он равен true если тип соответствует требованиям IEEE 754-2008. Далее в ответе предполагается, что тип double удовлетворяет требованиям этого стандарта.
Так вот, если поделить 1.0 на 0.0 , то получится положительная бесконечность (Infinity). Один из возможных способов, которым реализация посредством std::cout может отобразить бесконечность — это 1.#INF .
Разность двух бесконечностей с одинаковым знаком — это NaN . Один из возможных способов, которым реализация посредством std::cout может отобразить NaN — это -1.#IND .
- Переменная ind в вашем примере равна NaN . NaN не равен ничему, включая самого себя. Вот почему выражение ind != ind равно true .
- Конструкцию if(ind != ind) можно использовать для проверки на NaN , но не на бесконечность. Начиная с C++11, в заголовочном файле есть функция std::isnan для проверки на NaN и функция std::isinf для проверки на бесконечность.
- И NaN ‘ы и бесконечности хранятся в памяти также как и все остальные числа с плавающей точкой: бит знака, биты экспоненты и биты мантиссы. Если все биты экспоненты установлены в 1 , а все биты мантиссы установлены в 0 , то это бесконечность (положительная или отрицательная, в зависимости от знакового бита). Если все биты экспоненты установлены в 1 , а среди битов мантиссы есть хотя бы один не нулевой, то это NaN .
- Операторы < , = , > возвращают false в случае, если по крайней мере один из операндов NaN . Поэтому все выражения ind < 5.4 , ind == 5.4 , ind >5.4 возвращают false . Бесконечности же сравниваются обычным образом: −Infinity < every_finite_number < +Infinity .
Стандарт языка C++ не особо требователен к типам с плавающей точкой. Многие аспекты поведения таких типов определяются реализацией. Например, стандарт IEEE 754-2008 разрешает, чтобы в случае, если один из операндов бинарного > — NaN , то генерировалось исключение.
При работе с числами с плавающей точкой, стоит помнить про возможные агрессивные оптимизации, которые компилятор может применить. Например, в Visual Studio, при использовании опции /fp:fast компилятор запросто может выражение pinf — pinf заменить нулём (что в случае, если pinf равен бесконечности или NaN — не верно), а выражение ind != ind заменить на false (что в случае, если ind равен NaN — не верно).
Как задать бесконечность в c
Просмотр профиля
3.12.2008, 21:25
Группа: Участник
Сообщений: 98
Регистрация: 5.10.2008
Пользователь №: 380
Репутация: 1
Есть такой вопрос. увидел в одном исходнике на паскале, что «машинную бесконечность» задали как: 1.E+30.
Как можно задать бесконечность в C++? Возможно ли это? Главное, чтобы это число было самым большим из возможных типа int.
опции профиля:
Просмотр профиля
3.12.2008, 21:52
Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64
Репутация: 94
Цитата(++Norton++ @ 4.12.2008, 0:25)
это 4 байта
опции профиля:
Просмотр профиля
3.12.2008, 22:21
Группа: Участник
Сообщений: 98
Регистрация: 5.10.2008
Пользователь №: 380
Репутация: 1
Т.е. к примеру, какое число можно взять? Тогда 99999999 будет самым большим возможным?
Сообщение отредактировал ++Norton++ — 3.12.2008, 22:23
опции профиля:
Просмотр профиля
4.12.2008, 1:47
Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193
Репутация: 3
самым большим будет число примерно чуть больше двух миллиардов
опции профиля:
Просмотр профиля
4.12.2008, 6:53
Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64
Репутация: 94
вообще должны быть константы определены в инклюдах компиллера, вот только названия не помню.
нашел, см. limits.h у своего компилятора, у меня есть такие макросы:
#define SCHAR_MIN (-128)
#define SCHAR_MAX 127
#define UCHAR_MAX 255
/* TODO: Is this safe? I think it might just be testing the preprocessor,
* not the compiler itself. */
#if ('\x80' < 0)
#define CHAR_MIN SCHAR_MIN
#define CHAR_MAX SCHAR_MAX
#else
#define CHAR_MIN 0
#define CHAR_MAX UCHAR_MAX
#endif
/*
* Maximum and minimum values for ints.
*/
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX-1)
#define UINT_MAX 0xffffffff
/*
* Maximum and minimum values for shorts.
*/
#define SHRT_MAX 32767
#define SHRT_MIN (-SHRT_MAX-1)
#define USHRT_MAX 0xffff
/*
* Maximum and minimum values for longs and unsigned longs.
*
* TODO: This is not correct for Alphas, which have 64 bit longs.
*/
#define LONG_MAX 2147483647L
#define LONG_MIN (-LONG_MAX-1)
#define ULONG_MAX 0xffffffffUL
опции профиля:
Как задать бесконечность в c
т.е. это по сути задание прямой в параметрической форме (point+t*direction)
на самом деле, с математической точки зрения, если сюда добавить ограничения параметра t,
то получим возможность задавать прямую(t in (-inf, +int)), луч (t in [0, +int)), отрезок (t in [0, 1] или t in [const1, const2])
неуверенность в том, что значения inf предполагается задавать как:
double pos_inf = numeric_limitsdouble>::max(); double neg_inf = -numeric_limitsdouble>::max(); //есть ли тут какие подводные камни?
Re: +- бесконечность
От: | Кодт | |
Дата: | 08.06.10 15:55 | |
Оценка: | +4 |
Здравствуйте, kvser, Вы писали:
Тогда уж std::numeric_limits::infinity() или сишная константа INFINITY
Перекуём баги на фичи!
Re: +- бесконечность
От: | dilmah |
Дата: | 08.06.10 16:11 |
Оценка: |
K>неуверенность в том, что значения inf предполагается задавать как:
K>
K>double neg_inf = -numeric_limitsdouble>::max(); //есть ли тут какие подводные камни? K>
арифметика ieee гарантирует симметричность относительно нуля, так что вроде нормально.
Re: +- бесконечность
От: | minorlogic |
Дата: | 08.06.10 17:27 |
Оценка: |
Задавайте как обратный масштаб
(point+direction/t)
это широко используемый трюк.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: +- бесконечность
От: | rg45 | |
Дата: | 08.06.10 20:12 | |
Оценка: | 1 (1) |
Здравствуйте, kvser, Вы писали:
K>
K>double pos_inf = numeric_limitsdouble>::max(); K>double neg_inf = -numeric_limitsdouble>::max(); //есть ли тут какие подводные камни? K>
Как уже заметили, лучше в данном случае вместо max использовать infinity. И этим вполне можно пользоваться. Стандартные математические функции также нормально оперируют бесконечностями, разумеется там, где это имеет смысл:
#include #include #include const double pi = std::acos(-1.0); const double infinity = std::numeric_limitsdouble>::infinity(); double radians_to_degrees(double x) < return x * 180 / pi; > int main() < std::cout //output: 90 std::cout //output: -90 >
—
C++ уже затем учить надо, что он ум в порядок приводит. (с) Ломоносов М.В.
Re[2]: +- бесконечность
От: | kvser |
Дата: | 09.06.10 07:12 |
Оценка: |
Re[2]: +- бесконечность
От: | kvser |
Дата: | 09.06.10 07:15 |
Оценка: |
Здравствуйте, minorlogic, Вы писали:
M>Задавайте как обратный масштаб
M>(point+direction/t)
M>это широко используемый трюк.
не понял такого финта ушами — ведь теперь, чтобы получить начало отрезка, необходимо, чтобы t=inf
Re[3]: +- бесконечность
От: | Alxndr Poluektov | http://www.google.com/profiles/alexander.poluektov#buzz |
Дата: | 09.06.10 09:13 | |
Оценка: |
Здравствуйте, kvser, Вы писали:
M>>(point+direction/t)
K>не понял такого финта ушами — ведь теперь, чтобы получить начало отрезка, необходимо, чтобы t=inf
Или direction == 0.
Re: +- бесконечность
От: | Centaur | |
Дата: | 09.06.10 11:09 | |
Оценка: | +1 |
Здравствуйте, kvser, Вы писали:
K>Есть класс прямой
K>struct straight K>< K>vector point; K>vector direction; K>>;
K>т.е. это по сути задание прямой в параметрической форме (point+t*direction)
Если прямую представлять в форме A*x + B*y + C = 0, то бесконечности будут не нужны.
Re[2]: +- бесконечность
От: | rg45 | |
Дата: | 09.06.10 12:18 | |
Оценка: | 1 (1) |
Здравствуйте, Centaur, Вы писали:
C>Если прямую представлять в форме A*x + B*y + C = 0, то бесконечности будут не нужны.
Извините за офтопик. ИМХО, наиболее удачным по многим критериям способом представления прямой на плоскости, а также плоскости в пространстве является пара величин: 1) единичный вектор, перпендикулярный прямой(плоскости), и 2) скалярная величина, равная кратчайшему расстоянию от прямой на плоскости (или плоскости в пространстве) до начала координат. Приведенное уравнение с точностью до некоторого коэффициента как раз и содержит перечисленные величины — A и B задают вектор нормали, а C — удаленность от начала координат, только с обратным знаком.
- Минимум избыточности. Прямая на плоскости задается тремя числами, плоскость в пространстве — четырьмя
- Простота использования при решении практических задач. Например, расстояние от некоторой точки до прямой на плоскости(или плоскости в пространстве) вычисляется по формуле:
dot(r, n) - d
—
C++ уже затем учить надо, что он ум в порядок приводит. (с) Ломоносов М.В.
Re[3]: +- бесконечность
От: | kvser |
Дата: | 09.06.10 13:14 |
Оценка: |
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Centaur, Вы писали:
C>>Если прямую представлять в форме A*x + B*y + C = 0, то бесконечности будут не нужны.
R>Извините за офтопик. ИМХО, наиболее удачным по многим критериям способом представления прямой на плоскости, а также плоскости в пространстве является пара величин: 1) единичный вектор, перпендикулярный прямой(плоскости), и 2) скалярная величина, равная кратчайшему расстоянию от прямой на плоскости (или плоскости в пространстве) до начала координат. Приведенное уравнение с точностью до некоторого коэффициента как раз и содержит перечисленные величины — A и B задают вектор нормали, а C — удаленность от начала координат, только с обратным знаком.
согласен, при этом
1)направляющий вектор =
2)каким образом задать луч и отрезок?
3)так как в прикладной области применения почти всегда прямая или отрезок должны строится по двум заданным точкам или по точке и направлению, то форма A*x + B*y + C = 0 не придает удобства
4)значение C равно кратчайшему расстоянию, только при условии единичного нормального вектора, а это всегда приводит к вычислению корня(потому что см. условие пункта 3), который может и не понадобиться
Re[4]: +- бесконечность
От: | kvser |
Дата: | 09.06.10 13:35 |
Оценка: |