The AVR Library contains the fundamentals of number conversion. That is, ASCII string to a number on the stack and a number on the stack to an ASCII string.
The strings are held in an area called PAD. This traditionally has been 64 bytes beyond the current end of the dictionary. In embedded systems this is not practical for two reasons:
Dictionary is in memory when running.
Not re-entrant for tasks.
To overcome these PAD has been defined as a USER variable. It is 11 bytes above it's nearest partner PTR. This is to allow for the number to ASCII string to be converted down from PAD, the largest double number is 2,147,483,648 or 10 characters plus a sign makes 11. The string for conversion to a number is traditionally from PAD up, so enough space above is also required.
The definitions in the Library are only the conversions. NUMBER takes the address of an ASCII string and returns a double number and a true flag if sucessfull. (D.) takes a double number and returns the address and length of the converted string. Both require the USER variable BASE to be loaded with the radix required for the conversion. These are then used by application dependant code to input and output the strings.
These conversions are for double numbers, you may use them as such, dropping the top item for 16 bit, or modify then for different applications.