Вверх ↑
Этот топик читают: Гость
Ответов: 171
Рейтинг: 1
#1: 2026-02-06 14:18:41 ЛС | профиль | цитата
Добрый день. Подскажите как извлечь кубический корень из числа в HiAsm ?
карма: 1

0
Ответов: 1011
Рейтинг: 209
#2: 2026-02-06 14:49:02 ЛС | профиль | цитата
Andrej77rv писал(а):
Подскажите как извлечь кубический корень из числа в HiAsm ?


Add(MainForm,2953706,21,105)
{
Height=189
}
Add(MathParse,2309361,210,133)
{
DataCount=1
MathStr="%1 ^ (1/3) "
link(onResult,3395085:doText,[])
link(X1,9981562:Text,[])
}
Add(Button,7057966,112,133)
{
Left=175
Top=25
Width=180
Caption="Извлеч кубический корень"
link(onClick,16312832:doWork2,[])
}
Add(Label,3395085,287,133)
{
Left=30
Top=60
Width=130
Caption=""
}
Add(Edit,9981562,210,70)
{
Left=30
Top=25
Width=130
Text="125"
DataType=1
link(onEnter,16312832:doWork1,[(249,83)(249,111)(172,111)])
}
Add(HubEx,16312832,168,133)
{
link(onEvent,2309361:doCalc,[])
}

карма: 20

0
Ответов: 8978
Рейтинг: 825
#3: 2026-02-06 19:09:22 ЛС | профиль | цитата

А ещё можно напрямую через логарифмы посчитать и сами логарифмы через ряды

карма: 19

0
Ответов: 1011
Рейтинг: 209
#4: 2026-02-06 19:42:28 ЛС | профиль | цитата
Леонид писал(а):
А ещё можно напрямую через логарифмы посчитать и сами логарифмы через ряды

Можно
Add(MainForm,2491027,392,161)
{
Height=189
}
Add(Button,7057966,483,189)
{
Left=175
Top=25
Width=180
Caption="Извлеч кубический корень"
link(onClick,16312832:doWork2,[])
}
Add(Label,3395085,658,189)
{
Left=30
Top=60
Width=130
Caption=""
}
Add(Edit,9981562,553,126)
{
Left=30
Top=25
Width=130
Text="125"
link(onEnter,16312832:doWork1,[(592,139)(592,167)(543,167)])
}
Add(HubEx,16312832,539,189)
{
link(onEvent,16063020:doData,[])
}
Add(InlineCode,13604916,602,189)
{
WorkPoints=#12:doPowerRoot3|
EventPoints=#8:onResult|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|0:|21:onResult : THI_Event;|0:|53:Procedure doPowerRoot3 (var _Data:TData; Index:word);|0:|5: end;|0:|14:implementation|0:|66:Procedure THiAsmClass.doPowerRoot3 (var _Data:TData; Index:word);|3:var|14: X: Integer; |15: Root: Double;|5:begin|25: X := ToInteger(_Data);|0:|15: if X > 0 then|26: Root := Exp(Ln(X) / 3)|20: else if X < 0 then|33: Root := -Exp(Ln(Abs(X)) / 3) |6: else|14: Root := 0;|43: _hi_onEvent(onResult,Double2Str(Root)); |4: |4:end;|0:|4:end.|
link(onResult,3395085:doText,[])
}
Add(DoData,16063020,553,189)
{
link(onEventData,13604916:doPowerRoot3,[])
link(Data,9981562:Text,[])
}


Кстати, в первой схеме нет проверки на отрицательные числа. Но легко добавить.
Add(MainForm,13397681,273,126)
{
Height=189
}
Add(MathParse,2309361,462,154)
{
DataCount=1
MathStr="sign(%1) * (abs(%1) ^ (1/3)) "
link(onResult,3395085:doText,[])
link(X1,9981562:Text,[])
}
Add(Button,7057966,364,154)
{
Left=175
Top=25
Width=180
Caption="Извлеч кубический корень"
link(onClick,16312832:doWork2,[])
}
Add(Label,3395085,539,154)
{
Left=30
Top=60
Width=130
Caption=""
}
Add(Edit,9981562,462,91)
{
Left=30
Top=25
Width=130
Text="125"
DataType=2
link(onEnter,16312832:doWork1,[(501,104)(501,132)(424,132)])
}
Add(HubEx,16312832,420,154)
{
link(onEvent,2309361:doCalc,[])
}


Редактировалось 2 раз(а), последний 2026-02-07 07:13:52
карма: 20

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)