aboutsummaryrefslogtreecommitdiffstats
path: root/libj2_j2i_rsh.3
blob: f5c60615309cb981e481bd3bf4d19a8447e4c700 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
.TH LIBJ2_J2I_RSH 3 LIBJ2
.SH NAME
libj2_j2i_rsh \- Right-shift bits

.SH SYNOPSIS
.nf
#include <libj2.h>

void \fBlibj2_j2i_rsh\fP(struct libj2_j2i *\fIa\fP, unsigned \fIb\fP);
void \fBlibj2_j2i_rsh_to_j2i\fP(const struct libj2_j2i *\fIa\fP, unsigned \fIb\fP, struct libj2_j2i *\fIr\fP);
void \fBlibj2_ji_rsh_to_j2i\fP(intmax_t \fIa\fP, unsigned \fIb\fP, struct libj2_j2i *\fIr\fP);
void \fBlibj2_j2u_rsh\fP(struct libj2_j2u *\fIa\fP, unsigned \fIb\fP);
void \fBlibj2_j2u_rsh_to_j2u\fP(const struct libj2_j2u *\fIa\fP, unsigned \fIb\fP, struct libj2_j2u *\fIr\fP);
void \fBlibj2_ju_rsh_to_j2u\fP(uintmax_t \fIa\fP, unsigned \fIb\fP, struct libj2_j2u *\fIr\fP);
int \fBlibj2_j2i_rsh_underflow\fP(struct libj2_j2i *\fIa\fP, unsigned \fIb\fP);
int \fBlibj2_j2i_rsh_to_j2i_underflow\fP(const struct libj2_j2i *\fIa\fP, unsigned \fIb\fP, struct libj2_j2i *\fIr\fP);
int \fBlibj2_ji_rsh_to_j2i_underflow\fP(intmax_t \fIa\fP, unsigned \fIb\fP, struct libj2_j2i *\fIr\fP);
int \fBlibj2_j2u_rsh_underflow\fP(struct libj2_j2u *\fIa\fP, unsigned \fIb\fP);
int \fBlibj2_j2u_rsh_to_j2u_underflow\fP(const struct libj2_j2u *\fIa\fP, unsigned \fIb\fP, struct libj2_j2u *\fIr\fP);
int \fBlibj2_ju_rsh_to_j2u_underflow\fP(uintmax_t \fIa\fP, unsigned \fIb\fP, struct libj2_j2u *\fIr\fP);
int \fBlibj2_j2i_rsh_underflow_p\fP(const struct libj2_j2i *\fIa\fP, unsigned \fIb\fP);
int \fBlibj2_ji_rsh_underflow_p\fP(intmax_t \fIa\fP, unsigned \fIb\fP);
int \fBlibj2_j2u_rsh_underflow_p\fP(const struct libj2_j2u *\fIa\fP, unsigned \fIb\fP);
int \fBlibj2_ju_rsh_underflow_p\fP(uintmax_t \fIa\fP, unsigned \fIb\fP);
.fi
.PP
Link with
.IR -lj2 .

.SH DESCRIPTION
The above listed functions discard the
.I b
least significant bits in
.IR a ,
shift all bits to
.I b
less significant positions, and clears the
.I b
most significant bits if
.I a
was non-negative, but sets the
.I b
most significant bits if
.I a
was negative, effectively dividing
.I a
by 2 to the power of
.IR b ,
rounding towards negative infinity.
The functions with the parameter
.I r
store the result in
.IR r ,
the other functions store the result in
.IR a ,
except the functions
.BR libj2_j2i_rsh_underflow_p (),
.BR libj2_ji_rsh_underflow_p (),
.BR libj2_j2u_rsh_underflow_p (),
and
.BR libj2_ju_rsh_underflow_p (),
only predict underflow, and do not perform
any bit-shifting, and therefore does store
it anywhere.
.PP
For the functions where
.I a
is a
.B uintmax_t
it is convert to a
.BR "struct libj2_j2u *" ,
and for the functions where
.I a
is a
.B intmax_t
it is convert to a
.BR "struct libj2_j2i *" ,
before described operations.
.PP
The value-returning functions (that is, those
with word
.B underflow
in their name), detect underflow, that is,
if any discarded bit (any of the
.I b
most significant bits) was set.
.PP
The arguments are assumed to be
.RI non- NULL .

.SH RETURN VALUE
For functions with a return value, the functions
return +1 if any discarded bit was set and
.I a
was positive, -1 if any discarded bit was cleared and
.I a
was negative,
and 0 otherwise.

.SH ERRORS
The above listed functions cannot fail.

.SH HISTORY
The
.BR libj2_j2u_rsh (),
.BR libj2_j2u_rsh_to_j2u (),
.BR libj2_ju_rsh_to_j2u (),
.BR libj2_j2u_rsh_underflow (),
.BR libj2_j2u_rsh_to_j2u_underflow (),
.BR libj2_ju_rsh_to_j2u_underflow (),
.BR libj2_j2u_rsh_underflow_p (),
and
.BR libj2_ju_rsh_underflow_p ()
functions were added in version 1.0 of
.BR libj2 .
.PP
The
.BR libj2_j2i_rsh (),
.BR libj2_j2i_rsh_to_j2i (),
.BR libj2_ji_rsh_to_j2i (),
.BR libj2_j2i_rsh_underflow (),
.BR libj2_j2i_rsh_to_j2i_underflow (),
.BR libj2_ji_rsh_to_j2i_underflow (),
.BR libj2_j2i_rsh_underflow_p (),
and
.BR libj2_ji_rsh_underflow_p ()
functions were added in version 1.1 of
.BR libj2 .

.SH SEE ALSO
.BR libj2 (7),
.BR libj2_j2i_lsh (3),
.BR libj2_j2u_lrot (3),
.BR libj2_j2u_rrot (3)