summaryrefslogtreecommitdiff
path: root/Cython/Includes/libcpp/numeric.pxd
blob: 0335a0bac4b3810cef80dbedc233006bf4a12bac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
cdef extern from "<numeric>" namespace "std" nogil:
    T inner_product[InputIt1, InputIt2, T](InputIt1 first1, InputIt1 last1, InputIt2 first2, T init)

    T inner_product[InputIt1, InputIt2, T, BinaryOperation1, BinaryOperation2](InputIt1 first1, InputIt1 last1,
                                                                               InputIt2 first2, T init,
                                                                               BinaryOperation1 op1,
                                                                               BinaryOperation2 op2)

    void iota[ForwardIt, T](ForwardIt first, ForwardIt last, T value)

    T accumulate[InputIt, T](InputIt first, InputIt last, T init)

    T accumulate[InputIt, T, BinaryOperation](InputIt first, InputIt last, T init, BinaryOperation op)

    void adjacent_difference[InputIt, OutputIt](InputIt in_first, InputIt in_last, OutputIt out_first)

    void adjacent_difference[InputIt, OutputIt, BinaryOperation](InputIt in_first, InputIt in_last, OutputIt out_first,
                                                                 BinaryOperation op)

    void partial_sum[InputIt, OutputIt](InputIt in_first, OutputIt in_last, OutputIt out_first)

    void partial_sum[InputIt, OutputIt, BinaryOperation](InputIt in_first, InputIt in_last, OutputIt out_first,
                                                         BinaryOperation op)

    
    T reduce[InputIt, T](InputIt first, InputIt last, T init)

    # ambiguous with next overload
    #T reduce[ExecutionPolicy, ForwardIt, T](ExecutionPolicy&& policy, 
    #    ForwardIt first, ForwardIt last, T init)

    T reduce[InputIt, T, BinaryOp](InputIt first, InputIt last, T init, BinaryOp binary_op)

    T reduce[ExecutionPolicy, ForwardIt, T, BinaryOp](ExecutionPolicy&& policy, 
        ForwardIt first, ForwardIt last, T init, BinaryOp binary_op)

    T transform_reduce[InputIt1, InputIt2, T](InputIt1 first1, InputIt1 last1, 
        InputIt2 first2, T init)

    T transform_reduce[InputIt1, InputIt2, T, BinaryReductionOp, BinaryTransformOp](
        InputIt1 first1, InputIt1 last1, InputIt2 first2, T init, 
        BinaryReductionOp reduce, BinaryTransformOp transform)

    T transform_reduce[InputIt, T, BinaryReductionOp, UnaryTransformOp](
        InputIt first, InputIt last, T init, BinaryReductionOp reduce, 
        UnaryTransformOp transform)

    # ambiguous with previous overload
    #T transform_reduce[ExecutionPolicy, ForwardIt1, ForwardIt2, T](
    #    ExecutionPolicy&& policy, ForwardIt1 first1, ForwardIt1 last1, 
    #    ForwardIt2 first2, T init)

    T transform_reduce[ExecutionPolicy, ForwardIt1, ForwardIt2, T, BinaryReductionOp, BinaryTransformOp](
        ExecutionPolicy&& policy, ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2, T init, 
        BinaryReductionOp reduce, BinaryTransformOp transform)

    # ambiguous with second overload
    #T transform_reduce[ExecutionPolicy, ForwardIt, T, BinaryReductionOp, UnaryTransformOp](
    #    ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, T init, BinaryReductionOp reduce, 
    #    UnaryTransformOp transform)

    OutputIt inclusive_scan[InputIt, OutputIt](InputIt first, InputIt last, OutputIt d_first)

    # ambiguous with next overload
    # ForwardIt2 inclusive_scan[ExecutionPolicy, ForwardIt1, ForwardIt2](
    #    ExecutionPolicy&& policy, ForwardIt1 first, ForwardIt1 last, 
    #    ForwardIt2 d_first)

    OutputIt inclusive_scan[InputIt, OutputIt, BinaryOperation](
        InputIt first, InputIt last, OutputIt d_first, BinaryOperation binary_op)

    # ambiguous with next overload
    # ForwardIt2 inclusive_scan[ExecutionPolicy, ForwardIt1, ForwardIt2, BinaryOperation](
    #   ExecutionPolicy&& policy, ForwardIt1 first, ForwardIt1 last, ForwardIt2 d_first, 
    #   BinaryOperation binary_op)

    OutputIt inclusive_scan[InputIt, OutputIt, BinaryOperation, T](
        InputIt first, InputIt last, OutputIt d_first, BinaryOperation binary_op, 
        T init)

    # 
    # ForwardIt2 inclusive_scan[ExecutionPolicy, ForwardIt1, ForwardIt2, BinaryOperation, T](
    #     ExecutionPolicy&& policy, ForwardIt1 first, ForwardIt1 last, ForwardIt2 d_first, 
    #     BinaryOperation binary_op, T init)

    OutputIt exclusive_scan[InputIt, OutputIt, T](InputIt first, InputIt last, 
        OutputIt d_first, T init)

    # ambiguous with next overload
    #ForwardIt2 exclusive_scan[ExecutionPolicy, ForwardIt1, ForwardIt2, T](
    #    ExecutionPolicy&& policy, ForwardIt1 first, ForwardIt1 last, 
    #    ForwardIt2 d_first, T init)

    OutputIt exclusive_scan[InputIt, OutputIt, T, BinaryOperation](
        InputIt first, InputIt last, OutputIt d_first, T init, BinaryOperation binary_op)

    ForwardIt2 exclusive_scan[ExecutionPolicy, ForwardIt1, ForwardIt2, T, BinaryOperation](
        ExecutionPolicy&& policy, ForwardIt1 first, ForwardIt1 last, ForwardIt2 d_first,
        T init, BinaryOperation binary_op)

    OutputIt transform_inclusive_scan[InputIt, OutputIt, BinaryOperation, UnaryOperation](
        InputIt first, InputIt last, OutputIt d_first, BinaryOperation binary_op, 
        UnaryOperation unary_op)

    # ambiguous with next overload
    # ForwardIt2 transform_inclusive_scan[ExecutionPolicy, ForwardIt1, ForwardIt2, BinaryOperation, UnaryOperation](
    #    ExecutionPolicy&& policy, ForwardIt1 first, ForwardIt1 last, ForwardIt2 d_first, 
    #    BinaryOperation binary_op, UnaryOperation unary_op)

    OutputIt transform_inclusive_scan[InputIt, OutputIt, BinaryOperation, UnaryOperation, T](
        InputIt first, InputIt last, OutputIt d_first, BinaryOperation binary_op, 
        UnaryOperation unary_op, T init)

    ForwardIt2 transform_inclusive_scan[ExecutionPolicy, ForwardIt1, ForwardIt2, BinaryOperation, UnaryOperation, T](
        ExecutionPolicy&& policy, ForwardIt1 first, ForwardIt1 last, ForwardIt2 d_first, 
        BinaryOperation binary_op, UnaryOperation unary_op, T init)

    OutputIt transform_exclusive_scan[InputIt, OutputIt, T, BinaryOperation, UnaryOperation](
        InputIt first, InputIt last, OutputIt d_first, T init, BinaryOperation binary_op, 
        UnaryOperation unary_op)

    ForwardIt2 transform_exclusive_scan[ExecutionPolicy, ForwardIt1, ForwardIt2, T, BinaryOperation, UnaryOperation](
        ExecutionPolicy&& policy, ForwardIt1 first, ForwardIt1 last, ForwardIt2 d_first, 
        T init, BinaryOperation binary_op, UnaryOperation unary_op)

    # C++17
    T gcd[T](T a, T b)
    T lcm[T](T a, T b)

    # C++20
    T midpoint[T](T a, T b) except +