cc67312433
On some platforms, such as microcontrollers with a single-precision FPU, operations on double type can be significantly slower compared to the float type. For example, on ESP32-S3 microcontroller, decoding a QR code of a certain size may take 1700ms when 'double' is used and just 250ms when 'float' is used. This commit adds two options to allow for such optimizations: - QUIRC_FLOAT_TYPE: if defined, it is the type name to use in floating point calculations. Can be set, for example, using: CFLAGS += -DQUIRC_FLOAT_TYPE=float - QUIRC_USE_TGMATH: if defined, Quirc will internally use <tgmath.h> header, instead of <math.h>. This C99-or-later header allows the program to call type-generic functions, such as 'sqrt', and the calls will be dispatched to the correct implementation (sqrtf, sqrt, sqrtl) depending on the actual argument type. Without setting this option, the benefit of -DQUIRC_FLOAT_TYPE=float would be limited as the double-precision versions of math functions would still be used. The change is backwards compatible with existing applications. If these macros are not defined, the behavior is the same as before. |
||
---|---|---|
.. | ||
decode.c | ||
identify.c | ||
quirc.c | ||
quirc.h | ||
quirc_internal.h | ||
version_db.c |