coq-vsu-int63
Macros | Functions
int63.c File Reference
#include "../int63.h"
Include dependency graph for int63.c:

Go to the source code of this file.

Macros

#define COQ_VSU_INT63__INT63_C
 

Functions

int63_t encode_int63 (int64_t x)
 Encode an integer. More...
 
int64_t decode_int63 (int63_t x)
 Decode an integer. More...
 
int63_t int63_zero ()
 
int63_t int63_one ()
 
int63_t int63_neg (int63_t x)
 
int63_t int63_abs (int63_t x)
 
int63_t int63_add (int63_t x, int63_t y)
 
int63_t int63_sub (int63_t x, int63_t y)
 
int63_t int63_mul (int63_t x, int63_t y)
 
int63_t int63_div (int63_t x, int63_t y)
 
int63_t int63_rem (int63_t x, int63_t y)
 
int63_t int63_shiftl (int63_t x, int63_t y)
 
int63_t int63_shiftr (int63_t x, int63_t y)
 
int63_t int63_or (int63_t x, int63_t y)
 
int63_t int63_and (int63_t x, int63_t y)
 
int63_t int63_xor (int63_t x, int63_t y)
 
int63_t int63_not (int63_t x)
 

Macro Definition Documentation

◆ COQ_VSU_INT63__INT63_C

#define COQ_VSU_INT63__INT63_C

Definition at line 2 of file int63.c.

Function Documentation

◆ decode_int63()

int64_t decode_int63 ( int63_t  x)

Decode an integer.

Parameters
xThe integer to decode.
Returns
The decoded integer.

Definition at line 12 of file int63.c.

13 {
14  return (int64_t)x >> 1;
15 }

Referenced by int63_div(), int63_mul(), int63_rem(), int63_shiftl(), and int63_shiftr().

◆ encode_int63()

int63_t encode_int63 ( int64_t  x)

Encode an integer.

Parameters
xThe integer to encode.
Returns
The encoded integer.

Definition at line 7 of file int63.c.

8 {
9  return (x << 1) | 1;
10 }

Referenced by int63_div(), int63_mul(), int63_one(), int63_rem(), int63_shiftl(), int63_shiftr(), and int63_zero().

◆ int63_abs()

int63_t int63_abs ( int63_t  x)

Definition at line 33 of file int63.c.

34 {
35  return x < 0 ? int63_neg(x) : x;
36 }

References int63_neg().

◆ int63_add()

int63_t int63_add ( int63_t  x,
int63_t  y 
)

Definition at line 38 of file int63.c.

39 {
40  return (x + y) - 1;
41 }

◆ int63_and()

int63_t int63_and ( int63_t  x,
int63_t  y 
)

Definition at line 93 of file int63.c.

94 {
95  return x & y;
96 }

◆ int63_div()

int63_t int63_div ( int63_t  x,
int63_t  y 
)

Definition at line 56 of file int63.c.

57 {
58  const int64_t _x = decode_int63(x);
59  const int64_t _y = decode_int63(y);
60  const int64_t _z = _x / _y;
61  return encode_int63(_z);
62 }

References decode_int63(), and encode_int63().

◆ int63_mul()

int63_t int63_mul ( int63_t  x,
int63_t  y 
)

Definition at line 48 of file int63.c.

49 {
50  const int64_t _x = decode_int63(x);
51  const int64_t _y = decode_int63(y);
52  const int64_t _z = _x * _y;
53  return encode_int63(_z);
54 }

References decode_int63(), and encode_int63().

◆ int63_neg()

int63_t int63_neg ( int63_t  x)

Definition at line 28 of file int63.c.

29 {
30  return 2 - x;
31 }

Referenced by int63_abs().

◆ int63_not()

int63_t int63_not ( int63_t  x)

Definition at line 103 of file int63.c.

104 {
105  return (int63_t)1 | ~ x;
106 }

◆ int63_one()

int63_t int63_one ( )

Definition at line 23 of file int63.c.

24 {
25  return encode_int63(1);
26 }

References encode_int63().

◆ int63_or()

int63_t int63_or ( int63_t  x,
int63_t  y 
)

Definition at line 88 of file int63.c.

89 {
90  return x | y;
91 }

◆ int63_rem()

int63_t int63_rem ( int63_t  x,
int63_t  y 
)

Definition at line 64 of file int63.c.

65 {
66  const int64_t _x = decode_int63(x);
67  const int64_t _y = decode_int63(y);
68  const int64_t _z = _x % _y;
69  return encode_int63(_z);
70 }

References decode_int63(), and encode_int63().

◆ int63_shiftl()

int63_t int63_shiftl ( int63_t  x,
int63_t  y 
)

Definition at line 72 of file int63.c.

73 {
74  const int64_t _x = decode_int63(x);
75  const int64_t _y = decode_int63(y);
76  const int64_t _z = _x << _y;
77  return encode_int63(_z);
78 }

References decode_int63(), and encode_int63().

◆ int63_shiftr()

int63_t int63_shiftr ( int63_t  x,
int63_t  y 
)

Definition at line 80 of file int63.c.

81 {
82  const int64_t _x = decode_int63(x);
83  const int64_t _y = decode_int63(y);
84  const int64_t _z = _x >> _y;
85  return encode_int63(_z);
86 }

References decode_int63(), and encode_int63().

◆ int63_sub()

int63_t int63_sub ( int63_t  x,
int63_t  y 
)

Definition at line 43 of file int63.c.

44 {
45  return (x - y) + 1;
46 }

◆ int63_xor()

int63_t int63_xor ( int63_t  x,
int63_t  y 
)

Definition at line 98 of file int63.c.

99 {
100  return (int63_t)1 | (x ^ y);
101 }

◆ int63_zero()

int63_t int63_zero ( )

Definition at line 18 of file int63.c.

19 {
20  return encode_int63(0);
21 }

References encode_int63().

int63_neg
int63_t int63_neg(int63_t x)
Definition: int63.c:28
decode_int63
int64_t decode_int63(int63_t x)
Decode an integer.
Definition: int63.c:12
encode_int63
int63_t encode_int63(int64_t x)
Encode an integer.
Definition: int63.c:7
int63_t
int64_t int63_t
An encoded 63-bit integer.
Definition: int63.h:34