Lines Matching refs:a

328 static inline unsigned int gf_mul(struct bch_control *bch, unsigned int a,  in gf_mul()  argument
331 return (a && b) ? bch->a_pow_tab[mod_s(bch, bch->a_log_tab[a]+ in gf_mul()
335 static inline unsigned int gf_sqr(struct bch_control *bch, unsigned int a) in gf_sqr() argument
337 return a ? bch->a_pow_tab[mod_s(bch, 2*bch->a_log_tab[a])] : 0; in gf_sqr()
340 static inline unsigned int gf_div(struct bch_control *bch, unsigned int a, in gf_div() argument
343 return a ? bch->a_pow_tab[mod_s(bch, bch->a_log_tab[a]+ in gf_div()
347 static inline unsigned int gf_inv(struct bch_control *bch, unsigned int a) in gf_inv() argument
349 return bch->a_pow_tab[GF_N(bch)-bch->a_log_tab[a]]; in gf_inv()
538 static int find_affine4_roots(struct bch_control *bch, unsigned int a, in find_affine4_roots() argument
547 k = a_log(bch, a); in find_affine4_roots()
553 (a ? bch->a_pow_tab[mod_s(bch, k)] : 0)^ in find_affine4_roots()
636 unsigned int a, b, c, a2, b2, c2, e3, tmp[4]; in find_poly_deg3_roots() local
648 a = gf_sqr(bch, a2)^b2; /* a = a2^2 + b2 */ in find_poly_deg3_roots()
651 if (find_affine4_roots(bch, a, b, c, tmp) == 4) { in find_poly_deg3_roots()
669 unsigned int a, b, c, d, e = 0, f, a2, b2, c2, e4; in find_poly_deg4_roots() local
679 a = gf_div(bch, poly->c[3], e4); in find_poly_deg4_roots()
682 if (a) { in find_poly_deg4_roots()
686 f = gf_div(bch, c, a); in find_poly_deg4_roots()
698 b = gf_mul(bch, a, e)^b; in find_poly_deg4_roots()
706 b2 = gf_div(bch, a, d); in find_poly_deg4_roots()
718 f = a ? gf_inv(bch, roots[i]) : roots[i]; in find_poly_deg4_roots()
730 const struct gf_poly *a, int *rep) in gf_poly_logrep() argument
732 int i, d = a->deg, l = GF_N(bch)-a_log(bch, a->c[a->deg]); in gf_poly_logrep()
736 rep[i] = a->c[i] ? mod_s(bch, a_log(bch, a->c[i])+l) : -1; in gf_poly_logrep()
742 static void gf_poly_mod(struct bch_control *bch, struct gf_poly *a, in gf_poly_mod() argument
746 unsigned int i, j, *c = a->c; in gf_poly_mod()
749 if (a->deg < d) in gf_poly_mod()
758 for (j = a->deg; j >= d; j--) { in gf_poly_mod()
770 a->deg = d-1; in gf_poly_mod()
771 while (!c[a->deg] && a->deg) in gf_poly_mod()
772 a->deg--; in gf_poly_mod()
778 static void gf_poly_div(struct bch_control *bch, struct gf_poly *a, in gf_poly_div() argument
781 if (a->deg >= b->deg) { in gf_poly_div()
782 q->deg = a->deg-b->deg; in gf_poly_div()
784 gf_poly_mod(bch, a, b, NULL); in gf_poly_div()
786 memcpy(q->c, &a->c[b->deg], (1+q->deg)*sizeof(unsigned int)); in gf_poly_div()
796 static struct gf_poly *gf_poly_gcd(struct bch_control *bch, struct gf_poly *a, in gf_poly_gcd() argument
799 dbg("gcd(%s,%s)=", gf_poly_str(a), gf_poly_str(b)); in gf_poly_gcd()
801 if (a->deg < b->deg) in gf_poly_gcd()
802 swap(a, b); in gf_poly_gcd()
805 gf_poly_mod(bch, a, b, NULL); in gf_poly_gcd()
806 swap(a, b); in gf_poly_gcd()
809 dbg("%s\n", gf_poly_str(a)); in gf_poly_gcd()
811 return a; in gf_poly_gcd()