1. Си / Говнокод #27285

    0

    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
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    #include <stdio.h>
    #include <string.h>
    
    double emit_fmadd(double a, double b, double c) __attribute ((noinline));
    
    double emit_fmadd(double a, double b, double c)
    {
      return a*b+c;
    }
    
    
    int main(void)
    {
      double a = 10.0000;
      double b = 1.00001;
      double c = 1.001;
      double res = emit_fmadd(a,b,c);
      unsigned char arr[sizeof(res)];
      memcpy(arr, &res, sizeof(res));
      for (int i = 0; i < sizeof(res); i++)
      {
        printf("%.2x ", arr[i]);
      }
      printf("\n");
    }
    
    /*
    gcc -O3 -march=skylake
    emit_fmadd:
            vfmadd132sd     xmm0, xmm2, xmm1
            ret
    
    
    gcc -O3 -march=x86-64
    emit_fmadd:
            mulsd   xmm0, xmm1
            addsd   xmm0, xmm2
            ret
    */

    Вот к чему плавучий питух приводит!
    https://godbolt.org/z/sP19zP

    Запостил: j123123, 06 Марта 2021

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

    • https://twitter.com/EgorBo/status/1064276728137359363
      Какой багор)))
      Ответить
      • Интересно, а в constexpr-хуйне из крестоговна кто-нибудь гарантирует воспроизводимость плавучепитуховых вычислений?
        Ответить
        • Сомневаюсь.
          Ответить
        • почему-то вспомнилось жабоёбское
          https://en.wikipedia.org/wiki/Strictfp
          Ответить
        • А если я сделаю ручной анролл (напишу гигантское выражение), кто-то гарантирует его воспроизводимость?
          Ответить
    • я ничего не понял

      но флоаты не нужны
      Ответить
      • тут пачитай
        https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_operation#Fu sed_multiply%E2%80%93add
        Ответить
    • FMA какие-то... всю эту математику и во времена сопроцессора прекрасно пидорасило, где-то тут был пост про cos(x) != cos(x).
      Ответить
      • == вообще лучше не использовать в мире плавающих питухов, но fuzzy еще забавнее
        Ответить
    • А проблема то в чём?
      Ответить
    • Не зря в ТеХ'е свои собственные дробные числа.
      Ответить

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