Matwey
Но зачем? Начинать там нужно с разработки какой-то обертки, которая будет в компайл-тайме отслеживать выравнивание буфера чисел. FFTW умеет закладывается, что буфер выравнен определенным образом, по 16 байт или по 64, но контролируется это на уровне "написано в документации".
Matwey
Затем прибегут какие-нибудь люди, которые закричат "О, а я знаю размер своего буфера в компайл тайме! А ну ка постройте мне план в компайл тайме!"
Alexander "SonnySlave"
и будут правы
Alexander "SonnySlave"
в compile-time должно быть как можно больше всего
Matwey
Вот, поэтому я и говорю, хорошо сделать - не так просто. А пользоваться все-равно будет исчезающе-малое число людей.
Alexander "SonnySlave"
если возможно сделать на этапе компиляции, то должно быть сделано
Anatoliy
заглянув в код FFTW и в код хотя бы <algorithms> сразу можно понять, что идеология - разная. В FFTW всё настолько близко к железу, что вряд ли это всё можно переложить в хедер, не раздув его до неудобоваримых размеров.
Крылатый
CT FFT ftw!
Berkus
тебе касты кажется сломали мозг
Oleks
Добрый день. Есть вот такой класс-синглтон: class TestingClass { private: TestingClass(): _field1(0) , _field2(0) { } TestingClass(const TestingClass&); TestingClass & operator=(const TestingClass &); public: static TestingClass Instance() { static TestingClass instance; return instance; } void method1() { _field1 = 777; } void method2() { _field1 = 888; } //other methods... private: int _field1; int _field2; }; Я его тестирую используя gmock framework. После очередного тестового кейса, поля класса меняются, конструкторы - приватные. Подскажите пож-та, есть ли способ задать дефолтные значения полям? (Допускаются любые способы, кроме изменения сртуктуры и логики класса TestingClass)
Крылатый
Тройные `
Anatoliy
конечно будут многие пользоваться (я - точно буду - часто надобится)
Alexander "SonnySlave"
к тому же с модулями это не должно стать проблемой
Alexander "SonnySlave"
Anatoly
сам по себе массив — это область в памяти, к которой есть доступ. И даже не "группа элементов одного типа". "Именованная область памяти". а что значит имя? адрес? А указатель это переменная, в которой может быть адрес? Значит массив, это область памяти, к которой у тебя 1) есть доступ 2) известен адрес 3) известен размер? Значит работаешь ты всё равно с указателями, ведь так? и запись int x[5] = {}; показывает только твоё желание заполучить вот примерно такое количество памяти. Если ты её заполучил, имя массива — это указатель на его первый элемент, с которым да, нихера не сделаешь, а значение в скобках размер выделенной области. И кстати в user-mode за (&x+1) можно будет словить sigsegv, но если у тебя есть доступ ко всей памяти, можно же всё что угодно творить. int x[5] = {1,8,3,4,5}; (*x)++; int p = 90; int *pt = &p; (*pt)++; ._. ещё скажите, что я еретик.
все что нам известно о массивах приведено в 11.3.4 17-ого стандарта, все остальное интерпретация. массив не является указателем, массив лишь приводится к нему - это все.
Anatoliy
вот посмотреть, когда какую-то частную штуку - вихрь Мерсенна - реализовали в стандартной библиотеке в общем виде. Что получилось? Шаблонный класс со 100500 параметрами. Зато женерно.
Anatoliy
примеряю на себя эту роль
Alexander "SonnySlave"
и да и нет. Я бы сказал так... я склоняюсь к этому =)
ну так ты сделай лучше и зашли им PR
Alexander "SonnySlave"
если твой способ будет лучше, то примут твои изменения и всё
Alexander "SonnySlave"
сделаешь мир чуточку лучше
Anatoliy
ну так ты сделай лучше и зашли им PR
ээ. нет. что за софистика? не так workflow устроен. кому, во-первых, "им"? и т.д.
Alexander "SonnySlave"
лол, какая софистика?
Anatoliy
там так принято?
Alexander "SonnySlave"
по крайней мере в mailing list идёт обсуждение
Anatoliy
лол, какая софистика?
http://lurkmore.to/Сперва_добейся
Matwey
А потом прибегут люди которые скажут. "О! А я знаю свои данные в компайл тайме, а ну ка посчитайте мне FFT в компайл тайме!"
Alexander "SonnySlave"
как же вы заебали с этой ссылкой. Ещё раз: раз ты говоришь, что 100500 шаблонов и это неоч, то ты по крайней мере представляешь, как сделать лучше, так?
Anatoliy
по крайней мере в mailing list идёт обсуждение
не отъезжай. я не готов пилить суперсложную вещь несколько лет, чтобы превозмочь коммьюнити в одиночку
Alexander "SonnySlave"
нет. это самый лучший вариант
не понял. какой вариант лучший?
Anatoliy
просто некоторые вещи не ложатся в идеологию стандартной библиотеки C++, или linux way или ещё чего
Крылатый
Alexander "SonnySlave"
как оно сделано
а тогда какие претензии?
Matwey
О. считать спектр в компайл-тайме? Я за!
Можешь опрос повесить: "Сколько раз за последние 6 месяцев вам нужно было FFT?" Вариант "ни разу" победит с большим отрывом.
Matwey
Да, и это правильно. Зачем тащить в рантайм то, что известно во время компиляции?
Так и есть. Но я лишь хочу сказать о том, что это непропорциональный числу пользователей объем работы
Anatoliy
а тогда какие претензии?
я фз о чём ты. я сказал, что std::mt19937 и std::mt19937_64 уже слишком громоздкие и при этом слишком частные вещи для стандартной библиотеки
Alexander "SonnySlave"
Через антипаттерн "паблик морозов" меньше всего зол. Или дефайны/константы в список инициализации
если способ легально достучаться к приватным членам извне. Без пабликов морозовых всяких. Но там дичь
Крылатый
Так и есть. Но я лишь хочу сказать о том, что это непропорциональный числу пользователей объем работы
Почему? Компиль просто пускай учится считаь всё больше в компилтайме, а БПФ пущай тоже пилицца. Этим ваще разные люди занимаются.
Anatoliy
тогда прошу прощения
а FFT во всех его проявлениях вообще удвоит размер библиотеки
Alexander "SonnySlave"
а FFT во всех его проявлениях вообще удвоит размер библиотеки
а прикинь, что будет, когда у нас нормальные строки появятся, а?
Крылатый
нормальные это какие?
strip там всякие, это всё.
Alexander "SonnySlave"
нормальные это какие?
это с кодировками
Alexander "SonnySlave"
(да, снова плач про ICU в либе)
Anatoliy
я бы хотел классы чисел произвольной точности
Berkus
Alexander "SonnySlave"
Numeric Group тоже не резиновая 😊
Berkus
я бы хотел классы чисел произвольной точности
так и чего не реализуешь, не готов бороться несколько человеколет?
🦥Alex Fails
работаю над этим
Чо, как двигается
Alexander "SonnySlave"
я бы хотел классы чисел произвольной точности
самое быстрое, что будет - это wide_integer. Поверх него сможешь написать враппер нужной тебе точности