common.c (1223B)
1 #include "common.h" 2 3 static inline dline_t decode_line(char *line) { 4 char *cp = line; 5 dline_t res; 6 7 cp = sread_next_u64(&res.pt[0], cp); 8 cp = sread_next_u64(&res.pt[1], cp); 9 cp = sread_next_u64(&res.pt[2], cp); 10 11 cp = sread_next_i64(&res.dir[0], cp); 12 cp = sread_next_i64(&res.dir[1], cp); 13 cp = sread_next_i64(&res.dir[2], cp); 14 15 return res; 16 } 17 18 void read_pts(pt_t *pts, pt_t *dir, char **lines, size_t nlines) { 19 size_t i; 20 dline_t t; 21 22 for (i = 0; i < nlines; i++) { 23 t = decode_line(lines[i]); 24 25 fmpq_init(pts[i].c[0]); 26 fmpq_set_si(pts[i].c[0], t.pt[0], 1); 27 fmpq_init(pts[i].c[1]); 28 fmpq_set_si(pts[i].c[1], t.pt[1], 1); 29 fmpq_init(pts[i].c[2]); 30 fmpq_set_si(pts[i].c[2], t.pt[2], 1); 31 32 fmpq_init(dir[i].c[0]); 33 fmpq_set_si(dir[i].c[0], t.dir[0], 1); 34 fmpq_init(dir[i].c[1]); 35 fmpq_set_si(dir[i].c[1], t.dir[1], 1); 36 fmpq_init(dir[i].c[2]); 37 fmpq_set_si(dir[i].c[2], t.dir[2], 1); 38 } 39 } 40 41 /* DEBUG */ 42 void print_point(pt_t p) { 43 printf("("); 44 fmpq_print(p.c[0]); 45 printf(", "); 46 fmpq_print(p.c[1]); 47 printf(", "); 48 fmpq_print(p.c[2]); 49 printf(")"); 50 } 51 52 void print_pp(pt_t p, pt_t q) { 53 print_point(p); 54 printf(" :: "); 55 print_point(q); 56 printf("\n"); 57 }