• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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