1
4
5# ifndef LMT_ARITHMETIC_H
6# define LMT_ARITHMETIC_H
7
8
15
16extern scaled tex_multiply_and_add (int n, scaled x, scaled y, scaled max_answer);
17extern scaled tex_nx_plus_y (int n, scaled x, scaled y);
18extern scaled tex_multiply_integers (int n, scaled x);
19extern scaled tex_x_over_n_r (scaled x, int n, int *remainder);
20extern scaled tex_x_over_n (scaled x, int n);
21extern scaled tex_xn_over_d (scaled x, int n, int d);
22extern scaled tex_xn_over_d_r (scaled x, int n, int d, int *remainder);
23
24extern scaled tex_divide_scaled_n (double s, double m, double d);
25extern scaled tex_ext_xn_over_d (scaled, scaled, scaled);
26extern scaled tex_round_xn_over_d (scaled x, int n, unsigned int d);
27
28static inline scaled tex_round_decimals_digits(const unsigned char *digits, unsigned k)
29{
30 int a = 0;
31 while (k-- > 0) {
32 a = (a + digits[k] * two) / 10;
33 }
34 return (a + 1) / 2;
35}
36
37static inline int tex_half_scaled(int x)
38{
39 return odd(x) ? ((x + 1) / 2) : (x / 2);
40}
41
42# endif
43 |