Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Специальные функции (часть 5)

Поиск:
Факториал (формула Стирлинга)

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Factorial calculation (Stirling solution)
//  (c) Johna Smith, 1996
//
//  Method description:
//   We just use Stirling method, improving it by using fast method
//  of calculating n^n.
//   !! Warning! this formula gives best results ONLY if n>>10
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define Pi 3.1415926536

long double factorial (long int n)
{
  long double factorial,b=1,tmp;
  long int k;

  factorial=sqrt(2*Pi*n)*exp(-n+(1-1/(30*n))/(12*n));

  // quick powering n^n
  tmp=n;
  k=n;
  while (k!=0)
  {
    if (k%2!=0) b*=tmp;
    k/=2;
    tmp*=tmp;
  }
  factorial*=b;

  return factorial;
}

void main(void)
{
  printf("5! = %Lfn35! = %Lfn100! = %Lfn",factorial(5L),
                        factorial(35L),factorial(100L));
}



sqrt(z), where z is a complex value

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Calculactin function sqrt(z), where z is a complex value
//  (c) Johna Smith, 1996
//
//  Method description:
//
//  sqrt(z) = +/- sqrt((x+sqrt(x^2+y^2))/2) +/- i*sqrt(-x+sqrt(x^2+y^2))/2)
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

struct complex
{
  float re;
  float im;
};

void show_complex(complex c) // this functions displays complex value
{
  printf("%f%+fi",c.re,c.im);
}

complex Sqrt(complex z)
{
  complex c;

  c.re=sqrt((z.re+sqrt(z.re*z.re+z.im*z.im))/2);
  c.im=sqrt((-z.re+sqrt(z.re*z.re+z.im*z.im))/2);

  return c;
}

complex z={3,2};

void main(void)
{
  printf("Sqrt(");
  show_complex(z);
  z=Sqrt(z);
  printf(") = +/- %f +/- i*%f",z.re,z.im);
}



ln x (x - real)

Код

//////////////////////////////////////////////////////////////////////////////
//
//  ln x function calculating.
//  (c) Johna Smith, 1996
//
//  Method description:
//    Calculating ln x using the following formula:
//
//               N     (x-1)^(2n+1)
//    ln x  = 2 SUM ------------------
//              n=0 (2n+1)(x+1)^(2n+1)
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define N       300

double Ln(double x)
{
  double ln=0;
  double a=(x+1)/(x-1);

  for (int i=0;i<N;i++)
  {
    a*=(x-1)*(x-1)/((x+1)*(x+1));
    ln+=a/(2*i+1);
  }
  return 2*ln;
}

void main(void)
{
  printf("C++ ln(10)=%g, this ln(10)=%g.",log(10),Ln(10));
}



ln z (z - complex)

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Calculactin function ln z, where z is a complex value
//  (c) Johna Smith, 1996
//
//  Method description:
//         1   2   2             y
//  ln z = - (x + y ) + i*(arctg - +2kЇ), k=0, +/-1, +/-2, ...
//         2                     x
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

struct complex
{
  float re;
  float im;
};

void show_complex(complex c) // this functions displays complex value
{
  printf("%f%+fi",c.re,c.im);
}

complex Ln(complex z)
{
  complex c;

  c.re=log(z.re*z.re+z.im*z.im)/2;
  c.im=atan(z.im/z.re); // you can add 2kЇ here (we assume that k=0)

  return c;
}

complex z={3,2};

void main(void)
{
  printf("Ln(");
  show_complex(z);
  printf(") = ");
  show_complex(Ln(z));
}
Сайт: forum.vingrad.ru






Просмотров: 1872

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную