2008-07-22

vak: (Default)
Нет ли у кого-нибудь из уважаемых френдов доступа к библиотеке IEEE? Очень нужна статья Castagnoli, Brauer, Herrmann "Optimization of cyclic redundancy-check codes with 24 and 32 parity bits". Буду страшно признателен.
vak: (Default)
Будем рассматривать двоичные данные как полиномы с коэффициентами 0 или 1. Например, байт 10110111 - это полином x7+x5+x4+x2+x+1.

В качестве операции сложения применим "исключающее или", для умножения - "и". Полиномы можно складывать, вычитать, умножать, делить. Дальше... )
vak: (Default)
В середине 80-х лучшим языком для символьного дифференцирования считался Рефал.
Diff  {
      (e.t) e.1 '+' e.2 = <Diff (e.t) e.1> '+' <Diff (e.t) e.2>;
      (e.t) e.1 '-' e.2 = <Diff (e.t) e.1> '-' <Diff (e.t) e.2>;
      (e.t) e.1 '*' e.2 = (e1 '*' <Diff (e.t) e.2>
                          '+' <Diff (e.t) e.1> '*' e.2);
      (e.t) (e.1)       = ( <Diff (e.t) e.1> );
      (e.t) e.t         = '1';
      (e.t) e.1         = '0';
}
Нынче Хаскель поинтереснее будет:
Dif a = D a (Dif a)

dConst :: Num a => a -> Dif a
dConst x0 = D x0 dZero
 
dZero :: Num a => Dif a
dZero = D 0 dZero

instance Num a => Num (Dif a) where
  fromInteger               = dConst . fromInteger
  D x0 x’ + D y0 y’         = D (x0 + y0) (x’ + y’)
  D x0 x’ - D y0 y’         = D (x0 - y0) (x’ - y’)
  x@(D x0 x’) * y@(D y0 y’) = D (x0 * y0) (x’ * y + x * y’)