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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  33. 33
  34. 34
  35. 35
// https://github.com/alpertron/calculators/blob/15607feafb0ddb1c075bb326dc6ea2224a4c50bb/siqs.c#L3720

            switch (NumberLengthA)
            {
            case 7:
              dRem = (double)*(piDividend + 6) * (double)rowPrimeTrialDivisionData->exp6 +
                (double)*(piDividend + 5) * (double)rowPrimeTrialDivisionData->exp5 +
                (double)*(piDividend + 4) * (double)rowPrimeTrialDivisionData->exp4 +
                (double)*(piDividend + 3) * (double)rowPrimeTrialDivisionData->exp3 +
                (double)*(piDividend + 2) * (double)rowPrimeTrialDivisionData->exp2 +
                (double)*(piDividend + 1) * (double)rowPrimeTrialDivisionData->exp1;
              break;
            case 6:
              dRem = (double)*(piDividend + 5) * (double)rowPrimeTrialDivisionData->exp5 +
                (double)*(piDividend + 4) * (double)rowPrimeTrialDivisionData->exp4 +
                (double)*(piDividend + 3) * (double)rowPrimeTrialDivisionData->exp3 +
                (double)*(piDividend + 2) * (double)rowPrimeTrialDivisionData->exp2 +
                (double)*(piDividend + 1) * (double)rowPrimeTrialDivisionData->exp1;
              break;
            case 5:
              dRem = (double)*(piDividend + 4) * (double)rowPrimeTrialDivisionData->exp4 +
                (double)*(piDividend + 3) * (double)rowPrimeTrialDivisionData->exp3 +
                (double)*(piDividend + 2) * (double)rowPrimeTrialDivisionData->exp2 +
                (double)*(piDividend + 1) * (double)rowPrimeTrialDivisionData->exp1;
              break;
            case 4:
              dRem = (double)*(piDividend + 3) * (double)rowPrimeTrialDivisionData->exp3 +
                (double)*(piDividend + 2) * (double)rowPrimeTrialDivisionData->exp2 +
                (double)*(piDividend + 1) * (double)rowPrimeTrialDivisionData->exp1;
              break;
            default:
              dRem = (double)*(piDividend + 2) * (double)rowPrimeTrialDivisionData->exp2 +
                (double)*(piDividend + 1) * (double)rowPrimeTrialDivisionData->exp1;
              break;
            }

Generic two integer variable equation solver
This calculator can solve equations of the form a⁢x² + b⁢x⁢y + c⁢y² + dx + ey + f = 0 where the unknowns x and y are integer numbers.

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

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

  • Жопа тут еще в том, что и *piDividend имеет тип int
    https://github.com/alpertron/calculators/blob/15607feafb0ddb1c075bb326dc6ea2224a4c50bb/siqs.c#L3596



    и rowPrimeTrialDivisionData->exp1, rowPrimeTrialDivisionData->exp2, итд ... имеют тип int
    https://github.com/alpertron/calculators/blob/45a846ed174172c86eb076296b36c2c4d994c485/commonstruc.h#L39



    Ну т.е. их вообще нахуй не надо в плавучку пихать, это блядь бессмысленно.
    Ответить
    • Может быть ради временных переполнений? Когда во время вычислений получаются огромные числа, а результат в итоге входит в инт.

      З.Ы. Хотя, с другой стороны, из-за плавучки там всё уплывёт и получится кривой ответ. int64 с проверкой на переполнения после каждой операции всяко будет лучше дабла...
      Ответить
  • Хуйня какая-то. Вот если бы оно в компайлтайме эти уравнения решало...
    Ответить
    • ... то оно бы их решало сильно дольше, чем в рантайме. Потому что компилятор в компилтайме работает в режиме говноинтерпретатора. Надо в компилтайм добавить JIT с оптимизациями и GC
      Ответить
      • > GC
        И чтобы выжившие после финального GC объекты падали в секцию констант. Было бы удобно.
        Ответить
  • Вообще, эта хуйня через emscripten вроде как компилируется в JS. Может быть поэтому там плавучие питухи используются? Ведь в JS арифметика только на плавучих питухах работает
    Ответить

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

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

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


    8