/* Zeta API - Z/keys/number.h
 ______  ______________  ___
|__   / |  ___|___  ___|/   \
  /  /__|  __|   |  |  /  -  \
 /______|_____|  |__| /__/ \__\
Copyright (C) 2006-2024 Manuel Sainz de Baranda y Goñi.
Released under the terms of the GNU Lesser General Public License v3. */

#ifndef Z_keys_number_H
#define Z_keys_number_H

#define Z_NUMBER_SET_N 1
#define Z_NUMBER_SET_Z 3
#define Z_NUMBER_SET_Q 4
#define Z_NUMBER_SET_R 5
#define Z_NUMBER_SET_I 6
#define Z_NUMBER_SET_C 7

#define Z_INTEGER_FORMAT_SIGNED_MAGNITUDE 0
#define Z_INTEGER_FORMAT_1S_COMPLEMENT	  1
#define Z_INTEGER_FORMAT_2S_COMPLEMENT	  2

#define Z_NUMBER_FORMAT_8BIT_NATURAL			 1
#define Z_NUMBER_FORMAT_16BIT_NATURAL			 2
#define Z_NUMBER_FORMAT_24BIT_NATURAL			 3
#define Z_NUMBER_FORMAT_32BIT_NATURAL			 4
#define Z_NUMBER_FORMAT_40BIT_NATURAL			 5
#define Z_NUMBER_FORMAT_48BIT_NATURAL			 6
#define Z_NUMBER_FORMAT_56BIT_NATURAL			 7
#define Z_NUMBER_FORMAT_64BIT_NATURAL			 8
#define Z_NUMBER_FORMAT_128BIT_NATURAL			 9
#define Z_NUMBER_FORMAT_SIGNED_MAGNITUDE_8BIT_INTEGER	10
#define Z_NUMBER_FORMAT_SIGNED_MAGNITUDE_16BIT_INTEGER	11
#define Z_NUMBER_FORMAT_SIGNED_MAGNITUDE_24BIT_INTEGER	12
#define Z_NUMBER_FORMAT_SIGNED_MAGNITUDE_32BIT_INTEGER	13
#define Z_NUMBER_FORMAT_SIGNED_MAGNITUDE_40BIT_INTEGER	14
#define Z_NUMBER_FORMAT_SIGNED_MAGNITUDE_48BIT_INTEGER	15
#define Z_NUMBER_FORMAT_SIGNED_MAGNITUDE_56BIT_INTEGER	16
#define Z_NUMBER_FORMAT_SIGNED_MAGNITUDE_64BIT_INTEGER	17
#define Z_NUMBER_FORMAT_SIGNED_MAGNITUDE_128BIT_INTEGER 18
#define Z_NUMBER_FORMAT_1S_COMPLEMENT_8BIT_INTEGER	19
#define Z_NUMBER_FORMAT_1S_COMPLEMENT_16BIT_INTEGER	20
#define Z_NUMBER_FORMAT_1S_COMPLEMENT_24BIT_INTEGER	21
#define Z_NUMBER_FORMAT_1S_COMPLEMENT_32BIT_INTEGER	22
#define Z_NUMBER_FORMAT_1S_COMPLEMENT_40BIT_INTEGER	23
#define Z_NUMBER_FORMAT_1S_COMPLEMENT_48BIT_INTEGER	24
#define Z_NUMBER_FORMAT_1S_COMPLEMENT_56BIT_INTEGER	25
#define Z_NUMBER_FORMAT_1S_COMPLEMENT_64BIT_INTEGER	26
#define Z_NUMBER_FORMAT_1S_COMPLEMENT_128BIT_INTEGER	27
#define Z_NUMBER_FORMAT_2S_COMPLEMENT_8BIT_INTEGER	28
#define Z_NUMBER_FORMAT_2S_COMPLEMENT_16BIT_INTEGER	29
#define Z_NUMBER_FORMAT_2S_COMPLEMENT_24BIT_INTEGER	30
#define Z_NUMBER_FORMAT_2S_COMPLEMENT_32BIT_INTEGER	31
#define Z_NUMBER_FORMAT_2S_COMPLEMENT_40BIT_INTEGER	32
#define Z_NUMBER_FORMAT_2S_COMPLEMENT_48BIT_INTEGER	33
#define Z_NUMBER_FORMAT_2S_COMPLEMENT_56BIT_INTEGER	34
#define Z_NUMBER_FORMAT_2S_COMPLEMENT_64BIT_INTEGER	35
#define Z_NUMBER_FORMAT_2S_COMPLEMENT_128BIT_INTEGER	36
#define Z_NUMBER_FORMAT_IEEE_754_BINARY16		37
#define Z_NUMBER_FORMAT_IEEE_754_BINARY32		38
#define Z_NUMBER_FORMAT_IEEE_754_BINARY64		39
#define Z_NUMBER_FORMAT_IEEE_754_BINARY128		40
#define Z_NUMBER_FORMAT_IEEE_754_DECIMAL32		41
#define Z_NUMBER_FORMAT_IEEE_754_DECIMAL64		42
#define Z_NUMBER_FORMAT_IEEE_754_DECIMAL128		43
#define Z_NUMBER_FORMAT_X87_DOUBLE_EXTENDED		44
#define Z_NUMBER_FORMAT_IBM_EXTENDED_DOUBLE		45
#define Z_NUMBER_FORMAT_ARM_FP16_ALTERNATIVE		46
#define Z_NUMBER_FORMAT_BRAIN_FLOATING_POINT		47

#endif /* Z_keys_number_H */
