Показать сообщение отдельно
Старый 03.06.2011, 17:02   #10
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Где ошибка,хелп...

//целый корень....
int isqrt4(unsigned x) { 
  unsigned m, y, b;
   m = 0x40000000;
   y = 0;
   while(m != 0) {              // Do 16 times.
      b = y | m;
      y = y >> 1;
      if (x >= b) {  x = x - b; y = y | m; }
      m = m >> 2;
   }
   return y;
   }
   
float sinus(float z)
{   double esp=100000
    float prev = z;
    float S = z;
    float check;
    int iterations_limit = 10000;
    int i;
    /* можно указать максимальное количество итераций
     * на случай, если точность не будет достигнута */
 
    for(i= 0; i < iterations_limit; ++i)
    {
        S += prev*(-1)*z*z / ((2*i + 3)*(2*i + 2));
        check = prev;
        prev = prev*(-1)*z*z / ((2*i + 3)*(2*i + 2));
        if (((check*check) - (prev*prev)) < (eps*esp)) break;
    }
 
    return S;
}
как видно нарыл в сети корень(только целый) и синус,но почему-то синус не фурычит(компилятор на "не декларированные" переменные esp и prev кричит,хотя всё правильно вроде)...
подкиньте идейки как посчитать,и можно код корня изменить так чтоб дробные считал..?(или как асмом через сопроцессор(сам не нашел под арху амр9) посчитать синус и корень(остальное само уже выползет)?)
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием