Зведення в квадрат та вилучення квадратного кореня

З новим роком! Питання таке як звести в квадрат і витягти квадратне коріння в Делфі. Допоможіть пліз.

uses Math функція Power

Подружити квадрат і квадратну – це дві половинки одного яблука :)

Дякую хлопці, працює. Щасти в новому році.

Ой, ось не треба штампів, ага? Я привів варіанти різних підходів заради розуміння їх наявності, всього-то.

Крім того, моя відповідь може когось змусити зрозуміти/пригадати, що "зведення в ступінь" окремим випадком включає і "витяг кореня". :)

> А я навів універсальний варіант. Чи потрібні при цьому "інші різні"? Однозначно потрібні! При зведенні, наприклад, у квадрат Power не найкраще рішення. x*x, як мінімум, на порядок швидше за Power(x, 2). Та навіть, зведення в п'яту ступінь через Power буде повільніше, ніж х*х*х*х*х. Так що, якщо в алгоритмі обчислень такого роду багато, то функцією Power треба користуватися обачно. :)

> x*x, як мінімум, на порядок швидше за Power(x, 2).саме так, а sqr(x) ще швидше.

> а sqr(x) ще швидше Не завжди. Ось у цьому прикладі швидше, ніж sqr (Д6, ХР32):

const COUNT = 2000000000;

procedure TForm1.Button1Click(Sender: TObject); var c, i: Cardinal; d, x: Double; begin x := 2; c:= GetTickCount; for i := 1 to COUNT do d := Sqr(x); ShowMessage(IntToStr((GetTickCount - c) div 1000)); end;

procedure TForm1.Button2Click(Sender: TObject); var c, i: Cardinal; d, x: Double; begin x := 2; c:= GetTickCount; for i := 1 to COUNT do d := x * x; ShowMessage(IntToStr((GetTickCount - c) div 1000)); end;

В першомуу випадку 5 сек, у другому - 4. Хоча, варто змінити Double на Extended або x * x винести в окрему функцію, і ситуація зміниться.