| 90 | } |
| 91 | |
| 92 | double call_func(py::object f, const matrix<double,0,1>& args) |
| 93 | { |
| 94 | const auto num = num_function_arguments(f, args.size()); |
| 95 | DLIB_CASSERT(num == args.size(), |
| 96 | "The function being optimized takes a number of arguments that doesn't agree with the size of the bounds lists you provided to find_max_global()"); |
| 97 | DLIB_CASSERT(0 < num && num <= 35, "Functions being optimized must take between 1 and 35 scalar arguments."); |
| 98 | |
| 99 | #define CALL_WITH_N_ARGS(N) case N: return dlib::gopt_impl::_cwv(f,args,std::make_index_sequence<N>{}).cast<double>(); |
| 100 | switch (num) |
| 101 | { |
| 102 | CALL_WITH_N_ARGS(1) |
| 103 | CALL_WITH_N_ARGS(2) |
| 104 | CALL_WITH_N_ARGS(3) |
| 105 | CALL_WITH_N_ARGS(4) |
| 106 | CALL_WITH_N_ARGS(5) |
| 107 | CALL_WITH_N_ARGS(6) |
| 108 | CALL_WITH_N_ARGS(7) |
| 109 | CALL_WITH_N_ARGS(8) |
| 110 | CALL_WITH_N_ARGS(9) |
| 111 | CALL_WITH_N_ARGS(10) |
| 112 | CALL_WITH_N_ARGS(11) |
| 113 | CALL_WITH_N_ARGS(12) |
| 114 | CALL_WITH_N_ARGS(13) |
| 115 | CALL_WITH_N_ARGS(14) |
| 116 | CALL_WITH_N_ARGS(15) |
| 117 | CALL_WITH_N_ARGS(16) |
| 118 | CALL_WITH_N_ARGS(17) |
| 119 | CALL_WITH_N_ARGS(18) |
| 120 | CALL_WITH_N_ARGS(19) |
| 121 | CALL_WITH_N_ARGS(20) |
| 122 | CALL_WITH_N_ARGS(21) |
| 123 | CALL_WITH_N_ARGS(22) |
| 124 | CALL_WITH_N_ARGS(23) |
| 125 | CALL_WITH_N_ARGS(24) |
| 126 | CALL_WITH_N_ARGS(25) |
| 127 | CALL_WITH_N_ARGS(26) |
| 128 | CALL_WITH_N_ARGS(27) |
| 129 | CALL_WITH_N_ARGS(28) |
| 130 | CALL_WITH_N_ARGS(29) |
| 131 | CALL_WITH_N_ARGS(30) |
| 132 | CALL_WITH_N_ARGS(31) |
| 133 | CALL_WITH_N_ARGS(32) |
| 134 | CALL_WITH_N_ARGS(33) |
| 135 | CALL_WITH_N_ARGS(34) |
| 136 | CALL_WITH_N_ARGS(35) |
| 137 | |
| 138 | default: |
| 139 | DLIB_CASSERT(false, "oops"); |
| 140 | break; |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | // ---------------------------------------------------------------------------------------- |
| 145 |
no test coverage detected