1 /* 2 * Helper macros for Horner polynomial evaluation. 3 * 4 * Copyright (c) 2022-2023, Arm Limited. 5 * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception 6 */ 7 8 // clang-format off 9 #define HORNER_1_(x, c, i) FMA(c(i + 1), x, c(i)) 10 #define HORNER_2_(x, c, i) FMA(HORNER_1_ (x, c, i + 1), x, c(i)) 11 #define HORNER_3_(x, c, i) FMA(HORNER_2_ (x, c, i + 1), x, c(i)) 12 #define HORNER_4_(x, c, i) FMA(HORNER_3_ (x, c, i + 1), x, c(i)) 13 #define HORNER_5_(x, c, i) FMA(HORNER_4_ (x, c, i + 1), x, c(i)) 14 #define HORNER_6_(x, c, i) FMA(HORNER_5_ (x, c, i + 1), x, c(i)) 15 #define HORNER_7_(x, c, i) FMA(HORNER_6_ (x, c, i + 1), x, c(i)) 16 #define HORNER_8_(x, c, i) FMA(HORNER_7_ (x, c, i + 1), x, c(i)) 17 #define HORNER_9_(x, c, i) FMA(HORNER_8_ (x, c, i + 1), x, c(i)) 18 #define HORNER_10_(x, c, i) FMA(HORNER_9_ (x, c, i + 1), x, c(i)) 19 #define HORNER_11_(x, c, i) FMA(HORNER_10_(x, c, i + 1), x, c(i)) 20 #define HORNER_12_(x, c, i) FMA(HORNER_11_(x, c, i + 1), x, c(i)) 21 22 #define HORNER_1(x, c) HORNER_1_ (x, c, 0) 23 #define HORNER_2(x, c) HORNER_2_ (x, c, 0) 24 #define HORNER_3(x, c) HORNER_3_ (x, c, 0) 25 #define HORNER_4(x, c) HORNER_4_ (x, c, 0) 26 #define HORNER_5(x, c) HORNER_5_ (x, c, 0) 27 #define HORNER_6(x, c) HORNER_6_ (x, c, 0) 28 #define HORNER_7(x, c) HORNER_7_ (x, c, 0) 29 #define HORNER_8(x, c) HORNER_8_ (x, c, 0) 30 #define HORNER_9(x, c) HORNER_9_ (x, c, 0) 31 #define HORNER_10(x, c) HORNER_10_(x, c, 0) 32 #define HORNER_11(x, c) HORNER_11_(x, c, 0) 33 #define HORNER_12(x, c) HORNER_12_(x, c, 0) 34 // clang-format on 35