できた。log(1+x)のテイラー展開の間違いだったようだね。

x>>1だと精度が悪くて使い物にならないけど。

#include <stdio.h>
#include <math.h>

int main()
{
double x, y = 0.;
int i, n = 10;

printf("x = ");
scanf("%lf", &x);

for (i = n; i > 0; i--) {
y = y * x + x / i * ((i % 2) ? 1 : -1);
}

printf("log(1+x) = %f, mylog(x) = %f\n", log(1+x), y);

return 0;
}