| 
									
										
										
										
											2022-11-15 09:45:11 -07:00
										 |  |  | #ifndef Py_INTERNAL_DTOA_H
 | 
					
						
							|  |  |  | #define Py_INTERNAL_DTOA_H
 | 
					
						
							| 
									
										
										
										
											2009-04-16 19:52:09 +00:00
										 |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-12 22:54:42 +01:00
										 |  |  | #ifndef Py_BUILD_CORE
 | 
					
						
							|  |  |  | #  error "this header requires Py_BUILD_CORE define"
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-23 18:16:23 +01:00
										 |  |  | #include "pycore_pymath.h"        // _PY_SHORT_FLOAT_REPR
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if _PY_SHORT_FLOAT_REPR == 1
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-15 09:45:11 -07:00
										 |  |  | typedef uint32_t ULong; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct | 
					
						
							|  |  |  | Bigint { | 
					
						
							|  |  |  |     struct Bigint *next; | 
					
						
							|  |  |  |     int k, maxwds, sign, wds; | 
					
						
							|  |  |  |     ULong x[1]; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef Py_USING_MEMORY_DEBUGGER
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct _dtoa_runtime_state { | 
					
						
							|  |  |  |         int _not_used; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | #define _dtoa_runtime_state_INIT {0}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #else  // !Py_USING_MEMORY_DEBUGGER
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* The size of the Bigint freelist */ | 
					
						
							|  |  |  | #define Bigint_Kmax 7
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef PRIVATE_MEM
 | 
					
						
							|  |  |  | #define PRIVATE_MEM 2304
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #define Bigint_PREALLOC_SIZE \
 | 
					
						
							|  |  |  |     ((PRIVATE_MEM+sizeof(double)-1)/sizeof(double)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct _dtoa_runtime_state { | 
					
						
							|  |  |  |         struct Bigint *freelist[Bigint_Kmax+1]; | 
					
						
							|  |  |  |         double preallocated[Bigint_PREALLOC_SIZE]; | 
					
						
							|  |  |  |         double *preallocated_next; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | #define _dtoa_runtime_state_INIT(runtime) \
 | 
					
						
							|  |  |  |     { \ | 
					
						
							|  |  |  |         .preallocated_next = runtime.dtoa.preallocated, \ | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif  // !Py_USING_MEMORY_DEBUGGER
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-12 22:54:42 +01:00
										 |  |  | /* These functions are used by modules compiled as C extension like math:
 | 
					
						
							|  |  |  |    they must be exported. */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-16 19:52:09 +00:00
										 |  |  | PyAPI_FUNC(double) _Py_dg_strtod(const char *str, char **ptr); | 
					
						
							|  |  |  | PyAPI_FUNC(char *) _Py_dg_dtoa(double d, int mode, int ndigits, | 
					
						
							|  |  |  |                         int *decpt, int *sign, char **rve); | 
					
						
							|  |  |  | PyAPI_FUNC(void) _Py_dg_freedtoa(char *s); | 
					
						
							| 
									
										
										
										
											2012-04-29 15:31:56 +01:00
										 |  |  | PyAPI_FUNC(double) _Py_dg_stdnan(int sign); | 
					
						
							|  |  |  | PyAPI_FUNC(double) _Py_dg_infinity(int sign); | 
					
						
							| 
									
										
										
										
											2009-04-16 19:52:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-23 18:16:23 +01:00
										 |  |  | #endif // _PY_SHORT_FLOAT_REPR == 1
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-16 19:52:09 +00:00
										 |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2022-11-15 09:45:11 -07:00
										 |  |  | #endif /* !Py_INTERNAL_DTOA_H */
 |