diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2024-06-09 20:06:19 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2024-06-09 20:06:19 +0200 |
| commit | 0b1930307f41db3ea7552d6b2f4666b33c64d26a (patch) | |
| tree | 6a2558e391f5cc14fa22770cb2791e4a85d84e5e /src/cube_portable.h | |
| parent | b218c803ae1110b08b4896be0a59177e280c9091 (diff) | |
| download | nissy-core-0b1930307f41db3ea7552d6b2f4666b33c64d26a.tar.gz nissy-core-0b1930307f41db3ea7552d6b2f4666b33c64d26a.zip | |
More cleanup
Diffstat (limited to 'src/cube_portable.h')
| -rw-r--r-- | src/cube_portable.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cube_portable.h b/src/cube_portable.h index 71a7e41..77e803b 100644 --- a/src/cube_portable.h +++ b/src/cube_portable.h | |||
| @@ -22,6 +22,7 @@ _static_inline void compose_corners_inplace(cube_t, cube_t, cube_t *); | |||
| 22 | _static_inline cube_t compose_edges(cube_t, cube_t); | 22 | _static_inline cube_t compose_edges(cube_t, cube_t); |
| 23 | _static_inline cube_t compose_corners(cube_t, cube_t); | 23 | _static_inline cube_t compose_corners(cube_t, cube_t); |
| 24 | _static_inline cube_t compose(cube_t, cube_t); | 24 | _static_inline cube_t compose(cube_t, cube_t); |
| 25 | _static_inline cube_t inverse(cube_t); | ||
| 25 | 26 | ||
| 26 | _static_inline int64_t coord_co(cube_t); | 27 | _static_inline int64_t coord_co(cube_t); |
| 27 | _static_inline int64_t coord_csep(cube_t); | 28 | _static_inline int64_t coord_csep(cube_t); |
| @@ -133,6 +134,27 @@ compose(cube_t c1, cube_t c2) | |||
| 133 | return ret; | 134 | return ret; |
| 134 | } | 135 | } |
| 135 | 136 | ||
| 137 | cube_t | ||
| 138 | inverse(cube_t cube) | ||
| 139 | { | ||
| 140 | uint8_t i, piece, orien; | ||
| 141 | cube_t ret; | ||
| 142 | |||
| 143 | for (i = 0; i < 12; i++) { | ||
| 144 | piece = cube.edge[i]; | ||
| 145 | orien = piece & _eobit; | ||
| 146 | ret.edge[piece & _pbits] = i | orien; | ||
| 147 | } | ||
| 148 | |||
| 149 | for (i = 0; i < 8; i++) { | ||
| 150 | piece = cube.corner[i]; | ||
| 151 | orien = ((piece << 1) | (piece >> 1)) & _cobits2; | ||
| 152 | ret.corner[piece & _pbits] = i | orien; | ||
| 153 | } | ||
| 154 | |||
| 155 | return ret; | ||
| 156 | } | ||
| 157 | |||
| 136 | _static_inline int64_t | 158 | _static_inline int64_t |
| 137 | coord_co(cube_t c) | 159 | coord_co(cube_t c) |
| 138 | { | 160 | { |
