868b2b66 (kx 2024-12-20 16:11:07 +0300 1)
868b2b66 (kx 2024-12-20 16:11:07 +0300 2) #ifndef __LIB_MPU_H
868b2b66 (kx 2024-12-20 16:11:07 +0300 3) #define __LIB_MPU_H
868b2b66 (kx 2024-12-20 16:11:07 +0300 4)
868b2b66 (kx 2024-12-20 16:11:07 +0300 5) #ifdef __cplusplus
868b2b66 (kx 2024-12-20 16:11:07 +0300 6) extern "C" {
868b2b66 (kx 2024-12-20 16:11:07 +0300 7) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 8)
868b2b66 (kx 2024-12-20 16:11:07 +0300 9) #define MPU_REAL_IO_LIMIT @LIBMPU_REAL_IO_LIMIT@
868b2b66 (kx 2024-12-20 16:11:07 +0300 10) #define MPU_MATH_FN_LIMIT @LIBMPU_REAL_MATH_F_LIMIT@
868b2b66 (kx 2024-12-20 16:11:07 +0300 11)
868b2b66 (kx 2024-12-20 16:11:07 +0300 12) #define MPU_BYTE_ORDER @GCC_BYTE_ORDER@
868b2b66 (kx 2024-12-20 16:11:07 +0300 13) #define MPU_BYTE_ORDER_BIG_ENDIAN @GCC_BYTE_ORDER_BIG_ENDIAN@
868b2b66 (kx 2024-12-20 16:11:07 +0300 14) #define MPU_BYTE_ORDER_LITTLE_ENDIAN @GCC_BYTE_ORDER_LITTLE_ENDIAN@
868b2b66 (kx 2024-12-20 16:11:07 +0300 15)
868b2b66 (kx 2024-12-20 16:11:07 +0300 16) #define MPU_WORD_ORDER @GCC_FLOAT_WORD_ORDER@
868b2b66 (kx 2024-12-20 16:11:07 +0300 17) #define MPU_WORD_ORDER_BIG_ENDIAN @GCC_FLOAT_WORD_ORDER_BIG_ENDIAN@
868b2b66 (kx 2024-12-20 16:11:07 +0300 18) #define MPU_WORD_ORDER_LITTLE_ENDIAN @GCC_FLOAT_WORD_ORDER_LITTLE_ENDIAN@
868b2b66 (kx 2024-12-20 16:11:07 +0300 19)
868b2b66 (kx 2024-12-20 16:11:07 +0300 20) #define BITS_PER_MACHINE_REGISTER @MACHINE_REGISTER_WIDTH@
868b2b66 (kx 2024-12-20 16:11:07 +0300 21)
868b2b66 (kx 2024-12-20 16:11:07 +0300 22) /******************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 23) Minimal addressible UNIT of information:
868b2b66 (kx 2024-12-20 16:11:07 +0300 24) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 25) typedef @GCC_UINT8_TYPE@ __mpu_UNIT_t; /* unsigned UNIT */
868b2b66 (kx 2024-12-20 16:11:07 +0300 26) typedef @GCC_INT8_TYPE@ __mpu_SUNIT_t; /* signed UNIT */
868b2b66 (kx 2024-12-20 16:11:07 +0300 27) #define BITS_PER_UNIT_T @GCC_CHAR_WIDTH@
868b2b66 (kx 2024-12-20 16:11:07 +0300 28)
868b2b66 (kx 2024-12-20 16:11:07 +0300 29) typedef @GCC_UINT8_TYPE@ __mpu_byte_t; /* unsigned byte */
868b2b66 (kx 2024-12-20 16:11:07 +0300 30) typedef @GCC_INT8_TYPE@ __mpu_sbyte_t; /* signed byte */
868b2b66 (kx 2024-12-20 16:11:07 +0300 31) #define BITS_PER_BYTE_T @GCC_CHAR_WIDTH@
868b2b66 (kx 2024-12-20 16:11:07 +0300 32)
868b2b66 (kx 2024-12-20 16:11:07 +0300 33) /**********
868b2b66 (kx 2024-12-20 16:11:07 +0300 34) ADDRESS:
868b2b66 (kx 2024-12-20 16:11:07 +0300 35) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 36) typedef @GCC_UINTPTR_TYPE@ __mpu_address_t; /* unsigned ADDRESS */
868b2b66 (kx 2024-12-20 16:11:07 +0300 37) typedef @GCC_UINTPTR_TYPE@ __mpu_saddress_t; /* signed DIFFADDRESS */
868b2b66 (kx 2024-12-20 16:11:07 +0300 38)
868b2b66 (kx 2024-12-20 16:11:07 +0300 39) /*******************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 40) Signed DIFFerence of two PTR:
868b2b66 (kx 2024-12-20 16:11:07 +0300 41) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 42) typedef @GCC_PTRDIFF_TYPE@ __mpu_ptrdiff_t; /* signed PTRDIFF */
868b2b66 (kx 2024-12-20 16:11:07 +0300 43)
868b2b66 (kx 2024-12-20 16:11:07 +0300 44) /*************
868b2b66 (kx 2024-12-20 16:11:07 +0300 45) SIZE types:
868b2b66 (kx 2024-12-20 16:11:07 +0300 46) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 47) typedef @GCC_SIZE_TYPE@ __mpu_size_t; /* unsigned SIZE */
868b2b66 (kx 2024-12-20 16:11:07 +0300 48) typedef @GCC_INTMAX_TYPE@ __mpu_ssize_t; /* signed SIZE: is type of a byte count, or error. */
868b2b66 (kx 2024-12-20 16:11:07 +0300 49)
868b2b66 (kx 2024-12-20 16:11:07 +0300 50) /*****************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 51) COUNTER is always unsigned:
868b2b66 (kx 2024-12-20 16:11:07 +0300 52) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 53) typedef __mpu_size_t __mpu_count_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 54)
868b2b66 (kx 2024-12-20 16:11:07 +0300 55)
868b2b66 (kx 2024-12-20 16:11:07 +0300 56) /***************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 57) ERRNO is always signed:
868b2b66 (kx 2024-12-20 16:11:07 +0300 58) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 59) typedef int __mpu_error_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 60)
868b2b66 (kx 2024-12-20 16:11:07 +0300 61)
868b2b66 (kx 2024-12-20 16:11:07 +0300 62) /*******
868b2b66 (kx 2024-12-20 16:11:07 +0300 63) VOID:
868b2b66 (kx 2024-12-20 16:11:07 +0300 64) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 65) #define __mpu_void_t void
868b2b66 (kx 2024-12-20 16:11:07 +0300 66)
868b2b66 (kx 2024-12-20 16:11:07 +0300 67)
868b2b66 (kx 2024-12-20 16:11:07 +0300 68) #define __mpu_UINT32_C(c) c ## @LIBMPU_UINT32_CONST_SUFFIX@
868b2b66 (kx 2024-12-20 16:11:07 +0300 69) #define __mpu_UINT64_C(c) c ## @LIBMPU_UINT64_CONST_SUFFIX@
868b2b66 (kx 2024-12-20 16:11:07 +0300 70)
868b2b66 (kx 2024-12-20 16:11:07 +0300 71)
868b2b66 (kx 2024-12-20 16:11:07 +0300 72) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 73) Тип данных, используемый для операций с выровненной памятью.
868b2b66 (kx 2024-12-20 16:11:07 +0300 74) Беззнаковый( 32 bits ).
868b2b66 (kx 2024-12-20 16:11:07 +0300 75) ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 76) #define __mem_op_t @GCC_UINT32_TYPE@
868b2b66 (kx 2024-12-20 16:11:07 +0300 77) #define MEM_OP_SIZE (sizeof(__mem_op_t))
868b2b66 (kx 2024-12-20 16:11:07 +0300 78) #define MEM_OP_BYTES 4
868b2b66 (kx 2024-12-20 16:11:07 +0300 79) #define MEM_OP_BITS 32
868b2b66 (kx 2024-12-20 16:11:07 +0300 80)
868b2b66 (kx 2024-12-20 16:11:07 +0300 81) /*********************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 82) Base data types:
868b2b66 (kx 2024-12-20 16:11:07 +0300 83) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 84) typedef @GCC_INT8_TYPE@ __mpu_int8_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 85) typedef @GCC_UINT8_TYPE@ __mpu_uint8_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 86) typedef @GCC_INT16_TYPE@ __mpu_int16_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 87) typedef @GCC_UINT16_TYPE@ __mpu_uint16_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 88) typedef @GCC_INT32_TYPE@ __mpu_int32_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 89) typedef @GCC_UINT32_TYPE@ __mpu_uint32_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 90) typedef @GCC_INT64_TYPE@ __mpu_int64_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 91) typedef @GCC_UINT64_TYPE@ __mpu_uint64_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 92)
868b2b66 (kx 2024-12-20 16:11:07 +0300 93) /*******
868b2b66 (kx 2024-12-20 16:11:07 +0300 94) REAL:
868b2b66 (kx 2024-12-20 16:11:07 +0300 95) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 96) typedef float __mpu_real32_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 97) typedef double __mpu_real64_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 98)
868b2b66 (kx 2024-12-20 16:11:07 +0300 99) /*********************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 100) CHAR types are always unsigned:
868b2b66 (kx 2024-12-20 16:11:07 +0300 101) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 102) typedef @GCC_UINT8_TYPE@ __mpu_char8_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 103) typedef @GCC_UINT16_TYPE@ __mpu_char16_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 104) typedef @GCC_UINT32_TYPE@ __mpu_char32_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 105)
868b2b66 (kx 2024-12-20 16:11:07 +0300 106) /*********************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 107) UTF-8, UCS2, UCS4 types. UTF-8 CHAR is always unsigned:
868b2b66 (kx 2024-12-20 16:11:07 +0300 108) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 109) typedef @GCC_UINT8_TYPE@ __mpu_utf8_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 110) typedef @GCC_UINT16_TYPE@ __mpu_ucs2_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 111) typedef @GCC_UINT32_TYPE@ __mpu_ucs4_t;
868b2b66 (kx 2024-12-20 16:11:07 +0300 112)
868b2b66 (kx 2024-12-20 16:11:07 +0300 113) /*********************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 114) Always signed with a size larger than any type of char:
868b2b66 (kx 2024-12-20 16:11:07 +0300 115) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 116) typedef @GCC_INT64_TYPE@ __mpu_int_c;
868b2b66 (kx 2024-12-20 16:11:07 +0300 117)
868b2b66 (kx 2024-12-20 16:11:07 +0300 118)
868b2b66 (kx 2024-12-20 16:11:07 +0300 119) extern void __mpu_init( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 120) extern void __mpu_free_context( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 121)
868b2b66 (kx 2024-12-20 16:11:07 +0300 122) /********************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 123) Error numbers:
868b2b66 (kx 2024-12-20 16:11:07 +0300 124) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 125) extern __mpu_error_t *__ptr_integer_error_no( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 126) extern __mpu_error_t *__ptr_real_error_no ( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 127) extern __mpu_error_t *__ptr_complex_error_no( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 128) extern __mpu_error_t *__ptr_math_error_no ( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 129) #define __mpu_integer_error_no (*__ptr_integer_error_no())
868b2b66 (kx 2024-12-20 16:11:07 +0300 130) #define __mpu_real_error_no (*__ptr_real_error_no())
868b2b66 (kx 2024-12-20 16:11:07 +0300 131) #define __mpu_complex_error_no (*__ptr_complex_error_no())
868b2b66 (kx 2024-12-20 16:11:07 +0300 132) #define __mpu_math_error_no (*__ptr_math_error_no())
868b2b66 (kx 2024-12-20 16:11:07 +0300 133)
868b2b66 (kx 2024-12-20 16:11:07 +0300 134) extern __mpu_error_t *__ptr_extra_warnings ( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 135) #define __mpu_extra_warnings (*__ptr_extra_warnings())
868b2b66 (kx 2024-12-20 16:11:07 +0300 136)
868b2b66 (kx 2024-12-20 16:11:07 +0300 137)
868b2b66 (kx 2024-12-20 16:11:07 +0300 138) extern void __mpu_clear_iflags( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 139) extern void __mpu_clear_rflags( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 140) extern void __mpu_clear_mflags( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 141)
868b2b66 (kx 2024-12-20 16:11:07 +0300 142)
31f615c1 (kx 2024-12-28 23:52:17 +0300 143) /* Get integer flags: */
31f615c1 (kx 2024-12-28 23:52:17 +0300 144) extern int __mpu_gta( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 145) extern int __mpu_gtc( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 146) extern int __mpu_gto( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 147) extern int __mpu_gts( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 148) extern int __mpu_gtp( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 149) extern int __mpu_gtz( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 150) extern int __mpu_gtr( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 151) extern int __mpu_gtv( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 152)
31f615c1 (kx 2024-12-28 23:52:17 +0300 153) /* Set integer flags: */
868b2b66 (kx 2024-12-20 16:11:07 +0300 154) extern void __mpu_sta( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 155) extern void __mpu_stc( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 156) extern void __mpu_sto( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 157) extern void __mpu_sts( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 158) extern void __mpu_stp( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 159) extern void __mpu_stz( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 160) extern void __mpu_str( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 161) extern void __mpu_stv( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 162)
31f615c1 (kx 2024-12-28 23:52:17 +0300 163) /* Clear integer flags: */
868b2b66 (kx 2024-12-20 16:11:07 +0300 164) extern void __mpu_cla( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 165) extern void __mpu_clc( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 166) extern void __mpu_clo( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 167) extern void __mpu_cls( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 168) extern void __mpu_clp( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 169) extern void __mpu_clz( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 170) extern void __mpu_clr( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 171) extern void __mpu_clv( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 172)
31f615c1 (kx 2024-12-28 23:52:17 +0300 173) /* Complement integer flags: */
868b2b66 (kx 2024-12-20 16:11:07 +0300 174) extern void __mpu_cma( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 175) extern void __mpu_cmc( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 176) extern void __mpu_cmo( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 177) extern void __mpu_cms( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 178) extern void __mpu_cmp( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 179) extern void __mpu_cmz( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 180) extern void __mpu_cmr( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 181) extern void __mpu_cmv( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 182)
868b2b66 (kx 2024-12-20 16:11:07 +0300 183)
31f615c1 (kx 2024-12-28 23:52:17 +0300 184) /* Get real flags: */
31f615c1 (kx 2024-12-28 23:52:17 +0300 185) extern int __mpu_gtdom( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 186) extern int __mpu_gtsng( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 187) extern int __mpu_gtovf( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 188) extern int __mpu_gtudf( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 189) extern int __mpu_gttls( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 190) extern int __mpu_gtpls( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 191) extern int __mpu_gtind( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 192) extern int __mpu_gtinx( void );
31f615c1 (kx 2024-12-28 23:52:17 +0300 193)
31f615c1 (kx 2024-12-28 23:52:17 +0300 194) /* Set real flags: */
868b2b66 (kx 2024-12-20 16:11:07 +0300 195) extern void __mpu_stdom( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 196) extern void __mpu_stsng( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 197) extern void __mpu_stovf( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 198) extern void __mpu_studf( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 199) extern void __mpu_sttls( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 200) extern void __mpu_stpls( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 201) extern void __mpu_stind( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 202) extern void __mpu_stinx( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 203)
31f615c1 (kx 2024-12-28 23:52:17 +0300 204) /* Clear real flags: */
868b2b66 (kx 2024-12-20 16:11:07 +0300 205) extern void __mpu_cldom( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 206) extern void __mpu_clsng( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 207) extern void __mpu_clovf( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 208) extern void __mpu_cludf( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 209) extern void __mpu_cltls( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 210) extern void __mpu_clpls( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 211) extern void __mpu_clind( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 212) extern void __mpu_clinx( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 213)
31f615c1 (kx 2024-12-28 23:52:17 +0300 214) /* Complement real flags: */
868b2b66 (kx 2024-12-20 16:11:07 +0300 215) extern void __mpu_cmdom( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 216) extern void __mpu_cmsng( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 217) extern void __mpu_cmovf( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 218) extern void __mpu_cmudf( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 219) extern void __mpu_cmtls( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 220) extern void __mpu_cmpls( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 221) extern void __mpu_cmind( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 222) extern void __mpu_cminx( void );
868b2b66 (kx 2024-12-20 16:11:07 +0300 223)
868b2b66 (kx 2024-12-20 16:11:07 +0300 224)
868b2b66 (kx 2024-12-20 16:11:07 +0300 225) /********************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 226) Math ERRNO declarations:
868b2b66 (kx 2024-12-20 16:11:07 +0300 227) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 228) #define MPU_MATH_ERROR_MSG_SIZE 4096
868b2b66 (kx 2024-12-20 16:11:07 +0300 229)
868b2b66 (kx 2024-12-20 16:11:07 +0300 230) #define __EUNKNOWN__ 0 /* unknown error type (for all sources) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 231)
868b2b66 (kx 2024-12-20 16:11:07 +0300 232) /**********************
868b2b66 (kx 2024-12-20 16:11:07 +0300 233) Integer error types:
868b2b66 (kx 2024-12-20 16:11:07 +0300 234) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 235) #define __I_ESIZE__ 1 /* Invalid size of operand(s) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 236) #define __I_ESHIFT__ 2 /* Invalid number of shifts */
868b2b66 (kx 2024-12-20 16:11:07 +0300 237) #define __I_ENUMBER__ 3 /* Invalid number */
868b2b66 (kx 2024-12-20 16:11:07 +0300 238) #define __I_ERADIX__ 4 /* Invalid radix */
868b2b66 (kx 2024-12-20 16:11:07 +0300 239)
868b2b66 (kx 2024-12-20 16:11:07 +0300 240) #define __I_MAX_ERRNO 5
868b2b66 (kx 2024-12-20 16:11:07 +0300 241)
868b2b66 (kx 2024-12-20 16:11:07 +0300 242) /*******************
868b2b66 (kx 2024-12-20 16:11:07 +0300 243) Real error types:
868b2b66 (kx 2024-12-20 16:11:07 +0300 244) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 245) #define __R_ESIZE__ 1 /* Invalid size of operand(s) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 246) #define __R_ETRUNC__ 2 /* Invalid number of TRUNC bits(BZ) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 247)
868b2b66 (kx 2024-12-20 16:11:07 +0300 248) #define __R_MAX_ERRNO 3
868b2b66 (kx 2024-12-20 16:11:07 +0300 249)
868b2b66 (kx 2024-12-20 16:11:07 +0300 250) /**********************
868b2b66 (kx 2024-12-20 16:11:07 +0300 251) Complex error types:
868b2b66 (kx 2024-12-20 16:11:07 +0300 252) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 253) #define __C_EDIVZEROBYZERO__ 1 /* Complex attempted division by zero */
868b2b66 (kx 2024-12-20 16:11:07 +0300 254) #define __C_ELOGOFZERO__ 2 /* Complex attempted LOG of zero magnitude number */
868b2b66 (kx 2024-12-20 16:11:07 +0300 255) #define __C_EPOWOFZERO__ 3 /* Complex attempted POW of zero magnitude number */
868b2b66 (kx 2024-12-20 16:11:07 +0300 256)
868b2b66 (kx 2024-12-20 16:11:07 +0300 257) #define __C_MAX_ERRNO 4
868b2b66 (kx 2024-12-20 16:11:07 +0300 258)
868b2b66 (kx 2024-12-20 16:11:07 +0300 259) /*******************
868b2b66 (kx 2024-12-20 16:11:07 +0300 260) Math error types:
868b2b66 (kx 2024-12-20 16:11:07 +0300 261) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 262) #define __DOMAIN__ 1 /* argument domain error */
868b2b66 (kx 2024-12-20 16:11:07 +0300 263) #define __SING__ 2 /* argument singularity */
868b2b66 (kx 2024-12-20 16:11:07 +0300 264) #define __OVERFLOW__ 3 /* overflow range error */
868b2b66 (kx 2024-12-20 16:11:07 +0300 265) #define __UNDERFLOW__ 4 /* underflow range error */
868b2b66 (kx 2024-12-20 16:11:07 +0300 266) #define __TLOSS__ 5 /* total loss of precision */
868b2b66 (kx 2024-12-20 16:11:07 +0300 267) #define __PLOSS__ 6 /* partial loss of precision */
868b2b66 (kx 2024-12-20 16:11:07 +0300 268) #define __INVALID__ 7 /* -InD - produsing operation */
868b2b66 (kx 2024-12-20 16:11:07 +0300 269) #define __INEXACT__ 8 /* inexact result of operation */
868b2b66 (kx 2024-12-20 16:11:07 +0300 270)
868b2b66 (kx 2024-12-20 16:11:07 +0300 271) #define __M_MAX_ERRNO 9
868b2b66 (kx 2024-12-20 16:11:07 +0300 272)
868b2b66 (kx 2024-12-20 16:11:07 +0300 273)
868b2b66 (kx 2024-12-20 16:11:07 +0300 274) /*******************
868b2b66 (kx 2024-12-20 16:11:07 +0300 275) Struct Exception:
868b2b66 (kx 2024-12-20 16:11:07 +0300 276) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 277) /***
868b2b66 (kx 2024-12-20 16:11:07 +0300 278) __exception.who - источник ошибки.
868b2b66 (kx 2024-12-20 16:11:07 +0300 279) ************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 280) #define _UNKNOWN_ 4
868b2b66 (kx 2024-12-20 16:11:07 +0300 281) #define _COMPLEX_ 3
868b2b66 (kx 2024-12-20 16:11:07 +0300 282) #define _REAL_ 2
868b2b66 (kx 2024-12-20 16:11:07 +0300 283) #define _INTEGER_ 1
868b2b66 (kx 2024-12-20 16:11:07 +0300 284) #define _MATH_ 0
868b2b66 (kx 2024-12-20 16:11:07 +0300 285)
868b2b66 (kx 2024-12-20 16:11:07 +0300 286) /***
868b2b66 (kx 2024-12-20 16:11:07 +0300 287) __exception.msg_type - тип сообщения.
868b2b66 (kx 2024-12-20 16:11:07 +0300 288) ***************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 289) #define _MSG_ 2
868b2b66 (kx 2024-12-20 16:11:07 +0300 290) #define _ERROR_MSG_ 1
868b2b66 (kx 2024-12-20 16:11:07 +0300 291) #define _WARNING_MSG_ 0
868b2b66 (kx 2024-12-20 16:11:07 +0300 292)
868b2b66 (kx 2024-12-20 16:11:07 +0300 293) struct __exception
868b2b66 (kx 2024-12-20 16:11:07 +0300 294) {
868b2b66 (kx 2024-12-20 16:11:07 +0300 295) int who; /* _COMPLEX_, _REAL_, _INTEGER_, _MATH_ */
868b2b66 (kx 2024-12-20 16:11:07 +0300 296)
868b2b66 (kx 2024-12-20 16:11:07 +0300 297) int type;
868b2b66 (kx 2024-12-20 16:11:07 +0300 298) __mpu_char8_t *name;
868b2b66 (kx 2024-12-20 16:11:07 +0300 299) __mpu_char8_t *msg;
868b2b66 (kx 2024-12-20 16:11:07 +0300 300) int msg_type; /* >= 1 - error, 0 - warning */
868b2b66 (kx 2024-12-20 16:11:07 +0300 301)
868b2b66 (kx 2024-12-20 16:11:07 +0300 302) int nb_a1; /* number of bytes in arg_1 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 303) int nb_a2; /* number of bytes in arg_2 */
868b2b66 (kx 2024-12-20 16:11:07 +0300 304) int nb_rv; /* number of bytes in return_value */
868b2b66 (kx 2024-12-20 16:11:07 +0300 305)
868b2b66 (kx 2024-12-20 16:11:07 +0300 306) unsigned char *arg_1;
868b2b66 (kx 2024-12-20 16:11:07 +0300 307) unsigned char *arg_2;
868b2b66 (kx 2024-12-20 16:11:07 +0300 308) unsigned char *return_value;
868b2b66 (kx 2024-12-20 16:11:07 +0300 309) };
868b2b66 (kx 2024-12-20 16:11:07 +0300 310)
868b2b66 (kx 2024-12-20 16:11:07 +0300 311) extern __mpu_utf8_t *
868b2b66 (kx 2024-12-20 16:11:07 +0300 312) __mpu_utf8mpu_error( int who, __mpu_error_t errnum );
868b2b66 (kx 2024-12-20 16:11:07 +0300 313)
868b2b66 (kx 2024-12-20 16:11:07 +0300 314) extern int __use_default_math_error;
868b2b66 (kx 2024-12-20 16:11:07 +0300 315) extern int __mpu_math_error( struct __exception *pexcept );
868b2b66 (kx 2024-12-20 16:11:07 +0300 316)
868b2b66 (kx 2024-12-20 16:11:07 +0300 317) extern int __use_default_mpu_warning;
868b2b66 (kx 2024-12-20 16:11:07 +0300 318) extern void __mpu_warning( struct __exception *pexcept );
868b2b66 (kx 2024-12-20 16:11:07 +0300 319)
868b2b66 (kx 2024-12-20 16:11:07 +0300 320)
868b2b66 (kx 2024-12-20 16:11:07 +0300 321) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 322) Размер данных в байтах:
868b2b66 (kx 2024-12-20 16:11:07 +0300 323) ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 324) /********* integer ******
868b2b66 (kx 2024-12-20 16:11:07 +0300 325) =
868b2b66 (kx 2024-12-20 16:11:07 +0300 326) ************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 327) #define NB_I8 1
868b2b66 (kx 2024-12-20 16:11:07 +0300 328) #define NB_I16 2
868b2b66 (kx 2024-12-20 16:11:07 +0300 329) #define NB_I32 4
868b2b66 (kx 2024-12-20 16:11:07 +0300 330) #define NB_I64 8
868b2b66 (kx 2024-12-20 16:11:07 +0300 331) #define NB_I128 16
868b2b66 (kx 2024-12-20 16:11:07 +0300 332) #define NB_I256 32
868b2b66 (kx 2024-12-20 16:11:07 +0300 333) #define NB_I512 64
868b2b66 (kx 2024-12-20 16:11:07 +0300 334) #define NB_I1024 128
868b2b66 (kx 2024-12-20 16:11:07 +0300 335) #define NB_I2048 256
868b2b66 (kx 2024-12-20 16:11:07 +0300 336) #define NB_I4096 512
868b2b66 (kx 2024-12-20 16:11:07 +0300 337) #define NB_I8192 1024
868b2b66 (kx 2024-12-20 16:11:07 +0300 338) #define NB_I16384 2048
868b2b66 (kx 2024-12-20 16:11:07 +0300 339) #define NB_I32768 4096
868b2b66 (kx 2024-12-20 16:11:07 +0300 340) #define NB_I65536 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 341) #define NB_I_MAX 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 342)
868b2b66 (kx 2024-12-20 16:11:07 +0300 343) /********* real *********
868b2b66 (kx 2024-12-20 16:11:07 +0300 344) =
868b2b66 (kx 2024-12-20 16:11:07 +0300 345) ************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 346) #define NB_R32 4
868b2b66 (kx 2024-12-20 16:11:07 +0300 347) #define NB_R64 8
868b2b66 (kx 2024-12-20 16:11:07 +0300 348) #define NB_R128 16
868b2b66 (kx 2024-12-20 16:11:07 +0300 349) #define NB_R256 32
868b2b66 (kx 2024-12-20 16:11:07 +0300 350) #define NB_R512 64
868b2b66 (kx 2024-12-20 16:11:07 +0300 351) #define NB_R1024 128
868b2b66 (kx 2024-12-20 16:11:07 +0300 352) #define NB_R2048 256
868b2b66 (kx 2024-12-20 16:11:07 +0300 353) #define NB_R4096 512
868b2b66 (kx 2024-12-20 16:11:07 +0300 354) #define NB_R8192 1024
868b2b66 (kx 2024-12-20 16:11:07 +0300 355) #define NB_R16384 2048
868b2b66 (kx 2024-12-20 16:11:07 +0300 356) #define NB_R32768 4096
868b2b66 (kx 2024-12-20 16:11:07 +0300 357) #define NB_R65536 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 358) #define NB_R_MAX 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 359)
868b2b66 (kx 2024-12-20 16:11:07 +0300 360) /********* complex ******
868b2b66 (kx 2024-12-20 16:11:07 +0300 361) =
868b2b66 (kx 2024-12-20 16:11:07 +0300 362) ************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 363) #define NB_C32 4
868b2b66 (kx 2024-12-20 16:11:07 +0300 364) #define NB_C64 8
868b2b66 (kx 2024-12-20 16:11:07 +0300 365) #define NB_C128 16
868b2b66 (kx 2024-12-20 16:11:07 +0300 366) #define NB_C256 32
868b2b66 (kx 2024-12-20 16:11:07 +0300 367) #define NB_C512 64
868b2b66 (kx 2024-12-20 16:11:07 +0300 368) #define NB_C1024 128
868b2b66 (kx 2024-12-20 16:11:07 +0300 369) #define NB_C2048 256
868b2b66 (kx 2024-12-20 16:11:07 +0300 370) #define NB_C4096 512
868b2b66 (kx 2024-12-20 16:11:07 +0300 371) #define NB_C8192 1024
868b2b66 (kx 2024-12-20 16:11:07 +0300 372) #define NB_C16384 2048
868b2b66 (kx 2024-12-20 16:11:07 +0300 373) #define NB_C32768 4096
868b2b66 (kx 2024-12-20 16:11:07 +0300 374) #define NB_C65536 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 375) #define NB_C_MAX 8192
868b2b66 (kx 2024-12-20 16:11:07 +0300 376)
868b2b66 (kx 2024-12-20 16:11:07 +0300 377)
868b2b66 (kx 2024-12-20 16:11:07 +0300 378) typedef __mpu_byte_t mpu_int; /* integer number */
868b2b66 (kx 2024-12-20 16:11:07 +0300 379) typedef __mpu_byte_t mpu_real; /* real number */
868b2b66 (kx 2024-12-20 16:11:07 +0300 380) typedef __mpu_byte_t mpu_complex; /* complex number */
868b2b66 (kx 2024-12-20 16:11:07 +0300 381) typedef __mpu_byte_t *mpu_p_num; /* pointer to number */
868b2b66 (kx 2024-12-20 16:11:07 +0300 382)
868b2b66 (kx 2024-12-20 16:11:07 +0300 383)
868b2b66 (kx 2024-12-20 16:11:07 +0300 384) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 385) INTEGER DATA TYPES
868b2b66 (kx 2024-12-20 16:11:07 +0300 386) ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 387) typedef __mpu_byte_t mpu_int8_t[1];
868b2b66 (kx 2024-12-20 16:11:07 +0300 388) typedef __mpu_byte_t mpu_int16_t[2];
868b2b66 (kx 2024-12-20 16:11:07 +0300 389) typedef __mpu_byte_t mpu_int32_t[4];
868b2b66 (kx 2024-12-20 16:11:07 +0300 390) typedef __mpu_byte_t mpu_int64_t[8];
868b2b66 (kx 2024-12-20 16:11:07 +0300 391) typedef __mpu_byte_t mpu_int128_t[16];
868b2b66 (kx 2024-12-20 16:11:07 +0300 392) typedef __mpu_byte_t mpu_int256_t[32];
868b2b66 (kx 2024-12-20 16:11:07 +0300 393) typedef __mpu_byte_t mpu_int512_t[64];
868b2b66 (kx 2024-12-20 16:11:07 +0300 394) typedef __mpu_byte_t mpu_int1024_t[128];
868b2b66 (kx 2024-12-20 16:11:07 +0300 395) typedef __mpu_byte_t mpu_int2048_t[256];
868b2b66 (kx 2024-12-20 16:11:07 +0300 396) typedef __mpu_byte_t mpu_int4096_t[512];
868b2b66 (kx 2024-12-20 16:11:07 +0300 397) typedef __mpu_byte_t mpu_int8192_t[1024];
868b2b66 (kx 2024-12-20 16:11:07 +0300 398) typedef __mpu_byte_t mpu_int16384_t[2048];
868b2b66 (kx 2024-12-20 16:11:07 +0300 399) typedef __mpu_byte_t mpu_int32768_t[4096];
868b2b66 (kx 2024-12-20 16:11:07 +0300 400) typedef __mpu_byte_t mpu_int65536_t[8192];
868b2b66 (kx 2024-12-20 16:11:07 +0300 401) typedef __mpu_byte_t mpu_wide_int_t[8192];
868b2b66 (kx 2024-12-20 16:11:07 +0300 402)
868b2b66 (kx 2024-12-20 16:11:07 +0300 403)
868b2b66 (kx 2024-12-20 16:11:07 +0300 404) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 405) REAL DATA TYPES
868b2b66 (kx 2024-12-20 16:11:07 +0300 406) ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 407) typedef __mpu_byte_t mpu_real32_t[4];
868b2b66 (kx 2024-12-20 16:11:07 +0300 408) typedef __mpu_byte_t mpu_real64_t[8];
868b2b66 (kx 2024-12-20 16:11:07 +0300 409) typedef __mpu_byte_t mpu_real128_t[16];
868b2b66 (kx 2024-12-20 16:11:07 +0300 410) typedef __mpu_byte_t mpu_real256_t[32];
868b2b66 (kx 2024-12-20 16:11:07 +0300 411) typedef __mpu_byte_t mpu_real512_t[64];
868b2b66 (kx 2024-12-20 16:11:07 +0300 412) typedef __mpu_byte_t mpu_real1024_t[128];
868b2b66 (kx 2024-12-20 16:11:07 +0300 413) typedef __mpu_byte_t mpu_real2048_t[256];
868b2b66 (kx 2024-12-20 16:11:07 +0300 414) typedef __mpu_byte_t mpu_real4096_t[512];
868b2b66 (kx 2024-12-20 16:11:07 +0300 415) typedef __mpu_byte_t mpu_real8192_t[1024];
868b2b66 (kx 2024-12-20 16:11:07 +0300 416) typedef __mpu_byte_t mpu_real16384_t[2048];
868b2b66 (kx 2024-12-20 16:11:07 +0300 417) typedef __mpu_byte_t mpu_real32768_t[4096];
868b2b66 (kx 2024-12-20 16:11:07 +0300 418) typedef __mpu_byte_t mpu_real65536_t[8192];
868b2b66 (kx 2024-12-20 16:11:07 +0300 419) typedef __mpu_byte_t mpu_wide_real_t[8192];
868b2b66 (kx 2024-12-20 16:11:07 +0300 420)
868b2b66 (kx 2024-12-20 16:11:07 +0300 421)
868b2b66 (kx 2024-12-20 16:11:07 +0300 422) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 423) COMPLEX DATA TYPES
868b2b66 (kx 2024-12-20 16:11:07 +0300 424)
868b2b66 (kx 2024-12-20 16:11:07 +0300 425) NOTE:
868b2b66 (kx 2024-12-20 16:11:07 +0300 426) Следует помнить, что при вызове функций, работающих
868b2b66 (kx 2024-12-20 16:11:07 +0300 427) с комплексными числами надо задавать не фактический,
868b2b66 (kx 2024-12-20 16:11:07 +0300 428) а половинный размер комплексных операндов !
868b2b66 (kx 2024-12-20 16:11:07 +0300 429) SEE:
868b2b66 (kx 2024-12-20 16:11:07 +0300 430) following NB_C32, NB_C64, ..., NB_C1024 NB_C_MAX.
868b2b66 (kx 2024-12-20 16:11:07 +0300 431) ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 432) typedef __mpu_byte_t mpu_complex32_t[8];
868b2b66 (kx 2024-12-20 16:11:07 +0300 433) typedef __mpu_byte_t mpu_complex64_t[16];
868b2b66 (kx 2024-12-20 16:11:07 +0300 434) typedef __mpu_byte_t mpu_complex128_t[32];
868b2b66 (kx 2024-12-20 16:11:07 +0300 435) typedef __mpu_byte_t mpu_complex256_t[64];
868b2b66 (kx 2024-12-20 16:11:07 +0300 436) typedef __mpu_byte_t mpu_complex512_t[128];
868b2b66 (kx 2024-12-20 16:11:07 +0300 437) typedef __mpu_byte_t mpu_complex1024_t[256];
868b2b66 (kx 2024-12-20 16:11:07 +0300 438) typedef __mpu_byte_t mpu_complex2048_t[512];
868b2b66 (kx 2024-12-20 16:11:07 +0300 439) typedef __mpu_byte_t mpu_complex4096_t[1024];
868b2b66 (kx 2024-12-20 16:11:07 +0300 440) typedef __mpu_byte_t mpu_complex8192_t[2048];
868b2b66 (kx 2024-12-20 16:11:07 +0300 441) typedef __mpu_byte_t mpu_complex16384_t[4096];
868b2b66 (kx 2024-12-20 16:11:07 +0300 442) typedef __mpu_byte_t mpu_complex32768_t[8192];
868b2b66 (kx 2024-12-20 16:11:07 +0300 443) typedef __mpu_byte_t mpu_complex65536_t[16384];
868b2b66 (kx 2024-12-20 16:11:07 +0300 444) typedef __mpu_byte_t mpu_wide_complex_t[16384];
868b2b66 (kx 2024-12-20 16:11:07 +0300 445)
868b2b66 (kx 2024-12-20 16:11:07 +0300 446)
868b2b66 (kx 2024-12-20 16:11:07 +0300 447) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 448) INTEGER ARITHMETIC OPERATIONS
868b2b66 (kx 2024-12-20 16:11:07 +0300 449) ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 450)
868b2b66 (kx 2024-12-20 16:11:07 +0300 451) extern void iadd ( mpu_int *c, mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 452) extern void iadc ( mpu_int *c, mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 453) extern void isub ( mpu_int *c, mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 454) extern void isbb ( mpu_int *c, mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 455)
868b2b66 (kx 2024-12-20 16:11:07 +0300 456) extern void ishl ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 457) extern void ishr ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 458) extern void isal ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 459) extern void isar ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 460)
868b2b66 (kx 2024-12-20 16:11:07 +0300 461) extern void irol ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 462) extern void iror ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 463) extern void ircl ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 464) extern void ircr ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 465)
868b2b66 (kx 2024-12-20 16:11:07 +0300 466) extern void ishln ( mpu_int *c, mpu_int *a, unsigned int ns, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 467) extern void ishrn ( mpu_int *c, mpu_int *a, unsigned int ns, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 468) extern void isaln ( mpu_int *c, mpu_int *a, unsigned int ns, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 469) extern void isarn ( mpu_int *c, mpu_int *a, unsigned int ns, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 470)
868b2b66 (kx 2024-12-20 16:11:07 +0300 471) extern void iroln ( mpu_int *c, mpu_int *a, unsigned int ns, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 472) extern void irorn ( mpu_int *c, mpu_int *a, unsigned int ns, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 473) extern void ircln ( mpu_int *c, mpu_int *a, unsigned int ns, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 474) extern void ircrn ( mpu_int *c, mpu_int *a, unsigned int ns, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 475)
868b2b66 (kx 2024-12-20 16:11:07 +0300 476) extern void inot ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 477) extern void ineg ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 478)
868b2b66 (kx 2024-12-20 16:11:07 +0300 479) extern void iand ( mpu_int *c, mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 480)
868b2b66 (kx 2024-12-20 16:11:07 +0300 481) extern void itest ( mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 482) extern void icmp ( mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 483)
868b2b66 (kx 2024-12-20 16:11:07 +0300 484) extern void ior ( mpu_int *c, mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 485) extern void ixor ( mpu_int *c, mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 486)
868b2b66 (kx 2024-12-20 16:11:07 +0300 487) extern void iinc ( mpu_int *c, mpu_int *a, int nb );
07a2b481 (kx 2024-12-28 08:20:38 +0300 488) extern void idec ( mpu_int *c, mpu_int *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 489)
868b2b66 (kx 2024-12-20 16:11:07 +0300 490) extern void ixchg ( mpu_int *a, mpu_int *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 491)
868b2b66 (kx 2024-12-20 16:11:07 +0300 492) extern void icpy ( mpu_int *c, mpu_int *a, int nb_c, int nb_a );
868b2b66 (kx 2024-12-20 16:11:07 +0300 493) extern void icvt ( mpu_int *c, mpu_int *a, int nb_c, int nb_a );
868b2b66 (kx 2024-12-20 16:11:07 +0300 494)
868b2b66 (kx 2024-12-20 16:11:07 +0300 495) extern void imul ( mpu_int *prod, mpu_int *num, mpu_int *mul, int nb_prod, int nb_num );
868b2b66 (kx 2024-12-20 16:11:07 +0300 496) extern void ismul ( mpu_int *prod, mpu_int *num, mpu_int *mul, int nb_prod, int nb_num );
868b2b66 (kx 2024-12-20 16:11:07 +0300 497)
868b2b66 (kx 2024-12-20 16:11:07 +0300 498) extern void idiv ( mpu_int *quot, mpu_int *rem, mpu_int *num, mpu_int *den, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 499) extern void isdiv ( mpu_int *quot, mpu_int *rem, mpu_int *num, mpu_int *den, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 500)
868b2b66 (kx 2024-12-20 16:11:07 +0300 501)
868b2b66 (kx 2024-12-20 16:11:07 +0300 502) /* for integer ...itoa() functions */
868b2b66 (kx 2024-12-20 16:11:07 +0300 503) #define RADIX_BIN 2
868b2b66 (kx 2024-12-20 16:11:07 +0300 504) #define RADIX_OCT 8
868b2b66 (kx 2024-12-20 16:11:07 +0300 505) #define RADIX_DEC 10
868b2b66 (kx 2024-12-20 16:11:07 +0300 506) #define RADIX_HEX 16
868b2b66 (kx 2024-12-20 16:11:07 +0300 507)
868b2b66 (kx 2024-12-20 16:11:07 +0300 508) /* for integer ...itoa() functions and real ...rtoa() functions */
868b2b66 (kx 2024-12-20 16:11:07 +0300 509) #define LOWERCASE 0
868b2b66 (kx 2024-12-20 16:11:07 +0300 510) #define UPPERCASE 1
868b2b66 (kx 2024-12-20 16:11:07 +0300 511)
868b2b66 (kx 2024-12-20 16:11:07 +0300 512)
868b2b66 (kx 2024-12-20 16:11:07 +0300 513) extern void iatoi ( mpu_int *c, __mpu_char8_t *str, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 514) extern void iatoui ( mpu_int *c, __mpu_char8_t *str, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 515)
868b2b66 (kx 2024-12-20 16:11:07 +0300 516) extern void iitoa ( __mpu_char8_t *str, mpu_int *a, int radix, int uf, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 517) extern void iuitoa ( __mpu_char8_t *str, mpu_int *a, int radix, int uf, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 518)
868b2b66 (kx 2024-12-20 16:11:07 +0300 519)
868b2b66 (kx 2024-12-20 16:11:07 +0300 520) /***************************************************************
868b2b66 (kx 2024-12-20 16:11:07 +0300 521) REAL ARITHMETIC OPERATIONS
868b2b66 (kx 2024-12-20 16:11:07 +0300 522) ***************************************************************/
868b2b66 (kx 2024-12-20 16:11:07 +0300 523)
868b2b66 (kx 2024-12-20 16:11:07 +0300 524) extern int _sizeof_exp ( int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 525) extern int _real_mant_digs ( int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 526) extern int _real_digs ( int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 527) extern int _real_max_string ( int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 528) extern void _real_epsilon ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 529) extern void _real_max_10_exp ( mpu_int *e, int nb_e, int nb_r );
868b2b66 (kx 2024-12-20 16:11:07 +0300 530) extern void _real_min_10_exp ( mpu_int *e, int nb_e, int nb_r );
868b2b66 (kx 2024-12-20 16:11:07 +0300 531) extern void _real_max_max_exp ( mpu_int *e, int nb_e, int nb_r );
868b2b66 (kx 2024-12-20 16:11:07 +0300 532) extern void _real_max_exp ( mpu_int *e, int nb_e, int nb_r );
868b2b66 (kx 2024-12-20 16:11:07 +0300 533) extern void _real_min_exp ( mpu_int *e, int nb_e, int nb_r );
868b2b66 (kx 2024-12-20 16:11:07 +0300 534)
868b2b66 (kx 2024-12-20 16:11:07 +0300 535) extern void _m_zero ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 536) extern void _m_half ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 537) extern void _m_one ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 538) extern void _m_two ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 539) extern void _m_ten ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 540) extern void _m_mten ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 541) extern void _m_32 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 542) extern void _m_PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 543) extern void _m_E ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 544) extern void _m_1_ln2 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 545) extern void _m_ln2 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 546) extern void _m_1_ln10 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 547) extern void _m_ln10 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 548) extern void _m_1_lg2 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 549) extern void _m_lg2 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 550) extern void _m_PI_2 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 551) extern void _m_PI_3 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 552) extern void _m_PI_4 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 553) extern void _m_PI_5 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 554) extern void _m_PI_6 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 555) extern void _m_1_PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 556) extern void _m_2_PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 557) extern void _m_3_PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 558) extern void _m_4_PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 559) extern void _m_5_PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 560) extern void _m_2PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 561) extern void _m_3PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 562) extern void _m_1_2PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 563) extern void _m_1_3PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 564) extern void _m_1_4PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 565) extern void _m_1_5PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 566) extern void _m_1_6PI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 567) extern void _m_3PI_4 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 568) extern void _m_SQRTPI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 569) extern void _m_1_SQRTPI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 570) extern void _m_2_SQRTPI ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 571) extern void _m_SQRT2 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 572) extern void _m_1_SQRT2 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 573) extern void _m_SQRT3 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 574) extern void _m_1_SQRT3 ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 575) extern void _m_DEGREE ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 576) extern void _m_1_DEGREE ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 577) extern void _m_GOLDENRATIO ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 578) extern void _m_EULERGAMMA ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 579) extern void _m_CATALAN ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 580)
868b2b66 (kx 2024-12-20 16:11:07 +0300 581) extern void _ind ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 582) extern int _is_ind ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 583) extern void _nan ( mpu_real *c, unsigned int sign, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 584) extern int _is_nans ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 585) extern void _nan_max ( mpu_real *c, unsigned int sign, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 586) extern int _is_nan_max ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 587) extern void _nan_min ( mpu_real *c, unsigned int sign, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 588) extern int _is_nan_min ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 589) extern void _inf ( mpu_real *c, unsigned int sign, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 590) extern int _is_inf ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 591) extern void _real_min ( mpu_real *c, unsigned int sign, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 592) extern void _real_max ( mpu_real *c, unsigned int sign, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 593) extern void _signull ( mpu_real *c, unsigned int sign, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 594) extern int _is_signull ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 595)
868b2b66 (kx 2024-12-20 16:11:07 +0300 596) extern void r_neg ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 597) extern int r_is_neg ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 598) extern void r_abs ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 599) extern int r_sign ( mpu_real *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 600)
868b2b66 (kx 2024-12-20 16:11:07 +0300 601) extern int r_cmp ( mpu_real *a, mpu_real *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 602) extern void r_cpy ( mpu_real *a, mpu_real *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 603) extern void r_cvt ( mpu_real *a, mpu_real *b, int nb_a, int nb_b );
868b2b66 (kx 2024-12-20 16:11:07 +0300 604)
868b2b66 (kx 2024-12-20 16:11:07 +0300 605) extern void r_add ( mpu_real *c, mpu_real *a, mpu_real *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 606) extern void r_sub ( mpu_real *c, mpu_real *a, mpu_real *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 607) extern void r_mul ( mpu_real *c, mpu_real *a, mpu_real *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 608) extern void r_div ( mpu_real *c, mpu_real *a, mpu_real *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 609)
868b2b66 (kx 2024-12-20 16:11:07 +0300 610) extern void ltor ( mpu_real *r, mpu_int *l, int nb_r, int nb_l );
868b2b66 (kx 2024-12-20 16:11:07 +0300 611) extern void ultor ( mpu_real *r, mpu_int *l, int nb_r, int nb_l );
868b2b66 (kx 2024-12-20 16:11:07 +0300 612) extern void rtol_frac ( mpu_int *l, mpu_real *frac, mpu_real *r, int nb_l, int nb_r );
868b2b66 (kx 2024-12-20 16:11:07 +0300 613) extern void rtoul_frac ( mpu_int *l, mpu_real *frac, mpu_real *r, int nb_l, int nb_r );
868b2b66 (kx 2024-12-20 16:11:07 +0300 614)
868b2b66 (kx 2024-12-20 16:11:07 +0300 615) extern void r_remain ( mpu_real *r, mpu_real *a, mpu_real *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 616)
868b2b66 (kx 2024-12-20 16:11:07 +0300 617) extern void r_floor ( mpu_real *c, mpu_real *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 618) extern void r_ceil ( mpu_real *c, mpu_real *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 619) extern void r_round ( mpu_real *c, mpu_real *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 620) extern void r_frexp ( mpu_real *s, mpu_int *lexp, mpu_real *r, int nb_l, int nb_r );
868b2b66 (kx 2024-12-20 16:11:07 +0300 621) extern void r_ldexp ( mpu_real *c, mpu_real *r, mpu_int *lpwr2, int nb_r, int nb_l );
868b2b66 (kx 2024-12-20 16:11:07 +0300 622) extern void r_logb ( mpu_int *lbase2, mpu_real *r, int nb_l, int nb_r );
868b2b66 (kx 2024-12-20 16:11:07 +0300 623) extern void r_modf ( mpu_real *fract, mpu_real *integer, mpu_real *r, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 624)
868b2b66 (kx 2024-12-20 16:11:07 +0300 625) extern void r_sqrt ( mpu_real *c, mpu_real *a, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 626)
868b2b66 (kx 2024-12-20 16:11:07 +0300 627) extern void r_sin ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 628) extern void r_cos ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 629) extern void r_tan ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 630)
868b2b66 (kx 2024-12-20 16:11:07 +0300 631) extern void r_log1p ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 632)
868b2b66 (kx 2024-12-20 16:11:07 +0300 633) extern void r_log ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 634) extern void r_log10 ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 635) extern void r_log2 ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 636)
868b2b66 (kx 2024-12-20 16:11:07 +0300 637) extern void r_expm1 ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 638) extern void r_exp ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 639)
868b2b66 (kx 2024-12-20 16:11:07 +0300 640) extern void r_atan2 ( mpu_real *c, mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 641)
868b2b66 (kx 2024-12-20 16:11:07 +0300 642) extern void r_sinh ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 643) extern void r_cosh ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 644) extern void r_tanh ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 645)
868b2b66 (kx 2024-12-20 16:11:07 +0300 646) extern void r_asinh ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 647) extern void r_acosh ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 648) extern void r_atanh ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 649)
868b2b66 (kx 2024-12-20 16:11:07 +0300 650) extern void r_asin ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 651) extern void r_acos ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 652) extern void r_atan ( mpu_real *y, mpu_real *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 653)
868b2b66 (kx 2024-12-20 16:11:07 +0300 654) extern void r_pow ( mpu_real *c, mpu_real *x, mpu_real *y, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 655)
868b2b66 (kx 2024-12-20 16:11:07 +0300 656) extern void r_hypot ( mpu_real *c, mpu_real *x, mpu_real *y, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 657)
868b2b66 (kx 2024-12-20 16:11:07 +0300 658)
868b2b66 (kx 2024-12-20 16:11:07 +0300 659) #define _ASCII_TO_REAL_ERROR (-1) /* error */
868b2b66 (kx 2024-12-20 16:11:07 +0300 660) #define _LONGHAND_REAL_NUMBER 0 /* прочитано простое число (типа 1e1) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 661) #define _REAL_PART_OF_COMPLEX 1 /* прочитана вещественная часть комплексного числа (типа 1r1) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 662) #define _IMAGINARY_OF_COMPLEX 2 /* прочитана мнимая часть комплексного числа (типа 1i1, 1j1) */
868b2b66 (kx 2024-12-20 16:11:07 +0300 663)
868b2b66 (kx 2024-12-20 16:11:07 +0300 664) extern int ascii_to_real ( mpu_real *c, __mpu_char8_t *s, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 665)
868b2b66 (kx 2024-12-20 16:11:07 +0300 666) extern void real_to_ascii ( __mpu_char8_t *s, mpu_real *c,
868b2b66 (kx 2024-12-20 16:11:07 +0300 667) int ndigs, int exp_delim, int exp_digs, int gen_plus, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 668)
868b2b66 (kx 2024-12-20 16:11:07 +0300 669)
868b2b66 (kx 2024-12-20 16:11:07 +0300 670) extern void c_real_part ( mpu_real *r, mpu_complex *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 671) extern void c_imaginary ( mpu_real *r, mpu_complex *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 672)
868b2b66 (kx 2024-12-20 16:11:07 +0300 673) extern void c_real_to_complex ( mpu_complex *c, mpu_real *r, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 674) extern void c_gen_complex ( mpu_complex *c, mpu_real *r, mpu_real *j, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 675) extern void c_polar ( mpu_complex *c, mpu_real *rho, mpu_real *theta, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 676)
868b2b66 (kx 2024-12-20 16:11:07 +0300 677) extern void c_conj ( mpu_complex *c, mpu_complex *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 678) extern void c_abs ( mpu_real *r, mpu_complex *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 679) extern void c_norm ( mpu_real *r, mpu_complex *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 680) extern void c_arg ( mpu_real *r, mpu_complex *c, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 681)
868b2b66 (kx 2024-12-20 16:11:07 +0300 682) extern int c_is_equal ( mpu_complex *a, mpu_complex *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 683) extern int c_is_nequal ( mpu_complex *a, mpu_complex *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 684)
868b2b66 (kx 2024-12-20 16:11:07 +0300 685) extern void c_cpy ( mpu_complex *a, mpu_complex *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 686) extern void c_cvt ( mpu_complex *a, mpu_complex *b, int nb_a, int nb_b );
868b2b66 (kx 2024-12-20 16:11:07 +0300 687)
868b2b66 (kx 2024-12-20 16:11:07 +0300 688) extern void c_add ( mpu_complex *c, mpu_complex *a, mpu_complex *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 689) extern void c_sub ( mpu_complex *c, mpu_complex *a, mpu_complex *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 690) extern void c_mul ( mpu_complex *c, mpu_complex *a, mpu_complex *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 691) extern void c_div ( mpu_complex *c, mpu_complex *a, mpu_complex *b, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 692)
868b2b66 (kx 2024-12-20 16:11:07 +0300 693) extern void c_exp ( mpu_complex *y, mpu_complex *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 694)
868b2b66 (kx 2024-12-20 16:11:07 +0300 695) extern void c_sin ( mpu_complex *y, mpu_complex *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 696) extern void c_cos ( mpu_complex *y, mpu_complex *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 697)
868b2b66 (kx 2024-12-20 16:11:07 +0300 698) extern void c_sinh ( mpu_complex *y, mpu_complex *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 699) extern void c_cosh ( mpu_complex *y, mpu_complex *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 700)
868b2b66 (kx 2024-12-20 16:11:07 +0300 701) extern void c_log ( mpu_complex *y, mpu_complex *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 702) extern void c_pow ( mpu_complex *y, mpu_complex *x, mpu_complex *p, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 703)
868b2b66 (kx 2024-12-20 16:11:07 +0300 704) extern void c_sqrt ( mpu_complex *y, mpu_complex *x, int nb );
868b2b66 (kx 2024-12-20 16:11:07 +0300 705)
868b2b66 (kx 2024-12-20 16:11:07 +0300 706)
868b2b66 (kx 2024-12-20 16:11:07 +0300 707)
868b2b66 (kx 2024-12-20 16:11:07 +0300 708) #ifdef __cplusplus
868b2b66 (kx 2024-12-20 16:11:07 +0300 709) } /* ... extern "C" */
868b2b66 (kx 2024-12-20 16:11:07 +0300 710) #endif
868b2b66 (kx 2024-12-20 16:11:07 +0300 711)
868b2b66 (kx 2024-12-20 16:11:07 +0300 712) #endif /* __LIB_MPU_H */