Procedure.d mAbs(x.d)
If x<0
ProcedureReturn -x
EndIf
ProcedureReturn x
EndProcedure
Procedure.d mExp(x.d)
term.d = 1.0
result.d = 1.0
i = 1
Repeat
term = term * x / i
result + term
i + 1
Until mAbs(term) < 1.0e-15
ProcedureReturn result
EndProcedure
Procedure.d mLog(n.d)
If n <= 0
ProcedureReturn 0
EndIf
x.d = n - 1
Repeat
e.d = mExp(x)
new_x.d = x - (e - n) / e
If mAbs(new_x - x) < 1e-15
Break
EndIf
x = new_x
ForEver
ProcedureReturn x
EndProcedure
Procedure.d mPow(a.d, b.d)
If a = 0 And b < 0
ProcedureReturn 0 ; Возвращаем 0, так как это неопределенное значение
EndIf
ProcedureReturn mExp(b * mLog(a))
EndProcedure
Debug mPow(2,1.987654)
Debug Pow(2,1.987654)в качестве примера - пригодно
Отредактировано PSY (08.02.2025 01:27:52)
