• Home
  • Raw
  • Download

Lines Matching refs:a

305 static inline unsigned int gf_mul(struct bch_control *bch, unsigned int a,  in gf_mul()  argument
308 return (a && b) ? bch->a_pow_tab[mod_s(bch, bch->a_log_tab[a]+ in gf_mul()
312 static inline unsigned int gf_sqr(struct bch_control *bch, unsigned int a) in gf_sqr() argument
314 return a ? bch->a_pow_tab[mod_s(bch, 2*bch->a_log_tab[a])] : 0; in gf_sqr()
317 static inline unsigned int gf_div(struct bch_control *bch, unsigned int a, in gf_div() argument
320 return a ? bch->a_pow_tab[mod_s(bch, bch->a_log_tab[a]+ in gf_div()
324 static inline unsigned int gf_inv(struct bch_control *bch, unsigned int a) in gf_inv() argument
326 return bch->a_pow_tab[GF_N(bch)-bch->a_log_tab[a]]; in gf_inv()
518 static int find_affine4_roots(struct bch_control *bch, unsigned int a, in find_affine4_roots() argument
527 k = a_log(bch, a); in find_affine4_roots()
533 (a ? bch->a_pow_tab[mod_s(bch, k)] : 0)^ in find_affine4_roots()
616 unsigned int a, b, c, a2, b2, c2, e3, tmp[4]; in find_poly_deg3_roots() local
628 a = gf_sqr(bch, a2)^b2; /* a = a2^2 + b2 */ in find_poly_deg3_roots()
631 if (find_affine4_roots(bch, a, b, c, tmp) == 4) { in find_poly_deg3_roots()
649 unsigned int a, b, c, d, e = 0, f, a2, b2, c2, e4; in find_poly_deg4_roots() local
659 a = gf_div(bch, poly->c[3], e4); in find_poly_deg4_roots()
662 if (a) { in find_poly_deg4_roots()
666 f = gf_div(bch, c, a); in find_poly_deg4_roots()
678 b = gf_mul(bch, a, e)^b; in find_poly_deg4_roots()
686 b2 = gf_div(bch, a, d); in find_poly_deg4_roots()
698 f = a ? gf_inv(bch, roots[i]) : roots[i]; in find_poly_deg4_roots()
710 const struct gf_poly *a, int *rep) in gf_poly_logrep() argument
712 int i, d = a->deg, l = GF_N(bch)-a_log(bch, a->c[a->deg]); in gf_poly_logrep()
716 rep[i] = a->c[i] ? mod_s(bch, a_log(bch, a->c[i])+l) : -1; in gf_poly_logrep()
722 static void gf_poly_mod(struct bch_control *bch, struct gf_poly *a, in gf_poly_mod() argument
726 unsigned int i, j, *c = a->c; in gf_poly_mod()
729 if (a->deg < d) in gf_poly_mod()
738 for (j = a->deg; j >= d; j--) { in gf_poly_mod()
750 a->deg = d-1; in gf_poly_mod()
751 while (!c[a->deg] && a->deg) in gf_poly_mod()
752 a->deg--; in gf_poly_mod()
758 static void gf_poly_div(struct bch_control *bch, struct gf_poly *a, in gf_poly_div() argument
761 if (a->deg >= b->deg) { in gf_poly_div()
762 q->deg = a->deg-b->deg; in gf_poly_div()
764 gf_poly_mod(bch, a, b, NULL); in gf_poly_div()
766 memcpy(q->c, &a->c[b->deg], (1+q->deg)*sizeof(unsigned int)); in gf_poly_div()
776 static struct gf_poly *gf_poly_gcd(struct bch_control *bch, struct gf_poly *a, in gf_poly_gcd() argument
781 dbg("gcd(%s,%s)=", gf_poly_str(a), gf_poly_str(b)); in gf_poly_gcd()
783 if (a->deg < b->deg) { in gf_poly_gcd()
785 b = a; in gf_poly_gcd()
786 a = tmp; in gf_poly_gcd()
790 gf_poly_mod(bch, a, b, NULL); in gf_poly_gcd()
792 b = a; in gf_poly_gcd()
793 a = tmp; in gf_poly_gcd()
796 dbg("%s\n", gf_poly_str(a)); in gf_poly_gcd()
798 return a; in gf_poly_gcd()