#pragma once /* FIXME(sigrid): s*_overflow_* can be more optimal */ #define sadd_overflow_64(a, b, c) ( \ (b < 1) ? \ ((INT64_MAX-(b) <= (a)) ? ((*(c)=(a)+(b)), 0) : 1) : \ ((INT64_MAX-(b) >= (a)) ? ((*(c)=(a)+(b)), 0) : 1) \ ) #define smul_overflow_64(a, b, c) ( \ ((a)>0 ? ((b)>0 ? (a)>INT64_MAX/(b) : (b)0 ? (a)= (a)) ? ((*(c)=(a)+(b)), 0) : 1) \ ) #endif