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

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


Быстрое возведение в степеньвычисление корня

Поиск:
Быстрое возведение в степень   x^y

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Quick powering
//  (c) Johna Smith, 1996
//
//  Method description:
//    Calculate A to the power of k, A is real, k is natural, k>0
//    If k is even we can use the following formula:
//                              k/2
//                   k   (   2 )
//              b = A  = ( A   )
//    and assume k=k/2; A=A*A;
//    If k is odd we assume k=k-1, b=b*A and k becomes even
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

void main(void)
{
  long double A = 8.0;
  long int    k = 19;
  long double b=1;

  printf("%Lf^%ld = ",A,k);
  while (k!=0)
  {
    if (k%2!=0) b*=A;
    k/=2;
    A*=A;
  }
  printf("%Lfn",b);
}



Быстрое вычисление корня n-й степени  x^(1/y)

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Quick powering
//  (c) Johna Smith, 1996
//
//  Method description:
//    Calculate A to the power of 1/k, A is real, k is natural, k>0
//    We can use iterations:
//               k-1
//    x    = (a/x   +(k-1)x  )/k
//     n+1       n         n
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

long double Root(long double a, long int k)
{
  long double xn=(a+k-1)/k; // first iteration
  long double x,xk;

  do
  {
    x=xn;
    xk=1; // x^(k-1)
    for (long int i=0;i<k-1;i++) xk*=x;
    xn=(a/xk+(k-1)*x)/k;
  } while (x!=xn); // while there's difference between two consequitive iterations
  return x;
}

void main(void)
{
  long double A=1048576L;
  long int k=20;

  printf("%Lf to the power of %Lf is %Lf",A,(long double)(1.0/k),Root(A,k));
}



Сайт: forum.vingrad.ru






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

 

 

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


Популярные:
  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. Проверить дубляжи в столбце


 

 

 
 
На главную