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)