
Последнее обновление: [28.04.06]
Факториал:
Code: Select all
sub factorial(x)
var i,result=2
if x<=0 then
return 1
end if
if x<3 then
return x
end if
for i = 3 to x
result=result*i
next
uo.print(str(x)+"! = "+str(result))
return result
end sub
Возведение в степень: (натуральную, у>0)
Code: Select all
sub XtoPowerY(x,y)
if not IsWholeNum(y) or y<0 or (x==0 and y==0) then
return 0
end if
var i,result=1
if y>0 then
for i = 1 to y
result=result*x
next
else
return 1
end if
uo.print(str(x)+"^"+str(y)+" = "+str(result))
return result
end sub
Модуль:
Code: Select all
sub abs(x)
if (x < 0) then
x = -x
end if
return x
end sub
Корень квадратный:
Code: Select all
sub SQRT(x)
if x<0 then
return 0
end if
var tmp=int(2*len(str(x)))
var result=XtoPowerY(2,tmp)
repeat
tmp=result
result=0.5*(result+x/result)
until abs(tmp-result)<0.00001
uo.print("sqrt("+str(x)+") = "+str(result))
return result
end sub
Логарифм натуральный (жутко тормозной, зато работает

Code: Select all
sub ln(x)
var i=0,y,tmp,result=0
if x>1 then
y=(x-1)/(x+1)
repeat
tmp=result
result=result+(XtoPowerY(y,i))/(i+1)
i=i+2
until (result-tmp)<0.0001 and i>3
result=result*2*y
uo.print("ln("+str(x)+") = "+str(result,3))
return result
else
if x<=0 then
return 0
else
x=x-1
repeat
tmp=result
result=result+((XtoPowerY(-1,i))*(XtoPowerY(x,i+1)))/(i+1)
i=i+1
until (tmp-result)<0.0001 and i>5
uo.print("ln("+str(x)+") = "+str(result,3))
return result
end if
end if
end sub
Логарифм:
Code: Select all
sub lg(base,x)
var result,tmp
tmp=ln(base)
result=(ln(x)/tmp)
uo.print("lg("+str(base)+","+str(x)+") = "+str(result,2))
return result
end sub
Проверка на целочисленность:
Code: Select all
sub IsWholeNum(num)
if (num-int(num)) == 0 then
uo.print("Is Whole Num")
return true
else
uo.print("Is Not Whole Num")
return false
end sub