[numerics.c.ckdint] # 29 Numerics library [[numerics]](./#numerics) ## 29.11 C compatibility [[numerics.c]](numerics.c#ckdint) ### 29.11.2 Checked integer operations [numerics.c.ckdint] [🔗](#lib:ckd_add) `template bool ckd_add(type1* result, type2 a, type3 b); template bool ckd_sub(type1* result, type2 a, type3 b); template bool ckd_mul(type1* result, type2 a, type3 b); ` [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L20645) *Mandates*: Each of the types type1, type2, and type3 is a cv-unqualified signed or unsigned integer type[.](#1.sentence-1) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L20650) *Remarks*: Each function template has the same semantics as the corresponding type-generic macro with the same name specified in ISO/IEC 9899:2024, 7.20[.](#2.sentence-1)