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

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
double erf(double x)
{
    const double xbreak = 0.46875;
    ...

    y = fabs(x);

//  evaluate  erf  for  |x| <= 0.46875
    if (y<xbreak)
    {
        ...
    }
//  evaluate  erfc  for 0.46875 <= |x| <= 4.0
    else if ((y > xbreak) && (y <= 4.))
    {
        ...
    }
//   evaluate  erfc  for |x| > 4.0
    else
    {
        ...
    }

//   fix up for negative argument, erf, etc.
    if (x > xbreak)
       result = 1 - result;
    if (x < -xbreak)
       result = result - 1;

    return result;
}

> Надо было в свое время — перевел MATLABовский исходник на C (сделано через дробно-рациональные аппроксимации на нескольких отрезках)

http://www.rsdn.ru/forum/alg/1797230.all.aspx

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

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

    • Оно мало того что лишнее, так из-за него +-0.46875 попадает в третью ветку...

      UPD. Хотя тут и 9я строка походу неверна.
      Ответить
    • Заглянул на вики, как оказалось эти erf и erfc описаны даже в стандарте С99.
      Ответить

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

Помни, guest, за тобой могут следить!

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


    8