- 144
- 1 162 531
Konstantin Vladimirov
Russia
Приєднався 23 січ 2019
Это мой педагогический канал. Здесь размещаются всякие записи лекций и докладов.
Канал в телеграме: t.me/cpp_lects_rus
Копия на рутьюбе: rutube.ru/channel/10218561
Дискорд для магистерского курса: discord.gg/vSEp8yW
Канал в телеграме: t.me/cpp_lects_rus
Копия на рутьюбе: rutube.ru/channel/10218561
Дискорд для магистерского курса: discord.gg/vSEp8yW
Практика языка C (МФТИ, 2023-2024). Дополнение: SDL и визуализация
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
Это дополнение к восьмому семинару, не обязательное, но мне кажется милым и интересным. Мы поговорим про использование библиотеки SDL для создания простых визуализаций и даже игр. Вы также получите уже не контестное а почти настоящее задание на подумать.
Семинарист: Константин Владимиров.
Дата: 6 мая 2024 года.
Съёмка: Марк Гончаров.
Звук: Юлий Тарасов.
Предыдущий семинар: ua-cam.com/video/Yp-rN_AZVSI/v-deo.html
Следующий семинар: TBD
Слайды к занятиям: cs.mipt.ru/wp/?page_id=7775
Примеры кода: github.com/tilir/c-graduate
Задачник: olymp1.vdi.mipt.ru/
Timeline
00:00 Обзор графических библиотек
06:35 Небольшой трюк с макросами и механизм atexit
15:48 Окно и рендерер
26:10 Двойная буферизация и простая геометрия
31:30 Текстуры и анимация
47:55 Работа с клавиатурой и прочие события
53:41 Задача
56:05 Текст и его замены
01:08:20 Абстрагирование рисовалки
01:21:15 Учёт практических соображений.
Errata
* Тут пока пусто
Это дополнение к восьмому семинару, не обязательное, но мне кажется милым и интересным. Мы поговорим про использование библиотеки SDL для создания простых визуализаций и даже игр. Вы также получите уже не контестное а почти настоящее задание на подумать.
Семинарист: Константин Владимиров.
Дата: 6 мая 2024 года.
Съёмка: Марк Гончаров.
Звук: Юлий Тарасов.
Предыдущий семинар: ua-cam.com/video/Yp-rN_AZVSI/v-deo.html
Следующий семинар: TBD
Слайды к занятиям: cs.mipt.ru/wp/?page_id=7775
Примеры кода: github.com/tilir/c-graduate
Задачник: olymp1.vdi.mipt.ru/
Timeline
00:00 Обзор графических библиотек
06:35 Небольшой трюк с макросами и механизм atexit
15:48 Окно и рендерер
26:10 Двойная буферизация и простая геометрия
31:30 Текстуры и анимация
47:55 Работа с клавиатурой и прочие события
53:41 Задача
56:05 Текст и его замены
01:08:20 Абстрагирование рисовалки
01:21:15 Учёт практических соображений.
Errata
* Тут пока пусто
Переглядів: 4 182
Відео
Практика языка C (МФТИ, 2023-2024). Семинар 8.2. Решение уравнений и вычисление функций.
Переглядів 3,8 тис.День тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. Вторая часть восьмого семинара посвящена решению уравнений. Мы начнём с того, что рассмотрим разнообразные сложности и ловушки плавающих чисел. Далее мы займёмся нахождением корней уравнений: сначала рассмотрим методы в которых надо сохранять брекетинг корня, потом уйдём от них в неизвестность. Ну и в конце нас ждёт прим...
Практика языка C (МФТИ, 2023-2024). Семинар 8.1. Матрицы и линейное программирование.
Переглядів 4,3 тис.14 днів тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы начинаем последний логический семинар, посвящённый научным вычислениям. Мы разберёмся с матрицами, линейным программированием, захватим библиотеки BLAS и LAPACK и познакомимся с солверами на примере COIN-OR Linear Programming Solver. Семинарист: Константин Владимиров. Дата: 22 апреля 2024 года. Съёмка:...
Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake).
Переглядів 13 тис.21 день тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. У студентов в самом разгаре проекты и настало время познакомиться с системами сборки. Мы начнём с разминки в виде анализа зависимостей между файлами. Очень быстро пройдя первый наивный способ собирать скриптом, мы за час напишем три версии makefiles возрастающей сложности. Ну а в конце нас ждёт немного cmake. Семинарист:...
Практика языка C (МФТИ, 2023-2024). Интермедия. Стандарт языка C.
Переглядів 16 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы поговорим о стандарте C. Мы начнём с попытки изобрести очень простой язык программирования и увидим на его примере основные особенности поведения высокоуровневых программ. Далее мы подробно разберём разные формы поведения программ на языке C, познакомимся и потренируемся со стандартом языка. У нас буде...
Практика языка C (МФТИ, 2023-2024). Семинар 7.2. Конвейер.
Переглядів 5 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы окажемся максимально глубоко и решим сразу две интересных загадки. Первая приведёт нас к концепции конвейера, на которой мы остановимся и внимательно её изучим. Вторая же приведёт нас к ещё более удивительным открытиям, касающимся истинной природы кешей. Семинарист: Константин Владимиров. Дата: 8 апрел...
Практика языка C (МФТИ, 2023-2024). Семинар 7.1. Кеши и немного о бенчмаркинге.
Переглядів 6 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы погрузимся в реальный мир. Начнём с простого бенчмаркинга и особенностей поведения оптимизирующих компиляторов, разберёмся с макросами, а потом встанем перед загадкой связанной с произведением матриц и решим её. Семинарист: Константин Владимиров. Дата: 1 апреля 2024 года. Съёмка: Марк Гончаров. Звук: Ю...
Практика языка C (МФТИ, 2023-2024). Семинар 6.5. Кросс-ассемблеры, их сходства и различия.
Переглядів 4,4 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. Это занятие посвящено тому чтобы показать как похожи на самом деле различные ассемблеры и как различны похожие концепции. Мы рассмотрим ассемблеры ARM и RISCV, идею линк-регистра, постиндексную адресацию, жизнь без регистра флагов, векторизацию и прочее. В конце после обзора литературы не выключайте, будет бонус про рело...
Практика языка C (МФТИ, 2023-2024). Семинар 6.4. Представления плавающих чисел и ассемблер x86.
Переглядів 4,1 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы попробуем осознать сложность представления вещественных чисел, познакомимся со стандартом IEEE754, посмотрим на два способа работы с плавающими числами в ассемблере x86 и даже обсудим влияние на оптимизации. Параллельно будет введена концепция строгого алиасинга: в будущем она нам сильно пригодится. Се...
Практика языка C (МФТИ, 2023-2024). Семинар 6.3. Вызовы функций в ассемблере x86 и ABI.
Переглядів 4,7 тис.2 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы займёмся вызовами функций и познакомимся с основными концепциями ABI: работой со стеком, caller и callee saved регистрами и конвенциями передачи аргументов. Во второй половине мы немного обсудим инлайн-ассемблер и сформулируем главное правило разработки на ассемблере. Семинарист: Константин Владимиров....
Практика языка C (МФТИ, 2023-2024). Семинар 6.2. Условные переходы и память в ассемблере x86.
Переглядів 15 тис.2 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы погрузимся в работу с флагами. Мы начнём с того что обсудим детали goto. Далее вспомним кодировку для целых чисел. Далее мы увидим как отличаются знаковые и беззнаковые сравнения. Потом мы познакомимся с концепцией "эффективного адреса" и научимся работать с памятью. В конце нас ждёт погружение в тёмны...
Практика языка C (МФТИ, 2023-2024). Семинар 6.1. Изобретаем ассемблер.
Переглядів 19 тис.2 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы начнём своё путешествие в ассемблер. Для начала мы изобретём свой собственный несложный ассемблер и даже потренируемся писать для него кодировщик и декодер инструкций. Далее мы посмотрим на более взрослый x86 его регистры и систему команд. Я также устрою большой сеанс live-coding и в конце мы подумаем ...
Практика языка C (МФТИ, 2023-2024). Семинар 5.3. Динамическое программирование.
Переглядів 4,6 тис.2 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы познакомимся с принципом оптимальности Беллмана и дискретным динамическим программированием. Мы решим несколько классических задач: рюкзак, размен монет, расстояние редактирования в строках. Кроме того мы ещё немного сдвинем пределы регулярности и выясним связь формальных грамматик как с регулярными вы...
Практика языка C (МФТИ, 2023-2024). Семинар 5.2. Регулярные выражения и автоматы.
Переглядів 4,2 тис.3 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы погрузимся в более интересную обработку строковой информации. Вы познакомимся с понятиями конечного автомата и регулярного выражения, поиграем с утилитой grep, научимся писать наши собственные регулярные выражения на C и даже используем их для условно-практических задач (скажем распознавания email в те...
Практика языка C (МФТИ, 2023-2024). Семинар 5.1. Строки и символы.
Переглядів 6 тис.3 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы начнём второй семестр знакомства с основами языка C и разберём работу с индивидуальными символами и со строками. Кроме того мы возобновим знакомство с объединениями и перечисляемыми типами. Семинарист: Константин Владимиров. Дата: 5 февраля 2024 года. Съёмка: Марк Гончаров. Звук: Юлий Тарасов. Предыдущ...
Практика языка C (МФТИ, 2023-2024). Семинар 4.3. Структуры данных.
Переглядів 4 тис.4 місяці тому
Практика языка C (МФТИ, 2023-2024). Семинар 4.3. Структуры данных.
Практика языка C (МФТИ, 2023-2024). Семинар 4.2. Обходы деревьев.
Переглядів 4,4 тис.5 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 4.2. Обходы деревьев.
Практика языка C (МФТИ, 2023-2024). Семинар 4.1. Односвязные списки.
Переглядів 4,6 тис.5 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 4.1. Односвязные списки.
Практика языка C (МФТИ, 2023-2024). Интермедия: командная строка, файлы и вариабельные аргументы.
Переглядів 4,3 тис.5 місяців тому
Практика языка C (МФТИ, 2023-2024). Интермедия: командная строка, файлы и вариабельные аргументы.
Практика языка C (МФТИ, 2023-2024). Семинар 3.3. Цифровые сортировки.
Переглядів 3,2 тис.6 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 3.3. Цифровые сортировки.
Практика языка C (МФТИ, 2023-2024). Семинар 3.2. Стратегия "разделяй и властвуй".
Переглядів 4,1 тис.6 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 3.2. Стратегия "разделяй и властвуй".
Практика языка C (МФТИ, 2023-2024). Семинар 3.1. Линейный поиск и простые сортировки.
Переглядів 5 тис.6 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 3.1. Линейный поиск и простые сортировки.
Практика языка C (МФТИ, 2023-2024). Углубление пройденного: логическая память и виртуальная память.
Переглядів 7 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Углубление пройденного: логическая память и виртуальная память.
Практика языка C (МФТИ, 2023-2024). Семинар 2.3. Время и случайность.
Переглядів 4,3 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 2.3. Время и случайность.
Практика языка C (МФТИ, 2023-2024). Семинар 2.2. Побитовые вычисления.
Переглядів 6 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 2.2. Побитовые вычисления.
Практика языка C (МФТИ, 2023-2024). Семинар 2.1. Простые числа.
Переглядів 7 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 2.1. Простые числа.
Практика языка C (МФТИ, 2023-2024). Допсеминар: unix shell
Переглядів 14 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Допсеминар: unix shell
Практика языка C (МФТИ, 2023-2024). Семинар 1.3. Числа Фибоначчи.
Переглядів 6 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 1.3. Числа Фибоначчи.
Практика языка C (МФТИ, 2023-2024). Семинар 1.2. Системы счисления.
Переглядів 10 тис.8 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 1.2. Системы счисления.
Практика языка C (МФТИ, 2023-2024). Семинар 1.1. Алгоритм Евклида.
Переглядів 37 тис.8 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 1.1. Алгоритм Евклида.
Константин, доброго вреени суток и мое почтение Вашему преподавательскому таланту! разъясните, пожалуйста (ну или может сообщество знает ответ), как правильно работать с геометрией? например, на плоскости даны 2 точки и надо провести серединный перпендикуляр. проблемы с форрмулой нет, но непонятен один момент: если проводить вычисления в логических координатах, то при пуше на неквадратный viewport визуально линия вообще не выглядит, как серединный перпендикуляр. или все-таки геометрию надо решать в экранных координатах, потом переводить в логические для вершин, а pipeline потом снова их пересчитает в координаты viewport? какая-то двойная работа получается) заранее спасибо за ответ...
29:18 Если не ошибаюсь, Intel 4004 всё-таки 4-битный процессор. Возможно, Вы имели в видu Intel 8008?
по поводу алгоритма поиска большинства а если массив вида 2 2 2 1 3 1 3 4 5 4 5 6 7 6 7 по идее правильный ответ это двойка, но она не наберёт нужного количества голосов и покажется неправильный результат
Спасибо за лекцию nitpicking, но почему функции на 1:17:40 объявлены как static inline? Разве от inline в этом случае есть какой-то эффект?
Да, где то на 30% повышает вероятность инлайна если собирать gcc )) Если более серьёзно то static inline это устоявшаяся идиома.
@@tilir также static inline в gcc автоматически убираются если не используются, бинарными меньше.
Небольшая опечатка (две) на таймлайне. Написано "Вчет приктических сообрадений"
Спасибо, пофиксил ))
В следующий раз нужно добавить raylib библиотека проще sdl при этом поддерживает работу с шейдерами из коробки
raylib это OpenGL, а у SDL есть в бекэндах OpenGL, D3D, Vulkan и Metal и даже софтварный рендер
@@pavelrid понятно, просто на рейлибе можно проще и быстрее получить рабочее дэмо, если цель проекта запустить проверить визуализировать для собственных нужд то этот вариант подходит лучше всего ( за исключением специфичных сценариев )
Не совсем понял последнюю задачу студентам.. Всмысле посчитать к чему сводится такой ряд? Ну к нулю... Или я где то туплю?
Прочитал Прату. Посмотрев вас - понял, что надо ещё много интересного узнать!
проверку столкновений надо было бы еще
отлично
29:42 а где же в описании вольфрам_альфа? Я не вижу ссылки.
Ссылка на вольфрам на слайдах. Ссылка на страничку со слайдами в описании.
Не самый удачный пример на процессоре генерировать текстуру фрактала ((. В том же SDL2 самые удобные инструменты для реализации шейдеров на GLSL через OpenGL или Vulkan API.
Про шейдеры уже отвечал. Идея хорошая, но в расписание первого курса не лезет и для первокурсников тяжеловата. Объясняю на втором, уже в курсе по C++.
@@tilir да интересно на втором курсе показать и сравнить быстродействие!
А разве при включенной vsync SDL2 не сам у себя внутри делает паузу для каждого кадра, чтобы довести ее до умолчальных 60 fps?
Это если устройство с таким флажком найдено. Ну и потом вдруг вы хотите меньше. Донести идею как это делается руками мне кажется важным.
А, понял. Вы же увеличивали задержку. Сначала для получения 50 FPS, а потом до получения 10 FPS, для примера.
Класс!!
1:12:10 Немного покопался и выяснил, что идеальным коэффициентом для размера буфера было бы золотое сечение (1.612...), а оптимальным в практическом плане - 1.5
35:45 так как у меня видеокарта от nvidia- то я могу взять библиотеку nvidia reflex и попросить видеокарту выдать мне ровно 50 кадров в секунду 😀(а всем остальным выдавать сообщение "ну вы же смотрели на системные требования" xD ) ну или переключить монитор в 50 герц и включить vsync. но эт слишком грязно и инпутлаг поедет... 1:11:34 насколько помню- в 2022 вижле сишку починили. ну или clang-cl притащить, чо уж там.
Вы сейчас радостно агитируете за чудовищный и отвратительный вендорлок.
@@tilir ну, благо там, где рефлекс нужен (всякие компетитив-игоры)- и так почти везде нвидия. ну и может быть к какому-нибудь vulkan 1.9 оно доедет и до стандарта... там внутре же просто семафорчики и доступ к аппаратным/драйверным счетчикам. а так да. плоховастенько. жаль, что альтернатив ему не особо есть (на винде). *а еще на винде контекст вулкана надо создавать через одно место- dxgi зовется. потому что только там можно поставить флажок "обходить композитор". это бы тоже куда-нибудь в дефолтное расширение вулкана припереть... так что пока что да- или вендорлок, или волосатый график фреймтайма (потому что sleep'ы косые как не в себя) + инпутлаг конь. с рефлексом в типичной игоре можно 6-9мс от ввода до видеовыхода, как повезет со временем запуска. и не улетая при этом в много-много фпс, которые еще и VRM взорвать могут (косится на нвидию, не чинящую этот баг с 900-ой серии до 4000) а, ну или дедовский вариант с переключением частоты монитора. вариант еще хуже xD
У AMD тоже есть очень конкурентные карточки. Да и у Интела ARC Alchemist неплоха.
@@tilir я там не про сами карточки, а про драйвера и весь софт вокруг них. не знаю, как у интела, их ARC ни на одной из моих машин не завелся (но эти машины весьма кривые, эт ожидаемо), но у красненьких просто нет способа снизить инпутлаг. тот, который заявлен- не работает как надо. а еще у них проблемы, если вдруг видеокарта повисла- их невозможно ресетнуть. там, где у других достаточно bus reset, у амд надо выключать питание. (и даже если выключишь питание- там драйвер выгружаться не умеет нормально. но в линуксе все в целом плохо с хотплагом/анплагом гпу. но хотя бы так можно перезапустить виртуалку с амдшной графикой, не перезапуская всю машину.) а чтобы повесить амдшную графику в линуксе- чуть ли не достаточно сделать for(;;); в шейдере. да, оно настолько плохое там. но в целом начиная с 7000 серии у них наконец-то кодер видео стал адекватно кодировать видео! и даже лучемет лучи метает как надо! (оне там формат дерева blas/tlas поменяли на примерно как у нвидии.) ждем всего остального xD про то, что "и так почти везде нвидия"- это чисто из стимовской статистики, там ее 76.59% за апрель 2024.
26:30 Можно ещё добавить "джигитовки": while (*dst++ = *src++);
Скажите, а девайс , которому коннектиться рендерер- это что за сущность? Вроде как и драйвер к устройству, но если есть софвар асселератор - то просто подпрограмма
Это рантайм. В обычном случае у нас есть графический kernel-mode драйвер к которому цепляется например OpenGL runtime, представляющий собой user-mode часть драйвера. SDL умеет собирать несколько поддерживаемых рантаймов и цепляется уже к ним.
Отличная вводная в графику, с самой базы. Константин Игоревич, большое спасибо за труд!
1:23:00 Почему в интрузивном счётчике не нужно его делать атомарным?
Так вот как работает реверс инжениринг))
Константин, большое Вам спасибо за курс лекций, от человека из региона! как то было сказано что доп. семинара по vim не будет. Но если это станет возможным, то курс станет шикарным в квадрате. В меру часто приходится подключаться к удаленным серверам и что то править и хорошие практики работы с vim были бы очень полезны. Сам очень долго (несколько месяцев) разбирался как работает буфер и как его прокинуть на удаленный сервер в vim. (Прокинуть ssh -X, ssh config X11Forwarding yes, установить xclip, vim config set clipboard += "unnamedplus"). А ведь копи-паст это полезная функция. Без иксов можно системно и логично (как Вы это делаете, отдельная благодарность) рассказать о базовых настройках чистого vim. нумерация строк, сплит экрана - то чем пользовались на семинарах.
33:26 мое любимое UB - std:: unreachable()
Аппаратные кэши, конвейеры, транзисторы, конденсаторы... Как же низко мы пали!
Взятие адреса переменной не гарантирует, что она не окажется в регистре (может оказаться, что этот адрес не используется). А вот если добавить volatile, то должно сработать. Поправьте меня пожалуйста если я не прав.
Достаточно чтобы адрес куда то утёк. Например был передан как аргумент во внешнюю функцию и т.п. volatile да, всегда работает, но это очень дорогой метод ))
@@tilir а чем дорог volatile?
@@FeelUsвокруг него отключается большинство компиляторных оптимизаций.
2:13 а разве мы не этого хотим? Для чего вообще может потребоваться явно выделить память но при этом оставить какие-то оптимизации с памятью?
59:48 Если мы из "B A E" возьмем B и добавим в "D C" то у нас будет конфликт, т.к. у B и D дедлайн первого дня, а значит мы не любое значение можем взять из "B A E". Или у матроидов предусматривается взятие даже конфликтующих значений?
В общем, чтобы понять исходники clang'а нужен анализатор кода, а чтобы сделать анализатор кода нужно понять исходники clang'а
а в каком файле исходников находится main(argc,argv) ?
В самом деле, сейчас clang 18.1.4
Да много времени уже прошло ))
Скажите пожалуйста, просто любопытно а литература за 1988 год разве еще актуальна 🤨?
Да.
" изучить си за недельки две". М да хотел бы посмотреть на такого человека кто знает Си в полном объёме. От всех его стандартов и всех возможностей за такой срок😁.
Так в полном объёме и не нужно.
"Подсмотриваю" ваши семинары (хоть и в 2 раза старше студентов). Про бенчмаркинг sqrt. На X64 и мощных ARM понятно что итеративно (даже Ньютоном) вариант dsqrt обогнать если и можно, то не просто. Но вот на каком-нибудь Cortex- M0 или RISC-V без нужных расширений dsqrt может оказаться совсем небыстрым. При этом для целых есть хорошее начальное приближение что-нибудь типа x >> ((32 - clz(x)) >> 1), где clz - количество нулей впереди. Впрочем, у m0 clz тоже, если я правильно помню не одной командой считается.
ну и про union не забываем если нужно представить float как unsigned
Не используйте type punning.
Асимптотика на 1:07:20 скорее всего несколько выше, чем O(n), нам ведь еще нужно на каждой итерации считать что-то вроде lcm(i, result). O(n * log(lcm(2,...,n))) точно подойдет, но наверное, можно уже
Если числа M-битные, это добавляет множитель O(logM). Но для 32-битных чисел это константа, поэтому O(N) -- мы зависим только от общего количества чисел и съедаем их по одному.
Вывод с пробелом можно через правую свёртку написать? template <typename... Ts> void print_all(Ts&&... args) { (((std::cout << args << ' '), ...)) << ' '; } И в Addable можно же убрать requires sizeof...(Ts) > 1? т.к. (... + std::forward<Ts>(args)) будет компилироваться с ошибкой (not satisfied). Или оставить, но написать в начале. Как и другой requires, но там будут проходить sum_all(2.0, 1), но не sum_all(1, 2.0) =)
!
Самое главное здесь, что только на шестом этапе нужно начать думать)))
Балы, красавицы, лакеи, хакера, И вери трики кейс, и хруст французской булки...
При проверке на равенство чисел с плавающей точкой рекомендую руководствоваться следующей методикой. Если, например, нужна точность до 5го знака после десятичной точки, берите допуск равный 0,5*0,00001 (т.е. 0,000005). Так Вы нивелируете погрешность математического округления.
Нас на вычислительной математике учили считать на разряд выше требуемой точности.
@@user-hh2qp6ez4d Я имел ввиду следующее. Нужно сравнить два числа так, как если бы Вы перевели эти числа в строку с одинаковыми настройками форматирования, а потом проверили на равенство. Например, сравните числа 1.5551 и 1.5552 с точностью до третьего знака после десятичной точки. Если считать на разряд выше, то с точностью до четвёртого знака эти два числа не равны. Но с точностью до третьего знака они не различимы, т.е. равны. Впрочем. Вообще выбор метода сравнений чисел с плавающей точкой зависит от конкретной задачи.
@@lwind4884 я не про количество знаков после запятой. Я про количество разрядов. Например, 123456.789(9 разрядов)*1.234(4 рязряда) - так считаль нельзя, потому что результат умножения будет достоверным только на 4 разряда. Нужно сохранять количество разрядов, а именно 123456.789*1.23456789 - так правильно, если нужна точность 8 разрядов. Как тут сравнивать? В каждом конкретном случае свое количество знаков после запятой.
@@user-hh2qp6ez4d Благодарю за комментарий по поводу точности вычислений. Однако, прошу обратить внимание, что я писал о методе сравнения.
да... хак на хаке и хаком погоняет хороший курс лекций, но как с этим жить?
Давали бы мне такие знания году так в 95-м...
Пришёл из-за аниме, остался из-за раскрутки стека.
1:13:10 - видимо запись решила скрыть, что мы увидим в реализации синуса) но я дополню, что почти всегда мы увидим ряды Тейлора (к примеру, как в musl и glibc) P.S.: видео как всегда супер! Спасибо)
Здравствуйте, доступа к заданиям в задачнике нет, и ссылка на плейлист с записями семинаров в конце задачника неправильная
У вас проблемы с браузером, он подменяет вам http на https.
@@tilirтак и не смог победить, пробовал Edge, Google Chrome, Firefox. Потыкал настройки, не помогло. Код последней ошибки 4e816500.
ua-cam.com/video/Yp-rN_AZVSI/v-deo.html Эту формулу (1/2(xn+a/xn)) ещё называют фомулой Герона. А т.к. одну формулу Герона студенты знают, то, полагаю, у вас, Константин, интересно получилось бы обыграть такую ситуацию в лекции. :-)
да, одно дело когда говорят "для икс меньше дельта", а другое когда ты на, ещё зелёном, но уже графическом, мониторе видишь как колбасит ряд маклорена для синуса при удалении от нуля :)
Вспомнился ФОПФовый анекдот. Студент на экзамене по электродинамике все время подглядывает на ладонь руки. Преп ловит его, говорит: показывай шпаргалку. Тот показывает левую ладонь, там буква Л. Преп: зачем тебе это? Студент: правило левой руки помню, а какая из них левая, всё время забываю...
❤
Семинары для себя это да) Сам на 4 курсе в другом ВУЗе, но смотреть интересно и местами есть новая информация.
34:35 Числа с плавающей точкой на столько отличаются от вещественных чисел, что там даже левое и правое не такие 😂