ERRRO CODE (расширенная функция мощности)
Когда я работаю с этим кодом и записываю ввод, вывод получается неправильным.
использование: ln (x), e ^ x
рассмотрим, когда == 0
х может быть положительным, отрицательным или нулевым или любым дробным числом
если a == 0 -> a ^ x = 0
a^x=advancedpower(ln(exp(power(a^x)))
#include <stdio.h>
#include <assert.h>
int factorial(int x)
{
if(x>0)
{
return (x*factorial(x-1));
}
if(x==0)
{
return 1;
}
else
return 0;
}
float power(float x, float y)
{
float r;
r=1.0;
if (x==0)
{
return 0;
}
if (y==0&& x!=0) {
return 1;
}
else
for(int i=1; i<=y;i++) {
r=r*x;
}
return r;
}
float exp(float x){
float sum=1.0;
for (int i = 0;i<10; i++) {
sum = sum + (power(x,i)/factorial(i));
}
return sum;
}
float ln(float x)
{
assert(x > 0);
float o= 1.0;
for (int i = 1;; i++) {
int k = 2*i-1;
float t = 2.0* power((x-1)/(x+1),k)/k;
o=o+t;
}
return o;
}
float advancedpower(float n1,float n2){
if (n1 ==0){
return 0;
}
else
return (exp(power(n1,n2)));
}
int main()
{
float a, x;
scanf("%f%f", &a, &x);
printf("%.4f", advancedpower(a, x));
return 0;
}
ввод 2,0 0,5
выход 1.4142
однако, когда я ввожу 2,0 0,5, вывод будет 3,7183
Что я должен изменить .....