- Support for roman numerals with integer values outside of
[-3999, 3999]
emulating the overlined notation of characters with values multiplied by 1000. Numerus uses underscores to indicate overlined parts of a numeral, which in this case is called long roman numeral. - Support for roman numerals with twelfths as an approximation of fractional
parts of the value using characters
S
for1/2
and dot.
for1/12
. The numerals in this case are called float roman numerals. - More constants indicating the extremes of the value range for different types of roman numerals.
- Numeral analysis functions:
- check if a numeral has value zero;
- check if a numeral is a long numeral;
- check if a numeral is a float numeral;
- count the number of roman character - and find any illegal ones.
- Twelfth management functions:
- convert a double from and to an integer value plus a number of twelfths;
- shorten an integer value and a number of twelfths.
- Human readability functions:
- prettify a long roman numerals with actual overlining;
- prettify an integer value and a number of twelfths with shortening;
- error code explanation generation.
- Command Line Interface (CLI) to quickly convert any value; also parses any command line arguments (main arguments) as a CLI command, allowing easy pipelining of the executable in the system shell.
- Roman numerals' syntax check is performed without regex-es, making it ~75% faster, while making the conversion function support the new roman numeral formats as well.
- Because of the previous point, it's possible to catch a more precise error when the syntax is wrong.
- Error codes are used much much more, they have different (clearer) names and better values overall. They are returned as a passed parameter pretty much everywhere, making the user able to understand the exact problem.
- Function names have changed to a more understandable version.
- All code is completely rewritten, carefully optimized and (trying to be) foolproof.
- All roman numerals are now case insensitive.
- Roman numerals are initially checked if NULL or empty. Any leading whitespace is ignored.
malloc()
failures are controlled and returned in the error code.
- SQLite3 and CSV export functions
- In-memory allocation of all roman numerals
- Bidirectional conversion short integer <-> roman numerals (as string)
- Syntax check of roman numerals
- Comparison of two roman numerals
- Allocation of array with all roman numerals
- Creation of SQLite3 database with all roman numerals and their values
- Custom error codes
- Documentation of all functions and variables with doxygen
- BSD 3-clause license, Changelog and Readme files