Няшная / Говнокод #8650 Ссылка на оригинал

0

  1. 1
#define HESHELME_BESHELME(x, y) (((x)>0)<<2 | ((y)>0)<<1 | ((x) > ((x)*(y) > 0 ? (y) : -(y))))

двумерное "квантование" точки

Запостил: orion orion, (Updated )

Комментарии (35) RSS

    • было бы очень интересно увидеть вариант без умножения. Может кто-нибудь предложит?
      ЗЫ: квантовать хочется в [0..7], последовательность не обязательна.
      Ответить
  • А функцию вообще никак нельзя было использовать?
    x вычисляется трижды, y - четырежды.
    Ответить
    • >x вычисляется трижды, y - четырежды.
      При срабатывании оптимизации expression elimination x и y по одному разу вычисляются.

      >А функцию вообще никак нельзя было использовать?
      Можно, но автор не подумал.
      Ответить
      • > При срабатывании оптимизации expression elimination x и y по одному разу вычисляются.

        HESHELME_BESHELME(foo(), bar())

        где foo(), bar() — функции с побочными эффектами.
        И что тут можно соптимизировать?

        --
        Ваш Кэп
        Ответить
        • >где foo(), bar() — функции с побочными эффектами.
          И что тут можно соптимизировать?

          Лол. Если функции с побочными эффектами, тогда макрос нельзя применять. Каждый раз x и y новые значения будет в пределах макроса принимать или рушить логику работы программы.

          --
          Ваш Кэп
          Ответить
          • > Если функции с побочными эффектами, тогда макрос нельзя применять
            Ну так о том и речь. Только тогда о этом точно должен знать мейнтейнер кода, что лично я считаю лишним неоправданным напрягом.
            Ответить
            • А смысл упоминать вариант, при котором точно не сработает оптимизация в полную силу, если программа всё равно работает не в соответствии с алгоритмом?

              Зачем выкручивался, как уж на сковородке? Сразу бы сказал, если знал, что макрос применять крайне не желательно. Это противоречит безопасному проектированию и поддержке.
              Ответить
        • >где foo(), bar() — функции с побочными эффектами.
          И что тут можно соптимизировать?

          Как ты определил, что параметры макроса вызывают побочные эффекты? Из данного куска кода определить это нельзя. Поэтому голословно утверждать это нужно. Там может простое использование и никаких побочных эффектов:
          point p=foobar();
          auto k=HESHELME_BESHELME(p.x,p.y);
          И уж тем более нельзя сказать с учетом возможной оптимизации expression elimination, что параметры функции вычисляются точно несколько раз.

          Но использование автором макросов - я некоим образом не оправдываю.
          Ответить
  • Мне больше интересно:
    Какой физический смысл вкладывается в слово "квантование" и где такое применяется?
    Ответить
  • о I(X"O)K:AN:H)G.N?N!E.N,WX:GZ"T,F"Y,G$I?E!B(H)L.K.J)W:L.E!T,G!L?V"A?D$R,D,O?T.W?I"R,I!R?A!M$G)Q$A?H:H:T"R,R N.Q(Y N W:U)MH,M(M,W(K!I(R"BA.R!E)DВJGZNEFLNLOZLAEPNIPOKQDCSDVAXFZBZJBNOAFSWLZDPLLIKBATEHBGQOKIJJPVOLDSRGXYIZSEZIJMEAWDADRFKZRKMFQDYWMZLPBEAUMQRMXVXBXXTJJPWRTAKGGLFQFSCESOQYSUCZAMFQQLUFAVDDJXREYVIKZMHFXUYOLGQIRTVQNOIJIUWYWFPTCSUGEWBONVOPHIIAZWXUXQTIJBPLWORRFNIACFYGCOAWFPXBOBLLEECUGBEXBJXIYYBKHV
    Ответить
  • ну и гавно люди учат... нам зачем-то рассказывали про распределенные вычисления в сетях 🙂 или как построить использовать расчетные методы в физ процессах. или как просчитать заторы на разных конвейерах ... хм. А вот еще вспомнил "Разница между паровозами и есть сложность" 🙂
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8