1. C# / Говнокод #8048

    +142

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    double[] КосинусФПриВходе = {1,0.99939,0.997564,0.994521,0.990268,0.9848,0.97814,0.97029,0.961261,0.9510565,0.93969,0.927183,0.913545,0.898794,0.88294,
                                         0.866025,0.848048,0.8290375,0.809016,0.78801,0.76604,0.74314,0.71933,0.69465,0.66913,0.64278,0.61566,0.58778,0.55919,0.5,
                                         0.46947,0.43837,0.40673,0.3746,0.34202,0.309016,0.27563,0.24192,0.20791,0.17364,0.13917,0.104528,0.06975,0.034899,0,-0.03489,
                                         -0.06975,-0.104528,-0.13917,-0.17364,-0.20791,-0.24192,-0.27563,-0.309016,-0.34202,-0.3746,-0.40673,-0.43837,-0.46947,-0.5,
                                         -0.55919,-0.58778,-0.61566,-0.64278,-0.66913,-0.69465,-0.71933,-0.74314,-0.76604,-0.78801,-0.809016,-0.8290375,-0.848048,
                                         -0.866025,-0.88294,-0.898794,-0.913545,-0.927183,-0.93969,-0.9510565,-0.961261,-0.97029,-0.97814,-0.9848,-0.990268,-0.994521,
                                         -0.997564,-0.99939,-1,-0.99939,-0.997564,-0.994521,-0.990268,-0.9848,-0.97814,-0.97029,-0.961261,-0.9510565,-0.93969,-0.927183,
                                         -0.913545,-0.898794,-0.88294,-0.866025,-0.848048,-0.8290375,-0.809016,-0.78801,-0.76604,-0.74314,-0.71933,-0.69465,-0.66913,
                                         -0.64278,-0.61566,-0.58778,-0.55919,-0.5,-0.46947,-0.43837,-0.40673,-0.3746,-0.34202,-0.309016,-0.27563,-0.24192,-0.20791,
                                         -0.17364,-0.13917,-0.104528,-0.06975,-0.034899,0,0.03489,0.06975,0.104528,0.13917,0.17364,0.20791,0.24192,0.27563,0.309016,
                                         0.34202,0.3746,0.40673,0.43837,0.46947,0.5,0.55919,0.58778,0.61566,0.64278,0.66913,0.69465,0.71933,0.74314,0.76604,0.78801,
                                         0.809016,0.8290375,0.848048,0.866025,0.88294,0.898794,0.913545,0.927183,0.93969,0.9510565,0.961261,0.97029,0.97814,0.9848,
                                         0.990268,0.994521,0.997564,0.99939};
      
            private void XbYb()
            {
                double x;
                x = AB * КосФ;
                Xb = (int)x;
                double f=4*Ya*Ya-4*(Xa*Xa+Ya*Ya+Xb*Xb-2*Xa*Xb-AB*AB);
                if (счетчик >= 0 && счетчик <= 89) Yb = (2 * Ya + (int)Math.Sqrt(f)) / 2;
                else Yb = (2 * Ya - (int)Math.Sqrt(f)) / 2;
            }
            
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (счетчик == КосинусФПриВходе.Length) счетчик = 0;
                КосФ=КосинусФПриВходе[счетчик];
                XbYb();
                pictureBox1.Invalidate();
                счетчик++;
            }

    1C головного мозга

    Запостил: psina-from-ua, 30 Сентября 2011

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

    • 1C# головного мозга
      Ответить
    • Xa*Xa+Бу*Га*Га
      Ответить
    • КосинусФПриВходе
      Ответить
      • А без "В" у автора было бы православие головного мозга, без б.
        Ответить
    • Кстати, когда табличный косинус быстрее честного?
      И нахера писать таблицу руками?
      Ответить
      • >когда табличный косинус быстрее честного?
        всегда. если конечно память не на перфокартах
        Ответить
        • А когда он точнее честного?
          А когда этот выигрыш в скорости серьёзно на что-то влияет?
          Что делать, если нужного значения в таблице не оказывается?
          Ответить
      • >И нахера писать таблицу руками?
        Вычисление на докомпилляционном этапе
        Ответить
        • Зачем? Экономия 0.0001 сек при компиляции?
          Ответить
          • вообще я помню процедуры всяких эффектов и ландшафтов, где таблицы синусов-косинусов вычислялись заранее. правда, они именно вычислялись, а не вписывались как в сабже
            Ответить
      • Да там сейчас выигрыш - копейки. Современные процы быстрее вычисляют маленькое разложение тригонометрической функции в ряд, чем память отправляет строку в кеш из lookup таблицы. Да и точность повыше при этом у первого варианта.
        Ответить
        • absolut тут прав fsincos ~ 100 микроопераций.
          при оптимальных раскладах - 25-30 тактов.
          даже L2 быстрее.

          что конечно не оправдывает подобных быдлокодеров.
          Ответить
          • >fsincos ~ 100 микроопераций
            Атцы раскладывают в ряд. Это также быстро, как и таблица на современных процах, но с лучшей точностью.
            При активном применении лукаптаблиц кешмисы замучают.
            Ответить
            • >Атцы раскладывают в ряд.
              >Это также быстро, как и таблица на современных процах, но с лучшей точностью.
              Код в студию! Атцы, это наверное от слова ацтой, который не может в ряд Тейлора.
              И не представляет себе сколько же операций сложения, возведения в степень и деления нужно для того чтобы вычислить синус с 32-битной точностью
              Ответить
              • Атцы - мем с гейдева. Атцы рекомендуют всегда делать так, как поступали наши предки на допотопных компах: оптимизировать всё, вся и всегда без исключений. Периодически атцы постят свой код в различных тредах, который к обсуждаемому вопросу порой и отношения не имеет, и меряются своим МПХкодом и таймингами.
                Ответить
                • Код в студию!

                  >Атцы - мем с гейдева.
                  Забудь о геймдеве, это говнокод, детка.
                  Ответить
                  • >Код в студию!
                    Пощу только говно. Атцовский код можно найти на гейсдеве.
                    Ответить
    • показать все, что скрытоvanished
      Ответить

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