Coverage Report

Created: 2025-06-09 06:31

/src/exprtk/exprtk.hpp
Line
Count
Source (jump to first uncovered line)
1
/*
2
 ******************************************************************
3
 *           C++ Mathematical Expression Toolkit Library          *
4
 *                                                                *
5
 * Author: Arash Partow (1999-2024)                               *
6
 * URL: https://www.partow.net/programming/exprtk/index.html      *
7
 *                                                                *
8
 * Copyright notice:                                              *
9
 * Free use of the C++ Mathematical Expression Toolkit Library is *
10
 * permitted under the guidelines and in accordance with the most *
11
 * current version of the MIT License.                            *
12
 * https://www.opensource.org/licenses/MIT                        *
13
 * SPDX-License-Identifier: MIT                                   *
14
 *                                                                *
15
 * Example expressions:                                           *
16
 * (00) (y + x / y) * (x - y / x)                                 *
17
 * (01) (x^2 / sin(2 * pi / y)) - x / 2                           *
18
 * (02) sqrt(1 - (x^2))                                           *
19
 * (03) 1 - sin(2 * x) + cos(pi / y)                              *
20
 * (04) a * exp(2 * t) + c                                        *
21
 * (05) if(((x + 2) == 3) and ((y + 5) <= 9), 1 + w, 2 / z)       *
22
 * (06) (avg(x,y) <= x + y ? x - y : x * y) + 2 * pi / x          *
23
 * (07) z := x + sin(2 * pi / y)                                  *
24
 * (08) u := 2 * (pi * z) / (w := x + cos(y / pi))                *
25
 * (09) clamp(-1, sin(2 * pi * x) + cos(y / 2 * pi), +1)          *
26
 * (10) inrange(-2, m, +2) == if(({-2 <= m} and [m <= +2]), 1, 0) *
27
 * (11) (2sin(x)cos(2y)7 + 1) == (2 * sin(x) * cos(2*y) * 7 + 1)  *
28
 * (12) (x ilike 's*ri?g') and [y < (3 z^7 + w)]                  *
29
 *                                                                *
30
 ******************************************************************
31
*/
32
33
34
#ifndef INCLUDE_EXPRTK_HPP
35
#define INCLUDE_EXPRTK_HPP
36
37
38
#include <algorithm>
39
#include <cassert>
40
#include <cctype>
41
#include <cmath>
42
#include <cstdio>
43
#include <cstdlib>
44
#include <cstring>
45
#include <deque>
46
#include <functional>
47
#include <iterator>
48
#include <limits>
49
#include <list>
50
#include <map>
51
#include <set>
52
#include <stack>
53
#include <stdexcept>
54
#include <string>
55
#include <utility>
56
#include <vector>
57
58
59
namespace exprtk
60
{
61
   #ifdef exprtk_enable_debugging
62
     #define exprtk_debug(params) printf params
63
   #else
64
379k
     #define exprtk_debug(params) (void)0
65
   #endif
66
67
   #define exprtk_error_location             \
68
30.2k
   "exprtk.hpp:" + details::to_str(__LINE__) \
69
70
   #if __cplusplus >= 201103L
71
      #define exprtk_override override
72
      #define exprtk_final    final
73
      #define exprtk_delete   = delete
74
   #else
75
      #define exprtk_override
76
      #define exprtk_final
77
      #define exprtk_delete
78
   #endif
79
80
   #if __cplusplus >= 201603L
81
      #define exprtk_fallthrough [[fallthrough]];
82
   #elif (__cplusplus >= 201103L) && (defined(__GNUC__) && !defined(__clang__))
83
      #define exprtk_fallthrough [[gnu::fallthrough]];
84
   #else
85
      #ifndef _MSC_VER
86
456
         #define exprtk_fallthrough __attribute__ ((fallthrough));
87
      #else
88
         #define exprtk_fallthrough
89
      #endif
90
   #endif
91
92
   namespace details
93
   {
94
      typedef char                   char_t;
95
      typedef char_t*                char_ptr;
96
      typedef char_t const*          char_cptr;
97
      typedef unsigned char          uchar_t;
98
      typedef uchar_t*               uchar_ptr;
99
      typedef uchar_t const*         uchar_cptr;
100
      typedef unsigned long long int _uint64_t;
101
      typedef long long int          _int64_t;
102
103
      inline bool is_whitespace(const char_t c)
104
13.0M
      {
105
13.0M
         return (' '  == c) || ('\n' == c) ||
106
13.0M
                ('\r' == c) || ('\t' == c) ||
107
13.0M
                ('\b' == c) || ('\v' == c) ||
108
13.0M
                ('\f' == c) ;
109
13.0M
      }
110
111
      inline bool is_operator_char(const char_t c)
112
5.07M
      {
113
5.07M
         return ('+' == c) || ('-' == c) ||
114
5.07M
                ('*' == c) || ('/' == c) ||
115
5.07M
                ('^' == c) || ('<' == c) ||
116
5.07M
                ('>' == c) || ('=' == c) ||
117
5.07M
                (',' == c) || ('!' == c) ||
118
5.07M
                ('(' == c) || (')' == c) ||
119
5.07M
                ('[' == c) || (']' == c) ||
120
5.07M
                ('{' == c) || ('}' == c) ||
121
5.07M
                ('%' == c) || (':' == c) ||
122
5.07M
                ('?' == c) || ('&' == c) ||
123
5.07M
                ('|' == c) || (';' == c) ;
124
5.07M
      }
125
126
      inline bool is_letter(const char_t c)
127
22.8M
      {
128
22.8M
         return (('a' <= c) && (c <= 'z')) ||
129
22.8M
                (('A' <= c) && (c <= 'Z')) ;
130
22.8M
      }
131
132
      inline bool is_digit(const char_t c)
133
30.0M
      {
134
30.0M
         return ('0' <= c) && (c <= '9');
135
30.0M
      }
136
137
      inline bool is_letter_or_digit(const char_t c)
138
20.7M
      {
139
20.7M
         return is_letter(c) || is_digit(c);
140
20.7M
      }
141
142
      inline bool is_left_bracket(const char_t c)
143
7.97M
      {
144
7.97M
         return ('(' == c) || ('[' == c) || ('{' == c);
145
7.97M
      }
146
147
      inline bool is_right_bracket(const char_t c)
148
7.95M
      {
149
7.95M
         return (')' == c) || (']' == c) || ('}' == c);
150
7.95M
      }
151
152
      inline bool is_bracket(const char_t c)
153
2.33M
      {
154
2.33M
         return is_left_bracket(c) || is_right_bracket(c);
155
2.33M
      }
156
157
      inline bool is_sign(const char_t c)
158
2.02M
      {
159
2.02M
         return ('+' == c) || ('-' == c);
160
2.02M
      }
161
162
      inline bool is_invalid(const char_t c)
163
0
      {
164
0
         return !is_whitespace   (c) &&
165
0
                !is_operator_char(c) &&
166
0
                !is_letter       (c) &&
167
0
                !is_digit        (c) &&
168
0
                ('.'  != c)          &&
169
0
                ('_'  != c)          &&
170
0
                ('$'  != c)          &&
171
0
                ('~'  != c)          &&
172
0
                ('\'' != c);
173
0
      }
174
175
      inline bool is_valid_string_char(const char_t c)
176
36.4M
      {
177
36.4M
         return std::isprint(static_cast<uchar_t>(c)) ||
178
36.4M
                is_whitespace(c);
179
36.4M
      }
180
181
      #ifndef exprtk_disable_caseinsensitivity
182
      inline void case_normalise(std::string& s)
183
0
      {
184
0
         for (std::size_t i = 0; i < s.size(); ++i)
185
0
         {
186
0
            s[i] = static_cast<std::string::value_type>(std::tolower(s[i]));
187
0
         }
188
0
      }
189
190
      inline bool imatch(const char_t c1, const char_t c2)
191
1.33k
      {
192
1.33k
         return std::tolower(c1) == std::tolower(c2);
193
1.33k
      }
194
195
      inline bool imatch(const std::string& s1, const std::string& s2)
196
3.01M
      {
197
3.01M
         if (s1.size() == s2.size())
198
142k
         {
199
154k
            for (std::size_t i = 0; i < s1.size(); ++i)
200
147k
            {
201
147k
               if (std::tolower(s1[i]) != std::tolower(s2[i]))
202
135k
               {
203
135k
                  return false;
204
135k
               }
205
147k
            }
206
207
7.18k
            return true;
208
142k
         }
209
210
2.87M
         return false;
211
3.01M
      }
212
213
      struct ilesscompare
214
      {
215
         inline bool operator() (const std::string& s1, const std::string& s2) const
216
21.1M
         {
217
21.1M
            const std::size_t length = std::min(s1.size(),s2.size());
218
219
24.5M
            for (std::size_t i = 0; i < length; ++i)
220
22.9M
            {
221
22.9M
               const char_t c1 = static_cast<char_t>(std::tolower(s1[i]));
222
22.9M
               const char_t c2 = static_cast<char_t>(std::tolower(s2[i]));
223
224
22.9M
               if (c1 < c2)
225
14.3M
                  return true;
226
8.52M
               else if (c2 < c1)
227
5.11M
                  return false;
228
22.9M
            }
229
230
1.63M
            return s1.size() < s2.size();
231
21.1M
         }
232
      };
233
234
      #else
235
      inline void case_normalise(std::string&)
236
      {}
237
238
      inline bool imatch(const char_t c1, const char_t c2)
239
      {
240
         return c1 == c2;
241
      }
242
243
      inline bool imatch(const std::string& s1, const std::string& s2)
244
      {
245
         return s1 == s2;
246
      }
247
248
      struct ilesscompare
249
      {
250
         inline bool operator() (const std::string& s1, const std::string& s2) const
251
         {
252
            return s1 < s2;
253
         }
254
      };
255
      #endif
256
257
      inline bool is_valid_sf_symbol(const std::string& symbol)
258
127k
      {
259
         // Special function: $f12 or $F34
260
127k
         return (4 == symbol.size())  &&
261
127k
                ('$' == symbol[0])    &&
262
127k
                imatch('f',symbol[1]) &&
263
127k
                is_digit(symbol[2])   &&
264
127k
                is_digit(symbol[3]);
265
127k
      }
266
267
      inline const char_t& front(const std::string& s)
268
0
      {
269
0
         return s[0];
270
0
      }
271
272
      inline const char_t& back(const std::string& s)
273
0
      {
274
0
         return s[s.size() - 1];
275
0
      }
276
277
      template <typename SignedType>
278
      inline std::string to_str_impl(SignedType i)
279
30.2k
      {
280
30.2k
         if (0 == i)
281
12
            return std::string("0");
282
283
30.2k
         std::string result;
284
285
30.2k
         const int sign = (i < 0) ? -1 : 1;
286
287
181k
         for ( ; i; i /= 10)
288
151k
         {
289
151k
            result += '0' + static_cast<char_t>(sign * (i % 10));
290
151k
         }
291
292
30.2k
         if (sign < 0)
293
10
         {
294
10
            result += '-';
295
10
         }
296
297
30.2k
         std::reverse(result.begin(), result.end());
298
299
30.2k
         return result;
300
30.2k
      }
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > exprtk::details::to_str_impl<long long>(long long)
Line
Count
Source
279
12
      {
280
12
         if (0 == i)
281
0
            return std::string("0");
282
283
12
         std::string result;
284
285
12
         const int sign = (i < 0) ? -1 : 1;
286
287
48
         for ( ; i; i /= 10)
288
36
         {
289
36
            result += '0' + static_cast<char_t>(sign * (i % 10));
290
36
         }
291
292
12
         if (sign < 0)
293
0
         {
294
0
            result += '-';
295
0
         }
296
297
12
         std::reverse(result.begin(), result.end());
298
299
12
         return result;
300
12
      }
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > exprtk::details::to_str_impl<int>(int)
Line
Count
Source
279
30.2k
      {
280
30.2k
         if (0 == i)
281
12
            return std::string("0");
282
283
30.2k
         std::string result;
284
285
30.2k
         const int sign = (i < 0) ? -1 : 1;
286
287
181k
         for ( ; i; i /= 10)
288
151k
         {
289
151k
            result += '0' + static_cast<char_t>(sign * (i % 10));
290
151k
         }
291
292
30.2k
         if (sign < 0)
293
10
         {
294
10
            result += '-';
295
10
         }
296
297
30.2k
         std::reverse(result.begin(), result.end());
298
299
30.2k
         return result;
300
30.2k
      }
301
302
      inline std::string to_str(int i)
303
30.2k
      {
304
30.2k
         return to_str_impl(i);
305
30.2k
      }
306
307
      inline std::string to_str(std::size_t i)
308
12
      {
309
12
         return to_str_impl(static_cast<long long int>(i));
310
12
      }
311
312
      inline bool is_hex_digit(const uchar_t digit)
313
18.4k
      {
314
18.4k
         return (('0' <= digit) && (digit <= '9')) ||
315
18.4k
                (('A' <= digit) && (digit <= 'F')) ||
316
18.4k
                (('a' <= digit) && (digit <= 'f')) ;
317
18.4k
      }
318
319
      inline uchar_t hex_to_bin(uchar_t h)
320
8.62k
      {
321
8.62k
         if (('0' <= h) && (h <= '9'))
322
2.33k
            return (h - '0');
323
6.29k
         else
324
6.29k
            return static_cast<uchar_t>(std::toupper(h) - 'A' + 10);
325
8.62k
      }
326
327
      template <typename Iterator>
328
      inline bool parse_hex(Iterator& itr, Iterator end,
329
                            char_t& result)
330
65.8k
      {
331
65.8k
         if (
332
65.8k
              (end ==  (itr    ))               ||
333
65.8k
              (end ==  (itr + 1))               ||
334
65.8k
              (end ==  (itr + 2))               ||
335
65.8k
              (end ==  (itr + 3))               ||
336
65.8k
              ('0' != *(itr    ))               ||
337
65.8k
              ('X' != std::toupper(*(itr + 1))) ||
338
65.8k
              (!is_hex_digit(*(itr + 2)))       ||
339
65.8k
              (!is_hex_digit(*(itr + 3)))
340
65.8k
            )
341
61.5k
         {
342
61.5k
            return false;
343
61.5k
         }
344
345
4.31k
         result = hex_to_bin(static_cast<uchar_t>(*(itr + 2))) << 4 |
346
4.31k
                  hex_to_bin(static_cast<uchar_t>(*(itr + 3))) ;
347
348
4.31k
         return true;
349
65.8k
      }
350
351
      inline bool cleanup_escapes(std::string& s)
352
5.65k
      {
353
5.65k
         typedef std::string::iterator str_itr_t;
354
355
5.65k
         str_itr_t itr1 = s.begin();
356
5.65k
         str_itr_t itr2 = s.begin();
357
5.65k
         str_itr_t end  = s.end  ();
358
359
5.65k
         std::size_t removal_count  = 0;
360
361
15.8M
         while (end != itr1)
362
15.8M
         {
363
15.8M
            if ('\\' == (*itr1))
364
65.8k
            {
365
65.8k
               if (end == ++itr1)
366
0
               {
367
0
                  return false;
368
0
               }
369
65.8k
               else if (parse_hex(itr1, end, *itr2))
370
4.31k
               {
371
4.31k
                  itr1 += 4;
372
4.31k
                  itr2 += 1;
373
4.31k
                  removal_count += 4;
374
4.31k
               }
375
61.5k
               else if ('a' == (*itr1)) { (*itr2++) = '\a'; ++itr1; ++removal_count; }
376
61.0k
               else if ('b' == (*itr1)) { (*itr2++) = '\b'; ++itr1; ++removal_count; }
377
60.0k
               else if ('f' == (*itr1)) { (*itr2++) = '\f'; ++itr1; ++removal_count; }
378
59.6k
               else if ('n' == (*itr1)) { (*itr2++) = '\n'; ++itr1; ++removal_count; }
379
54.8k
               else if ('r' == (*itr1)) { (*itr2++) = '\r'; ++itr1; ++removal_count; }
380
54.0k
               else if ('t' == (*itr1)) { (*itr2++) = '\t'; ++itr1; ++removal_count; }
381
52.9k
               else if ('v' == (*itr1)) { (*itr2++) = '\v'; ++itr1; ++removal_count; }
382
52.4k
               else if ('0' == (*itr1)) { (*itr2++) = '\0'; ++itr1; ++removal_count; }
383
52.4k
               else
384
52.4k
               {
385
52.4k
                  (*itr2++) = (*itr1++);
386
52.4k
                  ++removal_count;
387
52.4k
               }
388
389
65.8k
               continue;
390
65.8k
            }
391
15.7M
            else
392
15.7M
               (*itr2++) = (*itr1++);
393
15.8M
         }
394
395
5.65k
         if ((removal_count > s.size()) || (0 == removal_count))
396
0
            return false;
397
398
5.65k
         s.resize(s.size() - removal_count);
399
400
5.65k
         return true;
401
5.65k
      }
402
403
      class build_string
404
      {
405
      public:
406
407
         explicit build_string(const std::size_t& initial_size = 64)
408
40.1k
         {
409
40.1k
            data_.reserve(initial_size);
410
40.1k
         }
411
412
         inline build_string& operator << (const std::string& s)
413
92.4k
         {
414
92.4k
            data_ += s;
415
92.4k
            return (*this);
416
92.4k
         }
417
418
         inline build_string& operator << (char_cptr s)
419
132k
         {
420
132k
            data_ += std::string(s);
421
132k
            return (*this);
422
132k
         }
423
424
         inline operator std::string () const
425
40.1k
         {
426
40.1k
            return data_;
427
40.1k
         }
428
429
         inline std::string as_string() const
430
0
         {
431
0
            return data_;
432
0
         }
433
434
      private:
435
436
         std::string data_;
437
      };
438
439
      static const std::string reserved_words[] =
440
      {
441
         "assert",  "break", "case", "continue", "const",  "default",
442
         "false", "for", "if", "else", "ilike", "in", "like",  "and",
443
         "nand",  "nor",  "not",  "null",  "or",  "repeat", "return",
444
         "shl",  "shr",  "swap",  "switch",  "true",  "until", "var",
445
         "while", "xnor", "xor", "&", "|"
446
      };
447
448
      static const std::size_t reserved_words_size = sizeof(reserved_words) / sizeof(std::string);
449
450
      static const std::string reserved_symbols[] =
451
      {
452
         "abs", "acos",  "acosh", "and",  "asin", "asinh",  "assert",
453
         "atan", "atanh",  "atan2", "avg",  "break", "case",  "ceil",
454
         "clamp", "continue", "const",  "cos", "cosh", "cot",  "csc",
455
         "default",  "deg2grad", "deg2rad",  "equal", "erf",  "erfc",
456
         "exp", "expm1", "false", "floor", "for", "frac", "grad2deg",
457
         "hypot", "iclamp", "if",  "else", "ilike", "in",  "inrange",
458
         "like",  "log",  "log10", "log2",  "logn",  "log1p", "mand",
459
         "max", "min",  "mod", "mor",  "mul", "ncdf",  "nand", "nor",
460
         "not",   "not_equal",   "null",   "or",   "pow",  "rad2deg",
461
         "repeat", "return", "root", "round", "roundn", "sec", "sgn",
462
         "shl", "shr", "sin", "sinc", "sinh", "sqrt", "sum",  "swap",
463
         "switch", "tan",  "tanh", "true",  "trunc", "until",  "var",
464
         "while", "xnor", "xor", "&", "|"
465
      };
466
467
      static const std::size_t reserved_symbols_size = sizeof(reserved_symbols) / sizeof(std::string);
468
469
      static const std::string base_function_list[] =
470
      {
471
         "abs", "acos",  "acosh", "asin",  "asinh", "atan",  "atanh",
472
         "atan2",  "avg",  "ceil",  "clamp",  "cos",  "cosh",  "cot",
473
         "csc",  "equal",  "erf",  "erfc",  "exp",  "expm1", "floor",
474
         "frac", "hypot", "iclamp",  "like", "log", "log10",  "log2",
475
         "logn", "log1p", "mand", "max", "min", "mod", "mor",  "mul",
476
         "ncdf",  "pow",  "root",  "round",  "roundn",  "sec", "sgn",
477
         "sin", "sinc", "sinh", "sqrt", "sum", "swap", "tan", "tanh",
478
         "trunc",  "not_equal",  "inrange",  "deg2grad",   "deg2rad",
479
         "rad2deg", "grad2deg"
480
      };
481
482
      static const std::size_t base_function_list_size = sizeof(base_function_list) / sizeof(std::string);
483
484
      static const std::string logic_ops_list[] =
485
      {
486
         "and", "nand", "nor", "not", "or",  "xnor", "xor", "&", "|"
487
      };
488
489
      static const std::size_t logic_ops_list_size = sizeof(logic_ops_list) / sizeof(std::string);
490
491
      static const std::string cntrl_struct_list[] =
492
      {
493
         "if", "switch", "for", "while", "repeat", "return"
494
      };
495
496
      static const std::size_t cntrl_struct_list_size = sizeof(cntrl_struct_list) / sizeof(std::string);
497
498
      static const std::string arithmetic_ops_list[] =
499
      {
500
         "+", "-", "*", "/", "%", "^"
501
      };
502
503
      static const std::size_t arithmetic_ops_list_size = sizeof(arithmetic_ops_list) / sizeof(std::string);
504
505
      static const std::string assignment_ops_list[] =
506
      {
507
         ":=", "+=", "-=",
508
         "*=", "/=", "%="
509
      };
510
511
      static const std::size_t assignment_ops_list_size = sizeof(assignment_ops_list) / sizeof(std::string);
512
513
      static const std::string inequality_ops_list[] =
514
      {
515
         "<",  "<=", "==",
516
         "=",  "!=", "<>",
517
         ">=",  ">"
518
      };
519
520
      static const std::size_t inequality_ops_list_size = sizeof(inequality_ops_list) / sizeof(std::string);
521
522
      inline bool is_reserved_word(const std::string& symbol)
523
0
      {
524
0
         for (std::size_t i = 0; i < reserved_words_size; ++i)
525
0
         {
526
0
            if (imatch(symbol, reserved_words[i]))
527
0
            {
528
0
               return true;
529
0
            }
530
0
         }
531
0
532
0
         return false;
533
0
      }
534
535
      inline bool is_reserved_symbol(const std::string& symbol)
536
700
      {
537
62.5k
         for (std::size_t i = 0; i < reserved_symbols_size; ++i)
538
61.9k
         {
539
61.9k
            if (imatch(symbol, reserved_symbols[i]))
540
69
            {
541
69
               return true;
542
69
            }
543
61.9k
         }
544
545
631
         return false;
546
700
      }
547
548
      inline bool is_base_function(const std::string& function_name)
549
0
      {
550
0
         for (std::size_t i = 0; i < base_function_list_size; ++i)
551
0
         {
552
0
            if (imatch(function_name, base_function_list[i]))
553
0
            {
554
0
               return true;
555
0
            }
556
0
         }
557
558
0
         return false;
559
0
      }
560
561
      inline bool is_control_struct(const std::string& cntrl_strct)
562
0
      {
563
0
         for (std::size_t i = 0; i < cntrl_struct_list_size; ++i)
564
0
         {
565
0
            if (imatch(cntrl_strct, cntrl_struct_list[i]))
566
0
            {
567
0
               return true;
568
0
            }
569
0
         }
570
0
571
0
         return false;
572
0
      }
573
574
      inline bool is_logic_opr(const std::string& lgc_opr)
575
0
      {
576
0
         for (std::size_t i = 0; i < logic_ops_list_size; ++i)
577
0
         {
578
0
            if (imatch(lgc_opr, logic_ops_list[i]))
579
0
            {
580
0
               return true;
581
0
            }
582
0
         }
583
584
0
         return false;
585
0
      }
586
587
      struct cs_match
588
      {
589
         static inline bool cmp(const char_t c0, const char_t c1)
590
0
         {
591
0
            return (c0 == c1);
592
0
         }
593
      };
594
595
      struct cis_match
596
      {
597
         static inline bool cmp(const char_t c0, const char_t c1)
598
0
         {
599
0
            return (std::tolower(c0) == std::tolower(c1));
600
0
         }
601
      };
602
603
      template <typename Iterator, typename Compare>
604
      inline bool match_impl(const Iterator pattern_begin,
605
                             const Iterator pattern_end  ,
606
                             const Iterator data_begin   ,
607
                             const Iterator data_end     ,
608
                             const typename std::iterator_traits<Iterator>::value_type& zero_or_more,
609
                             const typename std::iterator_traits<Iterator>::value_type& exactly_one )
610
0
      {
611
0
         typedef typename std::iterator_traits<Iterator>::value_type type;
612
613
0
         const Iterator null_itr(0);
614
615
0
         Iterator p_itr  = pattern_begin;
616
0
         Iterator d_itr  = data_begin;
617
0
         Iterator np_itr = null_itr;
618
0
         Iterator nd_itr = null_itr;
619
620
0
         for ( ; ; )
621
0
         {
622
0
            if (p_itr != pattern_end)
623
0
            {
624
0
               const type c = *(p_itr);
625
626
0
               if ((data_end != d_itr) && (Compare::cmp(c,*(d_itr)) || (exactly_one == c)))
627
0
               {
628
0
                  ++d_itr;
629
0
                  ++p_itr;
630
0
                  continue;
631
0
               }
632
0
               else if (zero_or_more == c)
633
0
               {
634
0
                  while ((pattern_end != p_itr) && (zero_or_more == *(p_itr)))
635
0
                  {
636
0
                     ++p_itr;
637
0
                  }
638
639
0
                  const type d = *(p_itr);
640
641
0
                  while ((data_end != d_itr) && !(Compare::cmp(d,*(d_itr)) || (exactly_one == d)))
642
0
                  {
643
0
                     ++d_itr;
644
0
                  }
645
646
                  // set backtrack iterators
647
0
                  np_itr = p_itr - 1;
648
0
                  nd_itr = d_itr + 1;
649
650
0
                  continue;
651
0
               }
652
0
            }
653
0
            else if (data_end == d_itr)
654
0
               break;
655
656
0
            if ((data_end == d_itr) || (null_itr == nd_itr))
657
0
                return false;
658
659
0
            p_itr = np_itr;
660
0
            d_itr = nd_itr;
661
0
         }
662
663
0
         return true;
664
0
      }
Unexecuted instantiation: bool exprtk::details::match_impl<char const*, exprtk::details::cs_match>(char const*, char const*, char const*, char const*, std::__1::iterator_traits<char const*>::value_type const&, std::__1::iterator_traits<char const*>::value_type const&)
Unexecuted instantiation: bool exprtk::details::match_impl<char const*, exprtk::details::cis_match>(char const*, char const*, char const*, char const*, std::__1::iterator_traits<char const*>::value_type const&, std::__1::iterator_traits<char const*>::value_type const&)
665
666
      inline bool wc_match(const std::string& wild_card,
667
                           const std::string& str)
668
0
      {
669
0
         return match_impl<char_cptr,cs_match>
670
0
                (
671
0
                   wild_card.data(),
672
0
                   wild_card.data() + wild_card.size(),
673
0
                   str.data(),
674
0
                   str.data() + str.size(),
675
0
                   '*', '?'
676
0
                );
677
0
      }
678
679
      inline bool wc_imatch(const std::string& wild_card,
680
                            const std::string& str)
681
0
      {
682
0
         return match_impl<char_cptr,cis_match>
683
0
                (
684
0
                   wild_card.data(),
685
0
                   wild_card.data() + wild_card.size(),
686
0
                   str.data(),
687
0
                   str.data() + str.size(),
688
0
                   '*', '?'
689
0
                );
690
0
      }
691
692
      inline bool sequence_match(const std::string& pattern,
693
                                 const std::string& str,
694
                                 std::size_t&       diff_index,
695
                                 char_t&            diff_value)
696
0
      {
697
0
         if (str.empty())
698
0
         {
699
0
            return ("Z" == pattern);
700
0
         }
701
0
         else if ('*' == pattern[0])
702
0
            return false;
703
704
0
         typedef std::string::const_iterator itr_t;
705
706
0
         itr_t p_itr = pattern.begin();
707
0
         itr_t s_itr = str    .begin();
708
709
0
         const itr_t p_end = pattern.end();
710
0
         const itr_t s_end = str    .end();
711
712
0
         while ((s_end != s_itr) && (p_end != p_itr))
713
0
         {
714
0
            if ('*' == (*p_itr))
715
0
            {
716
0
               const char_t target = static_cast<char_t>(std::toupper(*(p_itr - 1)));
717
718
0
               if ('*' == target)
719
0
               {
720
0
                  diff_index = static_cast<std::size_t>(std::distance(str.begin(),s_itr));
721
0
                  diff_value = static_cast<char_t>(std::toupper(*p_itr));
722
723
0
                  return false;
724
0
               }
725
0
               else
726
0
                  ++p_itr;
727
728
0
               while (s_itr != s_end)
729
0
               {
730
0
                  if (target != std::toupper(*s_itr))
731
0
                     break;
732
0
                  else
733
0
                     ++s_itr;
734
0
               }
735
736
0
               continue;
737
0
            }
738
0
            else if (
739
0
                      ('?' != *p_itr) &&
740
0
                      std::toupper(*p_itr) != std::toupper(*s_itr)
741
0
                    )
742
0
            {
743
0
               diff_index = static_cast<std::size_t>(std::distance(str.begin(),s_itr));
744
0
               diff_value = static_cast<char_t>(std::toupper(*p_itr));
745
746
0
               return false;
747
0
            }
748
749
0
            ++p_itr;
750
0
            ++s_itr;
751
0
         }
752
753
0
         return (
754
0
                  (s_end == s_itr) &&
755
0
                  (
756
0
                    (p_end ==  p_itr) ||
757
0
                    ('*'   == *p_itr)
758
0
                  )
759
0
                );
760
0
      }
761
762
      template<typename T>
763
      struct set_zero_value_impl
764
      {
765
         static inline void process(T* base_ptr, const std::size_t size)
766
         {
767
            const T zero = T(0);
768
            for (std::size_t i = 0; i < size; ++i)
769
            {
770
               base_ptr[i] = zero;
771
            }
772
         }
773
      };
774
775
      #define pod_set_zero_value(T)                                      \
776
      template <>                                                        \
777
      struct set_zero_value_impl<T>                                      \
778
      {                                                                  \
779
         static inline void process(T* base_ptr, const std::size_t size) \
780
0
         { std::memset(base_ptr, 0x00, size * sizeof(T)); }              \
Unexecuted instantiation: exprtk::details::set_zero_value_impl<double>::process(double*, unsigned long)
Unexecuted instantiation: exprtk::details::set_zero_value_impl<float>::process(float*, unsigned long)
Unexecuted instantiation: exprtk::details::set_zero_value_impl<long double>::process(long double*, unsigned long)
781
      };                                                                 \
782
783
      pod_set_zero_value(float      )
784
      pod_set_zero_value(double     )
785
      pod_set_zero_value(long double)
786
787
      #ifdef pod_set_zero_value
788
      #undef pod_set_zero_value
789
      #endif
790
791
      template<typename T>
792
      inline void set_zero_value(T* data, const std::size_t size)
793
0
      {
794
0
         set_zero_value_impl<T>::process(data,size);
795
0
      }
Unexecuted instantiation: void exprtk::details::set_zero_value<double>(double*, unsigned long)
Unexecuted instantiation: void exprtk::details::set_zero_value<float>(float*, unsigned long)
796
797
      template<typename T>
798
      inline void set_zero_value(std::vector<T>& v)
799
      {
800
         set_zero_value(v.data(),v.size());
801
      }
802
803
      static const double pow10[] =
804
      {
805
         1.0,
806
         1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004,
807
         1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008,
808
         1.0E+009, 1.0E+010, 1.0E+011, 1.0E+012,
809
         1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016
810
      };
811
812
      static const std::size_t pow10_size = sizeof(pow10) / sizeof(double);
813
814
      namespace numeric
815
      {
816
         namespace constant
817
         {
818
            static const double e       =  2.71828182845904523536028747135266249775724709369996;
819
            static const double pi      =  3.14159265358979323846264338327950288419716939937510;
820
            static const double pi_2    =  1.57079632679489661923132169163975144209858469968755;
821
            static const double pi_4    =  0.78539816339744830961566084581987572104929234984378;
822
            static const double pi_180  =  0.01745329251994329576923690768488612713442871888542;
823
            static const double _1_pi   =  0.31830988618379067153776752674502872406891929148091;
824
            static const double _2_pi   =  0.63661977236758134307553505349005744813783858296183;
825
            static const double _180_pi = 57.29577951308232087679815481410517033240547246656443;
826
            static const double log2    =  0.69314718055994530941723212145817656807550013436026;
827
            static const double sqrt2   =  1.41421356237309504880168872420969807856967187537695;
828
         }
829
830
         namespace details
831
         {
832
0
            struct unknown_type_tag { unknown_type_tag() {} };
833
1.27M
            struct real_type_tag    { real_type_tag   () {} };
834
0
            struct int_type_tag     { int_type_tag    () {} };
835
836
            template <typename T>
837
            struct number_type
838
            {
839
               typedef unknown_type_tag type;
840
               number_type() {}
841
            };
842
843
            #define exprtk_register_real_type_tag(T)          \
844
            template <> struct number_type<T>                 \
845
0
            { typedef real_type_tag type; number_type() {} }; \
Unexecuted instantiation: exprtk::details::numeric::details::number_type<float>::number_type()
Unexecuted instantiation: exprtk::details::numeric::details::number_type<double>::number_type()
Unexecuted instantiation: exprtk::details::numeric::details::number_type<long double>::number_type()
846
847
            #define exprtk_register_int_type_tag(T)           \
848
            template <> struct number_type<T>                 \
849
0
            { typedef int_type_tag type; number_type() {} };  \
Unexecuted instantiation: exprtk::details::numeric::details::number_type<short>::number_type()
Unexecuted instantiation: exprtk::details::numeric::details::number_type<int>::number_type()
Unexecuted instantiation: exprtk::details::numeric::details::number_type<long long>::number_type()
Unexecuted instantiation: exprtk::details::numeric::details::number_type<unsigned short>::number_type()
Unexecuted instantiation: exprtk::details::numeric::details::number_type<unsigned int>::number_type()
Unexecuted instantiation: exprtk::details::numeric::details::number_type<unsigned long long>::number_type()
850
851
            exprtk_register_real_type_tag(float      )
852
            exprtk_register_real_type_tag(double     )
853
            exprtk_register_real_type_tag(long double)
854
855
            exprtk_register_int_type_tag(short         )
856
            exprtk_register_int_type_tag(int           )
857
            exprtk_register_int_type_tag(_int64_t      )
858
            exprtk_register_int_type_tag(unsigned short)
859
            exprtk_register_int_type_tag(unsigned int  )
860
            exprtk_register_int_type_tag(_uint64_t     )
861
862
            #undef exprtk_register_real_type_tag
863
            #undef exprtk_register_int_type_tag
864
865
            template <typename T>
866
            struct epsilon_type {};
867
868
            #define exprtk_define_epsilon_type(Type, Epsilon)      \
869
            template <> struct epsilon_type<Type>                  \
870
            {                                                      \
871
               static inline Type value()                          \
872
2
               {                                                   \
873
2
                  const Type epsilon = static_cast<Type>(Epsilon); \
874
2
                  return epsilon;                                  \
875
2
               }                                                   \
exprtk::details::numeric::details::epsilon_type<double>::value()
Line
Count
Source
872
1
               {                                                   \
873
1
                  const Type epsilon = static_cast<Type>(Epsilon); \
874
1
                  return epsilon;                                  \
875
1
               }                                                   \
exprtk::details::numeric::details::epsilon_type<float>::value()
Line
Count
Source
872
1
               {                                                   \
873
1
                  const Type epsilon = static_cast<Type>(Epsilon); \
874
1
                  return epsilon;                                  \
875
1
               }                                                   \
Unexecuted instantiation: exprtk::details::numeric::details::epsilon_type<long double>::value()
876
            };                                                     \
877
878
            exprtk_define_epsilon_type(float      , 0.00000100000f)
879
            exprtk_define_epsilon_type(double     , 0.000000000100)
880
            exprtk_define_epsilon_type(long double, 0.000000000001)
881
882
            #undef exprtk_define_epsilon_type
883
884
            template <typename T>
885
            inline bool is_nan_impl(const T v, real_type_tag)
886
0
            {
887
0
               return std::not_equal_to<T>()(v,v);
888
0
            }
Unexecuted instantiation: bool exprtk::details::numeric::details::is_nan_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: bool exprtk::details::numeric::details::is_nan_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
889
890
            template <typename T>
891
            inline int to_int32_impl(const T v, real_type_tag)
892
5.35k
            {
893
5.35k
               return static_cast<int>(v);
894
5.35k
            }
int exprtk::details::numeric::details::to_int32_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
892
3.05k
            {
893
3.05k
               return static_cast<int>(v);
894
3.05k
            }
int exprtk::details::numeric::details::to_int32_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
892
2.30k
            {
893
2.30k
               return static_cast<int>(v);
894
2.30k
            }
895
896
            template <typename T>
897
            inline _int64_t to_int64_impl(const T v, real_type_tag)
898
28
            {
899
28
               return static_cast<_int64_t>(v);
900
28
            }
long long exprtk::details::numeric::details::to_int64_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
898
14
            {
899
14
               return static_cast<_int64_t>(v);
900
14
            }
long long exprtk::details::numeric::details::to_int64_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
898
14
            {
899
14
               return static_cast<_int64_t>(v);
900
14
            }
901
902
            template <typename T>
903
            inline _uint64_t to_uint64_impl(const T v, real_type_tag)
904
0
            {
905
0
               return static_cast<_uint64_t>(v);
906
0
            }
Unexecuted instantiation: unsigned long long exprtk::details::numeric::details::to_uint64_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: unsigned long long exprtk::details::numeric::details::to_uint64_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
907
908
            template <typename T>
909
            inline bool is_true_impl(const T v)
910
26
            {
911
26
               return std::not_equal_to<T>()(T(0),v);
912
26
            }
bool exprtk::details::numeric::details::is_true_impl<double>(double)
Line
Count
Source
910
13
            {
911
13
               return std::not_equal_to<T>()(T(0),v);
912
13
            }
bool exprtk::details::numeric::details::is_true_impl<float>(float)
Line
Count
Source
910
13
            {
911
13
               return std::not_equal_to<T>()(T(0),v);
912
13
            }
913
914
            template <typename T>
915
            inline bool is_false_impl(const T v)
916
152
            {
917
152
               return std::equal_to<T>()(T(0),v);
918
152
            }
bool exprtk::details::numeric::details::is_false_impl<double>(double)
Line
Count
Source
916
76
            {
917
76
               return std::equal_to<T>()(T(0),v);
918
76
            }
bool exprtk::details::numeric::details::is_false_impl<float>(float)
Line
Count
Source
916
76
            {
917
76
               return std::equal_to<T>()(T(0),v);
918
76
            }
919
920
            template <typename T>
921
            inline T abs_impl(const T v, real_type_tag)
922
11.0k
            {
923
11.0k
               return ((v < T(0)) ? -v : v);
924
11.0k
            }
double exprtk::details::numeric::details::abs_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
922
6.33k
            {
923
6.33k
               return ((v < T(0)) ? -v : v);
924
6.33k
            }
float exprtk::details::numeric::details::abs_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
922
4.74k
            {
923
4.74k
               return ((v < T(0)) ? -v : v);
924
4.74k
            }
925
926
            template <typename T>
927
            inline T min_impl(const T v0, const T v1, real_type_tag)
928
            {
929
               return std::min<T>(v0,v1);
930
            }
931
932
            template <typename T>
933
            inline T max_impl(const T v0, const T v1, real_type_tag)
934
            {
935
               return std::max<T>(v0,v1);
936
            }
937
938
            template <typename T>
939
            inline T equal_impl(const T v0, const T v1, real_type_tag)
940
0
            {
941
0
               const T epsilon = epsilon_type<T>::value();
942
0
               return (abs_impl(v0 - v1,real_type_tag()) <= (std::max(T(1),std::max(abs_impl(v0,real_type_tag()),abs_impl(v1,real_type_tag()))) * epsilon)) ? T(1) : T(0);
943
0
            }
944
945
            inline float equal_impl(const float v0, const float v1, real_type_tag)
946
0
            {
947
0
               const float epsilon = epsilon_type<float>::value();
948
0
               return (abs_impl(v0 - v1,real_type_tag()) <= (std::max(1.0f,std::max(abs_impl(v0,real_type_tag()),abs_impl(v1,real_type_tag()))) * epsilon)) ? 1.0f : 0.0f;
949
0
            }
950
951
            template <typename T>
952
            inline T equal_impl(const T v0, const T v1, int_type_tag)
953
            {
954
               return (v0 == v1) ? 1 : 0;
955
            }
956
957
            template <typename T>
958
            inline T nequal_impl(const T v0, const T v1, real_type_tag)
959
0
            {
960
0
               typedef real_type_tag rtg;
961
0
               const T epsilon = epsilon_type<T>::value();
962
0
               return (abs_impl(v0 - v1,rtg()) > (std::max(T(1),std::max(abs_impl(v0,rtg()),abs_impl(v1,rtg()))) * epsilon)) ? T(1) : T(0);
963
0
            }
964
965
            inline float nequal_impl(const float v0, const float v1, real_type_tag)
966
0
            {
967
0
               typedef real_type_tag rtg;
968
0
               const float epsilon = epsilon_type<float>::value();
969
0
               return (abs_impl(v0 - v1,rtg()) > (std::max(1.0f,std::max(abs_impl(v0,rtg()),abs_impl(v1,rtg()))) * epsilon)) ? 1.0f : 0.0f;
970
0
            }
971
972
            template <typename T>
973
            inline T nequal_impl(const T v0, const T v1, int_type_tag)
974
            {
975
               return (v0 != v1) ? 1 : 0;
976
            }
977
978
            template <typename T>
979
            inline T modulus_impl(const T v0, const T v1, real_type_tag)
980
7.84k
            {
981
7.84k
               return std::fmod(v0,v1);
982
7.84k
            }
double exprtk::details::numeric::details::modulus_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
980
7.55k
            {
981
7.55k
               return std::fmod(v0,v1);
982
7.55k
            }
float exprtk::details::numeric::details::modulus_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
980
287
            {
981
287
               return std::fmod(v0,v1);
982
287
            }
983
984
            template <typename T>
985
            inline T modulus_impl(const T v0, const T v1, int_type_tag)
986
            {
987
               return v0 % v1;
988
            }
989
990
            template <typename T>
991
            inline T pow_impl(const T v0, const T v1, real_type_tag)
992
1.45k
            {
993
1.45k
               return std::pow(v0,v1);
994
1.45k
            }
double exprtk::details::numeric::details::pow_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
992
766
            {
993
766
               return std::pow(v0,v1);
994
766
            }
float exprtk::details::numeric::details::pow_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
992
691
            {
993
691
               return std::pow(v0,v1);
994
691
            }
995
996
            template <typename T>
997
            inline T pow_impl(const T v0, const T v1, int_type_tag)
998
            {
999
               return std::pow(static_cast<double>(v0),static_cast<double>(v1));
1000
            }
1001
1002
            template <typename T>
1003
            inline T logn_impl(const T v0, const T v1, real_type_tag)
1004
0
            {
1005
0
               return std::log(v0) / std::log(v1);
1006
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::logn_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::logn_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
1007
1008
            template <typename T>
1009
            inline T logn_impl(const T v0, const T v1, int_type_tag)
1010
            {
1011
               return static_cast<T>(logn_impl<double>(static_cast<double>(v0),static_cast<double>(v1),real_type_tag()));
1012
            }
1013
1014
            template <typename T>
1015
            inline T root_impl(const T v0, const T v1, real_type_tag)
1016
0
            {
1017
0
               if (v0 < T(0))
1018
0
               {
1019
0
                  return (v1 == trunc_impl(v1, real_type_tag())) &&
1020
0
                         (modulus_impl(v1, T(2), real_type_tag()) != T(0)) ?
1021
0
                         -std::pow(abs_impl(v0, real_type_tag()), T(1) / v1) :
1022
0
                          std::numeric_limits<double>::quiet_NaN();
1023
0
               }
1024
1025
0
               return std::pow(v0, T(1) / v1);
1026
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::root_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::root_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
1027
1028
            template <typename T>
1029
            inline T root_impl(const T v0, const T v1, int_type_tag)
1030
            {
1031
               return root_impl<double>(static_cast<double>(v0),static_cast<double>(v1),real_type_tag());
1032
            }
1033
1034
            template <typename T>
1035
            inline T round_impl(const T v, real_type_tag)
1036
0
            {
1037
0
               return ((v < T(0)) ? std::ceil(v - T(0.5)) : std::floor(v + T(0.5)));
1038
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::round_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::round_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1039
1040
            template <typename T>
1041
            inline T roundn_impl(const T v0, const T v1, real_type_tag)
1042
0
            {
1043
0
               const int index = std::max<int>(0, std::min<int>(pow10_size - 1, static_cast<int>(std::floor(v1))));
1044
0
               const T p10 = T(pow10[index]);
1045
1046
0
               if (v0 < T(0))
1047
0
                  return T(std::ceil ((v0 * p10) - T(0.5)) / p10);
1048
0
               else
1049
0
                  return T(std::floor((v0 * p10) + T(0.5)) / p10);
1050
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::roundn_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::roundn_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
1051
1052
            template <typename T>
1053
            inline T roundn_impl(const T v0, const T, int_type_tag)
1054
            {
1055
               return v0;
1056
            }
1057
1058
            template <typename T>
1059
            inline T hypot_impl(const T v0, const T v1, real_type_tag)
1060
0
            {
1061
0
               return std::sqrt((v0 * v0) + (v1 * v1));
1062
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::hypot_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::hypot_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
1063
1064
            template <typename T>
1065
            inline T hypot_impl(const T v0, const T v1, int_type_tag)
1066
            {
1067
               return static_cast<T>(std::sqrt(static_cast<double>((v0 * v0) + (v1 * v1))));
1068
            }
1069
1070
            template <typename T>
1071
            inline T atan2_impl(const T v0, const T v1, real_type_tag)
1072
0
            {
1073
0
               return std::atan2(v0,v1);
1074
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::atan2_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::atan2_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
1075
1076
            template <typename T>
1077
            inline T atan2_impl(const T, const T, int_type_tag)
1078
            {
1079
               return 0;
1080
            }
1081
1082
            template <typename T>
1083
            inline T shr_impl(const T v0, const T v1, real_type_tag)
1084
0
            {
1085
0
               return v0 * (T(1) / std::pow(T(2),static_cast<T>(static_cast<int>(v1))));
1086
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::shr_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::shr_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
1087
1088
            template <typename T>
1089
            inline T shr_impl(const T v0, const T v1, int_type_tag)
1090
            {
1091
               return v0 >> v1;
1092
            }
1093
1094
            template <typename T>
1095
            inline T shl_impl(const T v0, const T v1, real_type_tag)
1096
0
            {
1097
0
               return v0 * std::pow(T(2),static_cast<T>(static_cast<int>(v1)));
1098
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::shl_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::shl_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
1099
1100
            template <typename T>
1101
            inline T shl_impl(const T v0, const T v1, int_type_tag)
1102
            {
1103
               return v0 << v1;
1104
            }
1105
1106
            template <typename T>
1107
            inline T sgn_impl(const T v, real_type_tag)
1108
0
            {
1109
0
               if      (v > T(0)) return T(+1);
1110
0
               else if (v < T(0)) return T(-1);
1111
0
               else               return T( 0);
1112
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::sgn_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::sgn_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1113
1114
            template <typename T>
1115
            inline T sgn_impl(const T v, int_type_tag)
1116
            {
1117
               if      (v > T(0)) return T(+1);
1118
               else if (v < T(0)) return T(-1);
1119
               else               return T( 0);
1120
            }
1121
1122
            template <typename T>
1123
            inline T and_impl(const T v0, const T v1, real_type_tag)
1124
0
            {
1125
0
               return (is_true_impl(v0) && is_true_impl(v1)) ? T(1) : T(0);
1126
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::and_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::and_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
1127
1128
            template <typename T>
1129
            inline T and_impl(const T v0, const T v1, int_type_tag)
1130
            {
1131
               return v0 && v1;
1132
            }
1133
1134
            template <typename T>
1135
            inline T nand_impl(const T v0, const T v1, real_type_tag)
1136
6
            {
1137
6
               return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0);
1138
6
            }
double exprtk::details::numeric::details::nand_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1136
3
            {
1137
3
               return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0);
1138
3
            }
float exprtk::details::numeric::details::nand_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1136
3
            {
1137
3
               return (is_false_impl(v0) || is_false_impl(v1)) ? T(1) : T(0);
1138
3
            }
1139
1140
            template <typename T>
1141
            inline T nand_impl(const T v0, const T v1, int_type_tag)
1142
            {
1143
               return !(v0 && v1);
1144
            }
1145
1146
            template <typename T>
1147
            inline T or_impl(const T v0, const T v1, real_type_tag)
1148
4
            {
1149
4
               return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0);
1150
4
            }
double exprtk::details::numeric::details::or_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1148
2
            {
1149
2
               return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0);
1150
2
            }
float exprtk::details::numeric::details::or_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1148
2
            {
1149
2
               return (is_true_impl(v0) || is_true_impl(v1)) ? T(1) : T(0);
1150
2
            }
1151
1152
            template <typename T>
1153
            inline T or_impl(const T v0, const T v1, int_type_tag)
1154
            {
1155
               return (v0 || v1);
1156
            }
1157
1158
            template <typename T>
1159
            inline T nor_impl(const T v0, const T v1, real_type_tag)
1160
0
            {
1161
0
               return (is_false_impl(v0) && is_false_impl(v1)) ? T(1) : T(0);
1162
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::nor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::nor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
1163
1164
            template <typename T>
1165
            inline T nor_impl(const T v0, const T v1, int_type_tag)
1166
            {
1167
               return !(v0 || v1);
1168
            }
1169
1170
            template <typename T>
1171
            inline T xor_impl(const T v0, const T v1, real_type_tag)
1172
70
            {
1173
70
               return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0);
1174
70
            }
double exprtk::details::numeric::details::xor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1172
35
            {
1173
35
               return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0);
1174
35
            }
float exprtk::details::numeric::details::xor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1172
35
            {
1173
35
               return (is_false_impl(v0) != is_false_impl(v1)) ? T(1) : T(0);
1174
35
            }
1175
1176
            template <typename T>
1177
            inline T xor_impl(const T v0, const T v1, int_type_tag)
1178
            {
1179
               return v0 ^ v1;
1180
            }
1181
1182
            template <typename T>
1183
            inline T xnor_impl(const T v0, const T v1, real_type_tag)
1184
10
            {
1185
10
               const bool v0_true = is_true_impl(v0);
1186
10
               const bool v1_true = is_true_impl(v1);
1187
1188
10
               if ((v0_true &&  v1_true) || (!v0_true && !v1_true))
1189
4
                  return T(1);
1190
6
               else
1191
6
                  return T(0);
1192
10
            }
double exprtk::details::numeric::details::xnor_impl<double>(double, double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1184
5
            {
1185
5
               const bool v0_true = is_true_impl(v0);
1186
5
               const bool v1_true = is_true_impl(v1);
1187
1188
5
               if ((v0_true &&  v1_true) || (!v0_true && !v1_true))
1189
2
                  return T(1);
1190
3
               else
1191
3
                  return T(0);
1192
5
            }
float exprtk::details::numeric::details::xnor_impl<float>(float, float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1184
5
            {
1185
5
               const bool v0_true = is_true_impl(v0);
1186
5
               const bool v1_true = is_true_impl(v1);
1187
1188
5
               if ((v0_true &&  v1_true) || (!v0_true && !v1_true))
1189
2
                  return T(1);
1190
3
               else
1191
3
                  return T(0);
1192
5
            }
1193
1194
            template <typename T>
1195
            inline T xnor_impl(const T v0, const T v1, int_type_tag)
1196
            {
1197
               const bool v0_true = is_true_impl(v0);
1198
               const bool v1_true = is_true_impl(v1);
1199
1200
               if ((v0_true &&  v1_true) || (!v0_true && !v1_true))
1201
                  return T(1);
1202
               else
1203
                  return T(0);
1204
            }
1205
1206
            #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER)
1207
            #define exprtk_define_erf(TT, impl)                \
1208
0
            inline TT erf_impl(const TT v) { return impl(v); } \
Unexecuted instantiation: exprtk::details::numeric::details::erf_impl(double)
Unexecuted instantiation: exprtk::details::numeric::details::erf_impl(float)
Unexecuted instantiation: exprtk::details::numeric::details::erf_impl(long double)
1209
1210
            exprtk_define_erf(float      , ::erff)
1211
            exprtk_define_erf(double     , ::erf )
1212
            exprtk_define_erf(long double, ::erfl)
1213
            #undef exprtk_define_erf
1214
            #endif
1215
1216
            template <typename T>
1217
            inline T erf_impl(const T v, real_type_tag)
1218
0
            {
1219
               #if defined(_MSC_VER) && (_MSC_VER < 1900)
1220
               // Credits: Abramowitz & Stegun Equations 7.1.25-28
1221
               static const T c[] =
1222
               {
1223
                  T( 1.26551223), T(1.00002368),
1224
                  T( 0.37409196), T(0.09678418),
1225
                  T(-0.18628806), T(0.27886807),
1226
                  T(-1.13520398), T(1.48851587),
1227
                  T(-0.82215223), T(0.17087277)
1228
               };
1229
1230
               const T t = T(1) / (T(1) + T(0.5) * abs_impl(v,real_type_tag()));
1231
1232
               const T result = T(1) - t * std::exp((-v * v) -
1233
                                            c[0] + t * (c[1] + t *
1234
                                           (c[2] + t * (c[3] + t *
1235
                                           (c[4] + t * (c[5] + t *
1236
                                           (c[6] + t * (c[7] + t *
1237
                                           (c[8] + t * (c[9]))))))))));
1238
1239
               return (v >= T(0)) ? result : -result;
1240
               #else
1241
0
               return erf_impl(v);
1242
0
               #endif
1243
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::erf_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::erf_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1244
1245
            template <typename T>
1246
            inline T erf_impl(const T v, int_type_tag)
1247
            {
1248
               return erf_impl(static_cast<double>(v),real_type_tag());
1249
            }
1250
1251
            #if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || !defined(_MSC_VER)
1252
            #define exprtk_define_erfc(TT, impl)                \
1253
0
            inline TT erfc_impl(const TT v) { return impl(v); } \
Unexecuted instantiation: exprtk::details::numeric::details::erfc_impl(double)
Unexecuted instantiation: exprtk::details::numeric::details::erfc_impl(float)
Unexecuted instantiation: exprtk::details::numeric::details::erfc_impl(long double)
1254
1255
            exprtk_define_erfc(float      ,::erfcf)
1256
            exprtk_define_erfc(double     ,::erfc )
1257
            exprtk_define_erfc(long double,::erfcl)
1258
            #undef exprtk_define_erfc
1259
            #endif
1260
1261
            template <typename T>
1262
            inline T erfc_impl(const T v, real_type_tag)
1263
0
            {
1264
               #if defined(_MSC_VER) && (_MSC_VER < 1900)
1265
               return T(1) - erf_impl(v,real_type_tag());
1266
               #else
1267
0
               return erfc_impl(v);
1268
0
               #endif
1269
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::erfc_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::erfc_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1270
1271
            template <typename T>
1272
            inline T erfc_impl(const T v, int_type_tag)
1273
            {
1274
               return erfc_impl(static_cast<double>(v),real_type_tag());
1275
            }
1276
1277
            template <typename T>
1278
            inline T ncdf_impl(const T v, real_type_tag)
1279
0
            {
1280
0
               return T(0.5) * erfc_impl(-(v / T(numeric::constant::sqrt2)),real_type_tag());
1281
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::ncdf_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::ncdf_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1282
1283
            template <typename T>
1284
            inline T ncdf_impl(const T v, int_type_tag)
1285
            {
1286
               return ncdf_impl(static_cast<double>(v),real_type_tag());
1287
            }
1288
1289
            template <typename T>
1290
            inline T sinc_impl(const T v, real_type_tag)
1291
0
            {
1292
0
               if (std::abs(v) >= std::numeric_limits<T>::epsilon())
1293
0
                   return(std::sin(v) / v);
1294
0
               else
1295
0
                  return T(1);
1296
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::sinc_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::sinc_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1297
1298
            template <typename T>
1299
            inline T sinc_impl(const T v, int_type_tag)
1300
            {
1301
               return sinc_impl(static_cast<double>(v),real_type_tag());
1302
            }
1303
1304
            #if __cplusplus >= 201103L
1305
            template <typename T>
1306
            inline T acosh_impl(const T v, real_type_tag)
1307
0
            {
1308
0
               return std::acosh(v);
1309
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::acosh_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::acosh_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1310
1311
            template <typename T>
1312
            inline T asinh_impl(const T v, real_type_tag)
1313
0
            {
1314
0
               return std::asinh(v);
1315
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::asinh_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::asinh_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1316
1317
            template <typename T>
1318
            inline T atanh_impl(const T v, real_type_tag)
1319
0
            {
1320
0
               return std::atanh(v);
1321
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::atanh_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::atanh_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1322
1323
            template <typename T>
1324
            inline T trunc_impl(const T v, real_type_tag)
1325
0
            {
1326
0
               return std::trunc(v);
1327
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::trunc_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::trunc_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1328
1329
            template <typename T>
1330
            inline T expm1_impl(const T v, real_type_tag)
1331
0
            {
1332
0
               return std::expm1(v);
1333
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::expm1_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::expm1_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1334
1335
            template <typename T>
1336
            inline T expm1_impl(const T v, int_type_tag)
1337
            {
1338
               return std::expm1(v);
1339
            }
1340
1341
            template <typename T>
1342
            inline T log1p_impl(const T v, real_type_tag)
1343
0
            {
1344
0
               return std::log1p(v);
1345
0
            }
Unexecuted instantiation: double exprtk::details::numeric::details::log1p_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::log1p_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1346
1347
            template <typename T>
1348
            inline T log1p_impl(const T v, int_type_tag)
1349
            {
1350
               return std::log1p(v);
1351
            }
1352
            #else
1353
            template <typename T>
1354
            inline T acosh_impl(const T v, real_type_tag)
1355
            {
1356
               return std::log(v + std::sqrt((v * v) - T(1)));
1357
            }
1358
1359
            template <typename T>
1360
            inline T asinh_impl(const T v, real_type_tag)
1361
            {
1362
               return std::log(v + std::sqrt((v * v) + T(1)));
1363
            }
1364
1365
            template <typename T>
1366
            inline T atanh_impl(const T v, real_type_tag)
1367
            {
1368
               return (std::log(T(1) + v) - std::log(T(1) - v)) / T(2);
1369
            }
1370
1371
            template <typename T>
1372
            inline T trunc_impl(const T v, real_type_tag)
1373
            {
1374
               return T(static_cast<long long>(v));
1375
            }
1376
1377
            template <typename T>
1378
            inline T expm1_impl(const T v, real_type_tag)
1379
            {
1380
               if (abs_impl(v,real_type_tag()) < T(0.00001))
1381
                  return v + (T(0.5) * v * v);
1382
               else
1383
                  return std::exp(v) - T(1);
1384
            }
1385
1386
            template <typename T>
1387
            inline T expm1_impl(const T v, int_type_tag)
1388
            {
1389
               return T(std::exp<double>(v)) - T(1);
1390
            }
1391
1392
            template <typename T>
1393
            inline T log1p_impl(const T v, real_type_tag)
1394
            {
1395
               if (v > T(-1))
1396
               {
1397
                  if (abs_impl(v,real_type_tag()) > T(0.0001))
1398
                  {
1399
                     return std::log(T(1) + v);
1400
                  }
1401
                  else
1402
                     return (T(-0.5) * v + T(1)) * v;
1403
               }
1404
1405
               return std::numeric_limits<T>::quiet_NaN();
1406
            }
1407
1408
            template <typename T>
1409
            inline T log1p_impl(const T v, int_type_tag)
1410
            {
1411
               if (v > T(-1))
1412
               {
1413
                  return std::log(T(1) + v);
1414
               }
1415
1416
               return std::numeric_limits<T>::quiet_NaN();
1417
            }
1418
            #endif
1419
1420
0
            template <typename T> inline T  acos_impl(const T v, real_type_tag) { return std::acos (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::acos_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::acos_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1421
0
            template <typename T> inline T  asin_impl(const T v, real_type_tag) { return std::asin (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::asin_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::asin_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1422
0
            template <typename T> inline T  atan_impl(const T v, real_type_tag) { return std::atan (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::atan_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::atan_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1423
0
            template <typename T> inline T  ceil_impl(const T v, real_type_tag) { return std::ceil (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::ceil_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::ceil_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1424
0
            template <typename T> inline T   cos_impl(const T v, real_type_tag) { return std::cos  (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::cos_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::cos_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1425
0
            template <typename T> inline T  cosh_impl(const T v, real_type_tag) { return std::cosh (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::cosh_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::cosh_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1426
0
            template <typename T> inline T   exp_impl(const T v, real_type_tag) { return std::exp  (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::exp_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::exp_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1427
0
            template <typename T> inline T floor_impl(const T v, real_type_tag) { return std::floor(v); }
Unexecuted instantiation: double exprtk::details::numeric::details::floor_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::floor_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1428
0
            template <typename T> inline T   log_impl(const T v, real_type_tag) { return std::log  (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::log_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::log_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1429
0
            template <typename T> inline T log10_impl(const T v, real_type_tag) { return std::log10(v); }
Unexecuted instantiation: double exprtk::details::numeric::details::log10_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::log10_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1430
0
            template <typename T> inline T  log2_impl(const T v, real_type_tag) { return std::log(v)/T(numeric::constant::log2); }
Unexecuted instantiation: double exprtk::details::numeric::details::log2_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::log2_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1431
16.3k
            template <typename T> inline T   neg_impl(const T v, real_type_tag) { return -v;            }
double exprtk::details::numeric::details::neg_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1431
14.1k
            template <typename T> inline T   neg_impl(const T v, real_type_tag) { return -v;            }
float exprtk::details::numeric::details::neg_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1431
2.22k
            template <typename T> inline T   neg_impl(const T v, real_type_tag) { return -v;            }
1432
0
            template <typename T> inline T   pos_impl(const T v, real_type_tag) { return +v;            }
Unexecuted instantiation: double exprtk::details::numeric::details::pos_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::pos_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1433
0
            template <typename T> inline T   sin_impl(const T v, real_type_tag) { return std::sin  (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::sin_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::sin_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1434
0
            template <typename T> inline T  sinh_impl(const T v, real_type_tag) { return std::sinh (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::sinh_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::sinh_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1435
0
            template <typename T> inline T  sqrt_impl(const T v, real_type_tag) { return std::sqrt (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::sqrt_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::sqrt_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1436
0
            template <typename T> inline T   tan_impl(const T v, real_type_tag) { return std::tan  (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::tan_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::tan_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1437
0
            template <typename T> inline T  tanh_impl(const T v, real_type_tag) { return std::tanh (v); }
Unexecuted instantiation: double exprtk::details::numeric::details::tanh_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::tanh_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1438
0
            template <typename T> inline T   cot_impl(const T v, real_type_tag) { return T(1) / std::tan(v); }
Unexecuted instantiation: double exprtk::details::numeric::details::cot_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::cot_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1439
0
            template <typename T> inline T   sec_impl(const T v, real_type_tag) { return T(1) / std::cos(v); }
Unexecuted instantiation: double exprtk::details::numeric::details::sec_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::sec_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1440
0
            template <typename T> inline T   csc_impl(const T v, real_type_tag) { return T(1) / std::sin(v); }
Unexecuted instantiation: double exprtk::details::numeric::details::csc_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::csc_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1441
0
            template <typename T> inline T   r2d_impl(const T v, real_type_tag) { return (v * T(numeric::constant::_180_pi)); }
Unexecuted instantiation: double exprtk::details::numeric::details::r2d_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::r2d_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1442
0
            template <typename T> inline T   d2r_impl(const T v, real_type_tag) { return (v * T(numeric::constant::pi_180));  }
Unexecuted instantiation: double exprtk::details::numeric::details::d2r_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::d2r_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1443
0
            template <typename T> inline T   d2g_impl(const T v, real_type_tag) { return (v * T(10.0/9.0)); }
Unexecuted instantiation: double exprtk::details::numeric::details::d2g_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::d2g_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1444
0
            template <typename T> inline T   g2d_impl(const T v, real_type_tag) { return (v * T(9.0/10.0)); }
Unexecuted instantiation: double exprtk::details::numeric::details::g2d_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::g2d_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1445
0
            template <typename T> inline T  notl_impl(const T v, real_type_tag) { return (std::not_equal_to<T>()(T(0),v) ? T(0) : T(1)); }
Unexecuted instantiation: double exprtk::details::numeric::details::notl_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::notl_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1446
0
            template <typename T> inline T  frac_impl(const T v, real_type_tag) { return (v - trunc_impl(v,real_type_tag())); }
Unexecuted instantiation: double exprtk::details::numeric::details::frac_impl<double>(double, exprtk::details::numeric::details::real_type_tag)
Unexecuted instantiation: float exprtk::details::numeric::details::frac_impl<float>(float, exprtk::details::numeric::details::real_type_tag)
1447
1448
2
            template <typename T> inline T   const_pi_impl(real_type_tag) { return T(numeric::constant::pi);            }
double exprtk::details::numeric::details::const_pi_impl<double>(exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1448
1
            template <typename T> inline T   const_pi_impl(real_type_tag) { return T(numeric::constant::pi);            }
float exprtk::details::numeric::details::const_pi_impl<float>(exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1448
1
            template <typename T> inline T   const_pi_impl(real_type_tag) { return T(numeric::constant::pi);            }
1449
            template <typename T> inline T    const_e_impl(real_type_tag) { return T(numeric::constant::e);             }
1450
            template <typename T> inline T const_qnan_impl(real_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1451
1452
            template <typename T> inline T   abs_impl(const T v, int_type_tag) { return ((v >= T(0)) ? v : -v); }
1453
            template <typename T> inline T   exp_impl(const T v, int_type_tag) { return std::exp  (v); }
1454
            template <typename T> inline T   log_impl(const T v, int_type_tag) { return std::log  (v); }
1455
            template <typename T> inline T log10_impl(const T v, int_type_tag) { return std::log10(v); }
1456
            template <typename T> inline T  log2_impl(const T v, int_type_tag) { return std::log(v)/T(numeric::constant::log2); }
1457
            template <typename T> inline T   neg_impl(const T v, int_type_tag) { return -v;            }
1458
            template <typename T> inline T   pos_impl(const T v, int_type_tag) { return +v;            }
1459
            template <typename T> inline T  ceil_impl(const T v, int_type_tag) { return v;             }
1460
            template <typename T> inline T floor_impl(const T v, int_type_tag) { return v;             }
1461
            template <typename T> inline T round_impl(const T v, int_type_tag) { return v;             }
1462
            template <typename T> inline T  notl_impl(const T v, int_type_tag) { return !v;            }
1463
            template <typename T> inline T  sqrt_impl(const T v, int_type_tag) { return std::sqrt (v); }
1464
            template <typename T> inline T  frac_impl(const T  , int_type_tag) { return T(0);          }
1465
            template <typename T> inline T trunc_impl(const T v, int_type_tag) { return v;             }
1466
            template <typename T> inline T  acos_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1467
            template <typename T> inline T acosh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1468
            template <typename T> inline T  asin_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1469
            template <typename T> inline T asinh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1470
            template <typename T> inline T  atan_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1471
            template <typename T> inline T atanh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1472
            template <typename T> inline T   cos_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1473
            template <typename T> inline T  cosh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1474
            template <typename T> inline T   sin_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1475
            template <typename T> inline T  sinh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1476
            template <typename T> inline T   tan_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1477
            template <typename T> inline T  tanh_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1478
            template <typename T> inline T   cot_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1479
            template <typename T> inline T   sec_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1480
            template <typename T> inline T   csc_impl(const T  , int_type_tag) { return std::numeric_limits<T>::quiet_NaN(); }
1481
1482
            template <typename T>
1483
            inline bool is_integer_impl(const T& v, real_type_tag)
1484
5.39k
            {
1485
5.39k
               return std::equal_to<T>()(T(0),std::fmod(v,T(1)));
1486
5.39k
            }
bool exprtk::details::numeric::details::is_integer_impl<double>(double const&, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1484
3.07k
            {
1485
3.07k
               return std::equal_to<T>()(T(0),std::fmod(v,T(1)));
1486
3.07k
            }
bool exprtk::details::numeric::details::is_integer_impl<float>(float const&, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1484
2.32k
            {
1485
2.32k
               return std::equal_to<T>()(T(0),std::fmod(v,T(1)));
1486
2.32k
            }
1487
1488
            template <typename T>
1489
            inline bool is_integer_impl(const T&, int_type_tag)
1490
            {
1491
               return true;
1492
            }
1493
         }
1494
1495
         template <typename Type>
1496
         struct numeric_info { enum { length = 0, size = 32, bound_length = 0, min_exp = 0, max_exp = 0 }; };
1497
1498
         template <> struct numeric_info<int        > { enum { length = 10, size = 16, bound_length = 9 }; };
1499
         template <> struct numeric_info<float      > { enum { min_exp =  -38, max_exp =  +38 }; };
1500
         template <> struct numeric_info<double     > { enum { min_exp = -308, max_exp = +308 }; };
1501
         template <> struct numeric_info<long double> { enum { min_exp = -308, max_exp = +308 }; };
1502
1503
         template <typename T>
1504
         inline int to_int32(const T v)
1505
5.35k
         {
1506
5.35k
            const typename details::number_type<T>::type num_type;
1507
5.35k
            return to_int32_impl(v, num_type);
1508
5.35k
         }
int exprtk::details::numeric::to_int32<double>(double)
Line
Count
Source
1505
3.05k
         {
1506
3.05k
            const typename details::number_type<T>::type num_type;
1507
3.05k
            return to_int32_impl(v, num_type);
1508
3.05k
         }
int exprtk::details::numeric::to_int32<float>(float)
Line
Count
Source
1505
2.30k
         {
1506
2.30k
            const typename details::number_type<T>::type num_type;
1507
2.30k
            return to_int32_impl(v, num_type);
1508
2.30k
         }
1509
1510
         template <typename T>
1511
         inline _int64_t to_int64(const T v)
1512
28
         {
1513
28
            const typename details::number_type<T>::type num_type;
1514
28
            return to_int64_impl(v, num_type);
1515
28
         }
long long exprtk::details::numeric::to_int64<double>(double)
Line
Count
Source
1512
14
         {
1513
14
            const typename details::number_type<T>::type num_type;
1514
14
            return to_int64_impl(v, num_type);
1515
14
         }
long long exprtk::details::numeric::to_int64<float>(float)
Line
Count
Source
1512
14
         {
1513
14
            const typename details::number_type<T>::type num_type;
1514
14
            return to_int64_impl(v, num_type);
1515
14
         }
1516
1517
         template <typename T>
1518
         inline _uint64_t to_uint64(const T v)
1519
0
         {
1520
0
            const typename details::number_type<T>::type num_type;
1521
0
            return to_uint64_impl(v, num_type);
1522
0
         }
Unexecuted instantiation: unsigned long long exprtk::details::numeric::to_uint64<double>(double)
Unexecuted instantiation: unsigned long long exprtk::details::numeric::to_uint64<float>(float)
1523
1524
         template <typename T>
1525
         inline bool is_nan(const T v)
1526
0
         {
1527
0
            const typename details::number_type<T>::type num_type;
1528
0
            return is_nan_impl(v, num_type);
1529
0
         }
Unexecuted instantiation: bool exprtk::details::numeric::is_nan<double>(double)
Unexecuted instantiation: bool exprtk::details::numeric::is_nan<float>(float)
1530
1531
         template <typename T>
1532
         inline T min(const T v0, const T v1)
1533
         {
1534
            const typename details::number_type<T>::type num_type;
1535
            return min_impl(v0, v1, num_type);
1536
         }
1537
1538
         template <typename T>
1539
         inline T max(const T v0, const T v1)
1540
         {
1541
            const typename details::number_type<T>::type num_type;
1542
            return max_impl(v0, v1, num_type);
1543
         }
1544
1545
         template <typename T>
1546
         inline T equal(const T v0, const T v1)
1547
0
         {
1548
0
            const typename details::number_type<T>::type num_type;
1549
0
            return equal_impl(v0, v1, num_type);
1550
0
         }
Unexecuted instantiation: double exprtk::details::numeric::equal<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::equal<float>(float, float)
1551
1552
         template <typename T>
1553
         inline T nequal(const T v0, const T v1)
1554
0
         {
1555
0
            const typename details::number_type<T>::type num_type;
1556
0
            return nequal_impl(v0, v1, num_type);
1557
0
         }
Unexecuted instantiation: double exprtk::details::numeric::nequal<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::nequal<float>(float, float)
1558
1559
         template <typename T>
1560
         inline T modulus(const T v0, const T v1)
1561
7.84k
         {
1562
7.84k
            const typename details::number_type<T>::type num_type;
1563
7.84k
            return modulus_impl(v0, v1, num_type);
1564
7.84k
         }
double exprtk::details::numeric::modulus<double>(double, double)
Line
Count
Source
1561
7.55k
         {
1562
7.55k
            const typename details::number_type<T>::type num_type;
1563
7.55k
            return modulus_impl(v0, v1, num_type);
1564
7.55k
         }
float exprtk::details::numeric::modulus<float>(float, float)
Line
Count
Source
1561
287
         {
1562
287
            const typename details::number_type<T>::type num_type;
1563
287
            return modulus_impl(v0, v1, num_type);
1564
287
         }
1565
1566
         template <typename T>
1567
         inline T pow(const T v0, const T v1)
1568
1.45k
         {
1569
1.45k
            const typename details::number_type<T>::type num_type;
1570
1.45k
            return pow_impl(v0, v1, num_type);
1571
1.45k
         }
double exprtk::details::numeric::pow<double>(double, double)
Line
Count
Source
1568
766
         {
1569
766
            const typename details::number_type<T>::type num_type;
1570
766
            return pow_impl(v0, v1, num_type);
1571
766
         }
float exprtk::details::numeric::pow<float>(float, float)
Line
Count
Source
1568
691
         {
1569
691
            const typename details::number_type<T>::type num_type;
1570
691
            return pow_impl(v0, v1, num_type);
1571
691
         }
1572
1573
         template <typename T>
1574
         inline T logn(const T v0, const T v1)
1575
0
         {
1576
0
            const typename details::number_type<T>::type num_type;
1577
0
            return logn_impl(v0, v1, num_type);
1578
0
         }
Unexecuted instantiation: double exprtk::details::numeric::logn<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::logn<float>(float, float)
1579
1580
         template <typename T>
1581
         inline T root(const T v0, const T v1)
1582
0
         {
1583
0
            const typename details::number_type<T>::type num_type;
1584
0
            return root_impl(v0, v1, num_type);
1585
0
         }
Unexecuted instantiation: double exprtk::details::numeric::root<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::root<float>(float, float)
1586
1587
         template <typename T>
1588
         inline T roundn(const T v0, const T v1)
1589
0
         {
1590
0
            const typename details::number_type<T>::type num_type;
1591
0
            return roundn_impl(v0, v1, num_type);
1592
0
         }
Unexecuted instantiation: double exprtk::details::numeric::roundn<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::roundn<float>(float, float)
1593
1594
         template <typename T>
1595
         inline T hypot(const T v0, const T v1)
1596
0
         {
1597
0
            const typename details::number_type<T>::type num_type;
1598
0
            return hypot_impl(v0, v1, num_type);
1599
0
         }
Unexecuted instantiation: double exprtk::details::numeric::hypot<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::hypot<float>(float, float)
1600
1601
         template <typename T>
1602
         inline T atan2(const T v0, const T v1)
1603
0
         {
1604
0
            const typename details::number_type<T>::type num_type;
1605
0
            return atan2_impl(v0, v1, num_type);
1606
0
         }
Unexecuted instantiation: double exprtk::details::numeric::atan2<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::atan2<float>(float, float)
1607
1608
         template <typename T>
1609
         inline T shr(const T v0, const T v1)
1610
0
         {
1611
0
            const typename details::number_type<T>::type num_type;
1612
0
            return shr_impl(v0, v1, num_type);
1613
0
         }
Unexecuted instantiation: double exprtk::details::numeric::shr<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::shr<float>(float, float)
1614
1615
         template <typename T>
1616
         inline T shl(const T v0, const T v1)
1617
0
         {
1618
0
            const typename details::number_type<T>::type num_type;
1619
0
            return shl_impl(v0, v1, num_type);
1620
0
         }
Unexecuted instantiation: double exprtk::details::numeric::shl<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::shl<float>(float, float)
1621
1622
         template <typename T>
1623
         inline T and_opr(const T v0, const T v1)
1624
0
         {
1625
0
            const typename details::number_type<T>::type num_type;
1626
0
            return and_impl(v0, v1, num_type);
1627
0
         }
Unexecuted instantiation: double exprtk::details::numeric::and_opr<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::and_opr<float>(float, float)
1628
1629
         template <typename T>
1630
         inline T nand_opr(const T v0, const T v1)
1631
6
         {
1632
6
            const typename details::number_type<T>::type num_type;
1633
6
            return nand_impl(v0, v1, num_type);
1634
6
         }
double exprtk::details::numeric::nand_opr<double>(double, double)
Line
Count
Source
1631
3
         {
1632
3
            const typename details::number_type<T>::type num_type;
1633
3
            return nand_impl(v0, v1, num_type);
1634
3
         }
float exprtk::details::numeric::nand_opr<float>(float, float)
Line
Count
Source
1631
3
         {
1632
3
            const typename details::number_type<T>::type num_type;
1633
3
            return nand_impl(v0, v1, num_type);
1634
3
         }
1635
1636
         template <typename T>
1637
         inline T or_opr(const T v0, const T v1)
1638
4
         {
1639
4
            const typename details::number_type<T>::type num_type;
1640
4
            return or_impl(v0, v1, num_type);
1641
4
         }
double exprtk::details::numeric::or_opr<double>(double, double)
Line
Count
Source
1638
2
         {
1639
2
            const typename details::number_type<T>::type num_type;
1640
2
            return or_impl(v0, v1, num_type);
1641
2
         }
float exprtk::details::numeric::or_opr<float>(float, float)
Line
Count
Source
1638
2
         {
1639
2
            const typename details::number_type<T>::type num_type;
1640
2
            return or_impl(v0, v1, num_type);
1641
2
         }
1642
1643
         template <typename T>
1644
         inline T nor_opr(const T v0, const T v1)
1645
0
         {
1646
0
            const typename details::number_type<T>::type num_type;
1647
0
            return nor_impl(v0, v1, num_type);
1648
0
         }
Unexecuted instantiation: double exprtk::details::numeric::nor_opr<double>(double, double)
Unexecuted instantiation: float exprtk::details::numeric::nor_opr<float>(float, float)
1649
1650
         template <typename T>
1651
         inline T xor_opr(const T v0, const T v1)
1652
70
         {
1653
70
            const typename details::number_type<T>::type num_type;
1654
70
            return xor_impl(v0, v1, num_type);
1655
70
         }
double exprtk::details::numeric::xor_opr<double>(double, double)
Line
Count
Source
1652
35
         {
1653
35
            const typename details::number_type<T>::type num_type;
1654
35
            return xor_impl(v0, v1, num_type);
1655
35
         }
float exprtk::details::numeric::xor_opr<float>(float, float)
Line
Count
Source
1652
35
         {
1653
35
            const typename details::number_type<T>::type num_type;
1654
35
            return xor_impl(v0, v1, num_type);
1655
35
         }
1656
1657
         template <typename T>
1658
         inline T xnor_opr(const T v0, const T v1)
1659
10
         {
1660
10
            const typename details::number_type<T>::type num_type;
1661
10
            return xnor_impl(v0, v1, num_type);
1662
10
         }
double exprtk::details::numeric::xnor_opr<double>(double, double)
Line
Count
Source
1659
5
         {
1660
5
            const typename details::number_type<T>::type num_type;
1661
5
            return xnor_impl(v0, v1, num_type);
1662
5
         }
float exprtk::details::numeric::xnor_opr<float>(float, float)
Line
Count
Source
1659
5
         {
1660
5
            const typename details::number_type<T>::type num_type;
1661
5
            return xnor_impl(v0, v1, num_type);
1662
5
         }
1663
1664
         template <typename T>
1665
         inline bool is_integer(const T v)
1666
5.39k
         {
1667
5.39k
            const typename details::number_type<T>::type num_type;
1668
5.39k
            return is_integer_impl(v, num_type);
1669
5.39k
         }
bool exprtk::details::numeric::is_integer<double>(double)
Line
Count
Source
1666
3.07k
         {
1667
3.07k
            const typename details::number_type<T>::type num_type;
1668
3.07k
            return is_integer_impl(v, num_type);
1669
3.07k
         }
bool exprtk::details::numeric::is_integer<float>(float)
Line
Count
Source
1666
2.32k
         {
1667
2.32k
            const typename details::number_type<T>::type num_type;
1668
2.32k
            return is_integer_impl(v, num_type);
1669
2.32k
         }
1670
1671
         template <typename T, unsigned int N>
1672
         struct fast_exp
1673
         {
1674
            static inline T result(T v)
1675
1.24k
            {
1676
1.24k
               unsigned int k = N;
1677
1.24k
               T l = T(1);
1678
1679
7.96k
               while (k)
1680
6.72k
               {
1681
6.72k
                  if (1 == (k % 2))
1682
3.83k
                  {
1683
3.83k
                     l *= v;
1684
3.83k
                     --k;
1685
3.83k
                  }
1686
1687
6.72k
                  v *= v;
1688
6.72k
                  k /= 2;
1689
6.72k
               }
1690
1691
1.24k
               return l;
1692
1.24k
            }
exprtk::details::numeric::fast_exp<double, 11u>::result(double)
Line
Count
Source
1675
22
            {
1676
22
               unsigned int k = N;
1677
22
               T l = T(1);
1678
1679
110
               while (k)
1680
88
               {
1681
88
                  if (1 == (k % 2))
1682
66
                  {
1683
66
                     l *= v;
1684
66
                     --k;
1685
66
                  }
1686
1687
88
                  v *= v;
1688
88
                  k /= 2;
1689
88
               }
1690
1691
22
               return l;
1692
22
            }
exprtk::details::numeric::fast_exp<double, 12u>::result(double)
Line
Count
Source
1675
17
            {
1676
17
               unsigned int k = N;
1677
17
               T l = T(1);
1678
1679
85
               while (k)
1680
68
               {
1681
68
                  if (1 == (k % 2))
1682
34
                  {
1683
34
                     l *= v;
1684
34
                     --k;
1685
34
                  }
1686
1687
68
                  v *= v;
1688
68
                  k /= 2;
1689
68
               }
1690
1691
17
               return l;
1692
17
            }
exprtk::details::numeric::fast_exp<double, 13u>::result(double)
Line
Count
Source
1675
16
            {
1676
16
               unsigned int k = N;
1677
16
               T l = T(1);
1678
1679
80
               while (k)
1680
64
               {
1681
64
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
64
                  v *= v;
1688
64
                  k /= 2;
1689
64
               }
1690
1691
16
               return l;
1692
16
            }
exprtk::details::numeric::fast_exp<double, 14u>::result(double)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
75
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
45
                  {
1683
45
                     l *= v;
1684
45
                     --k;
1685
45
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<double, 15u>::result(double)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
60
               while (k)
1680
48
               {
1681
48
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
48
                  v *= v;
1688
48
                  k /= 2;
1689
48
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<double, 16u>::result(double)
Line
Count
Source
1675
19
            {
1676
19
               unsigned int k = N;
1677
19
               T l = T(1);
1678
1679
114
               while (k)
1680
95
               {
1681
95
                  if (1 == (k % 2))
1682
19
                  {
1683
19
                     l *= v;
1684
19
                     --k;
1685
19
                  }
1686
1687
95
                  v *= v;
1688
95
                  k /= 2;
1689
95
               }
1690
1691
19
               return l;
1692
19
            }
exprtk::details::numeric::fast_exp<double, 17u>::result(double)
Line
Count
Source
1675
9
            {
1676
9
               unsigned int k = N;
1677
9
               T l = T(1);
1678
1679
54
               while (k)
1680
45
               {
1681
45
                  if (1 == (k % 2))
1682
18
                  {
1683
18
                     l *= v;
1684
18
                     --k;
1685
18
                  }
1686
1687
45
                  v *= v;
1688
45
                  k /= 2;
1689
45
               }
1690
1691
9
               return l;
1692
9
            }
exprtk::details::numeric::fast_exp<double, 18u>::result(double)
Line
Count
Source
1675
16
            {
1676
16
               unsigned int k = N;
1677
16
               T l = T(1);
1678
1679
96
               while (k)
1680
80
               {
1681
80
                  if (1 == (k % 2))
1682
32
                  {
1683
32
                     l *= v;
1684
32
                     --k;
1685
32
                  }
1686
1687
80
                  v *= v;
1688
80
                  k /= 2;
1689
80
               }
1690
1691
16
               return l;
1692
16
            }
exprtk::details::numeric::fast_exp<double, 19u>::result(double)
Line
Count
Source
1675
13
            {
1676
13
               unsigned int k = N;
1677
13
               T l = T(1);
1678
1679
78
               while (k)
1680
65
               {
1681
65
                  if (1 == (k % 2))
1682
39
                  {
1683
39
                     l *= v;
1684
39
                     --k;
1685
39
                  }
1686
1687
65
                  v *= v;
1688
65
                  k /= 2;
1689
65
               }
1690
1691
13
               return l;
1692
13
            }
exprtk::details::numeric::fast_exp<double, 20u>::result(double)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
90
               while (k)
1680
75
               {
1681
75
                  if (1 == (k % 2))
1682
30
                  {
1683
30
                     l *= v;
1684
30
                     --k;
1685
30
                  }
1686
1687
75
                  v *= v;
1688
75
                  k /= 2;
1689
75
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<double, 21u>::result(double)
Line
Count
Source
1675
17
            {
1676
17
               unsigned int k = N;
1677
17
               T l = T(1);
1678
1679
102
               while (k)
1680
85
               {
1681
85
                  if (1 == (k % 2))
1682
51
                  {
1683
51
                     l *= v;
1684
51
                     --k;
1685
51
                  }
1686
1687
85
                  v *= v;
1688
85
                  k /= 2;
1689
85
               }
1690
1691
17
               return l;
1692
17
            }
exprtk::details::numeric::fast_exp<double, 22u>::result(double)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
90
               while (k)
1680
75
               {
1681
75
                  if (1 == (k % 2))
1682
45
                  {
1683
45
                     l *= v;
1684
45
                     --k;
1685
45
                  }
1686
1687
75
                  v *= v;
1688
75
                  k /= 2;
1689
75
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<double, 23u>::result(double)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
60
               while (k)
1680
50
               {
1681
50
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
50
                  v *= v;
1688
50
                  k /= 2;
1689
50
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<double, 24u>::result(double)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
66
               while (k)
1680
55
               {
1681
55
                  if (1 == (k % 2))
1682
22
                  {
1683
22
                     l *= v;
1684
22
                     --k;
1685
22
                  }
1686
1687
55
                  v *= v;
1688
55
                  k /= 2;
1689
55
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<double, 25u>::result(double)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
66
               while (k)
1680
55
               {
1681
55
                  if (1 == (k % 2))
1682
33
                  {
1683
33
                     l *= v;
1684
33
                     --k;
1685
33
                  }
1686
1687
55
                  v *= v;
1688
55
                  k /= 2;
1689
55
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<double, 26u>::result(double)
Line
Count
Source
1675
16
            {
1676
16
               unsigned int k = N;
1677
16
               T l = T(1);
1678
1679
96
               while (k)
1680
80
               {
1681
80
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
80
                  v *= v;
1688
80
                  k /= 2;
1689
80
               }
1690
1691
16
               return l;
1692
16
            }
exprtk::details::numeric::fast_exp<double, 27u>::result(double)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
60
               while (k)
1680
50
               {
1681
50
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
50
                  v *= v;
1688
50
                  k /= 2;
1689
50
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<double, 28u>::result(double)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
66
               while (k)
1680
55
               {
1681
55
                  if (1 == (k % 2))
1682
33
                  {
1683
33
                     l *= v;
1684
33
                     --k;
1685
33
                  }
1686
1687
55
                  v *= v;
1688
55
                  k /= 2;
1689
55
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<double, 29u>::result(double)
Line
Count
Source
1675
7
            {
1676
7
               unsigned int k = N;
1677
7
               T l = T(1);
1678
1679
42
               while (k)
1680
35
               {
1681
35
                  if (1 == (k % 2))
1682
28
                  {
1683
28
                     l *= v;
1684
28
                     --k;
1685
28
                  }
1686
1687
35
                  v *= v;
1688
35
                  k /= 2;
1689
35
               }
1690
1691
7
               return l;
1692
7
            }
exprtk::details::numeric::fast_exp<double, 30u>::result(double)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
72
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<double, 31u>::result(double)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
90
               while (k)
1680
75
               {
1681
75
                  if (1 == (k % 2))
1682
75
                  {
1683
75
                     l *= v;
1684
75
                     --k;
1685
75
                  }
1686
1687
75
                  v *= v;
1688
75
                  k /= 2;
1689
75
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<double, 32u>::result(double)
Line
Count
Source
1675
14
            {
1676
14
               unsigned int k = N;
1677
14
               T l = T(1);
1678
1679
98
               while (k)
1680
84
               {
1681
84
                  if (1 == (k % 2))
1682
14
                  {
1683
14
                     l *= v;
1684
14
                     --k;
1685
14
                  }
1686
1687
84
                  v *= v;
1688
84
                  k /= 2;
1689
84
               }
1690
1691
14
               return l;
1692
14
            }
exprtk::details::numeric::fast_exp<double, 33u>::result(double)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
22
                  {
1683
22
                     l *= v;
1684
22
                     --k;
1685
22
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<double, 34u>::result(double)
Line
Count
Source
1675
14
            {
1676
14
               unsigned int k = N;
1677
14
               T l = T(1);
1678
1679
98
               while (k)
1680
84
               {
1681
84
                  if (1 == (k % 2))
1682
28
                  {
1683
28
                     l *= v;
1684
28
                     --k;
1685
28
                  }
1686
1687
84
                  v *= v;
1688
84
                  k /= 2;
1689
84
               }
1690
1691
14
               return l;
1692
14
            }
exprtk::details::numeric::fast_exp<double, 35u>::result(double)
Line
Count
Source
1675
9
            {
1676
9
               unsigned int k = N;
1677
9
               T l = T(1);
1678
1679
63
               while (k)
1680
54
               {
1681
54
                  if (1 == (k % 2))
1682
27
                  {
1683
27
                     l *= v;
1684
27
                     --k;
1685
27
                  }
1686
1687
54
                  v *= v;
1688
54
                  k /= 2;
1689
54
               }
1690
1691
9
               return l;
1692
9
            }
exprtk::details::numeric::fast_exp<double, 36u>::result(double)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
22
                  {
1683
22
                     l *= v;
1684
22
                     --k;
1685
22
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<double, 37u>::result(double)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<double, 38u>::result(double)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<double, 39u>::result(double)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
70
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<double, 40u>::result(double)
Line
Count
Source
1675
17
            {
1676
17
               unsigned int k = N;
1677
17
               T l = T(1);
1678
1679
119
               while (k)
1680
102
               {
1681
102
                  if (1 == (k % 2))
1682
34
                  {
1683
34
                     l *= v;
1684
34
                     --k;
1685
34
                  }
1686
1687
102
                  v *= v;
1688
102
                  k /= 2;
1689
102
               }
1690
1691
17
               return l;
1692
17
            }
exprtk::details::numeric::fast_exp<double, 41u>::result(double)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
33
                  {
1683
33
                     l *= v;
1684
33
                     --k;
1685
33
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<double, 42u>::result(double)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
105
               while (k)
1680
90
               {
1681
90
                  if (1 == (k % 2))
1682
45
                  {
1683
45
                     l *= v;
1684
45
                     --k;
1685
45
                  }
1686
1687
90
                  v *= v;
1688
90
                  k /= 2;
1689
90
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<double, 43u>::result(double)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<double, 44u>::result(double)
Line
Count
Source
1675
19
            {
1676
19
               unsigned int k = N;
1677
19
               T l = T(1);
1678
1679
133
               while (k)
1680
114
               {
1681
114
                  if (1 == (k % 2))
1682
57
                  {
1683
57
                     l *= v;
1684
57
                     --k;
1685
57
                  }
1686
1687
114
                  v *= v;
1688
114
                  k /= 2;
1689
114
               }
1690
1691
19
               return l;
1692
19
            }
exprtk::details::numeric::fast_exp<double, 45u>::result(double)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
70
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<double, 46u>::result(double)
Line
Count
Source
1675
9
            {
1676
9
               unsigned int k = N;
1677
9
               T l = T(1);
1678
1679
63
               while (k)
1680
54
               {
1681
54
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
54
                  v *= v;
1688
54
                  k /= 2;
1689
54
               }
1690
1691
9
               return l;
1692
9
            }
exprtk::details::numeric::fast_exp<double, 47u>::result(double)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
60
                  {
1683
60
                     l *= v;
1684
60
                     --k;
1685
60
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<double, 48u>::result(double)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
22
                  {
1683
22
                     l *= v;
1684
22
                     --k;
1685
22
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<double, 49u>::result(double)
Line
Count
Source
1675
5
            {
1676
5
               unsigned int k = N;
1677
5
               T l = T(1);
1678
1679
35
               while (k)
1680
30
               {
1681
30
                  if (1 == (k % 2))
1682
15
                  {
1683
15
                     l *= v;
1684
15
                     --k;
1685
15
                  }
1686
1687
30
                  v *= v;
1688
30
                  k /= 2;
1689
30
               }
1690
1691
5
               return l;
1692
5
            }
exprtk::details::numeric::fast_exp<double, 50u>::result(double)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<double, 51u>::result(double)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
70
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<double, 52u>::result(double)
Line
Count
Source
1675
16
            {
1676
16
               unsigned int k = N;
1677
16
               T l = T(1);
1678
1679
112
               while (k)
1680
96
               {
1681
96
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
96
                  v *= v;
1688
96
                  k /= 2;
1689
96
               }
1690
1691
16
               return l;
1692
16
            }
exprtk::details::numeric::fast_exp<double, 53u>::result(double)
Line
Count
Source
1675
9
            {
1676
9
               unsigned int k = N;
1677
9
               T l = T(1);
1678
1679
63
               while (k)
1680
54
               {
1681
54
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
54
                  v *= v;
1688
54
                  k /= 2;
1689
54
               }
1690
1691
9
               return l;
1692
9
            }
exprtk::details::numeric::fast_exp<double, 54u>::result(double)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<double, 55u>::result(double)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
70
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
50
                  {
1683
50
                     l *= v;
1684
50
                     --k;
1685
50
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<double, 56u>::result(double)
Line
Count
Source
1675
8
            {
1676
8
               unsigned int k = N;
1677
8
               T l = T(1);
1678
1679
56
               while (k)
1680
48
               {
1681
48
                  if (1 == (k % 2))
1682
24
                  {
1683
24
                     l *= v;
1684
24
                     --k;
1685
24
                  }
1686
1687
48
                  v *= v;
1688
48
                  k /= 2;
1689
48
               }
1690
1691
8
               return l;
1692
8
            }
exprtk::details::numeric::fast_exp<double, 57u>::result(double)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
44
                  {
1683
44
                     l *= v;
1684
44
                     --k;
1685
44
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<double, 58u>::result(double)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
44
                  {
1683
44
                     l *= v;
1684
44
                     --k;
1685
44
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<double, 59u>::result(double)
Line
Count
Source
1675
8
            {
1676
8
               unsigned int k = N;
1677
8
               T l = T(1);
1678
1679
56
               while (k)
1680
48
               {
1681
48
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
48
                  v *= v;
1688
48
                  k /= 2;
1689
48
               }
1690
1691
8
               return l;
1692
8
            }
exprtk::details::numeric::fast_exp<double, 60u>::result(double)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<float, 11u>::result(float)
Line
Count
Source
1675
22
            {
1676
22
               unsigned int k = N;
1677
22
               T l = T(1);
1678
1679
110
               while (k)
1680
88
               {
1681
88
                  if (1 == (k % 2))
1682
66
                  {
1683
66
                     l *= v;
1684
66
                     --k;
1685
66
                  }
1686
1687
88
                  v *= v;
1688
88
                  k /= 2;
1689
88
               }
1690
1691
22
               return l;
1692
22
            }
exprtk::details::numeric::fast_exp<float, 12u>::result(float)
Line
Count
Source
1675
17
            {
1676
17
               unsigned int k = N;
1677
17
               T l = T(1);
1678
1679
85
               while (k)
1680
68
               {
1681
68
                  if (1 == (k % 2))
1682
34
                  {
1683
34
                     l *= v;
1684
34
                     --k;
1685
34
                  }
1686
1687
68
                  v *= v;
1688
68
                  k /= 2;
1689
68
               }
1690
1691
17
               return l;
1692
17
            }
exprtk::details::numeric::fast_exp<float, 13u>::result(float)
Line
Count
Source
1675
16
            {
1676
16
               unsigned int k = N;
1677
16
               T l = T(1);
1678
1679
80
               while (k)
1680
64
               {
1681
64
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
64
                  v *= v;
1688
64
                  k /= 2;
1689
64
               }
1690
1691
16
               return l;
1692
16
            }
exprtk::details::numeric::fast_exp<float, 14u>::result(float)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
75
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
45
                  {
1683
45
                     l *= v;
1684
45
                     --k;
1685
45
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<float, 15u>::result(float)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
60
               while (k)
1680
48
               {
1681
48
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
48
                  v *= v;
1688
48
                  k /= 2;
1689
48
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<float, 16u>::result(float)
Line
Count
Source
1675
19
            {
1676
19
               unsigned int k = N;
1677
19
               T l = T(1);
1678
1679
114
               while (k)
1680
95
               {
1681
95
                  if (1 == (k % 2))
1682
19
                  {
1683
19
                     l *= v;
1684
19
                     --k;
1685
19
                  }
1686
1687
95
                  v *= v;
1688
95
                  k /= 2;
1689
95
               }
1690
1691
19
               return l;
1692
19
            }
exprtk::details::numeric::fast_exp<float, 17u>::result(float)
Line
Count
Source
1675
9
            {
1676
9
               unsigned int k = N;
1677
9
               T l = T(1);
1678
1679
54
               while (k)
1680
45
               {
1681
45
                  if (1 == (k % 2))
1682
18
                  {
1683
18
                     l *= v;
1684
18
                     --k;
1685
18
                  }
1686
1687
45
                  v *= v;
1688
45
                  k /= 2;
1689
45
               }
1690
1691
9
               return l;
1692
9
            }
exprtk::details::numeric::fast_exp<float, 18u>::result(float)
Line
Count
Source
1675
16
            {
1676
16
               unsigned int k = N;
1677
16
               T l = T(1);
1678
1679
96
               while (k)
1680
80
               {
1681
80
                  if (1 == (k % 2))
1682
32
                  {
1683
32
                     l *= v;
1684
32
                     --k;
1685
32
                  }
1686
1687
80
                  v *= v;
1688
80
                  k /= 2;
1689
80
               }
1690
1691
16
               return l;
1692
16
            }
exprtk::details::numeric::fast_exp<float, 19u>::result(float)
Line
Count
Source
1675
13
            {
1676
13
               unsigned int k = N;
1677
13
               T l = T(1);
1678
1679
78
               while (k)
1680
65
               {
1681
65
                  if (1 == (k % 2))
1682
39
                  {
1683
39
                     l *= v;
1684
39
                     --k;
1685
39
                  }
1686
1687
65
                  v *= v;
1688
65
                  k /= 2;
1689
65
               }
1690
1691
13
               return l;
1692
13
            }
exprtk::details::numeric::fast_exp<float, 20u>::result(float)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
90
               while (k)
1680
75
               {
1681
75
                  if (1 == (k % 2))
1682
30
                  {
1683
30
                     l *= v;
1684
30
                     --k;
1685
30
                  }
1686
1687
75
                  v *= v;
1688
75
                  k /= 2;
1689
75
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<float, 21u>::result(float)
Line
Count
Source
1675
17
            {
1676
17
               unsigned int k = N;
1677
17
               T l = T(1);
1678
1679
102
               while (k)
1680
85
               {
1681
85
                  if (1 == (k % 2))
1682
51
                  {
1683
51
                     l *= v;
1684
51
                     --k;
1685
51
                  }
1686
1687
85
                  v *= v;
1688
85
                  k /= 2;
1689
85
               }
1690
1691
17
               return l;
1692
17
            }
exprtk::details::numeric::fast_exp<float, 22u>::result(float)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
90
               while (k)
1680
75
               {
1681
75
                  if (1 == (k % 2))
1682
45
                  {
1683
45
                     l *= v;
1684
45
                     --k;
1685
45
                  }
1686
1687
75
                  v *= v;
1688
75
                  k /= 2;
1689
75
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<float, 23u>::result(float)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
60
               while (k)
1680
50
               {
1681
50
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
50
                  v *= v;
1688
50
                  k /= 2;
1689
50
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<float, 24u>::result(float)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
66
               while (k)
1680
55
               {
1681
55
                  if (1 == (k % 2))
1682
22
                  {
1683
22
                     l *= v;
1684
22
                     --k;
1685
22
                  }
1686
1687
55
                  v *= v;
1688
55
                  k /= 2;
1689
55
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<float, 25u>::result(float)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
66
               while (k)
1680
55
               {
1681
55
                  if (1 == (k % 2))
1682
33
                  {
1683
33
                     l *= v;
1684
33
                     --k;
1685
33
                  }
1686
1687
55
                  v *= v;
1688
55
                  k /= 2;
1689
55
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<float, 26u>::result(float)
Line
Count
Source
1675
16
            {
1676
16
               unsigned int k = N;
1677
16
               T l = T(1);
1678
1679
96
               while (k)
1680
80
               {
1681
80
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
80
                  v *= v;
1688
80
                  k /= 2;
1689
80
               }
1690
1691
16
               return l;
1692
16
            }
exprtk::details::numeric::fast_exp<float, 27u>::result(float)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
60
               while (k)
1680
50
               {
1681
50
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
50
                  v *= v;
1688
50
                  k /= 2;
1689
50
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<float, 28u>::result(float)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
66
               while (k)
1680
55
               {
1681
55
                  if (1 == (k % 2))
1682
33
                  {
1683
33
                     l *= v;
1684
33
                     --k;
1685
33
                  }
1686
1687
55
                  v *= v;
1688
55
                  k /= 2;
1689
55
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<float, 29u>::result(float)
Line
Count
Source
1675
7
            {
1676
7
               unsigned int k = N;
1677
7
               T l = T(1);
1678
1679
42
               while (k)
1680
35
               {
1681
35
                  if (1 == (k % 2))
1682
28
                  {
1683
28
                     l *= v;
1684
28
                     --k;
1685
28
                  }
1686
1687
35
                  v *= v;
1688
35
                  k /= 2;
1689
35
               }
1690
1691
7
               return l;
1692
7
            }
exprtk::details::numeric::fast_exp<float, 30u>::result(float)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
72
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<float, 31u>::result(float)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
90
               while (k)
1680
75
               {
1681
75
                  if (1 == (k % 2))
1682
75
                  {
1683
75
                     l *= v;
1684
75
                     --k;
1685
75
                  }
1686
1687
75
                  v *= v;
1688
75
                  k /= 2;
1689
75
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<float, 32u>::result(float)
Line
Count
Source
1675
14
            {
1676
14
               unsigned int k = N;
1677
14
               T l = T(1);
1678
1679
98
               while (k)
1680
84
               {
1681
84
                  if (1 == (k % 2))
1682
14
                  {
1683
14
                     l *= v;
1684
14
                     --k;
1685
14
                  }
1686
1687
84
                  v *= v;
1688
84
                  k /= 2;
1689
84
               }
1690
1691
14
               return l;
1692
14
            }
exprtk::details::numeric::fast_exp<float, 33u>::result(float)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
22
                  {
1683
22
                     l *= v;
1684
22
                     --k;
1685
22
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<float, 34u>::result(float)
Line
Count
Source
1675
14
            {
1676
14
               unsigned int k = N;
1677
14
               T l = T(1);
1678
1679
98
               while (k)
1680
84
               {
1681
84
                  if (1 == (k % 2))
1682
28
                  {
1683
28
                     l *= v;
1684
28
                     --k;
1685
28
                  }
1686
1687
84
                  v *= v;
1688
84
                  k /= 2;
1689
84
               }
1690
1691
14
               return l;
1692
14
            }
exprtk::details::numeric::fast_exp<float, 35u>::result(float)
Line
Count
Source
1675
9
            {
1676
9
               unsigned int k = N;
1677
9
               T l = T(1);
1678
1679
63
               while (k)
1680
54
               {
1681
54
                  if (1 == (k % 2))
1682
27
                  {
1683
27
                     l *= v;
1684
27
                     --k;
1685
27
                  }
1686
1687
54
                  v *= v;
1688
54
                  k /= 2;
1689
54
               }
1690
1691
9
               return l;
1692
9
            }
exprtk::details::numeric::fast_exp<float, 36u>::result(float)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
22
                  {
1683
22
                     l *= v;
1684
22
                     --k;
1685
22
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<float, 37u>::result(float)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<float, 38u>::result(float)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<float, 39u>::result(float)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
70
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<float, 40u>::result(float)
Line
Count
Source
1675
17
            {
1676
17
               unsigned int k = N;
1677
17
               T l = T(1);
1678
1679
119
               while (k)
1680
102
               {
1681
102
                  if (1 == (k % 2))
1682
34
                  {
1683
34
                     l *= v;
1684
34
                     --k;
1685
34
                  }
1686
1687
102
                  v *= v;
1688
102
                  k /= 2;
1689
102
               }
1690
1691
17
               return l;
1692
17
            }
exprtk::details::numeric::fast_exp<float, 41u>::result(float)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
33
                  {
1683
33
                     l *= v;
1684
33
                     --k;
1685
33
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<float, 42u>::result(float)
Line
Count
Source
1675
15
            {
1676
15
               unsigned int k = N;
1677
15
               T l = T(1);
1678
1679
105
               while (k)
1680
90
               {
1681
90
                  if (1 == (k % 2))
1682
45
                  {
1683
45
                     l *= v;
1684
45
                     --k;
1685
45
                  }
1686
1687
90
                  v *= v;
1688
90
                  k /= 2;
1689
90
               }
1690
1691
15
               return l;
1692
15
            }
exprtk::details::numeric::fast_exp<float, 43u>::result(float)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<float, 44u>::result(float)
Line
Count
Source
1675
19
            {
1676
19
               unsigned int k = N;
1677
19
               T l = T(1);
1678
1679
133
               while (k)
1680
114
               {
1681
114
                  if (1 == (k % 2))
1682
57
                  {
1683
57
                     l *= v;
1684
57
                     --k;
1685
57
                  }
1686
1687
114
                  v *= v;
1688
114
                  k /= 2;
1689
114
               }
1690
1691
19
               return l;
1692
19
            }
exprtk::details::numeric::fast_exp<float, 45u>::result(float)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
70
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<float, 46u>::result(float)
Line
Count
Source
1675
9
            {
1676
9
               unsigned int k = N;
1677
9
               T l = T(1);
1678
1679
63
               while (k)
1680
54
               {
1681
54
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
54
                  v *= v;
1688
54
                  k /= 2;
1689
54
               }
1690
1691
9
               return l;
1692
9
            }
exprtk::details::numeric::fast_exp<float, 47u>::result(float)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
60
                  {
1683
60
                     l *= v;
1684
60
                     --k;
1685
60
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<float, 48u>::result(float)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
22
                  {
1683
22
                     l *= v;
1684
22
                     --k;
1685
22
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<float, 49u>::result(float)
Line
Count
Source
1675
5
            {
1676
5
               unsigned int k = N;
1677
5
               T l = T(1);
1678
1679
35
               while (k)
1680
30
               {
1681
30
                  if (1 == (k % 2))
1682
15
                  {
1683
15
                     l *= v;
1684
15
                     --k;
1685
15
                  }
1686
1687
30
                  v *= v;
1688
30
                  k /= 2;
1689
30
               }
1690
1691
5
               return l;
1692
5
            }
exprtk::details::numeric::fast_exp<float, 50u>::result(float)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<float, 51u>::result(float)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
70
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<float, 52u>::result(float)
Line
Count
Source
1675
16
            {
1676
16
               unsigned int k = N;
1677
16
               T l = T(1);
1678
1679
112
               while (k)
1680
96
               {
1681
96
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
96
                  v *= v;
1688
96
                  k /= 2;
1689
96
               }
1690
1691
16
               return l;
1692
16
            }
exprtk::details::numeric::fast_exp<float, 53u>::result(float)
Line
Count
Source
1675
9
            {
1676
9
               unsigned int k = N;
1677
9
               T l = T(1);
1678
1679
63
               while (k)
1680
54
               {
1681
54
                  if (1 == (k % 2))
1682
36
                  {
1683
36
                     l *= v;
1684
36
                     --k;
1685
36
                  }
1686
1687
54
                  v *= v;
1688
54
                  k /= 2;
1689
54
               }
1690
1691
9
               return l;
1692
9
            }
exprtk::details::numeric::fast_exp<float, 54u>::result(float)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
exprtk::details::numeric::fast_exp<float, 55u>::result(float)
Line
Count
Source
1675
10
            {
1676
10
               unsigned int k = N;
1677
10
               T l = T(1);
1678
1679
70
               while (k)
1680
60
               {
1681
60
                  if (1 == (k % 2))
1682
50
                  {
1683
50
                     l *= v;
1684
50
                     --k;
1685
50
                  }
1686
1687
60
                  v *= v;
1688
60
                  k /= 2;
1689
60
               }
1690
1691
10
               return l;
1692
10
            }
exprtk::details::numeric::fast_exp<float, 56u>::result(float)
Line
Count
Source
1675
8
            {
1676
8
               unsigned int k = N;
1677
8
               T l = T(1);
1678
1679
56
               while (k)
1680
48
               {
1681
48
                  if (1 == (k % 2))
1682
24
                  {
1683
24
                     l *= v;
1684
24
                     --k;
1685
24
                  }
1686
1687
48
                  v *= v;
1688
48
                  k /= 2;
1689
48
               }
1690
1691
8
               return l;
1692
8
            }
exprtk::details::numeric::fast_exp<float, 57u>::result(float)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
44
                  {
1683
44
                     l *= v;
1684
44
                     --k;
1685
44
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<float, 58u>::result(float)
Line
Count
Source
1675
11
            {
1676
11
               unsigned int k = N;
1677
11
               T l = T(1);
1678
1679
77
               while (k)
1680
66
               {
1681
66
                  if (1 == (k % 2))
1682
44
                  {
1683
44
                     l *= v;
1684
44
                     --k;
1685
44
                  }
1686
1687
66
                  v *= v;
1688
66
                  k /= 2;
1689
66
               }
1690
1691
11
               return l;
1692
11
            }
exprtk::details::numeric::fast_exp<float, 59u>::result(float)
Line
Count
Source
1675
8
            {
1676
8
               unsigned int k = N;
1677
8
               T l = T(1);
1678
1679
56
               while (k)
1680
48
               {
1681
48
                  if (1 == (k % 2))
1682
40
                  {
1683
40
                     l *= v;
1684
40
                     --k;
1685
40
                  }
1686
1687
48
                  v *= v;
1688
48
                  k /= 2;
1689
48
               }
1690
1691
8
               return l;
1692
8
            }
exprtk::details::numeric::fast_exp<float, 60u>::result(float)
Line
Count
Source
1675
12
            {
1676
12
               unsigned int k = N;
1677
12
               T l = T(1);
1678
1679
84
               while (k)
1680
72
               {
1681
72
                  if (1 == (k % 2))
1682
48
                  {
1683
48
                     l *= v;
1684
48
                     --k;
1685
48
                  }
1686
1687
72
                  v *= v;
1688
72
                  k /= 2;
1689
72
               }
1690
1691
12
               return l;
1692
12
            }
1693
         };
1694
1695
38
         template <typename T> struct fast_exp<T,10> { static inline T result(const T v) { T v_5 = fast_exp<T,5>::result(v); return v_5 * v_5; } };
exprtk::details::numeric::fast_exp<double, 10u>::result(double)
Line
Count
Source
1695
19
         template <typename T> struct fast_exp<T,10> { static inline T result(const T v) { T v_5 = fast_exp<T,5>::result(v); return v_5 * v_5; } };
exprtk::details::numeric::fast_exp<float, 10u>::result(float)
Line
Count
Source
1695
19
         template <typename T> struct fast_exp<T,10> { static inline T result(const T v) { T v_5 = fast_exp<T,5>::result(v); return v_5 * v_5; } };
1696
66
         template <typename T> struct fast_exp<T, 9> { static inline T result(const T v) { return fast_exp<T,8>::result(v) * v; } };
exprtk::details::numeric::fast_exp<double, 9u>::result(double)
Line
Count
Source
1696
33
         template <typename T> struct fast_exp<T, 9> { static inline T result(const T v) { return fast_exp<T,8>::result(v) * v; } };
exprtk::details::numeric::fast_exp<float, 9u>::result(float)
Line
Count
Source
1696
33
         template <typename T> struct fast_exp<T, 9> { static inline T result(const T v) { return fast_exp<T,8>::result(v) * v; } };
1697
148
         template <typename T> struct fast_exp<T, 8> { static inline T result(const T v) { T v_4 = fast_exp<T,4>::result(v); return v_4 * v_4; } };
exprtk::details::numeric::fast_exp<double, 8u>::result(double)
Line
Count
Source
1697
74
         template <typename T> struct fast_exp<T, 8> { static inline T result(const T v) { T v_4 = fast_exp<T,4>::result(v); return v_4 * v_4; } };
exprtk::details::numeric::fast_exp<float, 8u>::result(float)
Line
Count
Source
1697
74
         template <typename T> struct fast_exp<T, 8> { static inline T result(const T v) { T v_4 = fast_exp<T,4>::result(v); return v_4 * v_4; } };
1698
62
         template <typename T> struct fast_exp<T, 7> { static inline T result(const T v) { return fast_exp<T,6>::result(v) * v; } };
exprtk::details::numeric::fast_exp<double, 7u>::result(double)
Line
Count
Source
1698
31
         template <typename T> struct fast_exp<T, 7> { static inline T result(const T v) { return fast_exp<T,6>::result(v) * v; } };
exprtk::details::numeric::fast_exp<float, 7u>::result(float)
Line
Count
Source
1698
31
         template <typename T> struct fast_exp<T, 7> { static inline T result(const T v) { return fast_exp<T,6>::result(v) * v; } };
1699
130
         template <typename T> struct fast_exp<T, 6> { static inline T result(const T v) { T v_3 = fast_exp<T,3>::result(v); return v_3 * v_3; } };
exprtk::details::numeric::fast_exp<double, 6u>::result(double)
Line
Count
Source
1699
65
         template <typename T> struct fast_exp<T, 6> { static inline T result(const T v) { T v_3 = fast_exp<T,3>::result(v); return v_3 * v_3; } };
exprtk::details::numeric::fast_exp<float, 6u>::result(float)
Line
Count
Source
1699
65
         template <typename T> struct fast_exp<T, 6> { static inline T result(const T v) { T v_3 = fast_exp<T,3>::result(v); return v_3 * v_3; } };
1700
132
         template <typename T> struct fast_exp<T, 5> { static inline T result(const T v) { return fast_exp<T,4>::result(v) * v; } };
exprtk::details::numeric::fast_exp<double, 5u>::result(double)
Line
Count
Source
1700
66
         template <typename T> struct fast_exp<T, 5> { static inline T result(const T v) { return fast_exp<T,4>::result(v) * v; } };
exprtk::details::numeric::fast_exp<float, 5u>::result(float)
Line
Count
Source
1700
66
         template <typename T> struct fast_exp<T, 5> { static inline T result(const T v) { return fast_exp<T,4>::result(v) * v; } };
1701
376
         template <typename T> struct fast_exp<T, 4> { static inline T result(const T v) { T v_2 = v * v; return v_2 * v_2; } };
exprtk::details::numeric::fast_exp<double, 4u>::result(double)
Line
Count
Source
1701
188
         template <typename T> struct fast_exp<T, 4> { static inline T result(const T v) { T v_2 = v * v; return v_2 * v_2; } };
exprtk::details::numeric::fast_exp<float, 4u>::result(float)
Line
Count
Source
1701
188
         template <typename T> struct fast_exp<T, 4> { static inline T result(const T v) { T v_2 = v * v; return v_2 * v_2; } };
1702
212
         template <typename T> struct fast_exp<T, 3> { static inline T result(const T v) { return v * v * v; } };
exprtk::details::numeric::fast_exp<double, 3u>::result(double)
Line
Count
Source
1702
106
         template <typename T> struct fast_exp<T, 3> { static inline T result(const T v) { return v * v * v; } };
exprtk::details::numeric::fast_exp<float, 3u>::result(float)
Line
Count
Source
1702
106
         template <typename T> struct fast_exp<T, 3> { static inline T result(const T v) { return v * v * v; } };
1703
36
         template <typename T> struct fast_exp<T, 2> { static inline T result(const T v) { return v * v;     } };
exprtk::details::numeric::fast_exp<double, 2u>::result(double)
Line
Count
Source
1703
18
         template <typename T> struct fast_exp<T, 2> { static inline T result(const T v) { return v * v;     } };
exprtk::details::numeric::fast_exp<float, 2u>::result(float)
Line
Count
Source
1703
18
         template <typename T> struct fast_exp<T, 2> { static inline T result(const T v) { return v * v;     } };
1704
28
         template <typename T> struct fast_exp<T, 1> { static inline T result(const T v) { return v;         } };
exprtk::details::numeric::fast_exp<double, 1u>::result(double)
Line
Count
Source
1704
14
         template <typename T> struct fast_exp<T, 1> { static inline T result(const T v) { return v;         } };
exprtk::details::numeric::fast_exp<float, 1u>::result(float)
Line
Count
Source
1704
14
         template <typename T> struct fast_exp<T, 1> { static inline T result(const T v) { return v;         } };
1705
         template <typename T> struct fast_exp<T, 0> { static inline T result(const T  ) { return T(1);      } };
1706
1707
         #define exprtk_define_unary_function(FunctionName)        \
1708
         template <typename T>                                     \
1709
         inline T FunctionName (const T v)                         \
1710
27.4k
         {                                                         \
1711
27.4k
            const typename details::number_type<T>::type num_type; \
1712
27.4k
            return  FunctionName##_impl(v,num_type);               \
1713
27.4k
         }                                                         \
double exprtk::details::numeric::abs<double>(double)
Line
Count
Source
1710
6.33k
         {                                                         \
1711
6.33k
            const typename details::number_type<T>::type num_type; \
1712
6.33k
            return  FunctionName##_impl(v,num_type);               \
1713
6.33k
         }                                                         \
Unexecuted instantiation: double exprtk::details::numeric::acos<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::acosh<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::asin<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::asinh<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::atanh<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::ceil<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::cos<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::cosh<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::exp<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::expm1<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::floor<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::log<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::log10<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::log2<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::log1p<double>(double)
double exprtk::details::numeric::neg<double>(double)
Line
Count
Source
1710
14.1k
         {                                                         \
1711
14.1k
            const typename details::number_type<T>::type num_type; \
1712
14.1k
            return  FunctionName##_impl(v,num_type);               \
1713
14.1k
         }                                                         \
Unexecuted instantiation: double exprtk::details::numeric::pos<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::round<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::sin<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::sinc<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::sinh<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::sqrt<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::tan<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::tanh<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::cot<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::sec<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::csc<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::r2d<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::d2r<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::d2g<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::g2d<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::notl<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::sgn<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::erf<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::erfc<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::ncdf<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::frac<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::trunc<double>(double)
Unexecuted instantiation: double exprtk::details::numeric::atan<double>(double)
float exprtk::details::numeric::abs<float>(float)
Line
Count
Source
1710
4.74k
         {                                                         \
1711
4.74k
            const typename details::number_type<T>::type num_type; \
1712
4.74k
            return  FunctionName##_impl(v,num_type);               \
1713
4.74k
         }                                                         \
Unexecuted instantiation: float exprtk::details::numeric::acos<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::acosh<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::asin<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::asinh<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::atanh<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::ceil<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::cos<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::cosh<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::exp<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::expm1<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::floor<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::log<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::log10<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::log2<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::log1p<float>(float)
float exprtk::details::numeric::neg<float>(float)
Line
Count
Source
1710
2.22k
         {                                                         \
1711
2.22k
            const typename details::number_type<T>::type num_type; \
1712
2.22k
            return  FunctionName##_impl(v,num_type);               \
1713
2.22k
         }                                                         \
Unexecuted instantiation: float exprtk::details::numeric::pos<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::round<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::sin<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::sinc<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::sinh<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::sqrt<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::tan<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::tanh<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::cot<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::sec<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::csc<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::r2d<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::d2r<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::d2g<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::g2d<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::notl<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::sgn<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::erf<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::erfc<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::ncdf<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::frac<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::trunc<float>(float)
Unexecuted instantiation: float exprtk::details::numeric::atan<float>(float)
1714
1715
         exprtk_define_unary_function(abs  )
1716
         exprtk_define_unary_function(acos )
1717
         exprtk_define_unary_function(acosh)
1718
         exprtk_define_unary_function(asin )
1719
         exprtk_define_unary_function(asinh)
1720
         exprtk_define_unary_function(atan )
1721
         exprtk_define_unary_function(atanh)
1722
         exprtk_define_unary_function(ceil )
1723
         exprtk_define_unary_function(cos  )
1724
         exprtk_define_unary_function(cosh )
1725
         exprtk_define_unary_function(exp  )
1726
         exprtk_define_unary_function(expm1)
1727
         exprtk_define_unary_function(floor)
1728
         exprtk_define_unary_function(log  )
1729
         exprtk_define_unary_function(log10)
1730
         exprtk_define_unary_function(log2 )
1731
         exprtk_define_unary_function(log1p)
1732
         exprtk_define_unary_function(neg  )
1733
         exprtk_define_unary_function(pos  )
1734
         exprtk_define_unary_function(round)
1735
         exprtk_define_unary_function(sin  )
1736
         exprtk_define_unary_function(sinc )
1737
         exprtk_define_unary_function(sinh )
1738
         exprtk_define_unary_function(sqrt )
1739
         exprtk_define_unary_function(tan  )
1740
         exprtk_define_unary_function(tanh )
1741
         exprtk_define_unary_function(cot  )
1742
         exprtk_define_unary_function(sec  )
1743
         exprtk_define_unary_function(csc  )
1744
         exprtk_define_unary_function(r2d  )
1745
         exprtk_define_unary_function(d2r  )
1746
         exprtk_define_unary_function(d2g  )
1747
         exprtk_define_unary_function(g2d  )
1748
         exprtk_define_unary_function(notl )
1749
         exprtk_define_unary_function(sgn  )
1750
         exprtk_define_unary_function(erf  )
1751
         exprtk_define_unary_function(erfc )
1752
         exprtk_define_unary_function(ncdf )
1753
         exprtk_define_unary_function(frac )
1754
         exprtk_define_unary_function(trunc)
1755
         #undef exprtk_define_unary_function
1756
      }
1757
1758
      template <typename T>
1759
      inline T compute_pow10(T d, const int exponent)
1760
1.27k
      {
1761
1.27k
         static const double fract10[] =
1762
1.27k
         {
1763
1.27k
            0.0,
1764
1.27k
            1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004, 1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008, 1.0E+009, 1.0E+010,
1765
1.27k
            1.0E+011, 1.0E+012, 1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016, 1.0E+017, 1.0E+018, 1.0E+019, 1.0E+020,
1766
1.27k
            1.0E+021, 1.0E+022, 1.0E+023, 1.0E+024, 1.0E+025, 1.0E+026, 1.0E+027, 1.0E+028, 1.0E+029, 1.0E+030,
1767
1.27k
            1.0E+031, 1.0E+032, 1.0E+033, 1.0E+034, 1.0E+035, 1.0E+036, 1.0E+037, 1.0E+038, 1.0E+039, 1.0E+040,
1768
1.27k
            1.0E+041, 1.0E+042, 1.0E+043, 1.0E+044, 1.0E+045, 1.0E+046, 1.0E+047, 1.0E+048, 1.0E+049, 1.0E+050,
1769
1.27k
            1.0E+051, 1.0E+052, 1.0E+053, 1.0E+054, 1.0E+055, 1.0E+056, 1.0E+057, 1.0E+058, 1.0E+059, 1.0E+060,
1770
1.27k
            1.0E+061, 1.0E+062, 1.0E+063, 1.0E+064, 1.0E+065, 1.0E+066, 1.0E+067, 1.0E+068, 1.0E+069, 1.0E+070,
1771
1.27k
            1.0E+071, 1.0E+072, 1.0E+073, 1.0E+074, 1.0E+075, 1.0E+076, 1.0E+077, 1.0E+078, 1.0E+079, 1.0E+080,
1772
1.27k
            1.0E+081, 1.0E+082, 1.0E+083, 1.0E+084, 1.0E+085, 1.0E+086, 1.0E+087, 1.0E+088, 1.0E+089, 1.0E+090,
1773
1.27k
            1.0E+091, 1.0E+092, 1.0E+093, 1.0E+094, 1.0E+095, 1.0E+096, 1.0E+097, 1.0E+098, 1.0E+099, 1.0E+100,
1774
1.27k
            1.0E+101, 1.0E+102, 1.0E+103, 1.0E+104, 1.0E+105, 1.0E+106, 1.0E+107, 1.0E+108, 1.0E+109, 1.0E+110,
1775
1.27k
            1.0E+111, 1.0E+112, 1.0E+113, 1.0E+114, 1.0E+115, 1.0E+116, 1.0E+117, 1.0E+118, 1.0E+119, 1.0E+120,
1776
1.27k
            1.0E+121, 1.0E+122, 1.0E+123, 1.0E+124, 1.0E+125, 1.0E+126, 1.0E+127, 1.0E+128, 1.0E+129, 1.0E+130,
1777
1.27k
            1.0E+131, 1.0E+132, 1.0E+133, 1.0E+134, 1.0E+135, 1.0E+136, 1.0E+137, 1.0E+138, 1.0E+139, 1.0E+140,
1778
1.27k
            1.0E+141, 1.0E+142, 1.0E+143, 1.0E+144, 1.0E+145, 1.0E+146, 1.0E+147, 1.0E+148, 1.0E+149, 1.0E+150,
1779
1.27k
            1.0E+151, 1.0E+152, 1.0E+153, 1.0E+154, 1.0E+155, 1.0E+156, 1.0E+157, 1.0E+158, 1.0E+159, 1.0E+160,
1780
1.27k
            1.0E+161, 1.0E+162, 1.0E+163, 1.0E+164, 1.0E+165, 1.0E+166, 1.0E+167, 1.0E+168, 1.0E+169, 1.0E+170,
1781
1.27k
            1.0E+171, 1.0E+172, 1.0E+173, 1.0E+174, 1.0E+175, 1.0E+176, 1.0E+177, 1.0E+178, 1.0E+179, 1.0E+180,
1782
1.27k
            1.0E+181, 1.0E+182, 1.0E+183, 1.0E+184, 1.0E+185, 1.0E+186, 1.0E+187, 1.0E+188, 1.0E+189, 1.0E+190,
1783
1.27k
            1.0E+191, 1.0E+192, 1.0E+193, 1.0E+194, 1.0E+195, 1.0E+196, 1.0E+197, 1.0E+198, 1.0E+199, 1.0E+200,
1784
1.27k
            1.0E+201, 1.0E+202, 1.0E+203, 1.0E+204, 1.0E+205, 1.0E+206, 1.0E+207, 1.0E+208, 1.0E+209, 1.0E+210,
1785
1.27k
            1.0E+211, 1.0E+212, 1.0E+213, 1.0E+214, 1.0E+215, 1.0E+216, 1.0E+217, 1.0E+218, 1.0E+219, 1.0E+220,
1786
1.27k
            1.0E+221, 1.0E+222, 1.0E+223, 1.0E+224, 1.0E+225, 1.0E+226, 1.0E+227, 1.0E+228, 1.0E+229, 1.0E+230,
1787
1.27k
            1.0E+231, 1.0E+232, 1.0E+233, 1.0E+234, 1.0E+235, 1.0E+236, 1.0E+237, 1.0E+238, 1.0E+239, 1.0E+240,
1788
1.27k
            1.0E+241, 1.0E+242, 1.0E+243, 1.0E+244, 1.0E+245, 1.0E+246, 1.0E+247, 1.0E+248, 1.0E+249, 1.0E+250,
1789
1.27k
            1.0E+251, 1.0E+252, 1.0E+253, 1.0E+254, 1.0E+255, 1.0E+256, 1.0E+257, 1.0E+258, 1.0E+259, 1.0E+260,
1790
1.27k
            1.0E+261, 1.0E+262, 1.0E+263, 1.0E+264, 1.0E+265, 1.0E+266, 1.0E+267, 1.0E+268, 1.0E+269, 1.0E+270,
1791
1.27k
            1.0E+271, 1.0E+272, 1.0E+273, 1.0E+274, 1.0E+275, 1.0E+276, 1.0E+277, 1.0E+278, 1.0E+279, 1.0E+280,
1792
1.27k
            1.0E+281, 1.0E+282, 1.0E+283, 1.0E+284, 1.0E+285, 1.0E+286, 1.0E+287, 1.0E+288, 1.0E+289, 1.0E+290,
1793
1.27k
            1.0E+291, 1.0E+292, 1.0E+293, 1.0E+294, 1.0E+295, 1.0E+296, 1.0E+297, 1.0E+298, 1.0E+299, 1.0E+300,
1794
1.27k
            1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308
1795
1.27k
         };
1796
1797
1.27k
         static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double));
1798
1799
1.27k
         const int e = std::abs(exponent);
1800
1801
1.27k
         if (exponent >= std::numeric_limits<T>::min_exponent10)
1802
1.27k
         {
1803
1.27k
            if (e < fract10_size)
1804
1.27k
            {
1805
1.27k
               if (exponent > 0)
1806
523
                  return T(d * fract10[e]);
1807
749
               else
1808
749
                  return T(d / fract10[e]);
1809
1.27k
            }
1810
0
            else
1811
0
               return T(d * std::pow(10.0, 10.0 * exponent));
1812
1.27k
         }
1813
3
         else
1814
3
         {
1815
3
                     d /= T(fract10[           -std::numeric_limits<T>::min_exponent10]);
1816
3
            return T(d /    fract10[-exponent + std::numeric_limits<T>::min_exponent10]);
1817
3
         }
1818
1.27k
      }
double exprtk::details::compute_pow10<double>(double, int)
Line
Count
Source
1760
679
      {
1761
679
         static const double fract10[] =
1762
679
         {
1763
679
            0.0,
1764
679
            1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004, 1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008, 1.0E+009, 1.0E+010,
1765
679
            1.0E+011, 1.0E+012, 1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016, 1.0E+017, 1.0E+018, 1.0E+019, 1.0E+020,
1766
679
            1.0E+021, 1.0E+022, 1.0E+023, 1.0E+024, 1.0E+025, 1.0E+026, 1.0E+027, 1.0E+028, 1.0E+029, 1.0E+030,
1767
679
            1.0E+031, 1.0E+032, 1.0E+033, 1.0E+034, 1.0E+035, 1.0E+036, 1.0E+037, 1.0E+038, 1.0E+039, 1.0E+040,
1768
679
            1.0E+041, 1.0E+042, 1.0E+043, 1.0E+044, 1.0E+045, 1.0E+046, 1.0E+047, 1.0E+048, 1.0E+049, 1.0E+050,
1769
679
            1.0E+051, 1.0E+052, 1.0E+053, 1.0E+054, 1.0E+055, 1.0E+056, 1.0E+057, 1.0E+058, 1.0E+059, 1.0E+060,
1770
679
            1.0E+061, 1.0E+062, 1.0E+063, 1.0E+064, 1.0E+065, 1.0E+066, 1.0E+067, 1.0E+068, 1.0E+069, 1.0E+070,
1771
679
            1.0E+071, 1.0E+072, 1.0E+073, 1.0E+074, 1.0E+075, 1.0E+076, 1.0E+077, 1.0E+078, 1.0E+079, 1.0E+080,
1772
679
            1.0E+081, 1.0E+082, 1.0E+083, 1.0E+084, 1.0E+085, 1.0E+086, 1.0E+087, 1.0E+088, 1.0E+089, 1.0E+090,
1773
679
            1.0E+091, 1.0E+092, 1.0E+093, 1.0E+094, 1.0E+095, 1.0E+096, 1.0E+097, 1.0E+098, 1.0E+099, 1.0E+100,
1774
679
            1.0E+101, 1.0E+102, 1.0E+103, 1.0E+104, 1.0E+105, 1.0E+106, 1.0E+107, 1.0E+108, 1.0E+109, 1.0E+110,
1775
679
            1.0E+111, 1.0E+112, 1.0E+113, 1.0E+114, 1.0E+115, 1.0E+116, 1.0E+117, 1.0E+118, 1.0E+119, 1.0E+120,
1776
679
            1.0E+121, 1.0E+122, 1.0E+123, 1.0E+124, 1.0E+125, 1.0E+126, 1.0E+127, 1.0E+128, 1.0E+129, 1.0E+130,
1777
679
            1.0E+131, 1.0E+132, 1.0E+133, 1.0E+134, 1.0E+135, 1.0E+136, 1.0E+137, 1.0E+138, 1.0E+139, 1.0E+140,
1778
679
            1.0E+141, 1.0E+142, 1.0E+143, 1.0E+144, 1.0E+145, 1.0E+146, 1.0E+147, 1.0E+148, 1.0E+149, 1.0E+150,
1779
679
            1.0E+151, 1.0E+152, 1.0E+153, 1.0E+154, 1.0E+155, 1.0E+156, 1.0E+157, 1.0E+158, 1.0E+159, 1.0E+160,
1780
679
            1.0E+161, 1.0E+162, 1.0E+163, 1.0E+164, 1.0E+165, 1.0E+166, 1.0E+167, 1.0E+168, 1.0E+169, 1.0E+170,
1781
679
            1.0E+171, 1.0E+172, 1.0E+173, 1.0E+174, 1.0E+175, 1.0E+176, 1.0E+177, 1.0E+178, 1.0E+179, 1.0E+180,
1782
679
            1.0E+181, 1.0E+182, 1.0E+183, 1.0E+184, 1.0E+185, 1.0E+186, 1.0E+187, 1.0E+188, 1.0E+189, 1.0E+190,
1783
679
            1.0E+191, 1.0E+192, 1.0E+193, 1.0E+194, 1.0E+195, 1.0E+196, 1.0E+197, 1.0E+198, 1.0E+199, 1.0E+200,
1784
679
            1.0E+201, 1.0E+202, 1.0E+203, 1.0E+204, 1.0E+205, 1.0E+206, 1.0E+207, 1.0E+208, 1.0E+209, 1.0E+210,
1785
679
            1.0E+211, 1.0E+212, 1.0E+213, 1.0E+214, 1.0E+215, 1.0E+216, 1.0E+217, 1.0E+218, 1.0E+219, 1.0E+220,
1786
679
            1.0E+221, 1.0E+222, 1.0E+223, 1.0E+224, 1.0E+225, 1.0E+226, 1.0E+227, 1.0E+228, 1.0E+229, 1.0E+230,
1787
679
            1.0E+231, 1.0E+232, 1.0E+233, 1.0E+234, 1.0E+235, 1.0E+236, 1.0E+237, 1.0E+238, 1.0E+239, 1.0E+240,
1788
679
            1.0E+241, 1.0E+242, 1.0E+243, 1.0E+244, 1.0E+245, 1.0E+246, 1.0E+247, 1.0E+248, 1.0E+249, 1.0E+250,
1789
679
            1.0E+251, 1.0E+252, 1.0E+253, 1.0E+254, 1.0E+255, 1.0E+256, 1.0E+257, 1.0E+258, 1.0E+259, 1.0E+260,
1790
679
            1.0E+261, 1.0E+262, 1.0E+263, 1.0E+264, 1.0E+265, 1.0E+266, 1.0E+267, 1.0E+268, 1.0E+269, 1.0E+270,
1791
679
            1.0E+271, 1.0E+272, 1.0E+273, 1.0E+274, 1.0E+275, 1.0E+276, 1.0E+277, 1.0E+278, 1.0E+279, 1.0E+280,
1792
679
            1.0E+281, 1.0E+282, 1.0E+283, 1.0E+284, 1.0E+285, 1.0E+286, 1.0E+287, 1.0E+288, 1.0E+289, 1.0E+290,
1793
679
            1.0E+291, 1.0E+292, 1.0E+293, 1.0E+294, 1.0E+295, 1.0E+296, 1.0E+297, 1.0E+298, 1.0E+299, 1.0E+300,
1794
679
            1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308
1795
679
         };
1796
1797
679
         static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double));
1798
1799
679
         const int e = std::abs(exponent);
1800
1801
679
         if (exponent >= std::numeric_limits<T>::min_exponent10)
1802
679
         {
1803
679
            if (e < fract10_size)
1804
679
            {
1805
679
               if (exponent > 0)
1806
293
                  return T(d * fract10[e]);
1807
386
               else
1808
386
                  return T(d / fract10[e]);
1809
679
            }
1810
0
            else
1811
0
               return T(d * std::pow(10.0, 10.0 * exponent));
1812
679
         }
1813
0
         else
1814
0
         {
1815
0
                     d /= T(fract10[           -std::numeric_limits<T>::min_exponent10]);
1816
0
            return T(d /    fract10[-exponent + std::numeric_limits<T>::min_exponent10]);
1817
0
         }
1818
679
      }
float exprtk::details::compute_pow10<float>(float, int)
Line
Count
Source
1760
596
      {
1761
596
         static const double fract10[] =
1762
596
         {
1763
596
            0.0,
1764
596
            1.0E+001, 1.0E+002, 1.0E+003, 1.0E+004, 1.0E+005, 1.0E+006, 1.0E+007, 1.0E+008, 1.0E+009, 1.0E+010,
1765
596
            1.0E+011, 1.0E+012, 1.0E+013, 1.0E+014, 1.0E+015, 1.0E+016, 1.0E+017, 1.0E+018, 1.0E+019, 1.0E+020,
1766
596
            1.0E+021, 1.0E+022, 1.0E+023, 1.0E+024, 1.0E+025, 1.0E+026, 1.0E+027, 1.0E+028, 1.0E+029, 1.0E+030,
1767
596
            1.0E+031, 1.0E+032, 1.0E+033, 1.0E+034, 1.0E+035, 1.0E+036, 1.0E+037, 1.0E+038, 1.0E+039, 1.0E+040,
1768
596
            1.0E+041, 1.0E+042, 1.0E+043, 1.0E+044, 1.0E+045, 1.0E+046, 1.0E+047, 1.0E+048, 1.0E+049, 1.0E+050,
1769
596
            1.0E+051, 1.0E+052, 1.0E+053, 1.0E+054, 1.0E+055, 1.0E+056, 1.0E+057, 1.0E+058, 1.0E+059, 1.0E+060,
1770
596
            1.0E+061, 1.0E+062, 1.0E+063, 1.0E+064, 1.0E+065, 1.0E+066, 1.0E+067, 1.0E+068, 1.0E+069, 1.0E+070,
1771
596
            1.0E+071, 1.0E+072, 1.0E+073, 1.0E+074, 1.0E+075, 1.0E+076, 1.0E+077, 1.0E+078, 1.0E+079, 1.0E+080,
1772
596
            1.0E+081, 1.0E+082, 1.0E+083, 1.0E+084, 1.0E+085, 1.0E+086, 1.0E+087, 1.0E+088, 1.0E+089, 1.0E+090,
1773
596
            1.0E+091, 1.0E+092, 1.0E+093, 1.0E+094, 1.0E+095, 1.0E+096, 1.0E+097, 1.0E+098, 1.0E+099, 1.0E+100,
1774
596
            1.0E+101, 1.0E+102, 1.0E+103, 1.0E+104, 1.0E+105, 1.0E+106, 1.0E+107, 1.0E+108, 1.0E+109, 1.0E+110,
1775
596
            1.0E+111, 1.0E+112, 1.0E+113, 1.0E+114, 1.0E+115, 1.0E+116, 1.0E+117, 1.0E+118, 1.0E+119, 1.0E+120,
1776
596
            1.0E+121, 1.0E+122, 1.0E+123, 1.0E+124, 1.0E+125, 1.0E+126, 1.0E+127, 1.0E+128, 1.0E+129, 1.0E+130,
1777
596
            1.0E+131, 1.0E+132, 1.0E+133, 1.0E+134, 1.0E+135, 1.0E+136, 1.0E+137, 1.0E+138, 1.0E+139, 1.0E+140,
1778
596
            1.0E+141, 1.0E+142, 1.0E+143, 1.0E+144, 1.0E+145, 1.0E+146, 1.0E+147, 1.0E+148, 1.0E+149, 1.0E+150,
1779
596
            1.0E+151, 1.0E+152, 1.0E+153, 1.0E+154, 1.0E+155, 1.0E+156, 1.0E+157, 1.0E+158, 1.0E+159, 1.0E+160,
1780
596
            1.0E+161, 1.0E+162, 1.0E+163, 1.0E+164, 1.0E+165, 1.0E+166, 1.0E+167, 1.0E+168, 1.0E+169, 1.0E+170,
1781
596
            1.0E+171, 1.0E+172, 1.0E+173, 1.0E+174, 1.0E+175, 1.0E+176, 1.0E+177, 1.0E+178, 1.0E+179, 1.0E+180,
1782
596
            1.0E+181, 1.0E+182, 1.0E+183, 1.0E+184, 1.0E+185, 1.0E+186, 1.0E+187, 1.0E+188, 1.0E+189, 1.0E+190,
1783
596
            1.0E+191, 1.0E+192, 1.0E+193, 1.0E+194, 1.0E+195, 1.0E+196, 1.0E+197, 1.0E+198, 1.0E+199, 1.0E+200,
1784
596
            1.0E+201, 1.0E+202, 1.0E+203, 1.0E+204, 1.0E+205, 1.0E+206, 1.0E+207, 1.0E+208, 1.0E+209, 1.0E+210,
1785
596
            1.0E+211, 1.0E+212, 1.0E+213, 1.0E+214, 1.0E+215, 1.0E+216, 1.0E+217, 1.0E+218, 1.0E+219, 1.0E+220,
1786
596
            1.0E+221, 1.0E+222, 1.0E+223, 1.0E+224, 1.0E+225, 1.0E+226, 1.0E+227, 1.0E+228, 1.0E+229, 1.0E+230,
1787
596
            1.0E+231, 1.0E+232, 1.0E+233, 1.0E+234, 1.0E+235, 1.0E+236, 1.0E+237, 1.0E+238, 1.0E+239, 1.0E+240,
1788
596
            1.0E+241, 1.0E+242, 1.0E+243, 1.0E+244, 1.0E+245, 1.0E+246, 1.0E+247, 1.0E+248, 1.0E+249, 1.0E+250,
1789
596
            1.0E+251, 1.0E+252, 1.0E+253, 1.0E+254, 1.0E+255, 1.0E+256, 1.0E+257, 1.0E+258, 1.0E+259, 1.0E+260,
1790
596
            1.0E+261, 1.0E+262, 1.0E+263, 1.0E+264, 1.0E+265, 1.0E+266, 1.0E+267, 1.0E+268, 1.0E+269, 1.0E+270,
1791
596
            1.0E+271, 1.0E+272, 1.0E+273, 1.0E+274, 1.0E+275, 1.0E+276, 1.0E+277, 1.0E+278, 1.0E+279, 1.0E+280,
1792
596
            1.0E+281, 1.0E+282, 1.0E+283, 1.0E+284, 1.0E+285, 1.0E+286, 1.0E+287, 1.0E+288, 1.0E+289, 1.0E+290,
1793
596
            1.0E+291, 1.0E+292, 1.0E+293, 1.0E+294, 1.0E+295, 1.0E+296, 1.0E+297, 1.0E+298, 1.0E+299, 1.0E+300,
1794
596
            1.0E+301, 1.0E+302, 1.0E+303, 1.0E+304, 1.0E+305, 1.0E+306, 1.0E+307, 1.0E+308
1795
596
         };
1796
1797
596
         static const int fract10_size = static_cast<int>(sizeof(fract10) / sizeof(double));
1798
1799
596
         const int e = std::abs(exponent);
1800
1801
596
         if (exponent >= std::numeric_limits<T>::min_exponent10)
1802
593
         {
1803
593
            if (e < fract10_size)
1804
593
            {
1805
593
               if (exponent > 0)
1806
230
                  return T(d * fract10[e]);
1807
363
               else
1808
363
                  return T(d / fract10[e]);
1809
593
            }
1810
0
            else
1811
0
               return T(d * std::pow(10.0, 10.0 * exponent));
1812
593
         }
1813
3
         else
1814
3
         {
1815
3
                     d /= T(fract10[           -std::numeric_limits<T>::min_exponent10]);
1816
3
            return T(d /    fract10[-exponent + std::numeric_limits<T>::min_exponent10]);
1817
3
         }
1818
596
      }
1819
1820
      template <typename Iterator, typename T>
1821
      inline bool string_to_type_converter_impl_ref(Iterator& itr, const Iterator end, T& result)
1822
1.30k
      {
1823
1.30k
         if (itr == end)
1824
0
            return false;
1825
1826
1.30k
         const bool negative = ('-' == (*itr));
1827
1828
1.30k
         if (negative || ('+' == (*itr)))
1829
577
         {
1830
577
            if (end == ++itr)
1831
208
               return false;
1832
577
         }
1833
1834
1.09k
         static const uchar_t zero = static_cast<uchar_t>('0');
1835
1836
1.98k
         while ((end != itr) && (zero == (*itr))) ++itr;
1837
1838
1.09k
         bool return_result = true;
1839
1.09k
         unsigned int digit = 0;
1840
1.09k
         const std::size_t length = static_cast<std::size_t>(std::distance(itr,end));
1841
1842
1.09k
         if (length <= 4)
1843
991
         {
1844
991
            switch (length)
1845
991
            {
1846
               #ifdef exprtk_use_lut
1847
1848
               #define exprtk_process_digit                          \
1849
               if ((digit = details::digit_table[(int)*itr++]) < 10) \
1850
                  result = result * 10 + (digit);                    \
1851
               else                                                  \
1852
               {                                                     \
1853
                  return_result = false;                             \
1854
                  break;                                             \
1855
               }                                                     \
1856
               exprtk_fallthrough                                    \
1857
1858
               #else
1859
1860
0
               #define exprtk_process_digit        \
1861
476
               if ((digit = (*itr++ - zero)) < 10) \
1862
476
                  result = result * T(10) + digit; \
1863
476
               else                                \
1864
476
               {                                   \
1865
32
                  return_result = false;           \
1866
32
                  break;                           \
1867
32
               }                                   \
1868
476
               exprtk_fallthrough                  \
1869
0
1870
0
               #endif
1871
1872
24
               case 4 : exprtk_process_digit
1873
80
               case 3 : exprtk_process_digit
1874
372
               case 2 : exprtk_process_digit
1875
891
               case 1 : if ((digit = (*itr - zero))>= 10)
1876
182
                        {
1877
182
                           digit = 0;
1878
182
                           return_result = false;
1879
182
                        }
1880
1881
991
               #undef exprtk_process_digit
1882
991
            }
1883
991
         }
1884
102
         else
1885
102
            return_result = false;
1886
1887
1.09k
         if (length && return_result)
1888
709
         {
1889
709
            result = result * 10 + static_cast<T>(digit);
1890
709
            ++itr;
1891
709
         }
1892
1893
1.09k
         result = negative ? -result : result;
1894
1.09k
         return return_result;
1895
1.09k
      }
1896
1897
      template <typename Iterator, typename T>
1898
      static inline bool parse_nan(Iterator& itr, const Iterator end, T& t)
1899
0
      {
1900
0
         typedef typename std::iterator_traits<Iterator>::value_type type;
1901
1902
0
         static const std::size_t nan_length = 3;
1903
1904
0
         if (std::distance(itr,end) != static_cast<int>(nan_length))
1905
0
            return false;
1906
1907
0
         if (static_cast<type>('n') == (*itr))
1908
0
         {
1909
0
            if (
1910
0
                 (static_cast<type>('a') != *(itr + 1)) ||
1911
0
                 (static_cast<type>('n') != *(itr + 2))
1912
0
               )
1913
0
            {
1914
0
               return false;
1915
0
            }
1916
0
         }
1917
0
         else if (
1918
0
                   (static_cast<type>('A') != *(itr + 1)) ||
1919
0
                   (static_cast<type>('N') != *(itr + 2))
1920
0
                 )
1921
0
         {
1922
0
            return false;
1923
0
         }
1924
1925
0
         t = std::numeric_limits<T>::quiet_NaN();
1926
1927
0
         return true;
1928
0
      }
Unexecuted instantiation: exprtk_fuzzer.cpp:bool exprtk::details::parse_nan<char const*, double>(char const*&, char const*, double&)
Unexecuted instantiation: exprtk_fuzzer.cpp:bool exprtk::details::parse_nan<char const*, float>(char const*&, char const*, float&)
1929
1930
      template <typename Iterator, typename T>
1931
      static inline bool parse_inf(Iterator& itr, const Iterator end, T& t, const bool negative)
1932
0
      {
1933
0
         static const char_t inf_uc[] = "INFINITY";
1934
0
         static const char_t inf_lc[] = "infinity";
1935
0
         static const std::size_t inf_length = 8;
1936
1937
0
         const std::size_t length = static_cast<std::size_t>(std::distance(itr,end));
1938
1939
0
         if ((3 != length) && (inf_length != length))
1940
0
            return false;
1941
1942
0
         char_cptr inf_itr = ('i' == (*itr)) ? inf_lc : inf_uc;
1943
1944
0
         while (end != itr)
1945
0
         {
1946
0
            if (*inf_itr == static_cast<char_t>(*itr))
1947
0
            {
1948
0
               ++itr;
1949
0
               ++inf_itr;
1950
0
               continue;
1951
0
            }
1952
0
            else
1953
0
               return false;
1954
0
         }
1955
1956
0
         if (negative)
1957
0
            t = -std::numeric_limits<T>::infinity();
1958
0
         else
1959
0
            t =  std::numeric_limits<T>::infinity();
1960
1961
0
         return true;
1962
0
      }
Unexecuted instantiation: exprtk_fuzzer.cpp:bool exprtk::details::parse_inf<char const*, double>(char const*&, char const*, double&, bool)
Unexecuted instantiation: exprtk_fuzzer.cpp:bool exprtk::details::parse_inf<char const*, float>(char const*&, char const*, float&, bool)
1963
1964
      template <typename T>
1965
      inline bool valid_exponent(const int exponent, numeric::details::real_type_tag)
1966
608k
      {
1967
608k
         using namespace details::numeric;
1968
608k
         return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp);
1969
608k
      }
bool exprtk::details::valid_exponent<double>(int, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1966
378k
      {
1967
378k
         using namespace details::numeric;
1968
378k
         return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp);
1969
378k
      }
bool exprtk::details::valid_exponent<float>(int, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1966
230k
      {
1967
230k
         using namespace details::numeric;
1968
230k
         return (numeric_info<T>::min_exp <= exponent) && (exponent <= numeric_info<T>::max_exp);
1969
230k
      }
1970
1971
      template <typename Iterator, typename T>
1972
      inline bool string_to_real(Iterator& itr_external, const Iterator end, T& t, numeric::details::real_type_tag)
1973
608k
      {
1974
608k
         if (end == itr_external) return false;
1975
1976
608k
         Iterator itr = itr_external;
1977
1978
608k
         T d = T(0);
1979
1980
608k
         const bool negative = ('-' == (*itr));
1981
1982
608k
         if (negative || '+' == (*itr))
1983
0
         {
1984
0
            if (end == ++itr)
1985
0
               return false;
1986
0
         }
1987
1988
608k
         bool instate = false;
1989
1990
608k
         static const char_t zero = static_cast<uchar_t>('0');
1991
1992
608k
         #define parse_digit_1(d)          \
1993
1.24M
         if ((digit = (*itr - zero)) < 10) \
1994
1.24M
            { d = d * T(10) + digit; }     \
1995
1.24M
         else                              \
1996
1.24M
            { break; }                     \
1997
1.24M
         if (end == ++itr) break;          \
1998
608k
1999
608k
         #define parse_digit_2(d)          \
2000
608k
         if ((digit = (*itr - zero)) < 10) \
2001
469k
            { d = d * T(10) + digit; }     \
2002
469k
         else                              \
2003
469k
            { break; }                     \
2004
469k
            ++itr;                         \
2005
608k
2006
608k
         if ('.' != (*itr))
2007
608k
         {
2008
608k
            const Iterator curr = itr;
2009
2010
2.10M
            while ((end != itr) && (zero == (*itr))) ++itr;
2011
2012
1.07M
            while (end != itr)
2013
707k
            {
2014
707k
               unsigned int digit;
2015
707k
               parse_digit_1(d)
2016
1.05M
               parse_digit_1(d)
2017
929k
               parse_digit_2(d)
2018
929k
            }
2019
2020
608k
            if (curr != itr) instate = true;
2021
608k
         }
2022
2023
608k
         int exponent = 0;
2024
2025
608k
         if (end != itr)
2026
2.13k
         {
2027
2.13k
            if ('.' == (*itr))
2028
871
            {
2029
871
               const Iterator curr = ++itr;
2030
871
               T tmp_d = T(0);
2031
2032
5.45k
               while (end != itr)
2033
5.18k
               {
2034
5.18k
                  unsigned int digit;
2035
5.18k
                  parse_digit_1(tmp_d)
2036
9.67k
                  parse_digit_1(tmp_d)
2037
9.17k
                  parse_digit_2(tmp_d)
2038
9.17k
               }
2039
2040
871
               if (curr != itr)
2041
649
               {
2042
649
                  instate = true;
2043
2044
649
                  const int frac_exponent = static_cast<int>(-std::distance(curr, itr));
2045
2046
649
                  if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag()))
2047
14
                     return false;
2048
2049
635
                  d += compute_pow10(tmp_d, frac_exponent);
2050
635
               }
2051
2052
871
               #undef parse_digit_1
2053
871
               #undef parse_digit_2
2054
871
            }
2055
2056
2.12k
            if (end != itr)
2057
1.30k
            {
2058
1.30k
               typename std::iterator_traits<Iterator>::value_type c = (*itr);
2059
2060
1.30k
               if (('e' == c) || ('E' == c))
2061
1.30k
               {
2062
1.30k
                  int exp = 0;
2063
2064
1.30k
                  if (!details::string_to_type_converter_impl_ref(++itr, end, exp))
2065
524
                  {
2066
524
                     if (end == itr)
2067
208
                        return false;
2068
316
                     else
2069
316
                        c = (*itr);
2070
524
                  }
2071
2072
1.09k
                  exponent += exp;
2073
1.09k
               }
2074
2075
1.09k
               if (end != itr)
2076
316
               {
2077
316
                  if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c))
2078
0
                     ++itr;
2079
316
                  else if ('#' == c)
2080
0
                  {
2081
0
                     if (end == ++itr)
2082
0
                        return false;
2083
0
                     else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2084
0
                     {
2085
0
                        if (('i' == (*itr)) || ('I' == (*itr)))
2086
0
                        {
2087
0
                           return parse_inf(itr, end, t, negative);
2088
0
                        }
2089
0
                        else if (('n' == (*itr)) || ('N' == (*itr)))
2090
0
                        {
2091
0
                           return parse_nan(itr, end, t);
2092
0
                        }
2093
0
                        else
2094
0
                           return false;
2095
0
                     }
2096
0
                     else
2097
0
                        return false;
2098
0
                  }
2099
316
                  else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2100
130
                  {
2101
130
                     if (('i' == (*itr)) || ('I' == (*itr)))
2102
0
                     {
2103
0
                        return parse_inf(itr, end, t, negative);
2104
0
                     }
2105
130
                     else if (('n' == (*itr)) || ('N' == (*itr)))
2106
0
                     {
2107
0
                        return parse_nan(itr, end, t);
2108
0
                     }
2109
130
                     else
2110
130
                        return false;
2111
130
                  }
2112
186
                  else
2113
186
                     return false;
2114
316
               }
2115
1.09k
            }
2116
2.12k
         }
2117
2118
608k
         if ((end != itr) || (!instate))
2119
0
            return false;
2120
608k
         else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag()))
2121
69
            return false;
2122
608k
         else if (exponent)
2123
640
            d = compute_pow10(d,exponent);
2124
2125
608k
         t = static_cast<T>((negative) ? -d : d);
2126
608k
         return true;
2127
608k
      }
bool exprtk::details::string_to_real<char const*, double>(char const*&, char const*, double&, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1973
378k
      {
1974
378k
         if (end == itr_external) return false;
1975
1976
378k
         Iterator itr = itr_external;
1977
1978
378k
         T d = T(0);
1979
1980
378k
         const bool negative = ('-' == (*itr));
1981
1982
378k
         if (negative || '+' == (*itr))
1983
0
         {
1984
0
            if (end == ++itr)
1985
0
               return false;
1986
0
         }
1987
1988
378k
         bool instate = false;
1989
1990
378k
         static const char_t zero = static_cast<uchar_t>('0');
1991
1992
378k
         #define parse_digit_1(d)          \
1993
378k
         if ((digit = (*itr - zero)) < 10) \
1994
378k
            { d = d * T(10) + digit; }     \
1995
378k
         else                              \
1996
378k
            { break; }                     \
1997
378k
         if (end == ++itr) break;          \
1998
378k
1999
378k
         #define parse_digit_2(d)          \
2000
378k
         if ((digit = (*itr - zero)) < 10) \
2001
378k
            { d = d * T(10) + digit; }     \
2002
378k
         else                              \
2003
378k
            { break; }                     \
2004
378k
            ++itr;                         \
2005
378k
2006
378k
         if ('.' != (*itr))
2007
378k
         {
2008
378k
            const Iterator curr = itr;
2009
2010
1.14M
            while ((end != itr) && (zero == (*itr))) ++itr;
2011
2012
615k
            while (end != itr)
2013
411k
            {
2014
411k
               unsigned int digit;
2015
411k
               parse_digit_1(d)
2016
572k
               parse_digit_1(d)
2017
475k
               parse_digit_2(d)
2018
475k
            }
2019
2020
378k
            if (curr != itr) instate = true;
2021
378k
         }
2022
2023
378k
         int exponent = 0;
2024
2025
378k
         if (end != itr)
2026
1.08k
         {
2027
1.08k
            if ('.' == (*itr))
2028
437
            {
2029
437
               const Iterator curr = ++itr;
2030
437
               T tmp_d = T(0);
2031
2032
2.76k
               while (end != itr)
2033
2.62k
               {
2034
2.62k
                  unsigned int digit;
2035
2.62k
                  parse_digit_1(tmp_d)
2036
4.89k
                  parse_digit_1(tmp_d)
2037
4.65k
                  parse_digit_2(tmp_d)
2038
4.65k
               }
2039
2040
437
               if (curr != itr)
2041
326
               {
2042
326
                  instate = true;
2043
2044
326
                  const int frac_exponent = static_cast<int>(-std::distance(curr, itr));
2045
2046
326
                  if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag()))
2047
3
                     return false;
2048
2049
323
                  d += compute_pow10(tmp_d, frac_exponent);
2050
323
               }
2051
2052
437
               #undef parse_digit_1
2053
437
               #undef parse_digit_2
2054
437
            }
2055
2056
1.07k
            if (end != itr)
2057
662
            {
2058
662
               typename std::iterator_traits<Iterator>::value_type c = (*itr);
2059
2060
662
               if (('e' == c) || ('E' == c))
2061
662
               {
2062
662
                  int exp = 0;
2063
2064
662
                  if (!details::string_to_type_converter_impl_ref(++itr, end, exp))
2065
262
                  {
2066
262
                     if (end == itr)
2067
104
                        return false;
2068
158
                     else
2069
158
                        c = (*itr);
2070
262
                  }
2071
2072
558
                  exponent += exp;
2073
558
               }
2074
2075
558
               if (end != itr)
2076
158
               {
2077
158
                  if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c))
2078
0
                     ++itr;
2079
158
                  else if ('#' == c)
2080
0
                  {
2081
0
                     if (end == ++itr)
2082
0
                        return false;
2083
0
                     else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2084
0
                     {
2085
0
                        if (('i' == (*itr)) || ('I' == (*itr)))
2086
0
                        {
2087
0
                           return parse_inf(itr, end, t, negative);
2088
0
                        }
2089
0
                        else if (('n' == (*itr)) || ('N' == (*itr)))
2090
0
                        {
2091
0
                           return parse_nan(itr, end, t);
2092
0
                        }
2093
0
                        else
2094
0
                           return false;
2095
0
                     }
2096
0
                     else
2097
0
                        return false;
2098
0
                  }
2099
158
                  else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2100
65
                  {
2101
65
                     if (('i' == (*itr)) || ('I' == (*itr)))
2102
0
                     {
2103
0
                        return parse_inf(itr, end, t, negative);
2104
0
                     }
2105
65
                     else if (('n' == (*itr)) || ('N' == (*itr)))
2106
0
                     {
2107
0
                        return parse_nan(itr, end, t);
2108
0
                     }
2109
65
                     else
2110
65
                        return false;
2111
65
                  }
2112
93
                  else
2113
93
                     return false;
2114
158
               }
2115
558
            }
2116
1.07k
         }
2117
2118
378k
         if ((end != itr) || (!instate))
2119
0
            return false;
2120
378k
         else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag()))
2121
10
            return false;
2122
378k
         else if (exponent)
2123
356
            d = compute_pow10(d,exponent);
2124
2125
378k
         t = static_cast<T>((negative) ? -d : d);
2126
378k
         return true;
2127
378k
      }
bool exprtk::details::string_to_real<char const*, float>(char const*&, char const*, float&, exprtk::details::numeric::details::real_type_tag)
Line
Count
Source
1973
230k
      {
1974
230k
         if (end == itr_external) return false;
1975
1976
230k
         Iterator itr = itr_external;
1977
1978
230k
         T d = T(0);
1979
1980
230k
         const bool negative = ('-' == (*itr));
1981
1982
230k
         if (negative || '+' == (*itr))
1983
0
         {
1984
0
            if (end == ++itr)
1985
0
               return false;
1986
0
         }
1987
1988
230k
         bool instate = false;
1989
1990
230k
         static const char_t zero = static_cast<uchar_t>('0');
1991
1992
230k
         #define parse_digit_1(d)          \
1993
230k
         if ((digit = (*itr - zero)) < 10) \
1994
230k
            { d = d * T(10) + digit; }     \
1995
230k
         else                              \
1996
230k
            { break; }                     \
1997
230k
         if (end == ++itr) break;          \
1998
230k
1999
230k
         #define parse_digit_2(d)          \
2000
230k
         if ((digit = (*itr - zero)) < 10) \
2001
230k
            { d = d * T(10) + digit; }     \
2002
230k
         else                              \
2003
230k
            { break; }                     \
2004
230k
            ++itr;                         \
2005
230k
2006
230k
         if ('.' != (*itr))
2007
230k
         {
2008
230k
            const Iterator curr = itr;
2009
2010
962k
            while ((end != itr) && (zero == (*itr))) ++itr;
2011
2012
457k
            while (end != itr)
2013
295k
            {
2014
295k
               unsigned int digit;
2015
295k
               parse_digit_1(d)
2016
481k
               parse_digit_1(d)
2017
454k
               parse_digit_2(d)
2018
454k
            }
2019
2020
230k
            if (curr != itr) instate = true;
2021
230k
         }
2022
2023
230k
         int exponent = 0;
2024
2025
230k
         if (end != itr)
2026
1.05k
         {
2027
1.05k
            if ('.' == (*itr))
2028
434
            {
2029
434
               const Iterator curr = ++itr;
2030
434
               T tmp_d = T(0);
2031
2032
2.69k
               while (end != itr)
2033
2.56k
               {
2034
2.56k
                  unsigned int digit;
2035
2.56k
                  parse_digit_1(tmp_d)
2036
4.77k
                  parse_digit_1(tmp_d)
2037
4.52k
                  parse_digit_2(tmp_d)
2038
4.52k
               }
2039
2040
434
               if (curr != itr)
2041
323
               {
2042
323
                  instate = true;
2043
2044
323
                  const int frac_exponent = static_cast<int>(-std::distance(curr, itr));
2045
2046
323
                  if (!valid_exponent<T>(frac_exponent, numeric::details::real_type_tag()))
2047
11
                     return false;
2048
2049
312
                  d += compute_pow10(tmp_d, frac_exponent);
2050
312
               }
2051
2052
434
               #undef parse_digit_1
2053
434
               #undef parse_digit_2
2054
434
            }
2055
2056
1.04k
            if (end != itr)
2057
639
            {
2058
639
               typename std::iterator_traits<Iterator>::value_type c = (*itr);
2059
2060
639
               if (('e' == c) || ('E' == c))
2061
639
               {
2062
639
                  int exp = 0;
2063
2064
639
                  if (!details::string_to_type_converter_impl_ref(++itr, end, exp))
2065
262
                  {
2066
262
                     if (end == itr)
2067
104
                        return false;
2068
158
                     else
2069
158
                        c = (*itr);
2070
262
                  }
2071
2072
535
                  exponent += exp;
2073
535
               }
2074
2075
535
               if (end != itr)
2076
158
               {
2077
158
                  if (('f' == c) || ('F' == c) || ('l' == c) || ('L' == c))
2078
0
                     ++itr;
2079
158
                  else if ('#' == c)
2080
0
                  {
2081
0
                     if (end == ++itr)
2082
0
                        return false;
2083
0
                     else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2084
0
                     {
2085
0
                        if (('i' == (*itr)) || ('I' == (*itr)))
2086
0
                        {
2087
0
                           return parse_inf(itr, end, t, negative);
2088
0
                        }
2089
0
                        else if (('n' == (*itr)) || ('N' == (*itr)))
2090
0
                        {
2091
0
                           return parse_nan(itr, end, t);
2092
0
                        }
2093
0
                        else
2094
0
                           return false;
2095
0
                     }
2096
0
                     else
2097
0
                        return false;
2098
0
                  }
2099
158
                  else if (('I' <= (*itr)) && ((*itr) <= 'n'))
2100
65
                  {
2101
65
                     if (('i' == (*itr)) || ('I' == (*itr)))
2102
0
                     {
2103
0
                        return parse_inf(itr, end, t, negative);
2104
0
                     }
2105
65
                     else if (('n' == (*itr)) || ('N' == (*itr)))
2106
0
                     {
2107
0
                        return parse_nan(itr, end, t);
2108
0
                     }
2109
65
                     else
2110
65
                        return false;
2111
65
                  }
2112
93
                  else
2113
93
                     return false;
2114
158
               }
2115
535
            }
2116
1.04k
         }
2117
2118
230k
         if ((end != itr) || (!instate))
2119
0
            return false;
2120
230k
         else if (!valid_exponent<T>(exponent, numeric::details::real_type_tag()))
2121
59
            return false;
2122
230k
         else if (exponent)
2123
284
            d = compute_pow10(d,exponent);
2124
2125
230k
         t = static_cast<T>((negative) ? -d : d);
2126
230k
         return true;
2127
230k
      }
2128
2129
      template <typename T>
2130
      inline bool string_to_real(const std::string& s, T& t)
2131
608k
      {
2132
608k
         const typename numeric::details::number_type<T>::type num_type;
2133
2134
608k
         char_cptr begin = s.data();
2135
608k
         char_cptr end   = s.data() + s.size();
2136
2137
608k
         return string_to_real(begin, end, t, num_type);
2138
608k
      }
bool exprtk::details::string_to_real<double>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, double&)
Line
Count
Source
2131
378k
      {
2132
378k
         const typename numeric::details::number_type<T>::type num_type;
2133
2134
378k
         char_cptr begin = s.data();
2135
378k
         char_cptr end   = s.data() + s.size();
2136
2137
378k
         return string_to_real(begin, end, t, num_type);
2138
378k
      }
bool exprtk::details::string_to_real<float>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, float&)
Line
Count
Source
2131
230k
      {
2132
230k
         const typename numeric::details::number_type<T>::type num_type;
2133
2134
230k
         char_cptr begin = s.data();
2135
230k
         char_cptr end   = s.data() + s.size();
2136
2137
230k
         return string_to_real(begin, end, t, num_type);
2138
230k
      }
2139
2140
      template <typename T>
2141
      struct functor_t
2142
      {
2143
         /*
2144
            Note: The following definitions for Type, may require tweaking
2145
                  based on the compiler and target architecture. The benchmark
2146
                  should provide enough information to make the right choice.
2147
         */
2148
         //typedef T Type;
2149
         //typedef const T Type;
2150
         typedef const T& Type;
2151
         typedef       T& RefType;
2152
         typedef T (*qfunc_t)(Type t0, Type t1, Type t2, Type t3);
2153
         typedef T (*tfunc_t)(Type t0, Type t1, Type t2);
2154
         typedef T (*bfunc_t)(Type t0, Type t1);
2155
         typedef T (*ufunc_t)(Type t0);
2156
      };
2157
2158
   } // namespace details
2159
2160
   struct loop_runtime_check
2161
   {
2162
      enum loop_types
2163
      {
2164
         e_invalid           = 0,
2165
         e_for_loop          = 1,
2166
         e_while_loop        = 2,
2167
         e_repeat_until_loop = 4,
2168
         e_all_loops         = 7
2169
      };
2170
2171
      enum violation_type
2172
      {
2173
          e_unknown         = 0,
2174
          e_iteration_count = 1,
2175
          e_timeout         = 2
2176
      };
2177
2178
      loop_types loop_set;
2179
2180
      loop_runtime_check()
2181
10.1k
      : loop_set(e_invalid)
2182
10.1k
      , max_loop_iterations(0)
2183
10.1k
      {}
2184
2185
      details::_uint64_t max_loop_iterations;
2186
2187
      struct violation_context
2188
      {
2189
         loop_types loop;
2190
         violation_type violation;
2191
         details::_uint64_t iteration_count;
2192
      };
2193
2194
      virtual bool check()
2195
0
      {
2196
0
         return true;
2197
0
      }
2198
2199
      virtual void handle_runtime_violation(const violation_context&)
2200
0
      {
2201
0
         throw std::runtime_error("ExprTk Loop runtime violation.");
2202
0
      }
2203
2204
      virtual ~loop_runtime_check()
2205
10.1k
      {}
2206
   };
2207
2208
   typedef loop_runtime_check* loop_runtime_check_ptr;
2209
2210
   struct vector_access_runtime_check
2211
   {
2212
      struct violation_context
2213
      {
2214
         void* base_ptr;
2215
         void* end_ptr;
2216
         void* access_ptr;
2217
         std::size_t type_size;
2218
      };
2219
2220
      virtual ~vector_access_runtime_check()
2221
10.1k
      {}
2222
2223
      virtual bool handle_runtime_violation(violation_context& /*context*/)
2224
0
      {
2225
0
         throw std::runtime_error("ExprTk runtime vector access violation.");
2226
0
         #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
2227
0
         return false;
2228
0
         #endif
2229
0
      }
2230
   };
2231
2232
   typedef vector_access_runtime_check* vector_access_runtime_check_ptr;
2233
2234
   struct assert_check
2235
   {
2236
      struct assert_context
2237
      {
2238
         std::string condition;
2239
         std::string message;
2240
         std::string id;
2241
         std::size_t offet;
2242
      };
2243
2244
      virtual ~assert_check()
2245
10.1k
      {}
2246
2247
      virtual void handle_assert(const assert_context& /*context*/)
2248
0
      {}
2249
   };
2250
2251
   typedef assert_check* assert_check_ptr;
2252
2253
   struct compilation_check
2254
   {
2255
      struct compilation_context
2256
      {
2257
         std::string error_message;
2258
      };
2259
2260
      virtual bool continue_compilation(compilation_context& /*context*/) = 0;
2261
2262
      virtual ~compilation_check()
2263
10.1k
      {}
2264
   };
2265
2266
   typedef compilation_check* compilation_check_ptr;
2267
2268
   namespace lexer
2269
   {
2270
      struct token
2271
      {
2272
         enum token_type
2273
         {
2274
            e_none        =   0, e_error       =   1, e_err_symbol  =   2,
2275
            e_err_number  =   3, e_err_string  =   4, e_err_sfunc   =   5,
2276
            e_eof         =   6, e_number      =   7, e_symbol      =   8,
2277
            e_string      =   9, e_assign      =  10, e_addass      =  11,
2278
            e_subass      =  12, e_mulass      =  13, e_divass      =  14,
2279
            e_modass      =  15, e_shr         =  16, e_shl         =  17,
2280
            e_lte         =  18, e_ne          =  19, e_gte         =  20,
2281
            e_swap        =  21, e_lt          = '<', e_gt          = '>',
2282
            e_eq          = '=', e_rbracket    = ')', e_lbracket    = '(',
2283
            e_rsqrbracket = ']', e_lsqrbracket = '[', e_rcrlbracket = '}',
2284
            e_lcrlbracket = '{', e_comma       = ',', e_add         = '+',
2285
            e_sub         = '-', e_div         = '/', e_mul         = '*',
2286
            e_mod         = '%', e_pow         = '^', e_colon       = ':',
2287
            e_ternary     = '?'
2288
         };
2289
2290
         token()
2291
30.4M
         : type(e_none)
2292
30.4M
         , value("")
2293
30.4M
         , position(std::numeric_limits<std::size_t>::max())
2294
30.4M
         {}
2295
2296
         void clear()
2297
8.29k
         {
2298
8.29k
            type     = e_none;
2299
8.29k
            value    = "";
2300
8.29k
            position = std::numeric_limits<std::size_t>::max();
2301
8.29k
         }
2302
2303
         template <typename Iterator>
2304
         inline token& set_operator(const token_type tt,
2305
                                    const Iterator begin, const Iterator end,
2306
                                    const Iterator base_begin = Iterator(0))
2307
3.30M
         {
2308
3.30M
            type = tt;
2309
3.30M
            value.assign(begin,end);
2310
3.30M
            if (base_begin)
2311
3.30M
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2312
3.30M
            return (*this);
2313
3.30M
         }
2314
2315
         template <typename Iterator>
2316
         inline token& set_symbol(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0))
2317
975k
         {
2318
975k
            type = e_symbol;
2319
975k
            value.assign(begin,end);
2320
975k
            if (base_begin)
2321
975k
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2322
975k
            return (*this);
2323
975k
         }
2324
2325
         template <typename Iterator>
2326
         inline token& set_numeric(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0))
2327
661k
         {
2328
661k
            type = e_number;
2329
661k
            value.assign(begin,end);
2330
661k
            if (base_begin)
2331
661k
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2332
661k
            return (*this);
2333
661k
         }
2334
2335
         template <typename Iterator>
2336
         inline token& set_string(const Iterator begin, const Iterator end, const Iterator base_begin = Iterator(0))
2337
138k
         {
2338
138k
            type = e_string;
2339
138k
            value.assign(begin,end);
2340
138k
            if (base_begin)
2341
138k
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2342
138k
            return (*this);
2343
138k
         }
2344
2345
         inline token& set_string(const std::string& s, const std::size_t p)
2346
5.65k
         {
2347
5.65k
            type     = e_string;
2348
5.65k
            value    = s;
2349
5.65k
            position = p;
2350
5.65k
            return (*this);
2351
5.65k
         }
2352
2353
         template <typename Iterator>
2354
         inline token& set_error(const token_type et,
2355
                                 const Iterator begin, const Iterator end,
2356
                                 const Iterator base_begin = Iterator(0))
2357
1.52k
         {
2358
1.52k
            if (
2359
1.52k
                 (e_error      == et) ||
2360
1.52k
                 (e_err_symbol == et) ||
2361
1.52k
                 (e_err_number == et) ||
2362
1.52k
                 (e_err_string == et) ||
2363
1.52k
                 (e_err_sfunc  == et)
2364
1.52k
               )
2365
1.52k
            {
2366
1.52k
               type = et;
2367
1.52k
            }
2368
0
            else
2369
0
               type = e_error;
2370
2371
1.52k
            value.assign(begin,end);
2372
2373
1.52k
            if (base_begin)
2374
1.52k
               position = static_cast<std::size_t>(std::distance(base_begin,begin));
2375
2376
1.52k
            return (*this);
2377
1.52k
         }
2378
2379
         static inline std::string to_str(token_type t)
2380
82
         {
2381
82
            switch (t)
2382
82
            {
2383
0
               case e_none        : return "NONE";
2384
0
               case e_error       : return "ERROR";
2385
0
               case e_err_symbol  : return "ERROR_SYMBOL";
2386
0
               case e_err_number  : return "ERROR_NUMBER";
2387
0
               case e_err_string  : return "ERROR_STRING";
2388
0
               case e_eof         : return "EOF";
2389
0
               case e_number      : return "NUMBER";
2390
0
               case e_symbol      : return "SYMBOL";
2391
0
               case e_string      : return "STRING";
2392
0
               case e_assign      : return ":=";
2393
0
               case e_addass      : return "+=";
2394
0
               case e_subass      : return "-=";
2395
0
               case e_mulass      : return "*=";
2396
0
               case e_divass      : return "/=";
2397
0
               case e_modass      : return "%=";
2398
0
               case e_shr         : return ">>";
2399
0
               case e_shl         : return "<<";
2400
0
               case e_lte         : return "<=";
2401
0
               case e_ne          : return "!=";
2402
0
               case e_gte         : return ">=";
2403
0
               case e_lt          : return "<";
2404
0
               case e_gt          : return ">";
2405
0
               case e_eq          : return "=";
2406
0
               case e_rbracket    : return ")";
2407
0
               case e_lbracket    : return "(";
2408
0
               case e_rsqrbracket : return "]";
2409
0
               case e_lsqrbracket : return "[";
2410
0
               case e_rcrlbracket : return "}";
2411
82
               case e_lcrlbracket : return "{";
2412
0
               case e_comma       : return ",";
2413
0
               case e_add         : return "+";
2414
0
               case e_sub         : return "-";
2415
0
               case e_div         : return "/";
2416
0
               case e_mul         : return "*";
2417
0
               case e_mod         : return "%";
2418
0
               case e_pow         : return "^";
2419
0
               case e_colon       : return ":";
2420
0
               case e_ternary     : return "?";
2421
0
               case e_swap        : return "<=>";
2422
0
               default            : return "UNKNOWN";
2423
82
            }
2424
82
         }
2425
2426
         static inline std::string seperator_to_str(const token_type t)
2427
0
         {
2428
0
            switch (t)
2429
0
            {
2430
0
               case e_comma : return ",";
2431
0
               case e_colon : return ":";
2432
0
               case e_eof   : return ";";
2433
0
               default      : return "UNKNOWN";
2434
0
            }
2435
2436
0
            #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
2437
0
            return "UNKNOWN";
2438
0
            #endif
2439
0
         }
2440
2441
         inline bool is_error() const
2442
6.11M
         {
2443
6.11M
            return (e_error      == type) ||
2444
6.11M
                   (e_err_symbol == type) ||
2445
6.11M
                   (e_err_number == type) ||
2446
6.11M
                   (e_err_string == type) ||
2447
6.11M
                   (e_err_sfunc  == type) ;
2448
6.11M
         }
2449
2450
         token_type type;
2451
         std::string value;
2452
         std::size_t position;
2453
      };
2454
2455
      class generator
2456
      {
2457
      public:
2458
2459
         typedef token token_t;
2460
         typedef std::vector<token_t> token_list_t;
2461
         typedef token_list_t::iterator token_list_itr_t;
2462
         typedef details::char_t char_t;
2463
2464
         generator()
2465
10.1k
         : base_itr_(0)
2466
10.1k
         , s_itr_   (0)
2467
10.1k
         , s_end_   (0)
2468
10.1k
         {
2469
10.1k
            clear();
2470
10.1k
         }
2471
2472
         inline void clear()
2473
10.1k
         {
2474
10.1k
            base_itr_ = 0;
2475
10.1k
            s_itr_    = 0;
2476
10.1k
            s_end_    = 0;
2477
10.1k
            token_list_.clear();
2478
10.1k
            token_itr_ = token_list_.end();
2479
10.1k
            store_token_itr_ = token_list_.end();
2480
10.1k
         }
2481
2482
         inline bool process(const std::string& str)
2483
10.1k
         {
2484
10.1k
            base_itr_ = str.data();
2485
10.1k
            s_itr_    = str.data();
2486
10.1k
            s_end_    = str.data() + str.size();
2487
2488
10.1k
            eof_token_.set_operator(token_t::e_eof, s_end_, s_end_, base_itr_);
2489
10.1k
            token_list_.clear();
2490
2491
5.65M
            while (!is_end(s_itr_))
2492
5.64M
            {
2493
5.64M
               scan_token();
2494
2495
5.64M
               if (!token_list_.empty() && token_list_.back().is_error())
2496
1.52k
                  return false;
2497
5.64M
            }
2498
2499
8.60k
            return true;
2500
10.1k
         }
2501
2502
         inline bool empty() const
2503
8.60k
         {
2504
8.60k
            return token_list_.empty();
2505
8.60k
         }
2506
2507
         inline std::size_t size() const
2508
474k
         {
2509
474k
            return token_list_.size();
2510
474k
         }
2511
2512
         inline void begin()
2513
16.0k
         {
2514
16.0k
            token_itr_ = token_list_.begin();
2515
16.0k
            store_token_itr_ = token_list_.begin();
2516
16.0k
         }
2517
2518
         inline void store()
2519
0
         {
2520
0
            store_token_itr_ = token_itr_;
2521
0
         }
2522
2523
         inline void restore()
2524
0
         {
2525
0
            token_itr_ = store_token_itr_;
2526
0
         }
2527
2528
         inline token_t& next_token()
2529
454k
         {
2530
454k
            if (token_list_.end() != token_itr_)
2531
448k
            {
2532
448k
               return *token_itr_++;
2533
448k
            }
2534
6.18k
            else
2535
6.18k
               return eof_token_;
2536
454k
         }
2537
2538
         inline token_t& peek_next_token()
2539
380k
         {
2540
380k
            if (token_list_.end() != token_itr_)
2541
374k
            {
2542
374k
               return *token_itr_;
2543
374k
            }
2544
5.51k
            else
2545
5.51k
               return eof_token_;
2546
380k
         }
2547
2548
         inline token_t& operator[](const std::size_t& index)
2549
30.6M
         {
2550
30.6M
            if (index < token_list_.size())
2551
30.6M
            {
2552
30.6M
               return token_list_[index];
2553
30.6M
            }
2554
0
            else
2555
0
               return eof_token_;
2556
30.6M
         }
2557
2558
         inline token_t operator[](const std::size_t& index) const
2559
0
         {
2560
0
            if (index < token_list_.size())
2561
0
            {
2562
0
               return token_list_[index];
2563
0
            }
2564
0
            else
2565
0
               return eof_token_;
2566
0
         }
2567
2568
         inline bool finished() const
2569
5.20k
         {
2570
5.20k
            return (token_list_.end() == token_itr_);
2571
5.20k
         }
2572
2573
         inline void insert_front(token_t::token_type tk_type)
2574
910
         {
2575
910
            if (
2576
910
                 !token_list_.empty() &&
2577
910
                 (token_list_.end() != token_itr_)
2578
910
               )
2579
910
            {
2580
910
               token_t t = *token_itr_;
2581
2582
910
               t.type     = tk_type;
2583
910
               token_itr_ = token_list_.insert(token_itr_,t);
2584
910
            }
2585
910
         }
2586
2587
         inline std::string substr(const std::size_t& begin, const std::size_t& end) const
2588
5.55k
         {
2589
5.55k
            const details::char_cptr begin_itr = ((base_itr_ + begin) < s_end_) ? (base_itr_ + begin) : s_end_;
2590
5.55k
            const details::char_cptr end_itr   = ((base_itr_ + end  ) < s_end_) ? (base_itr_ + end  ) : s_end_;
2591
2592
5.55k
            return std::string(begin_itr,end_itr);
2593
5.55k
         }
2594
2595
         inline std::string remaining() const
2596
0
         {
2597
0
            if (finished())
2598
0
               return "";
2599
0
            else if (token_list_.begin() != token_itr_)
2600
0
               return std::string(base_itr_ + (token_itr_ - 1)->position, s_end_);
2601
0
            else
2602
0
               return std::string(base_itr_ + token_itr_->position, s_end_);
2603
0
         }
2604
2605
      private:
2606
2607
         inline bool is_end(details::char_cptr itr) const
2608
85.5M
         {
2609
85.5M
            return (s_end_ == itr);
2610
85.5M
         }
2611
2612
         #ifndef exprtk_disable_comments
2613
         inline bool is_comment_start(details::char_cptr itr) const
2614
5.15M
         {
2615
5.15M
            const char_t c0 = *(itr + 0);
2616
5.15M
            const char_t c1 = *(itr + 1);
2617
2618
5.15M
            if ('#' == c0)
2619
78.3k
               return true;
2620
5.08M
            else if (!is_end(itr + 1))
2621
5.07M
            {
2622
5.07M
               if (('/' == c0) && ('/' == c1)) return true;
2623
5.07M
               if (('/' == c0) && ('*' == c1)) return true;
2624
5.07M
            }
2625
5.07M
            return false;
2626
5.15M
         }
2627
         #else
2628
         inline bool is_comment_start(details::char_cptr) const
2629
         {
2630
            return false;
2631
         }
2632
         #endif
2633
2634
         inline void skip_whitespace()
2635
485k
         {
2636
1.12M
            while (!is_end(s_itr_) && details::is_whitespace(*s_itr_))
2637
643k
            {
2638
643k
               ++s_itr_;
2639
643k
            }
2640
485k
         }
2641
2642
         inline void skip_comments()
2643
80.3k
         {
2644
80.3k
            #ifndef exprtk_disable_comments
2645
            // The following comment styles are supported:
2646
            // 1. // .... \n
2647
            // 2. #  .... \n
2648
            // 3. /* .... */
2649
80.3k
            struct test
2650
80.3k
            {
2651
80.3k
               static inline bool comment_start(const char_t c0, const char_t c1, int& mode, int& incr)
2652
80.3k
               {
2653
80.3k
                  mode = 0;
2654
80.3k
                  if      ('#' == c0)    { mode = 1; incr = 1; }
2655
1.94k
                  else if ('/' == c0)
2656
1.94k
                  {
2657
1.94k
                     if      ('/' == c1) { mode = 1; incr = 2; }
2658
246
                     else if ('*' == c1) { mode = 2; incr = 2; }
2659
1.94k
                  }
2660
80.3k
                  return (0 != mode);
2661
80.3k
               }
2662
2663
80.3k
               static inline bool comment_end(const char_t c0, const char_t c1, int& mode)
2664
3.88M
               {
2665
3.88M
                  if (
2666
3.88M
                       ((1 == mode) && ('\n' == c0)) ||
2667
3.88M
                       ((2 == mode) && ( '*' == c0) && ('/' == c1))
2668
3.88M
                     )
2669
80.1k
                  {
2670
80.1k
                     mode = 0;
2671
80.1k
                     return true;
2672
80.1k
                  }
2673
3.80M
                  else
2674
3.80M
                     return false;
2675
3.88M
               }
2676
80.3k
            };
2677
2678
80.3k
            int mode      = 0;
2679
80.3k
            int increment = 0;
2680
2681
80.3k
            if (is_end(s_itr_))
2682
0
               return;
2683
80.3k
            else if (!test::comment_start(*s_itr_, *(s_itr_ + 1), mode, increment))
2684
0
               return;
2685
2686
80.3k
            details::char_cptr cmt_start = s_itr_;
2687
2688
80.3k
            s_itr_ += increment;
2689
2690
3.88M
            while (!is_end(s_itr_))
2691
3.88M
            {
2692
3.88M
               if ((1 == mode) && test::comment_end(*s_itr_, 0, mode))
2693
79.9k
               {
2694
79.9k
                  ++s_itr_;
2695
79.9k
                  return;
2696
79.9k
               }
2697
2698
3.80M
               if ((2 == mode))
2699
770
               {
2700
770
                  if (!is_end((s_itr_ + 1)) && test::comment_end(*s_itr_, *(s_itr_ + 1), mode))
2701
200
                  {
2702
200
                     s_itr_ += 2;
2703
200
                     return;
2704
200
                  }
2705
770
               }
2706
2707
3.80M
               ++s_itr_;
2708
3.80M
            }
2709
2710
168
            if (2 == mode)
2711
46
            {
2712
46
               token_t t;
2713
46
               t.set_error(token::e_error, cmt_start, cmt_start + mode, base_itr_);
2714
46
               token_list_.push_back(t);
2715
46
            }
2716
168
            #endif
2717
168
         }
2718
2719
         inline bool next_is_digit(const details::char_cptr itr) const
2720
4.65k
         {
2721
4.65k
            return ((itr + 1) != s_end_) &&
2722
4.65k
                   details::is_digit(*(itr + 1));
2723
4.65k
         }
2724
2725
         inline void scan_token()
2726
5.64M
         {
2727
5.64M
            const char_t c = *s_itr_;
2728
2729
5.64M
            if (details::is_whitespace(c))
2730
485k
            {
2731
485k
               skip_whitespace();
2732
485k
               return;
2733
485k
            }
2734
5.15M
            else if (is_comment_start(s_itr_))
2735
80.3k
            {
2736
80.3k
               skip_comments();
2737
80.3k
               return;
2738
80.3k
            }
2739
5.07M
            else if (details::is_operator_char(c))
2740
3.31M
            {
2741
3.31M
               scan_operator();
2742
3.31M
               return;
2743
3.31M
            }
2744
1.76M
            else if (details::is_letter(c))
2745
912k
            {
2746
912k
               scan_symbol();
2747
912k
               return;
2748
912k
            }
2749
853k
            else if (('.' == c) && !next_is_digit(s_itr_))
2750
2.74k
            {
2751
2.74k
               scan_operator();
2752
2.74k
               return;
2753
2.74k
            }
2754
850k
            else if (details::is_digit(c) || ('.' == c))
2755
661k
            {
2756
661k
               scan_number();
2757
661k
               return;
2758
661k
            }
2759
188k
            else if ('$' == c)
2760
1.34k
            {
2761
1.34k
               scan_special_function();
2762
1.34k
               return;
2763
1.34k
            }
2764
187k
            #ifndef exprtk_disable_string_capabilities
2765
187k
            else if ('\'' == c)
2766
145k
            {
2767
145k
               scan_string();
2768
145k
               return;
2769
145k
            }
2770
42.3k
            #endif
2771
42.3k
            else if ('~' == c)
2772
41.9k
            {
2773
41.9k
               token_t t;
2774
41.9k
               t.set_symbol(s_itr_, s_itr_ + 1, base_itr_);
2775
41.9k
               token_list_.push_back(t);
2776
41.9k
               ++s_itr_;
2777
41.9k
               return;
2778
41.9k
            }
2779
380
            else
2780
380
            {
2781
380
               token_t t;
2782
380
               t.set_error(token::e_error, s_itr_, s_itr_ + 2, base_itr_);
2783
380
               token_list_.push_back(t);
2784
380
               ++s_itr_;
2785
380
            }
2786
5.64M
         }
2787
2788
         inline void scan_operator()
2789
3.31M
         {
2790
3.31M
            token_t t;
2791
2792
3.31M
            const char_t c0 = s_itr_[0];
2793
2794
3.31M
            if (!is_end(s_itr_ + 1))
2795
3.31M
            {
2796
3.31M
               const char_t c1 = s_itr_[1];
2797
2798
3.31M
               if (!is_end(s_itr_ + 2))
2799
3.30M
               {
2800
3.30M
                  const char_t c2 = s_itr_[2];
2801
2802
3.30M
                  if ((c0 == '<') && (c1 == '=') && (c2 == '>'))
2803
454
                  {
2804
454
                     t.set_operator(token_t::e_swap, s_itr_, s_itr_ + 3, base_itr_);
2805
454
                     token_list_.push_back(t);
2806
454
                     s_itr_ += 3;
2807
454
                     return;
2808
454
                  }
2809
3.30M
               }
2810
2811
3.31M
               token_t::token_type ttype = token_t::e_none;
2812
2813
3.31M
               if      ((c0 == '<') && (c1 == '=')) ttype = token_t::e_lte;
2814
3.31M
               else if ((c0 == '>') && (c1 == '=')) ttype = token_t::e_gte;
2815
3.30M
               else if ((c0 == '<') && (c1 == '>')) ttype = token_t::e_ne;
2816
3.29M
               else if ((c0 == '!') && (c1 == '=')) ttype = token_t::e_ne;
2817
3.29M
               else if ((c0 == '=') && (c1 == '=')) ttype = token_t::e_eq;
2818
3.29M
               else if ((c0 == ':') && (c1 == '=')) ttype = token_t::e_assign;
2819
3.29M
               else if ((c0 == '<') && (c1 == '<')) ttype = token_t::e_shl;
2820
3.26M
               else if ((c0 == '>') && (c1 == '>')) ttype = token_t::e_shr;
2821
3.26M
               else if ((c0 == '+') && (c1 == '=')) ttype = token_t::e_addass;
2822
3.12M
               else if ((c0 == '-') && (c1 == '=')) ttype = token_t::e_subass;
2823
3.12M
               else if ((c0 == '*') && (c1 == '=')) ttype = token_t::e_mulass;
2824
3.12M
               else if ((c0 == '/') && (c1 == '=')) ttype = token_t::e_divass;
2825
3.12M
               else if ((c0 == '%') && (c1 == '=')) ttype = token_t::e_modass;
2826
2827
3.31M
               if (token_t::e_none != ttype)
2828
189k
               {
2829
189k
                  t.set_operator(ttype, s_itr_, s_itr_ + 2, base_itr_);
2830
189k
                  token_list_.push_back(t);
2831
189k
                  s_itr_ += 2;
2832
189k
                  return;
2833
189k
               }
2834
3.31M
            }
2835
2836
3.12M
            if ('<' == c0)
2837
91.3k
               t.set_operator(token_t::e_lt , s_itr_, s_itr_ + 1, base_itr_);
2838
3.03M
            else if ('>' == c0)
2839
76.3k
               t.set_operator(token_t::e_gt , s_itr_, s_itr_ + 1, base_itr_);
2840
2.95M
            else if (';' == c0)
2841
1.90k
               t.set_operator(token_t::e_eof, s_itr_, s_itr_ + 1, base_itr_);
2842
2.95M
            else if ('&' == c0)
2843
14.0k
               t.set_symbol(s_itr_, s_itr_ + 1, base_itr_);
2844
2.94M
            else if ('|' == c0)
2845
5.00k
               t.set_symbol(s_itr_, s_itr_ + 1, base_itr_);
2846
2.93M
            else
2847
2.93M
               t.set_operator(token_t::token_type(c0), s_itr_, s_itr_ + 1, base_itr_);
2848
2849
3.12M
            token_list_.push_back(t);
2850
3.12M
            ++s_itr_;
2851
3.12M
         }
2852
2853
         inline void scan_symbol()
2854
912k
         {
2855
912k
            details::char_cptr initial_itr = s_itr_;
2856
2857
13.4M
            while (!is_end(s_itr_))
2858
13.4M
            {
2859
13.4M
               if (!details::is_letter_or_digit(*s_itr_) && ('_' != (*s_itr_)))
2860
912k
               {
2861
912k
                  if ('.' != (*s_itr_))
2862
909k
                     break;
2863
                  /*
2864
                     Permit symbols that contain a 'dot'
2865
                     Allowed   : abc.xyz, a123.xyz, abc.123, abc_.xyz a123_.xyz abc._123
2866
                     Disallowed: .abc, abc.<white-space>, abc.<eof>, abc.<operator +,-,*,/...>
2867
                  */
2868
2.65k
                  if (
2869
2.65k
                       (s_itr_ != initial_itr)                     &&
2870
2.65k
                       !is_end(s_itr_ + 1)                         &&
2871
2.65k
                       !details::is_letter_or_digit(*(s_itr_ + 1)) &&
2872
2.65k
                       ('_' != (*(s_itr_ + 1)))
2873
2.65k
                     )
2874
924
                     break;
2875
2.65k
               }
2876
2877
12.5M
               ++s_itr_;
2878
12.5M
            }
2879
2880
912k
            token_t t;
2881
912k
            t.set_symbol(initial_itr, s_itr_, base_itr_);
2882
912k
            token_list_.push_back(t);
2883
912k
         }
2884
2885
         inline void scan_number()
2886
661k
         {
2887
            /*
2888
               Attempt to match a valid numeric value in one of the following formats:
2889
               (01) 123456
2890
               (02) 123456.
2891
               (03) 123.456
2892
               (04) 123.456e3
2893
               (05) 123.456E3
2894
               (06) 123.456e+3
2895
               (07) 123.456E+3
2896
               (08) 123.456e-3
2897
               (09) 123.456E-3
2898
               (00) .1234
2899
               (11) .1234e3
2900
               (12) .1234E+3
2901
               (13) .1234e+3
2902
               (14) .1234E-3
2903
               (15) .1234e-3
2904
            */
2905
2906
661k
            details::char_cptr initial_itr = s_itr_;
2907
661k
            bool dot_found                 = false;
2908
661k
            bool e_found                   = false;
2909
661k
            bool post_e_sign_found         = false;
2910
661k
            bool post_e_digit_found        = false;
2911
661k
            token_t t;
2912
2913
12.9M
            while (!is_end(s_itr_))
2914
12.9M
            {
2915
12.9M
               if ('.' == (*s_itr_))
2916
2.57k
               {
2917
2.57k
                  if (dot_found)
2918
76
                  {
2919
76
                     t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_);
2920
76
                     token_list_.push_back(t);
2921
2922
76
                     return;
2923
76
                  }
2924
2925
2.50k
                  dot_found = true;
2926
2.50k
                  ++s_itr_;
2927
2928
2.50k
                  continue;
2929
2.57k
               }
2930
12.9M
               else if ('e' == std::tolower(*s_itr_))
2931
5.25k
               {
2932
5.25k
                  const char_t& c = *(s_itr_ + 1);
2933
2934
5.25k
                  if (is_end(s_itr_ + 1))
2935
102
                  {
2936
102
                     t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_);
2937
102
                     token_list_.push_back(t);
2938
2939
102
                     return;
2940
102
                  }
2941
5.15k
                  else if (
2942
5.15k
                            ('+' != c) &&
2943
5.15k
                            ('-' != c) &&
2944
5.15k
                            !details::is_digit(c)
2945
5.15k
                          )
2946
130
                  {
2947
130
                     t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_);
2948
130
                     token_list_.push_back(t);
2949
2950
130
                     return;
2951
130
                  }
2952
2953
5.02k
                  e_found = true;
2954
5.02k
                  ++s_itr_;
2955
2956
5.02k
                  continue;
2957
5.25k
               }
2958
12.8M
               else if (e_found && details::is_sign(*s_itr_) && !post_e_digit_found)
2959
2.03k
               {
2960
2.03k
                  if (post_e_sign_found)
2961
116
                  {
2962
116
                     t.set_error(token::e_err_number, initial_itr, s_itr_, base_itr_);
2963
116
                     token_list_.push_back(t);
2964
2965
116
                     return;
2966
116
                  }
2967
2968
1.92k
                  post_e_sign_found = true;
2969
1.92k
                  ++s_itr_;
2970
2971
1.92k
                  continue;
2972
2.03k
               }
2973
12.8M
               else if (e_found && details::is_digit(*s_itr_))
2974
2.02M
               {
2975
2.02M
                  post_e_digit_found = true;
2976
2.02M
                  ++s_itr_;
2977
2978
2.02M
                  continue;
2979
2.02M
               }
2980
10.8M
               else if (('.' != (*s_itr_)) && !details::is_digit(*s_itr_))
2981
658k
                  break;
2982
10.2M
               else
2983
10.2M
                  ++s_itr_;
2984
12.9M
            }
2985
2986
661k
            t.set_numeric(initial_itr, s_itr_, base_itr_);
2987
661k
            token_list_.push_back(t);
2988
2989
661k
            return;
2990
661k
         }
2991
2992
         inline void scan_special_function()
2993
1.34k
         {
2994
1.34k
            details::char_cptr initial_itr = s_itr_;
2995
1.34k
            token_t t;
2996
2997
            // $fdd(x,x,x) = at least 11 chars
2998
1.34k
            if (std::distance(s_itr_,s_end_) < 11)
2999
38
            {
3000
38
               t.set_error(
3001
38
                  token::e_err_sfunc,
3002
38
                  initial_itr, std::min(initial_itr + 11, s_end_),
3003
38
                  base_itr_);
3004
38
               token_list_.push_back(t);
3005
3006
38
               return;
3007
38
            }
3008
3009
1.31k
            if (
3010
1.31k
                 !(('$' == *s_itr_)                       &&
3011
1.31k
                   (details::imatch  ('f',*(s_itr_ + 1))) &&
3012
1.31k
                   (details::is_digit(*(s_itr_ + 2)))     &&
3013
1.31k
                   (details::is_digit(*(s_itr_ + 3))))
3014
1.31k
               )
3015
24
            {
3016
24
               t.set_error(
3017
24
                  token::e_err_sfunc,
3018
24
                  initial_itr, std::min(initial_itr + 4, s_end_),
3019
24
                  base_itr_);
3020
24
               token_list_.push_back(t);
3021
3022
24
               return;
3023
24
            }
3024
3025
1.28k
            s_itr_ += 4; // $fdd = 4chars
3026
3027
1.28k
            t.set_symbol(initial_itr, s_itr_, base_itr_);
3028
1.28k
            token_list_.push_back(t);
3029
3030
1.28k
            return;
3031
1.31k
         }
3032
3033
         #ifndef exprtk_disable_string_capabilities
3034
         inline void scan_string()
3035
145k
         {
3036
145k
            details::char_cptr initial_itr = s_itr_ + 1;
3037
145k
            token_t t;
3038
3039
145k
            if (std::distance(s_itr_,s_end_) < 2)
3040
18
            {
3041
18
               t.set_error(token::e_err_string, s_itr_, s_end_, base_itr_);
3042
18
               token_list_.push_back(t);
3043
3044
18
               return;
3045
18
            }
3046
3047
145k
            ++s_itr_;
3048
3049
145k
            bool escaped_found = false;
3050
145k
            bool escaped = false;
3051
3052
36.4M
            while (!is_end(s_itr_))
3053
36.4M
            {
3054
36.4M
               if (!details::is_valid_string_char(*s_itr_))
3055
150
               {
3056
150
                  t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
3057
150
                  token_list_.push_back(t);
3058
3059
150
                  return;
3060
150
               }
3061
36.4M
               else if (!escaped && ('\\' == *s_itr_))
3062
83.9k
               {
3063
83.9k
                  escaped_found = true;
3064
83.9k
                  escaped = true;
3065
83.9k
                  ++s_itr_;
3066
3067
83.9k
                  continue;
3068
83.9k
               }
3069
36.3M
               else if (!escaped)
3070
36.3M
               {
3071
36.3M
                  if ('\'' == *s_itr_)
3072
144k
                     break;
3073
36.3M
               }
3074
83.9k
               else if (escaped)
3075
83.9k
               {
3076
83.9k
                  if (
3077
83.9k
                       !is_end(s_itr_) && ('0' == *(s_itr_)) &&
3078
83.9k
                       ((s_itr_ + 4) <= s_end_)
3079
83.9k
                     )
3080
4.96k
                  {
3081
4.96k
                     const bool x_separator = ('X' == std::toupper(*(s_itr_ + 1)));
3082
3083
4.96k
                     const bool both_digits = details::is_hex_digit(*(s_itr_ + 2)) &&
3084
4.96k
                                              details::is_hex_digit(*(s_itr_ + 3)) ;
3085
3086
4.96k
                     if (!(x_separator && both_digits))
3087
162
                     {
3088
162
                        t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
3089
162
                        token_list_.push_back(t);
3090
3091
162
                        return;
3092
162
                     }
3093
4.79k
                     else
3094
4.79k
                        s_itr_ += 3;
3095
4.96k
                  }
3096
3097
83.8k
                  escaped = false;
3098
83.8k
               }
3099
3100
36.2M
               ++s_itr_;
3101
36.2M
            }
3102
3103
144k
            if (is_end(s_itr_))
3104
278
            {
3105
278
               t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
3106
278
               token_list_.push_back(t);
3107
3108
278
               return;
3109
278
            }
3110
3111
144k
            if (!escaped_found)
3112
138k
               t.set_string(initial_itr, s_itr_, base_itr_);
3113
5.65k
            else
3114
5.65k
            {
3115
5.65k
               std::string parsed_string(initial_itr,s_itr_);
3116
3117
5.65k
               if (!details::cleanup_escapes(parsed_string))
3118
0
               {
3119
0
                  t.set_error(token::e_err_string, initial_itr, s_itr_, base_itr_);
3120
0
                  token_list_.push_back(t);
3121
3122
0
                  return;
3123
0
               }
3124
3125
5.65k
               t.set_string(
3126
5.65k
                  parsed_string,
3127
5.65k
                  static_cast<std::size_t>(std::distance(base_itr_,initial_itr)));
3128
5.65k
            }
3129
3130
144k
            token_list_.push_back(t);
3131
144k
            ++s_itr_;
3132
3133
144k
            return;
3134
144k
         }
3135
         #endif
3136
3137
      private:
3138
3139
         token_list_t       token_list_;
3140
         token_list_itr_t   token_itr_;
3141
         token_list_itr_t   store_token_itr_;
3142
         token_t            eof_token_;
3143
         details::char_cptr base_itr_;
3144
         details::char_cptr s_itr_;
3145
         details::char_cptr s_end_;
3146
3147
         friend class token_scanner;
3148
         friend class token_modifier;
3149
         friend class token_inserter;
3150
         friend class token_joiner;
3151
      }; // class generator
3152
3153
      class helper_interface
3154
      {
3155
      public:
3156
3157
0
         virtual void init()                     {              }
3158
49.2k
         virtual void reset()                    {              }
3159
33.7k
         virtual bool result()                   { return true; }
3160
0
         virtual std::size_t process(generator&) { return 0;    }
3161
80.9k
         virtual ~helper_interface()             {              }
3162
      };
3163
3164
      class token_scanner : public helper_interface
3165
      {
3166
      public:
3167
3168
         virtual ~token_scanner() exprtk_override
3169
0
         {}
3170
3171
         explicit token_scanner(const std::size_t& stride)
3172
40.4k
         : stride_(stride)
3173
40.4k
         {
3174
40.4k
            if (stride > 4)
3175
0
            {
3176
0
               throw std::invalid_argument("token_scanner() - Invalid stride value");
3177
0
            }
3178
40.4k
         }
3179
3180
         inline std::size_t process(generator& g) exprtk_override
3181
32.1k
         {
3182
32.1k
            if (g.token_list_.size() >= stride_)
3183
30.1k
            {
3184
12.3M
               for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i)
3185
12.3M
               {
3186
12.3M
                  token t;
3187
3188
12.3M
                  switch (stride_)
3189
12.3M
                  {
3190
7.38M
                     case 1 :
3191
7.38M
                              {
3192
7.38M
                                 const token& t0 = g.token_list_[i];
3193
3194
7.38M
                                 if (!operator()(t0))
3195
161
                                 {
3196
161
                                    return 0;
3197
161
                                 }
3198
7.38M
                              }
3199
7.38M
                              break;
3200
3201
7.38M
                     case 2 :
3202
2.82M
                              {
3203
2.82M
                                 const token& t0 = g.token_list_[i    ];
3204
2.82M
                                 const token& t1 = g.token_list_[i + 1];
3205
3206
2.82M
                                 if (!operator()(t0, t1))
3207
0
                                 {
3208
0
                                    return 0;
3209
0
                                 }
3210
2.82M
                              }
3211
2.82M
                              break;
3212
3213
2.82M
                     case 3 :
3214
2.13M
                              {
3215
2.13M
                                 const token& t0 = g.token_list_[i    ];
3216
2.13M
                                 const token& t1 = g.token_list_[i + 1];
3217
2.13M
                                 const token& t2 = g.token_list_[i + 2];
3218
3219
2.13M
                                 if (!operator()(t0, t1, t2))
3220
0
                                 {
3221
0
                                    return 0;
3222
0
                                 }
3223
2.13M
                              }
3224
2.13M
                              break;
3225
3226
2.13M
                     case 4 :
3227
0
                              {
3228
0
                                 const token& t0 = g.token_list_[i    ];
3229
0
                                 const token& t1 = g.token_list_[i + 1];
3230
0
                                 const token& t2 = g.token_list_[i + 2];
3231
0
                                 const token& t3 = g.token_list_[i + 3];
3232
3233
0
                                 if (!operator()(t0, t1, t2, t3))
3234
0
                                 {
3235
0
                                    return 0;
3236
0
                                 }
3237
0
                              }
3238
0
                              break;
3239
12.3M
                  }
3240
12.3M
               }
3241
30.1k
            }
3242
3243
32.0k
            return 0;
3244
32.1k
         }
3245
3246
         virtual bool operator() (const token&)
3247
0
         {
3248
0
            return false;
3249
0
         }
3250
3251
         virtual bool operator() (const token&, const token&)
3252
0
         {
3253
0
            return false;
3254
0
         }
3255
3256
         virtual bool operator() (const token&, const token&, const token&)
3257
0
         {
3258
0
            return false;
3259
0
         }
3260
3261
         virtual bool operator() (const token&, const token&, const token&, const token&)
3262
0
         {
3263
0
            return false;
3264
0
         }
3265
3266
      private:
3267
3268
         const std::size_t stride_;
3269
      }; // class token_scanner
3270
3271
      class token_modifier : public helper_interface
3272
      {
3273
      public:
3274
3275
         inline std::size_t process(generator& g) exprtk_override
3276
8.44k
         {
3277
8.44k
            std::size_t changes = 0;
3278
3279
4.33M
            for (std::size_t i = 0; i < g.token_list_.size(); ++i)
3280
4.32M
            {
3281
4.32M
               if (modify(g.token_list_[i])) changes++;
3282
4.32M
            }
3283
3284
8.44k
            return changes;
3285
8.44k
         }
3286
3287
         virtual bool modify(token& t) = 0;
3288
      };
3289
3290
      class token_inserter : public helper_interface
3291
      {
3292
      public:
3293
3294
         explicit token_inserter(const std::size_t& stride)
3295
10.1k
         : stride_(stride)
3296
10.1k
         {
3297
10.1k
            if (stride > 5)
3298
0
            {
3299
0
               throw std::invalid_argument("token_inserter() - Invalid stride value");
3300
0
            }
3301
10.1k
         }
3302
3303
         inline std::size_t process(generator& g) exprtk_override
3304
8.44k
         {
3305
8.44k
            if (g.token_list_.empty())
3306
0
               return 0;
3307
8.44k
            else if (g.token_list_.size() < stride_)
3308
988
               return 0;
3309
3310
7.46k
            std::size_t changes = 0;
3311
3312
7.46k
            typedef std::pair<std::size_t, token> insert_t;
3313
7.46k
            std::vector<insert_t> insert_list;
3314
7.46k
            insert_list.reserve(10000);
3315
3316
4.07M
            for (std::size_t i = 0; i < (g.token_list_.size() - stride_ + 1); ++i)
3317
4.06M
            {
3318
4.06M
               int insert_index = -1;
3319
4.06M
               token t;
3320
3321
4.06M
               switch (stride_)
3322
4.06M
               {
3323
0
                  case 1 : insert_index = insert(g.token_list_[i],t);
3324
0
                           break;
3325
3326
4.06M
                  case 2 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], t);
3327
4.06M
                           break;
3328
3329
0
                  case 3 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], t);
3330
0
                           break;
3331
3332
0
                  case 4 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], t);
3333
0
                           break;
3334
3335
0
                  case 5 : insert_index = insert(g.token_list_[i], g.token_list_[i + 1], g.token_list_[i + 2], g.token_list_[i + 3], g.token_list_[i + 4], t);
3336
0
                           break;
3337
4.06M
               }
3338
3339
4.06M
               if ((insert_index >= 0) && (insert_index <= (static_cast<int>(stride_) + 1)))
3340
283k
               {
3341
283k
                  insert_list.push_back(insert_t(i, t));
3342
283k
                  changes++;
3343
283k
               }
3344
4.06M
            }
3345
3346
7.46k
            if (!insert_list.empty())
3347
2.31k
            {
3348
2.31k
               generator::token_list_t token_list;
3349
3350
2.31k
               std::size_t insert_index = 0;
3351
3352
3.99M
               for (std::size_t i = 0; i < g.token_list_.size(); ++i)
3353
3.99M
               {
3354
3.99M
                  token_list.push_back(g.token_list_[i]);
3355
3356
3.99M
                  if (
3357
3.99M
                       (insert_index < insert_list.size()) &&
3358
3.99M
                       (insert_list[insert_index].first == i)
3359
3.99M
                     )
3360
283k
                  {
3361
283k
                     token_list.push_back(insert_list[insert_index].second);
3362
283k
                     insert_index++;
3363
283k
                  }
3364
3.99M
               }
3365
3366
2.31k
               std::swap(g.token_list_,token_list);
3367
2.31k
            }
3368
3369
7.46k
            return changes;
3370
7.46k
         }
3371
3372
         #define token_inserter_empty_body \
3373
0
         {                                 \
3374
0
            return -1;                     \
3375
0
         }                                 \
Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token&)
Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token&)
Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token&)
Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token&)
Unexecuted instantiation: exprtk::lexer::token_inserter::insert(exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token const&, exprtk::lexer::token&)
3376
3377
         inline virtual int insert(const token&, token&)
3378
         token_inserter_empty_body
3379
3380
         inline virtual int insert(const token&, const token&, token&)
3381
         token_inserter_empty_body
3382
3383
         inline virtual int insert(const token&, const token&, const token&, token&)
3384
         token_inserter_empty_body
3385
3386
         inline virtual int insert(const token&, const token&, const token&, const token&, token&)
3387
         token_inserter_empty_body
3388
3389
         inline virtual int insert(const token&, const token&, const token&, const token&, const token&, token&)
3390
         token_inserter_empty_body
3391
3392
         #undef token_inserter_empty_body
3393
3394
      private:
3395
3396
         const std::size_t stride_;
3397
      };
3398
3399
      class token_joiner : public helper_interface
3400
      {
3401
      public:
3402
3403
         explicit token_joiner(const std::size_t& stride)
3404
20.2k
         : stride_(stride)
3405
20.2k
         {}
3406
3407
         inline std::size_t process(generator& g) exprtk_override
3408
16.8k
         {
3409
16.8k
            if (g.token_list_.empty())
3410
0
               return 0;
3411
3412
16.8k
            switch (stride_)
3413
16.8k
            {
3414
8.44k
               case 2  : return process_stride_2(g);
3415
8.44k
               case 3  : return process_stride_3(g);
3416
0
               default : return 0;
3417
16.8k
            }
3418
16.8k
         }
3419
3420
0
         virtual bool join(const token&, const token&, token&)               { return false; }
3421
0
         virtual bool join(const token&, const token&, const token&, token&) { return false; }
3422
3423
      private:
3424
3425
         inline std::size_t process_stride_2(generator& g)
3426
8.44k
         {
3427
8.44k
            if (g.token_list_.size() < 2)
3428
988
               return 0;
3429
3430
7.46k
            std::size_t changes = 0;
3431
3432
7.46k
            generator::token_list_t token_list;
3433
7.46k
            token_list.reserve(10000);
3434
3435
4.29M
            for (int i = 0; i < static_cast<int>(g.token_list_.size() - 1); ++i)
3436
4.28M
            {
3437
4.28M
               token t;
3438
3439
4.28M
               for ( ; ; )
3440
4.31M
               {
3441
4.31M
                  if (!join(g[i], g[i + 1], t))
3442
4.28M
                  {
3443
4.28M
                     token_list.push_back(g[i]);
3444
4.28M
                     break;
3445
4.28M
                  }
3446
3447
34.4k
                  token_list.push_back(t);
3448
3449
34.4k
                  ++changes;
3450
3451
34.4k
                  i += 2;
3452
3453
34.4k
                  if (static_cast<std::size_t>(i) >= (g.token_list_.size() - 1))
3454
118
                     break;
3455
34.4k
               }
3456
4.28M
            }
3457
3458
7.46k
            token_list.push_back(g.token_list_.back());
3459
3460
7.46k
            assert(token_list.size() <= g.token_list_.size());
3461
3462
7.46k
            std::swap(token_list, g.token_list_);
3463
3464
7.46k
            return changes;
3465
7.46k
         }
3466
3467
         inline std::size_t process_stride_3(generator& g)
3468
8.44k
         {
3469
8.44k
            if (g.token_list_.size() < 3)
3470
1.38k
               return 0;
3471
3472
7.06k
            std::size_t changes = 0;
3473
3474
7.06k
            generator::token_list_t token_list;
3475
7.06k
            token_list.reserve(10000);
3476
3477
4.31M
            for (int i = 0; i < static_cast<int>(g.token_list_.size() - 2); ++i)
3478
4.31M
            {
3479
4.31M
               token t;
3480
3481
4.31M
               for ( ; ; )
3482
4.31M
               {
3483
4.31M
                  if (!join(g[i], g[i + 1], g[i + 2], t))
3484
4.31M
                  {
3485
4.31M
                     token_list.push_back(g[i]);
3486
4.31M
                     break;
3487
4.31M
                  }
3488
3489
4
                  token_list.push_back(t);
3490
3491
4
                  ++changes;
3492
3493
4
                  i += 3;
3494
3495
4
                  if (static_cast<std::size_t>(i) >= (g.token_list_.size() - 2))
3496
4
                     break;
3497
4
               }
3498
4.31M
            }
3499
3500
7.06k
            token_list.push_back(*(g.token_list_.begin() + g.token_list_.size() - 2));
3501
7.06k
            token_list.push_back(*(g.token_list_.begin() + g.token_list_.size() - 1));
3502
3503
7.06k
            assert(token_list.size() <= g.token_list_.size());
3504
3505
7.06k
            std::swap(token_list, g.token_list_);
3506
3507
7.06k
            return changes;
3508
7.06k
         }
3509
3510
         const std::size_t stride_;
3511
      };
3512
3513
      namespace helper
3514
      {
3515
3516
         inline void dump(const lexer::generator& generator)
3517
0
         {
3518
0
            for (std::size_t i = 0; i < generator.size(); ++i)
3519
0
            {
3520
0
               const lexer::token& t = generator[i];
3521
0
               printf("Token[%02d] @ %03d  %6s  -->  '%s'\n",
3522
0
                      static_cast<int>(i),
3523
0
                      static_cast<int>(t.position),
3524
0
                      t.to_str(t.type).c_str(),
3525
0
                      t.value.c_str());
3526
0
            }
3527
0
         }
3528
3529
         class commutative_inserter : public lexer::token_inserter
3530
         {
3531
         public:
3532
3533
            using lexer::token_inserter::insert;
3534
3535
            commutative_inserter()
3536
10.1k
            : lexer::token_inserter(2)
3537
10.1k
            {}
3538
3539
            inline void ignore_symbol(const std::string& symbol)
3540
334k
            {
3541
334k
               ignore_set_.insert(symbol);
3542
334k
            }
3543
3544
            inline int insert(const lexer::token& t0, const lexer::token& t1, lexer::token& new_token) exprtk_override
3545
4.06M
            {
3546
4.06M
               bool match         = false;
3547
4.06M
               new_token.type     = lexer::token::e_mul;
3548
4.06M
               new_token.value    = "*";
3549
4.06M
               new_token.position = t1.position;
3550
3551
4.06M
               if (t0.type == lexer::token::e_symbol)
3552
742k
               {
3553
742k
                  if (ignore_set_.end() != ignore_set_.find(t0.value))
3554
20.5k
                  {
3555
20.5k
                     return -1;
3556
20.5k
                  }
3557
722k
                  else if (!t0.value.empty() && ('$' == t0.value[0]))
3558
248
                  {
3559
248
                     return -1;
3560
248
                  }
3561
742k
               }
3562
3563
4.04M
               if (t1.type == lexer::token::e_symbol)
3564
727k
               {
3565
727k
                  if (ignore_set_.end() != ignore_set_.find(t1.value))
3566
19.4k
                  {
3567
19.4k
                     return -1;
3568
19.4k
                  }
3569
727k
               }
3570
4.02M
               if      ((t0.type == lexer::token::e_number     ) && (t1.type == lexer::token::e_symbol     )) match = true;
3571
3.82M
               else if ((t0.type == lexer::token::e_number     ) && (t1.type == lexer::token::e_lbracket   )) match = true;
3572
3.82M
               else if ((t0.type == lexer::token::e_number     ) && (t1.type == lexer::token::e_lcrlbracket)) match = true;
3573
3.82M
               else if ((t0.type == lexer::token::e_number     ) && (t1.type == lexer::token::e_lsqrbracket)) match = true;
3574
3.82M
               else if ((t0.type == lexer::token::e_symbol     ) && (t1.type == lexer::token::e_number     )) match = true;
3575
3.80M
               else if ((t0.type == lexer::token::e_rbracket   ) && (t1.type == lexer::token::e_number     )) match = true;
3576
3.80M
               else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_number     )) match = true;
3577
3.80M
               else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_number     )) match = true;
3578
3.80M
               else if ((t0.type == lexer::token::e_rbracket   ) && (t1.type == lexer::token::e_symbol     )) match = true;
3579
3.79M
               else if ((t0.type == lexer::token::e_rcrlbracket) && (t1.type == lexer::token::e_symbol     )) match = true;
3580
3.79M
               else if ((t0.type == lexer::token::e_rsqrbracket) && (t1.type == lexer::token::e_symbol     )) match = true;
3581
3.79M
               else if ((t0.type == lexer::token::e_symbol     ) && (t1.type == lexer::token::e_symbol     )) match = true;
3582
3583
4.02M
               return (match) ? 1 : -1;
3584
4.04M
            }
3585
3586
         private:
3587
3588
            std::set<std::string,details::ilesscompare> ignore_set_;
3589
         };
3590
3591
         class operator_joiner exprtk_final : public token_joiner
3592
         {
3593
         public:
3594
3595
            explicit operator_joiner(const std::size_t& stride)
3596
20.2k
            : token_joiner(stride)
3597
20.2k
            {}
3598
3599
            inline bool join(const lexer::token& t0, const lexer::token& t1, lexer::token& t) exprtk_override
3600
4.31M
            {
3601
               // ': =' --> ':='
3602
4.31M
               if ((t0.type == lexer::token::e_colon) && (t1.type == lexer::token::e_eq))
3603
6
               {
3604
6
                  t.type     = lexer::token::e_assign;
3605
6
                  t.value    = ":=";
3606
6
                  t.position = t0.position;
3607
3608
6
                  return true;
3609
6
               }
3610
               // '+ =' --> '+='
3611
4.31M
               else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_eq))
3612
2
               {
3613
2
                  t.type     = lexer::token::e_addass;
3614
2
                  t.value    = "+=";
3615
2
                  t.position = t0.position;
3616
3617
2
                  return true;
3618
2
               }
3619
               // '- =' --> '-='
3620
4.31M
               else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_eq))
3621
4.79k
               {
3622
4.79k
                  t.type     = lexer::token::e_subass;
3623
4.79k
                  t.value    = "-=";
3624
4.79k
                  t.position = t0.position;
3625
3626
4.79k
                  return true;
3627
4.79k
               }
3628
               // '* =' --> '*='
3629
4.31M
               else if ((t0.type == lexer::token::e_mul) && (t1.type == lexer::token::e_eq))
3630
2
               {
3631
2
                  t.type     = lexer::token::e_mulass;
3632
2
                  t.value    = "*=";
3633
2
                  t.position = t0.position;
3634
3635
2
                  return true;
3636
2
               }
3637
               // '/ =' --> '/='
3638
4.31M
               else if ((t0.type == lexer::token::e_div) && (t1.type == lexer::token::e_eq))
3639
6
               {
3640
6
                  t.type     = lexer::token::e_divass;
3641
6
                  t.value    = "/=";
3642
6
                  t.position = t0.position;
3643
3644
6
                  return true;
3645
6
               }
3646
               // '% =' --> '%='
3647
4.31M
               else if ((t0.type == lexer::token::e_mod) && (t1.type == lexer::token::e_eq))
3648
2
               {
3649
2
                  t.type     = lexer::token::e_modass;
3650
2
                  t.value    = "%=";
3651
2
                  t.position = t0.position;
3652
3653
2
                  return true;
3654
2
               }
3655
               // '> =' --> '>='
3656
4.31M
               else if ((t0.type == lexer::token::e_gt) && (t1.type == lexer::token::e_eq))
3657
4
               {
3658
4
                  t.type     = lexer::token::e_gte;
3659
4
                  t.value    = ">=";
3660
4
                  t.position = t0.position;
3661
3662
4
                  return true;
3663
4
               }
3664
               // '< =' --> '<='
3665
4.31M
               else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_eq))
3666
2
               {
3667
2
                  t.type     = lexer::token::e_lte;
3668
2
                  t.value    = "<=";
3669
2
                  t.position = t0.position;
3670
3671
2
                  return true;
3672
2
               }
3673
               // '= =' --> '=='
3674
4.31M
               else if ((t0.type == lexer::token::e_eq) && (t1.type == lexer::token::e_eq))
3675
194
               {
3676
194
                  t.type     = lexer::token::e_eq;
3677
194
                  t.value    = "==";
3678
194
                  t.position = t0.position;
3679
3680
194
                  return true;
3681
194
               }
3682
               // '! =' --> '!='
3683
4.31M
               else if ((static_cast<details::char_t>(t0.type) == '!') && (t1.type == lexer::token::e_eq))
3684
10
               {
3685
10
                  t.type     = lexer::token::e_ne;
3686
10
                  t.value    = "!=";
3687
10
                  t.position = t0.position;
3688
3689
10
                  return true;
3690
10
               }
3691
               // '< >' --> '<>'
3692
4.31M
               else if ((t0.type == lexer::token::e_lt) && (t1.type == lexer::token::e_gt))
3693
2
               {
3694
2
                  t.type     = lexer::token::e_ne;
3695
2
                  t.value    = "<>";
3696
2
                  t.position = t0.position;
3697
3698
2
                  return true;
3699
2
               }
3700
               // '<= >' --> '<=>'
3701
4.31M
               else if ((t0.type == lexer::token::e_lte) && (t1.type == lexer::token::e_gt))
3702
2
               {
3703
2
                  t.type     = lexer::token::e_swap;
3704
2
                  t.value    = "<=>";
3705
2
                  t.position = t0.position;
3706
3707
2
                  return true;
3708
2
               }
3709
               // '+ -' --> '-'
3710
4.31M
               else if ((t0.type == lexer::token::e_add) && (t1.type == lexer::token::e_sub))
3711
185
               {
3712
185
                  t.type     = lexer::token::e_sub;
3713
185
                  t.value    = "-";
3714
185
                  t.position = t0.position;
3715
3716
185
                  return true;
3717
185
               }
3718
               // '- +' --> '-'
3719
4.31M
               else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_add))
3720
156
               {
3721
156
                  t.type     = lexer::token::e_sub;
3722
156
                  t.value    = "-";
3723
156
                  t.position = t0.position;
3724
3725
156
                  return true;
3726
156
               }
3727
               // '- -' --> '+'
3728
4.31M
               else if ((t0.type == lexer::token::e_sub) && (t1.type == lexer::token::e_sub))
3729
29.1k
               {
3730
                  /*
3731
                     Note: May need to reconsider this when wanting to implement
3732
                     pre/postfix decrement operator
3733
                  */
3734
29.1k
                  t.type     = lexer::token::e_add;
3735
29.1k
                  t.value    = "+";
3736
29.1k
                  t.position = t0.position;
3737
3738
29.1k
                  return true;
3739
29.1k
               }
3740
4.28M
               else
3741
4.28M
                  return false;
3742
4.31M
            }
3743
3744
            inline bool join(const lexer::token& t0,
3745
                             const lexer::token& t1,
3746
                             const lexer::token& t2,
3747
                             lexer::token& t) exprtk_override
3748
4.31M
            {
3749
               // '[ * ]' --> '[*]'
3750
4.31M
               if (
3751
4.31M
                    (t0.type == lexer::token::e_lsqrbracket) &&
3752
4.31M
                    (t1.type == lexer::token::e_mul        ) &&
3753
4.31M
                    (t2.type == lexer::token::e_rsqrbracket)
3754
4.31M
                  )
3755
4
               {
3756
4
                  t.type     = lexer::token::e_symbol;
3757
4
                  t.value    = "[*]";
3758
4
                  t.position = t0.position;
3759
3760
4
                  return true;
3761
4
               }
3762
4.31M
               else
3763
4.31M
                  return false;
3764
4.31M
            }
3765
         };
3766
3767
         class bracket_checker exprtk_final : public lexer::token_scanner
3768
         {
3769
         public:
3770
3771
            using lexer::token_scanner::operator();
3772
3773
            bracket_checker()
3774
10.1k
            : token_scanner(1)
3775
10.1k
            , state_(true)
3776
10.1k
            {}
3777
3778
            bool result() exprtk_override
3779
8.29k
            {
3780
8.29k
               if (!stack_.empty())
3781
204
               {
3782
204
                  lexer::token t;
3783
204
                  t.value      = stack_.top().first;
3784
204
                  t.position   = stack_.top().second;
3785
204
                  error_token_ = t;
3786
204
                  state_       = false;
3787
3788
204
                  return false;
3789
204
               }
3790
8.09k
               else
3791
8.09k
                  return state_;
3792
8.29k
            }
3793
3794
            lexer::token error_token() const
3795
706
            {
3796
706
               return error_token_;
3797
706
            }
3798
3799
            void reset() exprtk_override
3800
8.29k
            {
3801
               // Why? because msvc doesn't support swap properly.
3802
8.29k
               stack_ = std::stack<std::pair<char,std::size_t> >();
3803
8.29k
               state_ = true;
3804
8.29k
               error_token_.clear();
3805
8.29k
            }
3806
3807
            bool operator() (const lexer::token& t) exprtk_override
3808
3.05M
            {
3809
3.05M
               if (
3810
3.05M
                    !t.value.empty()                       &&
3811
3.05M
                    (lexer::token::e_string != t.type)     &&
3812
3.05M
                    (lexer::token::e_symbol != t.type)     &&
3813
3.05M
                    exprtk::details::is_bracket(t.value[0])
3814
3.05M
                  )
3815
60.6k
               {
3816
60.6k
                  details::char_t c = t.value[0];
3817
3818
60.6k
                  if      (t.type == lexer::token::e_lbracket   ) stack_.push(std::make_pair(')',t.position));
3819
53.3k
                  else if (t.type == lexer::token::e_lcrlbracket) stack_.push(std::make_pair('}',t.position));
3820
46.9k
                  else if (t.type == lexer::token::e_lsqrbracket) stack_.push(std::make_pair(']',t.position));
3821
13.3k
                  else if (exprtk::details::is_right_bracket(c))
3822
13.3k
                  {
3823
13.3k
                     if (stack_.empty())
3824
149
                     {
3825
149
                        state_       = false;
3826
149
                        error_token_ = t;
3827
3828
149
                        return false;
3829
149
                     }
3830
13.1k
                     else if (c != stack_.top().first)
3831
12
                     {
3832
12
                        state_       = false;
3833
12
                        error_token_ = t;
3834
3835
12
                        return false;
3836
12
                     }
3837
13.1k
                     else
3838
13.1k
                        stack_.pop();
3839
13.3k
                  }
3840
60.6k
               }
3841
3842
3.05M
               return true;
3843
3.05M
            }
3844
3845
         private:
3846
3847
            bool state_;
3848
            std::stack<std::pair<char,std::size_t> > stack_;
3849
            lexer::token error_token_;
3850
         };
3851
3852
         template <typename T>
3853
         class numeric_checker exprtk_final : public lexer::token_scanner
3854
         {
3855
         public:
3856
3857
            using lexer::token_scanner::operator();
3858
3859
            numeric_checker()
3860
10.1k
            : token_scanner (1)
3861
10.1k
            , current_index_(0)
3862
10.1k
            {}
exprtk::lexer::helper::numeric_checker<double>::numeric_checker()
Line
Count
Source
3860
5.06k
            : token_scanner (1)
3861
5.06k
            , current_index_(0)
3862
5.06k
            {}
exprtk::lexer::helper::numeric_checker<float>::numeric_checker()
Line
Count
Source
3860
5.06k
            : token_scanner (1)
3861
5.06k
            , current_index_(0)
3862
5.06k
            {}
3863
3864
            bool result() exprtk_override
3865
8.44k
            {
3866
8.44k
               return error_list_.empty();
3867
8.44k
            }
exprtk::lexer::helper::numeric_checker<double>::result()
Line
Count
Source
3865
4.22k
            {
3866
4.22k
               return error_list_.empty();
3867
4.22k
            }
exprtk::lexer::helper::numeric_checker<float>::result()
Line
Count
Source
3865
4.22k
            {
3866
4.22k
               return error_list_.empty();
3867
4.22k
            }
3868
3869
            void reset() exprtk_override
3870
8.44k
            {
3871
8.44k
               error_list_.clear();
3872
8.44k
               current_index_ = 0;
3873
8.44k
            }
exprtk::lexer::helper::numeric_checker<double>::reset()
Line
Count
Source
3870
4.22k
            {
3871
4.22k
               error_list_.clear();
3872
4.22k
               current_index_ = 0;
3873
4.22k
            }
exprtk::lexer::helper::numeric_checker<float>::reset()
Line
Count
Source
3870
4.22k
            {
3871
4.22k
               error_list_.clear();
3872
4.22k
               current_index_ = 0;
3873
4.22k
            }
3874
3875
            bool operator() (const lexer::token& t) exprtk_override
3876
4.32M
            {
3877
4.32M
               if (token::e_number == t.type)
3878
532k
               {
3879
532k
                  T v;
3880
3881
532k
                  if (!exprtk::details::string_to_real(t.value,v))
3882
607
                  {
3883
607
                     error_list_.push_back(current_index_);
3884
607
                  }
3885
532k
               }
3886
3887
4.32M
               ++current_index_;
3888
3889
4.32M
               return true;
3890
4.32M
            }
exprtk::lexer::helper::numeric_checker<double>::operator()(exprtk::lexer::token const&)
Line
Count
Source
3876
2.44M
            {
3877
2.44M
               if (token::e_number == t.type)
3878
314k
               {
3879
314k
                  T v;
3880
3881
314k
                  if (!exprtk::details::string_to_real(t.value,v))
3882
275
                  {
3883
275
                     error_list_.push_back(current_index_);
3884
275
                  }
3885
314k
               }
3886
3887
2.44M
               ++current_index_;
3888
3889
2.44M
               return true;
3890
2.44M
            }
exprtk::lexer::helper::numeric_checker<float>::operator()(exprtk::lexer::token const&)
Line
Count
Source
3876
1.88M
            {
3877
1.88M
               if (token::e_number == t.type)
3878
218k
               {
3879
218k
                  T v;
3880
3881
218k
                  if (!exprtk::details::string_to_real(t.value,v))
3882
332
                  {
3883
332
                     error_list_.push_back(current_index_);
3884
332
                  }
3885
218k
               }
3886
3887
1.88M
               ++current_index_;
3888
3889
1.88M
               return true;
3890
1.88M
            }
3891
3892
            std::size_t error_count() const
3893
917
            {
3894
917
               return error_list_.size();
3895
917
            }
exprtk::lexer::helper::numeric_checker<double>::error_count() const
Line
Count
Source
3893
397
            {
3894
397
               return error_list_.size();
3895
397
            }
exprtk::lexer::helper::numeric_checker<float>::error_count() const
Line
Count
Source
3893
520
            {
3894
520
               return error_list_.size();
3895
520
            }
3896
3897
            std::size_t error_index(const std::size_t& i) const
3898
607
            {
3899
607
               if (i < error_list_.size())
3900
607
                  return error_list_[i];
3901
0
               else
3902
0
                  return std::numeric_limits<std::size_t>::max();
3903
607
            }
exprtk::lexer::helper::numeric_checker<double>::error_index(unsigned long const&) const
Line
Count
Source
3898
275
            {
3899
275
               if (i < error_list_.size())
3900
275
                  return error_list_[i];
3901
0
               else
3902
0
                  return std::numeric_limits<std::size_t>::max();
3903
275
            }
exprtk::lexer::helper::numeric_checker<float>::error_index(unsigned long const&) const
Line
Count
Source
3898
332
            {
3899
332
               if (i < error_list_.size())
3900
332
                  return error_list_[i];
3901
0
               else
3902
0
                  return std::numeric_limits<std::size_t>::max();
3903
332
            }
3904
3905
            void clear_errors()
3906
155
            {
3907
155
               error_list_.clear();
3908
155
            }
exprtk::lexer::helper::numeric_checker<double>::clear_errors()
Line
Count
Source
3906
61
            {
3907
61
               error_list_.clear();
3908
61
            }
exprtk::lexer::helper::numeric_checker<float>::clear_errors()
Line
Count
Source
3906
94
            {
3907
94
               error_list_.clear();
3908
94
            }
3909
3910
         private:
3911
3912
            std::size_t current_index_;
3913
            std::vector<std::size_t> error_list_;
3914
         };
3915
3916
         class symbol_replacer exprtk_final : public lexer::token_modifier
3917
         {
3918
         private:
3919
3920
            typedef std::map<std::string,std::pair<std::string,token::token_type>,details::ilesscompare> replace_map_t;
3921
3922
         public:
3923
3924
            bool remove(const std::string& target_symbol)
3925
0
            {
3926
0
               const replace_map_t::iterator itr = replace_map_.find(target_symbol);
3927
0
3928
0
               if (replace_map_.end() == itr)
3929
0
                  return false;
3930
0
3931
0
               replace_map_.erase(itr);
3932
0
3933
0
               return true;
3934
0
            }
3935
3936
            bool add_replace(const std::string& target_symbol,
3937
                             const std::string& replace_symbol,
3938
                             const lexer::token::token_type token_type = lexer::token::e_symbol)
3939
20.2k
            {
3940
20.2k
               const replace_map_t::iterator itr = replace_map_.find(target_symbol);
3941
3942
20.2k
               if (replace_map_.end() != itr)
3943
0
               {
3944
0
                  return false;
3945
0
               }
3946
3947
20.2k
               replace_map_[target_symbol] = std::make_pair(replace_symbol,token_type);
3948
3949
20.2k
               return true;
3950
20.2k
            }
3951
3952
            void clear()
3953
10.1k
            {
3954
10.1k
               replace_map_.clear();
3955
10.1k
            }
3956
3957
         private:
3958
3959
            bool modify(lexer::token& t) exprtk_override
3960
4.32M
            {
3961
4.32M
               if (lexer::token::e_symbol == t.type)
3962
745k
               {
3963
745k
                  if (replace_map_.empty())
3964
0
                     return false;
3965
3966
745k
                  const replace_map_t::iterator itr = replace_map_.find(t.value);
3967
3968
745k
                  if (replace_map_.end() != itr)
3969
2
                  {
3970
2
                     t.value = itr->second.first;
3971
2
                     t.type  = itr->second.second;
3972
3973
2
                     return true;
3974
2
                  }
3975
745k
               }
3976
3977
4.32M
               return false;
3978
4.32M
            }
3979
3980
            replace_map_t replace_map_;
3981
         };
3982
3983
         class sequence_validator exprtk_final : public lexer::token_scanner
3984
         {
3985
         private:
3986
3987
            typedef std::pair<lexer::token::token_type,lexer::token::token_type> token_pair_t;
3988
            typedef std::set<token_pair_t> set_t;
3989
3990
         public:
3991
3992
            using lexer::token_scanner::operator();
3993
3994
            sequence_validator()
3995
10.1k
            : lexer::token_scanner(2)
3996
10.1k
            {
3997
10.1k
               add_invalid(lexer::token::e_number, lexer::token::e_number);
3998
10.1k
               add_invalid(lexer::token::e_string, lexer::token::e_string);
3999
10.1k
               add_invalid(lexer::token::e_number, lexer::token::e_string);
4000
10.1k
               add_invalid(lexer::token::e_string, lexer::token::e_number);
4001
4002
10.1k
               add_invalid_set1(lexer::token::e_assign );
4003
10.1k
               add_invalid_set1(lexer::token::e_shr    );
4004
10.1k
               add_invalid_set1(lexer::token::e_shl    );
4005
10.1k
               add_invalid_set1(lexer::token::e_lte    );
4006
10.1k
               add_invalid_set1(lexer::token::e_ne     );
4007
10.1k
               add_invalid_set1(lexer::token::e_gte    );
4008
10.1k
               add_invalid_set1(lexer::token::e_lt     );
4009
10.1k
               add_invalid_set1(lexer::token::e_gt     );
4010
10.1k
               add_invalid_set1(lexer::token::e_eq     );
4011
10.1k
               add_invalid_set1(lexer::token::e_comma  );
4012
10.1k
               add_invalid_set1(lexer::token::e_add    );
4013
10.1k
               add_invalid_set1(lexer::token::e_sub    );
4014
10.1k
               add_invalid_set1(lexer::token::e_div    );
4015
10.1k
               add_invalid_set1(lexer::token::e_mul    );
4016
10.1k
               add_invalid_set1(lexer::token::e_mod    );
4017
10.1k
               add_invalid_set1(lexer::token::e_pow    );
4018
10.1k
               add_invalid_set1(lexer::token::e_colon  );
4019
10.1k
               add_invalid_set1(lexer::token::e_ternary);
4020
10.1k
            }
4021
4022
            bool result() exprtk_override
4023
7.94k
            {
4024
7.94k
               return error_list_.empty();
4025
7.94k
            }
4026
4027
            bool operator() (const lexer::token& t0, const lexer::token& t1) exprtk_override
4028
2.82M
            {
4029
2.82M
               const set_t::value_type p = std::make_pair(t0.type,t1.type);
4030
4031
2.82M
               if (invalid_bracket_check(t0.type,t1.type))
4032
21
               {
4033
21
                  error_list_.push_back(std::make_pair(t0,t1));
4034
21
               }
4035
2.82M
               else if (invalid_comb_.find(p) != invalid_comb_.end())
4036
23.7k
               {
4037
23.7k
                  error_list_.push_back(std::make_pair(t0,t1));
4038
23.7k
               }
4039
4040
2.82M
               return true;
4041
2.82M
            }
4042
4043
            std::size_t error_count() const
4044
24.6k
            {
4045
24.6k
               return error_list_.size();
4046
24.6k
            }
4047
4048
            std::pair<lexer::token,lexer::token> error(const std::size_t index)
4049
23.7k
            {
4050
23.7k
               if (index < error_list_.size())
4051
23.7k
               {
4052
23.7k
                  return error_list_[index];
4053
23.7k
               }
4054
0
               else
4055
0
               {
4056
0
                  static const lexer::token error_token;
4057
0
                  return std::make_pair(error_token,error_token);
4058
0
               }
4059
23.7k
            }
4060
4061
            void clear_errors()
4062
435
            {
4063
435
               error_list_.clear();
4064
435
            }
4065
4066
         private:
4067
4068
            void add_invalid(const lexer::token::token_type base, const lexer::token::token_type t)
4069
2.77M
            {
4070
2.77M
               invalid_comb_.insert(std::make_pair(base,t));
4071
2.77M
            }
4072
4073
            void add_invalid_set1(const lexer::token::token_type t)
4074
182k
            {
4075
182k
               add_invalid(t, lexer::token::e_assign);
4076
182k
               add_invalid(t, lexer::token::e_shr   );
4077
182k
               add_invalid(t, lexer::token::e_shl   );
4078
182k
               add_invalid(t, lexer::token::e_lte   );
4079
182k
               add_invalid(t, lexer::token::e_ne    );
4080
182k
               add_invalid(t, lexer::token::e_gte   );
4081
182k
               add_invalid(t, lexer::token::e_lt    );
4082
182k
               add_invalid(t, lexer::token::e_gt    );
4083
182k
               add_invalid(t, lexer::token::e_eq    );
4084
182k
               add_invalid(t, lexer::token::e_comma );
4085
182k
               add_invalid(t, lexer::token::e_div   );
4086
182k
               add_invalid(t, lexer::token::e_mul   );
4087
182k
               add_invalid(t, lexer::token::e_mod   );
4088
182k
               add_invalid(t, lexer::token::e_pow   );
4089
182k
               add_invalid(t, lexer::token::e_colon );
4090
182k
            }
4091
4092
            bool invalid_bracket_check(const lexer::token::token_type base, const lexer::token::token_type t)
4093
2.82M
            {
4094
2.82M
               if (details::is_right_bracket(static_cast<details::char_t>(base)))
4095
6.46k
               {
4096
6.46k
                  switch (t)
4097
6.46k
                  {
4098
0
                     case lexer::token::e_assign : return (']' != base);
4099
0
                     case lexer::token::e_string : return (')' != base);
4100
6.46k
                     default                     : return false;
4101
6.46k
                  }
4102
6.46k
               }
4103
2.82M
               else if (details::is_left_bracket(static_cast<details::char_t>(base)))
4104
6.61k
               {
4105
6.61k
                  if (details::is_right_bracket(static_cast<details::char_t>(t)))
4106
86
                     return false;
4107
6.52k
                  else if (details::is_left_bracket(static_cast<details::char_t>(t)))
4108
19
                     return false;
4109
6.50k
                  else
4110
6.50k
                  {
4111
6.50k
                     switch (t)
4112
6.50k
                     {
4113
427
                        case lexer::token::e_number  : return false;
4114
5.89k
                        case lexer::token::e_symbol  : return false;
4115
2
                        case lexer::token::e_string  : return false;
4116
20
                        case lexer::token::e_add     : return false;
4117
134
                        case lexer::token::e_sub     : return false;
4118
16
                        case lexer::token::e_colon   : return false;
4119
2
                        case lexer::token::e_ternary : return false;
4120
10
                        default                      : return true ;
4121
6.50k
                     }
4122
6.50k
                  }
4123
6.61k
               }
4124
2.81M
               else if (details::is_right_bracket(static_cast<details::char_t>(t)))
4125
6.51k
               {
4126
6.51k
                  switch (base)
4127
6.51k
                  {
4128
2.53k
                     case lexer::token::e_number  : return false;
4129
3.92k
                     case lexer::token::e_symbol  : return false;
4130
2
                     case lexer::token::e_string  : return false;
4131
4
                     case lexer::token::e_eof     : return false;
4132
30
                     case lexer::token::e_colon   : return false;
4133
2
                     case lexer::token::e_ternary : return false;
4134
11
                     default                      : return true ;
4135
6.51k
                  }
4136
6.51k
               }
4137
2.81M
               else if (details::is_left_bracket(static_cast<details::char_t>(t)))
4138
6.18k
               {
4139
6.18k
                  switch (base)
4140
6.18k
                  {
4141
0
                     case lexer::token::e_rbracket    : return true;
4142
0
                     case lexer::token::e_rsqrbracket : return true;
4143
0
                     case lexer::token::e_rcrlbracket : return true;
4144
6.18k
                     default                          : return false;
4145
6.18k
                  }
4146
6.18k
               }
4147
4148
2.80M
               return false;
4149
2.82M
            }
4150
4151
            set_t invalid_comb_;
4152
            std::vector<std::pair<lexer::token,lexer::token> > error_list_;
4153
         };
4154
4155
         class sequence_validator_3tokens exprtk_final : public lexer::token_scanner
4156
         {
4157
         private:
4158
4159
            typedef lexer::token::token_type token_t;
4160
            typedef std::pair<token_t,std::pair<token_t,token_t> > token_triplet_t;
4161
            typedef std::set<token_triplet_t> set_t;
4162
4163
         public:
4164
4165
            using lexer::token_scanner::operator();
4166
4167
            sequence_validator_3tokens()
4168
10.1k
            : lexer::token_scanner(3)
4169
10.1k
            {
4170
10.1k
               add_invalid(lexer::token::e_number , lexer::token::e_number , lexer::token::e_number);
4171
10.1k
               add_invalid(lexer::token::e_string , lexer::token::e_string , lexer::token::e_string);
4172
10.1k
               add_invalid(lexer::token::e_comma  , lexer::token::e_comma  , lexer::token::e_comma );
4173
4174
10.1k
               add_invalid(lexer::token::e_add    , lexer::token::e_add    , lexer::token::e_add   );
4175
10.1k
               add_invalid(lexer::token::e_sub    , lexer::token::e_sub    , lexer::token::e_sub   );
4176
10.1k
               add_invalid(lexer::token::e_div    , lexer::token::e_div    , lexer::token::e_div   );
4177
10.1k
               add_invalid(lexer::token::e_mul    , lexer::token::e_mul    , lexer::token::e_mul   );
4178
10.1k
               add_invalid(lexer::token::e_mod    , lexer::token::e_mod    , lexer::token::e_mod   );
4179
10.1k
               add_invalid(lexer::token::e_pow    , lexer::token::e_pow    , lexer::token::e_pow   );
4180
4181
10.1k
               add_invalid(lexer::token::e_add    , lexer::token::e_sub    , lexer::token::e_add   );
4182
10.1k
               add_invalid(lexer::token::e_sub    , lexer::token::e_add    , lexer::token::e_sub   );
4183
10.1k
               add_invalid(lexer::token::e_div    , lexer::token::e_mul    , lexer::token::e_div   );
4184
10.1k
               add_invalid(lexer::token::e_mul    , lexer::token::e_div    , lexer::token::e_mul   );
4185
10.1k
               add_invalid(lexer::token::e_mod    , lexer::token::e_pow    , lexer::token::e_mod   );
4186
10.1k
               add_invalid(lexer::token::e_pow    , lexer::token::e_mod    , lexer::token::e_pow   );
4187
10.1k
            }
4188
4189
            bool result() exprtk_override
4190
7.50k
            {
4191
7.50k
               return error_list_.empty();
4192
7.50k
            }
4193
4194
            bool operator() (const lexer::token& t0, const lexer::token& t1, const lexer::token& t2) exprtk_override
4195
2.13M
            {
4196
2.13M
               const set_t::value_type p = std::make_pair(t0.type,std::make_pair(t1.type,t2.type));
4197
4198
2.13M
               if (invalid_comb_.find(p) != invalid_comb_.end())
4199
532
               {
4200
532
                  error_list_.push_back(std::make_pair(t0,t1));
4201
532
               }
4202
4203
2.13M
               return true;
4204
2.13M
            }
4205
4206
            std::size_t error_count() const
4207
604
            {
4208
604
               return error_list_.size();
4209
604
            }
4210
4211
            std::pair<lexer::token,lexer::token> error(const std::size_t index)
4212
532
            {
4213
532
               if (index < error_list_.size())
4214
532
               {
4215
532
                  return error_list_[index];
4216
532
               }
4217
0
               else
4218
0
               {
4219
0
                  static const lexer::token error_token;
4220
0
                  return std::make_pair(error_token,error_token);
4221
0
               }
4222
532
            }
4223
4224
            void clear_errors()
4225
36
            {
4226
36
               error_list_.clear();
4227
36
            }
4228
4229
         private:
4230
4231
            void add_invalid(const token_t t0, const token_t t1, const token_t t2)
4232
151k
            {
4233
151k
               invalid_comb_.insert(std::make_pair(t0,std::make_pair(t1,t2)));
4234
151k
            }
4235
4236
            set_t invalid_comb_;
4237
            std::vector<std::pair<lexer::token,lexer::token> > error_list_;
4238
         };
4239
4240
         struct helper_assembly
4241
         {
4242
            inline bool register_scanner(lexer::token_scanner* scanner)
4243
40.4k
            {
4244
40.4k
               if (token_scanner_list.end() != std::find(token_scanner_list.begin(),
4245
40.4k
                                                         token_scanner_list.end  (),
4246
40.4k
                                                         scanner))
4247
0
               {
4248
0
                  return false;
4249
0
               }
4250
4251
40.4k
               token_scanner_list.push_back(scanner);
4252
4253
40.4k
               return true;
4254
40.4k
            }
4255
4256
            inline bool register_modifier(lexer::token_modifier* modifier)
4257
10.1k
            {
4258
10.1k
               if (token_modifier_list.end() != std::find(token_modifier_list.begin(),
4259
10.1k
                                                          token_modifier_list.end  (),
4260
10.1k
                                                          modifier))
4261
0
               {
4262
0
                  return false;
4263
0
               }
4264
4265
10.1k
               token_modifier_list.push_back(modifier);
4266
4267
10.1k
               return true;
4268
10.1k
            }
4269
4270
            inline bool register_joiner(lexer::token_joiner* joiner)
4271
20.2k
            {
4272
20.2k
               if (token_joiner_list.end() != std::find(token_joiner_list.begin(),
4273
20.2k
                                                        token_joiner_list.end  (),
4274
20.2k
                                                        joiner))
4275
0
               {
4276
0
                  return false;
4277
0
               }
4278
4279
20.2k
               token_joiner_list.push_back(joiner);
4280
4281
20.2k
               return true;
4282
20.2k
            }
4283
4284
            inline bool register_inserter(lexer::token_inserter* inserter)
4285
10.1k
            {
4286
10.1k
               if (token_inserter_list.end() != std::find(token_inserter_list.begin(),
4287
10.1k
                                                          token_inserter_list.end  (),
4288
10.1k
                                                          inserter))
4289
0
               {
4290
0
                  return false;
4291
0
               }
4292
4293
10.1k
               token_inserter_list.push_back(inserter);
4294
4295
10.1k
               return true;
4296
10.1k
            }
4297
4298
            inline bool run_modifiers(lexer::generator& g)
4299
8.44k
            {
4300
8.44k
               error_token_modifier = reinterpret_cast<lexer::token_modifier*>(0);
4301
4302
16.8k
               for (std::size_t i = 0; i < token_modifier_list.size(); ++i)
4303
8.44k
               {
4304
8.44k
                  lexer::token_modifier& modifier = (*token_modifier_list[i]);
4305
4306
8.44k
                  modifier.reset();
4307
8.44k
                  modifier.process(g);
4308
4309
8.44k
                  if (!modifier.result())
4310
0
                  {
4311
0
                     error_token_modifier = token_modifier_list[i];
4312
4313
0
                     return false;
4314
0
                  }
4315
8.44k
               }
4316
4317
8.44k
               return true;
4318
8.44k
            }
4319
4320
            inline bool run_joiners(lexer::generator& g)
4321
8.44k
            {
4322
8.44k
               error_token_joiner = reinterpret_cast<lexer::token_joiner*>(0);
4323
4324
25.3k
               for (std::size_t i = 0; i < token_joiner_list.size(); ++i)
4325
16.8k
               {
4326
16.8k
                  lexer::token_joiner& joiner = (*token_joiner_list[i]);
4327
4328
16.8k
                  joiner.reset();
4329
16.8k
                  joiner.process(g);
4330
4331
16.8k
                  if (!joiner.result())
4332
0
                  {
4333
0
                     error_token_joiner = token_joiner_list[i];
4334
4335
0
                     return false;
4336
0
                  }
4337
16.8k
               }
4338
4339
8.44k
               return true;
4340
8.44k
            }
4341
4342
            inline bool run_inserters(lexer::generator& g)
4343
8.44k
            {
4344
8.44k
               error_token_inserter = reinterpret_cast<lexer::token_inserter*>(0);
4345
4346
16.8k
               for (std::size_t i = 0; i < token_inserter_list.size(); ++i)
4347
8.44k
               {
4348
8.44k
                  lexer::token_inserter& inserter = (*token_inserter_list[i]);
4349
4350
8.44k
                  inserter.reset();
4351
8.44k
                  inserter.process(g);
4352
4353
8.44k
                  if (!inserter.result())
4354
0
                  {
4355
0
                     error_token_inserter = token_inserter_list[i];
4356
4357
0
                     return false;
4358
0
                  }
4359
8.44k
               }
4360
4361
8.44k
               return true;
4362
8.44k
            }
4363
4364
            inline bool run_scanners(lexer::generator& g)
4365
8.44k
            {
4366
8.44k
               error_token_scanner = reinterpret_cast<lexer::token_scanner*>(0);
4367
4368
39.6k
               for (std::size_t i = 0; i < token_scanner_list.size(); ++i)
4369
32.1k
               {
4370
32.1k
                  lexer::token_scanner& scanner = (*token_scanner_list[i]);
4371
4372
32.1k
                  scanner.reset();
4373
32.1k
                  scanner.process(g);
4374
4375
32.1k
                  if (!scanner.result())
4376
979
                  {
4377
979
                     error_token_scanner = token_scanner_list[i];
4378
4379
979
                     return false;
4380
979
                  }
4381
32.1k
               }
4382
4383
7.47k
               return true;
4384
8.44k
            }
4385
4386
            std::vector<lexer::token_scanner*>  token_scanner_list;
4387
            std::vector<lexer::token_modifier*> token_modifier_list;
4388
            std::vector<lexer::token_joiner*>   token_joiner_list;
4389
            std::vector<lexer::token_inserter*> token_inserter_list;
4390
4391
            lexer::token_scanner*  error_token_scanner;
4392
            lexer::token_modifier* error_token_modifier;
4393
            lexer::token_joiner*   error_token_joiner;
4394
            lexer::token_inserter* error_token_inserter;
4395
         };
4396
      }
4397
4398
      class parser_helper
4399
      {
4400
      public:
4401
4402
         typedef token     token_t;
4403
         typedef generator generator_t;
4404
4405
         inline bool init(const std::string& str)
4406
10.1k
         {
4407
10.1k
            if (!lexer_.process(str))
4408
1.52k
            {
4409
1.52k
               return false;
4410
1.52k
            }
4411
4412
8.60k
            lexer_.begin();
4413
4414
8.60k
            next_token();
4415
4416
8.60k
            return true;
4417
10.1k
         }
4418
4419
         inline generator_t& lexer()
4420
1.01M
         {
4421
1.01M
            return lexer_;
4422
1.01M
         }
4423
4424
         inline const generator_t& lexer() const
4425
0
         {
4426
0
            return lexer_;
4427
0
         }
4428
4429
         inline void store_token()
4430
0
         {
4431
0
            lexer_.store();
4432
0
            store_current_token_ = current_token_;
4433
0
         }
4434
4435
         inline void restore_token()
4436
0
         {
4437
0
            lexer_.restore();
4438
0
            current_token_ = store_current_token_;
4439
0
         }
4440
4441
         inline void next_token()
4442
454k
         {
4443
454k
            current_token_ = lexer_.next_token();
4444
454k
         }
4445
4446
         inline const token_t& current_token() const
4447
2.46M
         {
4448
2.46M
            return current_token_;
4449
2.46M
         }
4450
4451
         inline const token_t& peek_next_token()
4452
0
         {
4453
0
            return lexer_.peek_next_token();
4454
0
         }
4455
4456
         enum token_advance_mode
4457
         {
4458
            e_hold    = 0,
4459
            e_advance = 1
4460
         };
4461
4462
         inline void advance_token(const token_advance_mode mode)
4463
18.8k
         {
4464
18.8k
            if (e_advance == mode)
4465
6.46k
            {
4466
6.46k
               next_token();
4467
6.46k
            }
4468
18.8k
         }
4469
4470
         inline bool token_is(const token_t::token_type& ttype, const token_advance_mode mode = e_advance)
4471
470k
         {
4472
470k
            if (current_token().type != ttype)
4473
452k
            {
4474
452k
               return false;
4475
452k
            }
4476
4477
18.8k
            advance_token(mode);
4478
4479
18.8k
            return true;
4480
470k
         }
4481
4482
         inline bool token_is(const token_t::token_type& ttype,
4483
                              const std::string& value,
4484
                              const token_advance_mode mode = e_advance)
4485
0
         {
4486
0
            if (
4487
0
                 (current_token().type != ttype) ||
4488
0
                 !exprtk::details::imatch(value,current_token().value)
4489
0
               )
4490
0
            {
4491
0
               return false;
4492
0
            }
4493
4494
0
            advance_token(mode);
4495
4496
0
            return true;
4497
0
         }
4498
4499
         inline bool token_is(const std::string& value,
4500
                              const token_advance_mode mode = e_advance)
4501
8
         {
4502
8
            if (!exprtk::details::imatch(value,current_token().value))
4503
2
            {
4504
2
               return false;
4505
2
            }
4506
4507
6
            advance_token(mode);
4508
4509
6
            return true;
4510
8
         }
4511
4512
         inline bool token_is_arithmetic_opr(const token_advance_mode mode = e_advance)
4513
0
         {
4514
0
            switch (current_token().type)
4515
0
            {
4516
0
               case token_t::e_add :
4517
0
               case token_t::e_sub :
4518
0
               case token_t::e_div :
4519
0
               case token_t::e_mul :
4520
0
               case token_t::e_mod :
4521
0
               case token_t::e_pow : break;
4522
0
               default             : return false;
4523
0
            }
4524
4525
0
            advance_token(mode);
4526
4527
0
            return true;
4528
0
         }
4529
4530
         inline bool token_is_ineq_opr(const token_advance_mode mode = e_advance)
4531
0
         {
4532
0
            switch (current_token().type)
4533
0
            {
4534
0
               case token_t::e_eq  :
4535
0
               case token_t::e_lte :
4536
0
               case token_t::e_ne  :
4537
0
               case token_t::e_gte :
4538
0
               case token_t::e_lt  :
4539
0
               case token_t::e_gt  : break;
4540
0
               default             : return false;
4541
0
            }
4542
4543
0
            advance_token(mode);
4544
4545
0
            return true;
4546
0
         }
4547
4548
         inline bool token_is_left_bracket(const token_advance_mode mode = e_advance)
4549
0
         {
4550
0
            switch (current_token().type)
4551
0
            {
4552
0
               case token_t::e_lbracket    :
4553
0
               case token_t::e_lcrlbracket :
4554
0
               case token_t::e_lsqrbracket : break;
4555
0
               default                     : return false;
4556
0
            }
4557
0
4558
0
            advance_token(mode);
4559
0
4560
0
            return true;
4561
0
         }
4562
4563
         inline bool token_is_right_bracket(const token_advance_mode mode = e_advance)
4564
0
         {
4565
0
            switch (current_token().type)
4566
0
            {
4567
0
               case token_t::e_rbracket    :
4568
0
               case token_t::e_rcrlbracket :
4569
0
               case token_t::e_rsqrbracket : break;
4570
0
               default                     : return false;
4571
0
            }
4572
4573
0
            advance_token(mode);
4574
4575
0
            return true;
4576
0
         }
4577
4578
         inline bool token_is_bracket(const token_advance_mode mode = e_advance)
4579
0
         {
4580
0
            switch (current_token().type)
4581
0
            {
4582
0
               case token_t::e_rbracket    :
4583
0
               case token_t::e_rcrlbracket :
4584
0
               case token_t::e_rsqrbracket :
4585
0
               case token_t::e_lbracket    :
4586
0
               case token_t::e_lcrlbracket :
4587
0
               case token_t::e_lsqrbracket : break;
4588
0
               default                     : return false;
4589
0
            }
4590
4591
0
            advance_token(mode);
4592
4593
0
            return true;
4594
0
         }
4595
4596
         inline bool token_is_loop(const token_advance_mode mode = e_advance)
4597
0
         {
4598
0
            return token_is("for"   , mode) ||
4599
0
                   token_is("while" , mode) ||
4600
0
                   token_is("repeat", mode) ;
4601
0
         }
4602
4603
         inline bool peek_token_is(const token_t::token_type& ttype)
4604
380k
         {
4605
380k
            return (lexer_.peek_next_token().type == ttype);
4606
380k
         }
4607
4608
         inline bool peek_token_is(const std::string& s)
4609
0
         {
4610
0
            return (exprtk::details::imatch(lexer_.peek_next_token().value,s));
4611
0
         }
4612
4613
      private:
4614
4615
         generator_t lexer_;
4616
         token_t     current_token_;
4617
         token_t     store_current_token_;
4618
      };
4619
   }
4620
4621
   template <typename T>
4622
   class vector_view
4623
   {
4624
   public:
4625
4626
      typedef T* data_ptr_t;
4627
4628
      vector_view(data_ptr_t data, const std::size_t& size)
4629
      : base_size_(size)
4630
      , size_(size)
4631
      , data_(data)
4632
      , data_ref_(0)
4633
      {
4634
         assert(size_ > 0);
4635
      }
4636
4637
      vector_view(const vector_view<T>& vv)
4638
      : base_size_(vv.base_size_)
4639
      , size_(vv.size_)
4640
      , data_(vv.data_)
4641
      , data_ref_(0)
4642
      {
4643
         assert(size_ > 0);
4644
      }
4645
4646
      inline void rebase(data_ptr_t data)
4647
      {
4648
         data_ = data;
4649
4650
         if (!data_ref_.empty())
4651
         {
4652
            for (std::size_t i = 0; i < data_ref_.size(); ++i)
4653
            {
4654
               (*data_ref_[i]) = data;
4655
            }
4656
         }
4657
      }
4658
4659
      inline data_ptr_t data() const
4660
      {
4661
         return data_;
4662
      }
4663
4664
      inline std::size_t base_size() const
4665
0
      {
4666
0
         return base_size_;
4667
0
      }
Unexecuted instantiation: exprtk::vector_view<double>::base_size() const
Unexecuted instantiation: exprtk::vector_view<float>::base_size() const
4668
4669
      inline std::size_t size() const
4670
0
      {
4671
0
         return size_;
4672
0
      }
Unexecuted instantiation: exprtk::vector_view<double>::size() const
Unexecuted instantiation: exprtk::vector_view<float>::size() const
4673
4674
      inline const T& operator[](const std::size_t index) const
4675
      {
4676
         assert(index < size_);
4677
         return data_[index];
4678
      }
4679
4680
      inline T& operator[](const std::size_t index)
4681
      {
4682
         assert(index < size_);
4683
         return data_[index];
4684
      }
4685
4686
      void set_ref(data_ptr_t* data_ref)
4687
0
      {
4688
0
         data_ref_.push_back(data_ref);
4689
0
         exprtk_debug(("vector_view::set_ref() - data_ref: %p data_ref_.size(): %d\n",
4690
0
                       reinterpret_cast<void*>(data_ref),
4691
0
                       static_cast<int>(data_ref_.size())));
4692
0
      }
Unexecuted instantiation: exprtk::vector_view<double>::set_ref(double**)
Unexecuted instantiation: exprtk::vector_view<float>::set_ref(float**)
4693
4694
      void remove_ref(data_ptr_t* data_ref)
4695
0
      {
4696
0
         data_ref_.erase(
4697
0
            std::remove(data_ref_.begin(), data_ref_.end(), data_ref),
4698
0
            data_ref_.end());
4699
0
         exprtk_debug(("vector_view::remove_ref() - data_ref: %p data_ref_.size(): %d\n",
4700
0
                       reinterpret_cast<void*>(data_ref),
4701
0
                       static_cast<int>(data_ref_.size())));
4702
0
      }
Unexecuted instantiation: exprtk::vector_view<double>::remove_ref(double**)
Unexecuted instantiation: exprtk::vector_view<float>::remove_ref(float**)
4703
4704
      bool set_size(const std::size_t new_size)
4705
      {
4706
         if ((new_size > 0) && (new_size <= base_size_))
4707
         {
4708
            size_ = new_size;
4709
            exprtk_debug(("vector_view::set_size() - data_: %p size: %lu\n",
4710
                          reinterpret_cast<void*>(data_),
4711
                          size_));
4712
            return true;
4713
         }
4714
4715
         exprtk_debug(("vector_view::set_size() - error invalid new_size: %lu  base_size: %lu\n",
4716
                       new_size,
4717
                       base_size_));
4718
         return false;
4719
      }
4720
4721
   private:
4722
4723
      const std::size_t base_size_;
4724
      std::size_t size_;
4725
      data_ptr_t  data_;
4726
      std::vector<data_ptr_t*> data_ref_;
4727
   };
4728
4729
   template <typename T>
4730
   inline vector_view<T> make_vector_view(T* data,
4731
                                          const std::size_t size, const std::size_t offset = 0)
4732
   {
4733
      return vector_view<T>(data + offset, size);
4734
   }
4735
4736
   template <typename T>
4737
   inline vector_view<T> make_vector_view(std::vector<T>& v,
4738
                                          const std::size_t size, const std::size_t offset = 0)
4739
   {
4740
      return vector_view<T>(v.data() + offset, size);
4741
   }
4742
4743
   template <typename T> class results_context;
4744
4745
   template <typename T>
4746
   struct type_store
4747
   {
4748
      enum store_type
4749
      {
4750
         e_unknown,
4751
         e_scalar ,
4752
         e_vector ,
4753
         e_string
4754
      };
4755
4756
      type_store()
4757
0
      : data(0)
4758
0
      , size(0)
4759
0
      , type(e_unknown)
4760
0
      {}
Unexecuted instantiation: exprtk::type_store<double>::type_store()
Unexecuted instantiation: exprtk::type_store<float>::type_store()
4761
4762
      union
4763
      {
4764
         void* data;
4765
         T*    vec_data;
4766
      };
4767
4768
      std::size_t size;
4769
      store_type  type;
4770
4771
      class parameter_list
4772
      {
4773
      public:
4774
4775
         explicit parameter_list(std::vector<type_store>& pl)
4776
0
         : parameter_list_(pl)
4777
0
         {}
Unexecuted instantiation: exprtk::type_store<double>::parameter_list::parameter_list(std::__1::vector<exprtk::type_store<double>, std::__1::allocator<exprtk::type_store<double> > >&)
Unexecuted instantiation: exprtk::type_store<float>::parameter_list::parameter_list(std::__1::vector<exprtk::type_store<float>, std::__1::allocator<exprtk::type_store<float> > >&)
4778
4779
         inline bool empty() const
4780
         {
4781
            return parameter_list_.empty();
4782
         }
4783
4784
         inline std::size_t size() const
4785
         {
4786
            return parameter_list_.size();
4787
         }
4788
4789
         inline type_store& operator[](const std::size_t& index)
4790
         {
4791
            return parameter_list_[index];
4792
         }
4793
4794
         inline const type_store& operator[](const std::size_t& index) const
4795
         {
4796
            return parameter_list_[index];
4797
         }
4798
4799
         inline type_store& front()
4800
         {
4801
            return parameter_list_[0];
4802
         }
4803
4804
         inline const type_store& front() const
4805
         {
4806
            return parameter_list_[0];
4807
         }
4808
4809
         inline type_store& back()
4810
         {
4811
            return parameter_list_.back();
4812
         }
4813
4814
         inline const type_store& back() const
4815
         {
4816
            return parameter_list_.back();
4817
         }
4818
4819
      private:
4820
4821
         std::vector<type_store>& parameter_list_;
4822
4823
         friend class results_context<T>;
4824
      };
4825
4826
      template <typename ViewType>
4827
      struct type_view
4828
      {
4829
         typedef type_store<T> type_store_t;
4830
         typedef ViewType      value_t;
4831
4832
         explicit type_view(type_store_t& ts)
4833
         : ts_(ts)
4834
         , data_(reinterpret_cast<value_t*>(ts_.data))
4835
         {}
4836
4837
         explicit type_view(const type_store_t& ts)
4838
         : ts_(const_cast<type_store_t&>(ts))
4839
         , data_(reinterpret_cast<value_t*>(ts_.data))
4840
         {}
4841
4842
         inline std::size_t size() const
4843
         {
4844
            return ts_.size;
4845
         }
4846
4847
         inline value_t& operator[](const std::size_t& i)
4848
         {
4849
            return data_[i];
4850
         }
4851
4852
         inline const value_t& operator[](const std::size_t& i) const
4853
         {
4854
            return data_[i];
4855
         }
4856
4857
         inline const value_t* begin() const { return data_; }
4858
         inline       value_t* begin()       { return data_; }
4859
4860
         inline const value_t* end() const
4861
         {
4862
            return static_cast<value_t*>(data_ + ts_.size);
4863
         }
4864
4865
         inline value_t* end()
4866
         {
4867
            return static_cast<value_t*>(data_ + ts_.size);
4868
         }
4869
4870
         type_store_t& ts_;
4871
         value_t* data_;
4872
      };
4873
4874
      typedef type_view<T>    vector_view;
4875
      typedef type_view<char> string_view;
4876
4877
      struct scalar_view
4878
      {
4879
         typedef type_store<T> type_store_t;
4880
         typedef T value_t;
4881
4882
         explicit scalar_view(type_store_t& ts)
4883
         : v_(*reinterpret_cast<value_t*>(ts.data))
4884
         {}
4885
4886
         explicit scalar_view(const type_store_t& ts)
4887
         : v_(*reinterpret_cast<value_t*>(const_cast<type_store_t&>(ts).data))
4888
         {}
4889
4890
         inline value_t& operator() ()
4891
         {
4892
            return v_;
4893
         }
4894
4895
         inline const value_t& operator() () const
4896
         {
4897
            return v_;
4898
         }
4899
4900
         inline operator value_t() const
4901
         {
4902
            return v_;
4903
         }
4904
4905
         inline operator value_t()
4906
         {
4907
            return v_;
4908
         }
4909
4910
         template <typename IntType>
4911
         inline bool to_int(IntType& i) const
4912
         {
4913
            if (!exprtk::details::numeric::is_integer(v_))
4914
               return false;
4915
4916
            i = static_cast<IntType>(v_);
4917
4918
            return true;
4919
         }
4920
4921
         template <typename UIntType>
4922
         inline bool to_uint(UIntType& u) const
4923
         {
4924
            if (v_ < T(0))
4925
               return false;
4926
            else if (!exprtk::details::numeric::is_integer(v_))
4927
               return false;
4928
4929
            u = static_cast<UIntType>(v_);
4930
4931
            return true;
4932
         }
4933
4934
         T& v_;
4935
      };
4936
   };
4937
4938
   template <typename StringView>
4939
   inline std::string to_str(const StringView& view)
4940
   {
4941
      return std::string(view.begin(),view.size());
4942
   }
4943
4944
   #ifndef exprtk_disable_return_statement
4945
   namespace details
4946
   {
4947
      template <typename T> class return_node;
4948
      template <typename T> class return_envelope_node;
4949
   }
4950
   #endif
4951
4952
   template <typename T>
4953
   class results_context
4954
   {
4955
   public:
4956
4957
      typedef type_store<T> type_store_t;
4958
      typedef typename type_store_t::scalar_view scalar_t;
4959
      typedef typename type_store_t::vector_view vector_t;
4960
      typedef typename type_store_t::string_view string_t;
4961
4962
      results_context()
4963
0
      : results_available_(false)
4964
0
      {}
Unexecuted instantiation: exprtk::results_context<double>::results_context()
Unexecuted instantiation: exprtk::results_context<float>::results_context()
4965
4966
      inline std::size_t count() const
4967
      {
4968
         if (results_available_)
4969
            return parameter_list_.size();
4970
         else
4971
            return 0;
4972
      }
4973
4974
      inline type_store_t& operator[](const std::size_t& index)
4975
      {
4976
         return parameter_list_[index];
4977
      }
4978
4979
      inline const type_store_t& operator[](const std::size_t& index) const
4980
      {
4981
         return parameter_list_[index];
4982
      }
4983
4984
      inline bool get_scalar(const std::size_t& index, T& out) const
4985
      {
4986
         if (
4987
              (index < parameter_list_.size()) &&
4988
              (parameter_list_[index].type == type_store_t::e_scalar)
4989
            )
4990
         {
4991
            const scalar_t scalar(parameter_list_[index]);
4992
            out = scalar();
4993
            return true;
4994
         }
4995
4996
         return false;
4997
      }
4998
4999
      template <typename OutputIterator>
5000
      inline bool get_vector(const std::size_t& index, OutputIterator out_itr) const
5001
      {
5002
         if (
5003
              (index < parameter_list_.size()) &&
5004
              (parameter_list_[index].type == type_store_t::e_vector)
5005
            )
5006
         {
5007
            const vector_t vector(parameter_list_[index]);
5008
            for (std::size_t i = 0; i < vector.size(); ++i)
5009
            {
5010
               *(out_itr++) = vector[i];
5011
            }
5012
5013
            return true;
5014
         }
5015
5016
         return false;
5017
      }
5018
5019
      inline bool get_vector(const std::size_t& index, std::vector<T>& out) const
5020
      {
5021
         return get_vector(index,std::back_inserter(out));
5022
      }
5023
5024
      inline bool get_string(const std::size_t& index, std::string& out) const
5025
      {
5026
         if (
5027
              (index < parameter_list_.size()) &&
5028
              (parameter_list_[index].type == type_store_t::e_string)
5029
            )
5030
         {
5031
            const string_t str(parameter_list_[index]);
5032
            out.assign(str.begin(),str.size());
5033
            return true;
5034
         }
5035
5036
         return false;
5037
      }
5038
5039
   private:
5040
5041
      inline void clear()
5042
0
      {
5043
0
         results_available_ = false;
5044
0
      }
Unexecuted instantiation: exprtk::results_context<double>::clear()
Unexecuted instantiation: exprtk::results_context<float>::clear()
5045
5046
      typedef std::vector<type_store_t> ts_list_t;
5047
      typedef typename type_store_t::parameter_list parameter_list_t;
5048
5049
      inline void assign(const parameter_list_t& pl)
5050
0
      {
5051
0
         parameter_list_    = pl.parameter_list_;
5052
0
         results_available_ = true;
5053
0
      }
Unexecuted instantiation: exprtk::results_context<double>::assign(exprtk::type_store<double>::parameter_list const&)
Unexecuted instantiation: exprtk::results_context<float>::assign(exprtk::type_store<float>::parameter_list const&)
5054
5055
      bool results_available_;
5056
      ts_list_t parameter_list_;
5057
5058
      #ifndef exprtk_disable_return_statement
5059
      friend class details::return_node<T>;
5060
      friend class details::return_envelope_node<T>;
5061
      #endif
5062
   };
5063
5064
   namespace details
5065
   {
5066
      enum operator_type
5067
      {
5068
         e_default , e_null    , e_add     , e_sub     ,
5069
         e_mul     , e_div     , e_mod     , e_pow     ,
5070
         e_atan2   , e_min     , e_max     , e_avg     ,
5071
         e_sum     , e_prod    , e_lt      , e_lte     ,
5072
         e_eq      , e_equal   , e_ne      , e_nequal  ,
5073
         e_gte     , e_gt      , e_and     , e_nand    ,
5074
         e_or      , e_nor     , e_xor     , e_xnor    ,
5075
         e_mand    , e_mor     , e_scand   , e_scor    ,
5076
         e_shr     , e_shl     , e_abs     , e_acos    ,
5077
         e_acosh   , e_asin    , e_asinh   , e_atan    ,
5078
         e_atanh   , e_ceil    , e_cos     , e_cosh    ,
5079
         e_exp     , e_expm1   , e_floor   , e_log     ,
5080
         e_log10   , e_log2    , e_log1p   , e_logn    ,
5081
         e_neg     , e_pos     , e_round   , e_roundn  ,
5082
         e_root    , e_sqrt    , e_sin     , e_sinc    ,
5083
         e_sinh    , e_sec     , e_csc     , e_tan     ,
5084
         e_tanh    , e_cot     , e_clamp   , e_iclamp  ,
5085
         e_inrange , e_sgn     , e_r2d     , e_d2r     ,
5086
         e_d2g     , e_g2d     , e_hypot   , e_notl    ,
5087
         e_erf     , e_erfc    , e_ncdf    , e_frac    ,
5088
         e_trunc   , e_assign  , e_addass  , e_subass  ,
5089
         e_mulass  , e_divass  , e_modass  , e_in      ,
5090
         e_like    , e_ilike   , e_multi   , e_smulti  ,
5091
         e_swap    ,
5092
5093
         // Do not add new functions/operators after this point.
5094
         e_sf00 = 1000, e_sf01 = 1001, e_sf02 = 1002, e_sf03 = 1003,
5095
         e_sf04 = 1004, e_sf05 = 1005, e_sf06 = 1006, e_sf07 = 1007,
5096
         e_sf08 = 1008, e_sf09 = 1009, e_sf10 = 1010, e_sf11 = 1011,
5097
         e_sf12 = 1012, e_sf13 = 1013, e_sf14 = 1014, e_sf15 = 1015,
5098
         e_sf16 = 1016, e_sf17 = 1017, e_sf18 = 1018, e_sf19 = 1019,
5099
         e_sf20 = 1020, e_sf21 = 1021, e_sf22 = 1022, e_sf23 = 1023,
5100
         e_sf24 = 1024, e_sf25 = 1025, e_sf26 = 1026, e_sf27 = 1027,
5101
         e_sf28 = 1028, e_sf29 = 1029, e_sf30 = 1030, e_sf31 = 1031,
5102
         e_sf32 = 1032, e_sf33 = 1033, e_sf34 = 1034, e_sf35 = 1035,
5103
         e_sf36 = 1036, e_sf37 = 1037, e_sf38 = 1038, e_sf39 = 1039,
5104
         e_sf40 = 1040, e_sf41 = 1041, e_sf42 = 1042, e_sf43 = 1043,
5105
         e_sf44 = 1044, e_sf45 = 1045, e_sf46 = 1046, e_sf47 = 1047,
5106
         e_sf48 = 1048, e_sf49 = 1049, e_sf50 = 1050, e_sf51 = 1051,
5107
         e_sf52 = 1052, e_sf53 = 1053, e_sf54 = 1054, e_sf55 = 1055,
5108
         e_sf56 = 1056, e_sf57 = 1057, e_sf58 = 1058, e_sf59 = 1059,
5109
         e_sf60 = 1060, e_sf61 = 1061, e_sf62 = 1062, e_sf63 = 1063,
5110
         e_sf64 = 1064, e_sf65 = 1065, e_sf66 = 1066, e_sf67 = 1067,
5111
         e_sf68 = 1068, e_sf69 = 1069, e_sf70 = 1070, e_sf71 = 1071,
5112
         e_sf72 = 1072, e_sf73 = 1073, e_sf74 = 1074, e_sf75 = 1075,
5113
         e_sf76 = 1076, e_sf77 = 1077, e_sf78 = 1078, e_sf79 = 1079,
5114
         e_sf80 = 1080, e_sf81 = 1081, e_sf82 = 1082, e_sf83 = 1083,
5115
         e_sf84 = 1084, e_sf85 = 1085, e_sf86 = 1086, e_sf87 = 1087,
5116
         e_sf88 = 1088, e_sf89 = 1089, e_sf90 = 1090, e_sf91 = 1091,
5117
         e_sf92 = 1092, e_sf93 = 1093, e_sf94 = 1094, e_sf95 = 1095,
5118
         e_sf96 = 1096, e_sf97 = 1097, e_sf98 = 1098, e_sf99 = 1099,
5119
         e_sffinal  = 1100,
5120
         e_sf4ext00 = 2000, e_sf4ext01 = 2001, e_sf4ext02 = 2002, e_sf4ext03 = 2003,
5121
         e_sf4ext04 = 2004, e_sf4ext05 = 2005, e_sf4ext06 = 2006, e_sf4ext07 = 2007,
5122
         e_sf4ext08 = 2008, e_sf4ext09 = 2009, e_sf4ext10 = 2010, e_sf4ext11 = 2011,
5123
         e_sf4ext12 = 2012, e_sf4ext13 = 2013, e_sf4ext14 = 2014, e_sf4ext15 = 2015,
5124
         e_sf4ext16 = 2016, e_sf4ext17 = 2017, e_sf4ext18 = 2018, e_sf4ext19 = 2019,
5125
         e_sf4ext20 = 2020, e_sf4ext21 = 2021, e_sf4ext22 = 2022, e_sf4ext23 = 2023,
5126
         e_sf4ext24 = 2024, e_sf4ext25 = 2025, e_sf4ext26 = 2026, e_sf4ext27 = 2027,
5127
         e_sf4ext28 = 2028, e_sf4ext29 = 2029, e_sf4ext30 = 2030, e_sf4ext31 = 2031,
5128
         e_sf4ext32 = 2032, e_sf4ext33 = 2033, e_sf4ext34 = 2034, e_sf4ext35 = 2035,
5129
         e_sf4ext36 = 2036, e_sf4ext37 = 2037, e_sf4ext38 = 2038, e_sf4ext39 = 2039,
5130
         e_sf4ext40 = 2040, e_sf4ext41 = 2041, e_sf4ext42 = 2042, e_sf4ext43 = 2043,
5131
         e_sf4ext44 = 2044, e_sf4ext45 = 2045, e_sf4ext46 = 2046, e_sf4ext47 = 2047,
5132
         e_sf4ext48 = 2048, e_sf4ext49 = 2049, e_sf4ext50 = 2050, e_sf4ext51 = 2051,
5133
         e_sf4ext52 = 2052, e_sf4ext53 = 2053, e_sf4ext54 = 2054, e_sf4ext55 = 2055,
5134
         e_sf4ext56 = 2056, e_sf4ext57 = 2057, e_sf4ext58 = 2058, e_sf4ext59 = 2059,
5135
         e_sf4ext60 = 2060, e_sf4ext61 = 2061
5136
      };
5137
5138
      inline std::string to_str(const operator_type opr)
5139
70
      {
5140
70
         switch (opr)
5141
70
         {
5142
2
            case e_add    : return  "+"  ;
5143
2
            case e_sub    : return  "-"  ;
5144
2
            case e_mul    : return  "*"  ;
5145
2
            case e_div    : return  "/"  ;
5146
2
            case e_mod    : return  "%"  ;
5147
4
            case e_pow    : return  "^"  ;
5148
8
            case e_assign : return ":="  ;
5149
8
            case e_addass : return "+="  ;
5150
12
            case e_subass : return "-="  ;
5151
2
            case e_mulass : return "*="  ;
5152
8
            case e_divass : return "/="  ;
5153
4
            case e_modass : return "%="  ;
5154
4
            case e_lt     : return  "<"  ;
5155
0
            case e_lte    : return "<="  ;
5156
2
            case e_eq     : return "=="  ;
5157
0
            case e_equal  : return  "="  ;
5158
2
            case e_ne     : return "!="  ;
5159
0
            case e_nequal : return "<>"  ;
5160
0
            case e_gte    : return ">="  ;
5161
2
            case e_gt     : return  ">"  ;
5162
0
            case e_and    : return "and" ;
5163
0
            case e_or     : return "or"  ;
5164
0
            case e_xor    : return "xor" ;
5165
0
            case e_nand   : return "nand";
5166
0
            case e_nor    : return "nor" ;
5167
0
            case e_xnor   : return "xnor";
5168
4
            default       : return "N/A" ;
5169
70
         }
5170
70
      }
5171
5172
      struct base_operation_t
5173
      {
5174
         base_operation_t(const operator_type t, const unsigned int& np)
5175
526k
         : type(t)
5176
526k
         , num_params(np)
5177
526k
         {}
5178
5179
         operator_type type;
5180
         unsigned int num_params;
5181
      };
5182
5183
      namespace loop_unroll
5184
      {
5185
         const unsigned int global_loop_batch_size =
5186
         #ifndef exprtk_disable_superscalar_unroll
5187
         16;
5188
         #else
5189
          4;
5190
         #endif
5191
5192
         struct details
5193
         {
5194
            explicit details(const std::size_t& vsize,
5195
                             const unsigned int loop_batch_size = global_loop_batch_size)
5196
6
            : batch_size(loop_batch_size   )
5197
6
            , remainder (vsize % batch_size)
5198
6
            , upper_bound(static_cast<int>(vsize - (remainder ? loop_batch_size : 0)))
5199
6
            {}
5200
5201
            unsigned int batch_size;
5202
            int remainder;
5203
            int upper_bound;
5204
         };
5205
      }
5206
5207
      #ifdef exprtk_enable_debugging
5208
      inline void dump_ptr(const std::string& s, const void* ptr, const std::size_t size = 0)
5209
      {
5210
         if (size)
5211
            exprtk_debug(("%s - addr: %p size: %d\n",
5212
                          s.c_str(),
5213
                          ptr,
5214
                          static_cast<unsigned int>(size)));
5215
         else
5216
            exprtk_debug(("%s - addr: %p\n", s.c_str(), ptr));
5217
      }
5218
5219
      template <typename T>
5220
      inline void dump_vector(const std::string& vec_name, const T* data, const std::size_t size)
5221
      {
5222
         printf("----- %s (%p) -----\n",
5223
                vec_name.c_str(),
5224
                static_cast<const void*>(data));
5225
         printf("[ ");
5226
         for (std::size_t i = 0; i <  size; ++i)
5227
         {
5228
            printf("%8.3f\t", data[i]);
5229
         }
5230
         printf(" ]\n");
5231
         printf("---------------------\n");
5232
      }
5233
      #else
5234
27.7k
      inline void dump_ptr(const std::string&, const void*) {}
5235
0
      inline void dump_ptr(const std::string&, const void*, const std::size_t) {}
5236
      template <typename T>
5237
      inline void dump_vector(const std::string&, const T*, const std::size_t) {}
5238
      #endif
5239
5240
      template <typename T>
5241
      class vec_data_store
5242
      {
5243
      public:
5244
5245
         typedef vec_data_store<T> type;
5246
         typedef T* data_t;
5247
5248
      private:
5249
5250
         struct control_block
5251
         {
5252
            control_block()
5253
0
            : ref_count(1)
5254
0
            , size     (0)
5255
0
            , data     (0)
5256
0
            , destruct (true)
5257
0
            {}
Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::control_block()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::control_block()
5258
5259
            explicit control_block(const std::size_t& dsize)
5260
0
            : ref_count(1    )
5261
0
            , size     (dsize)
5262
0
            , data     (0    )
5263
0
            , destruct (true )
5264
0
            { create_data(); }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::control_block(unsigned long const&)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::control_block(unsigned long const&)
5265
5266
            control_block(const std::size_t& dsize, data_t dptr, bool dstrct = false)
5267
0
            : ref_count(1     )
5268
0
            , size     (dsize )
5269
0
            , data     (dptr  )
5270
0
            , destruct (dstrct)
5271
0
            {}
Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::control_block(unsigned long const&, double*, bool)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::control_block(unsigned long const&, float*, bool)
5272
5273
           ~control_block()
5274
0
            {
5275
0
               if (data && destruct && (0 == ref_count))
5276
0
               {
5277
0
                  dump_ptr("~vec_data_store::control_block() data",data);
5278
0
                  delete[] data;
5279
0
                  data = reinterpret_cast<data_t>(0);
5280
0
               }
5281
0
            }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::~control_block()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::~control_block()
5282
5283
            static inline control_block* create(const std::size_t& dsize, data_t data_ptr = data_t(0), bool dstrct = false)
5284
0
            {
5285
0
               if (dsize)
5286
0
               {
5287
0
                  if (0 == data_ptr)
5288
0
                     return (new control_block(dsize));
5289
0
                  else
5290
0
                     return (new control_block(dsize, data_ptr, dstrct));
5291
0
               }
5292
0
               else
5293
0
                  return (new control_block);
5294
0
            }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::create(unsigned long const&, double*, bool)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::create(unsigned long const&, float*, bool)
5295
5296
            static inline void destroy(control_block*& cntrl_blck)
5297
0
            {
5298
0
               if (cntrl_blck)
5299
0
               {
5300
0
                  if (
5301
0
                       (0 !=   cntrl_blck->ref_count) &&
5302
0
                       (0 == --cntrl_blck->ref_count)
5303
0
                     )
5304
0
                  {
5305
0
                     delete cntrl_blck;
5306
0
                  }
5307
5308
0
                  cntrl_blck = 0;
5309
0
               }
5310
0
            }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::destroy(exprtk::details::vec_data_store<double>::control_block*&)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::destroy(exprtk::details::vec_data_store<float>::control_block*&)
5311
5312
            std::size_t ref_count;
5313
            std::size_t size;
5314
            data_t      data;
5315
            bool        destruct;
5316
5317
         private:
5318
5319
            control_block(const control_block&) exprtk_delete;
5320
            control_block& operator=(const control_block&) exprtk_delete;
5321
5322
            inline void create_data()
5323
0
            {
5324
0
               destruct = true;
5325
0
               data     = new T[size];
5326
0
               std::fill_n(data, size, T(0));
5327
0
               dump_ptr("control_block::create_data() - data", data, size);
5328
0
            }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::control_block::create_data()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::control_block::create_data()
5329
         };
5330
5331
      public:
5332
5333
         vec_data_store()
5334
0
         : control_block_(control_block::create(0))
5335
0
         {}
Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store()
5336
5337
         explicit vec_data_store(const std::size_t& size)
5338
0
         : control_block_(control_block::create(size,reinterpret_cast<data_t>(0),true))
5339
0
         {}
Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store(unsigned long const&)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store(unsigned long const&)
5340
5341
         vec_data_store(const std::size_t& size, data_t data, bool dstrct = false)
5342
0
         : control_block_(control_block::create(size, data, dstrct))
5343
0
         {}
Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store(unsigned long const&, double*, bool)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store(unsigned long const&, float*, bool)
5344
5345
         vec_data_store(const type& vds)
5346
0
         {
5347
0
            control_block_ = vds.control_block_;
5348
0
            control_block_->ref_count++;
5349
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::vec_data_store(exprtk::details::vec_data_store<double> const&)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::vec_data_store(exprtk::details::vec_data_store<float> const&)
5350
5351
        ~vec_data_store()
5352
0
         {
5353
0
            control_block::destroy(control_block_);
5354
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::~vec_data_store()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::~vec_data_store()
5355
5356
         type& operator=(const type& vds)
5357
0
         {
5358
0
            if (this != &vds)
5359
0
            {
5360
0
               const std::size_t final_size = min_size(control_block_, vds.control_block_);
5361
5362
0
               vds.control_block_->size = final_size;
5363
0
                   control_block_->size = final_size;
5364
5365
0
               if (control_block_->destruct || (0 == control_block_->data))
5366
0
               {
5367
0
                  control_block::destroy(control_block_);
5368
5369
0
                  control_block_ = vds.control_block_;
5370
0
                  control_block_->ref_count++;
5371
0
               }
5372
0
            }
5373
5374
0
            return (*this);
5375
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::operator=(exprtk::details::vec_data_store<double> const&)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::operator=(exprtk::details::vec_data_store<float> const&)
5376
5377
         inline data_t data()
5378
0
         {
5379
0
            return control_block_->data;
5380
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::data()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::data()
5381
5382
         inline data_t data() const
5383
0
         {
5384
0
            return control_block_->data;
5385
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::data() const
Unexecuted instantiation: exprtk::details::vec_data_store<float>::data() const
5386
5387
         inline std::size_t size() const
5388
0
         {
5389
0
            return control_block_->size;
5390
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::size() const
Unexecuted instantiation: exprtk::details::vec_data_store<float>::size() const
5391
5392
         inline data_t& ref()
5393
0
         {
5394
0
            return control_block_->data;
5395
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::ref()
Unexecuted instantiation: exprtk::details::vec_data_store<float>::ref()
5396
5397
         inline void dump() const
5398
         {
5399
            #ifdef exprtk_enable_debugging
5400
            exprtk_debug(("size: %d\taddress:%p\tdestruct:%c\n",
5401
                          size(),
5402
                          data(),
5403
                          (control_block_->destruct ? 'T' : 'F')));
5404
5405
            for (std::size_t i = 0; i < size(); ++i)
5406
            {
5407
               if (5 == i)
5408
                  exprtk_debug(("\n"));
5409
5410
               exprtk_debug(("%15.10f ", data()[i]));
5411
            }
5412
            exprtk_debug(("\n"));
5413
            #endif
5414
         }
5415
5416
         static inline void match_sizes(type& vds0, type& vds1)
5417
0
         {
5418
0
            const std::size_t size = min_size(vds0.control_block_,vds1.control_block_);
5419
0
            vds0.control_block_->size = size;
5420
0
            vds1.control_block_->size = size;
5421
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::match_sizes(exprtk::details::vec_data_store<double>&, exprtk::details::vec_data_store<double>&)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::match_sizes(exprtk::details::vec_data_store<float>&, exprtk::details::vec_data_store<float>&)
5422
5423
      private:
5424
5425
         static inline std::size_t min_size(const control_block* cb0, const control_block* cb1)
5426
0
         {
5427
0
            const std::size_t size0 = cb0->size;
5428
0
            const std::size_t size1 = cb1->size;
5429
5430
0
            if (size0 && size1)
5431
0
               return std::min(size0,size1);
5432
0
            else
5433
0
               return (size0) ? size0 : size1;
5434
0
         }
Unexecuted instantiation: exprtk::details::vec_data_store<double>::min_size(exprtk::details::vec_data_store<double>::control_block const*, exprtk::details::vec_data_store<double>::control_block const*)
Unexecuted instantiation: exprtk::details::vec_data_store<float>::min_size(exprtk::details::vec_data_store<float>::control_block const*, exprtk::details::vec_data_store<float>::control_block const*)
5435
5436
         control_block* control_block_;
5437
      };
5438
5439
      namespace numeric
5440
      {
5441
         namespace details
5442
         {
5443
            template <typename T>
5444
            inline T process_impl(const operator_type operation, const T arg)
5445
15.8k
            {
5446
15.8k
               switch (operation)
5447
15.8k
               {
5448
0
                  case e_abs   : return numeric::abs  (arg);
5449
0
                  case e_acos  : return numeric::acos (arg);
5450
0
                  case e_acosh : return numeric::acosh(arg);
5451
0
                  case e_asin  : return numeric::asin (arg);
5452
0
                  case e_asinh : return numeric::asinh(arg);
5453
0
                  case e_atan  : return numeric::atan (arg);
5454
0
                  case e_atanh : return numeric::atanh(arg);
5455
0
                  case e_ceil  : return numeric::ceil (arg);
5456
0
                  case e_cos   : return numeric::cos  (arg);
5457
0
                  case e_cosh  : return numeric::cosh (arg);
5458
0
                  case e_exp   : return numeric::exp  (arg);
5459
0
                  case e_expm1 : return numeric::expm1(arg);
5460
0
                  case e_floor : return numeric::floor(arg);
5461
0
                  case e_log   : return numeric::log  (arg);
5462
0
                  case e_log10 : return numeric::log10(arg);
5463
0
                  case e_log2  : return numeric::log2 (arg);
5464
0
                  case e_log1p : return numeric::log1p(arg);
5465
15.8k
                  case e_neg   : return numeric::neg  (arg);
5466
0
                  case e_pos   : return numeric::pos  (arg);
5467
0
                  case e_round : return numeric::round(arg);
5468
0
                  case e_sin   : return numeric::sin  (arg);
5469
0
                  case e_sinc  : return numeric::sinc (arg);
5470
0
                  case e_sinh  : return numeric::sinh (arg);
5471
0
                  case e_sqrt  : return numeric::sqrt (arg);
5472
0
                  case e_tan   : return numeric::tan  (arg);
5473
0
                  case e_tanh  : return numeric::tanh (arg);
5474
0
                  case e_cot   : return numeric::cot  (arg);
5475
0
                  case e_sec   : return numeric::sec  (arg);
5476
0
                  case e_csc   : return numeric::csc  (arg);
5477
0
                  case e_r2d   : return numeric::r2d  (arg);
5478
0
                  case e_d2r   : return numeric::d2r  (arg);
5479
0
                  case e_d2g   : return numeric::d2g  (arg);
5480
0
                  case e_g2d   : return numeric::g2d  (arg);
5481
0
                  case e_notl  : return numeric::notl (arg);
5482
0
                  case e_sgn   : return numeric::sgn  (arg);
5483
0
                  case e_erf   : return numeric::erf  (arg);
5484
0
                  case e_erfc  : return numeric::erfc (arg);
5485
0
                  case e_ncdf  : return numeric::ncdf (arg);
5486
0
                  case e_frac  : return numeric::frac (arg);
5487
0
                  case e_trunc : return numeric::trunc(arg);
5488
5489
0
                  default      : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n"));
5490
0
                                 return std::numeric_limits<T>::quiet_NaN();
5491
15.8k
               }
5492
15.8k
            }
double exprtk::details::numeric::details::process_impl<double>(exprtk::details::operator_type, double)
Line
Count
Source
5445
13.8k
            {
5446
13.8k
               switch (operation)
5447
13.8k
               {
5448
0
                  case e_abs   : return numeric::abs  (arg);
5449
0
                  case e_acos  : return numeric::acos (arg);
5450
0
                  case e_acosh : return numeric::acosh(arg);
5451
0
                  case e_asin  : return numeric::asin (arg);
5452
0
                  case e_asinh : return numeric::asinh(arg);
5453
0
                  case e_atan  : return numeric::atan (arg);
5454
0
                  case e_atanh : return numeric::atanh(arg);
5455
0
                  case e_ceil  : return numeric::ceil (arg);
5456
0
                  case e_cos   : return numeric::cos  (arg);
5457
0
                  case e_cosh  : return numeric::cosh (arg);
5458
0
                  case e_exp   : return numeric::exp  (arg);
5459
0
                  case e_expm1 : return numeric::expm1(arg);
5460
0
                  case e_floor : return numeric::floor(arg);
5461
0
                  case e_log   : return numeric::log  (arg);
5462
0
                  case e_log10 : return numeric::log10(arg);
5463
0
                  case e_log2  : return numeric::log2 (arg);
5464
0
                  case e_log1p : return numeric::log1p(arg);
5465
13.8k
                  case e_neg   : return numeric::neg  (arg);
5466
0
                  case e_pos   : return numeric::pos  (arg);
5467
0
                  case e_round : return numeric::round(arg);
5468
0
                  case e_sin   : return numeric::sin  (arg);
5469
0
                  case e_sinc  : return numeric::sinc (arg);
5470
0
                  case e_sinh  : return numeric::sinh (arg);
5471
0
                  case e_sqrt  : return numeric::sqrt (arg);
5472
0
                  case e_tan   : return numeric::tan  (arg);
5473
0
                  case e_tanh  : return numeric::tanh (arg);
5474
0
                  case e_cot   : return numeric::cot  (arg);
5475
0
                  case e_sec   : return numeric::sec  (arg);
5476
0
                  case e_csc   : return numeric::csc  (arg);
5477
0
                  case e_r2d   : return numeric::r2d  (arg);
5478
0
                  case e_d2r   : return numeric::d2r  (arg);
5479
0
                  case e_d2g   : return numeric::d2g  (arg);
5480
0
                  case e_g2d   : return numeric::g2d  (arg);
5481
0
                  case e_notl  : return numeric::notl (arg);
5482
0
                  case e_sgn   : return numeric::sgn  (arg);
5483
0
                  case e_erf   : return numeric::erf  (arg);
5484
0
                  case e_erfc  : return numeric::erfc (arg);
5485
0
                  case e_ncdf  : return numeric::ncdf (arg);
5486
0
                  case e_frac  : return numeric::frac (arg);
5487
0
                  case e_trunc : return numeric::trunc(arg);
5488
5489
0
                  default      : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n"));
5490
0
                                 return std::numeric_limits<T>::quiet_NaN();
5491
13.8k
               }
5492
13.8k
            }
float exprtk::details::numeric::details::process_impl<float>(exprtk::details::operator_type, float)
Line
Count
Source
5445
1.98k
            {
5446
1.98k
               switch (operation)
5447
1.98k
               {
5448
0
                  case e_abs   : return numeric::abs  (arg);
5449
0
                  case e_acos  : return numeric::acos (arg);
5450
0
                  case e_acosh : return numeric::acosh(arg);
5451
0
                  case e_asin  : return numeric::asin (arg);
5452
0
                  case e_asinh : return numeric::asinh(arg);
5453
0
                  case e_atan  : return numeric::atan (arg);
5454
0
                  case e_atanh : return numeric::atanh(arg);
5455
0
                  case e_ceil  : return numeric::ceil (arg);
5456
0
                  case e_cos   : return numeric::cos  (arg);
5457
0
                  case e_cosh  : return numeric::cosh (arg);
5458
0
                  case e_exp   : return numeric::exp  (arg);
5459
0
                  case e_expm1 : return numeric::expm1(arg);
5460
0
                  case e_floor : return numeric::floor(arg);
5461
0
                  case e_log   : return numeric::log  (arg);
5462
0
                  case e_log10 : return numeric::log10(arg);
5463
0
                  case e_log2  : return numeric::log2 (arg);
5464
0
                  case e_log1p : return numeric::log1p(arg);
5465
1.98k
                  case e_neg   : return numeric::neg  (arg);
5466
0
                  case e_pos   : return numeric::pos  (arg);
5467
0
                  case e_round : return numeric::round(arg);
5468
0
                  case e_sin   : return numeric::sin  (arg);
5469
0
                  case e_sinc  : return numeric::sinc (arg);
5470
0
                  case e_sinh  : return numeric::sinh (arg);
5471
0
                  case e_sqrt  : return numeric::sqrt (arg);
5472
0
                  case e_tan   : return numeric::tan  (arg);
5473
0
                  case e_tanh  : return numeric::tanh (arg);
5474
0
                  case e_cot   : return numeric::cot  (arg);
5475
0
                  case e_sec   : return numeric::sec  (arg);
5476
0
                  case e_csc   : return numeric::csc  (arg);
5477
0
                  case e_r2d   : return numeric::r2d  (arg);
5478
0
                  case e_d2r   : return numeric::d2r  (arg);
5479
0
                  case e_d2g   : return numeric::d2g  (arg);
5480
0
                  case e_g2d   : return numeric::g2d  (arg);
5481
0
                  case e_notl  : return numeric::notl (arg);
5482
0
                  case e_sgn   : return numeric::sgn  (arg);
5483
0
                  case e_erf   : return numeric::erf  (arg);
5484
0
                  case e_erfc  : return numeric::erfc (arg);
5485
0
                  case e_ncdf  : return numeric::ncdf (arg);
5486
0
                  case e_frac  : return numeric::frac (arg);
5487
0
                  case e_trunc : return numeric::trunc(arg);
5488
5489
0
                  default      : exprtk_debug(("numeric::details::process_impl<T> - Invalid unary operation.\n"));
5490
0
                                 return std::numeric_limits<T>::quiet_NaN();
5491
1.98k
               }
5492
1.98k
            }
5493
5494
            template <typename T>
5495
            inline T process_impl(const operator_type operation, const T arg0, const T arg1)
5496
10.9k
            {
5497
10.9k
               switch (operation)
5498
10.9k
               {
5499
1.77k
                  case e_add    : return (arg0 + arg1);
5500
177
                  case e_sub    : return (arg0 - arg1);
5501
136
                  case e_mul    : return (arg0 * arg1);
5502
338
                  case e_div    : return (arg0 / arg1);
5503
7.32k
                  case e_mod    : return modulus<T>(arg0,arg1);
5504
909
                  case e_pow    : return pow<T>(arg0,arg1);
5505
0
                  case e_atan2  : return atan2<T>(arg0,arg1);
5506
0
                  case e_min    : return std::min<T>(arg0,arg1);
5507
0
                  case e_max    : return std::max<T>(arg0,arg1);
5508
0
                  case e_logn   : return logn<T>(arg0,arg1);
5509
30
                  case e_lt     : return (arg0 <  arg1) ? T(1) : T(0);
5510
2
                  case e_lte    : return (arg0 <= arg1) ? T(1) : T(0);
5511
16
                  case e_eq     : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5512
2
                  case e_ne     : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5513
20
                  case e_gte    : return (arg0 >= arg1) ? T(1) : T(0);
5514
176
                  case e_gt     : return (arg0 >  arg1) ? T(1) : T(0);
5515
0
                  case e_and    : return and_opr <T>(arg0,arg1);
5516
6
                  case e_nand   : return nand_opr<T>(arg0,arg1);
5517
4
                  case e_or     : return or_opr  <T>(arg0,arg1);
5518
0
                  case e_nor    : return nor_opr <T>(arg0,arg1);
5519
2
                  case e_xor    : return xor_opr <T>(arg0,arg1);
5520
0
                  case e_xnor   : return xnor_opr<T>(arg0,arg1);
5521
0
                  case e_root   : return root    <T>(arg0,arg1);
5522
0
                  case e_roundn : return roundn  <T>(arg0,arg1);
5523
0
                  case e_equal  : return equal   <T>(arg0,arg1);
5524
0
                  case e_nequal : return nequal  <T>(arg0,arg1);
5525
0
                  case e_hypot  : return hypot   <T>(arg0,arg1);
5526
0
                  case e_shr    : return shr     <T>(arg0,arg1);
5527
0
                  case e_shl    : return shl     <T>(arg0,arg1);
5528
5529
0
                  default       : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n"));
5530
0
                                  return std::numeric_limits<T>::quiet_NaN();
5531
10.9k
               }
5532
10.9k
            }
double exprtk::details::numeric::details::process_impl<double>(exprtk::details::operator_type, double, double)
Line
Count
Source
5496
9.25k
            {
5497
9.25k
               switch (operation)
5498
9.25k
               {
5499
890
                  case e_add    : return (arg0 + arg1);
5500
90
                  case e_sub    : return (arg0 - arg1);
5501
95
                  case e_mul    : return (arg0 * arg1);
5502
265
                  case e_div    : return (arg0 / arg1);
5503
7.29k
                  case e_mod    : return modulus<T>(arg0,arg1);
5504
492
                  case e_pow    : return pow<T>(arg0,arg1);
5505
0
                  case e_atan2  : return atan2<T>(arg0,arg1);
5506
0
                  case e_min    : return std::min<T>(arg0,arg1);
5507
0
                  case e_max    : return std::max<T>(arg0,arg1);
5508
0
                  case e_logn   : return logn<T>(arg0,arg1);
5509
15
                  case e_lt     : return (arg0 <  arg1) ? T(1) : T(0);
5510
1
                  case e_lte    : return (arg0 <= arg1) ? T(1) : T(0);
5511
8
                  case e_eq     : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5512
1
                  case e_ne     : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5513
10
                  case e_gte    : return (arg0 >= arg1) ? T(1) : T(0);
5514
88
                  case e_gt     : return (arg0 >  arg1) ? T(1) : T(0);
5515
0
                  case e_and    : return and_opr <T>(arg0,arg1);
5516
3
                  case e_nand   : return nand_opr<T>(arg0,arg1);
5517
2
                  case e_or     : return or_opr  <T>(arg0,arg1);
5518
0
                  case e_nor    : return nor_opr <T>(arg0,arg1);
5519
1
                  case e_xor    : return xor_opr <T>(arg0,arg1);
5520
0
                  case e_xnor   : return xnor_opr<T>(arg0,arg1);
5521
0
                  case e_root   : return root    <T>(arg0,arg1);
5522
0
                  case e_roundn : return roundn  <T>(arg0,arg1);
5523
0
                  case e_equal  : return equal   <T>(arg0,arg1);
5524
0
                  case e_nequal : return nequal  <T>(arg0,arg1);
5525
0
                  case e_hypot  : return hypot   <T>(arg0,arg1);
5526
0
                  case e_shr    : return shr     <T>(arg0,arg1);
5527
0
                  case e_shl    : return shl     <T>(arg0,arg1);
5528
5529
0
                  default       : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n"));
5530
0
                                  return std::numeric_limits<T>::quiet_NaN();
5531
9.25k
               }
5532
9.25k
            }
float exprtk::details::numeric::details::process_impl<float>(exprtk::details::operator_type, float, float)
Line
Count
Source
5496
1.66k
            {
5497
1.66k
               switch (operation)
5498
1.66k
               {
5499
886
                  case e_add    : return (arg0 + arg1);
5500
87
                  case e_sub    : return (arg0 - arg1);
5501
41
                  case e_mul    : return (arg0 * arg1);
5502
73
                  case e_div    : return (arg0 / arg1);
5503
27
                  case e_mod    : return modulus<T>(arg0,arg1);
5504
417
                  case e_pow    : return pow<T>(arg0,arg1);
5505
0
                  case e_atan2  : return atan2<T>(arg0,arg1);
5506
0
                  case e_min    : return std::min<T>(arg0,arg1);
5507
0
                  case e_max    : return std::max<T>(arg0,arg1);
5508
0
                  case e_logn   : return logn<T>(arg0,arg1);
5509
15
                  case e_lt     : return (arg0 <  arg1) ? T(1) : T(0);
5510
1
                  case e_lte    : return (arg0 <= arg1) ? T(1) : T(0);
5511
8
                  case e_eq     : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5512
1
                  case e_ne     : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0);
5513
10
                  case e_gte    : return (arg0 >= arg1) ? T(1) : T(0);
5514
88
                  case e_gt     : return (arg0 >  arg1) ? T(1) : T(0);
5515
0
                  case e_and    : return and_opr <T>(arg0,arg1);
5516
3
                  case e_nand   : return nand_opr<T>(arg0,arg1);
5517
2
                  case e_or     : return or_opr  <T>(arg0,arg1);
5518
0
                  case e_nor    : return nor_opr <T>(arg0,arg1);
5519
1
                  case e_xor    : return xor_opr <T>(arg0,arg1);
5520
0
                  case e_xnor   : return xnor_opr<T>(arg0,arg1);
5521
0
                  case e_root   : return root    <T>(arg0,arg1);
5522
0
                  case e_roundn : return roundn  <T>(arg0,arg1);
5523
0
                  case e_equal  : return equal   <T>(arg0,arg1);
5524
0
                  case e_nequal : return nequal  <T>(arg0,arg1);
5525
0
                  case e_hypot  : return hypot   <T>(arg0,arg1);
5526
0
                  case e_shr    : return shr     <T>(arg0,arg1);
5527
0
                  case e_shl    : return shl     <T>(arg0,arg1);
5528
5529
0
                  default       : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n"));
5530
0
                                  return std::numeric_limits<T>::quiet_NaN();
5531
1.66k
               }
5532
1.66k
            }
5533
5534
            template <typename T>
5535
            inline T process_impl(const operator_type operation, const T arg0, const T arg1, int_type_tag)
5536
            {
5537
               switch (operation)
5538
               {
5539
                  case e_add    : return (arg0 + arg1);
5540
                  case e_sub    : return (arg0 - arg1);
5541
                  case e_mul    : return (arg0 * arg1);
5542
                  case e_div    : return (arg0 / arg1);
5543
                  case e_mod    : return arg0 % arg1;
5544
                  case e_pow    : return pow<T>(arg0,arg1);
5545
                  case e_min    : return std::min<T>(arg0,arg1);
5546
                  case e_max    : return std::max<T>(arg0,arg1);
5547
                  case e_logn   : return logn<T>(arg0,arg1);
5548
                  case e_lt     : return (arg0 <  arg1) ? T(1) : T(0);
5549
                  case e_lte    : return (arg0 <= arg1) ? T(1) : T(0);
5550
                  case e_eq     : return (arg0 == arg1) ? T(1) : T(0);
5551
                  case e_ne     : return (arg0 != arg1) ? T(1) : T(0);
5552
                  case e_gte    : return (arg0 >= arg1) ? T(1) : T(0);
5553
                  case e_gt     : return (arg0 >  arg1) ? T(1) : T(0);
5554
                  case e_and    : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(1) : T(0);
5555
                  case e_nand   : return ((arg0 != T(0)) && (arg1 != T(0))) ? T(0) : T(1);
5556
                  case e_or     : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(1) : T(0);
5557
                  case e_nor    : return ((arg0 != T(0)) || (arg1 != T(0))) ? T(0) : T(1);
5558
                  case e_xor    : return arg0 ^ arg1;
5559
                  case e_xnor   : return !(arg0 ^ arg1);
5560
                  case e_root   : return root<T>(arg0,arg1);
5561
                  case e_equal  : return arg0 == arg1;
5562
                  case e_nequal : return arg0 != arg1;
5563
                  case e_hypot  : return hypot<T>(arg0,arg1);
5564
                  case e_shr    : return arg0 >> arg1;
5565
                  case e_shl    : return arg0 << arg1;
5566
5567
                  default       : exprtk_debug(("numeric::details::process_impl<IntType> - Invalid binary operation.\n"));
5568
                                  return std::numeric_limits<T>::quiet_NaN();
5569
               }
5570
            }
5571
         }
5572
5573
         template <typename T>
5574
         inline T process(const operator_type operation, const T arg)
5575
15.8k
         {
5576
15.8k
            return exprtk::details::numeric::details::process_impl(operation,arg);
5577
15.8k
         }
double exprtk::details::numeric::process<double>(exprtk::details::operator_type, double)
Line
Count
Source
5575
13.8k
         {
5576
13.8k
            return exprtk::details::numeric::details::process_impl(operation,arg);
5577
13.8k
         }
float exprtk::details::numeric::process<float>(exprtk::details::operator_type, float)
Line
Count
Source
5575
1.98k
         {
5576
1.98k
            return exprtk::details::numeric::details::process_impl(operation,arg);
5577
1.98k
         }
5578
5579
         template <typename T>
5580
         inline T process(const operator_type operation, const T arg0, const T arg1)
5581
10.9k
         {
5582
10.9k
            return exprtk::details::numeric::details::process_impl(operation, arg0, arg1);
5583
10.9k
         }
double exprtk::details::numeric::process<double>(exprtk::details::operator_type, double, double)
Line
Count
Source
5581
9.25k
         {
5582
9.25k
            return exprtk::details::numeric::details::process_impl(operation, arg0, arg1);
5583
9.25k
         }
float exprtk::details::numeric::process<float>(exprtk::details::operator_type, float, float)
Line
Count
Source
5581
1.66k
         {
5582
1.66k
            return exprtk::details::numeric::details::process_impl(operation, arg0, arg1);
5583
1.66k
         }
5584
      }
5585
5586
      template <typename Node>
5587
      struct node_collector_interface
5588
      {
5589
         typedef Node* node_ptr_t;
5590
         typedef Node** node_pp_t;
5591
         typedef std::vector<node_pp_t> noderef_list_t;
5592
5593
         virtual ~node_collector_interface()
5594
390k
         {}
exprtk::details::node_collector_interface<exprtk::details::expression_node<double> >::~node_collector_interface()
Line
Count
Source
5594
307k
         {}
exprtk::details::node_collector_interface<exprtk::details::expression_node<float> >::~node_collector_interface()
Line
Count
Source
5594
82.8k
         {}
5595
5596
         virtual void collect_nodes(noderef_list_t&)
5597
206k
         {}
exprtk::details::node_collector_interface<exprtk::details::expression_node<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
5597
171k
         {}
exprtk::details::node_collector_interface<exprtk::details::expression_node<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
5597
34.9k
         {}
5598
      };
5599
5600
      template <typename Node>
5601
      struct node_depth_base;
5602
5603
      template <typename T>
5604
      class expression_node : public node_collector_interface<expression_node<T> >
5605
                            , public node_depth_base<expression_node<T> >
5606
      {
5607
      public:
5608
5609
         enum node_type
5610
         {
5611
            e_none          , e_null          , e_constant    , e_unary        ,
5612
            e_binary        , e_binary_ext    , e_trinary     , e_quaternary   ,
5613
            e_vararg        , e_conditional   , e_while       , e_repeat       ,
5614
            e_for           , e_switch        , e_mswitch     , e_return       ,
5615
            e_retenv        , e_variable      , e_stringvar   , e_stringconst  ,
5616
            e_stringvarrng  , e_cstringvarrng , e_strgenrange , e_strconcat    ,
5617
            e_stringvarsize , e_strswap       , e_stringsize  , e_stringvararg ,
5618
            e_function      , e_vafunction    , e_genfunction , e_strfunction  ,
5619
            e_strcondition  , e_strccondition , e_add         , e_sub          ,
5620
            e_mul           , e_div           , e_mod         , e_pow          ,
5621
            e_lt            , e_lte           , e_gt          , e_gte          ,
5622
            e_eq            , e_ne            , e_and         , e_nand         ,
5623
            e_or            , e_nor           , e_xor         , e_xnor         ,
5624
            e_in            , e_like          , e_ilike       , e_inranges     ,
5625
            e_ipow          , e_ipowinv       , e_abs         , e_acos         ,
5626
            e_acosh         , e_asin          , e_asinh       , e_atan         ,
5627
            e_atanh         , e_ceil          , e_cos         , e_cosh         ,
5628
            e_exp           , e_expm1         , e_floor       , e_log          ,
5629
            e_log10         , e_log2          , e_log1p       , e_neg          ,
5630
            e_pos           , e_round         , e_sin         , e_sinc         ,
5631
            e_sinh          , e_sqrt          , e_tan         , e_tanh         ,
5632
            e_cot           , e_sec           , e_csc         , e_r2d          ,
5633
            e_d2r           , e_d2g           , e_g2d         , e_notl         ,
5634
            e_sgn           , e_erf           , e_erfc        , e_ncdf         ,
5635
            e_frac          , e_trunc         , e_uvouv       , e_vov          ,
5636
            e_cov           , e_voc           , e_vob         , e_bov          ,
5637
            e_cob           , e_boc           , e_vovov       , e_vovoc        ,
5638
            e_vocov         , e_covov         , e_covoc       , e_vovovov      ,
5639
            e_vovovoc       , e_vovocov       , e_vocovov     , e_covovov      ,
5640
            e_covocov       , e_vocovoc       , e_covovoc     , e_vococov      ,
5641
            e_sf3ext        , e_sf4ext        , e_nulleq      , e_strass       ,
5642
            e_vector        , e_vecsize       , e_vecelem     , e_veccelem     ,
5643
            e_vecelemrtc    , e_veccelemrtc   , e_rbvecelem   , e_rbvecelemrtc ,
5644
            e_rbveccelem    , e_rbveccelemrtc , e_vecinit     , e_vecvalass    ,
5645
            e_vecvecass     , e_vecopvalass   , e_vecopvecass , e_vecfunc      ,
5646
            e_vecvecswap    , e_vecvecineq    , e_vecvalineq  , e_valvecineq   ,
5647
            e_vecvecarith   , e_vecvalarith   , e_valvecarith , e_vecunaryop   ,
5648
            e_vecondition   , e_break         , e_continue    , e_swap         ,
5649
            e_assert
5650
         };
5651
5652
         typedef T value_type;
5653
         typedef expression_node<T>* expression_ptr;
5654
         typedef node_collector_interface<expression_node<T> > nci_t;
5655
         typedef typename nci_t::noderef_list_t noderef_list_t;
5656
         typedef node_depth_base<expression_node<T> > ndb_t;
5657
5658
         virtual ~expression_node()
5659
390k
         {}
exprtk::details::expression_node<double>::~expression_node()
Line
Count
Source
5659
307k
         {}
exprtk::details::expression_node<float>::~expression_node()
Line
Count
Source
5659
82.8k
         {}
5660
5661
         inline virtual T value() const
5662
0
         {
5663
0
            return std::numeric_limits<T>::quiet_NaN();
5664
0
         }
Unexecuted instantiation: exprtk::details::expression_node<double>::value() const
Unexecuted instantiation: exprtk::details::expression_node<float>::value() const
5665
5666
         inline virtual expression_node<T>* branch(const std::size_t& index = 0) const
5667
0
         {
5668
0
            return reinterpret_cast<expression_ptr>(index * 0);
5669
0
         }
Unexecuted instantiation: exprtk::details::expression_node<double>::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::expression_node<float>::branch(unsigned long const&) const
5670
5671
         inline virtual node_type type() const
5672
1.50M
         {
5673
1.50M
            return e_none;
5674
1.50M
         }
exprtk::details::expression_node<double>::type() const
Line
Count
Source
5672
1.35M
         {
5673
1.35M
            return e_none;
5674
1.35M
         }
exprtk::details::expression_node<float>::type() const
Line
Count
Source
5672
146k
         {
5673
146k
            return e_none;
5674
146k
         }
5675
5676
         inline virtual bool valid() const
5677
640M
         {
5678
640M
            return true;
5679
640M
         }
exprtk::details::expression_node<double>::valid() const
Line
Count
Source
5677
639M
         {
5678
639M
            return true;
5679
639M
         }
exprtk::details::expression_node<float>::valid() const
Line
Count
Source
5677
162k
         {
5678
162k
            return true;
5679
162k
         }
5680
      }; // class expression_node
5681
5682
      template <typename T>
5683
      inline bool is_generally_string_node(const expression_node<T>* node);
5684
5685
      inline bool is_true(const double v)
5686
130
      {
5687
130
         return std::not_equal_to<double>()(0.0,v);
5688
130
      }
5689
5690
      inline bool is_true(const long double v)
5691
0
      {
5692
0
         return std::not_equal_to<long double>()(0.0L,v);
5693
0
      }
5694
5695
      inline bool is_true(const float v)
5696
130
      {
5697
130
         return std::not_equal_to<float>()(0.0f,v);
5698
130
      }
5699
5700
      template <typename T>
5701
      inline bool is_true(const expression_node<T>* node)
5702
2
      {
5703
2
         return std::not_equal_to<T>()(T(0),node->value());
5704
2
      }
bool exprtk::details::is_true<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5702
1
      {
5703
1
         return std::not_equal_to<T>()(T(0),node->value());
5704
1
      }
bool exprtk::details::is_true<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5702
1
      {
5703
1
         return std::not_equal_to<T>()(T(0),node->value());
5704
1
      }
5705
5706
      template <typename T>
5707
      inline bool is_true(const std::pair<expression_node<T>*,bool>& node)
5708
10
      {
5709
10
         return std::not_equal_to<T>()(T(0),node.first->value());
5710
10
      }
bool exprtk::details::is_true<double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&)
Line
Count
Source
5708
5
      {
5709
5
         return std::not_equal_to<T>()(T(0),node.first->value());
5710
5
      }
bool exprtk::details::is_true<float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&)
Line
Count
Source
5708
5
      {
5709
5
         return std::not_equal_to<T>()(T(0),node.first->value());
5710
5
      }
5711
5712
      template <typename T>
5713
      inline bool is_false(const expression_node<T>* node)
5714
0
      {
5715
0
         return std::equal_to<T>()(T(0),node->value());
5716
0
      }
Unexecuted instantiation: bool exprtk::details::is_false<double>(exprtk::details::expression_node<double> const*)
Unexecuted instantiation: bool exprtk::details::is_false<float>(exprtk::details::expression_node<float> const*)
5717
5718
      template <typename T>
5719
      inline bool is_false(const std::pair<expression_node<T>*,bool>& node)
5720
      {
5721
         return std::equal_to<T>()(T(0),node.first->value());
5722
      }
5723
5724
      template <typename T>
5725
      inline bool is_literal_node(const expression_node<T>* node)
5726
186
      {
5727
186
         return node && (details::expression_node<T>::e_constant == node->type());
5728
186
      }
bool exprtk::details::is_literal_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5726
93
      {
5727
93
         return node && (details::expression_node<T>::e_constant == node->type());
5728
93
      }
bool exprtk::details::is_literal_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5726
93
      {
5727
93
         return node && (details::expression_node<T>::e_constant == node->type());
5728
93
      }
5729
5730
      template <typename T>
5731
      inline bool is_unary_node(const expression_node<T>* node)
5732
      {
5733
         return node && (details::expression_node<T>::e_unary == node->type());
5734
      }
5735
5736
      template <typename T>
5737
      inline bool is_neg_unary_node(const expression_node<T>* node)
5738
96.0k
      {
5739
96.0k
         return node && (details::expression_node<T>::e_neg == node->type());
5740
96.0k
      }
bool exprtk::details::is_neg_unary_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5738
87.2k
      {
5739
87.2k
         return node && (details::expression_node<T>::e_neg == node->type());
5740
87.2k
      }
bool exprtk::details::is_neg_unary_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5738
8.75k
      {
5739
8.75k
         return node && (details::expression_node<T>::e_neg == node->type());
5740
8.75k
      }
5741
5742
      template <typename T>
5743
      inline bool is_binary_node(const expression_node<T>* node)
5744
      {
5745
         return node && (details::expression_node<T>::e_binary == node->type());
5746
      }
5747
5748
      template <typename T>
5749
      inline bool is_variable_node(const expression_node<T>* node)
5750
932k
      {
5751
932k
         return node && (details::expression_node<T>::e_variable == node->type());
5752
932k
      }
bool exprtk::details::is_variable_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5750
813k
      {
5751
813k
         return node && (details::expression_node<T>::e_variable == node->type());
5752
813k
      }
bool exprtk::details::is_variable_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5750
119k
      {
5751
119k
         return node && (details::expression_node<T>::e_variable == node->type());
5752
119k
      }
5753
5754
      template <typename T>
5755
      inline bool is_ivariable_node(const expression_node<T>* node)
5756
24
      {
5757
24
         return node &&
5758
24
                (
5759
24
                  details::expression_node<T>::e_variable      == node->type() ||
5760
24
                  details::expression_node<T>::e_vecelem       == node->type() ||
5761
24
                  details::expression_node<T>::e_veccelem      == node->type() ||
5762
24
                  details::expression_node<T>::e_vecelemrtc    == node->type() ||
5763
24
                  details::expression_node<T>::e_veccelemrtc   == node->type() ||
5764
24
                  details::expression_node<T>::e_rbvecelem     == node->type() ||
5765
24
                  details::expression_node<T>::e_rbveccelem    == node->type() ||
5766
24
                  details::expression_node<T>::e_rbvecelemrtc  == node->type() ||
5767
24
                  details::expression_node<T>::e_rbveccelemrtc == node->type()
5768
24
                );
5769
24
      }
bool exprtk::details::is_ivariable_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5756
12
      {
5757
12
         return node &&
5758
12
                (
5759
12
                  details::expression_node<T>::e_variable      == node->type() ||
5760
12
                  details::expression_node<T>::e_vecelem       == node->type() ||
5761
12
                  details::expression_node<T>::e_veccelem      == node->type() ||
5762
12
                  details::expression_node<T>::e_vecelemrtc    == node->type() ||
5763
12
                  details::expression_node<T>::e_veccelemrtc   == node->type() ||
5764
12
                  details::expression_node<T>::e_rbvecelem     == node->type() ||
5765
12
                  details::expression_node<T>::e_rbveccelem    == node->type() ||
5766
12
                  details::expression_node<T>::e_rbvecelemrtc  == node->type() ||
5767
12
                  details::expression_node<T>::e_rbveccelemrtc == node->type()
5768
12
                );
5769
12
      }
bool exprtk::details::is_ivariable_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5756
12
      {
5757
12
         return node &&
5758
12
                (
5759
12
                  details::expression_node<T>::e_variable      == node->type() ||
5760
12
                  details::expression_node<T>::e_vecelem       == node->type() ||
5761
12
                  details::expression_node<T>::e_veccelem      == node->type() ||
5762
12
                  details::expression_node<T>::e_vecelemrtc    == node->type() ||
5763
12
                  details::expression_node<T>::e_veccelemrtc   == node->type() ||
5764
12
                  details::expression_node<T>::e_rbvecelem     == node->type() ||
5765
12
                  details::expression_node<T>::e_rbveccelem    == node->type() ||
5766
12
                  details::expression_node<T>::e_rbvecelemrtc  == node->type() ||
5767
12
                  details::expression_node<T>::e_rbveccelemrtc == node->type()
5768
12
                );
5769
12
      }
5770
5771
      template <typename T>
5772
      inline bool is_vector_elem_node(const expression_node<T>* node)
5773
36
      {
5774
36
         return node && (details::expression_node<T>::e_vecelem == node->type());
5775
36
      }
bool exprtk::details::is_vector_elem_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5773
18
      {
5774
18
         return node && (details::expression_node<T>::e_vecelem == node->type());
5775
18
      }
bool exprtk::details::is_vector_elem_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5773
18
      {
5774
18
         return node && (details::expression_node<T>::e_vecelem == node->type());
5775
18
      }
5776
5777
      template <typename T>
5778
      inline bool is_vector_celem_node(const expression_node<T>* node)
5779
36
      {
5780
36
         return node && (details::expression_node<T>::e_veccelem == node->type());
5781
36
      }
bool exprtk::details::is_vector_celem_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5779
18
      {
5780
18
         return node && (details::expression_node<T>::e_veccelem == node->type());
5781
18
      }
bool exprtk::details::is_vector_celem_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5779
18
      {
5780
18
         return node && (details::expression_node<T>::e_veccelem == node->type());
5781
18
      }
5782
5783
      template <typename T>
5784
      inline bool is_vector_elem_rtc_node(const expression_node<T>* node)
5785
36
      {
5786
36
         return node && (details::expression_node<T>::e_vecelemrtc == node->type());
5787
36
      }
bool exprtk::details::is_vector_elem_rtc_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5785
18
      {
5786
18
         return node && (details::expression_node<T>::e_vecelemrtc == node->type());
5787
18
      }
bool exprtk::details::is_vector_elem_rtc_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5785
18
      {
5786
18
         return node && (details::expression_node<T>::e_vecelemrtc == node->type());
5787
18
      }
5788
5789
      template <typename T>
5790
      inline bool is_vector_celem_rtc_node(const expression_node<T>* node)
5791
36
      {
5792
36
         return node && (details::expression_node<T>::e_veccelemrtc == node->type());
5793
36
      }
bool exprtk::details::is_vector_celem_rtc_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5791
18
      {
5792
18
         return node && (details::expression_node<T>::e_veccelemrtc == node->type());
5793
18
      }
bool exprtk::details::is_vector_celem_rtc_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5791
18
      {
5792
18
         return node && (details::expression_node<T>::e_veccelemrtc == node->type());
5793
18
      }
5794
5795
      template <typename T>
5796
      inline bool is_rebasevector_elem_node(const expression_node<T>* node)
5797
36
      {
5798
36
         return node && (details::expression_node<T>::e_rbvecelem == node->type());
5799
36
      }
bool exprtk::details::is_rebasevector_elem_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5797
18
      {
5798
18
         return node && (details::expression_node<T>::e_rbvecelem == node->type());
5799
18
      }
bool exprtk::details::is_rebasevector_elem_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5797
18
      {
5798
18
         return node && (details::expression_node<T>::e_rbvecelem == node->type());
5799
18
      }
5800
5801
      template <typename T>
5802
      inline bool is_rebasevector_elem_rtc_node(const expression_node<T>* node)
5803
36
      {
5804
36
         return node && (details::expression_node<T>::e_rbvecelemrtc == node->type());
5805
36
      }
bool exprtk::details::is_rebasevector_elem_rtc_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5803
18
      {
5804
18
         return node && (details::expression_node<T>::e_rbvecelemrtc == node->type());
5805
18
      }
bool exprtk::details::is_rebasevector_elem_rtc_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5803
18
      {
5804
18
         return node && (details::expression_node<T>::e_rbvecelemrtc == node->type());
5805
18
      }
5806
5807
      template <typename T>
5808
      inline bool is_rebasevector_celem_rtc_node(const expression_node<T>* node)
5809
26
      {
5810
26
         return node && (details::expression_node<T>::e_rbveccelemrtc == node->type());
5811
26
      }
bool exprtk::details::is_rebasevector_celem_rtc_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5809
13
      {
5810
13
         return node && (details::expression_node<T>::e_rbveccelemrtc == node->type());
5811
13
      }
bool exprtk::details::is_rebasevector_celem_rtc_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5809
13
      {
5810
13
         return node && (details::expression_node<T>::e_rbveccelemrtc == node->type());
5811
13
      }
5812
5813
      template <typename T>
5814
      inline bool is_rebasevector_celem_node(const expression_node<T>* node)
5815
36
      {
5816
36
         return node && (details::expression_node<T>::e_rbveccelem == node->type());
5817
36
      }
bool exprtk::details::is_rebasevector_celem_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5815
18
      {
5816
18
         return node && (details::expression_node<T>::e_rbveccelem == node->type());
5817
18
      }
bool exprtk::details::is_rebasevector_celem_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5815
18
      {
5816
18
         return node && (details::expression_node<T>::e_rbveccelem == node->type());
5817
18
      }
5818
5819
      template <typename T>
5820
      inline bool is_vector_node(const expression_node<T>* node)
5821
13.7k
      {
5822
13.7k
         return node && (details::expression_node<T>::e_vector == node->type());
5823
13.7k
      }
bool exprtk::details::is_vector_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5821
11.8k
      {
5822
11.8k
         return node && (details::expression_node<T>::e_vector == node->type());
5823
11.8k
      }
bool exprtk::details::is_vector_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5821
1.94k
      {
5822
1.94k
         return node && (details::expression_node<T>::e_vector == node->type());
5823
1.94k
      }
5824
5825
      template <typename T>
5826
      inline bool is_ivector_node(const expression_node<T>* node)
5827
782k
      {
5828
782k
         if (node)
5829
782k
         {
5830
782k
            switch (node->type())
5831
782k
            {
5832
0
               case details::expression_node<T>::e_vector      :
5833
0
               case details::expression_node<T>::e_vecvalass   :
5834
0
               case details::expression_node<T>::e_vecvecass   :
5835
0
               case details::expression_node<T>::e_vecopvalass :
5836
0
               case details::expression_node<T>::e_vecopvecass :
5837
0
               case details::expression_node<T>::e_vecvecswap  :
5838
0
               case details::expression_node<T>::e_vecvecarith :
5839
0
               case details::expression_node<T>::e_vecvalarith :
5840
0
               case details::expression_node<T>::e_valvecarith :
5841
0
               case details::expression_node<T>::e_vecunaryop  :
5842
0
               case details::expression_node<T>::e_vecondition : return true;
5843
782k
               default                                         : return false;
5844
782k
            }
5845
782k
         }
5846
0
         else
5847
0
            return false;
5848
782k
      }
bool exprtk::details::is_ivector_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5827
681k
      {
5828
681k
         if (node)
5829
681k
         {
5830
681k
            switch (node->type())
5831
681k
            {
5832
0
               case details::expression_node<T>::e_vector      :
5833
0
               case details::expression_node<T>::e_vecvalass   :
5834
0
               case details::expression_node<T>::e_vecvecass   :
5835
0
               case details::expression_node<T>::e_vecopvalass :
5836
0
               case details::expression_node<T>::e_vecopvecass :
5837
0
               case details::expression_node<T>::e_vecvecswap  :
5838
0
               case details::expression_node<T>::e_vecvecarith :
5839
0
               case details::expression_node<T>::e_vecvalarith :
5840
0
               case details::expression_node<T>::e_valvecarith :
5841
0
               case details::expression_node<T>::e_vecunaryop  :
5842
0
               case details::expression_node<T>::e_vecondition : return true;
5843
681k
               default                                         : return false;
5844
681k
            }
5845
681k
         }
5846
0
         else
5847
0
            return false;
5848
681k
      }
bool exprtk::details::is_ivector_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5827
100k
      {
5828
100k
         if (node)
5829
100k
         {
5830
100k
            switch (node->type())
5831
100k
            {
5832
0
               case details::expression_node<T>::e_vector      :
5833
0
               case details::expression_node<T>::e_vecvalass   :
5834
0
               case details::expression_node<T>::e_vecvecass   :
5835
0
               case details::expression_node<T>::e_vecopvalass :
5836
0
               case details::expression_node<T>::e_vecopvecass :
5837
0
               case details::expression_node<T>::e_vecvecswap  :
5838
0
               case details::expression_node<T>::e_vecvecarith :
5839
0
               case details::expression_node<T>::e_vecvalarith :
5840
0
               case details::expression_node<T>::e_valvecarith :
5841
0
               case details::expression_node<T>::e_vecunaryop  :
5842
0
               case details::expression_node<T>::e_vecondition : return true;
5843
100k
               default                                         : return false;
5844
100k
            }
5845
100k
         }
5846
0
         else
5847
0
            return false;
5848
100k
      }
5849
5850
      template <typename T>
5851
      inline bool is_constant_node(const expression_node<T>* node)
5852
1.11M
      {
5853
1.11M
         return node &&
5854
1.11M
         (
5855
1.11M
           details::expression_node<T>::e_constant    == node->type() ||
5856
1.11M
           details::expression_node<T>::e_stringconst == node->type()
5857
1.11M
         );
5858
1.11M
      }
bool exprtk::details::is_constant_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5852
969k
      {
5853
969k
         return node &&
5854
969k
         (
5855
969k
           details::expression_node<T>::e_constant    == node->type() ||
5856
969k
           details::expression_node<T>::e_stringconst == node->type()
5857
969k
         );
5858
969k
      }
bool exprtk::details::is_constant_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5852
142k
      {
5853
142k
         return node &&
5854
142k
         (
5855
142k
           details::expression_node<T>::e_constant    == node->type() ||
5856
142k
           details::expression_node<T>::e_stringconst == node->type()
5857
142k
         );
5858
142k
      }
5859
5860
      template <typename T>
5861
      inline bool is_null_node(const expression_node<T>* node)
5862
788k
      {
5863
788k
         return node && (details::expression_node<T>::e_null == node->type());
5864
788k
      }
bool exprtk::details::is_null_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5862
690k
      {
5863
690k
         return node && (details::expression_node<T>::e_null == node->type());
5864
690k
      }
bool exprtk::details::is_null_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5862
97.5k
      {
5863
97.5k
         return node && (details::expression_node<T>::e_null == node->type());
5864
97.5k
      }
5865
5866
      template <typename T>
5867
      inline bool is_break_node(const expression_node<T>* node)
5868
407k
      {
5869
407k
         return node && (details::expression_node<T>::e_break == node->type());
5870
407k
      }
bool exprtk::details::is_break_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5868
355k
      {
5869
355k
         return node && (details::expression_node<T>::e_break == node->type());
5870
355k
      }
bool exprtk::details::is_break_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5868
51.6k
      {
5869
51.6k
         return node && (details::expression_node<T>::e_break == node->type());
5870
51.6k
      }
5871
5872
      template <typename T>
5873
      inline bool is_continue_node(const expression_node<T>* node)
5874
407k
      {
5875
407k
         return node && (details::expression_node<T>::e_continue == node->type());
5876
407k
      }
bool exprtk::details::is_continue_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5874
355k
      {
5875
355k
         return node && (details::expression_node<T>::e_continue == node->type());
5876
355k
      }
bool exprtk::details::is_continue_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5874
51.6k
      {
5875
51.6k
         return node && (details::expression_node<T>::e_continue == node->type());
5876
51.6k
      }
5877
5878
      template <typename T>
5879
      inline bool is_swap_node(const expression_node<T>* node)
5880
      {
5881
         return node && (details::expression_node<T>::e_swap == node->type());
5882
      }
5883
5884
      template <typename T>
5885
      inline bool is_function(const expression_node<T>* node)
5886
      {
5887
         return node && (details::expression_node<T>::e_function == node->type());
5888
      }
5889
5890
      template <typename T>
5891
      inline bool is_vararg_node(const expression_node<T>* node)
5892
      {
5893
         return node && (details::expression_node<T>::e_vararg == node->type());
5894
      }
5895
5896
      template <typename T>
5897
      inline bool is_return_node(const expression_node<T>* node)
5898
392k
      {
5899
392k
         return node && (details::expression_node<T>::e_return == node->type());
5900
392k
      }
bool exprtk::details::is_return_node<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5898
340k
      {
5899
340k
         return node && (details::expression_node<T>::e_return == node->type());
5900
340k
      }
bool exprtk::details::is_return_node<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5898
51.7k
      {
5899
51.7k
         return node && (details::expression_node<T>::e_return == node->type());
5900
51.7k
      }
5901
5902
      template <typename T> class unary_node;
5903
5904
      template <typename T>
5905
      inline bool is_negate_node(const expression_node<T>* node)
5906
      {
5907
         if (node && is_unary_node(node))
5908
         {
5909
            return (details::e_neg == static_cast<const unary_node<T>*>(node)->operation());
5910
         }
5911
         else
5912
            return false;
5913
      }
5914
5915
      template <typename T>
5916
      inline bool is_assert_node(const expression_node<T>* node)
5917
      {
5918
         return node && (details::expression_node<T>::e_assert == node->type());
5919
      }
5920
5921
      template <typename T>
5922
      inline bool branch_deletable(const expression_node<T>* node)
5923
178k
      {
5924
178k
         return (0 != node)             &&
5925
178k
                !is_variable_node(node) &&
5926
178k
                !is_string_node  (node) ;
5927
178k
      }
bool exprtk::details::branch_deletable<double>(exprtk::details::expression_node<double> const*)
Line
Count
Source
5923
152k
      {
5924
152k
         return (0 != node)             &&
5925
152k
                !is_variable_node(node) &&
5926
152k
                !is_string_node  (node) ;
5927
152k
      }
bool exprtk::details::branch_deletable<float>(exprtk::details::expression_node<float> const*)
Line
Count
Source
5923
25.4k
      {
5924
25.4k
         return (0 != node)             &&
5925
25.4k
                !is_variable_node(node) &&
5926
25.4k
                !is_string_node  (node) ;
5927
25.4k
      }
5928
5929
      template <std::size_t N, typename T>
5930
      inline bool all_nodes_valid(expression_node<T>* const (&b)[N])
5931
27.8k
      {
5932
67.8k
         for (std::size_t i = 0; i < N; ++i)
5933
39.9k
         {
5934
39.9k
            if (0 == b[i]) return false;
5935
39.9k
         }
5936
5937
27.8k
         return true;
5938
27.8k
      }
bool exprtk::details::all_nodes_valid<1ul, double>(exprtk::details::expression_node<double>* const (&) [1ul])
Line
Count
Source
5931
13.8k
      {
5932
27.7k
         for (std::size_t i = 0; i < N; ++i)
5933
13.8k
         {
5934
13.8k
            if (0 == b[i]) return false;
5935
13.8k
         }
5936
5937
13.8k
         return true;
5938
13.8k
      }
bool exprtk::details::all_nodes_valid<2ul, double>(exprtk::details::expression_node<double>* const (&) [2ul])
Line
Count
Source
5931
9.80k
      {
5932
29.4k
         for (std::size_t i = 0; i < N; ++i)
5933
19.6k
         {
5934
19.6k
            if (0 == b[i]) return false;
5935
19.6k
         }
5936
5937
9.80k
         return true;
5938
9.80k
      }
bool exprtk::details::all_nodes_valid<3ul, double>(exprtk::details::expression_node<double>* const (&) [3ul])
Line
Count
Source
5931
9
      {
5932
36
         for (std::size_t i = 0; i < N; ++i)
5933
27
         {
5934
27
            if (0 == b[i]) return false;
5935
27
         }
5936
5937
9
         return true;
5938
9
      }
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<4ul, double>(exprtk::details::expression_node<double>* const (&) [4ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<5ul, double>(exprtk::details::expression_node<double>* const (&) [5ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<6ul, double>(exprtk::details::expression_node<double>* const (&) [6ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<7ul, double>(exprtk::details::expression_node<double>* const (&) [7ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<8ul, double>(exprtk::details::expression_node<double>* const (&) [8ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<9ul, double>(exprtk::details::expression_node<double>* const (&) [9ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<10ul, double>(exprtk::details::expression_node<double>* const (&) [10ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<11ul, double>(exprtk::details::expression_node<double>* const (&) [11ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<12ul, double>(exprtk::details::expression_node<double>* const (&) [12ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<13ul, double>(exprtk::details::expression_node<double>* const (&) [13ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<14ul, double>(exprtk::details::expression_node<double>* const (&) [14ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<15ul, double>(exprtk::details::expression_node<double>* const (&) [15ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<16ul, double>(exprtk::details::expression_node<double>* const (&) [16ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<17ul, double>(exprtk::details::expression_node<double>* const (&) [17ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<18ul, double>(exprtk::details::expression_node<double>* const (&) [18ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<19ul, double>(exprtk::details::expression_node<double>* const (&) [19ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<20ul, double>(exprtk::details::expression_node<double>* const (&) [20ul])
bool exprtk::details::all_nodes_valid<1ul, float>(exprtk::details::expression_node<float>* const (&) [1ul])
Line
Count
Source
5931
1.98k
      {
5932
3.97k
         for (std::size_t i = 0; i < N; ++i)
5933
1.98k
         {
5934
1.98k
            if (0 == b[i]) return false;
5935
1.98k
         }
5936
5937
1.98k
         return true;
5938
1.98k
      }
bool exprtk::details::all_nodes_valid<2ul, float>(exprtk::details::expression_node<float>* const (&) [2ul])
Line
Count
Source
5931
2.20k
      {
5932
6.60k
         for (std::size_t i = 0; i < N; ++i)
5933
4.40k
         {
5934
4.40k
            if (0 == b[i]) return false;
5935
4.40k
         }
5936
5937
2.20k
         return true;
5938
2.20k
      }
bool exprtk::details::all_nodes_valid<3ul, float>(exprtk::details::expression_node<float>* const (&) [3ul])
Line
Count
Source
5931
9
      {
5932
36
         for (std::size_t i = 0; i < N; ++i)
5933
27
         {
5934
27
            if (0 == b[i]) return false;
5935
27
         }
5936
5937
9
         return true;
5938
9
      }
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<4ul, float>(exprtk::details::expression_node<float>* const (&) [4ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<5ul, float>(exprtk::details::expression_node<float>* const (&) [5ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<6ul, float>(exprtk::details::expression_node<float>* const (&) [6ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<7ul, float>(exprtk::details::expression_node<float>* const (&) [7ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<8ul, float>(exprtk::details::expression_node<float>* const (&) [8ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<9ul, float>(exprtk::details::expression_node<float>* const (&) [9ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<10ul, float>(exprtk::details::expression_node<float>* const (&) [10ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<11ul, float>(exprtk::details::expression_node<float>* const (&) [11ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<12ul, float>(exprtk::details::expression_node<float>* const (&) [12ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<13ul, float>(exprtk::details::expression_node<float>* const (&) [13ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<14ul, float>(exprtk::details::expression_node<float>* const (&) [14ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<15ul, float>(exprtk::details::expression_node<float>* const (&) [15ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<16ul, float>(exprtk::details::expression_node<float>* const (&) [16ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<17ul, float>(exprtk::details::expression_node<float>* const (&) [17ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<18ul, float>(exprtk::details::expression_node<float>* const (&) [18ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<19ul, float>(exprtk::details::expression_node<float>* const (&) [19ul])
Unexecuted instantiation: bool exprtk::details::all_nodes_valid<20ul, float>(exprtk::details::expression_node<float>* const (&) [20ul])
5939
5940
      template <typename T,
5941
                typename Allocator,
5942
                template <typename, typename> class Sequence>
5943
      inline bool all_nodes_valid(const Sequence<expression_node<T>*,Allocator>& b)
5944
14
      {
5945
66
         for (std::size_t i = 0; i < b.size(); ++i)
5946
52
         {
5947
52
            if (0 == b[i]) return false;
5948
52
         }
5949
5950
14
         return true;
5951
14
      }
bool exprtk::details::all_nodes_valid<double, std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Line
Count
Source
5944
7
      {
5945
33
         for (std::size_t i = 0; i < b.size(); ++i)
5946
26
         {
5947
26
            if (0 == b[i]) return false;
5948
26
         }
5949
5950
7
         return true;
5951
7
      }
bool exprtk::details::all_nodes_valid<float, std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Line
Count
Source
5944
7
      {
5945
33
         for (std::size_t i = 0; i < b.size(); ++i)
5946
26
         {
5947
26
            if (0 == b[i]) return false;
5948
26
         }
5949
5950
7
         return true;
5951
7
      }
5952
5953
      template <std::size_t N, typename T>
5954
      inline bool all_nodes_variables(expression_node<T>* const (&b)[N])
5955
18
      {
5956
18
         for (std::size_t i = 0; i < N; ++i)
5957
18
         {
5958
18
            if (0 == b[i])
5959
0
               return false;
5960
18
            else if (!is_variable_node(b[i]))
5961
18
               return false;
5962
18
         }
5963
5964
0
         return true;
5965
18
      }
bool exprtk::details::all_nodes_variables<3ul, double>(exprtk::details::expression_node<double>* const (&) [3ul])
Line
Count
Source
5955
9
      {
5956
9
         for (std::size_t i = 0; i < N; ++i)
5957
9
         {
5958
9
            if (0 == b[i])
5959
0
               return false;
5960
9
            else if (!is_variable_node(b[i]))
5961
9
               return false;
5962
9
         }
5963
5964
0
         return true;
5965
9
      }
Unexecuted instantiation: bool exprtk::details::all_nodes_variables<4ul, double>(exprtk::details::expression_node<double>* const (&) [4ul])
bool exprtk::details::all_nodes_variables<3ul, float>(exprtk::details::expression_node<float>* const (&) [3ul])
Line
Count
Source
5955
9
      {
5956
9
         for (std::size_t i = 0; i < N; ++i)
5957
9
         {
5958
9
            if (0 == b[i])
5959
0
               return false;
5960
9
            else if (!is_variable_node(b[i]))
5961
9
               return false;
5962
9
         }
5963
5964
0
         return true;
5965
9
      }
Unexecuted instantiation: bool exprtk::details::all_nodes_variables<4ul, float>(exprtk::details::expression_node<float>* const (&) [4ul])
5966
5967
      template <typename T,
5968
                typename Allocator,
5969
                template <typename, typename> class Sequence>
5970
      inline bool all_nodes_variables(const Sequence<expression_node<T>*,Allocator>& b)
5971
14
      {
5972
14
         for (std::size_t i = 0; i < b.size(); ++i)
5973
14
         {
5974
14
            if (0 == b[i])
5975
0
               return false;
5976
14
            else if (!is_variable_node(b[i]))
5977
14
               return false;
5978
14
         }
5979
5980
0
         return true;
5981
14
      }
bool exprtk::details::all_nodes_variables<double, std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Line
Count
Source
5971
7
      {
5972
7
         for (std::size_t i = 0; i < b.size(); ++i)
5973
7
         {
5974
7
            if (0 == b[i])
5975
0
               return false;
5976
7
            else if (!is_variable_node(b[i]))
5977
7
               return false;
5978
7
         }
5979
5980
0
         return true;
5981
7
      }
bool exprtk::details::all_nodes_variables<float, std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Line
Count
Source
5971
7
      {
5972
7
         for (std::size_t i = 0; i < b.size(); ++i)
5973
7
         {
5974
7
            if (0 == b[i])
5975
0
               return false;
5976
7
            else if (!is_variable_node(b[i]))
5977
7
               return false;
5978
7
         }
5979
5980
0
         return true;
5981
7
      }
5982
5983
      template <typename Node>
5984
      class node_collection_destructor
5985
      {
5986
      public:
5987
5988
         typedef node_collector_interface<Node> nci_t;
5989
5990
         typedef typename nci_t::node_ptr_t     node_ptr_t;
5991
         typedef typename nci_t::node_pp_t      node_pp_t;
5992
         typedef typename nci_t::noderef_list_t noderef_list_t;
5993
5994
         static void delete_nodes(node_ptr_t& root)
5995
157k
         {
5996
157k
            std::vector<node_pp_t> node_delete_list;
5997
157k
            node_delete_list.reserve(1000);
5998
5999
157k
            collect_nodes(root, node_delete_list);
6000
6001
476k
            for (std::size_t i = 0; i < node_delete_list.size(); ++i)
6002
319k
            {
6003
319k
               node_ptr_t& node = *node_delete_list[i];
6004
319k
               exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node)));
6005
319k
               delete node;
6006
319k
               node = reinterpret_cast<node_ptr_t>(0);
6007
319k
            }
6008
157k
         }
exprtk::details::node_collection_destructor<exprtk::details::expression_node<double> >::delete_nodes(exprtk::details::expression_node<double>*&)
Line
Count
Source
5995
127k
         {
5996
127k
            std::vector<node_pp_t> node_delete_list;
5997
127k
            node_delete_list.reserve(1000);
5998
5999
127k
            collect_nodes(root, node_delete_list);
6000
6001
399k
            for (std::size_t i = 0; i < node_delete_list.size(); ++i)
6002
272k
            {
6003
272k
               node_ptr_t& node = *node_delete_list[i];
6004
272k
               exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node)));
6005
272k
               delete node;
6006
272k
               node = reinterpret_cast<node_ptr_t>(0);
6007
272k
            }
6008
127k
         }
exprtk::details::node_collection_destructor<exprtk::details::expression_node<float> >::delete_nodes(exprtk::details::expression_node<float>*&)
Line
Count
Source
5995
29.6k
         {
5996
29.6k
            std::vector<node_pp_t> node_delete_list;
5997
29.6k
            node_delete_list.reserve(1000);
5998
5999
29.6k
            collect_nodes(root, node_delete_list);
6000
6001
76.9k
            for (std::size_t i = 0; i < node_delete_list.size(); ++i)
6002
47.2k
            {
6003
47.2k
               node_ptr_t& node = *node_delete_list[i];
6004
47.2k
               exprtk_debug(("ncd::delete_nodes() - deleting: %p\n", reinterpret_cast<void*>(node)));
6005
47.2k
               delete node;
6006
47.2k
               node = reinterpret_cast<node_ptr_t>(0);
6007
47.2k
            }
6008
29.6k
         }
6009
6010
      private:
6011
6012
         static void collect_nodes(node_ptr_t& root, noderef_list_t& node_delete_list)
6013
157k
         {
6014
157k
            std::deque<node_ptr_t> node_list;
6015
157k
            node_list.push_back(root);
6016
157k
            node_delete_list.push_back(&root);
6017
6018
157k
            noderef_list_t child_node_delete_list;
6019
157k
            child_node_delete_list.reserve(1000);
6020
6021
476k
            while (!node_list.empty())
6022
319k
            {
6023
319k
               node_list.front()->collect_nodes(child_node_delete_list);
6024
6025
319k
               if (!child_node_delete_list.empty())
6026
112k
               {
6027
274k
                  for (std::size_t i = 0; i < child_node_delete_list.size(); ++i)
6028
162k
                  {
6029
162k
                     node_pp_t& node = child_node_delete_list[i];
6030
6031
162k
                     if (0 == (*node))
6032
0
                     {
6033
0
                        exprtk_debug(("ncd::collect_nodes() - null node encountered.\n"));
6034
0
                     }
6035
6036
162k
                     node_list.push_back(*node);
6037
162k
                  }
6038
6039
112k
                  node_delete_list.insert(
6040
112k
                     node_delete_list.end(),
6041
112k
                     child_node_delete_list.begin(), child_node_delete_list.end());
6042
6043
112k
                  child_node_delete_list.clear();
6044
112k
               }
6045
6046
319k
               node_list.pop_front();
6047
319k
            }
6048
6049
157k
            std::reverse(node_delete_list.begin(), node_delete_list.end());
6050
157k
         }
exprtk::details::node_collection_destructor<exprtk::details::expression_node<double> >::collect_nodes(exprtk::details::expression_node<double>*&, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
6013
127k
         {
6014
127k
            std::deque<node_ptr_t> node_list;
6015
127k
            node_list.push_back(root);
6016
127k
            node_delete_list.push_back(&root);
6017
6018
127k
            noderef_list_t child_node_delete_list;
6019
127k
            child_node_delete_list.reserve(1000);
6020
6021
399k
            while (!node_list.empty())
6022
272k
            {
6023
272k
               node_list.front()->collect_nodes(child_node_delete_list);
6024
6025
272k
               if (!child_node_delete_list.empty())
6026
100k
               {
6027
245k
                  for (std::size_t i = 0; i < child_node_delete_list.size(); ++i)
6028
144k
                  {
6029
144k
                     node_pp_t& node = child_node_delete_list[i];
6030
6031
144k
                     if (0 == (*node))
6032
0
                     {
6033
0
                        exprtk_debug(("ncd::collect_nodes() - null node encountered.\n"));
6034
0
                     }
6035
6036
144k
                     node_list.push_back(*node);
6037
144k
                  }
6038
6039
100k
                  node_delete_list.insert(
6040
100k
                     node_delete_list.end(),
6041
100k
                     child_node_delete_list.begin(), child_node_delete_list.end());
6042
6043
100k
                  child_node_delete_list.clear();
6044
100k
               }
6045
6046
272k
               node_list.pop_front();
6047
272k
            }
6048
6049
127k
            std::reverse(node_delete_list.begin(), node_delete_list.end());
6050
127k
         }
exprtk::details::node_collection_destructor<exprtk::details::expression_node<float> >::collect_nodes(exprtk::details::expression_node<float>*&, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
6013
29.6k
         {
6014
29.6k
            std::deque<node_ptr_t> node_list;
6015
29.6k
            node_list.push_back(root);
6016
29.6k
            node_delete_list.push_back(&root);
6017
6018
29.6k
            noderef_list_t child_node_delete_list;
6019
29.6k
            child_node_delete_list.reserve(1000);
6020
6021
76.9k
            while (!node_list.empty())
6022
47.2k
            {
6023
47.2k
               node_list.front()->collect_nodes(child_node_delete_list);
6024
6025
47.2k
               if (!child_node_delete_list.empty())
6026
12.3k
               {
6027
29.9k
                  for (std::size_t i = 0; i < child_node_delete_list.size(); ++i)
6028
17.6k
                  {
6029
17.6k
                     node_pp_t& node = child_node_delete_list[i];
6030
6031
17.6k
                     if (0 == (*node))
6032
0
                     {
6033
0
                        exprtk_debug(("ncd::collect_nodes() - null node encountered.\n"));
6034
0
                     }
6035
6036
17.6k
                     node_list.push_back(*node);
6037
17.6k
                  }
6038
6039
12.3k
                  node_delete_list.insert(
6040
12.3k
                     node_delete_list.end(),
6041
12.3k
                     child_node_delete_list.begin(), child_node_delete_list.end());
6042
6043
12.3k
                  child_node_delete_list.clear();
6044
12.3k
               }
6045
6046
47.2k
               node_list.pop_front();
6047
47.2k
            }
6048
6049
29.6k
            std::reverse(node_delete_list.begin(), node_delete_list.end());
6050
29.6k
         }
6051
      };
6052
6053
      template <typename NodeAllocator, typename T, std::size_t N>
6054
      inline void free_all_nodes(NodeAllocator& node_allocator, expression_node<T>* (&b)[N])
6055
104
      {
6056
312
         for (std::size_t i = 0; i < N; ++i)
6057
208
         {
6058
208
            free_node(node_allocator,b[i]);
6059
208
         }
6060
104
      }
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 1ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [1ul])
void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 2ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [2ul])
Line
Count
Source
6055
52
      {
6056
156
         for (std::size_t i = 0; i < N; ++i)
6057
104
         {
6058
104
            free_node(node_allocator,b[i]);
6059
104
         }
6060
52
      }
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 3ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [3ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 4ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [4ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 5ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [5ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 6ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [6ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 7ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [7ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 8ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [8ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 9ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [9ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 10ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [10ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 11ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [11ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 12ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [12ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 13ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [13ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 14ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [14ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 15ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [15ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 16ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [16ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 17ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [17ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 18ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [18ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 19ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [19ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, 20ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>* (&) [20ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 1ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [1ul])
void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 2ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [2ul])
Line
Count
Source
6055
52
      {
6056
156
         for (std::size_t i = 0; i < N; ++i)
6057
104
         {
6058
104
            free_node(node_allocator,b[i]);
6059
104
         }
6060
52
      }
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 3ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [3ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 4ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [4ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 5ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [5ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 6ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [6ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 7ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [7ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 8ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [8ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 9ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [9ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 10ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [10ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 11ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [11ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 12ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [12ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 13ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [13ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 14ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [14ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 15ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [15ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 16ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [16ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 17ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [17ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 18ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [18ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 19ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [19ul])
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, 20ul>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>* (&) [20ul])
6061
6062
      template <typename NodeAllocator,
6063
                typename T,
6064
                typename Allocator,
6065
                template <typename, typename> class Sequence>
6066
      inline void free_all_nodes(NodeAllocator& node_allocator, Sequence<expression_node<T>*,Allocator>& b)
6067
0
      {
6068
0
         for (std::size_t i = 0; i < b.size(); ++i)
6069
0
         {
6070
0
            free_node(node_allocator,b[i]);
6071
0
         }
6072
6073
0
         b.clear();
6074
0
      }
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, double, std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(exprtk::details::node_allocator&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> >&)
Unexecuted instantiation: void exprtk::details::free_all_nodes<exprtk::details::node_allocator, float, std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(exprtk::details::node_allocator&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> >&)
6075
6076
      template <typename NodeAllocator, typename T>
6077
      inline void free_node(NodeAllocator&, expression_node<T>*& node)
6078
147k
      {
6079
147k
         if ((0 == node) || is_variable_node(node) || is_string_node(node))
6080
5.16k
         {
6081
5.16k
            return;
6082
5.16k
         }
6083
6084
142k
         node_collection_destructor<expression_node<T> >
6085
142k
            ::delete_nodes(node);
6086
142k
      }
void exprtk::details::free_node<exprtk::details::node_allocator, double>(exprtk::details::node_allocator&, exprtk::details::expression_node<double>*&)
Line
Count
Source
6078
122k
      {
6079
122k
         if ((0 == node) || is_variable_node(node) || is_string_node(node))
6080
2.59k
         {
6081
2.59k
            return;
6082
2.59k
         }
6083
6084
119k
         node_collection_destructor<expression_node<T> >
6085
119k
            ::delete_nodes(node);
6086
119k
      }
void exprtk::details::free_node<exprtk::details::node_allocator, float>(exprtk::details::node_allocator&, exprtk::details::expression_node<float>*&)
Line
Count
Source
6078
24.8k
      {
6079
24.8k
         if ((0 == node) || is_variable_node(node) || is_string_node(node))
6080
2.57k
         {
6081
2.57k
            return;
6082
2.57k
         }
6083
6084
22.2k
         node_collection_destructor<expression_node<T> >
6085
22.2k
            ::delete_nodes(node);
6086
22.2k
      }
6087
6088
      template <typename T>
6089
      inline void destroy_node(expression_node<T>*& node)
6090
14.8k
      {
6091
14.8k
         if (0 != node)
6092
14.8k
         {
6093
14.8k
            node_collection_destructor<expression_node<T> >
6094
14.8k
               ::delete_nodes(node);
6095
14.8k
         }
6096
14.8k
      }
void exprtk::details::destroy_node<double>(exprtk::details::expression_node<double>*&)
Line
Count
Source
6090
7.45k
      {
6091
7.45k
         if (0 != node)
6092
7.45k
         {
6093
7.45k
            node_collection_destructor<expression_node<T> >
6094
7.45k
               ::delete_nodes(node);
6095
7.45k
         }
6096
7.45k
      }
void exprtk::details::destroy_node<float>(exprtk::details::expression_node<float>*&)
Line
Count
Source
6090
7.44k
      {
6091
7.44k
         if (0 != node)
6092
7.44k
         {
6093
7.44k
            node_collection_destructor<expression_node<T> >
6094
7.44k
               ::delete_nodes(node);
6095
7.44k
         }
6096
7.44k
      }
6097
6098
      template <typename Node>
6099
      struct node_depth_base
6100
      {
6101
         typedef Node* node_ptr_t;
6102
         typedef std::pair<node_ptr_t,bool> nb_pair_t;
6103
6104
         node_depth_base()
6105
390k
         : depth_set(false)
6106
390k
         , depth(0)
6107
390k
         {}
exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::node_depth_base()
Line
Count
Source
6105
307k
         : depth_set(false)
6106
307k
         , depth(0)
6107
307k
         {}
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::node_depth_base()
Line
Count
Source
6105
82.8k
         : depth_set(false)
6106
82.8k
         , depth(0)
6107
82.8k
         {}
6108
6109
         virtual ~node_depth_base()
6110
390k
         {}
exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::~node_depth_base()
Line
Count
Source
6110
307k
         {}
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::~node_depth_base()
Line
Count
Source
6110
82.8k
         {}
6111
6112
471k
         virtual std::size_t node_depth() const { return 1; }
exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::node_depth() const
Line
Count
Source
6112
402k
         virtual std::size_t node_depth() const { return 1; }
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::node_depth() const
Line
Count
Source
6112
69.0k
         virtual std::size_t node_depth() const { return 1; }
6113
6114
         std::size_t compute_node_depth(const Node* const& node) const
6115
52
         {
6116
52
            if (!depth_set)
6117
14
            {
6118
14
               depth = 1 + (node ? node->node_depth() : 0);
6119
14
               depth_set = true;
6120
14
            }
6121
6122
52
            return depth;
6123
52
         }
exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth(exprtk::details::expression_node<double> const* const&) const
Line
Count
Source
6115
26
         {
6116
26
            if (!depth_set)
6117
7
            {
6118
7
               depth = 1 + (node ? node->node_depth() : 0);
6119
7
               depth_set = true;
6120
7
            }
6121
6122
26
            return depth;
6123
26
         }
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth(exprtk::details::expression_node<float> const* const&) const
Line
Count
Source
6115
26
         {
6116
26
            if (!depth_set)
6117
7
            {
6118
7
               depth = 1 + (node ? node->node_depth() : 0);
6119
7
               depth_set = true;
6120
7
            }
6121
6122
26
            return depth;
6123
26
         }
6124
6125
         std::size_t compute_node_depth(const nb_pair_t& branch) const
6126
148k
         {
6127
148k
            if (!depth_set)
6128
62.1k
            {
6129
62.1k
               depth = 1 + (branch.first ? branch.first->node_depth() : 0);
6130
62.1k
               depth_set = true;
6131
62.1k
            }
6132
6133
148k
            return depth;
6134
148k
         }
exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const
Line
Count
Source
6126
133k
         {
6127
133k
            if (!depth_set)
6128
55.3k
            {
6129
55.3k
               depth = 1 + (branch.first ? branch.first->node_depth() : 0);
6130
55.3k
               depth_set = true;
6131
55.3k
            }
6132
6133
133k
            return depth;
6134
133k
         }
exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const
Line
Count
Source
6126
15.3k
         {
6127
15.3k
            if (!depth_set)
6128
6.85k
            {
6129
6.85k
               depth = 1 + (branch.first ? branch.first->node_depth() : 0);
6130
6.85k
               depth_set = true;
6131
6.85k
            }
6132
6133
15.3k
            return depth;
6134
15.3k
         }
6135
6136
         template <std::size_t N>
6137
         std::size_t compute_node_depth(const nb_pair_t (&branch)[N]) const
6138
104k
         {
6139
104k
            if (!depth_set)
6140
50.3k
            {
6141
50.3k
               depth = 0;
6142
6143
151k
               for (std::size_t i = 0; i < N; ++i)
6144
100k
               {
6145
100k
                  if (branch[i].first)
6146
100k
                  {
6147
100k
                     depth = std::max(depth,branch[i].first->node_depth());
6148
100k
                  }
6149
100k
               }
6150
6151
50.3k
               depth += 1;
6152
50.3k
               depth_set = true;
6153
50.3k
            }
6154
6155
104k
            return depth;
6156
104k
         }
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<2ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [2ul]) const
Line
Count
Source
6138
92.2k
         {
6139
92.2k
            if (!depth_set)
6140
44.8k
            {
6141
44.8k
               depth = 0;
6142
6143
134k
               for (std::size_t i = 0; i < N; ++i)
6144
89.7k
               {
6145
89.7k
                  if (branch[i].first)
6146
89.7k
                  {
6147
89.7k
                     depth = std::max(depth,branch[i].first->node_depth());
6148
89.7k
                  }
6149
89.7k
               }
6150
6151
44.8k
               depth += 1;
6152
44.8k
               depth_set = true;
6153
44.8k
            }
6154
6155
92.2k
            return depth;
6156
92.2k
         }
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<3ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [3ul]) const
Line
Count
Source
6138
27
         {
6139
27
            if (!depth_set)
6140
9
            {
6141
9
               depth = 0;
6142
6143
36
               for (std::size_t i = 0; i < N; ++i)
6144
27
               {
6145
27
                  if (branch[i].first)
6146
27
                  {
6147
27
                     depth = std::max(depth,branch[i].first->node_depth());
6148
27
                  }
6149
27
               }
6150
6151
9
               depth += 1;
6152
9
               depth_set = true;
6153
9
            }
6154
6155
27
            return depth;
6156
27
         }
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<4ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [4ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<1ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [1ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<5ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [5ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<6ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [6ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<7ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [7ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<8ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [8ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<9ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [9ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<10ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [10ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<11ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [11ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<12ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [12ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<13ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [13ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<14ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [14ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<15ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [15ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<16ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [16ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<17ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [17ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<18ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [18ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<19ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [19ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<20ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [20ul]) const
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<2ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [2ul]) const
Line
Count
Source
6138
12.4k
         {
6139
12.4k
            if (!depth_set)
6140
5.49k
            {
6141
5.49k
               depth = 0;
6142
6143
16.4k
               for (std::size_t i = 0; i < N; ++i)
6144
10.9k
               {
6145
10.9k
                  if (branch[i].first)
6146
10.9k
                  {
6147
10.9k
                     depth = std::max(depth,branch[i].first->node_depth());
6148
10.9k
                  }
6149
10.9k
               }
6150
6151
5.49k
               depth += 1;
6152
5.49k
               depth_set = true;
6153
5.49k
            }
6154
6155
12.4k
            return depth;
6156
12.4k
         }
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<3ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [3ul]) const
Line
Count
Source
6138
27
         {
6139
27
            if (!depth_set)
6140
9
            {
6141
9
               depth = 0;
6142
6143
36
               for (std::size_t i = 0; i < N; ++i)
6144
27
               {
6145
27
                  if (branch[i].first)
6146
27
                  {
6147
27
                     depth = std::max(depth,branch[i].first->node_depth());
6148
27
                  }
6149
27
               }
6150
6151
9
               depth += 1;
6152
9
               depth_set = true;
6153
9
            }
6154
6155
27
            return depth;
6156
27
         }
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<4ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [4ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<1ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [1ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<5ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [5ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<6ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [6ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<7ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [7ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<8ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [8ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<9ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [9ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<10ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [10ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<11ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [11ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<12ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [12ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<13ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [13ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<14ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [14ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<15ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [15ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<16ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [16ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<17ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [17ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<18ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [18ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<19ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [19ul]) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<20ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [20ul]) const
6157
6158
         template <typename BranchType>
6159
         std::size_t max_node_depth(const BranchType& n0, const BranchType& n1) const
6160
0
         {
6161
0
            return std::max(compute_node_depth(n0), compute_node_depth(n1));
6162
0
         }
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const
6163
6164
         template <typename BranchType>
6165
         std::size_t max_node_depth(const BranchType& n0, const BranchType& n1, const BranchType& n2) const
6166
16
         {
6167
16
            return std::max(compute_node_depth(n0),
6168
16
                   std::max(compute_node_depth(n1), compute_node_depth(n2)));
6169
16
         }
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const
Line
Count
Source
6166
8
         {
6167
8
            return std::max(compute_node_depth(n0),
6168
8
                   std::max(compute_node_depth(n1), compute_node_depth(n2)));
6169
8
         }
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const
Line
Count
Source
6166
8
         {
6167
8
            return std::max(compute_node_depth(n0),
6168
8
                   std::max(compute_node_depth(n1), compute_node_depth(n2)));
6169
8
         }
6170
6171
         template <typename BranchType>
6172
         std::size_t max_node_depth(const BranchType& n0, const BranchType& n1,
6173
                                    const BranchType& n2, const BranchType& n3) const
6174
0
         {
6175
0
            return std::max(
6176
0
                     std::max(compute_node_depth(n0), compute_node_depth(n1)),
6177
0
                     std::max(compute_node_depth(n2), compute_node_depth(n3)));
6178
0
         }
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::max_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const
6179
6180
         template <typename BranchType>
6181
         std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1) const
6182
0
         {
6183
0
            if (!depth_set)
6184
0
            {
6185
0
               depth = 1 + max_node_depth(n0, n1);
6186
0
               depth_set = true;
6187
0
            }
6188
6189
0
            return depth;
6190
0
         }
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const
6191
6192
         template <typename BranchType>
6193
         std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1,
6194
                                        const BranchType& n2) const
6195
18
         {
6196
18
            if (!depth_set)
6197
16
            {
6198
16
               depth = 1 + max_node_depth(n0, n1, n2);
6199
16
               depth_set = true;
6200
16
            }
6201
6202
18
            return depth;
6203
18
         }
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const
Line
Count
Source
6195
9
         {
6196
9
            if (!depth_set)
6197
8
            {
6198
8
               depth = 1 + max_node_depth(n0, n1, n2);
6199
8
               depth_set = true;
6200
8
            }
6201
6202
9
            return depth;
6203
9
         }
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const
Line
Count
Source
6195
9
         {
6196
9
            if (!depth_set)
6197
8
            {
6198
8
               depth = 1 + max_node_depth(n0, n1, n2);
6199
8
               depth_set = true;
6200
8
            }
6201
6202
9
            return depth;
6203
9
         }
6204
6205
         template <typename BranchType>
6206
         std::size_t compute_node_depth(const BranchType& n0, const BranchType& n1,
6207
                                        const BranchType& n2, const BranchType& n3) const
6208
0
         {
6209
0
            if (!depth_set)
6210
0
            {
6211
0
               depth = 1 + max_node_depth(n0, n1, n2, n3);
6212
0
               depth_set = true;
6213
0
            }
6214
6215
0
            return depth;
6216
0
         }
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<double>*, bool> >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::pair<exprtk::details::expression_node<double>*, bool> const&) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::pair<exprtk::details::expression_node<float>*, bool> >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::pair<exprtk::details::expression_node<float>*, bool> const&) const
6217
6218
         template <typename Allocator,
6219
                   template <typename, typename> class Sequence>
6220
         std::size_t compute_node_depth(const Sequence<node_ptr_t, Allocator>& branch_list) const
6221
0
         {
6222
0
            if (!depth_set)
6223
0
            {
6224
0
               for (std::size_t i = 0; i < branch_list.size(); ++i)
6225
0
               {
6226
0
                  if (branch_list[i])
6227
0
                  {
6228
0
                     depth = std::max(depth, compute_node_depth(branch_list[i]));
6229
0
                  }
6230
0
               }
6231
6232
0
               depth_set = true;
6233
0
            }
6234
6235
0
            return depth;
6236
0
         }
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&) const
Unexecuted instantiation: unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&) const
6237
6238
         template <typename Allocator,
6239
                   template <typename, typename> class Sequence>
6240
         std::size_t compute_node_depth(const Sequence<nb_pair_t,Allocator>& branch_list) const
6241
14
         {
6242
14
            if (!depth_set)
6243
14
            {
6244
66
               for (std::size_t i = 0; i < branch_list.size(); ++i)
6245
52
               {
6246
52
                  if (branch_list[i].first)
6247
52
                  {
6248
52
                     depth = std::max(depth, compute_node_depth(branch_list[i].first));
6249
52
                  }
6250
52
               }
6251
6252
14
               depth_set = true;
6253
14
            }
6254
6255
14
            return depth;
6256
14
         }
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::compute_node_depth<std::__1::allocator<std::__1::pair<exprtk::details::expression_node<double>*, bool> >, std::__1::vector>(std::__1::vector<std::__1::pair<exprtk::details::expression_node<double>*, bool>, std::__1::allocator<std::__1::pair<exprtk::details::expression_node<double>*, bool> > > const&) const
Line
Count
Source
6241
7
         {
6242
7
            if (!depth_set)
6243
7
            {
6244
33
               for (std::size_t i = 0; i < branch_list.size(); ++i)
6245
26
               {
6246
26
                  if (branch_list[i].first)
6247
26
                  {
6248
26
                     depth = std::max(depth, compute_node_depth(branch_list[i].first));
6249
26
                  }
6250
26
               }
6251
6252
7
               depth_set = true;
6253
7
            }
6254
6255
7
            return depth;
6256
7
         }
unsigned long exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::compute_node_depth<std::__1::allocator<std::__1::pair<exprtk::details::expression_node<float>*, bool> >, std::__1::vector>(std::__1::vector<std::__1::pair<exprtk::details::expression_node<float>*, bool>, std::__1::allocator<std::__1::pair<exprtk::details::expression_node<float>*, bool> > > const&) const
Line
Count
Source
6241
7
         {
6242
7
            if (!depth_set)
6243
7
            {
6244
33
               for (std::size_t i = 0; i < branch_list.size(); ++i)
6245
26
               {
6246
26
                  if (branch_list[i].first)
6247
26
                  {
6248
26
                     depth = std::max(depth, compute_node_depth(branch_list[i].first));
6249
26
                  }
6250
26
               }
6251
6252
7
               depth_set = true;
6253
7
            }
6254
6255
7
            return depth;
6256
7
         }
6257
6258
         mutable bool depth_set;
6259
         mutable std::size_t depth;
6260
6261
         template <typename NodeSequence>
6262
         void collect(node_ptr_t const& node,
6263
                      const bool deletable,
6264
                      NodeSequence& delete_node_list) const
6265
163k
         {
6266
163k
            if ((0 != node) && deletable)
6267
162k
            {
6268
162k
               delete_node_list.push_back(const_cast<node_ptr_t*>(&node));
6269
162k
            }
6270
163k
         }
void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(exprtk::details::expression_node<double>* const&, bool, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Line
Count
Source
6265
145k
         {
6266
145k
            if ((0 != node) && deletable)
6267
144k
            {
6268
144k
               delete_node_list.push_back(const_cast<node_ptr_t*>(&node));
6269
144k
            }
6270
145k
         }
void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(exprtk::details::expression_node<float>* const&, bool, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Line
Count
Source
6265
17.9k
         {
6266
17.9k
            if ((0 != node) && deletable)
6267
17.6k
            {
6268
17.6k
               delete_node_list.push_back(const_cast<node_ptr_t*>(&node));
6269
17.6k
            }
6270
17.9k
         }
6271
6272
         template <typename NodeSequence>
6273
         void collect(const nb_pair_t& branch,
6274
                      NodeSequence& delete_node_list) const
6275
62.2k
         {
6276
62.2k
            collect(branch.first, branch.second, delete_node_list);
6277
62.2k
         }
void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const&, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Line
Count
Source
6275
55.3k
         {
6276
55.3k
            collect(branch.first, branch.second, delete_node_list);
6277
55.3k
         }
void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const&, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Line
Count
Source
6275
6.87k
         {
6276
6.87k
            collect(branch.first, branch.second, delete_node_list);
6277
6.87k
         }
6278
6279
         template <typename NodeSequence>
6280
         void collect(Node*& node,
6281
                      NodeSequence& delete_node_list) const
6282
         {
6283
            collect(node, branch_deletable(node), delete_node_list);
6284
         }
6285
6286
         template <std::size_t N, typename NodeSequence>
6287
         void collect(const nb_pair_t(&branch)[N],
6288
                      NodeSequence& delete_node_list) const
6289
50.3k
         {
6290
151k
            for (std::size_t i = 0; i < N; ++i)
6291
100k
            {
6292
100k
               collect(branch[i].first, branch[i].second, delete_node_list);
6293
100k
            }
6294
50.3k
         }
void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<2ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [2ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Line
Count
Source
6289
44.8k
         {
6290
134k
            for (std::size_t i = 0; i < N; ++i)
6291
89.7k
            {
6292
89.7k
               collect(branch[i].first, branch[i].second, delete_node_list);
6293
89.7k
            }
6294
44.8k
         }
void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<3ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [3ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Line
Count
Source
6289
9
         {
6290
36
            for (std::size_t i = 0; i < N; ++i)
6291
27
            {
6292
27
               collect(branch[i].first, branch[i].second, delete_node_list);
6293
27
            }
6294
9
         }
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<4ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [4ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<1ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [1ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<5ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [5ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<6ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [6ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<7ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [7ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<8ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [8ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<9ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [9ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<10ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [10ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<11ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [11ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<12ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [12ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<13ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [13ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<14ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [14ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<15ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [15ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<16ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [16ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<17ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [17ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<18ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [18ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<19ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [19ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<20ul, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::pair<exprtk::details::expression_node<double>*, bool> const (&) [20ul], std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<2ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [2ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Line
Count
Source
6289
5.49k
         {
6290
16.4k
            for (std::size_t i = 0; i < N; ++i)
6291
10.9k
            {
6292
10.9k
               collect(branch[i].first, branch[i].second, delete_node_list);
6293
10.9k
            }
6294
5.49k
         }
void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<3ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [3ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Line
Count
Source
6289
9
         {
6290
36
            for (std::size_t i = 0; i < N; ++i)
6291
27
            {
6292
27
               collect(branch[i].first, branch[i].second, delete_node_list);
6293
27
            }
6294
9
         }
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<4ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [4ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<1ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [1ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<5ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [5ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<6ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [6ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<7ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [7ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<8ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [8ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<9ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [9ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<10ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [10ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<11ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [11ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<12ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [12ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<13ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [13ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<14ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [14ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<15ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [15ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<16ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [16ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<17ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [17ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<18ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [18ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<19ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [19ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<20ul, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::pair<exprtk::details::expression_node<float>*, bool> const (&) [20ul], std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
6295
6296
         template <typename Allocator,
6297
                   template <typename, typename> class Sequence,
6298
                   typename NodeSequence>
6299
         void collect(const Sequence<nb_pair_t, Allocator>& branch,
6300
                      NodeSequence& delete_node_list) const
6301
14
         {
6302
66
            for (std::size_t i = 0; i < branch.size(); ++i)
6303
52
            {
6304
52
               collect(branch[i].first, branch[i].second, delete_node_list);
6305
52
            }
6306
14
         }
void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<std::__1::allocator<std::__1::pair<exprtk::details::expression_node<double>*, bool> >, std::__1::vector, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::vector<std::__1::pair<exprtk::details::expression_node<double>*, bool>, std::__1::allocator<std::__1::pair<exprtk::details::expression_node<double>*, bool> > > const&, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Line
Count
Source
6301
7
         {
6302
33
            for (std::size_t i = 0; i < branch.size(); ++i)
6303
26
            {
6304
26
               collect(branch[i].first, branch[i].second, delete_node_list);
6305
26
            }
6306
7
         }
void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<std::__1::allocator<std::__1::pair<exprtk::details::expression_node<float>*, bool> >, std::__1::vector, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::vector<std::__1::pair<exprtk::details::expression_node<float>*, bool>, std::__1::allocator<std::__1::pair<exprtk::details::expression_node<float>*, bool> > > const&, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
Line
Count
Source
6301
7
         {
6302
33
            for (std::size_t i = 0; i < branch.size(); ++i)
6303
26
            {
6304
26
               collect(branch[i].first, branch[i].second, delete_node_list);
6305
26
            }
6306
7
         }
6307
6308
         template <typename Allocator,
6309
                   template <typename, typename> class Sequence,
6310
                   typename NodeSequence>
6311
         void collect(const Sequence<node_ptr_t, Allocator>& branch_list,
6312
                      NodeSequence& delete_node_list) const
6313
0
         {
6314
0
            for (std::size_t i = 0; i < branch_list.size(); ++i)
6315
0
            {
6316
0
               collect(branch_list[i], branch_deletable(branch_list[i]), delete_node_list);
6317
0
            }
6318
0
         }
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<double> >::collect<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> > >(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&, std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&) const
Unexecuted instantiation: void exprtk::details::node_depth_base<exprtk::details::expression_node<float> >::collect<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> > >(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&, std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&) const
6319
6320
         template <typename Boolean,
6321
                   typename AllocatorT,
6322
                   typename AllocatorB,
6323
                   template <typename, typename> class Sequence,
6324
                   typename NodeSequence>
6325
         void collect(const Sequence<node_ptr_t, AllocatorT>& branch_list,
6326
                      const Sequence<Boolean, AllocatorB>& branch_deletable_list,
6327
                      NodeSequence& delete_node_list) const
6328
         {
6329
            for (std::size_t i = 0; i < branch_list.size(); ++i)
6330
            {
6331
               collect(branch_list[i], branch_deletable_list[i], delete_node_list);
6332
            }
6333
         }
6334
      };
6335
6336
      template <typename Type>
6337
      class vector_holder
6338
      {
6339
      private:
6340
6341
         typedef Type value_type;
6342
         typedef value_type* value_ptr;
6343
         typedef const value_ptr const_value_ptr;
6344
         typedef vector_holder<Type> vector_holder_t;
6345
6346
         class vector_holder_base
6347
         {
6348
         public:
6349
6350
            virtual ~vector_holder_base()
6351
0
            {}
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::~vector_holder_base()
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::~vector_holder_base()
6352
6353
            inline value_ptr operator[](const std::size_t& index) const
6354
0
            {
6355
0
               return value_at(index);
6356
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::operator[](unsigned long const&) const
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::operator[](unsigned long const&) const
6357
6358
            inline std::size_t size() const
6359
0
            {
6360
0
               return vector_size();
6361
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::size() const
6362
6363
            inline std::size_t base_size() const
6364
0
            {
6365
0
               return vector_base_size();
6366
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::base_size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::base_size() const
6367
6368
            inline value_ptr data() const
6369
0
            {
6370
0
               return value_at(0);
6371
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::data() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::data() const
6372
6373
            virtual inline bool rebaseable() const
6374
0
            {
6375
0
               return false;
6376
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::rebaseable() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::rebaseable() const
6377
6378
            virtual void set_ref(value_ptr*)
6379
0
            {}
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::set_ref(double**)
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::set_ref(float**)
6380
6381
            virtual void remove_ref(value_ptr*)
6382
0
            {}
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::remove_ref(double**)
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::remove_ref(float**)
6383
6384
            virtual vector_view<Type>* rebaseable_instance()
6385
0
            {
6386
0
               return reinterpret_cast<vector_view<Type>*>(0);
6387
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder_base::rebaseable_instance()
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder_base::rebaseable_instance()
6388
6389
         protected:
6390
6391
            virtual value_ptr value_at(const std::size_t&) const = 0;
6392
            virtual std::size_t vector_size()              const = 0;
6393
            virtual std::size_t vector_base_size()         const = 0;
6394
         };
6395
6396
         class array_vector_impl exprtk_final : public vector_holder_base
6397
         {
6398
         public:
6399
6400
            array_vector_impl(const Type* vec, const std::size_t& vec_size)
6401
0
            : vec_(vec)
6402
0
            , size_(vec_size)
6403
0
            {}
Unexecuted instantiation: exprtk::details::vector_holder<double>::array_vector_impl::array_vector_impl(double const*, unsigned long const&)
Unexecuted instantiation: exprtk::details::vector_holder<float>::array_vector_impl::array_vector_impl(float const*, unsigned long const&)
6404
6405
         protected:
6406
6407
            value_ptr value_at(const std::size_t& index) const exprtk_override
6408
0
            {
6409
0
               assert(index < size_);
6410
0
               return const_cast<const_value_ptr>(vec_ + index);
6411
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::array_vector_impl::value_at(unsigned long const&) const
Unexecuted instantiation: exprtk::details::vector_holder<float>::array_vector_impl::value_at(unsigned long const&) const
6412
6413
            std::size_t vector_size() const exprtk_override
6414
0
            {
6415
0
               return size_;
6416
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::array_vector_impl::vector_size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::array_vector_impl::vector_size() const
6417
6418
            std::size_t vector_base_size() const exprtk_override
6419
0
            {
6420
0
               return vector_size();
6421
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::array_vector_impl::vector_base_size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::array_vector_impl::vector_base_size() const
6422
6423
         private:
6424
6425
            array_vector_impl(const array_vector_impl&) exprtk_delete;
6426
            array_vector_impl& operator=(const array_vector_impl&) exprtk_delete;
6427
6428
            const Type* vec_;
6429
            const std::size_t size_;
6430
         };
6431
6432
         template <typename Allocator,
6433
                   template <typename, typename> class Sequence>
6434
         class sequence_vector_impl exprtk_final : public vector_holder_base
6435
         {
6436
         public:
6437
6438
            typedef Sequence<Type,Allocator> sequence_t;
6439
6440
            explicit sequence_vector_impl(sequence_t& seq)
6441
            : sequence_(seq)
6442
            {}
6443
6444
         protected:
6445
6446
            value_ptr value_at(const std::size_t& index) const exprtk_override
6447
            {
6448
               assert(index < sequence_.size());
6449
               return (&sequence_[index]);
6450
            }
6451
6452
            std::size_t vector_size() const exprtk_override
6453
            {
6454
               return sequence_.size();
6455
            }
6456
6457
            std::size_t vector_base_size() const exprtk_override
6458
            {
6459
               return vector_size();
6460
            }
6461
6462
         private:
6463
6464
            sequence_vector_impl(const sequence_vector_impl&) exprtk_delete;
6465
            sequence_vector_impl& operator=(const sequence_vector_impl&) exprtk_delete;
6466
6467
            sequence_t& sequence_;
6468
         };
6469
6470
         class vector_view_impl exprtk_final : public vector_holder_base
6471
         {
6472
         public:
6473
6474
            typedef exprtk::vector_view<Type> vector_view_t;
6475
6476
            explicit vector_view_impl(vector_view_t& vec_view)
6477
            : vec_view_(vec_view)
6478
            {
6479
               assert(vec_view_.size() > 0);
6480
            }
6481
6482
            void set_ref(value_ptr* ref) exprtk_override
6483
            {
6484
               vec_view_.set_ref(ref);
6485
            }
6486
6487
            void remove_ref(value_ptr* ref) exprtk_override
6488
            {
6489
               vec_view_.remove_ref(ref);
6490
            }
6491
6492
            bool rebaseable() const exprtk_override
6493
            {
6494
               return true;
6495
            }
6496
6497
            vector_view<Type>* rebaseable_instance() exprtk_override
6498
            {
6499
               return &vec_view_;
6500
            }
6501
6502
         protected:
6503
6504
            value_ptr value_at(const std::size_t& index) const exprtk_override
6505
            {
6506
               assert(index < vec_view_.size());
6507
               return (&vec_view_[index]);
6508
            }
6509
6510
            std::size_t vector_size() const exprtk_override
6511
            {
6512
               return vec_view_.size();
6513
            }
6514
6515
            std::size_t vector_base_size() const exprtk_override
6516
            {
6517
               return vec_view_.base_size();
6518
            }
6519
6520
         private:
6521
6522
            vector_view_impl(const vector_view_impl&) exprtk_delete;
6523
            vector_view_impl& operator=(const vector_view_impl&) exprtk_delete;
6524
6525
            vector_view_t& vec_view_;
6526
         };
6527
6528
         class resizable_vector_impl exprtk_final : public vector_holder_base
6529
         {
6530
         public:
6531
6532
            resizable_vector_impl(vector_holder& vec_view_holder,
6533
                                  const Type* vec,
6534
                                  const std::size_t& vec_size)
6535
0
            : vec_(vec)
6536
0
            , size_(vec_size)
6537
0
            , vec_view_holder_(*vec_view_holder.rebaseable_instance())
6538
0
            {
6539
0
               assert(vec_view_holder.rebaseable_instance());
6540
0
               assert(size_ <= vector_base_size());
6541
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::resizable_vector_impl(exprtk::details::vector_holder<double>&, double const*, unsigned long const&)
Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::resizable_vector_impl(exprtk::details::vector_holder<float>&, float const*, unsigned long const&)
6542
6543
            virtual ~resizable_vector_impl() exprtk_override
6544
            {}
6545
6546
         protected:
6547
6548
            value_ptr value_at(const std::size_t& index) const exprtk_override
6549
0
            {
6550
0
               assert(index < vector_size());
6551
0
               return const_cast<const_value_ptr>(vec_ + index);
6552
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::value_at(unsigned long const&) const
Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::value_at(unsigned long const&) const
6553
6554
            std::size_t vector_size() const exprtk_override
6555
0
            {
6556
0
               return vec_view_holder_.size();
6557
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::vector_size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::vector_size() const
6558
6559
            std::size_t vector_base_size() const exprtk_override
6560
0
            {
6561
0
               return vec_view_holder_.base_size();
6562
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::vector_base_size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::vector_base_size() const
6563
6564
            bool rebaseable() const exprtk_override
6565
0
            {
6566
0
               return true;
6567
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::rebaseable() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::rebaseable() const
6568
6569
            virtual vector_view<Type>* rebaseable_instance() exprtk_override
6570
0
            {
6571
0
               return &vec_view_holder_;
6572
0
            }
Unexecuted instantiation: exprtk::details::vector_holder<double>::resizable_vector_impl::rebaseable_instance()
Unexecuted instantiation: exprtk::details::vector_holder<float>::resizable_vector_impl::rebaseable_instance()
6573
6574
         private:
6575
6576
            resizable_vector_impl(const resizable_vector_impl&) exprtk_delete;
6577
            resizable_vector_impl& operator=(const resizable_vector_impl&) exprtk_delete;
6578
6579
            const Type* vec_;
6580
            const std::size_t size_;
6581
            vector_view<Type>& vec_view_holder_;
6582
         };
6583
6584
      public:
6585
6586
         typedef typename details::vec_data_store<Type> vds_t;
6587
6588
         vector_holder(Type* vec, const std::size_t& vec_size)
6589
0
         : vector_holder_base_(new(buffer)array_vector_impl(vec,vec_size))
6590
0
         {}
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder(double*, unsigned long const&)
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder(float*, unsigned long const&)
6591
6592
         explicit vector_holder(const vds_t& vds)
6593
0
         : vector_holder_base_(new(buffer)array_vector_impl(vds.data(),vds.size()))
6594
0
         {}
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder(exprtk::details::vec_data_store<double> const&)
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder(exprtk::details::vec_data_store<float> const&)
6595
6596
         template <typename Allocator>
6597
         explicit vector_holder(std::vector<Type,Allocator>& vec)
6598
         : vector_holder_base_(new(buffer)sequence_vector_impl<Allocator,std::vector>(vec))
6599
         {}
6600
6601
         explicit vector_holder(exprtk::vector_view<Type>& vec)
6602
         : vector_holder_base_(new(buffer)vector_view_impl(vec))
6603
         {}
6604
6605
         explicit vector_holder(vector_holder_t& vec_holder, const vds_t& vds)
6606
0
         : vector_holder_base_(new(buffer)resizable_vector_impl(vec_holder, vds.data(), vds.size()))
6607
0
         {}
Unexecuted instantiation: exprtk::details::vector_holder<double>::vector_holder(exprtk::details::vector_holder<double>&, exprtk::details::vec_data_store<double> const&)
Unexecuted instantiation: exprtk::details::vector_holder<float>::vector_holder(exprtk::details::vector_holder<float>&, exprtk::details::vec_data_store<float> const&)
6608
6609
         inline value_ptr operator[](const std::size_t& index) const
6610
0
         {
6611
0
            return (*vector_holder_base_)[index];
6612
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::operator[](unsigned long const&) const
Unexecuted instantiation: exprtk::details::vector_holder<float>::operator[](unsigned long const&) const
6613
6614
         inline std::size_t size() const
6615
0
         {
6616
0
            return vector_holder_base_->size();
6617
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::size() const
6618
6619
         inline std::size_t base_size() const
6620
0
         {
6621
0
            return vector_holder_base_->base_size();
6622
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::base_size() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::base_size() const
6623
6624
         inline value_ptr data() const
6625
0
         {
6626
0
            return vector_holder_base_->data();
6627
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::data() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::data() const
6628
6629
         void set_ref(value_ptr* ref)
6630
0
         {
6631
0
            if (rebaseable())
6632
0
            {
6633
0
               vector_holder_base_->set_ref(ref);
6634
0
            }
6635
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::set_ref(double**)
Unexecuted instantiation: exprtk::details::vector_holder<float>::set_ref(float**)
6636
6637
         void remove_ref(value_ptr* ref)
6638
0
         {
6639
0
            if (rebaseable())
6640
0
            {
6641
0
               vector_holder_base_->remove_ref(ref);
6642
0
            }
6643
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::remove_ref(double**)
Unexecuted instantiation: exprtk::details::vector_holder<float>::remove_ref(float**)
6644
6645
         bool rebaseable() const
6646
0
         {
6647
0
            return vector_holder_base_->rebaseable();
6648
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::rebaseable() const
Unexecuted instantiation: exprtk::details::vector_holder<float>::rebaseable() const
6649
6650
         vector_view<Type>* rebaseable_instance()
6651
0
         {
6652
0
            return vector_holder_base_->rebaseable_instance();
6653
0
         }
Unexecuted instantiation: exprtk::details::vector_holder<double>::rebaseable_instance()
Unexecuted instantiation: exprtk::details::vector_holder<float>::rebaseable_instance()
6654
6655
      private:
6656
6657
         vector_holder(const vector_holder<Type>&) exprtk_delete;
6658
         vector_holder<Type>& operator=(const vector_holder<Type>&) exprtk_delete;
6659
6660
         mutable vector_holder_base* vector_holder_base_;
6661
         uchar_t buffer[64];
6662
      };
6663
6664
      template <typename T>
6665
      class null_node exprtk_final : public expression_node<T>
6666
      {
6667
      public:
6668
6669
         inline T value() const exprtk_override
6670
4
         {
6671
4
            return std::numeric_limits<T>::quiet_NaN();
6672
4
         }
exprtk::details::null_node<double>::value() const
Line
Count
Source
6670
2
         {
6671
2
            return std::numeric_limits<T>::quiet_NaN();
6672
2
         }
exprtk::details::null_node<float>::value() const
Line
Count
Source
6670
2
         {
6671
2
            return std::numeric_limits<T>::quiet_NaN();
6672
2
         }
6673
6674
         inline typename expression_node<T>::node_type type() const exprtk_override
6675
20.6k
         {
6676
20.6k
            return expression_node<T>::e_null;
6677
20.6k
         }
exprtk::details::null_node<double>::type() const
Line
Count
Source
6675
10.3k
         {
6676
10.3k
            return expression_node<T>::e_null;
6677
10.3k
         }
exprtk::details::null_node<float>::type() const
Line
Count
Source
6675
10.3k
         {
6676
10.3k
            return expression_node<T>::e_null;
6677
10.3k
         }
6678
      };
6679
6680
      template <typename T, std::size_t N>
6681
      inline void construct_branch_pair(std::pair<expression_node<T>*,bool> (&branch)[N],
6682
                                        expression_node<T>* b,
6683
                                        const std::size_t& index)
6684
503k
      {
6685
503k
         if (b && (index < N))
6686
100k
         {
6687
100k
            branch[index] = std::make_pair(b,branch_deletable(b));
6688
100k
         }
6689
503k
      }
void exprtk::details::construct_branch_pair<double, 2ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [2ul], exprtk::details::expression_node<double>*, unsigned long const&)
Line
Count
Source
6684
448k
      {
6685
448k
         if (b && (index < N))
6686
89.7k
         {
6687
89.7k
            branch[index] = std::make_pair(b,branch_deletable(b));
6688
89.7k
         }
6689
448k
      }
void exprtk::details::construct_branch_pair<double, 3ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [3ul], exprtk::details::expression_node<double>*, unsigned long const&)
Line
Count
Source
6684
90
      {
6685
90
         if (b && (index < N))
6686
27
         {
6687
27
            branch[index] = std::make_pair(b,branch_deletable(b));
6688
27
         }
6689
90
      }
Unexecuted instantiation: void exprtk::details::construct_branch_pair<double, 4ul>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [4ul], exprtk::details::expression_node<double>*, unsigned long const&)
void exprtk::details::construct_branch_pair<float, 2ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [2ul], exprtk::details::expression_node<float>*, unsigned long const&)
Line
Count
Source
6684
54.9k
      {
6685
54.9k
         if (b && (index < N))
6686
10.9k
         {
6687
10.9k
            branch[index] = std::make_pair(b,branch_deletable(b));
6688
10.9k
         }
6689
54.9k
      }
void exprtk::details::construct_branch_pair<float, 3ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [3ul], exprtk::details::expression_node<float>*, unsigned long const&)
Line
Count
Source
6684
90
      {
6685
90
         if (b && (index < N))
6686
27
         {
6687
27
            branch[index] = std::make_pair(b,branch_deletable(b));
6688
27
         }
6689
90
      }
Unexecuted instantiation: void exprtk::details::construct_branch_pair<float, 4ul>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [4ul], exprtk::details::expression_node<float>*, unsigned long const&)
6690
6691
      template <typename T>
6692
      inline void construct_branch_pair(std::pair<expression_node<T>*,bool>& branch, expression_node<T>* b)
6693
62.2k
      {
6694
62.2k
         if (b)
6695
62.2k
         {
6696
62.2k
            branch = std::make_pair(b,branch_deletable(b));
6697
62.2k
         }
6698
62.2k
      }
void exprtk::details::construct_branch_pair<double>(std::__1::pair<exprtk::details::expression_node<double>*, bool>&, exprtk::details::expression_node<double>*)
Line
Count
Source
6693
55.3k
      {
6694
55.3k
         if (b)
6695
55.3k
         {
6696
55.3k
            branch = std::make_pair(b,branch_deletable(b));
6697
55.3k
         }
6698
55.3k
      }
void exprtk::details::construct_branch_pair<float>(std::__1::pair<exprtk::details::expression_node<float>*, bool>&, exprtk::details::expression_node<float>*)
Line
Count
Source
6693
6.90k
      {
6694
6.90k
         if (b)
6695
6.90k
         {
6696
6.90k
            branch = std::make_pair(b,branch_deletable(b));
6697
6.90k
         }
6698
6.90k
      }
6699
6700
      template <std::size_t N, typename T>
6701
      inline void init_branches(std::pair<expression_node<T>*,bool> (&branch)[N],
6702
                                expression_node<T>* b0,
6703
                                expression_node<T>* b1 = reinterpret_cast<expression_node<T>*>(0),
6704
                                expression_node<T>* b2 = reinterpret_cast<expression_node<T>*>(0),
6705
                                expression_node<T>* b3 = reinterpret_cast<expression_node<T>*>(0),
6706
                                expression_node<T>* b4 = reinterpret_cast<expression_node<T>*>(0),
6707
                                expression_node<T>* b5 = reinterpret_cast<expression_node<T>*>(0),
6708
                                expression_node<T>* b6 = reinterpret_cast<expression_node<T>*>(0),
6709
                                expression_node<T>* b7 = reinterpret_cast<expression_node<T>*>(0),
6710
                                expression_node<T>* b8 = reinterpret_cast<expression_node<T>*>(0),
6711
                                expression_node<T>* b9 = reinterpret_cast<expression_node<T>*>(0))
6712
50.3k
      {
6713
50.3k
         construct_branch_pair(branch, b0, 0);
6714
50.3k
         construct_branch_pair(branch, b1, 1);
6715
50.3k
         construct_branch_pair(branch, b2, 2);
6716
50.3k
         construct_branch_pair(branch, b3, 3);
6717
50.3k
         construct_branch_pair(branch, b4, 4);
6718
50.3k
         construct_branch_pair(branch, b5, 5);
6719
50.3k
         construct_branch_pair(branch, b6, 6);
6720
50.3k
         construct_branch_pair(branch, b7, 7);
6721
50.3k
         construct_branch_pair(branch, b8, 8);
6722
50.3k
         construct_branch_pair(branch, b9, 9);
6723
50.3k
      }
void exprtk::details::init_branches<2ul, double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [2ul], exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
6712
44.8k
      {
6713
44.8k
         construct_branch_pair(branch, b0, 0);
6714
44.8k
         construct_branch_pair(branch, b1, 1);
6715
44.8k
         construct_branch_pair(branch, b2, 2);
6716
44.8k
         construct_branch_pair(branch, b3, 3);
6717
44.8k
         construct_branch_pair(branch, b4, 4);
6718
44.8k
         construct_branch_pair(branch, b5, 5);
6719
44.8k
         construct_branch_pair(branch, b6, 6);
6720
44.8k
         construct_branch_pair(branch, b7, 7);
6721
44.8k
         construct_branch_pair(branch, b8, 8);
6722
44.8k
         construct_branch_pair(branch, b9, 9);
6723
44.8k
      }
void exprtk::details::init_branches<3ul, double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [3ul], exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
6712
9
      {
6713
9
         construct_branch_pair(branch, b0, 0);
6714
9
         construct_branch_pair(branch, b1, 1);
6715
9
         construct_branch_pair(branch, b2, 2);
6716
9
         construct_branch_pair(branch, b3, 3);
6717
9
         construct_branch_pair(branch, b4, 4);
6718
9
         construct_branch_pair(branch, b5, 5);
6719
9
         construct_branch_pair(branch, b6, 6);
6720
9
         construct_branch_pair(branch, b7, 7);
6721
9
         construct_branch_pair(branch, b8, 8);
6722
9
         construct_branch_pair(branch, b9, 9);
6723
9
      }
Unexecuted instantiation: void exprtk::details::init_branches<4ul, double>(std::__1::pair<exprtk::details::expression_node<double>*, bool> (&) [4ul], exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
void exprtk::details::init_branches<2ul, float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [2ul], exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
6712
5.49k
      {
6713
5.49k
         construct_branch_pair(branch, b0, 0);
6714
5.49k
         construct_branch_pair(branch, b1, 1);
6715
5.49k
         construct_branch_pair(branch, b2, 2);
6716
5.49k
         construct_branch_pair(branch, b3, 3);
6717
5.49k
         construct_branch_pair(branch, b4, 4);
6718
5.49k
         construct_branch_pair(branch, b5, 5);
6719
5.49k
         construct_branch_pair(branch, b6, 6);
6720
5.49k
         construct_branch_pair(branch, b7, 7);
6721
5.49k
         construct_branch_pair(branch, b8, 8);
6722
5.49k
         construct_branch_pair(branch, b9, 9);
6723
5.49k
      }
void exprtk::details::init_branches<3ul, float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [3ul], exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
6712
9
      {
6713
9
         construct_branch_pair(branch, b0, 0);
6714
9
         construct_branch_pair(branch, b1, 1);
6715
9
         construct_branch_pair(branch, b2, 2);
6716
9
         construct_branch_pair(branch, b3, 3);
6717
9
         construct_branch_pair(branch, b4, 4);
6718
9
         construct_branch_pair(branch, b5, 5);
6719
9
         construct_branch_pair(branch, b6, 6);
6720
9
         construct_branch_pair(branch, b7, 7);
6721
9
         construct_branch_pair(branch, b8, 8);
6722
9
         construct_branch_pair(branch, b9, 9);
6723
9
      }
Unexecuted instantiation: void exprtk::details::init_branches<4ul, float>(std::__1::pair<exprtk::details::expression_node<float>*, bool> (&) [4ul], exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
6724
6725
      template <typename T>
6726
      class null_eq_node exprtk_final : public expression_node<T>
6727
      {
6728
      public:
6729
6730
         typedef expression_node<T>* expression_ptr;
6731
         typedef std::pair<expression_ptr,bool> branch_t;
6732
6733
         explicit null_eq_node(expression_ptr branch, const bool equality = true)
6734
0
         : equality_(equality)
6735
0
         {
6736
0
            construct_branch_pair(branch_, branch);
6737
0
            assert(valid());
6738
0
         }
Unexecuted instantiation: exprtk::details::null_eq_node<double>::null_eq_node(exprtk::details::expression_node<double>*, bool)
Unexecuted instantiation: exprtk::details::null_eq_node<float>::null_eq_node(exprtk::details::expression_node<float>*, bool)
6739
6740
         inline T value() const exprtk_override
6741
0
         {
6742
0
            const T v = branch_.first->value();
6743
0
            const bool result = details::numeric::is_nan(v);
6744
6745
0
            if (result)
6746
0
               return equality_ ? T(1) : T(0);
6747
0
            else
6748
0
               return equality_ ? T(0) : T(1);
6749
0
         }
Unexecuted instantiation: exprtk::details::null_eq_node<double>::value() const
Unexecuted instantiation: exprtk::details::null_eq_node<float>::value() const
6750
6751
         inline typename expression_node<T>::node_type type() const exprtk_override
6752
0
         {
6753
0
            return expression_node<T>::e_nulleq;
6754
0
         }
Unexecuted instantiation: exprtk::details::null_eq_node<double>::type() const
Unexecuted instantiation: exprtk::details::null_eq_node<float>::type() const
6755
6756
         inline expression_node<T>* branch(const std::size_t&) const exprtk_override
6757
0
         {
6758
0
            return branch_.first;
6759
0
         }
Unexecuted instantiation: exprtk::details::null_eq_node<double>::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::null_eq_node<float>::branch(unsigned long const&) const
6760
6761
         inline bool valid() const exprtk_override
6762
0
         {
6763
0
            return branch_.first;
6764
0
         }
Unexecuted instantiation: exprtk::details::null_eq_node<double>::valid() const
Unexecuted instantiation: exprtk::details::null_eq_node<float>::valid() const
6765
6766
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
6767
0
         {
6768
0
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6769
0
         }
Unexecuted instantiation: exprtk::details::null_eq_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::null_eq_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
6770
6771
         std::size_t node_depth() const exprtk_override
6772
0
         {
6773
0
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6774
0
         }
Unexecuted instantiation: exprtk::details::null_eq_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::null_eq_node<float>::node_depth() const
6775
6776
      private:
6777
6778
         bool equality_;
6779
         branch_t branch_;
6780
      };
6781
6782
      template <typename T>
6783
      class literal_node exprtk_final : public expression_node<T>
6784
      {
6785
      public:
6786
6787
         explicit literal_node(const T& v)
6788
105k
         : value_(v)
6789
105k
         {}
exprtk::details::literal_node<double>::literal_node(double const&)
Line
Count
Source
6788
88.4k
         : value_(v)
6789
88.4k
         {}
exprtk::details::literal_node<float>::literal_node(float const&)
Line
Count
Source
6788
17.2k
         : value_(v)
6789
17.2k
         {}
6790
6791
         inline T value() const exprtk_override
6792
119k
         {
6793
119k
            return value_;
6794
119k
         }
exprtk::details::literal_node<double>::value() const
Line
Count
Source
6792
100k
         {
6793
100k
            return value_;
6794
100k
         }
exprtk::details::literal_node<float>::value() const
Line
Count
Source
6792
19.0k
         {
6793
19.0k
            return value_;
6794
19.0k
         }
6795
6796
         inline typename expression_node<T>::node_type type() const exprtk_override
6797
1.54M
         {
6798
1.54M
            return expression_node<T>::e_constant;
6799
1.54M
         }
exprtk::details::literal_node<double>::type() const
Line
Count
Source
6797
1.28M
         {
6798
1.28M
            return expression_node<T>::e_constant;
6799
1.28M
         }
exprtk::details::literal_node<float>::type() const
Line
Count
Source
6797
257k
         {
6798
257k
            return expression_node<T>::e_constant;
6799
257k
         }
6800
6801
         inline expression_node<T>* branch(const std::size_t&) const exprtk_override
6802
0
         {
6803
0
            return reinterpret_cast<expression_node<T>*>(0);
6804
0
         }
Unexecuted instantiation: exprtk::details::literal_node<double>::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::literal_node<float>::branch(unsigned long const&) const
6805
6806
      private:
6807
6808
         literal_node(const literal_node<T>&) exprtk_delete;
6809
         literal_node<T>& operator=(const literal_node<T>&) exprtk_delete;
6810
6811
         const T value_;
6812
      };
6813
6814
      template <typename T>
6815
      struct range_pack;
6816
6817
      template <typename T>
6818
      struct range_data_type;
6819
6820
      template <typename T>
6821
      class range_interface
6822
      {
6823
      public:
6824
6825
         typedef range_pack<T> range_t;
6826
6827
         virtual ~range_interface()
6828
746
         {}
exprtk::details::range_interface<double>::~range_interface()
Line
Count
Source
6828
373
         {}
exprtk::details::range_interface<float>::~range_interface()
Line
Count
Source
6828
373
         {}
6829
6830
         virtual range_t& range_ref() = 0;
6831
6832
         virtual const range_t& range_ref() const = 0;
6833
      };
6834
6835
      #ifndef exprtk_disable_string_capabilities
6836
      template <typename T>
6837
      class string_base_node
6838
      {
6839
      public:
6840
6841
         typedef range_data_type<T> range_data_type_t;
6842
6843
         virtual ~string_base_node()
6844
746
         {}
exprtk::details::string_base_node<double>::~string_base_node()
Line
Count
Source
6844
373
         {}
exprtk::details::string_base_node<float>::~string_base_node()
Line
Count
Source
6844
373
         {}
6845
6846
         virtual std::string str () const = 0;
6847
6848
         virtual char_cptr   base() const = 0;
6849
6850
         virtual std::size_t size() const = 0;
6851
      };
6852
6853
      template <typename T>
6854
      class string_literal_node exprtk_final
6855
                                : public expression_node <T>
6856
                                , public string_base_node<T>
6857
                                , public range_interface <T>
6858
      {
6859
      public:
6860
6861
         typedef range_pack<T> range_t;
6862
6863
         explicit string_literal_node(const std::string& v)
6864
720
         : value_(v)
6865
720
         {
6866
720
            rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0);
6867
720
            rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size());
6868
720
            rp_.cache.first  = rp_.n0_c.second;
6869
720
            rp_.cache.second = rp_.n1_c.second;
6870
720
         }
exprtk::details::string_literal_node<double>::string_literal_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
6864
360
         : value_(v)
6865
360
         {
6866
360
            rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0);
6867
360
            rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size());
6868
360
            rp_.cache.first  = rp_.n0_c.second;
6869
360
            rp_.cache.second = rp_.n1_c.second;
6870
360
         }
exprtk::details::string_literal_node<float>::string_literal_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
6864
360
         : value_(v)
6865
360
         {
6866
360
            rp_.n0_c = std::make_pair<bool,std::size_t>(true, 0);
6867
360
            rp_.n1_c = std::make_pair<bool,std::size_t>(true, v.size());
6868
360
            rp_.cache.first  = rp_.n0_c.second;
6869
360
            rp_.cache.second = rp_.n1_c.second;
6870
360
         }
6871
6872
         inline T value() const exprtk_override
6873
392
         {
6874
392
            return std::numeric_limits<T>::quiet_NaN();
6875
392
         }
exprtk::details::string_literal_node<double>::value() const
Line
Count
Source
6873
196
         {
6874
196
            return std::numeric_limits<T>::quiet_NaN();
6875
196
         }
exprtk::details::string_literal_node<float>::value() const
Line
Count
Source
6873
196
         {
6874
196
            return std::numeric_limits<T>::quiet_NaN();
6875
196
         }
6876
6877
         inline typename expression_node<T>::node_type type() const exprtk_override
6878
5.03k
         {
6879
5.03k
            return expression_node<T>::e_stringconst;
6880
5.03k
         }
exprtk::details::string_literal_node<double>::type() const
Line
Count
Source
6878
2.51k
         {
6879
2.51k
            return expression_node<T>::e_stringconst;
6880
2.51k
         }
exprtk::details::string_literal_node<float>::type() const
Line
Count
Source
6878
2.51k
         {
6879
2.51k
            return expression_node<T>::e_stringconst;
6880
2.51k
         }
6881
6882
         inline expression_node<T>* branch(const std::size_t&) const exprtk_override
6883
0
         {
6884
0
            return reinterpret_cast<expression_node<T>*>(0);
6885
0
         }
Unexecuted instantiation: exprtk::details::string_literal_node<double>::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::string_literal_node<float>::branch(unsigned long const&) const
6886
6887
         std::string str() const exprtk_override
6888
102
         {
6889
102
            return value_;
6890
102
         }
exprtk::details::string_literal_node<double>::str() const
Line
Count
Source
6888
51
         {
6889
51
            return value_;
6890
51
         }
exprtk::details::string_literal_node<float>::str() const
Line
Count
Source
6888
51
         {
6889
51
            return value_;
6890
51
         }
6891
6892
         char_cptr base() const exprtk_override
6893
12
         {
6894
12
            return value_.data();
6895
12
         }
exprtk::details::string_literal_node<double>::base() const
Line
Count
Source
6893
6
         {
6894
6
            return value_.data();
6895
6
         }
exprtk::details::string_literal_node<float>::base() const
Line
Count
Source
6893
6
         {
6894
6
            return value_.data();
6895
6
         }
6896
6897
         std::size_t size() const exprtk_override
6898
12
         {
6899
12
            return value_.size();
6900
12
         }
exprtk::details::string_literal_node<double>::size() const
Line
Count
Source
6898
6
         {
6899
6
            return value_.size();
6900
6
         }
exprtk::details::string_literal_node<float>::size() const
Line
Count
Source
6898
6
         {
6899
6
            return value_.size();
6900
6
         }
6901
6902
         range_t& range_ref() exprtk_override
6903
14
         {
6904
14
            return rp_;
6905
14
         }
exprtk::details::string_literal_node<double>::range_ref()
Line
Count
Source
6903
7
         {
6904
7
            return rp_;
6905
7
         }
exprtk::details::string_literal_node<float>::range_ref()
Line
Count
Source
6903
7
         {
6904
7
            return rp_;
6905
7
         }
6906
6907
         const range_t& range_ref() const exprtk_override
6908
0
         {
6909
0
            return rp_;
6910
0
         }
Unexecuted instantiation: exprtk::details::string_literal_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::string_literal_node<float>::range_ref() const
6911
6912
      private:
6913
6914
         string_literal_node(const string_literal_node<T>&) exprtk_delete;
6915
         string_literal_node<T>& operator=(const string_literal_node<T>&) exprtk_delete;
6916
6917
         const std::string value_;
6918
         range_t rp_;
6919
      };
6920
      #endif
6921
6922
      template <typename T>
6923
      class unary_node : public expression_node<T>
6924
      {
6925
      public:
6926
6927
         typedef expression_node<T>* expression_ptr;
6928
         typedef std::pair<expression_ptr,bool> branch_t;
6929
6930
         unary_node(const operator_type& opr, expression_ptr branch)
6931
15.8k
         : operation_(opr)
6932
15.8k
         {
6933
15.8k
            construct_branch_pair(branch_,branch);
6934
15.8k
            assert(valid());
6935
15.8k
         }
exprtk::details::unary_node<double>::unary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*)
Line
Count
Source
6931
13.8k
         : operation_(opr)
6932
13.8k
         {
6933
13.8k
            construct_branch_pair(branch_,branch);
6934
13.8k
            assert(valid());
6935
13.8k
         }
exprtk::details::unary_node<float>::unary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*)
Line
Count
Source
6931
1.98k
         : operation_(opr)
6932
1.98k
         {
6933
1.98k
            construct_branch_pair(branch_,branch);
6934
1.98k
            assert(valid());
6935
1.98k
         }
6936
6937
         inline T value() const exprtk_override
6938
15.8k
         {
6939
15.8k
            return numeric::process<T>
6940
15.8k
                     (operation_,branch_.first->value());
6941
15.8k
         }
exprtk::details::unary_node<double>::value() const
Line
Count
Source
6938
13.8k
         {
6939
13.8k
            return numeric::process<T>
6940
13.8k
                     (operation_,branch_.first->value());
6941
13.8k
         }
exprtk::details::unary_node<float>::value() const
Line
Count
Source
6938
1.98k
         {
6939
1.98k
            return numeric::process<T>
6940
1.98k
                     (operation_,branch_.first->value());
6941
1.98k
         }
6942
6943
         inline typename expression_node<T>::node_type type() const exprtk_override
6944
31.7k
         {
6945
31.7k
            return expression_node<T>::e_unary;
6946
31.7k
         }
exprtk::details::unary_node<double>::type() const
Line
Count
Source
6944
27.7k
         {
6945
27.7k
            return expression_node<T>::e_unary;
6946
27.7k
         }
exprtk::details::unary_node<float>::type() const
Line
Count
Source
6944
3.97k
         {
6945
3.97k
            return expression_node<T>::e_unary;
6946
3.97k
         }
6947
6948
         inline operator_type operation()
6949
         {
6950
            return operation_;
6951
         }
6952
6953
         inline expression_node<T>* branch(const std::size_t&) const exprtk_override
6954
0
         {
6955
0
            return branch_.first;
6956
0
         }
Unexecuted instantiation: exprtk::details::unary_node<double>::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::unary_node<float>::branch(unsigned long const&) const
6957
6958
         inline bool valid() const exprtk_override
6959
15.8k
         {
6960
15.8k
            return branch_.first && branch_.first->valid();
6961
15.8k
         }
exprtk::details::unary_node<double>::valid() const
Line
Count
Source
6959
13.8k
         {
6960
13.8k
            return branch_.first && branch_.first->valid();
6961
13.8k
         }
exprtk::details::unary_node<float>::valid() const
Line
Count
Source
6959
1.98k
         {
6960
1.98k
            return branch_.first && branch_.first->valid();
6961
1.98k
         }
6962
6963
         inline void release()
6964
         {
6965
            branch_.second = false;
6966
         }
6967
6968
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
6969
15.8k
         {
6970
15.8k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6971
15.8k
         }
exprtk::details::unary_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
6969
13.8k
         {
6970
13.8k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6971
13.8k
         }
exprtk::details::unary_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
6969
1.98k
         {
6970
1.98k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
6971
1.98k
         }
6972
6973
         std::size_t node_depth() const exprtk_final
6974
31.7k
         {
6975
31.7k
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6976
31.7k
         }
exprtk::details::unary_node<double>::node_depth() const
Line
Count
Source
6974
27.7k
         {
6975
27.7k
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6976
27.7k
         }
exprtk::details::unary_node<float>::node_depth() const
Line
Count
Source
6974
3.97k
         {
6975
3.97k
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
6976
3.97k
         }
6977
6978
      private:
6979
6980
         operator_type operation_;
6981
         branch_t branch_;
6982
      };
6983
6984
      template <typename T>
6985
      class binary_node : public expression_node<T>
6986
      {
6987
      public:
6988
6989
         typedef expression_node<T>* expression_ptr;
6990
         typedef std::pair<expression_ptr,bool> branch_t;
6991
6992
         binary_node(const operator_type& opr,
6993
                     expression_ptr branch0,
6994
                     expression_ptr branch1)
6995
12.1k
         : operation_(opr)
6996
12.1k
         {
6997
12.1k
            init_branches<2>(branch_, branch0, branch1);
6998
12.1k
            assert(valid());
6999
12.1k
         }
exprtk::details::binary_node<double>::binary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
6995
9.87k
         : operation_(opr)
6996
9.87k
         {
6997
9.87k
            init_branches<2>(branch_, branch0, branch1);
6998
9.87k
            assert(valid());
6999
9.87k
         }
exprtk::details::binary_node<float>::binary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
6995
2.27k
         : operation_(opr)
6996
2.27k
         {
6997
2.27k
            init_branches<2>(branch_, branch0, branch1);
6998
2.27k
            assert(valid());
6999
2.27k
         }
7000
7001
         inline T value() const exprtk_override
7002
10.9k
         {
7003
10.9k
            return numeric::process<T>
7004
10.9k
                   (
7005
10.9k
                      operation_,
7006
10.9k
                      branch_[0].first->value(),
7007
10.9k
                      branch_[1].first->value()
7008
10.9k
                   );
7009
10.9k
         }
exprtk::details::binary_node<double>::value() const
Line
Count
Source
7002
9.25k
         {
7003
9.25k
            return numeric::process<T>
7004
9.25k
                   (
7005
9.25k
                      operation_,
7006
9.25k
                      branch_[0].first->value(),
7007
9.25k
                      branch_[1].first->value()
7008
9.25k
                   );
7009
9.25k
         }
exprtk::details::binary_node<float>::value() const
Line
Count
Source
7002
1.66k
         {
7003
1.66k
            return numeric::process<T>
7004
1.66k
                   (
7005
1.66k
                      operation_,
7006
1.66k
                      branch_[0].first->value(),
7007
1.66k
                      branch_[1].first->value()
7008
1.66k
                   );
7009
1.66k
         }
7010
7011
         inline typename expression_node<T>::node_type type() const exprtk_override
7012
38.0k
         {
7013
38.0k
            return expression_node<T>::e_binary;
7014
38.0k
         }
exprtk::details::binary_node<double>::type() const
Line
Count
Source
7012
26.6k
         {
7013
26.6k
            return expression_node<T>::e_binary;
7014
26.6k
         }
exprtk::details::binary_node<float>::type() const
Line
Count
Source
7012
11.4k
         {
7013
11.4k
            return expression_node<T>::e_binary;
7014
11.4k
         }
7015
7016
         inline operator_type operation()
7017
         {
7018
            return operation_;
7019
         }
7020
7021
         inline expression_node<T>* branch(const std::size_t& index = 0) const exprtk_override
7022
1.02k
         {
7023
1.02k
            assert(index < 2);
7024
1.02k
            return branch_[index].first;
7025
1.02k
         }
exprtk::details::binary_node<double>::branch(unsigned long const&) const
Line
Count
Source
7022
515
         {
7023
515
            assert(index < 2);
7024
515
            return branch_[index].first;
7025
515
         }
exprtk::details::binary_node<float>::branch(unsigned long const&) const
Line
Count
Source
7022
514
         {
7023
514
            assert(index < 2);
7024
514
            return branch_[index].first;
7025
514
         }
7026
7027
         inline bool valid() const exprtk_override
7028
43.3k
         {
7029
43.3k
            return
7030
43.3k
               branch_[0].first && branch_[0].first->valid() &&
7031
43.3k
               branch_[1].first && branch_[1].first->valid() ;
7032
43.3k
         }
exprtk::details::binary_node<double>::valid() const
Line
Count
Source
7028
25.4k
         {
7029
25.4k
            return
7030
25.4k
               branch_[0].first && branch_[0].first->valid() &&
7031
25.4k
               branch_[1].first && branch_[1].first->valid() ;
7032
25.4k
         }
exprtk::details::binary_node<float>::valid() const
Line
Count
Source
7028
17.8k
         {
7029
17.8k
            return
7030
17.8k
               branch_[0].first && branch_[0].first->valid() &&
7031
17.8k
               branch_[1].first && branch_[1].first->valid() ;
7032
17.8k
         }
7033
7034
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7035
12.1k
         {
7036
12.1k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7037
12.1k
         }
exprtk::details::binary_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7035
9.87k
         {
7036
9.87k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7037
9.87k
         }
exprtk::details::binary_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7035
2.27k
         {
7036
2.27k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7037
2.27k
         }
7038
7039
         std::size_t node_depth() const exprtk_final
7040
25.5k
         {
7041
25.5k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7042
25.5k
         }
exprtk::details::binary_node<double>::node_depth() const
Line
Count
Source
7040
20.3k
         {
7041
20.3k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7042
20.3k
         }
exprtk::details::binary_node<float>::node_depth() const
Line
Count
Source
7040
5.19k
         {
7041
5.19k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7042
5.19k
         }
7043
7044
      private:
7045
7046
         operator_type operation_;
7047
         branch_t branch_[2];
7048
      };
7049
7050
      template <typename T, typename Operation>
7051
      class binary_ext_node exprtk_final : public expression_node<T>
7052
      {
7053
      public:
7054
7055
         typedef expression_node<T>* expression_ptr;
7056
         typedef std::pair<expression_ptr,bool> branch_t;
7057
7058
         binary_ext_node(expression_ptr branch0, expression_ptr branch1)
7059
38.2k
         {
7060
38.2k
            init_branches<2>(branch_, branch0, branch1);
7061
38.2k
            assert(valid());
7062
38.2k
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
1.84k
         {
7060
1.84k
            init_branches<2>(branch_, branch0, branch1);
7061
1.84k
            assert(valid());
7062
1.84k
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
1.16k
         {
7060
1.16k
            init_branches<2>(branch_, branch0, branch1);
7061
1.16k
            assert(valid());
7062
1.16k
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
1.32k
         {
7060
1.32k
            init_branches<2>(branch_, branch0, branch1);
7061
1.32k
            assert(valid());
7062
1.32k
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
23
         {
7060
23
            init_branches<2>(branch_, branch0, branch1);
7061
23
            assert(valid());
7062
23
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
109
         {
7060
109
            init_branches<2>(branch_, branch0, branch1);
7061
109
            assert(valid());
7062
109
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
12
         {
7060
12
            init_branches<2>(branch_, branch0, branch1);
7061
12
            assert(valid());
7062
12
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
14.9k
         {
7060
14.9k
            init_branches<2>(branch_, branch0, branch1);
7061
14.9k
            assert(valid());
7062
14.9k
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
11
         {
7060
11
            init_branches<2>(branch_, branch0, branch1);
7061
11
            assert(valid());
7062
11
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
14.2k
         {
7060
14.2k
            init_branches<2>(branch_, branch0, branch1);
7061
14.2k
            assert(valid());
7062
14.2k
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
2
         {
7060
2
            init_branches<2>(branch_, branch0, branch1);
7061
2
            assert(valid());
7062
2
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
1.03k
         {
7060
1.03k
            init_branches<2>(branch_, branch0, branch1);
7061
1.03k
            assert(valid());
7062
1.03k
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
8
         {
7060
8
            init_branches<2>(branch_, branch0, branch1);
7061
8
            assert(valid());
7062
8
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
13
         {
7060
13
            init_branches<2>(branch_, branch0, branch1);
7061
13
            assert(valid());
7062
13
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
130
         {
7060
130
            init_branches<2>(branch_, branch0, branch1);
7061
130
            assert(valid());
7062
130
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
39
         {
7060
39
            init_branches<2>(branch_, branch0, branch1);
7061
39
            assert(valid());
7062
39
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
20
         {
7060
20
            init_branches<2>(branch_, branch0, branch1);
7061
20
            assert(valid());
7062
20
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::binary_ext_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7059
6
         {
7060
6
            init_branches<2>(branch_, branch0, branch1);
7061
6
            assert(valid());
7062
6
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
476
         {
7060
476
            init_branches<2>(branch_, branch0, branch1);
7061
476
            assert(valid());
7062
476
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
270
         {
7060
270
            init_branches<2>(branch_, branch0, branch1);
7061
270
            assert(valid());
7062
270
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
570
         {
7060
570
            init_branches<2>(branch_, branch0, branch1);
7061
570
            assert(valid());
7062
570
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
23
         {
7060
23
            init_branches<2>(branch_, branch0, branch1);
7061
23
            assert(valid());
7062
23
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
9
         {
7060
9
            init_branches<2>(branch_, branch0, branch1);
7061
9
            assert(valid());
7062
9
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
12
         {
7060
12
            init_branches<2>(branch_, branch0, branch1);
7061
12
            assert(valid());
7062
12
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
478
         {
7060
478
            init_branches<2>(branch_, branch0, branch1);
7061
478
            assert(valid());
7062
478
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
11
         {
7060
11
            init_branches<2>(branch_, branch0, branch1);
7061
11
            assert(valid());
7062
11
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
111
         {
7060
111
            init_branches<2>(branch_, branch0, branch1);
7061
111
            assert(valid());
7062
111
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
2
         {
7060
2
            init_branches<2>(branch_, branch0, branch1);
7061
2
            assert(valid());
7062
2
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
1.03k
         {
7060
1.03k
            init_branches<2>(branch_, branch0, branch1);
7061
1.03k
            assert(valid());
7062
1.03k
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
8
         {
7060
8
            init_branches<2>(branch_, branch0, branch1);
7061
8
            assert(valid());
7062
8
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
13
         {
7060
13
            init_branches<2>(branch_, branch0, branch1);
7061
13
            assert(valid());
7062
13
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
130
         {
7060
130
            init_branches<2>(branch_, branch0, branch1);
7061
130
            assert(valid());
7062
130
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
39
         {
7060
39
            init_branches<2>(branch_, branch0, branch1);
7061
39
            assert(valid());
7062
39
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
20
         {
7060
20
            init_branches<2>(branch_, branch0, branch1);
7061
20
            assert(valid());
7062
20
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::binary_ext_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7059
6
         {
7060
6
            init_branches<2>(branch_, branch0, branch1);
7061
6
            assert(valid());
7062
6
         }
7063
7064
         inline T value() const exprtk_override
7065
452
         {
7066
452
            const T arg0 = branch_[0].first->value();
7067
452
            const T arg1 = branch_[1].first->value();
7068
452
            return Operation::process(arg0,arg1);
7069
452
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::value() const
Line
Count
Source
7065
19
         {
7066
19
            const T arg0 = branch_[0].first->value();
7067
19
            const T arg1 = branch_[1].first->value();
7068
19
            return Operation::process(arg0,arg1);
7069
19
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::value() const
Line
Count
Source
7065
31
         {
7066
31
            const T arg0 = branch_[0].first->value();
7067
31
            const T arg1 = branch_[1].first->value();
7068
31
            return Operation::process(arg0,arg1);
7069
31
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::value() const
Line
Count
Source
7065
54
         {
7066
54
            const T arg0 = branch_[0].first->value();
7067
54
            const T arg1 = branch_[1].first->value();
7068
54
            return Operation::process(arg0,arg1);
7069
54
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::value() const
Line
Count
Source
7065
8
         {
7066
8
            const T arg0 = branch_[0].first->value();
7067
8
            const T arg1 = branch_[1].first->value();
7068
8
            return Operation::process(arg0,arg1);
7069
8
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::value() const
Line
Count
Source
7065
8
         {
7066
8
            const T arg0 = branch_[0].first->value();
7067
8
            const T arg1 = branch_[1].first->value();
7068
8
            return Operation::process(arg0,arg1);
7069
8
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::value() const
Line
Count
Source
7065
1
         {
7066
1
            const T arg0 = branch_[0].first->value();
7067
1
            const T arg1 = branch_[1].first->value();
7068
1
            return Operation::process(arg0,arg1);
7069
1
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::value() const
Line
Count
Source
7065
10
         {
7066
10
            const T arg0 = branch_[0].first->value();
7067
10
            const T arg1 = branch_[1].first->value();
7068
10
            return Operation::process(arg0,arg1);
7069
10
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::value() const
Line
Count
Source
7065
2
         {
7066
2
            const T arg0 = branch_[0].first->value();
7067
2
            const T arg1 = branch_[1].first->value();
7068
2
            return Operation::process(arg0,arg1);
7069
2
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::value() const
Line
Count
Source
7065
11
         {
7066
11
            const T arg0 = branch_[0].first->value();
7067
11
            const T arg1 = branch_[1].first->value();
7068
11
            return Operation::process(arg0,arg1);
7069
11
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::value() const
Line
Count
Source
7065
1
         {
7066
1
            const T arg0 = branch_[0].first->value();
7067
1
            const T arg1 = branch_[1].first->value();
7068
1
            return Operation::process(arg0,arg1);
7069
1
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::value() const
Line
Count
Source
7065
16
         {
7066
16
            const T arg0 = branch_[0].first->value();
7067
16
            const T arg1 = branch_[1].first->value();
7068
16
            return Operation::process(arg0,arg1);
7069
16
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::value() const
Line
Count
Source
7065
2
         {
7066
2
            const T arg0 = branch_[0].first->value();
7067
2
            const T arg1 = branch_[1].first->value();
7068
2
            return Operation::process(arg0,arg1);
7069
2
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::value() const
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::value() const
Line
Count
Source
7065
6
         {
7066
6
            const T arg0 = branch_[0].first->value();
7067
6
            const T arg1 = branch_[1].first->value();
7068
6
            return Operation::process(arg0,arg1);
7069
6
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::value() const
Line
Count
Source
7065
10
         {
7066
10
            const T arg0 = branch_[0].first->value();
7067
10
            const T arg1 = branch_[1].first->value();
7068
10
            return Operation::process(arg0,arg1);
7069
10
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::value() const
Line
Count
Source
7065
39
         {
7066
39
            const T arg0 = branch_[0].first->value();
7067
39
            const T arg1 = branch_[1].first->value();
7068
39
            return Operation::process(arg0,arg1);
7069
39
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::value() const
Line
Count
Source
7065
3
         {
7066
3
            const T arg0 = branch_[0].first->value();
7067
3
            const T arg1 = branch_[1].first->value();
7068
3
            return Operation::process(arg0,arg1);
7069
3
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::value() const
Line
Count
Source
7065
5
         {
7066
5
            const T arg0 = branch_[0].first->value();
7067
5
            const T arg1 = branch_[1].first->value();
7068
5
            return Operation::process(arg0,arg1);
7069
5
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::value() const
Line
Count
Source
7065
19
         {
7066
19
            const T arg0 = branch_[0].first->value();
7067
19
            const T arg1 = branch_[1].first->value();
7068
19
            return Operation::process(arg0,arg1);
7069
19
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::value() const
Line
Count
Source
7065
31
         {
7066
31
            const T arg0 = branch_[0].first->value();
7067
31
            const T arg1 = branch_[1].first->value();
7068
31
            return Operation::process(arg0,arg1);
7069
31
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::value() const
Line
Count
Source
7065
54
         {
7066
54
            const T arg0 = branch_[0].first->value();
7067
54
            const T arg1 = branch_[1].first->value();
7068
54
            return Operation::process(arg0,arg1);
7069
54
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::value() const
Line
Count
Source
7065
8
         {
7066
8
            const T arg0 = branch_[0].first->value();
7067
8
            const T arg1 = branch_[1].first->value();
7068
8
            return Operation::process(arg0,arg1);
7069
8
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::value() const
Line
Count
Source
7065
8
         {
7066
8
            const T arg0 = branch_[0].first->value();
7067
8
            const T arg1 = branch_[1].first->value();
7068
8
            return Operation::process(arg0,arg1);
7069
8
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::value() const
Line
Count
Source
7065
1
         {
7066
1
            const T arg0 = branch_[0].first->value();
7067
1
            const T arg1 = branch_[1].first->value();
7068
1
            return Operation::process(arg0,arg1);
7069
1
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::value() const
Line
Count
Source
7065
10
         {
7066
10
            const T arg0 = branch_[0].first->value();
7067
10
            const T arg1 = branch_[1].first->value();
7068
10
            return Operation::process(arg0,arg1);
7069
10
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::value() const
Line
Count
Source
7065
2
         {
7066
2
            const T arg0 = branch_[0].first->value();
7067
2
            const T arg1 = branch_[1].first->value();
7068
2
            return Operation::process(arg0,arg1);
7069
2
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::value() const
Line
Count
Source
7065
11
         {
7066
11
            const T arg0 = branch_[0].first->value();
7067
11
            const T arg1 = branch_[1].first->value();
7068
11
            return Operation::process(arg0,arg1);
7069
11
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::value() const
Line
Count
Source
7065
1
         {
7066
1
            const T arg0 = branch_[0].first->value();
7067
1
            const T arg1 = branch_[1].first->value();
7068
1
            return Operation::process(arg0,arg1);
7069
1
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::value() const
Line
Count
Source
7065
16
         {
7066
16
            const T arg0 = branch_[0].first->value();
7067
16
            const T arg1 = branch_[1].first->value();
7068
16
            return Operation::process(arg0,arg1);
7069
16
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::value() const
Line
Count
Source
7065
2
         {
7066
2
            const T arg0 = branch_[0].first->value();
7067
2
            const T arg1 = branch_[1].first->value();
7068
2
            return Operation::process(arg0,arg1);
7069
2
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::value() const
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::value() const
Line
Count
Source
7065
6
         {
7066
6
            const T arg0 = branch_[0].first->value();
7067
6
            const T arg1 = branch_[1].first->value();
7068
6
            return Operation::process(arg0,arg1);
7069
6
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::value() const
Line
Count
Source
7065
10
         {
7066
10
            const T arg0 = branch_[0].first->value();
7067
10
            const T arg1 = branch_[1].first->value();
7068
10
            return Operation::process(arg0,arg1);
7069
10
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::value() const
Line
Count
Source
7065
39
         {
7066
39
            const T arg0 = branch_[0].first->value();
7067
39
            const T arg1 = branch_[1].first->value();
7068
39
            return Operation::process(arg0,arg1);
7069
39
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::value() const
Line
Count
Source
7065
3
         {
7066
3
            const T arg0 = branch_[0].first->value();
7067
3
            const T arg1 = branch_[1].first->value();
7068
3
            return Operation::process(arg0,arg1);
7069
3
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::value() const
Line
Count
Source
7065
5
         {
7066
5
            const T arg0 = branch_[0].first->value();
7067
5
            const T arg1 = branch_[1].first->value();
7068
5
            return Operation::process(arg0,arg1);
7069
5
         }
7070
7071
         inline typename expression_node<T>::node_type type() const exprtk_override
7072
1.09M
         {
7073
1.09M
            return expression_node<T>::e_binary_ext;
7074
1.09M
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::type() const
Line
Count
Source
7072
48.5k
         {
7073
48.5k
            return expression_node<T>::e_binary_ext;
7074
48.5k
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::type() const
Line
Count
Source
7072
28.5k
         {
7073
28.5k
            return expression_node<T>::e_binary_ext;
7074
28.5k
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::type() const
Line
Count
Source
7072
37.7k
         {
7073
37.7k
            return expression_node<T>::e_binary_ext;
7074
37.7k
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::type() const
Line
Count
Source
7072
488
         {
7073
488
            return expression_node<T>::e_binary_ext;
7074
488
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::type() const
Line
Count
Source
7072
3.22k
         {
7073
3.22k
            return expression_node<T>::e_binary_ext;
7074
3.22k
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::type() const
Line
Count
Source
7072
346
         {
7073
346
            return expression_node<T>::e_binary_ext;
7074
346
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::type() const
Line
Count
Source
7072
437k
         {
7073
437k
            return expression_node<T>::e_binary_ext;
7074
437k
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::type() const
Line
Count
Source
7072
304
         {
7073
304
            return expression_node<T>::e_binary_ext;
7074
304
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::type() const
Line
Count
Source
7072
420k
         {
7073
420k
            return expression_node<T>::e_binary_ext;
7074
420k
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::type() const
Line
Count
Source
7072
35
         {
7073
35
            return expression_node<T>::e_binary_ext;
7074
35
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::type() const
Line
Count
Source
7072
26.3k
         {
7073
26.3k
            return expression_node<T>::e_binary_ext;
7074
26.3k
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::type() const
Line
Count
Source
7072
100
         {
7073
100
            return expression_node<T>::e_binary_ext;
7074
100
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::type() const
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::type() const
Line
Count
Source
7072
317
         {
7073
317
            return expression_node<T>::e_binary_ext;
7074
317
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::type() const
Line
Count
Source
7072
3.59k
         {
7073
3.59k
            return expression_node<T>::e_binary_ext;
7074
3.59k
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::type() const
Line
Count
Source
7072
893
         {
7073
893
            return expression_node<T>::e_binary_ext;
7074
893
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::type() const
Line
Count
Source
7072
482
         {
7073
482
            return expression_node<T>::e_binary_ext;
7074
482
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::type() const
Line
Count
Source
7072
128
         {
7073
128
            return expression_node<T>::e_binary_ext;
7074
128
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::type() const
Line
Count
Source
7072
13.1k
         {
7073
13.1k
            return expression_node<T>::e_binary_ext;
7074
13.1k
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::type() const
Line
Count
Source
7072
6.15k
         {
7073
6.15k
            return expression_node<T>::e_binary_ext;
7074
6.15k
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::type() const
Line
Count
Source
7072
18.2k
         {
7073
18.2k
            return expression_node<T>::e_binary_ext;
7074
18.2k
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::type() const
Line
Count
Source
7072
488
         {
7073
488
            return expression_node<T>::e_binary_ext;
7074
488
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::type() const
Line
Count
Source
7072
124
         {
7073
124
            return expression_node<T>::e_binary_ext;
7074
124
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::type() const
Line
Count
Source
7072
346
         {
7073
346
            return expression_node<T>::e_binary_ext;
7074
346
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::type() const
Line
Count
Source
7072
8.30k
         {
7073
8.30k
            return expression_node<T>::e_binary_ext;
7074
8.30k
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::type() const
Line
Count
Source
7072
304
         {
7073
304
            return expression_node<T>::e_binary_ext;
7074
304
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::type() const
Line
Count
Source
7072
2.63k
         {
7073
2.63k
            return expression_node<T>::e_binary_ext;
7074
2.63k
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::type() const
Line
Count
Source
7072
35
         {
7073
35
            return expression_node<T>::e_binary_ext;
7074
35
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::type() const
Line
Count
Source
7072
26.3k
         {
7073
26.3k
            return expression_node<T>::e_binary_ext;
7074
26.3k
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::type() const
Line
Count
Source
7072
100
         {
7073
100
            return expression_node<T>::e_binary_ext;
7074
100
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::type() const
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::type() const
Line
Count
Source
7072
317
         {
7073
317
            return expression_node<T>::e_binary_ext;
7074
317
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::type() const
Line
Count
Source
7072
3.59k
         {
7073
3.59k
            return expression_node<T>::e_binary_ext;
7074
3.59k
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::type() const
Line
Count
Source
7072
893
         {
7073
893
            return expression_node<T>::e_binary_ext;
7074
893
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::type() const
Line
Count
Source
7072
482
         {
7073
482
            return expression_node<T>::e_binary_ext;
7074
482
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::type() const
Line
Count
Source
7072
128
         {
7073
128
            return expression_node<T>::e_binary_ext;
7074
128
         }
7075
7076
         inline operator_type operation()
7077
         {
7078
            return Operation::operation();
7079
         }
7080
7081
         inline expression_node<T>* branch(const std::size_t& index = 0) const exprtk_override
7082
0
         {
7083
0
            assert(index < 2);
7084
0
            return branch_[index].first;
7085
0
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::branch(unsigned long const&) const
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::branch(unsigned long const&) const
7086
7087
         inline bool valid() const exprtk_override
7088
639M
         {
7089
639M
            return
7090
639M
               branch_[0].first && branch_[0].first->valid() &&
7091
639M
               branch_[1].first && branch_[1].first->valid() ;
7092
639M
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::valid() const
Line
Count
Source
7088
27.6M
         {
7089
27.6M
            return
7090
27.6M
               branch_[0].first && branch_[0].first->valid() &&
7091
27.6M
               branch_[1].first && branch_[1].first->valid() ;
7092
27.6M
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::valid() const
Line
Count
Source
7088
18.0M
         {
7089
18.0M
            return
7090
18.0M
               branch_[0].first && branch_[0].first->valid() &&
7091
18.0M
               branch_[1].first && branch_[1].first->valid() ;
7092
18.0M
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::valid() const
Line
Count
Source
7088
15.0M
         {
7089
15.0M
            return
7090
15.0M
               branch_[0].first && branch_[0].first->valid() &&
7091
15.0M
               branch_[1].first && branch_[1].first->valid() ;
7092
15.0M
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::valid() const
Line
Count
Source
7088
342
         {
7089
342
            return
7090
342
               branch_[0].first && branch_[0].first->valid() &&
7091
342
               branch_[1].first && branch_[1].first->valid() ;
7092
342
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::valid() const
Line
Count
Source
7088
1.98M
         {
7089
1.98M
            return
7090
1.98M
               branch_[0].first && branch_[0].first->valid() &&
7091
1.98M
               branch_[1].first && branch_[1].first->valid() ;
7092
1.98M
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::valid() const
Line
Count
Source
7088
269
         {
7089
269
            return
7090
269
               branch_[0].first && branch_[0].first->valid() &&
7091
269
               branch_[1].first && branch_[1].first->valid() ;
7092
269
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::valid() const
Line
Count
Source
7088
291M
         {
7089
291M
            return
7090
291M
               branch_[0].first && branch_[0].first->valid() &&
7091
291M
               branch_[1].first && branch_[1].first->valid() ;
7092
291M
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::valid() const
Line
Count
Source
7088
104
         {
7089
104
            return
7090
104
               branch_[0].first && branch_[0].first->valid() &&
7091
104
               branch_[1].first && branch_[1].first->valid() ;
7092
104
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::valid() const
Line
Count
Source
7088
285M
         {
7089
285M
            return
7090
285M
               branch_[0].first && branch_[0].first->valid() &&
7091
285M
               branch_[1].first && branch_[1].first->valid() ;
7092
285M
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::valid() const
Line
Count
Source
7088
3
         {
7089
3
            return
7090
3
               branch_[0].first && branch_[0].first->valid() &&
7091
3
               branch_[1].first && branch_[1].first->valid() ;
7092
3
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::valid() const
Line
Count
Source
7088
48.6k
         {
7089
48.6k
            return
7090
48.6k
               branch_[0].first && branch_[0].first->valid() &&
7091
48.6k
               branch_[1].first && branch_[1].first->valid() ;
7092
48.6k
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::valid() const
Line
Count
Source
7088
51
         {
7089
51
            return
7090
51
               branch_[0].first && branch_[0].first->valid() &&
7091
51
               branch_[1].first && branch_[1].first->valid() ;
7092
51
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::valid() const
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::valid() const
Line
Count
Source
7088
90
         {
7089
90
            return
7090
90
               branch_[0].first && branch_[0].first->valid() &&
7091
90
               branch_[1].first && branch_[1].first->valid() ;
7092
90
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::valid() const
Line
Count
Source
7088
2.42k
         {
7089
2.42k
            return
7090
2.42k
               branch_[0].first && branch_[0].first->valid() &&
7091
2.42k
               branch_[1].first && branch_[1].first->valid() ;
7092
2.42k
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::valid() const
Line
Count
Source
7088
474
         {
7089
474
            return
7090
474
               branch_[0].first && branch_[0].first->valid() &&
7091
474
               branch_[1].first && branch_[1].first->valid() ;
7092
474
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::valid() const
Line
Count
Source
7088
95
         {
7089
95
            return
7090
95
               branch_[0].first && branch_[0].first->valid() &&
7091
95
               branch_[1].first && branch_[1].first->valid() ;
7092
95
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::valid() const
Line
Count
Source
7088
18
         {
7089
18
            return
7090
18
               branch_[0].first && branch_[0].first->valid() &&
7091
18
               branch_[1].first && branch_[1].first->valid() ;
7092
18
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::valid() const
Line
Count
Source
7088
20.9k
         {
7089
20.9k
            return
7090
20.9k
               branch_[0].first && branch_[0].first->valid() &&
7091
20.9k
               branch_[1].first && branch_[1].first->valid() ;
7092
20.9k
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::valid() const
Line
Count
Source
7088
10.7k
         {
7089
10.7k
            return
7090
10.7k
               branch_[0].first && branch_[0].first->valid() &&
7091
10.7k
               branch_[1].first && branch_[1].first->valid() ;
7092
10.7k
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::valid() const
Line
Count
Source
7088
20.4k
         {
7089
20.4k
            return
7090
20.4k
               branch_[0].first && branch_[0].first->valid() &&
7091
20.4k
               branch_[1].first && branch_[1].first->valid() ;
7092
20.4k
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::valid() const
Line
Count
Source
7088
342
         {
7089
342
            return
7090
342
               branch_[0].first && branch_[0].first->valid() &&
7091
342
               branch_[1].first && branch_[1].first->valid() ;
7092
342
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::valid() const
Line
Count
Source
7088
12
         {
7089
12
            return
7090
12
               branch_[0].first && branch_[0].first->valid() &&
7091
12
               branch_[1].first && branch_[1].first->valid() ;
7092
12
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::valid() const
Line
Count
Source
7088
269
         {
7089
269
            return
7090
269
               branch_[0].first && branch_[0].first->valid() &&
7091
269
               branch_[1].first && branch_[1].first->valid() ;
7092
269
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::valid() const
Line
Count
Source
7088
20.7k
         {
7089
20.7k
            return
7090
20.7k
               branch_[0].first && branch_[0].first->valid() &&
7091
20.7k
               branch_[1].first && branch_[1].first->valid() ;
7092
20.7k
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::valid() const
Line
Count
Source
7088
104
         {
7089
104
            return
7090
104
               branch_[0].first && branch_[0].first->valid() &&
7091
104
               branch_[1].first && branch_[1].first->valid() ;
7092
104
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::valid() const
Line
Count
Source
7088
5.36k
         {
7089
5.36k
            return
7090
5.36k
               branch_[0].first && branch_[0].first->valid() &&
7091
5.36k
               branch_[1].first && branch_[1].first->valid() ;
7092
5.36k
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::valid() const
Line
Count
Source
7088
3
         {
7089
3
            return
7090
3
               branch_[0].first && branch_[0].first->valid() &&
7091
3
               branch_[1].first && branch_[1].first->valid() ;
7092
3
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::valid() const
Line
Count
Source
7088
48.6k
         {
7089
48.6k
            return
7090
48.6k
               branch_[0].first && branch_[0].first->valid() &&
7091
48.6k
               branch_[1].first && branch_[1].first->valid() ;
7092
48.6k
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::valid() const
Line
Count
Source
7088
51
         {
7089
51
            return
7090
51
               branch_[0].first && branch_[0].first->valid() &&
7091
51
               branch_[1].first && branch_[1].first->valid() ;
7092
51
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::valid() const
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::valid() const
Line
Count
Source
7088
90
         {
7089
90
            return
7090
90
               branch_[0].first && branch_[0].first->valid() &&
7091
90
               branch_[1].first && branch_[1].first->valid() ;
7092
90
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::valid() const
Line
Count
Source
7088
2.42k
         {
7089
2.42k
            return
7090
2.42k
               branch_[0].first && branch_[0].first->valid() &&
7091
2.42k
               branch_[1].first && branch_[1].first->valid() ;
7092
2.42k
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::valid() const
Line
Count
Source
7088
474
         {
7089
474
            return
7090
474
               branch_[0].first && branch_[0].first->valid() &&
7091
474
               branch_[1].first && branch_[1].first->valid() ;
7092
474
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::valid() const
Line
Count
Source
7088
95
         {
7089
95
            return
7090
95
               branch_[0].first && branch_[0].first->valid() &&
7091
95
               branch_[1].first && branch_[1].first->valid() ;
7092
95
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::valid() const
Line
Count
Source
7088
18
         {
7089
18
            return
7090
18
               branch_[0].first && branch_[0].first->valid() &&
7091
18
               branch_[1].first && branch_[1].first->valid() ;
7092
18
         }
7093
7094
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7095
38.2k
         {
7096
38.2k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
38.2k
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
1.84k
         {
7096
1.84k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
1.84k
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
1.16k
         {
7096
1.16k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
1.16k
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
1.32k
         {
7096
1.32k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
1.32k
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
23
         {
7096
23
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
23
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
109
         {
7096
109
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
109
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
12
         {
7096
12
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
12
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
14.9k
         {
7096
14.9k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
14.9k
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
11
         {
7096
11
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
11
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
14.2k
         {
7096
14.2k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
14.2k
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
2
         {
7096
2
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
2
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
1.03k
         {
7096
1.03k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
1.03k
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
8
         {
7096
8
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
8
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
13
         {
7096
13
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
13
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
130
         {
7096
130
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
130
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
39
         {
7096
39
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
39
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
20
         {
7096
20
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
20
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7095
6
         {
7096
6
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
6
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
476
         {
7096
476
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
476
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
270
         {
7096
270
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
270
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
570
         {
7096
570
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
570
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
23
         {
7096
23
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
23
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
9
         {
7096
9
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
9
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
12
         {
7096
12
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
12
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
478
         {
7096
478
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
478
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
11
         {
7096
11
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
11
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
111
         {
7096
111
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
111
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
2
         {
7096
2
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
2
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
1.03k
         {
7096
1.03k
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
1.03k
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
8
         {
7096
8
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
8
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
13
         {
7096
13
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
13
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
130
         {
7096
130
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
130
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
39
         {
7096
39
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
39
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
20
         {
7096
20
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
20
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7095
6
         {
7096
6
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7097
6
         }
7098
7099
         std::size_t node_depth() const exprtk_override
7100
79.0k
         {
7101
79.0k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
79.0k
         }
exprtk::details::binary_ext_node<double, exprtk::details::add_op<double> >::node_depth() const
Line
Count
Source
7100
4.13k
         {
7101
4.13k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
4.13k
         }
exprtk::details::binary_ext_node<double, exprtk::details::sub_op<double> >::node_depth() const
Line
Count
Source
7100
3.34k
         {
7101
3.34k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
3.34k
         }
exprtk::details::binary_ext_node<double, exprtk::details::mul_op<double> >::node_depth() const
Line
Count
Source
7100
2.74k
         {
7101
2.74k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
2.74k
         }
exprtk::details::binary_ext_node<double, exprtk::details::div_op<double> >::node_depth() const
Line
Count
Source
7100
49
         {
7101
49
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
49
         }
exprtk::details::binary_ext_node<double, exprtk::details::mod_op<double> >::node_depth() const
Line
Count
Source
7100
218
         {
7101
218
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
218
         }
exprtk::details::binary_ext_node<double, exprtk::details::pow_op<double> >::node_depth() const
Line
Count
Source
7100
36
         {
7101
36
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
36
         }
exprtk::details::binary_ext_node<double, exprtk::details::lt_op<double> >::node_depth() const
Line
Count
Source
7100
30.1k
         {
7101
30.1k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
30.1k
         }
exprtk::details::binary_ext_node<double, exprtk::details::lte_op<double> >::node_depth() const
Line
Count
Source
7100
23
         {
7101
23
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
23
         }
exprtk::details::binary_ext_node<double, exprtk::details::gt_op<double> >::node_depth() const
Line
Count
Source
7100
28.5k
         {
7101
28.5k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
28.5k
         }
exprtk::details::binary_ext_node<double, exprtk::details::gte_op<double> >::node_depth() const
Line
Count
Source
7100
4
         {
7101
4
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
4
         }
exprtk::details::binary_ext_node<double, exprtk::details::eq_op<double> >::node_depth() const
Line
Count
Source
7100
2.11k
         {
7101
2.11k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
2.11k
         }
exprtk::details::binary_ext_node<double, exprtk::details::ne_op<double> >::node_depth() const
Line
Count
Source
7100
22
         {
7101
22
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
22
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<double, exprtk::details::and_op<double> >::node_depth() const
exprtk::details::binary_ext_node<double, exprtk::details::nand_op<double> >::node_depth() const
Line
Count
Source
7100
28
         {
7101
28
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
28
         }
exprtk::details::binary_ext_node<double, exprtk::details::or_op<double> >::node_depth() const
Line
Count
Source
7100
262
         {
7101
262
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
262
         }
exprtk::details::binary_ext_node<double, exprtk::details::nor_op<double> >::node_depth() const
Line
Count
Source
7100
79
         {
7101
79
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
79
         }
exprtk::details::binary_ext_node<double, exprtk::details::xor_op<double> >::node_depth() const
Line
Count
Source
7100
40
         {
7101
40
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
40
         }
exprtk::details::binary_ext_node<double, exprtk::details::xnor_op<double> >::node_depth() const
Line
Count
Source
7100
11
         {
7101
11
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
11
         }
exprtk::details::binary_ext_node<float, exprtk::details::add_op<float> >::node_depth() const
Line
Count
Source
7100
1.25k
         {
7101
1.25k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
1.25k
         }
exprtk::details::binary_ext_node<float, exprtk::details::sub_op<float> >::node_depth() const
Line
Count
Source
7100
690
         {
7101
690
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
690
         }
exprtk::details::binary_ext_node<float, exprtk::details::mul_op<float> >::node_depth() const
Line
Count
Source
7100
1.24k
         {
7101
1.24k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
1.24k
         }
exprtk::details::binary_ext_node<float, exprtk::details::div_op<float> >::node_depth() const
Line
Count
Source
7100
49
         {
7101
49
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
49
         }
exprtk::details::binary_ext_node<float, exprtk::details::mod_op<float> >::node_depth() const
Line
Count
Source
7100
18
         {
7101
18
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
18
         }
exprtk::details::binary_ext_node<float, exprtk::details::pow_op<float> >::node_depth() const
Line
Count
Source
7100
36
         {
7101
36
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
36
         }
exprtk::details::binary_ext_node<float, exprtk::details::lt_op<float> >::node_depth() const
Line
Count
Source
7100
1.13k
         {
7101
1.13k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
1.13k
         }
exprtk::details::binary_ext_node<float, exprtk::details::lte_op<float> >::node_depth() const
Line
Count
Source
7100
23
         {
7101
23
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
23
         }
exprtk::details::binary_ext_node<float, exprtk::details::gt_op<float> >::node_depth() const
Line
Count
Source
7100
225
         {
7101
225
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
225
         }
exprtk::details::binary_ext_node<float, exprtk::details::gte_op<float> >::node_depth() const
Line
Count
Source
7100
4
         {
7101
4
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
4
         }
exprtk::details::binary_ext_node<float, exprtk::details::eq_op<float> >::node_depth() const
Line
Count
Source
7100
2.11k
         {
7101
2.11k
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
2.11k
         }
exprtk::details::binary_ext_node<float, exprtk::details::ne_op<float> >::node_depth() const
Line
Count
Source
7100
22
         {
7101
22
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
22
         }
Unexecuted instantiation: exprtk::details::binary_ext_node<float, exprtk::details::and_op<float> >::node_depth() const
exprtk::details::binary_ext_node<float, exprtk::details::nand_op<float> >::node_depth() const
Line
Count
Source
7100
28
         {
7101
28
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
28
         }
exprtk::details::binary_ext_node<float, exprtk::details::or_op<float> >::node_depth() const
Line
Count
Source
7100
262
         {
7101
262
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
262
         }
exprtk::details::binary_ext_node<float, exprtk::details::nor_op<float> >::node_depth() const
Line
Count
Source
7100
79
         {
7101
79
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
79
         }
exprtk::details::binary_ext_node<float, exprtk::details::xor_op<float> >::node_depth() const
Line
Count
Source
7100
40
         {
7101
40
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
40
         }
exprtk::details::binary_ext_node<float, exprtk::details::xnor_op<float> >::node_depth() const
Line
Count
Source
7100
11
         {
7101
11
            return expression_node<T>::ndb_t::template compute_node_depth<2>(branch_);
7102
11
         }
7103
7104
      protected:
7105
7106
         branch_t branch_[2];
7107
      };
7108
7109
      template <typename T>
7110
      class trinary_node : public expression_node<T>
7111
      {
7112
      public:
7113
7114
         typedef expression_node<T>* expression_ptr;
7115
         typedef std::pair<expression_ptr,bool> branch_t;
7116
7117
         trinary_node(const operator_type& opr,
7118
                      expression_ptr branch0,
7119
                      expression_ptr branch1,
7120
                      expression_ptr branch2)
7121
18
         : operation_(opr)
7122
18
         {
7123
18
            init_branches<3>(branch_, branch0, branch1, branch2);
7124
18
            assert(valid());
7125
18
         }
exprtk::details::trinary_node<double>::trinary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7121
9
         : operation_(opr)
7122
9
         {
7123
9
            init_branches<3>(branch_, branch0, branch1, branch2);
7124
9
            assert(valid());
7125
9
         }
exprtk::details::trinary_node<float>::trinary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7121
9
         : operation_(opr)
7122
9
         {
7123
9
            init_branches<3>(branch_, branch0, branch1, branch2);
7124
9
            assert(valid());
7125
9
         }
7126
7127
         inline T value() const exprtk_override
7128
0
         {
7129
0
            const T arg0 = branch_[0].first->value();
7130
0
            const T arg1 = branch_[1].first->value();
7131
0
            const T arg2 = branch_[2].first->value();
7132
7133
0
            switch (operation_)
7134
0
            {
7135
0
               case e_inrange : return (arg1 < arg0) ? T(0) : ((arg1 > arg2) ? T(0) : T(1));
7136
7137
0
               case e_clamp   : return (arg1 < arg0) ? arg0 : (arg1 > arg2 ? arg2 : arg1);
7138
7139
0
               case e_iclamp  : if ((arg1 <= arg0) || (arg1 >= arg2))
7140
0
                                   return arg1;
7141
0
                                else
7142
0
                                   return ((T(2) * arg1  <= (arg2 + arg0)) ? arg0 : arg2);
7143
7144
0
               default        : exprtk_debug(("trinary_node::value() - Error: Invalid operation\n"));
7145
0
                                return std::numeric_limits<T>::quiet_NaN();
7146
0
            }
7147
0
         }
Unexecuted instantiation: exprtk::details::trinary_node<double>::value() const
Unexecuted instantiation: exprtk::details::trinary_node<float>::value() const
7148
7149
         inline typename expression_node<T>::node_type type() const exprtk_override
7150
540
         {
7151
540
            return expression_node<T>::e_trinary;
7152
540
         }
exprtk::details::trinary_node<double>::type() const
Line
Count
Source
7150
270
         {
7151
270
            return expression_node<T>::e_trinary;
7152
270
         }
exprtk::details::trinary_node<float>::type() const
Line
Count
Source
7150
270
         {
7151
270
            return expression_node<T>::e_trinary;
7152
270
         }
7153
7154
         inline bool valid() const exprtk_override
7155
298
         {
7156
298
            return
7157
298
               branch_[0].first && branch_[0].first->valid() &&
7158
298
               branch_[1].first && branch_[1].first->valid() &&
7159
298
               branch_[2].first && branch_[2].first->valid() ;
7160
298
         }
exprtk::details::trinary_node<double>::valid() const
Line
Count
Source
7155
149
         {
7156
149
            return
7157
149
               branch_[0].first && branch_[0].first->valid() &&
7158
149
               branch_[1].first && branch_[1].first->valid() &&
7159
149
               branch_[2].first && branch_[2].first->valid() ;
7160
149
         }
exprtk::details::trinary_node<float>::valid() const
Line
Count
Source
7155
149
         {
7156
149
            return
7157
149
               branch_[0].first && branch_[0].first->valid() &&
7158
149
               branch_[1].first && branch_[1].first->valid() &&
7159
149
               branch_[2].first && branch_[2].first->valid() ;
7160
149
         }
7161
7162
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7163
18
         {
7164
18
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7165
18
         }
exprtk::details::trinary_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7163
9
         {
7164
9
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7165
9
         }
exprtk::details::trinary_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7163
9
         {
7164
9
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7165
9
         }
7166
7167
         std::size_t node_depth() const exprtk_override exprtk_final
7168
54
         {
7169
54
            return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_);
7170
54
         }
exprtk::details::trinary_node<double>::node_depth() const
Line
Count
Source
7168
27
         {
7169
27
            return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_);
7170
27
         }
exprtk::details::trinary_node<float>::node_depth() const
Line
Count
Source
7168
27
         {
7169
27
            return expression_node<T>::ndb_t::template compute_node_depth<3>(branch_);
7170
27
         }
7171
7172
      protected:
7173
7174
         operator_type operation_;
7175
         branch_t branch_[3];
7176
      };
7177
7178
      template <typename T>
7179
      class quaternary_node : public expression_node<T>
7180
      {
7181
      public:
7182
7183
         typedef expression_node<T>* expression_ptr;
7184
         typedef std::pair<expression_ptr,bool> branch_t;
7185
7186
         quaternary_node(const operator_type& opr,
7187
                         expression_ptr branch0,
7188
                         expression_ptr branch1,
7189
                         expression_ptr branch2,
7190
                         expression_ptr branch3)
7191
0
         : operation_(opr)
7192
0
         {
7193
0
            init_branches<4>(branch_, branch0, branch1, branch2, branch3);
7194
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::quaternary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::quaternary_node<float>::quaternary_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
7195
7196
         inline T value() const exprtk_override
7197
0
         {
7198
0
            return std::numeric_limits<T>::quiet_NaN();
7199
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::value() const
Unexecuted instantiation: exprtk::details::quaternary_node<float>::value() const
7200
7201
         inline typename expression_node<T>::node_type type() const exprtk_override
7202
0
         {
7203
0
            return expression_node<T>::e_quaternary;
7204
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::type() const
Unexecuted instantiation: exprtk::details::quaternary_node<float>::type() const
7205
7206
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7207
0
         {
7208
0
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
7209
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::quaternary_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
7210
7211
         std::size_t node_depth() const exprtk_override exprtk_final
7212
0
         {
7213
0
            return expression_node<T>::ndb_t::template compute_node_depth<4>(branch_);
7214
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::quaternary_node<float>::node_depth() const
7215
7216
         inline bool valid() const exprtk_override
7217
0
         {
7218
0
            return
7219
0
               branch_[0].first && branch_[0].first->valid() &&
7220
0
               branch_[1].first && branch_[1].first->valid() &&
7221
0
               branch_[2].first && branch_[2].first->valid() &&
7222
0
               branch_[3].first && branch_[3].first->valid() ;
7223
0
         }
Unexecuted instantiation: exprtk::details::quaternary_node<double>::valid() const
Unexecuted instantiation: exprtk::details::quaternary_node<float>::valid() const
7224
7225
      protected:
7226
7227
         operator_type operation_;
7228
         branch_t branch_[4];
7229
      };
7230
7231
      template <typename T>
7232
      class conditional_node exprtk_final : public expression_node<T>
7233
      {
7234
      public:
7235
7236
         typedef expression_node<T>* expression_ptr;
7237
         typedef std::pair<expression_ptr,bool> branch_t;
7238
7239
         conditional_node(expression_ptr condition,
7240
                          expression_ptr consequent,
7241
                          expression_ptr alternative)
7242
16
         {
7243
16
            construct_branch_pair(condition_  , condition  );
7244
16
            construct_branch_pair(consequent_ , consequent );
7245
16
            construct_branch_pair(alternative_, alternative);
7246
16
            assert(valid());
7247
16
         }
exprtk::details::conditional_node<double>::conditional_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
7242
8
         {
7243
8
            construct_branch_pair(condition_  , condition  );
7244
8
            construct_branch_pair(consequent_ , consequent );
7245
8
            construct_branch_pair(alternative_, alternative);
7246
8
            assert(valid());
7247
8
         }
exprtk::details::conditional_node<float>::conditional_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
7242
8
         {
7243
8
            construct_branch_pair(condition_  , condition  );
7244
8
            construct_branch_pair(consequent_ , consequent );
7245
8
            construct_branch_pair(alternative_, alternative);
7246
8
            assert(valid());
7247
8
         }
7248
7249
         inline T value() const exprtk_override
7250
10
         {
7251
10
            if (is_true(condition_))
7252
10
               return consequent_.first->value();
7253
0
            else
7254
0
               return alternative_.first->value();
7255
10
         }
exprtk::details::conditional_node<double>::value() const
Line
Count
Source
7250
5
         {
7251
5
            if (is_true(condition_))
7252
5
               return consequent_.first->value();
7253
0
            else
7254
0
               return alternative_.first->value();
7255
5
         }
exprtk::details::conditional_node<float>::value() const
Line
Count
Source
7250
5
         {
7251
5
            if (is_true(condition_))
7252
5
               return consequent_.first->value();
7253
0
            else
7254
0
               return alternative_.first->value();
7255
5
         }
7256
7257
         inline typename expression_node<T>::node_type type() const exprtk_override
7258
64
         {
7259
64
            return expression_node<T>::e_conditional;
7260
64
         }
exprtk::details::conditional_node<double>::type() const
Line
Count
Source
7258
32
         {
7259
32
            return expression_node<T>::e_conditional;
7260
32
         }
exprtk::details::conditional_node<float>::type() const
Line
Count
Source
7258
32
         {
7259
32
            return expression_node<T>::e_conditional;
7260
32
         }
7261
7262
         inline bool valid() const exprtk_override
7263
36
         {
7264
36
            return
7265
36
               condition_  .first && condition_  .first->valid() &&
7266
36
               consequent_ .first && consequent_ .first->valid() &&
7267
36
               alternative_.first && alternative_.first->valid() ;
7268
36
         }
exprtk::details::conditional_node<double>::valid() const
Line
Count
Source
7263
18
         {
7264
18
            return
7265
18
               condition_  .first && condition_  .first->valid() &&
7266
18
               consequent_ .first && consequent_ .first->valid() &&
7267
18
               alternative_.first && alternative_.first->valid() ;
7268
18
         }
exprtk::details::conditional_node<float>::valid() const
Line
Count
Source
7263
18
         {
7264
18
            return
7265
18
               condition_  .first && condition_  .first->valid() &&
7266
18
               consequent_ .first && consequent_ .first->valid() &&
7267
18
               alternative_.first && alternative_.first->valid() ;
7268
18
         }
7269
7270
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7271
16
         {
7272
16
            expression_node<T>::ndb_t::collect(condition_   , node_delete_list);
7273
16
            expression_node<T>::ndb_t::collect(consequent_  , node_delete_list);
7274
16
            expression_node<T>::ndb_t::collect(alternative_ , node_delete_list);
7275
16
         }
exprtk::details::conditional_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7271
8
         {
7272
8
            expression_node<T>::ndb_t::collect(condition_   , node_delete_list);
7273
8
            expression_node<T>::ndb_t::collect(consequent_  , node_delete_list);
7274
8
            expression_node<T>::ndb_t::collect(alternative_ , node_delete_list);
7275
8
         }
exprtk::details::conditional_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
7271
8
         {
7272
8
            expression_node<T>::ndb_t::collect(condition_   , node_delete_list);
7273
8
            expression_node<T>::ndb_t::collect(consequent_  , node_delete_list);
7274
8
            expression_node<T>::ndb_t::collect(alternative_ , node_delete_list);
7275
8
         }
7276
7277
         std::size_t node_depth() const exprtk_override
7278
18
         {
7279
18
            return expression_node<T>::ndb_t::compute_node_depth
7280
18
               (condition_, consequent_, alternative_);
7281
18
         }
exprtk::details::conditional_node<double>::node_depth() const
Line
Count
Source
7278
9
         {
7279
9
            return expression_node<T>::ndb_t::compute_node_depth
7280
9
               (condition_, consequent_, alternative_);
7281
9
         }
exprtk::details::conditional_node<float>::node_depth() const
Line
Count
Source
7278
9
         {
7279
9
            return expression_node<T>::ndb_t::compute_node_depth
7280
9
               (condition_, consequent_, alternative_);
7281
9
         }
7282
7283
      private:
7284
7285
         branch_t condition_;
7286
         branch_t consequent_;
7287
         branch_t alternative_;
7288
      };
7289
7290
      template <typename T>
7291
      class cons_conditional_node exprtk_final : public expression_node<T>
7292
      {
7293
      public:
7294
7295
         // Consequent only conditional statement node
7296
         typedef expression_node<T>* expression_ptr;
7297
         typedef std::pair<expression_ptr,bool> branch_t;
7298
7299
         cons_conditional_node(expression_ptr condition,
7300
                               expression_ptr consequent)
7301
0
         {
7302
0
            construct_branch_pair(condition_ , condition );
7303
0
            construct_branch_pair(consequent_, consequent);
7304
0
            assert(valid());
7305
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::cons_conditional_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::cons_conditional_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
7306
7307
         inline T value() const exprtk_override
7308
0
         {
7309
0
            if (is_true(condition_))
7310
0
               return consequent_.first->value();
7311
0
            else
7312
0
               return std::numeric_limits<T>::quiet_NaN();
7313
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::value() const
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::value() const
7314
7315
         inline typename expression_node<T>::node_type type() const exprtk_override
7316
0
         {
7317
0
            return expression_node<T>::e_conditional;
7318
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::type() const
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::type() const
7319
7320
         inline bool valid() const exprtk_override
7321
0
         {
7322
0
            return
7323
0
               condition_ .first && condition_ .first->valid() &&
7324
0
               consequent_.first && consequent_.first->valid() ;
7325
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::valid() const
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::valid() const
7326
7327
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7328
0
         {
7329
0
            expression_node<T>::ndb_t::collect(condition_  , node_delete_list);
7330
0
            expression_node<T>::ndb_t::collect(consequent_ , node_delete_list);
7331
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
7332
7333
         std::size_t node_depth() const exprtk_override
7334
0
         {
7335
0
            return expression_node<T>::ndb_t::
7336
0
               compute_node_depth(condition_, consequent_);
7337
0
         }
Unexecuted instantiation: exprtk::details::cons_conditional_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::cons_conditional_node<float>::node_depth() const
7338
7339
      private:
7340
7341
         branch_t condition_;
7342
         branch_t consequent_;
7343
      };
7344
7345
      #ifndef exprtk_disable_break_continue
7346
      template <typename T>
7347
      class break_exception
7348
      {
7349
      public:
7350
7351
         explicit break_exception(const T& v)
7352
0
         : value(v)
7353
0
         {}
Unexecuted instantiation: exprtk::details::break_exception<double>::break_exception(double const&)
Unexecuted instantiation: exprtk::details::break_exception<float>::break_exception(float const&)
7354
7355
         T value;
7356
      };
7357
7358
      class continue_exception {};
7359
7360
      template <typename T>
7361
      class break_node exprtk_final : public expression_node<T>
7362
      {
7363
      public:
7364
7365
         typedef expression_node<T>* expression_ptr;
7366
         typedef std::pair<expression_ptr,bool> branch_t;
7367
7368
         explicit break_node(expression_ptr ret = expression_ptr(0))
7369
1
         {
7370
1
            construct_branch_pair(return_, ret);
7371
1
         }
exprtk::details::break_node<double>::break_node(exprtk::details::expression_node<double>*)
Line
Count
Source
7369
1
         {
7370
1
            construct_branch_pair(return_, ret);
7371
1
         }
Unexecuted instantiation: exprtk::details::break_node<float>::break_node(exprtk::details::expression_node<float>*)
7372
7373
         inline T value() const exprtk_override
7374
0
         {
7375
0
            const T result = return_.first ?
7376
0
                             return_.first->value() :
7377
0
                             std::numeric_limits<T>::quiet_NaN();
7378
7379
0
            throw break_exception<T>(result);
7380
7381
0
            #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
7382
0
            return std::numeric_limits<T>::quiet_NaN();
7383
0
            #endif
7384
0
         }
Unexecuted instantiation: exprtk::details::break_node<double>::value() const
Unexecuted instantiation: exprtk::details::break_node<float>::value() const
7385
7386
         inline typename expression_node<T>::node_type type() const exprtk_override
7387
6
         {
7388
6
            return expression_node<T>::e_break;
7389
6
         }
exprtk::details::break_node<double>::type() const
Line
Count
Source
7387
6
         {
7388
6
            return expression_node<T>::e_break;
7389
6
         }
Unexecuted instantiation: exprtk::details::break_node<float>::type() const
7390
7391
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7392
1
         {
7393
1
            expression_node<T>::ndb_t::collect(return_, node_delete_list);
7394
1
         }
exprtk::details::break_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
7392
1
         {
7393
1
            expression_node<T>::ndb_t::collect(return_, node_delete_list);
7394
1
         }
Unexecuted instantiation: exprtk::details::break_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
7395
7396
         std::size_t node_depth() const exprtk_override
7397
1
         {
7398
1
            return expression_node<T>::ndb_t::compute_node_depth(return_);
7399
1
         }
exprtk::details::break_node<double>::node_depth() const
Line
Count
Source
7397
1
         {
7398
1
            return expression_node<T>::ndb_t::compute_node_depth(return_);
7399
1
         }
Unexecuted instantiation: exprtk::details::break_node<float>::node_depth() const
7400
7401
      private:
7402
7403
         branch_t return_;
7404
      };
7405
7406
      template <typename T>
7407
      class continue_node exprtk_final : public expression_node<T>
7408
      {
7409
      public:
7410
7411
         inline T value() const exprtk_override
7412
0
         {
7413
0
            throw continue_exception();
7414
0
            #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
7415
0
            return std::numeric_limits<T>::quiet_NaN();
7416
0
            #endif
7417
0
         }
Unexecuted instantiation: exprtk::details::continue_node<double>::value() const
Unexecuted instantiation: exprtk::details::continue_node<float>::value() const
7418
7419
         inline typename expression_node<T>::node_type type() const exprtk_override
7420
0
         {
7421
0
            return expression_node<T>::e_break;
7422
0
         }
Unexecuted instantiation: exprtk::details::continue_node<double>::type() const
Unexecuted instantiation: exprtk::details::continue_node<float>::type() const
7423
      };
7424
      #endif
7425
7426
      struct loop_runtime_checker
7427
      {
7428
         loop_runtime_checker(loop_runtime_check_ptr loop_runtime_check,
7429
                              loop_runtime_check::loop_types lp_typ = loop_runtime_check::e_invalid)
7430
0
         : iteration_count_(0)
7431
0
         , loop_runtime_check_(loop_runtime_check)
7432
0
         , max_loop_iterations_(loop_runtime_check_->max_loop_iterations)
7433
0
         , loop_type_(lp_typ)
7434
0
         {
7435
0
            assert(loop_runtime_check_);
7436
0
         }
7437
7438
         inline void reset(const _uint64_t initial_value = 0) const
7439
0
         {
7440
0
            iteration_count_ = initial_value;
7441
0
         }
7442
7443
         inline bool check() const
7444
0
         {
7445
0
            assert(loop_runtime_check_);
7446
7447
0
            if (
7448
0
                 (++iteration_count_ <= max_loop_iterations_) &&
7449
0
                 loop_runtime_check_->check()
7450
0
               )
7451
0
            {
7452
0
               return true;
7453
0
            }
7454
7455
0
            loop_runtime_check::violation_context ctxt;
7456
0
            ctxt.loop      = loop_type_;
7457
0
            ctxt.violation = loop_runtime_check::e_iteration_count;
7458
7459
0
            loop_runtime_check_->handle_runtime_violation(ctxt);
7460
7461
0
            return false;
7462
0
         }
7463
7464
         bool valid() const
7465
0
         {
7466
0
            return 0 != loop_runtime_check_;
7467
0
         }
7468
7469
         mutable _uint64_t iteration_count_;
7470
         mutable loop_runtime_check_ptr loop_runtime_check_;
7471
         const details::_uint64_t& max_loop_iterations_;
7472
         loop_runtime_check::loop_types loop_type_;
7473
      };
7474
7475
      template <typename T>
7476
      class while_loop_node : public expression_node<T>
7477
      {
7478
      public:
7479
7480
         typedef expression_node<T>* expression_ptr;
7481
         typedef std::pair<expression_ptr,bool> branch_t;
7482
7483
         while_loop_node(expression_ptr condition,
7484
                         expression_ptr loop_body)
7485
0
         {
7486
0
            construct_branch_pair(condition_, condition);
7487
0
            construct_branch_pair(loop_body_, loop_body);
7488
0
            assert(valid());
7489
0
         }
Unexecuted instantiation: exprtk::details::while_loop_node<double>::while_loop_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::while_loop_node<float>::while_loop_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
7490
7491
         inline T value() const exprtk_override
7492
0
         {
7493
0
            T result = T(0);
7494
7495
0
            while (is_true(condition_))
7496
0
            {
7497
0
               result = loop_body_.first->value();
7498
0
            }
7499
7500
0
            return result;
7501
0
         }
Unexecuted instantiation: exprtk::details::while_loop_node<double>::value() const
Unexecuted instantiation: exprtk::details::while_loop_node<float>::value() const
7502
7503
         inline typename expression_node<T>::node_type type() const exprtk_override
7504
0
         {
7505
0
            return expression_node<T>::e_while;
7506
0
         }
Unexecuted instantiation: exprtk::details::while_loop_node<double>::type() const
Unexecuted instantiation: exprtk::details::while_loop_node<float>::type() const
7507
7508
         inline bool valid() const exprtk_override
7509
0
         {
7510
0
            return
7511
0
               condition_.first && condition_.first->valid() &&
7512
0
               loop_body_.first && loop_body_.first->valid() ;
7513
0
         }
Unexecuted instantiation: exprtk::details::while_loop_node<double>::valid() const
Unexecuted instantiation: exprtk::details::while_loop_node<float>::valid() const
7514
7515
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7516
0
         {
7517
0
            expression_node<T>::ndb_t::collect(condition_ , node_delete_list);
7518
0
            expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list);
7519
0
         }
Unexecuted instantiation: exprtk::details::while_loop_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::while_loop_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
7520
7521
         std::size_t node_depth() const exprtk_override
7522
0
         {
7523
0
            return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_);
7524
0
         }
Unexecuted instantiation: exprtk::details::while_loop_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::while_loop_node<float>::node_depth() const
7525
7526
      protected:
7527
7528
         branch_t condition_;
7529
         branch_t loop_body_;
7530
      };
7531
7532
      template <typename T>
7533
      class while_loop_rtc_node exprtk_final
7534
                                : public while_loop_node<T>
7535
                                , public loop_runtime_checker
7536
      {
7537
      public:
7538
7539
         typedef while_loop_node<T>  parent_t;
7540
         typedef expression_node<T>* expression_ptr;
7541
7542
         while_loop_rtc_node(expression_ptr condition,
7543
                             expression_ptr loop_body,
7544
                             loop_runtime_check_ptr loop_rt_chk)
7545
0
         : parent_t(condition, loop_body)
7546
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop)
7547
0
         {
7548
0
            assert(valid());
7549
0
         }
Unexecuted instantiation: exprtk::details::while_loop_rtc_node<double>::while_loop_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*)
Unexecuted instantiation: exprtk::details::while_loop_rtc_node<float>::while_loop_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*)
7550
7551
         inline T value() const exprtk_override
7552
0
         {
7553
7554
0
            T result = T(0);
7555
7556
0
            loop_runtime_checker::reset();
7557
7558
0
            while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7559
0
            {
7560
0
               result = parent_t::loop_body_.first->value();
7561
0
            }
7562
7563
0
            return result;
7564
0
         }
Unexecuted instantiation: exprtk::details::while_loop_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::while_loop_rtc_node<float>::value() const
7565
7566
         using parent_t::valid;
7567
7568
         bool valid() const exprtk_override exprtk_final
7569
0
         {
7570
0
            return parent_t::valid() &&
7571
0
                   loop_runtime_checker::valid();
7572
0
         }
Unexecuted instantiation: exprtk::details::while_loop_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::while_loop_rtc_node<float>::valid() const
7573
      };
7574
7575
      template <typename T>
7576
      class repeat_until_loop_node : public expression_node<T>
7577
      {
7578
      public:
7579
7580
         typedef expression_node<T>* expression_ptr;
7581
         typedef std::pair<expression_ptr,bool> branch_t;
7582
7583
         repeat_until_loop_node(expression_ptr condition,
7584
                                expression_ptr loop_body)
7585
0
         {
7586
0
            construct_branch_pair(condition_, condition);
7587
0
            construct_branch_pair(loop_body_, loop_body);
7588
0
            assert(valid());
7589
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::repeat_until_loop_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::repeat_until_loop_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
7590
7591
         inline T value() const exprtk_override
7592
0
         {
7593
0
            T result = T(0);
7594
7595
0
            do
7596
0
            {
7597
0
               result = loop_body_.first->value();
7598
0
            }
7599
0
            while (is_false(condition_.first));
7600
7601
0
            return result;
7602
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::value() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::value() const
7603
7604
         inline typename expression_node<T>::node_type type() const exprtk_override
7605
0
         {
7606
0
            return expression_node<T>::e_repeat;
7607
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::type() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::type() const
7608
7609
         inline bool valid() const exprtk_override
7610
0
         {
7611
0
            return
7612
0
               condition_.first && condition_.first->valid() &&
7613
0
               loop_body_.first && loop_body_.first->valid() ;
7614
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::valid() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::valid() const
7615
7616
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7617
0
         {
7618
0
            expression_node<T>::ndb_t::collect(condition_ , node_delete_list);
7619
0
            expression_node<T>::ndb_t::collect(loop_body_ , node_delete_list);
7620
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
7621
7622
         std::size_t node_depth() const exprtk_override
7623
0
         {
7624
0
            return expression_node<T>::ndb_t::compute_node_depth(condition_, loop_body_);
7625
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_node<float>::node_depth() const
7626
7627
      protected:
7628
7629
         branch_t condition_;
7630
         branch_t loop_body_;
7631
      };
7632
7633
      template <typename T>
7634
      class repeat_until_loop_rtc_node exprtk_final
7635
                                       : public repeat_until_loop_node<T>
7636
                                       , public loop_runtime_checker
7637
      {
7638
      public:
7639
7640
         typedef repeat_until_loop_node<T> parent_t;
7641
         typedef expression_node<T>*       expression_ptr;
7642
7643
         repeat_until_loop_rtc_node(expression_ptr condition,
7644
                                    expression_ptr loop_body,
7645
                                    loop_runtime_check_ptr loop_rt_chk)
7646
0
         : parent_t(condition, loop_body)
7647
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_repeat_until_loop)
7648
0
         {
7649
0
            assert(valid());
7650
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<double>::repeat_until_loop_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*)
Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<float>::repeat_until_loop_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*)
7651
7652
         inline T value() const exprtk_override
7653
0
         {
7654
0
            T result = T(0);
7655
7656
0
            loop_runtime_checker::reset(1);
7657
7658
0
            do
7659
0
            {
7660
0
               result = parent_t::loop_body_.first->value();
7661
0
            }
7662
0
            while (is_false(parent_t::condition_.first) && loop_runtime_checker::check());
7663
7664
0
            return result;
7665
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<float>::value() const
7666
7667
         using parent_t::valid;
7668
7669
         inline bool valid() const exprtk_override exprtk_final
7670
0
         {
7671
0
            return parent_t::valid() &&
7672
0
                   loop_runtime_checker::valid();
7673
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_rtc_node<float>::valid() const
7674
      };
7675
7676
      template <typename T>
7677
      class for_loop_node : public expression_node<T>
7678
      {
7679
      public:
7680
7681
         typedef expression_node<T>* expression_ptr;
7682
         typedef std::pair<expression_ptr,bool> branch_t;
7683
7684
         for_loop_node(expression_ptr initialiser,
7685
                       expression_ptr condition,
7686
                       expression_ptr incrementor,
7687
                       expression_ptr loop_body)
7688
0
         {
7689
0
            construct_branch_pair(initialiser_, initialiser);
7690
0
            construct_branch_pair(condition_  , condition  );
7691
0
            construct_branch_pair(incrementor_, incrementor);
7692
0
            construct_branch_pair(loop_body_  , loop_body  );
7693
0
            assert(valid());
7694
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::for_loop_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::for_loop_node<float>::for_loop_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
7695
7696
         inline T value() const exprtk_override
7697
0
         {
7698
0
            T result = T(0);
7699
7700
0
            if (initialiser_.first)
7701
0
               initialiser_.first->value();
7702
7703
0
            if (incrementor_.first)
7704
0
            {
7705
0
               while (is_true(condition_))
7706
0
               {
7707
0
                  result = loop_body_.first->value();
7708
0
                  incrementor_.first->value();
7709
0
               }
7710
0
            }
7711
0
            else
7712
0
            {
7713
0
               while (is_true(condition_))
7714
0
               {
7715
0
                  result = loop_body_.first->value();
7716
0
               }
7717
0
            }
7718
7719
0
            return result;
7720
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::value() const
Unexecuted instantiation: exprtk::details::for_loop_node<float>::value() const
7721
7722
         inline typename expression_node<T>::node_type type() const exprtk_override
7723
0
         {
7724
0
            return expression_node<T>::e_for;
7725
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::type() const
Unexecuted instantiation: exprtk::details::for_loop_node<float>::type() const
7726
7727
         inline bool valid() const exprtk_override
7728
0
         {
7729
0
            return condition_.first && loop_body_.first;
7730
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::valid() const
Unexecuted instantiation: exprtk::details::for_loop_node<float>::valid() const
7731
7732
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
7733
0
         {
7734
0
            expression_node<T>::ndb_t::collect(initialiser_ , node_delete_list);
7735
0
            expression_node<T>::ndb_t::collect(condition_   , node_delete_list);
7736
0
            expression_node<T>::ndb_t::collect(incrementor_ , node_delete_list);
7737
0
            expression_node<T>::ndb_t::collect(loop_body_   , node_delete_list);
7738
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::for_loop_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
7739
7740
         std::size_t node_depth() const exprtk_override
7741
0
         {
7742
0
            return expression_node<T>::ndb_t::compute_node_depth
7743
0
               (initialiser_, condition_, incrementor_, loop_body_);
7744
0
         }
Unexecuted instantiation: exprtk::details::for_loop_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::for_loop_node<float>::node_depth() const
7745
7746
      protected:
7747
7748
         branch_t initialiser_;
7749
         branch_t condition_  ;
7750
         branch_t incrementor_;
7751
         branch_t loop_body_  ;
7752
      };
7753
7754
      template <typename T>
7755
      class for_loop_rtc_node exprtk_final
7756
                              : public for_loop_node<T>
7757
                              , public loop_runtime_checker
7758
      {
7759
      public:
7760
7761
         typedef for_loop_node<T>    parent_t;
7762
         typedef expression_node<T>* expression_ptr;
7763
7764
         for_loop_rtc_node(expression_ptr initialiser,
7765
                           expression_ptr condition,
7766
                           expression_ptr incrementor,
7767
                           expression_ptr loop_body,
7768
                           loop_runtime_check_ptr loop_rt_chk)
7769
0
         : parent_t(initialiser, condition, incrementor, loop_body)
7770
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_for_loop)
7771
0
         {
7772
0
            assert(valid());
7773
0
         }
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::for_loop_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*)
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::for_loop_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*)
7774
7775
         inline T value() const exprtk_override
7776
0
         {
7777
0
            T result = T(0);
7778
7779
0
            loop_runtime_checker::reset();
7780
7781
0
            if (parent_t::initialiser_.first)
7782
0
               parent_t::initialiser_.first->value();
7783
7784
0
            if (parent_t::incrementor_.first)
7785
0
            {
7786
0
               while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7787
0
               {
7788
0
                  result = parent_t::loop_body_.first->value();
7789
0
                  parent_t::incrementor_.first->value();
7790
0
               }
7791
0
            }
7792
0
            else
7793
0
            {
7794
0
               while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7795
0
               {
7796
0
                  result = parent_t::loop_body_.first->value();
7797
0
               }
7798
0
            }
7799
7800
0
            return result;
7801
0
         }
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::value() const
7802
7803
         using parent_t::valid;
7804
7805
         inline bool valid() const exprtk_override exprtk_final
7806
0
         {
7807
0
            return parent_t::valid() &&
7808
0
                   loop_runtime_checker::valid();
7809
0
         }
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::for_loop_rtc_node<float>::valid() const
7810
      };
7811
7812
      #ifndef exprtk_disable_break_continue
7813
      template <typename T>
7814
      class while_loop_bc_node : public while_loop_node<T>
7815
      {
7816
      public:
7817
7818
         typedef while_loop_node<T>  parent_t;
7819
         typedef expression_node<T>* expression_ptr;
7820
7821
         while_loop_bc_node(expression_ptr condition,
7822
                            expression_ptr loop_body)
7823
0
         : parent_t(condition, loop_body)
7824
0
         {
7825
0
            assert(parent_t::valid());
7826
0
         }
Unexecuted instantiation: exprtk::details::while_loop_bc_node<double>::while_loop_bc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::while_loop_bc_node<float>::while_loop_bc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
7827
7828
         inline T value() const exprtk_override
7829
0
         {
7830
0
            T result = T(0);
7831
7832
0
            while (is_true(parent_t::condition_))
7833
0
            {
7834
0
               try
7835
0
               {
7836
0
                  result = parent_t::loop_body_.first->value();
7837
0
               }
7838
0
               catch(const break_exception<T>& e)
7839
0
               {
7840
0
                  return e.value;
7841
0
               }
7842
0
               catch(const continue_exception&)
7843
0
               {}
7844
0
            }
7845
7846
0
            return result;
7847
0
         }
Unexecuted instantiation: exprtk::details::while_loop_bc_node<double>::value() const
Unexecuted instantiation: exprtk::details::while_loop_bc_node<float>::value() const
7848
      };
7849
7850
      template <typename T>
7851
      class while_loop_bc_rtc_node exprtk_final
7852
                                   : public while_loop_bc_node<T>
7853
                                   , public loop_runtime_checker
7854
      {
7855
      public:
7856
7857
         typedef while_loop_bc_node<T> parent_t;
7858
         typedef expression_node<T>*   expression_ptr;
7859
7860
         while_loop_bc_rtc_node(expression_ptr condition,
7861
                                expression_ptr loop_body,
7862
                                loop_runtime_check_ptr loop_rt_chk)
7863
0
         : parent_t(condition, loop_body)
7864
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_while_loop)
7865
0
         {
7866
0
            assert(valid());
7867
0
         }
Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<double>::while_loop_bc_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*)
Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<float>::while_loop_bc_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*)
7868
7869
         inline T value() const exprtk_override
7870
0
         {
7871
0
            T result = T(0);
7872
7873
0
            loop_runtime_checker::reset();
7874
7875
0
            while (is_true(parent_t::condition_) && loop_runtime_checker::check())
7876
0
            {
7877
0
               try
7878
0
               {
7879
0
                  result = parent_t::loop_body_.first->value();
7880
0
               }
7881
0
               catch(const break_exception<T>& e)
7882
0
               {
7883
0
                  return e.value;
7884
0
               }
7885
0
               catch(const continue_exception&)
7886
0
               {}
7887
0
            }
7888
7889
0
            return result;
7890
0
         }
Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<float>::value() const
7891
7892
         using parent_t::valid;
7893
7894
         inline bool valid() const exprtk_override exprtk_final
7895
0
         {
7896
0
            return parent_t::valid() &&
7897
0
                   loop_runtime_checker::valid();
7898
0
         }
Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::while_loop_bc_rtc_node<float>::valid() const
7899
      };
7900
7901
      template <typename T>
7902
      class repeat_until_loop_bc_node : public repeat_until_loop_node<T>
7903
      {
7904
      public:
7905
7906
         typedef repeat_until_loop_node<T> parent_t;
7907
         typedef expression_node<T>*       expression_ptr;
7908
7909
         repeat_until_loop_bc_node(expression_ptr condition,
7910
                                   expression_ptr loop_body)
7911
0
         : parent_t(condition, loop_body)
7912
0
         {
7913
0
            assert(parent_t::valid());
7914
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_node<double>::repeat_until_loop_bc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_node<float>::repeat_until_loop_bc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
7915
7916
         inline T value() const exprtk_override
7917
0
         {
7918
0
            T result = T(0);
7919
7920
0
            do
7921
0
            {
7922
0
               try
7923
0
               {
7924
0
                  result = parent_t::loop_body_.first->value();
7925
0
               }
7926
0
               catch(const break_exception<T>& e)
7927
0
               {
7928
0
                  return e.value;
7929
0
               }
7930
0
               catch(const continue_exception&)
7931
0
               {}
7932
0
            }
7933
0
            while (is_false(parent_t::condition_.first));
7934
7935
0
            return result;
7936
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_node<double>::value() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_node<float>::value() const
7937
      };
7938
7939
      template <typename T>
7940
      class repeat_until_loop_bc_rtc_node exprtk_final
7941
                                          : public repeat_until_loop_bc_node<T>
7942
                                          , public loop_runtime_checker
7943
      {
7944
      public:
7945
7946
         typedef repeat_until_loop_bc_node<T> parent_t;
7947
         typedef expression_node<T>*          expression_ptr;
7948
7949
         repeat_until_loop_bc_rtc_node(expression_ptr condition,
7950
                                       expression_ptr loop_body,
7951
                                       loop_runtime_check_ptr loop_rt_chk)
7952
0
         : parent_t(condition, loop_body)
7953
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_repeat_until_loop)
7954
0
         {
7955
0
            assert(valid());
7956
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<double>::repeat_until_loop_bc_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*)
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<float>::repeat_until_loop_bc_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*)
7957
7958
         inline T value() const exprtk_override
7959
0
         {
7960
0
            T result = T(0);
7961
7962
0
            loop_runtime_checker::reset();
7963
7964
0
            do
7965
0
            {
7966
0
               try
7967
0
               {
7968
0
                  result = parent_t::loop_body_.first->value();
7969
0
               }
7970
0
               catch(const break_exception<T>& e)
7971
0
               {
7972
0
                  return e.value;
7973
0
               }
7974
0
               catch(const continue_exception&)
7975
0
               {}
7976
0
            }
7977
0
            while (is_false(parent_t::condition_.first) && loop_runtime_checker::check());
7978
7979
0
            return result;
7980
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<float>::value() const
7981
7982
         using parent_t::valid;
7983
7984
         inline bool valid() const exprtk_override exprtk_final
7985
0
         {
7986
0
            return parent_t::valid() &&
7987
0
                   loop_runtime_checker::valid();
7988
0
         }
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::repeat_until_loop_bc_rtc_node<float>::valid() const
7989
      };
7990
7991
      template <typename T>
7992
      class for_loop_bc_node : public for_loop_node<T>
7993
      {
7994
      public:
7995
7996
         typedef for_loop_node<T>    parent_t;
7997
         typedef expression_node<T>* expression_ptr;
7998
7999
         for_loop_bc_node(expression_ptr initialiser,
8000
                          expression_ptr condition,
8001
                          expression_ptr incrementor,
8002
                          expression_ptr loop_body)
8003
0
         : parent_t(initialiser, condition, incrementor, loop_body)
8004
0
         {
8005
0
            assert(parent_t::valid());
8006
0
         }
Unexecuted instantiation: exprtk::details::for_loop_bc_node<double>::for_loop_bc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::for_loop_bc_node<float>::for_loop_bc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
8007
8008
         inline T value() const exprtk_override
8009
0
         {
8010
0
            T result = T(0);
8011
8012
0
            if (parent_t::initialiser_.first)
8013
0
               parent_t::initialiser_.first->value();
8014
8015
0
            if (parent_t::incrementor_.first)
8016
0
            {
8017
0
               while (is_true(parent_t::condition_))
8018
0
               {
8019
0
                  try
8020
0
                  {
8021
0
                     result = parent_t::loop_body_.first->value();
8022
0
                  }
8023
0
                  catch(const break_exception<T>& e)
8024
0
                  {
8025
0
                     return e.value;
8026
0
                  }
8027
0
                  catch(const continue_exception&)
8028
0
                  {}
8029
8030
0
                  parent_t::incrementor_.first->value();
8031
0
               }
8032
0
            }
8033
0
            else
8034
0
            {
8035
0
               while (is_true(parent_t::condition_))
8036
0
               {
8037
0
                  try
8038
0
                  {
8039
0
                     result = parent_t::loop_body_.first->value();
8040
0
                  }
8041
0
                  catch(const break_exception<T>& e)
8042
0
                  {
8043
0
                     return e.value;
8044
0
                  }
8045
0
                  catch(const continue_exception&)
8046
0
                  {}
8047
0
               }
8048
0
            }
8049
8050
0
            return result;
8051
0
         }
Unexecuted instantiation: exprtk::details::for_loop_bc_node<double>::value() const
Unexecuted instantiation: exprtk::details::for_loop_bc_node<float>::value() const
8052
      };
8053
8054
      template <typename T>
8055
      class for_loop_bc_rtc_node exprtk_final
8056
                                 : public for_loop_bc_node<T>
8057
                                 , public loop_runtime_checker
8058
      {
8059
      public:
8060
8061
         typedef for_loop_bc_node<T> parent_t;
8062
         typedef expression_node<T>* expression_ptr;
8063
8064
         for_loop_bc_rtc_node(expression_ptr initialiser,
8065
                              expression_ptr condition,
8066
                              expression_ptr incrementor,
8067
                              expression_ptr loop_body,
8068
                              loop_runtime_check_ptr loop_rt_chk)
8069
0
         : parent_t(initialiser, condition, incrementor, loop_body)
8070
0
         , loop_runtime_checker(loop_rt_chk, loop_runtime_check::e_for_loop)
8071
0
         {
8072
0
            assert(valid());
8073
0
         }
Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<double>::for_loop_bc_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::loop_runtime_check*)
Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<float>::for_loop_bc_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::loop_runtime_check*)
8074
8075
         inline T value() const exprtk_override
8076
0
         {
8077
0
            T result = T(0);
8078
8079
0
            loop_runtime_checker::reset();
8080
8081
0
            if (parent_t::initialiser_.first)
8082
0
               parent_t::initialiser_.first->value();
8083
8084
0
            if (parent_t::incrementor_.first)
8085
0
            {
8086
0
               while (is_true(parent_t::condition_) && loop_runtime_checker::check())
8087
0
               {
8088
0
                  try
8089
0
                  {
8090
0
                     result = parent_t::loop_body_.first->value();
8091
0
                  }
8092
0
                  catch(const break_exception<T>& e)
8093
0
                  {
8094
0
                     return e.value;
8095
0
                  }
8096
0
                  catch(const continue_exception&)
8097
0
                  {}
8098
8099
0
                  parent_t::incrementor_.first->value();
8100
0
               }
8101
0
            }
8102
0
            else
8103
0
            {
8104
0
               while (is_true(parent_t::condition_) && loop_runtime_checker::check())
8105
0
               {
8106
0
                  try
8107
0
                  {
8108
0
                     result = parent_t::loop_body_.first->value();
8109
0
                  }
8110
0
                  catch(const break_exception<T>& e)
8111
0
                  {
8112
0
                     return e.value;
8113
0
                  }
8114
0
                  catch(const continue_exception&)
8115
0
                  {}
8116
0
               }
8117
0
            }
8118
8119
0
            return result;
8120
0
         }
Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<float>::value() const
8121
8122
         using parent_t::valid;
8123
8124
         inline bool valid() const exprtk_override exprtk_final
8125
0
         {
8126
0
            return parent_t::valid() &&
8127
0
                   loop_runtime_checker::valid();
8128
0
         }
Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::for_loop_bc_rtc_node<float>::valid() const
8129
      };
8130
      #endif
8131
8132
      template <typename T>
8133
      class switch_node : public expression_node<T>
8134
      {
8135
      public:
8136
8137
         typedef expression_node<T>* expression_ptr;
8138
         typedef std::pair<expression_ptr,bool> branch_t;
8139
8140
         template <typename Allocator,
8141
                   template <typename, typename> class Sequence>
8142
         explicit switch_node(const Sequence<expression_ptr,Allocator>& arg_list)
8143
0
         {
8144
0
            if (1 != (arg_list.size() & 1))
8145
0
               return;
8146
8147
0
            arg_list_.resize(arg_list.size());
8148
8149
0
            for (std::size_t i = 0; i < arg_list.size(); ++i)
8150
0
            {
8151
0
               if (arg_list[i] && arg_list[i]->valid())
8152
0
               {
8153
0
                  construct_branch_pair(arg_list_[i], arg_list[i]);
8154
0
               }
8155
0
               else
8156
0
               {
8157
0
                  arg_list_.clear();
8158
0
                  return;
8159
0
               }
8160
0
            }
8161
8162
0
            assert(valid());
8163
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::switch_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::switch_node<float>::switch_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
8164
8165
         inline T value() const exprtk_override
8166
0
         {
8167
0
            const std::size_t upper_bound = (arg_list_.size() - 1);
8168
8169
0
            for (std::size_t i = 0; i < upper_bound; i += 2)
8170
0
            {
8171
0
               expression_ptr condition  = arg_list_[i    ].first;
8172
0
               expression_ptr consequent = arg_list_[i + 1].first;
8173
8174
0
               if (is_true(condition))
8175
0
               {
8176
0
                  return consequent->value();
8177
0
               }
8178
0
            }
8179
8180
0
            return arg_list_[upper_bound].first->value();
8181
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::value() const
Unexecuted instantiation: exprtk::details::switch_node<float>::value() const
8182
8183
         inline typename expression_node<T>::node_type type() const exprtk_override exprtk_final
8184
0
         {
8185
0
            return expression_node<T>::e_switch;
8186
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::type() const
Unexecuted instantiation: exprtk::details::switch_node<float>::type() const
8187
8188
         inline bool valid() const exprtk_override
8189
0
         {
8190
0
            return !arg_list_.empty();
8191
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::valid() const
Unexecuted instantiation: exprtk::details::switch_node<float>::valid() const
8192
8193
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8194
0
         {
8195
0
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
8196
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::switch_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
8197
8198
         std::size_t node_depth() const exprtk_override exprtk_final
8199
0
         {
8200
0
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
8201
0
         }
Unexecuted instantiation: exprtk::details::switch_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::switch_node<float>::node_depth() const
8202
8203
      protected:
8204
8205
         std::vector<branch_t> arg_list_;
8206
      };
8207
8208
      template <typename T, typename Switch_N>
8209
      class switch_n_node exprtk_final : public switch_node<T>
8210
      {
8211
      public:
8212
8213
         typedef expression_node<T>* expression_ptr;
8214
8215
         template <typename Allocator,
8216
                   template <typename, typename> class Sequence>
8217
         explicit switch_n_node(const Sequence<expression_ptr,Allocator>& arg_list)
8218
0
         : switch_node<T>(arg_list)
8219
0
         {}
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_1>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_2>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_3>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_4>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_5>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_6>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_7>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_1>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_2>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_3>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_4>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_5>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_6>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_7>::switch_n_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
8220
8221
         inline T value() const exprtk_override
8222
0
         {
8223
0
            return Switch_N::process(switch_node<T>::arg_list_);
8224
0
         }
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_1>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_2>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_3>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_4>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_5>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_6>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<double, exprtk::parser<double>::expression_generator<double>::switch_nodes::switch_impl_7>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_1>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_2>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_3>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_4>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_5>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_6>::value() const
Unexecuted instantiation: exprtk::details::switch_n_node<float, exprtk::parser<float>::expression_generator<float>::switch_nodes::switch_impl_7>::value() const
8225
      };
8226
8227
      template <typename T>
8228
      class multi_switch_node exprtk_final : public expression_node<T>
8229
      {
8230
      public:
8231
8232
         typedef expression_node<T>* expression_ptr;
8233
         typedef std::pair<expression_ptr,bool> branch_t;
8234
8235
         template <typename Allocator,
8236
                   template <typename, typename> class Sequence>
8237
         explicit multi_switch_node(const Sequence<expression_ptr,Allocator>& arg_list)
8238
0
         {
8239
0
            if (0 != (arg_list.size() & 1))
8240
0
               return;
8241
8242
0
            arg_list_.resize(arg_list.size());
8243
8244
0
            for (std::size_t i = 0; i < arg_list.size(); ++i)
8245
0
            {
8246
0
               if (arg_list[i] && arg_list[i]->valid())
8247
0
               {
8248
0
                  construct_branch_pair(arg_list_[i], arg_list[i]);
8249
0
               }
8250
0
               else
8251
0
               {
8252
0
                  arg_list_.clear();
8253
0
                  return;
8254
0
               }
8255
0
            }
8256
8257
0
            assert(valid());
8258
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::multi_switch_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::multi_switch_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
8259
8260
         inline T value() const exprtk_override
8261
0
         {
8262
0
            const std::size_t upper_bound = (arg_list_.size() - 1);
8263
8264
0
            T result = T(0);
8265
8266
0
            for (std::size_t i = 0; i < upper_bound; i += 2)
8267
0
            {
8268
0
               expression_ptr condition  = arg_list_[i    ].first;
8269
0
               expression_ptr consequent = arg_list_[i + 1].first;
8270
8271
0
               if (is_true(condition))
8272
0
               {
8273
0
                  result = consequent->value();
8274
0
               }
8275
0
            }
8276
8277
0
            return result;
8278
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::value() const
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::value() const
8279
8280
         inline typename expression_node<T>::node_type type() const exprtk_override
8281
0
         {
8282
0
            return expression_node<T>::e_mswitch;
8283
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::type() const
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::type() const
8284
8285
         inline bool valid() const exprtk_override
8286
0
         {
8287
0
            return !arg_list_.empty() && (0 == (arg_list_.size() % 2));
8288
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::valid() const
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::valid() const
8289
8290
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8291
0
         {
8292
0
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
8293
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
8294
8295
         std::size_t node_depth() const exprtk_override exprtk_final
8296
0
         {
8297
0
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
8298
0
         }
Unexecuted instantiation: exprtk::details::multi_switch_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::multi_switch_node<float>::node_depth() const
8299
8300
      private:
8301
8302
         std::vector<branch_t> arg_list_;
8303
      };
8304
8305
      template <typename T>
8306
      class ivariable
8307
      {
8308
      public:
8309
8310
         virtual ~ivariable()
8311
70.8k
         {}
exprtk::details::ivariable<double>::~ivariable()
Line
Count
Source
8311
35.4k
         {}
exprtk::details::ivariable<float>::~ivariable()
Line
Count
Source
8311
35.4k
         {}
8312
8313
         virtual T& ref() = 0;
8314
         virtual const T& ref() const = 0;
8315
      };
8316
8317
      template <typename T>
8318
      class variable_node exprtk_final
8319
                          : public expression_node<T>
8320
                          , public ivariable      <T>
8321
      {
8322
      public:
8323
8324
         static T null_value;
8325
8326
         explicit variable_node()
8327
         : value_(&null_value)
8328
         {}
8329
8330
         explicit variable_node(T& v)
8331
70.8k
         : value_(&v)
8332
70.8k
         {}
exprtk::details::variable_node<double>::variable_node(double&)
Line
Count
Source
8331
35.4k
         : value_(&v)
8332
35.4k
         {}
exprtk::details::variable_node<float>::variable_node(float&)
Line
Count
Source
8331
35.4k
         : value_(&v)
8332
35.4k
         {}
8333
8334
         inline bool operator <(const variable_node<T>& v) const
8335
         {
8336
            return this < (&v);
8337
         }
8338
8339
         inline T value() const exprtk_override
8340
331
         {
8341
331
            return (*value_);
8342
331
         }
exprtk::details::variable_node<double>::value() const
Line
Count
Source
8340
165
         {
8341
165
            return (*value_);
8342
165
         }
exprtk::details::variable_node<float>::value() const
Line
Count
Source
8340
166
         {
8341
166
            return (*value_);
8342
166
         }
8343
8344
         inline T& ref() exprtk_override
8345
131k
         {
8346
131k
            return (*value_);
8347
131k
         }
exprtk::details::variable_node<double>::ref()
Line
Count
Source
8345
115k
         {
8346
115k
            return (*value_);
8347
115k
         }
exprtk::details::variable_node<float>::ref()
Line
Count
Source
8345
16.7k
         {
8346
16.7k
            return (*value_);
8347
16.7k
         }
8348
8349
         inline const T& ref() const exprtk_override
8350
334
         {
8351
334
            return (*value_);
8352
334
         }
exprtk::details::variable_node<double>::ref() const
Line
Count
Source
8350
167
         {
8351
167
            return (*value_);
8352
167
         }
exprtk::details::variable_node<float>::ref() const
Line
Count
Source
8350
167
         {
8351
167
            return (*value_);
8352
167
         }
8353
8354
         inline typename expression_node<T>::node_type type() const exprtk_override
8355
2.01M
         {
8356
2.01M
            return expression_node<T>::e_variable;
8357
2.01M
         }
exprtk::details::variable_node<double>::type() const
Line
Count
Source
8355
1.76M
         {
8356
1.76M
            return expression_node<T>::e_variable;
8357
1.76M
         }
exprtk::details::variable_node<float>::type() const
Line
Count
Source
8355
258k
         {
8356
258k
            return expression_node<T>::e_variable;
8357
258k
         }
8358
8359
      private:
8360
8361
         T* value_;
8362
      };
8363
8364
      template <typename T>
8365
      T variable_node<T>::null_value = T(std::numeric_limits<T>::quiet_NaN());
8366
8367
      template <typename T>
8368
      struct range_pack
8369
      {
8370
         typedef expression_node<T>*           expression_node_ptr;
8371
         typedef std::pair<std::size_t,std::size_t> cached_range_t;
8372
8373
         range_pack()
8374
780
         : n0_e (std::make_pair(false,expression_node_ptr(0)))
8375
780
         , n1_e (std::make_pair(false,expression_node_ptr(0)))
8376
780
         , n0_c (std::make_pair(false,0))
8377
780
         , n1_c (std::make_pair(false,0))
8378
780
         , cache(std::make_pair(0,0))
8379
780
         {}
exprtk::details::range_pack<double>::range_pack()
Line
Count
Source
8374
390
         : n0_e (std::make_pair(false,expression_node_ptr(0)))
8375
390
         , n1_e (std::make_pair(false,expression_node_ptr(0)))
8376
390
         , n0_c (std::make_pair(false,0))
8377
390
         , n1_c (std::make_pair(false,0))
8378
390
         , cache(std::make_pair(0,0))
8379
390
         {}
exprtk::details::range_pack<float>::range_pack()
Line
Count
Source
8374
390
         : n0_e (std::make_pair(false,expression_node_ptr(0)))
8375
390
         , n1_e (std::make_pair(false,expression_node_ptr(0)))
8376
390
         , n0_c (std::make_pair(false,0))
8377
390
         , n1_c (std::make_pair(false,0))
8378
390
         , cache(std::make_pair(0,0))
8379
390
         {}
8380
8381
         void clear()
8382
78
         {
8383
78
            n0_e  = std::make_pair(false,expression_node_ptr(0));
8384
78
            n1_e  = std::make_pair(false,expression_node_ptr(0));
8385
78
            n0_c  = std::make_pair(false,0);
8386
78
            n1_c  = std::make_pair(false,0);
8387
78
            cache = std::make_pair(0,0);
8388
78
         }
exprtk::details::range_pack<double>::clear()
Line
Count
Source
8382
39
         {
8383
39
            n0_e  = std::make_pair(false,expression_node_ptr(0));
8384
39
            n1_e  = std::make_pair(false,expression_node_ptr(0));
8385
39
            n0_c  = std::make_pair(false,0);
8386
39
            n1_c  = std::make_pair(false,0);
8387
39
            cache = std::make_pair(0,0);
8388
39
         }
exprtk::details::range_pack<float>::clear()
Line
Count
Source
8382
39
         {
8383
39
            n0_e  = std::make_pair(false,expression_node_ptr(0));
8384
39
            n1_e  = std::make_pair(false,expression_node_ptr(0));
8385
39
            n0_c  = std::make_pair(false,0);
8386
39
            n1_c  = std::make_pair(false,0);
8387
39
            cache = std::make_pair(0,0);
8388
39
         }
8389
8390
         void free()
8391
56
         {
8392
56
            if (n0_e.first && n0_e.second)
8393
24
            {
8394
24
               n0_e.first = false;
8395
8396
24
               if (
8397
24
                    !is_variable_node(n0_e.second) &&
8398
24
                    !is_string_node  (n0_e.second)
8399
24
                  )
8400
12
               {
8401
12
                  destroy_node(n0_e.second);
8402
12
               }
8403
24
            }
8404
8405
56
            if (n1_e.first && n1_e.second)
8406
10
            {
8407
10
               n1_e.first = false;
8408
8409
10
               if (
8410
10
                    !is_variable_node(n1_e.second) &&
8411
10
                    !is_string_node  (n1_e.second)
8412
10
                  )
8413
4
               {
8414
4
                  destroy_node(n1_e.second);
8415
4
               }
8416
10
            }
8417
56
         }
exprtk::details::range_pack<double>::free()
Line
Count
Source
8391
28
         {
8392
28
            if (n0_e.first && n0_e.second)
8393
12
            {
8394
12
               n0_e.first = false;
8395
8396
12
               if (
8397
12
                    !is_variable_node(n0_e.second) &&
8398
12
                    !is_string_node  (n0_e.second)
8399
12
                  )
8400
6
               {
8401
6
                  destroy_node(n0_e.second);
8402
6
               }
8403
12
            }
8404
8405
28
            if (n1_e.first && n1_e.second)
8406
5
            {
8407
5
               n1_e.first = false;
8408
8409
5
               if (
8410
5
                    !is_variable_node(n1_e.second) &&
8411
5
                    !is_string_node  (n1_e.second)
8412
5
                  )
8413
2
               {
8414
2
                  destroy_node(n1_e.second);
8415
2
               }
8416
5
            }
8417
28
         }
exprtk::details::range_pack<float>::free()
Line
Count
Source
8391
28
         {
8392
28
            if (n0_e.first && n0_e.second)
8393
12
            {
8394
12
               n0_e.first = false;
8395
8396
12
               if (
8397
12
                    !is_variable_node(n0_e.second) &&
8398
12
                    !is_string_node  (n0_e.second)
8399
12
                  )
8400
6
               {
8401
6
                  destroy_node(n0_e.second);
8402
6
               }
8403
12
            }
8404
8405
28
            if (n1_e.first && n1_e.second)
8406
5
            {
8407
5
               n1_e.first = false;
8408
8409
5
               if (
8410
5
                    !is_variable_node(n1_e.second) &&
8411
5
                    !is_string_node  (n1_e.second)
8412
5
                  )
8413
2
               {
8414
2
                  destroy_node(n1_e.second);
8415
2
               }
8416
5
            }
8417
28
         }
8418
8419
         bool const_range() const
8420
42
         {
8421
42
           return ( n0_c.first &&  n1_c.first) &&
8422
42
                  (!n0_e.first && !n1_e.first);
8423
42
         }
exprtk::details::range_pack<double>::const_range() const
Line
Count
Source
8420
21
         {
8421
21
           return ( n0_c.first &&  n1_c.first) &&
8422
21
                  (!n0_e.first && !n1_e.first);
8423
21
         }
exprtk::details::range_pack<float>::const_range() const
Line
Count
Source
8420
21
         {
8421
21
           return ( n0_c.first &&  n1_c.first) &&
8422
21
                  (!n0_e.first && !n1_e.first);
8423
21
         }
8424
8425
         bool var_range() const
8426
         {
8427
           return ( n0_e.first &&  n1_e.first) &&
8428
                  (!n0_c.first && !n1_c.first);
8429
         }
8430
8431
         bool operator() (std::size_t& r0, std::size_t& r1,
8432
                          const std::size_t& size = std::numeric_limits<std::size_t>::max()) const
8433
38
         {
8434
38
            if (n0_c.first)
8435
30
               r0 = n0_c.second;
8436
8
            else if (n0_e.first)
8437
8
            {
8438
8
               r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value()));
8439
8
            }
8440
0
            else
8441
0
               return false;
8442
8443
38
            if (n1_c.first)
8444
34
               r1 = n1_c.second;
8445
4
            else if (n1_e.first)
8446
4
            {
8447
4
               r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value()));
8448
4
            }
8449
0
            else
8450
0
               return false;
8451
8452
38
            if (
8453
38
                 (std::numeric_limits<std::size_t>::max() != size) &&
8454
38
                 (std::numeric_limits<std::size_t>::max() == r1  )
8455
38
               )
8456
2
            {
8457
2
               r1 = size;
8458
2
            }
8459
8460
38
            cache.first  = r0;
8461
38
            cache.second = r1;
8462
8463
            #ifndef exprtk_enable_range_runtime_checks
8464
            return (r0 <= r1);
8465
            #else
8466
38
            return range_runtime_check(r0, r1, size);
8467
38
            #endif
8468
38
         }
exprtk::details::range_pack<double>::operator()(unsigned long&, unsigned long&, unsigned long const&) const
Line
Count
Source
8433
19
         {
8434
19
            if (n0_c.first)
8435
15
               r0 = n0_c.second;
8436
4
            else if (n0_e.first)
8437
4
            {
8438
4
               r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value()));
8439
4
            }
8440
0
            else
8441
0
               return false;
8442
8443
19
            if (n1_c.first)
8444
17
               r1 = n1_c.second;
8445
2
            else if (n1_e.first)
8446
2
            {
8447
2
               r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value()));
8448
2
            }
8449
0
            else
8450
0
               return false;
8451
8452
19
            if (
8453
19
                 (std::numeric_limits<std::size_t>::max() != size) &&
8454
19
                 (std::numeric_limits<std::size_t>::max() == r1  )
8455
19
               )
8456
1
            {
8457
1
               r1 = size;
8458
1
            }
8459
8460
19
            cache.first  = r0;
8461
19
            cache.second = r1;
8462
8463
            #ifndef exprtk_enable_range_runtime_checks
8464
            return (r0 <= r1);
8465
            #else
8466
19
            return range_runtime_check(r0, r1, size);
8467
19
            #endif
8468
19
         }
exprtk::details::range_pack<float>::operator()(unsigned long&, unsigned long&, unsigned long const&) const
Line
Count
Source
8433
19
         {
8434
19
            if (n0_c.first)
8435
15
               r0 = n0_c.second;
8436
4
            else if (n0_e.first)
8437
4
            {
8438
4
               r0 = static_cast<std::size_t>(details::numeric::to_int64(n0_e.second->value()));
8439
4
            }
8440
0
            else
8441
0
               return false;
8442
8443
19
            if (n1_c.first)
8444
17
               r1 = n1_c.second;
8445
2
            else if (n1_e.first)
8446
2
            {
8447
2
               r1 = static_cast<std::size_t>(details::numeric::to_int64(n1_e.second->value()));
8448
2
            }
8449
0
            else
8450
0
               return false;
8451
8452
19
            if (
8453
19
                 (std::numeric_limits<std::size_t>::max() != size) &&
8454
19
                 (std::numeric_limits<std::size_t>::max() == r1  )
8455
19
               )
8456
1
            {
8457
1
               r1 = size;
8458
1
            }
8459
8460
19
            cache.first  = r0;
8461
19
            cache.second = r1;
8462
8463
            #ifndef exprtk_enable_range_runtime_checks
8464
            return (r0 <= r1);
8465
            #else
8466
19
            return range_runtime_check(r0, r1, size);
8467
19
            #endif
8468
19
         }
8469
8470
         inline std::size_t const_size() const
8471
0
         {
8472
0
            return (n1_c.second - n0_c.second);
8473
0
         }
Unexecuted instantiation: exprtk::details::range_pack<double>::const_size() const
Unexecuted instantiation: exprtk::details::range_pack<float>::const_size() const
8474
8475
         inline std::size_t cache_size() const
8476
12
         {
8477
12
            return (cache.second - cache.first);
8478
12
         }
exprtk::details::range_pack<double>::cache_size() const
Line
Count
Source
8476
6
         {
8477
6
            return (cache.second - cache.first);
8478
6
         }
exprtk::details::range_pack<float>::cache_size() const
Line
Count
Source
8476
6
         {
8477
6
            return (cache.second - cache.first);
8478
6
         }
8479
8480
         std::pair<bool,expression_node_ptr> n0_e;
8481
         std::pair<bool,expression_node_ptr> n1_e;
8482
         std::pair<bool,std::size_t        > n0_c;
8483
         std::pair<bool,std::size_t        > n1_c;
8484
         mutable cached_range_t             cache;
8485
8486
         #ifdef exprtk_enable_range_runtime_checks
8487
         bool range_runtime_check(const std::size_t r0,
8488
                                  const std::size_t r1,
8489
                                  const std::size_t size) const
8490
38
         {
8491
38
            if (r0 > size)
8492
4
            {
8493
4
               throw std::runtime_error("range error: (r0 < 0) || (r0 > size)");
8494
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8495
0
               return false;
8496
4
               #endif
8497
4
            }
8498
8499
34
            if (r1 > size)
8500
0
            {
8501
0
               throw std::runtime_error("range error: (r1 < 0) || (r1 > size)");
8502
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8503
0
               return false;
8504
0
               #endif
8505
0
            }
8506
8507
34
            return (r0 <= r1);
8508
34
         }
exprtk::details::range_pack<double>::range_runtime_check(unsigned long, unsigned long, unsigned long) const
Line
Count
Source
8490
19
         {
8491
19
            if (r0 > size)
8492
2
            {
8493
2
               throw std::runtime_error("range error: (r0 < 0) || (r0 > size)");
8494
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8495
0
               return false;
8496
2
               #endif
8497
2
            }
8498
8499
17
            if (r1 > size)
8500
0
            {
8501
0
               throw std::runtime_error("range error: (r1 < 0) || (r1 > size)");
8502
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8503
0
               return false;
8504
0
               #endif
8505
0
            }
8506
8507
17
            return (r0 <= r1);
8508
17
         }
exprtk::details::range_pack<float>::range_runtime_check(unsigned long, unsigned long, unsigned long) const
Line
Count
Source
8490
19
         {
8491
19
            if (r0 > size)
8492
2
            {
8493
2
               throw std::runtime_error("range error: (r0 < 0) || (r0 > size)");
8494
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8495
0
               return false;
8496
2
               #endif
8497
2
            }
8498
8499
17
            if (r1 > size)
8500
0
            {
8501
0
               throw std::runtime_error("range error: (r1 < 0) || (r1 > size)");
8502
0
               #if !defined(_MSC_VER) && !defined(__NVCOMPILER)
8503
0
               return false;
8504
0
               #endif
8505
0
            }
8506
8507
17
            return (r0 <= r1);
8508
17
         }
8509
         #endif
8510
      };
8511
8512
      template <typename T>
8513
      class string_base_node;
8514
8515
      template <typename T>
8516
      struct range_data_type
8517
      {
8518
         typedef range_pack<T> range_t;
8519
         typedef string_base_node<T>* strbase_ptr_t;
8520
8521
         range_data_type()
8522
0
         : range(0)
8523
0
         , data (0)
8524
0
         , size (0)
8525
0
         , type_size(0)
8526
0
         , str_node (0)
8527
0
         {}
Unexecuted instantiation: exprtk::details::range_data_type<double>::range_data_type()
Unexecuted instantiation: exprtk::details::range_data_type<float>::range_data_type()
8528
8529
         range_t*      range;
8530
         void*         data;
8531
         std::size_t   size;
8532
         std::size_t   type_size;
8533
         strbase_ptr_t str_node;
8534
      };
8535
8536
      template <typename T> class vector_node;
8537
8538
      template <typename T>
8539
      class vector_interface
8540
      {
8541
      public:
8542
8543
         typedef vector_node<T>*   vector_node_ptr;
8544
         typedef vec_data_store<T> vds_t;
8545
8546
         virtual ~vector_interface()
8547
0
         {}
Unexecuted instantiation: exprtk::details::vector_interface<double>::~vector_interface()
Unexecuted instantiation: exprtk::details::vector_interface<float>::~vector_interface()
8548
8549
         virtual std::size_t size     () const = 0;
8550
8551
         virtual std::size_t base_size() const = 0;
8552
8553
         virtual vector_node_ptr vec  () const = 0;
8554
8555
         virtual vector_node_ptr vec  ()       = 0;
8556
8557
         virtual       vds_t& vds     ()       = 0;
8558
8559
         virtual const vds_t& vds     () const = 0;
8560
8561
0
         virtual bool side_effect     () const { return false; }
Unexecuted instantiation: exprtk::details::vector_interface<double>::side_effect() const
Unexecuted instantiation: exprtk::details::vector_interface<float>::side_effect() const
8562
      };
8563
8564
      template <typename T>
8565
      class vector_node exprtk_final
8566
                        : public expression_node <T>
8567
                        , public vector_interface<T>
8568
      {
8569
      public:
8570
8571
         typedef expression_node<T>* expression_ptr;
8572
         typedef vector_holder<T>    vector_holder_t;
8573
         typedef vector_node<T>*     vector_node_ptr;
8574
         typedef vec_data_store<T>   vds_t;
8575
8576
         explicit vector_node(vector_holder_t* vh)
8577
0
         : vector_holder_(vh)
8578
0
         , vds_((*vector_holder_).size(),(*vector_holder_)[0])
8579
0
         {
8580
0
            vector_holder_->set_ref(&vds_.ref());
8581
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vector_node(exprtk::details::vector_holder<double>*)
Unexecuted instantiation: exprtk::details::vector_node<float>::vector_node(exprtk::details::vector_holder<float>*)
8582
8583
         vector_node(const vds_t& vds, vector_holder_t* vh)
8584
0
         : vector_holder_(vh)
8585
0
         , vds_(vds)
8586
0
         {}
Unexecuted instantiation: exprtk::details::vector_node<double>::vector_node(exprtk::details::vec_data_store<double> const&, exprtk::details::vector_holder<double>*)
Unexecuted instantiation: exprtk::details::vector_node<float>::vector_node(exprtk::details::vec_data_store<float> const&, exprtk::details::vector_holder<float>*)
8587
8588
        ~vector_node() exprtk_override
8589
0
         {
8590
0
            assert(valid());
8591
0
            vector_holder_->remove_ref(&vds_.ref());
8592
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::~vector_node()
Unexecuted instantiation: exprtk::details::vector_node<float>::~vector_node()
8593
8594
         inline T value() const exprtk_override
8595
0
         {
8596
0
            return vds().data()[0];
8597
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_node<float>::value() const
8598
8599
         vector_node_ptr vec() const exprtk_override
8600
0
         {
8601
0
            return const_cast<vector_node_ptr>(this);
8602
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vec() const
Unexecuted instantiation: exprtk::details::vector_node<float>::vec() const
8603
8604
         vector_node_ptr vec() exprtk_override
8605
0
         {
8606
0
            return this;
8607
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vec()
Unexecuted instantiation: exprtk::details::vector_node<float>::vec()
8608
8609
         inline typename expression_node<T>::node_type type() const exprtk_override
8610
0
         {
8611
0
            return expression_node<T>::e_vector;
8612
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_node<float>::type() const
8613
8614
         inline bool valid() const exprtk_override
8615
0
         {
8616
0
            return vector_holder_;
8617
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_node<float>::valid() const
8618
8619
         std::size_t size() const exprtk_override
8620
0
         {
8621
0
            return vec_holder().size();
8622
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::size() const
Unexecuted instantiation: exprtk::details::vector_node<float>::size() const
8623
8624
         std::size_t base_size() const exprtk_override
8625
0
         {
8626
0
            return vec_holder().base_size();
8627
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::base_size() const
Unexecuted instantiation: exprtk::details::vector_node<float>::base_size() const
8628
8629
         vds_t& vds() exprtk_override
8630
0
         {
8631
0
            return vds_;
8632
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vds()
Unexecuted instantiation: exprtk::details::vector_node<float>::vds()
8633
8634
         const vds_t& vds() const exprtk_override
8635
0
         {
8636
0
            return vds_;
8637
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vds() const
Unexecuted instantiation: exprtk::details::vector_node<float>::vds() const
8638
8639
         inline vector_holder_t& vec_holder()
8640
0
         {
8641
0
            return (*vector_holder_);
8642
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vec_holder()
Unexecuted instantiation: exprtk::details::vector_node<float>::vec_holder()
8643
8644
         inline vector_holder_t& vec_holder() const
8645
0
         {
8646
0
            return (*vector_holder_);
8647
0
         }
Unexecuted instantiation: exprtk::details::vector_node<double>::vec_holder() const
Unexecuted instantiation: exprtk::details::vector_node<float>::vec_holder() const
8648
8649
      private:
8650
8651
         vector_holder_t* vector_holder_;
8652
         vds_t                      vds_;
8653
      };
8654
8655
      template <typename T>
8656
      class vector_size_node exprtk_final
8657
                        : public expression_node <T>
8658
      {
8659
      public:
8660
8661
         typedef expression_node<T>* expression_ptr;
8662
         typedef vector_holder<T>    vector_holder_t;
8663
8664
         explicit vector_size_node(vector_holder_t* vh)
8665
0
         : vector_holder_(vh)
8666
0
         {}
Unexecuted instantiation: exprtk::details::vector_size_node<double>::vector_size_node(exprtk::details::vector_holder<double>*)
Unexecuted instantiation: exprtk::details::vector_size_node<float>::vector_size_node(exprtk::details::vector_holder<float>*)
8667
8668
        ~vector_size_node() exprtk_override
8669
0
         {
8670
0
            assert(valid());
8671
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::~vector_size_node()
Unexecuted instantiation: exprtk::details::vector_size_node<float>::~vector_size_node()
8672
8673
         inline T value() const exprtk_override
8674
0
         {
8675
0
            assert(vector_holder_);
8676
0
            return static_cast<T>(vector_holder_->size());
8677
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_size_node<float>::value() const
8678
8679
         inline typename expression_node<T>::node_type type() const exprtk_override
8680
0
         {
8681
0
            return expression_node<T>::e_vecsize;
8682
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_size_node<float>::type() const
8683
8684
         inline bool valid() const exprtk_override
8685
0
         {
8686
0
            return vector_holder_ && vector_holder_->size();
8687
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_size_node<float>::valid() const
8688
8689
         inline vector_holder_t* vec_holder()
8690
0
         {
8691
0
            return vector_holder_;
8692
0
         }
Unexecuted instantiation: exprtk::details::vector_size_node<double>::vec_holder()
Unexecuted instantiation: exprtk::details::vector_size_node<float>::vec_holder()
8693
8694
      private:
8695
8696
         vector_holder_t* vector_holder_;
8697
      };
8698
8699
      template <typename T>
8700
      class vector_elem_node exprtk_final
8701
                             : public expression_node<T>
8702
                             , public ivariable      <T>
8703
      {
8704
      public:
8705
8706
         typedef expression_node<T>*            expression_ptr;
8707
         typedef vector_holder<T>               vector_holder_t;
8708
         typedef vector_holder_t*               vector_holder_ptr;
8709
         typedef std::pair<expression_ptr,bool> branch_t;
8710
8711
         vector_elem_node(expression_ptr vec_node,
8712
                          expression_ptr index,
8713
                          vector_holder_ptr vec_holder)
8714
0
         : vector_holder_(vec_holder)
8715
0
         , vector_base_((*vec_holder)[0])
8716
0
         {
8717
0
            construct_branch_pair(vector_node_, vec_node);
8718
0
            construct_branch_pair(index_      , index   );
8719
0
            assert(valid());
8720
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::vector_elem_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::vector_holder<double>*)
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::vector_elem_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::vector_holder<float>*)
8721
8722
         inline T value() const exprtk_override
8723
0
         {
8724
0
            return *access_vector();
8725
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::value() const
8726
8727
         inline T& ref() exprtk_override
8728
0
         {
8729
0
            return *access_vector();
8730
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::ref()
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::ref()
8731
8732
         inline const T& ref() const exprtk_override
8733
0
         {
8734
0
            return *access_vector();
8735
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::ref() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::ref() const
8736
8737
         inline typename expression_node<T>::node_type type() const exprtk_override
8738
0
         {
8739
0
            return expression_node<T>::e_vecelem;
8740
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::type() const
8741
8742
         inline bool valid() const exprtk_override
8743
0
         {
8744
0
            return
8745
0
               vector_holder_        &&
8746
0
               index_.first          &&
8747
0
               vector_node_.first    &&
8748
0
               index_.first->valid() &&
8749
0
               vector_node_.first->valid();
8750
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::valid() const
8751
8752
         inline vector_holder_t& vec_holder()
8753
0
         {
8754
0
            return (*vector_holder_);
8755
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::vec_holder()
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::vec_holder()
8756
8757
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8758
0
         {
8759
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
8760
0
            expression_node<T>::ndb_t::collect(index_      , node_delete_list);
8761
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
8762
8763
         std::size_t node_depth() const exprtk_override
8764
0
         {
8765
0
            return expression_node<T>::ndb_t::compute_node_depth
8766
0
               (vector_node_, index_);
8767
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::node_depth() const
8768
8769
      private:
8770
8771
         inline T* access_vector() const
8772
0
         {
8773
0
            vector_node_.first->value();
8774
0
            return (vector_base_ + details::numeric::to_uint64(index_.first->value()));
8775
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::vector_elem_node<float>::access_vector() const
8776
8777
         vector_holder_ptr vector_holder_;
8778
         T* vector_base_;
8779
         branch_t vector_node_;
8780
         branch_t index_;
8781
      };
8782
8783
      template <typename T>
8784
      class vector_celem_node exprtk_final
8785
                              : public expression_node<T>
8786
                              , public ivariable      <T>
8787
      {
8788
      public:
8789
8790
         typedef expression_node<T>*            expression_ptr;
8791
         typedef vector_holder<T>               vector_holder_t;
8792
         typedef vector_holder_t*               vector_holder_ptr;
8793
         typedef std::pair<expression_ptr,bool> branch_t;
8794
8795
         vector_celem_node(expression_ptr vec_node,
8796
                           const std::size_t index,
8797
                           vector_holder_ptr vec_holder)
8798
0
         : index_(index)
8799
0
         , vector_holder_(vec_holder)
8800
0
         , vector_base_((*vec_holder)[0])
8801
0
         {
8802
0
            construct_branch_pair(vector_node_, vec_node);
8803
0
            assert(valid());
8804
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::vector_celem_node(exprtk::details::expression_node<double>*, unsigned long, exprtk::details::vector_holder<double>*)
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::vector_celem_node(exprtk::details::expression_node<float>*, unsigned long, exprtk::details::vector_holder<float>*)
8805
8806
         inline T value() const exprtk_override
8807
0
         {
8808
0
            return *access_vector();
8809
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::value() const
8810
8811
         inline T& ref() exprtk_override
8812
0
         {
8813
0
            return *access_vector();
8814
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::ref()
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::ref()
8815
8816
         inline const T& ref() const exprtk_override
8817
0
         {
8818
0
            return *access_vector();
8819
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::ref() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::ref() const
8820
8821
         inline typename expression_node<T>::node_type type() const exprtk_override
8822
0
         {
8823
0
            return expression_node<T>::e_veccelem;
8824
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::type() const
8825
8826
         inline bool valid() const exprtk_override
8827
0
         {
8828
0
            return
8829
0
               vector_holder_     &&
8830
0
               vector_node_.first &&
8831
0
               vector_node_.first->valid();
8832
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::valid() const
8833
8834
         inline vector_holder_t& vec_holder()
8835
         {
8836
            return (*vector_holder_);
8837
         }
8838
8839
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8840
0
         {
8841
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
8842
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
8843
8844
         std::size_t node_depth() const exprtk_override
8845
0
         {
8846
0
            return expression_node<T>::ndb_t::compute_node_depth(vector_node_);
8847
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::node_depth() const
8848
8849
      private:
8850
8851
         inline T* access_vector() const
8852
0
         {
8853
0
            vector_node_.first->value();
8854
0
            return (vector_base_ + index_);
8855
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::vector_celem_node<float>::access_vector() const
8856
8857
         const std::size_t index_;
8858
         vector_holder_ptr vector_holder_;
8859
         T* vector_base_;
8860
         branch_t vector_node_;
8861
      };
8862
8863
      template <typename T>
8864
      class vector_elem_rtc_node exprtk_final
8865
                                 : public expression_node<T>
8866
                                 , public ivariable      <T>
8867
      {
8868
      public:
8869
8870
         typedef expression_node<T>*            expression_ptr;
8871
         typedef vector_holder<T>               vector_holder_t;
8872
         typedef vector_holder_t*               vector_holder_ptr;
8873
         typedef std::pair<expression_ptr,bool> branch_t;
8874
8875
         vector_elem_rtc_node(expression_ptr vec_node,
8876
                              expression_ptr index,
8877
                              vector_holder_ptr vec_holder,
8878
                              vector_access_runtime_check_ptr vec_rt_chk)
8879
0
         : vector_holder_(vec_holder)
8880
0
         , vector_base_((*vec_holder)[0])
8881
0
         , vec_rt_chk_(vec_rt_chk)
8882
0
         , max_vector_index_(vector_holder_->size() - 1)
8883
0
         {
8884
0
            construct_branch_pair(vector_node_, vec_node);
8885
0
            construct_branch_pair(index_      , index   );
8886
0
            assert(valid());
8887
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::vector_elem_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::vector_holder<double>*, exprtk::vector_access_runtime_check*)
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::vector_elem_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::vector_holder<float>*, exprtk::vector_access_runtime_check*)
8888
8889
         inline T value() const exprtk_override
8890
0
         {
8891
0
            return *access_vector();
8892
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::value() const
8893
8894
         inline T& ref() exprtk_override
8895
0
         {
8896
0
            return *access_vector();
8897
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::ref()
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::ref()
8898
8899
         inline const T& ref() const exprtk_override
8900
0
         {
8901
0
            return *access_vector();
8902
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::ref() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::ref() const
8903
8904
         inline typename expression_node<T>::node_type type() const exprtk_override
8905
0
         {
8906
0
            return expression_node<T>::e_vecelemrtc;
8907
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::type() const
8908
8909
         inline bool valid() const exprtk_override
8910
0
         {
8911
0
            return
8912
0
               vector_holder_        &&
8913
0
               index_.first          &&
8914
0
               vector_node_.first    &&
8915
0
               index_.first->valid() &&
8916
0
               vector_node_.first->valid();
8917
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::valid() const
8918
8919
         inline vector_holder_t& vec_holder()
8920
         {
8921
            return (*vector_holder_);
8922
         }
8923
8924
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
8925
0
         {
8926
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
8927
0
            expression_node<T>::ndb_t::collect(index_,       node_delete_list);
8928
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
8929
8930
         std::size_t node_depth() const exprtk_override
8931
0
         {
8932
0
            return expression_node<T>::ndb_t::compute_node_depth
8933
0
               (vector_node_, index_);
8934
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::node_depth() const
8935
8936
      private:
8937
8938
         inline T* access_vector() const
8939
0
         {
8940
0
            const _uint64_t index = details::numeric::to_uint64(index_.first->value());
8941
0
            vector_node_.first->value();
8942
8943
0
            if (index <= max_vector_index_)
8944
0
            {
8945
0
               return (vector_holder_->data() + index);
8946
0
            }
8947
8948
0
            assert(vec_rt_chk_);
8949
8950
0
            vector_access_runtime_check::violation_context context;
8951
0
            context.base_ptr   = reinterpret_cast<void*>(vector_base_);
8952
0
            context.end_ptr    = reinterpret_cast<void*>(vector_base_ + vector_holder_->size());
8953
0
            context.access_ptr = reinterpret_cast<void*>(vector_base_ + index);
8954
0
            context.type_size  = sizeof(T);
8955
8956
0
            return vec_rt_chk_->handle_runtime_violation(context) ?
8957
0
               reinterpret_cast<T*>(context.access_ptr) :
8958
0
               vector_base_ ;
8959
0
         }
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::vector_elem_rtc_node<float>::access_vector() const
8960
8961
         vector_holder_ptr vector_holder_;
8962
         T*                vector_base_;
8963
         branch_t          vector_node_;
8964
         branch_t          index_;
8965
         vector_access_runtime_check_ptr vec_rt_chk_;
8966
         const std::size_t max_vector_index_;
8967
      };
8968
8969
      template <typename T>
8970
      class vector_celem_rtc_node exprtk_final
8971
                                 : public expression_node<T>
8972
                                 , public ivariable      <T>
8973
      {
8974
      public:
8975
8976
         typedef expression_node<T>*            expression_ptr;
8977
         typedef vector_holder<T>               vector_holder_t;
8978
         typedef vector_holder_t*               vector_holder_ptr;
8979
         typedef std::pair<expression_ptr,bool> branch_t;
8980
8981
         vector_celem_rtc_node(expression_ptr vec_node,
8982
                               const std::size_t index,
8983
                               vector_holder_ptr vec_holder,
8984
                               vector_access_runtime_check_ptr vec_rt_chk)
8985
0
         : index_(index)
8986
0
         , max_vector_index_(vec_holder->size() - 1)
8987
0
         , vector_holder_(vec_holder)
8988
0
         , vector_base_((*vec_holder)[0])
8989
0
         , vec_rt_chk_(vec_rt_chk)
8990
0
         {
8991
0
            construct_branch_pair(vector_node_, vec_node);
8992
0
            assert(valid());
8993
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::vector_celem_rtc_node(exprtk::details::expression_node<double>*, unsigned long, exprtk::details::vector_holder<double>*, exprtk::vector_access_runtime_check*)
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::vector_celem_rtc_node(exprtk::details::expression_node<float>*, unsigned long, exprtk::details::vector_holder<float>*, exprtk::vector_access_runtime_check*)
8994
8995
         inline T value() const exprtk_override
8996
0
         {
8997
0
            return *access_vector();
8998
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::value() const
8999
9000
         inline T& ref() exprtk_override
9001
0
         {
9002
0
            return *access_vector();
9003
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::ref()
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::ref()
9004
9005
         inline const T& ref() const exprtk_override
9006
0
         {
9007
0
            return *access_vector();
9008
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::ref() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::ref() const
9009
9010
         inline typename expression_node<T>::node_type type() const exprtk_override
9011
0
         {
9012
0
            return expression_node<T>::e_veccelemrtc;
9013
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::type() const
9014
9015
         inline bool valid() const exprtk_override
9016
0
         {
9017
0
            return
9018
0
               vector_holder_     &&
9019
0
               vector_node_.first &&
9020
0
               vector_node_.first->valid();
9021
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::valid() const
9022
9023
         inline vector_holder_t& vec_holder()
9024
         {
9025
            return (*vector_holder_);
9026
         }
9027
9028
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9029
0
         {
9030
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9031
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9032
9033
         std::size_t node_depth() const exprtk_override
9034
0
         {
9035
0
            return expression_node<T>::ndb_t::compute_node_depth(vector_node_);
9036
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::node_depth() const
9037
9038
      private:
9039
9040
         inline T* access_vector() const
9041
0
         {
9042
0
            vector_node_.first->value();
9043
9044
0
            if (index_ <= max_vector_index_)
9045
0
            {
9046
0
               return (vector_holder_->data() + index_);
9047
0
            }
9048
9049
0
            assert(vec_rt_chk_);
9050
9051
0
            vector_access_runtime_check::violation_context context;
9052
0
            context.base_ptr   = reinterpret_cast<void*>(vector_base_);
9053
0
            context.end_ptr    = reinterpret_cast<void*>(vector_base_ + vector_holder_->size());
9054
0
            context.access_ptr = reinterpret_cast<void*>(vector_base_ + index_);
9055
0
            context.type_size  = sizeof(T);
9056
9057
0
            return vec_rt_chk_->handle_runtime_violation(context) ?
9058
0
               reinterpret_cast<T*>(context.access_ptr) :
9059
0
               vector_base_ ;
9060
0
         }
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::vector_celem_rtc_node<float>::access_vector() const
9061
9062
         const std::size_t index_;
9063
         const std::size_t max_vector_index_;
9064
         vector_holder_ptr vector_holder_;
9065
         T*                vector_base_;
9066
         branch_t          vector_node_;
9067
         vector_access_runtime_check_ptr vec_rt_chk_;
9068
      };
9069
9070
      template <typename T>
9071
      class rebasevector_elem_node exprtk_final
9072
                                   : public expression_node<T>
9073
                                   , public ivariable      <T>
9074
      {
9075
      public:
9076
9077
         typedef expression_node<T>*            expression_ptr;
9078
         typedef vector_holder<T>               vector_holder_t;
9079
         typedef vector_holder_t*               vector_holder_ptr;
9080
         typedef vec_data_store<T>              vds_t;
9081
         typedef std::pair<expression_ptr,bool> branch_t;
9082
9083
         rebasevector_elem_node(expression_ptr vec_node,
9084
                                expression_ptr index,
9085
                                vector_holder_ptr vec_holder)
9086
0
         : vector_holder_(vec_holder)
9087
0
         {
9088
0
            construct_branch_pair(vector_node_, vec_node);
9089
0
            construct_branch_pair(index_      , index   );
9090
0
            assert(valid());
9091
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::rebasevector_elem_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::vector_holder<double>*)
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::rebasevector_elem_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::vector_holder<float>*)
9092
9093
         inline T value() const exprtk_override
9094
0
         {
9095
0
            return *access_vector();
9096
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::value() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::value() const
9097
9098
         inline T& ref() exprtk_override
9099
0
         {
9100
0
            return *access_vector();
9101
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::ref()
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::ref()
9102
9103
         inline const T& ref() const exprtk_override
9104
0
         {
9105
0
            return *access_vector();
9106
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::ref() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::ref() const
9107
9108
         inline typename expression_node<T>::node_type type() const exprtk_override
9109
0
         {
9110
0
            return expression_node<T>::e_rbvecelem;
9111
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::type() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::type() const
9112
9113
         inline bool valid() const exprtk_override
9114
0
         {
9115
0
            return
9116
0
               vector_holder_        &&
9117
0
               index_.first          &&
9118
0
               vector_node_.first    &&
9119
0
               index_.first->valid() &&
9120
0
               vector_node_.first->valid();
9121
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::valid() const
9122
9123
         inline vector_holder_t& vec_holder()
9124
         {
9125
            return (*vector_holder_);
9126
         }
9127
9128
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9129
0
         {
9130
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9131
0
            expression_node<T>::ndb_t::collect(index_,       node_delete_list);
9132
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9133
9134
         std::size_t node_depth() const exprtk_override
9135
0
         {
9136
0
            return expression_node<T>::ndb_t::compute_node_depth
9137
0
               (vector_node_, index_);
9138
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::node_depth() const
9139
9140
      private:
9141
9142
         inline T* access_vector() const
9143
0
         {
9144
0
            vector_node_.first->value();
9145
0
            return (vector_holder_->data() + details::numeric::to_uint64(index_.first->value()));
9146
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_node<float>::access_vector() const
9147
9148
         vector_holder_ptr vector_holder_;
9149
         branch_t          vector_node_;
9150
         branch_t          index_;
9151
      };
9152
9153
      template <typename T>
9154
      class rebasevector_celem_node exprtk_final
9155
                                    : public expression_node<T>
9156
                                    , public ivariable      <T>
9157
      {
9158
      public:
9159
9160
         typedef expression_node<T>* expression_ptr;
9161
         typedef vector_holder<T>    vector_holder_t;
9162
         typedef vector_holder_t*    vector_holder_ptr;
9163
         typedef std::pair<expression_ptr,bool> branch_t;
9164
9165
         rebasevector_celem_node(expression_ptr vec_node,
9166
                                 const std::size_t index,
9167
                                 vector_holder_ptr vec_holder)
9168
0
         : index_(index)
9169
0
         , vector_holder_(vec_holder)
9170
0
         {
9171
0
            construct_branch_pair(vector_node_, vec_node);
9172
0
            assert(valid());
9173
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::rebasevector_celem_node(exprtk::details::expression_node<double>*, unsigned long, exprtk::details::vector_holder<double>*)
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::rebasevector_celem_node(exprtk::details::expression_node<float>*, unsigned long, exprtk::details::vector_holder<float>*)
9174
9175
         inline T value() const exprtk_override
9176
0
         {
9177
0
            vector_node_.first->value();
9178
0
            return ref();
9179
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::value() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::value() const
9180
9181
         inline T& ref() exprtk_override
9182
0
         {
9183
0
            return *(vector_holder_->data() + index_);
9184
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::ref()
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::ref()
9185
9186
         inline const T& ref() const exprtk_override
9187
0
         {
9188
0
            return *(vector_holder_->data() + index_);
9189
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::ref() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::ref() const
9190
9191
         inline typename expression_node<T>::node_type type() const exprtk_override
9192
0
         {
9193
0
            return expression_node<T>::e_rbveccelem;
9194
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::type() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::type() const
9195
9196
         inline bool valid() const exprtk_override
9197
0
         {
9198
0
            return
9199
0
               vector_holder_     &&
9200
0
               vector_node_.first &&
9201
0
               vector_node_.first->valid();
9202
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::valid() const
9203
9204
         inline vector_holder_t& vec_holder()
9205
         {
9206
            return (*vector_holder_);
9207
         }
9208
9209
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9210
0
         {
9211
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9212
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9213
9214
         std::size_t node_depth() const exprtk_override
9215
0
         {
9216
0
            return expression_node<T>::ndb_t::compute_node_depth(vector_node_);
9217
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_node<float>::node_depth() const
9218
9219
      private:
9220
9221
         const std::size_t index_;
9222
         vector_holder_ptr vector_holder_;
9223
         branch_t          vector_node_;
9224
      };
9225
9226
      template <typename T>
9227
      class rebasevector_elem_rtc_node exprtk_final
9228
                                       : public expression_node<T>
9229
                                       , public ivariable      <T>
9230
      {
9231
      public:
9232
9233
         typedef expression_node<T>*            expression_ptr;
9234
         typedef vector_holder<T>               vector_holder_t;
9235
         typedef vector_holder_t*               vector_holder_ptr;
9236
         typedef std::pair<expression_ptr,bool> branch_t;
9237
9238
         rebasevector_elem_rtc_node(expression_ptr vec_node,
9239
                                    expression_ptr index,
9240
                                    vector_holder_ptr vec_holder,
9241
                                    vector_access_runtime_check_ptr vec_rt_chk)
9242
0
         : vector_holder_(vec_holder)
9243
0
         , vec_rt_chk_(vec_rt_chk)
9244
0
         {
9245
0
            construct_branch_pair(vector_node_, vec_node);
9246
0
            construct_branch_pair(index_      , index   );
9247
0
            assert(valid());
9248
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::rebasevector_elem_rtc_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::vector_holder<double>*, exprtk::vector_access_runtime_check*)
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::rebasevector_elem_rtc_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::vector_holder<float>*, exprtk::vector_access_runtime_check*)
9249
9250
         inline T value() const exprtk_override
9251
0
         {
9252
0
            return *access_vector();
9253
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::value() const
9254
9255
         inline T& ref() exprtk_override
9256
0
         {
9257
0
            return *access_vector();
9258
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::ref()
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::ref()
9259
9260
         inline const T& ref() const exprtk_override
9261
0
         {
9262
0
            return *access_vector();
9263
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::ref() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::ref() const
9264
9265
         inline typename expression_node<T>::node_type type() const exprtk_override
9266
0
         {
9267
0
            return expression_node<T>::e_rbvecelemrtc;
9268
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::type() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::type() const
9269
9270
         inline bool valid() const exprtk_override
9271
0
         {
9272
0
            return
9273
0
               vector_holder_        &&
9274
0
               index_.first          &&
9275
0
               vector_node_.first    &&
9276
0
               index_.first->valid() &&
9277
0
               vector_node_.first->valid();
9278
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::valid() const
9279
9280
         inline vector_holder_t& vec_holder()
9281
         {
9282
            return (*vector_holder_);
9283
         }
9284
9285
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9286
0
         {
9287
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9288
0
            expression_node<T>::ndb_t::collect(index_      , node_delete_list);
9289
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9290
9291
         std::size_t node_depth() const exprtk_override
9292
0
         {
9293
0
            return expression_node<T>::ndb_t::compute_node_depth
9294
0
               (vector_node_, index_);
9295
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::node_depth() const
9296
9297
      private:
9298
9299
         inline T* access_vector() const
9300
0
         {
9301
0
            vector_node_.first->value();
9302
0
            const _uint64_t index = details::numeric::to_uint64(index_.first->value());
9303
9304
0
            if (index <= (vector_holder_->size() - 1))
9305
0
            {
9306
0
               return (vector_holder_->data() + index);
9307
0
            }
9308
9309
0
            assert(vec_rt_chk_);
9310
9311
0
            vector_access_runtime_check::violation_context context;
9312
0
            context.base_ptr   = reinterpret_cast<void*>(vector_holder_->data());
9313
0
            context.end_ptr    = reinterpret_cast<void*>(vector_holder_->data() + vector_holder_->size());
9314
0
            context.access_ptr = reinterpret_cast<void*>(vector_holder_->data() + index);
9315
0
            context.type_size  = sizeof(T);
9316
9317
0
            return vec_rt_chk_->handle_runtime_violation(context) ?
9318
0
                   reinterpret_cast<T*>(context.access_ptr) :
9319
0
                   vector_holder_->data() ;
9320
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::rebasevector_elem_rtc_node<float>::access_vector() const
9321
9322
         vector_holder_ptr vector_holder_;
9323
         branch_t          vector_node_;
9324
         branch_t          index_;
9325
         vector_access_runtime_check_ptr vec_rt_chk_;
9326
      };
9327
9328
      template <typename T>
9329
      class rebasevector_celem_rtc_node exprtk_final
9330
                                    : public expression_node<T>
9331
                                    , public ivariable      <T>
9332
      {
9333
      public:
9334
9335
         typedef expression_node<T>*            expression_ptr;
9336
         typedef vector_holder<T>               vector_holder_t;
9337
         typedef vector_holder_t*               vector_holder_ptr;
9338
         typedef std::pair<expression_ptr,bool> branch_t;
9339
9340
         rebasevector_celem_rtc_node(expression_ptr vec_node,
9341
                                     const std::size_t index,
9342
                                     vector_holder_ptr vec_holder,
9343
                                     vector_access_runtime_check_ptr vec_rt_chk)
9344
0
         : index_(index)
9345
0
         , vector_holder_(vec_holder)
9346
0
         , vector_base_((*vec_holder)[0])
9347
0
         , vec_rt_chk_(vec_rt_chk)
9348
0
         {
9349
0
            construct_branch_pair(vector_node_, vec_node);
9350
0
            assert(valid());
9351
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::rebasevector_celem_rtc_node(exprtk::details::expression_node<double>*, unsigned long, exprtk::details::vector_holder<double>*, exprtk::vector_access_runtime_check*)
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::rebasevector_celem_rtc_node(exprtk::details::expression_node<float>*, unsigned long, exprtk::details::vector_holder<float>*, exprtk::vector_access_runtime_check*)
9352
9353
         inline T value() const exprtk_override
9354
0
         {
9355
0
            return *access_vector();
9356
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::value() const
9357
9358
         inline T& ref() exprtk_override
9359
0
         {
9360
0
            return *access_vector();
9361
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::ref()
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::ref()
9362
9363
         inline const T& ref() const exprtk_override
9364
0
         {
9365
0
            return *access_vector();
9366
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::ref() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::ref() const
9367
9368
         inline typename expression_node<T>::node_type type() const exprtk_override
9369
0
         {
9370
0
            return expression_node<T>::e_rbveccelemrtc;
9371
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::type() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::type() const
9372
9373
         inline bool valid() const exprtk_override
9374
0
         {
9375
0
            return
9376
0
               vector_holder_     &&
9377
0
               vector_node_.first &&
9378
0
               vector_node_.first->valid();
9379
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::valid() const
9380
9381
         inline vector_holder_t& vec_holder()
9382
         {
9383
            return (*vector_holder_);
9384
         }
9385
9386
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9387
0
         {
9388
0
            expression_node<T>::ndb_t::collect(vector_node_, node_delete_list);
9389
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9390
9391
         std::size_t node_depth() const exprtk_override
9392
0
         {
9393
0
            return expression_node<T>::ndb_t::compute_node_depth(vector_node_);
9394
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::node_depth() const
9395
9396
      private:
9397
9398
         inline T* access_vector() const
9399
0
         {
9400
0
            vector_node_.first->value();
9401
9402
0
            if (index_ <= vector_holder_->size() - 1)
9403
0
            {
9404
0
               return (vector_holder_->data() + index_);
9405
0
            }
9406
9407
0
            assert(vec_rt_chk_);
9408
9409
0
            vector_access_runtime_check::violation_context context;
9410
0
            context.base_ptr   = reinterpret_cast<void*>(vector_base_);
9411
0
            context.end_ptr    = reinterpret_cast<void*>(vector_base_ + vector_holder_->size());
9412
0
            context.access_ptr = reinterpret_cast<void*>(vector_base_ + index_);
9413
0
            context.type_size  = sizeof(T);
9414
9415
0
            return vec_rt_chk_->handle_runtime_violation(context) ?
9416
0
               reinterpret_cast<T*>(context.access_ptr) :
9417
0
               vector_base_ ;
9418
0
         }
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<double>::access_vector() const
Unexecuted instantiation: exprtk::details::rebasevector_celem_rtc_node<float>::access_vector() const
9419
9420
         const std::size_t index_;
9421
         vector_holder_ptr vector_holder_;
9422
         T*                vector_base_;
9423
         branch_t          vector_node_;
9424
         vector_access_runtime_check_ptr vec_rt_chk_;
9425
      };
9426
9427
      template <typename T>
9428
      class vector_initialisation_node exprtk_final : public expression_node<T>
9429
      {
9430
      public:
9431
9432
         typedef expression_node<T>* expression_ptr;
9433
9434
         vector_initialisation_node(T* vector_base,
9435
                                    const std::size_t& size,
9436
                                    const std::vector<expression_ptr>& initialiser_list,
9437
                                    const bool single_value_initialse)
9438
0
         : vector_base_(vector_base)
9439
0
         , initialiser_list_(initialiser_list)
9440
0
         , size_(size)
9441
0
         , single_value_initialse_(single_value_initialse)
9442
0
         , zero_value_initialse_(false)
9443
0
         , const_nonzero_literal_value_initialse_(false)
9444
0
         , single_initialiser_value_(T(0))
9445
0
         {
9446
0
            if (single_value_initialse_)
9447
0
            {
9448
0
               if (initialiser_list_.empty())
9449
0
                  zero_value_initialse_ = true;
9450
0
               else if (
9451
0
                         (initialiser_list_.size() == 1) &&
9452
0
                         details::is_constant_node(initialiser_list_[0]) &&
9453
0
                         (T(0) == initialiser_list_[0]->value())
9454
0
                       )
9455
0
               {
9456
0
                  zero_value_initialse_ = true;
9457
0
               }
9458
0
               else
9459
0
               {
9460
0
                  assert(initialiser_list_.size() == 1);
9461
9462
0
                  if (details::is_constant_node(initialiser_list_[0]))
9463
0
                  {
9464
0
                     const_nonzero_literal_value_initialse_ = true;
9465
0
                     single_initialiser_value_ = initialiser_list_[0]->value();
9466
0
                     assert(T(0) != single_initialiser_value_);
9467
0
                  }
9468
0
               }
9469
0
            }
9470
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::vector_initialisation_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&, bool)
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::vector_initialisation_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&, bool)
9471
9472
         inline T value() const exprtk_override
9473
0
         {
9474
0
            if (single_value_initialse_)
9475
0
            {
9476
0
               if (zero_value_initialse_)
9477
0
               {
9478
0
                  details::set_zero_value(vector_base_, size_);
9479
0
               }
9480
0
               else if (const_nonzero_literal_value_initialse_)
9481
0
               {
9482
0
                  for (std::size_t i = 0; i < size_; ++i)
9483
0
                  {
9484
0
                     *(vector_base_ + i) = single_initialiser_value_;
9485
0
                  }
9486
0
               }
9487
0
               else
9488
0
               {
9489
0
                  for (std::size_t i = 0; i < size_; ++i)
9490
0
                  {
9491
0
                     *(vector_base_ + i) = initialiser_list_[0]->value();
9492
0
                  }
9493
0
               }
9494
0
            }
9495
0
            else
9496
0
            {
9497
0
               const std::size_t initialiser_list_size = initialiser_list_.size();
9498
9499
0
               for (std::size_t i = 0; i < initialiser_list_size; ++i)
9500
0
               {
9501
0
                  *(vector_base_ + i) = initialiser_list_[i]->value();
9502
0
               }
9503
9504
0
               if (initialiser_list_size < size_)
9505
0
               {
9506
0
                  details::set_zero_value(
9507
0
                     vector_base_ + initialiser_list_size,
9508
0
                     (size_ - initialiser_list_size));
9509
0
               }
9510
0
            }
9511
9512
0
            return *(vector_base_);
9513
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::value() const
9514
9515
         inline typename expression_node<T>::node_type type() const exprtk_override
9516
0
         {
9517
0
            return expression_node<T>::e_vecinit;
9518
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::type() const
9519
9520
         inline bool valid() const exprtk_override
9521
0
         {
9522
0
            return vector_base_;
9523
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::valid() const
9524
9525
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9526
0
         {
9527
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9528
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9529
9530
         std::size_t node_depth() const exprtk_override
9531
0
         {
9532
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9533
0
         }
Unexecuted instantiation: exprtk::details::vector_initialisation_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_initialisation_node<float>::node_depth() const
9534
9535
      private:
9536
9537
         vector_initialisation_node(const vector_initialisation_node<T>&) exprtk_delete;
9538
         vector_initialisation_node<T>& operator=(const vector_initialisation_node<T>&) exprtk_delete;
9539
9540
         mutable T* vector_base_;
9541
         std::vector<expression_ptr> initialiser_list_;
9542
         const std::size_t size_;
9543
         const bool single_value_initialse_;
9544
         bool zero_value_initialse_;
9545
         bool const_nonzero_literal_value_initialse_;
9546
         T single_initialiser_value_;
9547
      };
9548
9549
      template <typename T>
9550
      class vector_init_zero_value_node exprtk_final : public expression_node<T>
9551
      {
9552
      public:
9553
9554
         typedef expression_node<T>* expression_ptr;
9555
9556
         vector_init_zero_value_node(T* vector_base,
9557
                                     const std::size_t& size,
9558
                                     const std::vector<expression_ptr>& initialiser_list)
9559
0
         : vector_base_(vector_base)
9560
0
         , size_(size)
9561
0
         , initialiser_list_(initialiser_list)
9562
0
         {}
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::vector_init_zero_value_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::vector_init_zero_value_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
9563
9564
         inline T value() const exprtk_override
9565
0
         {
9566
0
            details::set_zero_value(vector_base_, size_);
9567
0
            return *(vector_base_);
9568
0
         }
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::value() const
9569
9570
         inline typename expression_node<T>::node_type type() const exprtk_override
9571
0
         {
9572
0
            return expression_node<T>::e_vecinit;
9573
0
         }
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::type() const
9574
9575
         inline bool valid() const exprtk_override
9576
0
         {
9577
0
            return vector_base_;
9578
0
         }
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::valid() const
9579
9580
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9581
0
         {
9582
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9583
0
         }
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9584
9585
         std::size_t node_depth() const exprtk_override
9586
0
         {
9587
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9588
0
         }
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_init_zero_value_node<float>::node_depth() const
9589
9590
      private:
9591
9592
         vector_init_zero_value_node(const vector_init_zero_value_node<T>&) exprtk_delete;
9593
         vector_init_zero_value_node<T>& operator=(const vector_init_zero_value_node<T>&) exprtk_delete;
9594
9595
         mutable T* vector_base_;
9596
         const std::size_t size_;
9597
         std::vector<expression_ptr> initialiser_list_;
9598
      };
9599
9600
      template <typename T>
9601
      class vector_init_single_constvalue_node exprtk_final : public expression_node<T>
9602
      {
9603
      public:
9604
9605
         typedef expression_node<T>* expression_ptr;
9606
9607
         vector_init_single_constvalue_node(T* vector_base,
9608
                                            const std::size_t& size,
9609
                                            const std::vector<expression_ptr>& initialiser_list)
9610
0
         : vector_base_(vector_base)
9611
0
         , size_(size)
9612
0
         , initialiser_list_(initialiser_list)
9613
0
         {
9614
0
            single_initialiser_value_ = initialiser_list_[0]->value();
9615
0
            assert(valid());
9616
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::vector_init_single_constvalue_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::vector_init_single_constvalue_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
9617
9618
         inline T value() const exprtk_override
9619
0
         {
9620
0
            for (std::size_t i = 0; i < size_; ++i)
9621
0
            {
9622
0
               *(vector_base_ + i) = single_initialiser_value_;
9623
0
            }
9624
9625
0
            return *(vector_base_);
9626
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::value() const
9627
9628
         inline typename expression_node<T>::node_type type() const exprtk_override
9629
0
         {
9630
0
            return expression_node<T>::e_vecinit;
9631
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::type() const
9632
9633
         inline bool valid() const exprtk_override
9634
0
         {
9635
0
            return vector_base_ &&
9636
0
                   (initialiser_list_.size() == 1) &&
9637
0
                   (details::is_constant_node(initialiser_list_[0])) &&
9638
0
                   (single_initialiser_value_ != T(0));
9639
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::valid() const
9640
9641
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9642
0
         {
9643
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9644
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9645
9646
         std::size_t node_depth() const exprtk_override
9647
0
         {
9648
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9649
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_init_single_constvalue_node<float>::node_depth() const
9650
9651
      private:
9652
9653
         vector_init_single_constvalue_node(const vector_init_single_constvalue_node<T>&) exprtk_delete;
9654
         vector_init_single_constvalue_node<T>& operator=(const vector_init_single_constvalue_node<T>&) exprtk_delete;
9655
9656
         mutable T* vector_base_;
9657
         const std::size_t size_;
9658
         std::vector<expression_ptr> initialiser_list_;
9659
         T single_initialiser_value_;
9660
      };
9661
9662
      template <typename T>
9663
      class vector_init_single_value_node exprtk_final : public expression_node<T>
9664
      {
9665
      public:
9666
9667
         typedef expression_node<T>* expression_ptr;
9668
9669
         vector_init_single_value_node(T* vector_base,
9670
                                       const std::size_t& size,
9671
                                       const std::vector<expression_ptr>& initialiser_list)
9672
0
         : vector_base_(vector_base)
9673
0
         , size_(size)
9674
0
         , initialiser_list_(initialiser_list)
9675
0
         {
9676
0
            assert(valid());
9677
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::vector_init_single_value_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::vector_init_single_value_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
9678
9679
         inline T value() const exprtk_override
9680
0
         {
9681
0
            expression_node<T>& node = *initialiser_list_[0];
9682
9683
0
            for (std::size_t i = 0; i < size_; ++i)
9684
0
            {
9685
0
               *(vector_base_ + i) = node.value();
9686
0
            }
9687
9688
0
            return *(vector_base_);
9689
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::value() const
9690
9691
         inline typename expression_node<T>::node_type type() const exprtk_override
9692
0
         {
9693
0
            return expression_node<T>::e_vecinit;
9694
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::type() const
9695
9696
         inline bool valid() const exprtk_override
9697
0
         {
9698
0
            return vector_base_ &&
9699
0
                   (initialiser_list_.size() == 1) &&
9700
0
                   !details::is_constant_node(initialiser_list_[0]);
9701
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::valid() const
9702
9703
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9704
0
         {
9705
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9706
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9707
9708
         std::size_t node_depth() const exprtk_override
9709
0
         {
9710
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9711
0
         }
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_init_single_value_node<float>::node_depth() const
9712
9713
      private:
9714
9715
         vector_init_single_value_node(const vector_init_single_value_node<T>&) exprtk_delete;
9716
         vector_init_single_value_node<T>& operator=(const vector_init_single_value_node<T>&) exprtk_delete;
9717
9718
         mutable T* vector_base_;
9719
         const std::size_t size_;
9720
         std::vector<expression_ptr> initialiser_list_;
9721
      };
9722
9723
      template <typename T>
9724
      class vector_init_iota_constconst_node exprtk_final : public expression_node<T>
9725
      {
9726
      public:
9727
9728
         typedef expression_node<T>* expression_ptr;
9729
9730
         vector_init_iota_constconst_node(T* vector_base,
9731
                                          const std::size_t& size,
9732
                                          const std::vector<expression_ptr>& initialiser_list)
9733
0
         : vector_base_(vector_base)
9734
0
         , size_(size)
9735
0
         , initialiser_list_(initialiser_list)
9736
0
         {
9737
0
            base_value_      = initialiser_list_[0]->value();
9738
0
            increment_value_ = initialiser_list_[1]->value();
9739
9740
0
            assert(valid());
9741
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::vector_init_iota_constconst_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::vector_init_iota_constconst_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
9742
9743
         inline T value() const exprtk_override
9744
0
         {
9745
0
            T value = base_value_;
9746
9747
0
            for (std::size_t i = 0; i < size_; ++i, value += increment_value_)
9748
0
            {
9749
0
               *(vector_base_ + i) = value;
9750
0
            }
9751
9752
0
            return *(vector_base_);
9753
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::value() const
9754
9755
         inline typename expression_node<T>::node_type type() const exprtk_override
9756
0
         {
9757
0
            return expression_node<T>::e_vecinit;
9758
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::type() const
9759
9760
         inline bool valid() const exprtk_override
9761
0
         {
9762
0
            return vector_base_ &&
9763
0
                   (initialiser_list_.size() == 2) &&
9764
0
                   (details::is_constant_node(initialiser_list_[0])) &&
9765
0
                   (details::is_constant_node(initialiser_list_[1])) ;
9766
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::valid() const
9767
9768
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9769
0
         {
9770
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9771
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9772
9773
         std::size_t node_depth() const exprtk_override
9774
0
         {
9775
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9776
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_init_iota_constconst_node<float>::node_depth() const
9777
9778
      private:
9779
9780
         vector_init_iota_constconst_node(const vector_init_iota_constconst_node<T>&) exprtk_delete;
9781
         vector_init_iota_constconst_node<T>& operator=(const vector_init_iota_constconst_node<T>&) exprtk_delete;
9782
9783
         mutable T* vector_base_;
9784
         const std::size_t size_;
9785
         std::vector<expression_ptr> initialiser_list_;
9786
         T base_value_;
9787
         T increment_value_;
9788
      };
9789
9790
      template <typename T>
9791
      class vector_init_iota_constnconst_node exprtk_final : public expression_node<T>
9792
      {
9793
      public:
9794
9795
         typedef expression_node<T>* expression_ptr;
9796
9797
         vector_init_iota_constnconst_node(T* vector_base,
9798
                                           const std::size_t& size,
9799
                                           const std::vector<expression_ptr>& initialiser_list)
9800
0
         : vector_base_(vector_base)
9801
0
         , size_(size)
9802
0
         , initialiser_list_(initialiser_list)
9803
0
         {
9804
0
            assert(valid());
9805
0
            base_value_ = initialiser_list_[0]->value();
9806
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::vector_init_iota_constnconst_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::vector_init_iota_constnconst_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
9807
9808
         inline T value() const exprtk_override
9809
0
         {
9810
0
            T value = base_value_;
9811
0
            expression_node<T>& increment = *initialiser_list_[1];
9812
9813
0
            for (std::size_t i = 0; i < size_; ++i, value += increment.value())
9814
0
            {
9815
0
               *(vector_base_ + i) = value;
9816
0
            }
9817
9818
0
            return *(vector_base_);
9819
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::value() const
9820
9821
         inline typename expression_node<T>::node_type type() const exprtk_override
9822
0
         {
9823
0
            return expression_node<T>::e_vecinit;
9824
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::type() const
9825
9826
         inline bool valid() const exprtk_override
9827
0
         {
9828
0
            return vector_base_ &&
9829
0
                  (initialiser_list_.size() == 2) &&
9830
0
                  ( details::is_constant_node(initialiser_list_[0])) &&
9831
0
                  (!details::is_constant_node(initialiser_list_[1]));
9832
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::valid() const
9833
9834
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9835
0
         {
9836
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9837
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9838
9839
         std::size_t node_depth() const exprtk_override
9840
0
         {
9841
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9842
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_init_iota_constnconst_node<float>::node_depth() const
9843
9844
      private:
9845
9846
         vector_init_iota_constnconst_node(const vector_init_iota_constnconst_node<T>&) exprtk_delete;
9847
         vector_init_iota_constnconst_node<T>& operator=(const vector_init_iota_constnconst_node<T>&) exprtk_delete;
9848
9849
         mutable T* vector_base_;
9850
         const std::size_t size_;
9851
         std::vector<expression_ptr> initialiser_list_;
9852
         T base_value_;
9853
      };
9854
9855
      template <typename T>
9856
      class vector_init_iota_nconstconst_node exprtk_final : public expression_node<T>
9857
      {
9858
      public:
9859
9860
         typedef expression_node<T>* expression_ptr;
9861
9862
         vector_init_iota_nconstconst_node(T* vector_base,
9863
                                           const std::size_t& size,
9864
                                           const std::vector<expression_ptr>& initialiser_list)
9865
0
         : vector_base_(vector_base)
9866
0
         , size_(size)
9867
0
         , initialiser_list_(initialiser_list)
9868
0
         {
9869
0
            assert(valid());
9870
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::vector_init_iota_nconstconst_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::vector_init_iota_nconstconst_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
9871
9872
         inline T value() const exprtk_override
9873
0
         {
9874
0
            T value = initialiser_list_[0]->value();
9875
0
            const T increment = initialiser_list_[1]->value();
9876
9877
0
            for (std::size_t i = 0; i < size_; ++i, value += increment)
9878
0
            {
9879
0
               *(vector_base_ + i) = value;
9880
0
            }
9881
9882
0
            return *(vector_base_);
9883
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::value() const
9884
9885
         inline typename expression_node<T>::node_type type() const exprtk_override
9886
0
         {
9887
0
            return expression_node<T>::e_vecinit;
9888
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::type() const
9889
9890
         inline bool valid() const exprtk_override
9891
0
         {
9892
0
            return vector_base_ &&
9893
0
                   (initialiser_list_.size() == 2) &&
9894
0
                   (!details::is_constant_node(initialiser_list_[0])) &&
9895
0
                   (details::is_constant_node(initialiser_list_[1]));
9896
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::valid() const
9897
9898
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9899
0
         {
9900
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9901
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9902
9903
         std::size_t node_depth() const exprtk_override
9904
0
         {
9905
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9906
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstconst_node<float>::node_depth() const
9907
9908
      private:
9909
9910
         vector_init_iota_nconstconst_node(const vector_init_iota_nconstconst_node<T>&) exprtk_delete;
9911
         vector_init_iota_nconstconst_node<T>& operator=(const vector_init_iota_nconstconst_node<T>&) exprtk_delete;
9912
9913
         mutable T* vector_base_;
9914
         const std::size_t size_;
9915
         std::vector<expression_ptr> initialiser_list_;
9916
      };
9917
9918
      template <typename T>
9919
      class vector_init_iota_nconstnconst_node exprtk_final : public expression_node<T>
9920
      {
9921
      public:
9922
9923
         typedef expression_node<T>* expression_ptr;
9924
9925
         vector_init_iota_nconstnconst_node(T* vector_base,
9926
                                            const std::size_t& size,
9927
                                            const std::vector<expression_ptr>& initialiser_list)
9928
0
         : vector_base_(vector_base)
9929
0
         , size_(size)
9930
0
         , initialiser_list_(initialiser_list)
9931
0
         {
9932
0
            assert(valid());
9933
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::vector_init_iota_nconstnconst_node(double*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::vector_init_iota_nconstnconst_node(float*, unsigned long const&, std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
9934
9935
         inline T value() const exprtk_override
9936
0
         {
9937
0
            T value = initialiser_list_[0]->value();
9938
0
            expression_node<T>& increment = *initialiser_list_[1];
9939
9940
0
            for (std::size_t i = 0; i < size_; ++i, value += increment.value())
9941
0
            {
9942
0
               *(vector_base_ + i) = value;
9943
0
            }
9944
9945
0
            return *(vector_base_);
9946
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::value() const
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::value() const
9947
9948
         inline typename expression_node<T>::node_type type() const exprtk_override
9949
0
         {
9950
0
            return expression_node<T>::e_vecinit;
9951
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::type() const
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::type() const
9952
9953
         inline bool valid() const exprtk_override
9954
0
         {
9955
0
            return vector_base_ &&
9956
0
                   (initialiser_list_.size() == 2) &&
9957
0
                   (!details::is_constant_node(initialiser_list_[0])) &&
9958
0
                   (!details::is_constant_node(initialiser_list_[1]));
9959
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::valid() const
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::valid() const
9960
9961
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
9962
0
         {
9963
0
            expression_node<T>::ndb_t::collect(initialiser_list_, node_delete_list);
9964
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
9965
9966
         std::size_t node_depth() const exprtk_override
9967
0
         {
9968
0
            return expression_node<T>::ndb_t::compute_node_depth(initialiser_list_);
9969
0
         }
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::vector_init_iota_nconstnconst_node<float>::node_depth() const
9970
9971
      private:
9972
9973
         vector_init_iota_nconstnconst_node(const vector_init_iota_nconstnconst_node<T>&) exprtk_delete;
9974
         vector_init_iota_nconstnconst_node<T>& operator=(const vector_init_iota_nconstnconst_node<T>&) exprtk_delete;
9975
9976
         mutable T* vector_base_;
9977
         const std::size_t size_;
9978
         std::vector<expression_ptr> initialiser_list_;
9979
      };
9980
9981
      template <typename T>
9982
      class swap_node exprtk_final : public expression_node<T>
9983
      {
9984
      public:
9985
9986
         typedef expression_node<T>* expression_ptr;
9987
         typedef variable_node<T>*   variable_node_ptr;
9988
9989
         swap_node(variable_node_ptr var0, variable_node_ptr var1)
9990
2
         : var0_(var0)
9991
2
         , var1_(var1)
9992
2
         {}
exprtk::details::swap_node<double>::swap_node(exprtk::details::variable_node<double>*, exprtk::details::variable_node<double>*)
Line
Count
Source
9990
1
         : var0_(var0)
9991
1
         , var1_(var1)
9992
1
         {}
exprtk::details::swap_node<float>::swap_node(exprtk::details::variable_node<float>*, exprtk::details::variable_node<float>*)
Line
Count
Source
9990
1
         : var0_(var0)
9991
1
         , var1_(var1)
9992
1
         {}
9993
9994
         inline T value() const exprtk_override
9995
2
         {
9996
2
            std::swap(var0_->ref(),var1_->ref());
9997
2
            return var1_->ref();
9998
2
         }
exprtk::details::swap_node<double>::value() const
Line
Count
Source
9995
1
         {
9996
1
            std::swap(var0_->ref(),var1_->ref());
9997
1
            return var1_->ref();
9998
1
         }
exprtk::details::swap_node<float>::value() const
Line
Count
Source
9995
1
         {
9996
1
            std::swap(var0_->ref(),var1_->ref());
9997
1
            return var1_->ref();
9998
1
         }
9999
10000
         inline typename expression_node<T>::node_type type() const exprtk_override
10001
10
         {
10002
10
            return expression_node<T>::e_swap;
10003
10
         }
exprtk::details::swap_node<double>::type() const
Line
Count
Source
10001
5
         {
10002
5
            return expression_node<T>::e_swap;
10003
5
         }
exprtk::details::swap_node<float>::type() const
Line
Count
Source
10001
5
         {
10002
5
            return expression_node<T>::e_swap;
10003
5
         }
10004
10005
      private:
10006
10007
         variable_node_ptr var0_;
10008
         variable_node_ptr var1_;
10009
      };
10010
10011
      template <typename T>
10012
      class swap_generic_node exprtk_final : public binary_node<T>
10013
      {
10014
      public:
10015
10016
         typedef expression_node<T>* expression_ptr;
10017
         typedef ivariable<T>*       ivariable_ptr;
10018
10019
         swap_generic_node(expression_ptr var0, expression_ptr var1)
10020
0
         : binary_node<T>(details::e_swap, var0, var1)
10021
0
         , var0_(dynamic_cast<ivariable_ptr>(var0))
10022
0
         , var1_(dynamic_cast<ivariable_ptr>(var1))
10023
0
         {}
Unexecuted instantiation: exprtk::details::swap_generic_node<double>::swap_generic_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::swap_generic_node<float>::swap_generic_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
10024
10025
         inline T value() const exprtk_override
10026
0
         {
10027
0
            std::swap(var0_->ref(),var1_->ref());
10028
0
            return var1_->ref();
10029
0
         }
Unexecuted instantiation: exprtk::details::swap_generic_node<double>::value() const
Unexecuted instantiation: exprtk::details::swap_generic_node<float>::value() const
10030
10031
         inline typename expression_node<T>::node_type type() const exprtk_override
10032
0
         {
10033
0
            return expression_node<T>::e_swap;
10034
0
         }
Unexecuted instantiation: exprtk::details::swap_generic_node<double>::type() const
Unexecuted instantiation: exprtk::details::swap_generic_node<float>::type() const
10035
10036
      private:
10037
10038
         ivariable_ptr var0_;
10039
         ivariable_ptr var1_;
10040
      };
10041
10042
      template <typename T>
10043
      class swap_vecvec_node exprtk_final
10044
                             : public binary_node     <T>
10045
                             , public vector_interface<T>
10046
      {
10047
      public:
10048
10049
         typedef expression_node<T>* expression_ptr;
10050
         typedef vector_node    <T>* vector_node_ptr;
10051
         typedef vec_data_store <T>  vds_t;
10052
10053
         using binary_node<T>::branch;
10054
10055
         swap_vecvec_node(expression_ptr branch0,
10056
                          expression_ptr branch1)
10057
0
         : binary_node<T>(details::e_swap, branch0, branch1)
10058
0
         , vec0_node_ptr_(0)
10059
0
         , vec1_node_ptr_(0)
10060
0
         , initialised_  (false)
10061
0
         {
10062
0
            if (is_ivector_node(branch(0)))
10063
0
            {
10064
0
               vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0);
10065
10066
0
               if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(0))))
10067
0
               {
10068
0
                  vec0_node_ptr_ = vi->vec();
10069
0
                  vds()          = vi->vds();
10070
0
               }
10071
0
            }
10072
10073
0
            if (is_ivector_node(branch(1)))
10074
0
            {
10075
0
               vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0);
10076
10077
0
               if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1))))
10078
0
               {
10079
0
                  vec1_node_ptr_ = vi->vec();
10080
0
               }
10081
0
            }
10082
10083
0
            if (vec0_node_ptr_ && vec1_node_ptr_)
10084
0
            {
10085
0
               initialised_ = size() <= base_size();
10086
0
            }
10087
10088
0
            assert(valid());
10089
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::swap_vecvec_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::swap_vecvec_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
10090
10091
         inline T value() const exprtk_override
10092
0
         {
10093
0
            binary_node<T>::branch(0)->value();
10094
0
            binary_node<T>::branch(1)->value();
10095
10096
0
            T* vec0 = vec0_node_ptr_->vds().data();
10097
0
            T* vec1 = vec1_node_ptr_->vds().data();
10098
10099
0
            assert(size() <= base_size());
10100
0
            const std::size_t n = size();
10101
10102
0
            for (std::size_t i = 0; i < n; ++i)
10103
0
            {
10104
0
               std::swap(vec0[i],vec1[i]);
10105
0
            }
10106
10107
0
            return vec1_node_ptr_->value();
10108
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::value() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::value() const
10109
10110
         vector_node_ptr vec() const exprtk_override
10111
0
         {
10112
0
            return vec0_node_ptr_;
10113
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vec() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vec() const
10114
10115
         vector_node_ptr vec() exprtk_override
10116
0
         {
10117
0
            return vec0_node_ptr_;
10118
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vec()
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vec()
10119
10120
         inline typename expression_node<T>::node_type type() const exprtk_override
10121
0
         {
10122
0
            return expression_node<T>::e_vecvecswap;
10123
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::type() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::type() const
10124
10125
         inline bool valid() const exprtk_override
10126
0
         {
10127
0
            return initialised_ && binary_node<T>::valid();
10128
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::valid() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::valid() const
10129
10130
         std::size_t size() const exprtk_override
10131
0
         {
10132
0
            return std::min(
10133
0
               vec0_node_ptr_->vec_holder().size(),
10134
0
               vec1_node_ptr_->vec_holder().size());
10135
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::size() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::size() const
10136
10137
         std::size_t base_size() const exprtk_override
10138
0
         {
10139
0
            return std::min(
10140
0
               vec0_node_ptr_->vec_holder().base_size(),
10141
0
               vec1_node_ptr_->vec_holder().base_size());
10142
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::base_size() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::base_size() const
10143
10144
         vds_t& vds() exprtk_override
10145
0
         {
10146
0
            return vds_;
10147
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vds()
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vds()
10148
10149
         const vds_t& vds() const exprtk_override
10150
0
         {
10151
0
            return vds_;
10152
0
         }
Unexecuted instantiation: exprtk::details::swap_vecvec_node<double>::vds() const
Unexecuted instantiation: exprtk::details::swap_vecvec_node<float>::vds() const
10153
10154
      private:
10155
10156
         vector_node<T>* vec0_node_ptr_;
10157
         vector_node<T>* vec1_node_ptr_;
10158
         bool            initialised_;
10159
         vds_t           vds_;
10160
      };
10161
10162
      #ifndef exprtk_disable_string_capabilities
10163
      template <typename T>
10164
      class stringvar_node exprtk_final
10165
                           : public expression_node <T>
10166
                           , public string_base_node<T>
10167
                           , public range_interface <T>
10168
      {
10169
      public:
10170
10171
         typedef typename range_interface<T>::range_t range_t;
10172
10173
         static std::string null_value;
10174
10175
         explicit stringvar_node()
10176
         : value_(&null_value)
10177
         {}
10178
10179
         explicit stringvar_node(std::string& v)
10180
0
         : value_(&v)
10181
0
         {
10182
0
            rp_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10183
0
            rp_.n1_c = std::make_pair<bool,std::size_t>(true,v.size());
10184
0
            rp_.cache.first  = rp_.n0_c.second;
10185
0
            rp_.cache.second = rp_.n1_c.second;
10186
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::stringvar_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
Unexecuted instantiation: exprtk::details::stringvar_node<float>::stringvar_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
10187
10188
         inline bool operator <(const stringvar_node<T>& v) const
10189
         {
10190
            return this < (&v);
10191
         }
10192
10193
         inline T value() const exprtk_override
10194
0
         {
10195
0
            rp_.n1_c.second  = (*value_).size();
10196
0
            rp_.cache.second = rp_.n1_c.second;
10197
10198
0
            return std::numeric_limits<T>::quiet_NaN();
10199
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::value() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::value() const
10200
10201
         std::string str() const exprtk_override
10202
0
         {
10203
0
            return ref();
10204
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::str() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::str() const
10205
10206
         char_cptr base() const exprtk_override
10207
0
         {
10208
0
            return &(*value_)[0];
10209
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::base() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::base() const
10210
10211
         std::size_t size() const exprtk_override
10212
0
         {
10213
0
            return ref().size();
10214
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::size() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::size() const
10215
10216
         std::string& ref()
10217
0
         {
10218
0
            return (*value_);
10219
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::ref()
Unexecuted instantiation: exprtk::details::stringvar_node<float>::ref()
10220
10221
         const std::string& ref() const
10222
0
         {
10223
0
            return (*value_);
10224
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::ref() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::ref() const
10225
10226
         range_t& range_ref() exprtk_override
10227
0
         {
10228
0
            return rp_;
10229
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::stringvar_node<float>::range_ref()
10230
10231
         const range_t& range_ref() const exprtk_override
10232
0
         {
10233
0
            return rp_;
10234
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::range_ref() const
10235
10236
         inline typename expression_node<T>::node_type type() const exprtk_override
10237
0
         {
10238
0
            return expression_node<T>::e_stringvar;
10239
0
         }
Unexecuted instantiation: exprtk::details::stringvar_node<double>::type() const
Unexecuted instantiation: exprtk::details::stringvar_node<float>::type() const
10240
10241
         void rebase(std::string& s)
10242
         {
10243
            value_ = &s;
10244
            rp_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10245
            rp_.n1_c = std::make_pair<bool,std::size_t>(true,value_->size() - 1);
10246
            rp_.cache.first  = rp_.n0_c.second;
10247
            rp_.cache.second = rp_.n1_c.second;
10248
         }
10249
10250
      private:
10251
10252
         std::string* value_;
10253
         mutable range_t rp_;
10254
      };
10255
10256
      template <typename T>
10257
      std::string stringvar_node<T>::null_value = std::string("");
10258
10259
      template <typename T>
10260
      class string_range_node exprtk_final
10261
                              : public expression_node <T>
10262
                              , public string_base_node<T>
10263
                              , public range_interface <T>
10264
      {
10265
      public:
10266
10267
         typedef typename range_interface<T>::range_t range_t;
10268
10269
         static std::string null_value;
10270
10271
         explicit string_range_node(std::string& v, const range_t& rp)
10272
0
         : value_(&v)
10273
0
         , rp_(rp)
10274
0
         {}
Unexecuted instantiation: exprtk::details::string_range_node<double>::string_range_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, exprtk::details::range_pack<double> const&)
Unexecuted instantiation: exprtk::details::string_range_node<float>::string_range_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, exprtk::details::range_pack<float> const&)
10275
10276
         virtual ~string_range_node()
10277
0
         {
10278
0
            rp_.free();
10279
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::~string_range_node()
Unexecuted instantiation: exprtk::details::string_range_node<float>::~string_range_node()
10280
10281
         inline bool operator <(const string_range_node<T>& v) const
10282
         {
10283
            return this < (&v);
10284
         }
10285
10286
         inline T value() const exprtk_override
10287
0
         {
10288
0
            return std::numeric_limits<T>::quiet_NaN();
10289
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::value() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::value() const
10290
10291
         inline std::string str() const exprtk_override
10292
0
         {
10293
0
            return (*value_);
10294
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::str() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::str() const
10295
10296
         char_cptr base() const exprtk_override
10297
0
         {
10298
0
            return &(*value_)[0];
10299
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::base() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::base() const
10300
10301
         std::size_t size() const exprtk_override
10302
0
         {
10303
0
            return ref().size();
10304
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::size() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::size() const
10305
10306
         inline range_t range() const
10307
0
         {
10308
0
            return rp_;
10309
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::range() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::range() const
10310
10311
         inline virtual std::string& ref()
10312
0
         {
10313
0
            return (*value_);
10314
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::ref()
Unexecuted instantiation: exprtk::details::string_range_node<float>::ref()
10315
10316
         inline virtual const std::string& ref() const
10317
0
         {
10318
0
            return (*value_);
10319
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::ref() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::ref() const
10320
10321
         inline range_t& range_ref() exprtk_override
10322
0
         {
10323
0
            return rp_;
10324
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::string_range_node<float>::range_ref()
10325
10326
         inline const range_t& range_ref() const exprtk_override
10327
0
         {
10328
0
            return rp_;
10329
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::range_ref() const
10330
10331
         inline typename expression_node<T>::node_type type() const exprtk_override
10332
0
         {
10333
0
            return expression_node<T>::e_stringvarrng;
10334
0
         }
Unexecuted instantiation: exprtk::details::string_range_node<double>::type() const
Unexecuted instantiation: exprtk::details::string_range_node<float>::type() const
10335
10336
      private:
10337
10338
         std::string* value_;
10339
         range_t      rp_;
10340
      };
10341
10342
      template <typename T>
10343
      std::string string_range_node<T>::null_value = std::string("");
10344
10345
      template <typename T>
10346
      class const_string_range_node exprtk_final
10347
                                    : public expression_node <T>
10348
                                    , public string_base_node<T>
10349
                                    , public range_interface <T>
10350
      {
10351
      public:
10352
10353
         typedef typename range_interface<T>::range_t range_t;
10354
10355
         explicit const_string_range_node(const std::string& v, const range_t& rp)
10356
18
         : value_(v)
10357
18
         , rp_(rp)
10358
18
         {}
exprtk::details::const_string_range_node<double>::const_string_range_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, exprtk::details::range_pack<double> const&)
Line
Count
Source
10356
9
         : value_(v)
10357
9
         , rp_(rp)
10358
9
         {}
exprtk::details::const_string_range_node<float>::const_string_range_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, exprtk::details::range_pack<float> const&)
Line
Count
Source
10356
9
         : value_(v)
10357
9
         , rp_(rp)
10358
9
         {}
10359
10360
        ~const_string_range_node() exprtk_override
10361
18
         {
10362
18
            rp_.free();
10363
18
         }
exprtk::details::const_string_range_node<double>::~const_string_range_node()
Line
Count
Source
10361
9
         {
10362
9
            rp_.free();
10363
9
         }
exprtk::details::const_string_range_node<float>::~const_string_range_node()
Line
Count
Source
10361
9
         {
10362
9
            rp_.free();
10363
9
         }
10364
10365
         inline T value() const exprtk_override
10366
6
         {
10367
6
            return std::numeric_limits<T>::quiet_NaN();
10368
6
         }
exprtk::details::const_string_range_node<double>::value() const
Line
Count
Source
10366
3
         {
10367
3
            return std::numeric_limits<T>::quiet_NaN();
10368
3
         }
exprtk::details::const_string_range_node<float>::value() const
Line
Count
Source
10366
3
         {
10367
3
            return std::numeric_limits<T>::quiet_NaN();
10368
3
         }
10369
10370
         std::string str() const exprtk_override
10371
2
         {
10372
2
            return value_;
10373
2
         }
exprtk::details::const_string_range_node<double>::str() const
Line
Count
Source
10371
1
         {
10372
1
            return value_;
10373
1
         }
exprtk::details::const_string_range_node<float>::str() const
Line
Count
Source
10371
1
         {
10372
1
            return value_;
10373
1
         }
10374
10375
         char_cptr base() const exprtk_override
10376
2
         {
10377
2
            return value_.data();
10378
2
         }
exprtk::details::const_string_range_node<double>::base() const
Line
Count
Source
10376
1
         {
10377
1
            return value_.data();
10378
1
         }
exprtk::details::const_string_range_node<float>::base() const
Line
Count
Source
10376
1
         {
10377
1
            return value_.data();
10378
1
         }
10379
10380
         std::size_t size() const exprtk_override
10381
4
         {
10382
4
            return value_.size();
10383
4
         }
exprtk::details::const_string_range_node<double>::size() const
Line
Count
Source
10381
2
         {
10382
2
            return value_.size();
10383
2
         }
exprtk::details::const_string_range_node<float>::size() const
Line
Count
Source
10381
2
         {
10382
2
            return value_.size();
10383
2
         }
10384
10385
         range_t range() const
10386
2
         {
10387
2
            return rp_;
10388
2
         }
exprtk::details::const_string_range_node<double>::range() const
Line
Count
Source
10386
1
         {
10387
1
            return rp_;
10388
1
         }
exprtk::details::const_string_range_node<float>::range() const
Line
Count
Source
10386
1
         {
10387
1
            return rp_;
10388
1
         }
10389
10390
         range_t& range_ref() exprtk_override
10391
6
         {
10392
6
            return rp_;
10393
6
         }
exprtk::details::const_string_range_node<double>::range_ref()
Line
Count
Source
10391
3
         {
10392
3
            return rp_;
10393
3
         }
exprtk::details::const_string_range_node<float>::range_ref()
Line
Count
Source
10391
3
         {
10392
3
            return rp_;
10393
3
         }
10394
10395
         const range_t& range_ref() const exprtk_override
10396
0
         {
10397
0
            return rp_;
10398
0
         }
Unexecuted instantiation: exprtk::details::const_string_range_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::const_string_range_node<float>::range_ref() const
10399
10400
         inline typename expression_node<T>::node_type type() const exprtk_override
10401
148
         {
10402
148
            return expression_node<T>::e_cstringvarrng;
10403
148
         }
exprtk::details::const_string_range_node<double>::type() const
Line
Count
Source
10401
74
         {
10402
74
            return expression_node<T>::e_cstringvarrng;
10403
74
         }
exprtk::details::const_string_range_node<float>::type() const
Line
Count
Source
10401
74
         {
10402
74
            return expression_node<T>::e_cstringvarrng;
10403
74
         }
10404
10405
      private:
10406
10407
         const_string_range_node(const const_string_range_node<T>&) exprtk_delete;
10408
         const_string_range_node<T>& operator=(const const_string_range_node<T>&) exprtk_delete;
10409
10410
         const std::string value_;
10411
         range_t rp_;
10412
      };
10413
10414
      template <typename T>
10415
      class generic_string_range_node exprtk_final
10416
                                      : public expression_node <T>
10417
                                      , public string_base_node<T>
10418
                                      , public range_interface <T>
10419
      {
10420
      public:
10421
10422
         typedef expression_node <T>* expression_ptr;
10423
         typedef stringvar_node  <T>* strvar_node_ptr;
10424
         typedef string_base_node<T>* str_base_ptr;
10425
         typedef typename range_interface<T>::range_t range_t;
10426
         typedef range_t*             range_ptr;
10427
         typedef range_interface<T>   irange_t;
10428
         typedef irange_t*            irange_ptr;
10429
         typedef std::pair<expression_ptr,bool>  branch_t;
10430
10431
         generic_string_range_node(expression_ptr str_branch, const range_t& brange)
10432
6
         : initialised_(false)
10433
6
         , str_base_ptr_ (0)
10434
6
         , str_range_ptr_(0)
10435
6
         , base_range_(brange)
10436
6
         {
10437
6
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10438
6
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10439
6
            range_.cache.first  = range_.n0_c.second;
10440
6
            range_.cache.second = range_.n1_c.second;
10441
10442
6
            construct_branch_pair(branch_, str_branch);
10443
10444
6
            if (is_generally_string_node(branch_.first))
10445
6
            {
10446
6
               str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first);
10447
10448
6
               if (0 == str_base_ptr_)
10449
0
                  return;
10450
10451
6
               str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first);
10452
10453
6
               if (0 == str_range_ptr_)
10454
0
                  return;
10455
6
            }
10456
10457
6
            initialised_ = (str_base_ptr_ && str_range_ptr_);
10458
6
            assert(valid());
10459
6
         }
exprtk::details::generic_string_range_node<double>::generic_string_range_node(exprtk::details::expression_node<double>*, exprtk::details::range_pack<double> const&)
Line
Count
Source
10432
3
         : initialised_(false)
10433
3
         , str_base_ptr_ (0)
10434
3
         , str_range_ptr_(0)
10435
3
         , base_range_(brange)
10436
3
         {
10437
3
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10438
3
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10439
3
            range_.cache.first  = range_.n0_c.second;
10440
3
            range_.cache.second = range_.n1_c.second;
10441
10442
3
            construct_branch_pair(branch_, str_branch);
10443
10444
3
            if (is_generally_string_node(branch_.first))
10445
3
            {
10446
3
               str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first);
10447
10448
3
               if (0 == str_base_ptr_)
10449
0
                  return;
10450
10451
3
               str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first);
10452
10453
3
               if (0 == str_range_ptr_)
10454
0
                  return;
10455
3
            }
10456
10457
3
            initialised_ = (str_base_ptr_ && str_range_ptr_);
10458
3
            assert(valid());
10459
3
         }
exprtk::details::generic_string_range_node<float>::generic_string_range_node(exprtk::details::expression_node<float>*, exprtk::details::range_pack<float> const&)
Line
Count
Source
10432
3
         : initialised_(false)
10433
3
         , str_base_ptr_ (0)
10434
3
         , str_range_ptr_(0)
10435
3
         , base_range_(brange)
10436
3
         {
10437
3
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10438
3
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10439
3
            range_.cache.first  = range_.n0_c.second;
10440
3
            range_.cache.second = range_.n1_c.second;
10441
10442
3
            construct_branch_pair(branch_, str_branch);
10443
10444
3
            if (is_generally_string_node(branch_.first))
10445
3
            {
10446
3
               str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first);
10447
10448
3
               if (0 == str_base_ptr_)
10449
0
                  return;
10450
10451
3
               str_range_ptr_ = dynamic_cast<irange_ptr>(branch_.first);
10452
10453
3
               if (0 == str_range_ptr_)
10454
0
                  return;
10455
3
            }
10456
10457
3
            initialised_ = (str_base_ptr_ && str_range_ptr_);
10458
3
            assert(valid());
10459
3
         }
10460
10461
        ~generic_string_range_node() exprtk_override
10462
6
         {
10463
6
            base_range_.free();
10464
6
         }
exprtk::details::generic_string_range_node<double>::~generic_string_range_node()
Line
Count
Source
10462
3
         {
10463
3
            base_range_.free();
10464
3
         }
exprtk::details::generic_string_range_node<float>::~generic_string_range_node()
Line
Count
Source
10462
3
         {
10463
3
            base_range_.free();
10464
3
         }
10465
10466
         inline T value() const exprtk_override
10467
2
         {
10468
2
            branch_.first->value();
10469
10470
2
            std::size_t str_r0 = 0;
10471
2
            std::size_t str_r1 = 0;
10472
10473
2
            std::size_t r0 = 0;
10474
2
            std::size_t r1 = 0;
10475
10476
2
            const range_t& range = str_range_ptr_->range_ref();
10477
10478
2
            const std::size_t base_str_size = str_base_ptr_->size();
10479
10480
2
            if (
10481
2
                  range      (str_r0, str_r1, base_str_size         ) &&
10482
2
                  base_range_(r0    , r1    , base_str_size - str_r0)
10483
2
               )
10484
2
            {
10485
2
               const std::size_t size = r1 - r0;
10486
10487
2
               range_.n1_c.second  = size;
10488
2
               range_.cache.second = range_.n1_c.second;
10489
10490
2
               value_.assign(str_base_ptr_->base() + str_r0 + r0, size);
10491
2
            }
10492
10493
2
            return std::numeric_limits<T>::quiet_NaN();
10494
2
         }
exprtk::details::generic_string_range_node<double>::value() const
Line
Count
Source
10467
1
         {
10468
1
            branch_.first->value();
10469
10470
1
            std::size_t str_r0 = 0;
10471
1
            std::size_t str_r1 = 0;
10472
10473
1
            std::size_t r0 = 0;
10474
1
            std::size_t r1 = 0;
10475
10476
1
            const range_t& range = str_range_ptr_->range_ref();
10477
10478
1
            const std::size_t base_str_size = str_base_ptr_->size();
10479
10480
1
            if (
10481
1
                  range      (str_r0, str_r1, base_str_size         ) &&
10482
1
                  base_range_(r0    , r1    , base_str_size - str_r0)
10483
1
               )
10484
1
            {
10485
1
               const std::size_t size = r1 - r0;
10486
10487
1
               range_.n1_c.second  = size;
10488
1
               range_.cache.second = range_.n1_c.second;
10489
10490
1
               value_.assign(str_base_ptr_->base() + str_r0 + r0, size);
10491
1
            }
10492
10493
1
            return std::numeric_limits<T>::quiet_NaN();
10494
1
         }
exprtk::details::generic_string_range_node<float>::value() const
Line
Count
Source
10467
1
         {
10468
1
            branch_.first->value();
10469
10470
1
            std::size_t str_r0 = 0;
10471
1
            std::size_t str_r1 = 0;
10472
10473
1
            std::size_t r0 = 0;
10474
1
            std::size_t r1 = 0;
10475
10476
1
            const range_t& range = str_range_ptr_->range_ref();
10477
10478
1
            const std::size_t base_str_size = str_base_ptr_->size();
10479
10480
1
            if (
10481
1
                  range      (str_r0, str_r1, base_str_size         ) &&
10482
1
                  base_range_(r0    , r1    , base_str_size - str_r0)
10483
1
               )
10484
1
            {
10485
1
               const std::size_t size = r1 - r0;
10486
10487
1
               range_.n1_c.second  = size;
10488
1
               range_.cache.second = range_.n1_c.second;
10489
10490
1
               value_.assign(str_base_ptr_->base() + str_r0 + r0, size);
10491
1
            }
10492
10493
1
            return std::numeric_limits<T>::quiet_NaN();
10494
1
         }
10495
10496
         std::string str() const exprtk_override
10497
0
         {
10498
0
            return value_;
10499
0
         }
Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::str() const
Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::str() const
10500
10501
         char_cptr base() const exprtk_override
10502
0
         {
10503
0
            return &value_[0];
10504
0
         }
Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::base() const
Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::base() const
10505
10506
         std::size_t size() const exprtk_override
10507
0
         {
10508
0
            return value_.size();
10509
0
         }
Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::size() const
Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::size() const
10510
10511
         range_t& range_ref() exprtk_override
10512
0
         {
10513
0
            return range_;
10514
0
         }
Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::range_ref()
10515
10516
         const range_t& range_ref() const exprtk_override
10517
0
         {
10518
0
            return range_;
10519
0
         }
Unexecuted instantiation: exprtk::details::generic_string_range_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::generic_string_range_node<float>::range_ref() const
10520
10521
         inline typename expression_node<T>::node_type type() const exprtk_override
10522
24
         {
10523
24
            return expression_node<T>::e_strgenrange;
10524
24
         }
exprtk::details::generic_string_range_node<double>::type() const
Line
Count
Source
10522
12
         {
10523
12
            return expression_node<T>::e_strgenrange;
10524
12
         }
exprtk::details::generic_string_range_node<float>::type() const
Line
Count
Source
10522
12
         {
10523
12
            return expression_node<T>::e_strgenrange;
10524
12
         }
10525
10526
         inline bool valid() const exprtk_override
10527
12
         {
10528
12
            return initialised_ && branch_.first;
10529
12
         }
exprtk::details::generic_string_range_node<double>::valid() const
Line
Count
Source
10527
6
         {
10528
6
            return initialised_ && branch_.first;
10529
6
         }
exprtk::details::generic_string_range_node<float>::valid() const
Line
Count
Source
10527
6
         {
10528
6
            return initialised_ && branch_.first;
10529
6
         }
10530
10531
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
10532
6
         {
10533
6
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
10534
6
         }
exprtk::details::generic_string_range_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
10532
3
         {
10533
3
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
10534
3
         }
exprtk::details::generic_string_range_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
10532
3
         {
10533
3
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
10534
3
         }
10535
10536
         std::size_t node_depth() const exprtk_override
10537
8
         {
10538
8
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
10539
8
         }
exprtk::details::generic_string_range_node<double>::node_depth() const
Line
Count
Source
10537
4
         {
10538
4
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
10539
4
         }
exprtk::details::generic_string_range_node<float>::node_depth() const
Line
Count
Source
10537
4
         {
10538
4
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
10539
4
         }
10540
10541
      private:
10542
10543
         bool                initialised_;
10544
         branch_t            branch_;
10545
         str_base_ptr        str_base_ptr_;
10546
         irange_ptr          str_range_ptr_;
10547
         mutable range_t     base_range_;
10548
         mutable range_t     range_;
10549
         mutable std::string value_;
10550
      };
10551
10552
      template <typename T>
10553
      class string_concat_node exprtk_final
10554
                               : public binary_node     <T>
10555
                               , public string_base_node<T>
10556
                               , public range_interface <T>
10557
      {
10558
      public:
10559
10560
         typedef typename range_interface<T>::range_t range_t;
10561
         typedef range_interface<T>   irange_t;
10562
         typedef irange_t*            irange_ptr;
10563
         typedef range_t*             range_ptr;
10564
         typedef expression_node <T>* expression_ptr;
10565
         typedef string_base_node<T>* str_base_ptr;
10566
10567
         using binary_node<T>::branch;
10568
10569
         string_concat_node(const operator_type& opr,
10570
                            expression_ptr branch0,
10571
                            expression_ptr branch1)
10572
2
         : binary_node<T>(opr, branch0, branch1)
10573
2
         , initialised_(false)
10574
2
         , str0_base_ptr_ (0)
10575
2
         , str1_base_ptr_ (0)
10576
2
         , str0_range_ptr_(0)
10577
2
         , str1_range_ptr_(0)
10578
2
         {
10579
2
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10580
2
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10581
10582
2
            range_.cache.first  = range_.n0_c.second;
10583
2
            range_.cache.second = range_.n1_c.second;
10584
10585
2
            if (is_generally_string_node(branch(0)))
10586
2
            {
10587
2
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10588
10589
2
               if (0 == str0_base_ptr_)
10590
0
                  return;
10591
10592
2
               str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0));
10593
10594
2
               if (0 == str0_range_ptr_)
10595
0
                  return;
10596
2
            }
10597
10598
2
            if (is_generally_string_node(branch(1)))
10599
2
            {
10600
2
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10601
10602
2
               if (0 == str1_base_ptr_)
10603
0
                  return;
10604
10605
2
               str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1));
10606
10607
2
               if (0 == str1_range_ptr_)
10608
0
                  return;
10609
2
            }
10610
10611
2
            initialised_ = str0_base_ptr_  &&
10612
2
                           str1_base_ptr_  &&
10613
2
                           str0_range_ptr_ &&
10614
2
                           str1_range_ptr_ ;
10615
10616
2
            assert(valid());
10617
2
         }
exprtk::details::string_concat_node<double>::string_concat_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
10572
1
         : binary_node<T>(opr, branch0, branch1)
10573
1
         , initialised_(false)
10574
1
         , str0_base_ptr_ (0)
10575
1
         , str1_base_ptr_ (0)
10576
1
         , str0_range_ptr_(0)
10577
1
         , str1_range_ptr_(0)
10578
1
         {
10579
1
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10580
1
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10581
10582
1
            range_.cache.first  = range_.n0_c.second;
10583
1
            range_.cache.second = range_.n1_c.second;
10584
10585
1
            if (is_generally_string_node(branch(0)))
10586
1
            {
10587
1
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10588
10589
1
               if (0 == str0_base_ptr_)
10590
0
                  return;
10591
10592
1
               str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0));
10593
10594
1
               if (0 == str0_range_ptr_)
10595
0
                  return;
10596
1
            }
10597
10598
1
            if (is_generally_string_node(branch(1)))
10599
1
            {
10600
1
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10601
10602
1
               if (0 == str1_base_ptr_)
10603
0
                  return;
10604
10605
1
               str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1));
10606
10607
1
               if (0 == str1_range_ptr_)
10608
0
                  return;
10609
1
            }
10610
10611
1
            initialised_ = str0_base_ptr_  &&
10612
1
                           str1_base_ptr_  &&
10613
1
                           str0_range_ptr_ &&
10614
1
                           str1_range_ptr_ ;
10615
10616
1
            assert(valid());
10617
1
         }
exprtk::details::string_concat_node<float>::string_concat_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
10572
1
         : binary_node<T>(opr, branch0, branch1)
10573
1
         , initialised_(false)
10574
1
         , str0_base_ptr_ (0)
10575
1
         , str1_base_ptr_ (0)
10576
1
         , str0_range_ptr_(0)
10577
1
         , str1_range_ptr_(0)
10578
1
         {
10579
1
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
10580
1
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
10581
10582
1
            range_.cache.first  = range_.n0_c.second;
10583
1
            range_.cache.second = range_.n1_c.second;
10584
10585
1
            if (is_generally_string_node(branch(0)))
10586
1
            {
10587
1
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10588
10589
1
               if (0 == str0_base_ptr_)
10590
0
                  return;
10591
10592
1
               str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0));
10593
10594
1
               if (0 == str0_range_ptr_)
10595
0
                  return;
10596
1
            }
10597
10598
1
            if (is_generally_string_node(branch(1)))
10599
1
            {
10600
1
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10601
10602
1
               if (0 == str1_base_ptr_)
10603
0
                  return;
10604
10605
1
               str1_range_ptr_ = dynamic_cast<irange_ptr>(branch(1));
10606
10607
1
               if (0 == str1_range_ptr_)
10608
0
                  return;
10609
1
            }
10610
10611
1
            initialised_ = str0_base_ptr_  &&
10612
1
                           str1_base_ptr_  &&
10613
1
                           str0_range_ptr_ &&
10614
1
                           str1_range_ptr_ ;
10615
10616
1
            assert(valid());
10617
1
         }
10618
10619
         inline T value() const exprtk_override
10620
2
         {
10621
2
            branch(0)->value();
10622
2
            branch(1)->value();
10623
10624
2
            std::size_t str0_r0 = 0;
10625
2
            std::size_t str0_r1 = 0;
10626
10627
2
            std::size_t str1_r0 = 0;
10628
2
            std::size_t str1_r1 = 0;
10629
10630
2
            const range_t& range0 = str0_range_ptr_->range_ref();
10631
2
            const range_t& range1 = str1_range_ptr_->range_ref();
10632
10633
2
            if (
10634
2
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10635
2
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10636
2
               )
10637
0
            {
10638
0
               const std::size_t size0 = (str0_r1 - str0_r0);
10639
0
               const std::size_t size1 = (str1_r1 - str1_r0);
10640
10641
0
               value_.assign(str0_base_ptr_->base() + str0_r0, size0);
10642
0
               value_.append(str1_base_ptr_->base() + str1_r0, size1);
10643
10644
0
               range_.n1_c.second  = value_.size();
10645
0
               range_.cache.second = range_.n1_c.second;
10646
0
            }
10647
10648
2
            return std::numeric_limits<T>::quiet_NaN();
10649
2
         }
exprtk::details::string_concat_node<double>::value() const
Line
Count
Source
10620
1
         {
10621
1
            branch(0)->value();
10622
1
            branch(1)->value();
10623
10624
1
            std::size_t str0_r0 = 0;
10625
1
            std::size_t str0_r1 = 0;
10626
10627
1
            std::size_t str1_r0 = 0;
10628
1
            std::size_t str1_r1 = 0;
10629
10630
1
            const range_t& range0 = str0_range_ptr_->range_ref();
10631
1
            const range_t& range1 = str1_range_ptr_->range_ref();
10632
10633
1
            if (
10634
1
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10635
1
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10636
1
               )
10637
0
            {
10638
0
               const std::size_t size0 = (str0_r1 - str0_r0);
10639
0
               const std::size_t size1 = (str1_r1 - str1_r0);
10640
10641
0
               value_.assign(str0_base_ptr_->base() + str0_r0, size0);
10642
0
               value_.append(str1_base_ptr_->base() + str1_r0, size1);
10643
10644
0
               range_.n1_c.second  = value_.size();
10645
0
               range_.cache.second = range_.n1_c.second;
10646
0
            }
10647
10648
1
            return std::numeric_limits<T>::quiet_NaN();
10649
1
         }
exprtk::details::string_concat_node<float>::value() const
Line
Count
Source
10620
1
         {
10621
1
            branch(0)->value();
10622
1
            branch(1)->value();
10623
10624
1
            std::size_t str0_r0 = 0;
10625
1
            std::size_t str0_r1 = 0;
10626
10627
1
            std::size_t str1_r0 = 0;
10628
1
            std::size_t str1_r1 = 0;
10629
10630
1
            const range_t& range0 = str0_range_ptr_->range_ref();
10631
1
            const range_t& range1 = str1_range_ptr_->range_ref();
10632
10633
1
            if (
10634
1
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10635
1
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10636
1
               )
10637
0
            {
10638
0
               const std::size_t size0 = (str0_r1 - str0_r0);
10639
0
               const std::size_t size1 = (str1_r1 - str1_r0);
10640
10641
0
               value_.assign(str0_base_ptr_->base() + str0_r0, size0);
10642
0
               value_.append(str1_base_ptr_->base() + str1_r0, size1);
10643
10644
0
               range_.n1_c.second  = value_.size();
10645
0
               range_.cache.second = range_.n1_c.second;
10646
0
            }
10647
10648
1
            return std::numeric_limits<T>::quiet_NaN();
10649
1
         }
10650
10651
         std::string str() const exprtk_override
10652
0
         {
10653
0
            return value_;
10654
0
         }
Unexecuted instantiation: exprtk::details::string_concat_node<double>::str() const
Unexecuted instantiation: exprtk::details::string_concat_node<float>::str() const
10655
10656
         char_cptr base() const exprtk_override
10657
0
         {
10658
0
            return &value_[0];
10659
0
         }
Unexecuted instantiation: exprtk::details::string_concat_node<double>::base() const
Unexecuted instantiation: exprtk::details::string_concat_node<float>::base() const
10660
10661
         std::size_t size() const exprtk_override
10662
0
         {
10663
0
            return value_.size();
10664
0
         }
Unexecuted instantiation: exprtk::details::string_concat_node<double>::size() const
Unexecuted instantiation: exprtk::details::string_concat_node<float>::size() const
10665
10666
         range_t& range_ref() exprtk_override
10667
0
         {
10668
0
            return range_;
10669
0
         }
Unexecuted instantiation: exprtk::details::string_concat_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::string_concat_node<float>::range_ref()
10670
10671
         const range_t& range_ref() const exprtk_override
10672
0
         {
10673
0
            return range_;
10674
0
         }
Unexecuted instantiation: exprtk::details::string_concat_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::string_concat_node<float>::range_ref() const
10675
10676
         inline typename expression_node<T>::node_type type() const exprtk_override
10677
10
         {
10678
10
            return expression_node<T>::e_strconcat;
10679
10
         }
exprtk::details::string_concat_node<double>::type() const
Line
Count
Source
10677
5
         {
10678
5
            return expression_node<T>::e_strconcat;
10679
5
         }
exprtk::details::string_concat_node<float>::type() const
Line
Count
Source
10677
5
         {
10678
5
            return expression_node<T>::e_strconcat;
10679
5
         }
10680
10681
         inline bool valid() const exprtk_override
10682
4
         {
10683
4
            return initialised_ && binary_node<T>::valid();
10684
4
         }
exprtk::details::string_concat_node<double>::valid() const
Line
Count
Source
10682
2
         {
10683
2
            return initialised_ && binary_node<T>::valid();
10684
2
         }
exprtk::details::string_concat_node<float>::valid() const
Line
Count
Source
10682
2
         {
10683
2
            return initialised_ && binary_node<T>::valid();
10684
2
         }
10685
10686
      private:
10687
10688
         bool                initialised_;
10689
         str_base_ptr        str0_base_ptr_;
10690
         str_base_ptr        str1_base_ptr_;
10691
         irange_ptr          str0_range_ptr_;
10692
         irange_ptr          str1_range_ptr_;
10693
         mutable range_t     range_;
10694
         mutable std::string value_;
10695
      };
10696
10697
      template <typename T>
10698
      class swap_string_node exprtk_final
10699
                             : public binary_node     <T>
10700
                             , public string_base_node<T>
10701
                             , public range_interface <T>
10702
      {
10703
      public:
10704
10705
         typedef typename range_interface<T>::range_t range_t;
10706
         typedef range_t*             range_ptr;
10707
         typedef range_interface<T>   irange_t;
10708
         typedef irange_t*            irange_ptr;
10709
         typedef expression_node <T>* expression_ptr;
10710
         typedef stringvar_node  <T>* strvar_node_ptr;
10711
         typedef string_base_node<T>* str_base_ptr;
10712
10713
         using binary_node<T>::branch;
10714
10715
         swap_string_node(expression_ptr branch0, expression_ptr branch1)
10716
0
         : binary_node<T>(details::e_swap, branch0, branch1)
10717
0
         , initialised_(false)
10718
0
         , str0_node_ptr_(0)
10719
0
         , str1_node_ptr_(0)
10720
0
         {
10721
0
            if (is_string_node(branch(0)))
10722
0
            {
10723
0
               str0_node_ptr_ = static_cast<strvar_node_ptr>(branch(0));
10724
0
            }
10725
10726
0
            if (is_string_node(branch(1)))
10727
0
            {
10728
0
               str1_node_ptr_ = static_cast<strvar_node_ptr>(branch(1));
10729
0
            }
10730
10731
0
            initialised_ = (str0_node_ptr_ && str1_node_ptr_);
10732
0
            assert(valid());
10733
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::swap_string_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::swap_string_node<float>::swap_string_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
10734
10735
         inline T value() const exprtk_override
10736
0
         {
10737
0
            branch(0)->value();
10738
0
            branch(1)->value();
10739
10740
0
            std::swap(str0_node_ptr_->ref(), str1_node_ptr_->ref());
10741
10742
0
            return std::numeric_limits<T>::quiet_NaN();
10743
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::value() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::value() const
10744
10745
         std::string str() const exprtk_override
10746
0
         {
10747
0
            return str0_node_ptr_->str();
10748
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::str() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::str() const
10749
10750
         char_cptr base() const exprtk_override
10751
0
         {
10752
0
           return str0_node_ptr_->base();
10753
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::base() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::base() const
10754
10755
         std::size_t size() const exprtk_override
10756
0
         {
10757
0
            return str0_node_ptr_->size();
10758
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::size() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::size() const
10759
10760
         range_t& range_ref() exprtk_override
10761
0
         {
10762
0
            return str0_node_ptr_->range_ref();
10763
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::swap_string_node<float>::range_ref()
10764
10765
         const range_t& range_ref() const exprtk_override
10766
0
         {
10767
0
            return str0_node_ptr_->range_ref();
10768
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::range_ref() const
10769
10770
         inline typename expression_node<T>::node_type type() const exprtk_override
10771
0
         {
10772
0
            return expression_node<T>::e_strswap;
10773
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::type() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::type() const
10774
10775
         inline bool valid() const exprtk_override
10776
0
         {
10777
0
            return initialised_ && binary_node<T>::valid();
10778
0
         }
Unexecuted instantiation: exprtk::details::swap_string_node<double>::valid() const
Unexecuted instantiation: exprtk::details::swap_string_node<float>::valid() const
10779
10780
      private:
10781
10782
         bool initialised_;
10783
         strvar_node_ptr str0_node_ptr_;
10784
         strvar_node_ptr str1_node_ptr_;
10785
      };
10786
10787
      template <typename T>
10788
      class swap_genstrings_node exprtk_final : public binary_node<T>
10789
      {
10790
      public:
10791
10792
         typedef typename range_interface<T>::range_t range_t;
10793
         typedef range_t*             range_ptr;
10794
         typedef range_interface<T>   irange_t;
10795
         typedef irange_t*            irange_ptr;
10796
         typedef expression_node <T>* expression_ptr;
10797
         typedef string_base_node<T>* str_base_ptr;
10798
10799
         using binary_node<T>::branch;
10800
10801
         swap_genstrings_node(expression_ptr branch0,
10802
                              expression_ptr branch1)
10803
6
         : binary_node<T>(details::e_default, branch0, branch1)
10804
6
         , str0_base_ptr_ (0)
10805
6
         , str1_base_ptr_ (0)
10806
6
         , str0_range_ptr_(0)
10807
6
         , str1_range_ptr_(0)
10808
6
         , initialised_(false)
10809
6
         {
10810
6
            if (is_generally_string_node(branch(0)))
10811
6
            {
10812
6
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10813
10814
6
               if (0 == str0_base_ptr_)
10815
0
                  return;
10816
10817
6
               irange_ptr range = dynamic_cast<irange_ptr>(branch(0));
10818
10819
6
               if (0 == range)
10820
0
                  return;
10821
10822
6
               str0_range_ptr_ = &(range->range_ref());
10823
6
            }
10824
10825
6
            if (is_generally_string_node(branch(1)))
10826
6
            {
10827
6
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10828
10829
6
               if (0 == str1_base_ptr_)
10830
0
                  return;
10831
10832
6
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
10833
10834
6
               if (0 == range)
10835
0
                  return;
10836
10837
6
               str1_range_ptr_ = &(range->range_ref());
10838
6
            }
10839
10840
6
            initialised_ = str0_base_ptr_  &&
10841
6
                           str1_base_ptr_  &&
10842
6
                           str0_range_ptr_ &&
10843
6
                           str1_range_ptr_ ;
10844
10845
6
            assert(valid());
10846
6
         }
exprtk::details::swap_genstrings_node<double>::swap_genstrings_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
10803
3
         : binary_node<T>(details::e_default, branch0, branch1)
10804
3
         , str0_base_ptr_ (0)
10805
3
         , str1_base_ptr_ (0)
10806
3
         , str0_range_ptr_(0)
10807
3
         , str1_range_ptr_(0)
10808
3
         , initialised_(false)
10809
3
         {
10810
3
            if (is_generally_string_node(branch(0)))
10811
3
            {
10812
3
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10813
10814
3
               if (0 == str0_base_ptr_)
10815
0
                  return;
10816
10817
3
               irange_ptr range = dynamic_cast<irange_ptr>(branch(0));
10818
10819
3
               if (0 == range)
10820
0
                  return;
10821
10822
3
               str0_range_ptr_ = &(range->range_ref());
10823
3
            }
10824
10825
3
            if (is_generally_string_node(branch(1)))
10826
3
            {
10827
3
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10828
10829
3
               if (0 == str1_base_ptr_)
10830
0
                  return;
10831
10832
3
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
10833
10834
3
               if (0 == range)
10835
0
                  return;
10836
10837
3
               str1_range_ptr_ = &(range->range_ref());
10838
3
            }
10839
10840
3
            initialised_ = str0_base_ptr_  &&
10841
3
                           str1_base_ptr_  &&
10842
3
                           str0_range_ptr_ &&
10843
3
                           str1_range_ptr_ ;
10844
10845
3
            assert(valid());
10846
3
         }
exprtk::details::swap_genstrings_node<float>::swap_genstrings_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
10803
3
         : binary_node<T>(details::e_default, branch0, branch1)
10804
3
         , str0_base_ptr_ (0)
10805
3
         , str1_base_ptr_ (0)
10806
3
         , str0_range_ptr_(0)
10807
3
         , str1_range_ptr_(0)
10808
3
         , initialised_(false)
10809
3
         {
10810
3
            if (is_generally_string_node(branch(0)))
10811
3
            {
10812
3
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
10813
10814
3
               if (0 == str0_base_ptr_)
10815
0
                  return;
10816
10817
3
               irange_ptr range = dynamic_cast<irange_ptr>(branch(0));
10818
10819
3
               if (0 == range)
10820
0
                  return;
10821
10822
3
               str0_range_ptr_ = &(range->range_ref());
10823
3
            }
10824
10825
3
            if (is_generally_string_node(branch(1)))
10826
3
            {
10827
3
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
10828
10829
3
               if (0 == str1_base_ptr_)
10830
0
                  return;
10831
10832
3
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
10833
10834
3
               if (0 == range)
10835
0
                  return;
10836
10837
3
               str1_range_ptr_ = &(range->range_ref());
10838
3
            }
10839
10840
3
            initialised_ = str0_base_ptr_  &&
10841
3
                           str1_base_ptr_  &&
10842
3
                           str0_range_ptr_ &&
10843
3
                           str1_range_ptr_ ;
10844
10845
3
            assert(valid());
10846
3
         }
10847
10848
         inline T value() const exprtk_override
10849
6
         {
10850
6
            branch(0)->value();
10851
6
            branch(1)->value();
10852
10853
6
            std::size_t str0_r0 = 0;
10854
6
            std::size_t str0_r1 = 0;
10855
10856
6
            std::size_t str1_r0 = 0;
10857
6
            std::size_t str1_r1 = 0;
10858
10859
6
            const range_t& range0 = (*str0_range_ptr_);
10860
6
            const range_t& range1 = (*str1_range_ptr_);
10861
10862
6
            if (
10863
6
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10864
6
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10865
6
               )
10866
6
            {
10867
6
               const std::size_t size0    = range0.cache_size();
10868
6
               const std::size_t size1    = range1.cache_size();
10869
6
               const std::size_t max_size = std::min(size0,size1);
10870
10871
6
               char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0);
10872
6
               char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0);
10873
10874
6
               loop_unroll::details lud(max_size);
10875
6
               char_cptr upper_bound = s0 + lud.upper_bound;
10876
10877
8
               while (s0 < upper_bound)
10878
2
               {
10879
2
                  #define exprtk_loop(N)   \
10880
32
                  std::swap(s0[N], s1[N]); \
10881
2
10882
2
                  exprtk_loop( 0) exprtk_loop( 1)
10883
2
                  exprtk_loop( 2) exprtk_loop( 3)
10884
2
                  #ifndef exprtk_disable_superscalar_unroll
10885
2
                  exprtk_loop( 4) exprtk_loop( 5)
10886
2
                  exprtk_loop( 6) exprtk_loop( 7)
10887
2
                  exprtk_loop( 8) exprtk_loop( 9)
10888
2
                  exprtk_loop(10) exprtk_loop(11)
10889
2
                  exprtk_loop(12) exprtk_loop(13)
10890
2
                  exprtk_loop(14) exprtk_loop(15)
10891
2
                  #endif
10892
10893
2
                  s0 += lud.batch_size;
10894
2
                  s1 += lud.batch_size;
10895
2
               }
10896
10897
6
               int i = 0;
10898
10899
6
               switch (lud.remainder)
10900
6
               {
10901
0
                  #define case_stmt(N)                       \
10902
18
                  case N : { std::swap(s0[i], s1[i]); ++i; } \
10903
18
                  exprtk_fallthrough                         \
10904
0
10905
0
                  #ifndef exprtk_disable_superscalar_unroll
10906
0
                  case_stmt(15) case_stmt(14)
10907
0
                  case_stmt(13) case_stmt(12)
10908
0
                  case_stmt(11) case_stmt(10)
10909
0
                  case_stmt( 9) case_stmt( 8)
10910
2
                  case_stmt( 7) case_stmt( 6)
10911
2
                  case_stmt( 5) case_stmt( 4)
10912
2
                  #endif
10913
2
                  case_stmt( 3) case_stmt( 2)
10914
6
                  case_stmt( 1)
10915
6
                  default: break;
10916
6
               }
10917
10918
6
               #undef exprtk_loop
10919
6
               #undef case_stmt
10920
6
            }
10921
10922
6
            return std::numeric_limits<T>::quiet_NaN();
10923
6
         }
exprtk::details::swap_genstrings_node<double>::value() const
Line
Count
Source
10849
3
         {
10850
3
            branch(0)->value();
10851
3
            branch(1)->value();
10852
10853
3
            std::size_t str0_r0 = 0;
10854
3
            std::size_t str0_r1 = 0;
10855
10856
3
            std::size_t str1_r0 = 0;
10857
3
            std::size_t str1_r1 = 0;
10858
10859
3
            const range_t& range0 = (*str0_range_ptr_);
10860
3
            const range_t& range1 = (*str1_range_ptr_);
10861
10862
3
            if (
10863
3
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10864
3
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10865
3
               )
10866
3
            {
10867
3
               const std::size_t size0    = range0.cache_size();
10868
3
               const std::size_t size1    = range1.cache_size();
10869
3
               const std::size_t max_size = std::min(size0,size1);
10870
10871
3
               char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0);
10872
3
               char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0);
10873
10874
3
               loop_unroll::details lud(max_size);
10875
3
               char_cptr upper_bound = s0 + lud.upper_bound;
10876
10877
4
               while (s0 < upper_bound)
10878
1
               {
10879
1
                  #define exprtk_loop(N)   \
10880
1
                  std::swap(s0[N], s1[N]); \
10881
1
10882
1
                  exprtk_loop( 0) exprtk_loop( 1)
10883
1
                  exprtk_loop( 2) exprtk_loop( 3)
10884
1
                  #ifndef exprtk_disable_superscalar_unroll
10885
1
                  exprtk_loop( 4) exprtk_loop( 5)
10886
1
                  exprtk_loop( 6) exprtk_loop( 7)
10887
1
                  exprtk_loop( 8) exprtk_loop( 9)
10888
1
                  exprtk_loop(10) exprtk_loop(11)
10889
1
                  exprtk_loop(12) exprtk_loop(13)
10890
1
                  exprtk_loop(14) exprtk_loop(15)
10891
1
                  #endif
10892
10893
1
                  s0 += lud.batch_size;
10894
1
                  s1 += lud.batch_size;
10895
1
               }
10896
10897
3
               int i = 0;
10898
10899
3
               switch (lud.remainder)
10900
3
               {
10901
0
                  #define case_stmt(N)                       \
10902
0
                  case N : { std::swap(s0[i], s1[i]); ++i; } \
10903
0
                  exprtk_fallthrough                         \
10904
0
10905
0
                  #ifndef exprtk_disable_superscalar_unroll
10906
0
                  case_stmt(15) case_stmt(14)
10907
0
                  case_stmt(13) case_stmt(12)
10908
0
                  case_stmt(11) case_stmt(10)
10909
0
                  case_stmt( 9) case_stmt( 8)
10910
1
                  case_stmt( 7) case_stmt( 6)
10911
1
                  case_stmt( 5) case_stmt( 4)
10912
1
                  #endif
10913
1
                  case_stmt( 3) case_stmt( 2)
10914
3
                  case_stmt( 1)
10915
3
                  default: break;
10916
3
               }
10917
10918
3
               #undef exprtk_loop
10919
3
               #undef case_stmt
10920
3
            }
10921
10922
3
            return std::numeric_limits<T>::quiet_NaN();
10923
3
         }
exprtk::details::swap_genstrings_node<float>::value() const
Line
Count
Source
10849
3
         {
10850
3
            branch(0)->value();
10851
3
            branch(1)->value();
10852
10853
3
            std::size_t str0_r0 = 0;
10854
3
            std::size_t str0_r1 = 0;
10855
10856
3
            std::size_t str1_r0 = 0;
10857
3
            std::size_t str1_r1 = 0;
10858
10859
3
            const range_t& range0 = (*str0_range_ptr_);
10860
3
            const range_t& range1 = (*str1_range_ptr_);
10861
10862
3
            if (
10863
3
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
10864
3
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
10865
3
               )
10866
3
            {
10867
3
               const std::size_t size0    = range0.cache_size();
10868
3
               const std::size_t size1    = range1.cache_size();
10869
3
               const std::size_t max_size = std::min(size0,size1);
10870
10871
3
               char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0);
10872
3
               char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0);
10873
10874
3
               loop_unroll::details lud(max_size);
10875
3
               char_cptr upper_bound = s0 + lud.upper_bound;
10876
10877
4
               while (s0 < upper_bound)
10878
1
               {
10879
1
                  #define exprtk_loop(N)   \
10880
1
                  std::swap(s0[N], s1[N]); \
10881
1
10882
1
                  exprtk_loop( 0) exprtk_loop( 1)
10883
1
                  exprtk_loop( 2) exprtk_loop( 3)
10884
1
                  #ifndef exprtk_disable_superscalar_unroll
10885
1
                  exprtk_loop( 4) exprtk_loop( 5)
10886
1
                  exprtk_loop( 6) exprtk_loop( 7)
10887
1
                  exprtk_loop( 8) exprtk_loop( 9)
10888
1
                  exprtk_loop(10) exprtk_loop(11)
10889
1
                  exprtk_loop(12) exprtk_loop(13)
10890
1
                  exprtk_loop(14) exprtk_loop(15)
10891
1
                  #endif
10892
10893
1
                  s0 += lud.batch_size;
10894
1
                  s1 += lud.batch_size;
10895
1
               }
10896
10897
3
               int i = 0;
10898
10899
3
               switch (lud.remainder)
10900
3
               {
10901
0
                  #define case_stmt(N)                       \
10902
0
                  case N : { std::swap(s0[i], s1[i]); ++i; } \
10903
0
                  exprtk_fallthrough                         \
10904
0
10905
0
                  #ifndef exprtk_disable_superscalar_unroll
10906
0
                  case_stmt(15) case_stmt(14)
10907
0
                  case_stmt(13) case_stmt(12)
10908
0
                  case_stmt(11) case_stmt(10)
10909
0
                  case_stmt( 9) case_stmt( 8)
10910
1
                  case_stmt( 7) case_stmt( 6)
10911
1
                  case_stmt( 5) case_stmt( 4)
10912
1
                  #endif
10913
1
                  case_stmt( 3) case_stmt( 2)
10914
3
                  case_stmt( 1)
10915
3
                  default: break;
10916
3
               }
10917
10918
3
               #undef exprtk_loop
10919
3
               #undef case_stmt
10920
3
            }
10921
10922
3
            return std::numeric_limits<T>::quiet_NaN();
10923
3
         }
10924
10925
         inline typename expression_node<T>::node_type type() const exprtk_override
10926
60
         {
10927
60
            return expression_node<T>::e_strswap;
10928
60
         }
exprtk::details::swap_genstrings_node<double>::type() const
Line
Count
Source
10926
30
         {
10927
30
            return expression_node<T>::e_strswap;
10928
30
         }
exprtk::details::swap_genstrings_node<float>::type() const
Line
Count
Source
10926
30
         {
10927
30
            return expression_node<T>::e_strswap;
10928
30
         }
10929
10930
         inline bool valid() const exprtk_override
10931
16
         {
10932
16
            return initialised_ && binary_node<T>::valid();
10933
16
         }
exprtk::details::swap_genstrings_node<double>::valid() const
Line
Count
Source
10931
8
         {
10932
8
            return initialised_ && binary_node<T>::valid();
10933
8
         }
exprtk::details::swap_genstrings_node<float>::valid() const
Line
Count
Source
10931
8
         {
10932
8
            return initialised_ && binary_node<T>::valid();
10933
8
         }
10934
10935
      private:
10936
10937
         swap_genstrings_node(const swap_genstrings_node<T>&) exprtk_delete;
10938
         swap_genstrings_node<T>& operator=(const swap_genstrings_node<T>&) exprtk_delete;
10939
10940
         str_base_ptr str0_base_ptr_;
10941
         str_base_ptr str1_base_ptr_;
10942
         range_ptr    str0_range_ptr_;
10943
         range_ptr    str1_range_ptr_;
10944
         bool         initialised_;
10945
      };
10946
10947
      template <typename T>
10948
      class stringvar_size_node exprtk_final : public expression_node<T>
10949
      {
10950
      public:
10951
10952
         static const std::string null_value;
10953
10954
         explicit stringvar_size_node()
10955
         : value_(&null_value)
10956
         {}
10957
10958
         explicit stringvar_size_node(std::string& v)
10959
0
         : value_(&v)
10960
0
         {}
Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::stringvar_size_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::stringvar_size_node(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
10961
10962
         inline T value() const exprtk_override
10963
0
         {
10964
0
            return T((*value_).size());
10965
0
         }
Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::value() const
Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::value() const
10966
10967
         inline typename expression_node<T>::node_type type() const exprtk_override
10968
0
         {
10969
0
            return expression_node<T>::e_stringvarsize;
10970
0
         }
Unexecuted instantiation: exprtk::details::stringvar_size_node<double>::type() const
Unexecuted instantiation: exprtk::details::stringvar_size_node<float>::type() const
10971
10972
      private:
10973
10974
         const std::string* value_;
10975
      };
10976
10977
      template <typename T>
10978
      const std::string stringvar_size_node<T>::null_value = std::string("");
10979
10980
      template <typename T>
10981
      class string_size_node exprtk_final : public expression_node<T>
10982
      {
10983
      public:
10984
10985
         typedef expression_node <T>* expression_ptr;
10986
         typedef string_base_node<T>* str_base_ptr;
10987
         typedef std::pair<expression_ptr,bool>  branch_t;
10988
10989
         explicit string_size_node(expression_ptr branch)
10990
0
         : str_base_ptr_(0)
10991
0
         {
10992
0
            construct_branch_pair(branch_, branch);
10993
10994
0
            if (is_generally_string_node(branch_.first))
10995
0
            {
10996
0
               str_base_ptr_ = dynamic_cast<str_base_ptr>(branch_.first);
10997
0
            }
10998
10999
0
            assert(valid());
11000
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::string_size_node(exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::string_size_node<float>::string_size_node(exprtk::details::expression_node<float>*)
11001
11002
         inline T value() const exprtk_override
11003
0
         {
11004
0
            branch_.first->value();
11005
0
            return T(str_base_ptr_->size());
11006
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::value() const
Unexecuted instantiation: exprtk::details::string_size_node<float>::value() const
11007
11008
         inline typename expression_node<T>::node_type type() const exprtk_override
11009
0
         {
11010
0
            return expression_node<T>::e_stringsize;
11011
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::type() const
Unexecuted instantiation: exprtk::details::string_size_node<float>::type() const
11012
11013
         inline bool valid() const exprtk_override
11014
0
         {
11015
0
            return str_base_ptr_;
11016
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::valid() const
Unexecuted instantiation: exprtk::details::string_size_node<float>::valid() const
11017
11018
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
11019
0
         {
11020
0
            expression_node<T>::ndb_t::collect(branch_, node_delete_list);
11021
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::string_size_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
11022
11023
         std::size_t node_depth() const exprtk_override
11024
0
         {
11025
0
            return expression_node<T>::ndb_t::compute_node_depth(branch_);
11026
0
         }
Unexecuted instantiation: exprtk::details::string_size_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::string_size_node<float>::node_depth() const
11027
11028
      private:
11029
11030
         branch_t     branch_;
11031
         str_base_ptr str_base_ptr_;
11032
      };
11033
11034
      struct asn_assignment
11035
      {
11036
         static inline void execute(std::string& s, char_cptr data, const std::size_t size)
11037
0
         { s.assign(data,size); }
11038
      };
11039
11040
      struct asn_addassignment
11041
      {
11042
         static inline void execute(std::string& s, char_cptr data, const std::size_t size)
11043
0
         { s.append(data,size); }
11044
      };
11045
11046
      template <typename T, typename AssignmentProcess = asn_assignment>
11047
      class assignment_string_node exprtk_final
11048
                                   : public binary_node     <T>
11049
                                   , public string_base_node<T>
11050
                                   , public range_interface <T>
11051
      {
11052
      public:
11053
11054
         typedef typename range_interface<T>::range_t range_t;
11055
         typedef range_t*             range_ptr;
11056
         typedef range_interface <T>  irange_t;
11057
         typedef irange_t*            irange_ptr;
11058
         typedef expression_node <T>* expression_ptr;
11059
         typedef stringvar_node  <T>* strvar_node_ptr;
11060
         typedef string_base_node<T>* str_base_ptr;
11061
11062
         using binary_node<T>::branch;
11063
11064
         assignment_string_node(const operator_type& opr,
11065
                                expression_ptr branch0,
11066
                                expression_ptr branch1)
11067
0
         : binary_node<T>(opr, branch0, branch1)
11068
0
         , initialised_(false)
11069
0
         , str0_base_ptr_ (0)
11070
0
         , str1_base_ptr_ (0)
11071
0
         , str0_node_ptr_ (0)
11072
0
         , str1_range_ptr_(0)
11073
0
         {
11074
0
            if (is_string_node(branch(0)))
11075
0
            {
11076
0
               str0_node_ptr_ = static_cast<strvar_node_ptr>(branch(0));
11077
0
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
11078
0
            }
11079
11080
0
            if (is_generally_string_node(branch(1)))
11081
0
            {
11082
0
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
11083
11084
0
               if (0 == str1_base_ptr_)
11085
0
                  return;
11086
11087
0
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
11088
11089
0
               if (0 == range)
11090
0
                  return;
11091
11092
0
               str1_range_ptr_ = &(range->range_ref());
11093
0
            }
11094
11095
0
            initialised_ = str0_base_ptr_  &&
11096
0
                           str1_base_ptr_  &&
11097
0
                           str0_node_ptr_  &&
11098
0
                           str1_range_ptr_ ;
11099
11100
0
            assert(valid());
11101
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::assignment_string_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::assignment_string_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::assignment_string_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::assignment_string_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
11102
11103
         inline T value() const exprtk_override
11104
0
         {
11105
0
            branch(1)->value();
11106
11107
0
            std::size_t r0 = 0;
11108
0
            std::size_t r1 = 0;
11109
11110
0
            const range_t& range = (*str1_range_ptr_);
11111
11112
0
            if (range(r0, r1, str1_base_ptr_->size()))
11113
0
            {
11114
0
               AssignmentProcess::execute(
11115
0
                  str0_node_ptr_->ref(),
11116
0
                  str1_base_ptr_->base() + r0, (r1 - r0));
11117
11118
0
               branch(0)->value();
11119
0
            }
11120
11121
0
            return std::numeric_limits<T>::quiet_NaN();
11122
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::value() const
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::value() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::value() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::value() const
11123
11124
         std::string str() const exprtk_override
11125
0
         {
11126
0
            return str0_node_ptr_->str();
11127
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::str() const
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::str() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::str() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::str() const
11128
11129
         char_cptr base() const exprtk_override
11130
0
         {
11131
0
           return str0_node_ptr_->base();
11132
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::base() const
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::base() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::base() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::base() const
11133
11134
         std::size_t size() const exprtk_override
11135
0
         {
11136
0
            return str0_node_ptr_->size();
11137
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::size() const
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::size() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::size() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::size() const
11138
11139
         range_t& range_ref() exprtk_override
11140
0
         {
11141
0
            return str0_node_ptr_->range_ref();
11142
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::range_ref()
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::range_ref()
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::range_ref()
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::range_ref()
11143
11144
         const range_t& range_ref() const exprtk_override
11145
0
         {
11146
0
            return str0_node_ptr_->range_ref();
11147
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::range_ref() const
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::range_ref() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::range_ref() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::range_ref() const
11148
11149
         inline typename expression_node<T>::node_type type() const exprtk_override
11150
0
         {
11151
0
            return expression_node<T>::e_strass;
11152
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::type() const
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::type() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::type() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::type() const
11153
11154
         inline bool valid() const exprtk_override
11155
0
         {
11156
0
            return initialised_ && binary_node<T>::valid();
11157
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_assignment>::valid() const
Unexecuted instantiation: exprtk::details::assignment_string_node<double, exprtk::details::asn_addassignment>::valid() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_assignment>::valid() const
Unexecuted instantiation: exprtk::details::assignment_string_node<float, exprtk::details::asn_addassignment>::valid() const
11158
11159
      private:
11160
11161
         bool            initialised_;
11162
         str_base_ptr    str0_base_ptr_;
11163
         str_base_ptr    str1_base_ptr_;
11164
         strvar_node_ptr str0_node_ptr_;
11165
         range_ptr       str1_range_ptr_;
11166
      };
11167
11168
      template <typename T, typename AssignmentProcess = asn_assignment>
11169
      class assignment_string_range_node exprtk_final
11170
                                         : public binary_node     <T>
11171
                                         , public string_base_node<T>
11172
                                         , public range_interface <T>
11173
      {
11174
      public:
11175
11176
         typedef typename range_interface<T>::range_t range_t;
11177
         typedef range_t*              range_ptr;
11178
         typedef range_interface  <T>  irange_t;
11179
         typedef irange_t*             irange_ptr;
11180
         typedef expression_node  <T>* expression_ptr;
11181
         typedef stringvar_node   <T>* strvar_node_ptr;
11182
         typedef string_range_node<T>* str_rng_node_ptr;
11183
         typedef string_base_node <T>* str_base_ptr;
11184
11185
         using binary_node<T>::branch;
11186
11187
         assignment_string_range_node(const operator_type& opr,
11188
                                      expression_ptr branch0,
11189
                                      expression_ptr branch1)
11190
0
         : binary_node<T>(opr, branch0, branch1)
11191
0
         , initialised_(false)
11192
0
         , str0_base_ptr_    (0)
11193
0
         , str1_base_ptr_    (0)
11194
0
         , str0_rng_node_ptr_(0)
11195
0
         , str0_range_ptr_   (0)
11196
0
         , str1_range_ptr_   (0)
11197
0
         {
11198
0
            if (is_string_range_node(branch(0)))
11199
0
            {
11200
0
               str0_rng_node_ptr_ = static_cast<str_rng_node_ptr>(branch(0));
11201
0
               str0_base_ptr_     = dynamic_cast<str_base_ptr>(branch(0));
11202
0
               irange_ptr range   = dynamic_cast<irange_ptr>(branch(0));
11203
11204
0
               if (0 == range)
11205
0
                  return;
11206
11207
0
               str0_range_ptr_ = &(range->range_ref());
11208
0
            }
11209
11210
0
            if (is_generally_string_node(branch(1)))
11211
0
            {
11212
0
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(branch(1));
11213
11214
0
               if (0 == str1_base_ptr_)
11215
0
                  return;
11216
11217
0
               irange_ptr range = dynamic_cast<irange_ptr>(branch(1));
11218
11219
0
               if (0 == range)
11220
0
                  return;
11221
11222
0
               str1_range_ptr_ = &(range->range_ref());
11223
0
            }
11224
11225
0
            initialised_ = str0_base_ptr_     &&
11226
0
                           str1_base_ptr_     &&
11227
0
                           str0_rng_node_ptr_ &&
11228
0
                           str0_range_ptr_    &&
11229
0
                           str1_range_ptr_    ;
11230
11231
0
            assert(valid());
11232
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::assignment_string_range_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::assignment_string_range_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
11233
11234
         inline T value() const exprtk_override
11235
0
         {
11236
0
            branch(0)->value();
11237
0
            branch(1)->value();
11238
11239
0
            std::size_t s0_r0 = 0;
11240
0
            std::size_t s0_r1 = 0;
11241
11242
0
            std::size_t s1_r0 = 0;
11243
0
            std::size_t s1_r1 = 0;
11244
11245
0
            const range_t& range0 = (*str0_range_ptr_);
11246
0
            const range_t& range1 = (*str1_range_ptr_);
11247
11248
0
            if (
11249
0
                  range0(s0_r0, s0_r1, str0_base_ptr_->size()) &&
11250
0
                  range1(s1_r0, s1_r1, str1_base_ptr_->size())
11251
0
               )
11252
0
            {
11253
0
               const std::size_t size = std::min((s0_r1 - s0_r0), (s1_r1 - s1_r0));
11254
11255
0
               std::copy(
11256
0
                  str1_base_ptr_->base() + s1_r0,
11257
0
                  str1_base_ptr_->base() + s1_r0 + size,
11258
0
                  const_cast<char_ptr>(base() + s0_r0));
11259
0
            }
11260
11261
0
            return std::numeric_limits<T>::quiet_NaN();
11262
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::value() const
Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::value() const
11263
11264
         std::string str() const exprtk_override
11265
0
         {
11266
0
            return str0_base_ptr_->str();
11267
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::str() const
Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::str() const
11268
11269
         char_cptr base() const exprtk_override
11270
0
         {
11271
0
            return str0_base_ptr_->base();
11272
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::base() const
Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::base() const
11273
11274
         std::size_t size() const exprtk_override
11275
0
         {
11276
0
            return str0_base_ptr_->size();
11277
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::size() const
Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::size() const
11278
11279
         range_t& range_ref() exprtk_override
11280
0
         {
11281
0
            return str0_rng_node_ptr_->range_ref();
11282
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::range_ref()
Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::range_ref()
11283
11284
         const range_t& range_ref() const exprtk_override
11285
0
         {
11286
0
            return str0_rng_node_ptr_->range_ref();
11287
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::range_ref() const
Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::range_ref() const
11288
11289
         inline typename expression_node<T>::node_type type() const exprtk_override
11290
0
         {
11291
0
            return expression_node<T>::e_strass;
11292
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::type() const
Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::type() const
11293
11294
         inline bool valid() const exprtk_override
11295
0
         {
11296
0
            return initialised_ && binary_node<T>::valid();
11297
0
         }
Unexecuted instantiation: exprtk::details::assignment_string_range_node<double, exprtk::details::asn_assignment>::valid() const
Unexecuted instantiation: exprtk::details::assignment_string_range_node<float, exprtk::details::asn_assignment>::valid() const
11298
11299
      private:
11300
11301
         bool             initialised_;
11302
         str_base_ptr     str0_base_ptr_;
11303
         str_base_ptr     str1_base_ptr_;
11304
         str_rng_node_ptr str0_rng_node_ptr_;
11305
         range_ptr        str0_range_ptr_;
11306
         range_ptr        str1_range_ptr_;
11307
      };
11308
11309
      template <typename T>
11310
      class conditional_string_node exprtk_final
11311
                                    : public trinary_node    <T>
11312
                                    , public string_base_node<T>
11313
                                    , public range_interface <T>
11314
      {
11315
      public:
11316
11317
         typedef typename range_interface<T>::range_t range_t;
11318
         typedef range_t*             range_ptr;
11319
         typedef range_interface <T>  irange_t;
11320
         typedef irange_t*            irange_ptr;
11321
         typedef expression_node <T>* expression_ptr;
11322
         typedef string_base_node<T>* str_base_ptr;
11323
11324
         conditional_string_node(expression_ptr condition,
11325
                                 expression_ptr consequent,
11326
                                 expression_ptr alternative)
11327
0
         : trinary_node<T>(details::e_default, consequent, alternative, condition)
11328
0
         , initialised_(false)
11329
0
         , str0_base_ptr_ (0)
11330
0
         , str1_base_ptr_ (0)
11331
0
         , str0_range_ptr_(0)
11332
0
         , str1_range_ptr_(0)
11333
0
         , condition_  (condition  )
11334
0
         , consequent_ (consequent )
11335
0
         , alternative_(alternative)
11336
0
         {
11337
0
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
11338
0
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
11339
11340
0
            range_.cache.first  = range_.n0_c.second;
11341
0
            range_.cache.second = range_.n1_c.second;
11342
11343
0
            if (is_generally_string_node(trinary_node<T>::branch_[0].first))
11344
0
            {
11345
0
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[0].first);
11346
11347
0
               if (0 == str0_base_ptr_)
11348
0
                  return;
11349
11350
0
               str0_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[0].first);
11351
11352
0
               if (0 == str0_range_ptr_)
11353
0
                  return;
11354
0
            }
11355
11356
0
            if (is_generally_string_node(trinary_node<T>::branch_[1].first))
11357
0
            {
11358
0
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[1].first);
11359
11360
0
               if (0 == str1_base_ptr_)
11361
0
                  return;
11362
11363
0
               str1_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[1].first);
11364
11365
0
               if (0 == str1_range_ptr_)
11366
0
                  return;
11367
0
            }
11368
11369
0
            initialised_ = str0_base_ptr_  &&
11370
0
                           str1_base_ptr_  &&
11371
0
                           str0_range_ptr_ &&
11372
0
                           str1_range_ptr_ ;
11373
11374
0
            assert(valid());
11375
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::conditional_string_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::conditional_string_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
11376
11377
         inline T value() const exprtk_override
11378
0
         {
11379
0
            std::size_t r0 = 0;
11380
0
            std::size_t r1 = 0;
11381
11382
0
            if (is_true(condition_))
11383
0
            {
11384
0
               consequent_->value();
11385
11386
0
               const range_t& range = str0_range_ptr_->range_ref();
11387
11388
0
               if (range(r0, r1, str0_base_ptr_->size()))
11389
0
               {
11390
0
                  const std::size_t size = (r1 - r0);
11391
11392
0
                  value_.assign(str0_base_ptr_->base() + r0, size);
11393
11394
0
                  range_.n1_c.second  = value_.size();
11395
0
                  range_.cache.second = range_.n1_c.second;
11396
11397
0
                  return T(1);
11398
0
               }
11399
0
            }
11400
0
            else
11401
0
            {
11402
0
               alternative_->value();
11403
11404
0
               const range_t& range = str1_range_ptr_->range_ref();
11405
11406
0
               if (range(r0, r1, str1_base_ptr_->size()))
11407
0
               {
11408
0
                  const std::size_t size = (r1 - r0);
11409
11410
0
                  value_.assign(str1_base_ptr_->base() + r0, size);
11411
11412
0
                  range_.n1_c.second  = value_.size();
11413
0
                  range_.cache.second = range_.n1_c.second;
11414
11415
0
                  return T(0);
11416
0
               }
11417
0
            }
11418
11419
0
            return std::numeric_limits<T>::quiet_NaN();
11420
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::value() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::value() const
11421
11422
         std::string str() const exprtk_override
11423
0
         {
11424
0
            return value_;
11425
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::str() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::str() const
11426
11427
         char_cptr base() const exprtk_override
11428
0
         {
11429
0
            return &value_[0];
11430
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::base() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::base() const
11431
11432
         std::size_t size() const exprtk_override
11433
0
         {
11434
0
            return value_.size();
11435
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::size() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::size() const
11436
11437
         range_t& range_ref() exprtk_override
11438
0
         {
11439
0
            return range_;
11440
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::range_ref()
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::range_ref()
11441
11442
         const range_t& range_ref() const exprtk_override
11443
0
         {
11444
0
            return range_;
11445
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::range_ref() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::range_ref() const
11446
11447
         inline typename expression_node<T>::node_type type() const exprtk_override
11448
0
         {
11449
0
            return expression_node<T>::e_strcondition;
11450
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::type() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::type() const
11451
11452
         inline bool valid() const exprtk_override
11453
0
         {
11454
0
            return
11455
0
               initialised_                         &&
11456
0
               condition_  && condition_  ->valid() &&
11457
0
               consequent_ && consequent_ ->valid() &&
11458
0
               alternative_&& alternative_->valid() ;
11459
0
         }
Unexecuted instantiation: exprtk::details::conditional_string_node<double>::valid() const
Unexecuted instantiation: exprtk::details::conditional_string_node<float>::valid() const
11460
11461
      private:
11462
11463
         bool initialised_;
11464
         str_base_ptr str0_base_ptr_;
11465
         str_base_ptr str1_base_ptr_;
11466
         irange_ptr   str0_range_ptr_;
11467
         irange_ptr   str1_range_ptr_;
11468
         mutable range_t     range_;
11469
         mutable std::string value_;
11470
11471
         expression_ptr condition_;
11472
         expression_ptr consequent_;
11473
         expression_ptr alternative_;
11474
      };
11475
11476
      template <typename T>
11477
      class cons_conditional_str_node exprtk_final
11478
                                      : public binary_node     <T>
11479
                                      , public string_base_node<T>
11480
                                      , public range_interface <T>
11481
      {
11482
      public:
11483
11484
         typedef typename range_interface<T>::range_t range_t;
11485
         typedef range_t*             range_ptr;
11486
         typedef range_interface <T>  irange_t;
11487
         typedef irange_t*            irange_ptr;
11488
         typedef expression_node <T>* expression_ptr;
11489
         typedef string_base_node<T>* str_base_ptr;
11490
11491
         using binary_node<T>::branch;
11492
11493
         cons_conditional_str_node(expression_ptr condition,
11494
                                   expression_ptr consequent)
11495
         : binary_node<T>(details::e_default, consequent, condition)
11496
         , initialised_(false)
11497
         , str0_base_ptr_ (0)
11498
         , str0_range_ptr_(0)
11499
         , condition_ (condition )
11500
         , consequent_(consequent)
11501
         {
11502
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
11503
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);
11504
11505
            range_.cache.first  = range_.n0_c.second;
11506
            range_.cache.second = range_.n1_c.second;
11507
11508
            if (is_generally_string_node(branch(0)))
11509
            {
11510
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(branch(0));
11511
11512
               if (0 == str0_base_ptr_)
11513
                  return;
11514
11515
               str0_range_ptr_ = dynamic_cast<irange_ptr>(branch(0));
11516
11517
               if (0 == str0_range_ptr_)
11518
                  return;
11519
            }
11520
11521
            initialised_ = str0_base_ptr_ && str0_range_ptr_ ;
11522
            assert(valid());
11523
         }
11524
11525
         inline T value() const exprtk_override
11526
         {
11527
            if (is_true(condition_))
11528
            {
11529
               consequent_->value();
11530
11531
               const range_t& range = str0_range_ptr_->range_ref();
11532
11533
               std::size_t r0 = 0;
11534
               std::size_t r1 = 0;
11535
11536
               if (range(r0, r1, str0_base_ptr_->size()))
11537
               {
11538
                  const std::size_t size = (r1 - r0);
11539
11540
                  value_.assign(str0_base_ptr_->base() + r0, size);
11541
11542
                  range_.n1_c.second  = value_.size();
11543
                  range_.cache.second = range_.n1_c.second;
11544
11545
                  return T(1);
11546
               }
11547
            }
11548
11549
            return std::numeric_limits<T>::quiet_NaN();
11550
         }
11551
11552
         std::string str() const
11553
         {
11554
            return value_;
11555
         }
11556
11557
         char_cptr base() const
11558
         {
11559
            return &value_[0];
11560
         }
11561
11562
         std::size_t size() const
11563
         {
11564
            return value_.size();
11565
         }
11566
11567
         range_t& range_ref()
11568
         {
11569
            return range_;
11570
         }
11571
11572
         const range_t& range_ref() const
11573
         {
11574
            return range_;
11575
         }
11576
11577
         inline typename expression_node<T>::node_type type() const exprtk_override
11578
         {
11579
            return expression_node<T>::e_strccondition;
11580
         }
11581
11582
         inline bool valid() const exprtk_override
11583
         {
11584
            return
11585
               initialised_                         &&
11586
               condition_  && condition_  ->valid() &&
11587
               consequent_ && consequent_ ->valid() ;
11588
         }
11589
11590
      private:
11591
11592
         bool initialised_;
11593
         str_base_ptr str0_base_ptr_;
11594
         irange_ptr   str0_range_ptr_;
11595
         mutable range_t     range_;
11596
         mutable std::string value_;
11597
11598
         expression_ptr condition_;
11599
         expression_ptr consequent_;
11600
      };
11601
11602
      template <typename T, typename VarArgFunction>
11603
      class str_vararg_node exprtk_final
11604
                            : public expression_node <T>
11605
                            , public string_base_node<T>
11606
                            , public range_interface <T>
11607
      {
11608
      public:
11609
11610
         typedef typename range_interface<T>::range_t range_t;
11611
         typedef range_t*             range_ptr;
11612
         typedef range_interface <T>  irange_t;
11613
         typedef irange_t*            irange_ptr;
11614
         typedef expression_node <T>* expression_ptr;
11615
         typedef string_base_node<T>* str_base_ptr;
11616
         typedef std::pair<expression_ptr,bool> branch_t;
11617
11618
         template <typename Allocator,
11619
                   template <typename, typename> class Sequence>
11620
         explicit str_vararg_node(const Sequence<expression_ptr,Allocator>& arg_list)
11621
0
         : initialised_(false)
11622
0
         , str_base_ptr_ (0)
11623
0
         , str_range_ptr_(0)
11624
0
         {
11625
0
            construct_branch_pair(final_node_, const_cast<expression_ptr>(arg_list.back()));
11626
11627
0
            if (0 == final_node_.first)
11628
0
               return;
11629
0
            else if (!is_generally_string_node(final_node_.first))
11630
0
               return;
11631
11632
0
            str_base_ptr_ = dynamic_cast<str_base_ptr>(final_node_.first);
11633
11634
0
            if (0 == str_base_ptr_)
11635
0
               return;
11636
11637
0
            str_range_ptr_ = dynamic_cast<irange_ptr>(final_node_.first);
11638
11639
0
            if (0 == str_range_ptr_)
11640
0
               return;
11641
11642
0
            if (arg_list.size() > 1)
11643
0
            {
11644
0
               const std::size_t arg_list_size = arg_list.size() - 1;
11645
11646
0
               arg_list_.resize(arg_list_size);
11647
11648
0
               for (std::size_t i = 0; i < arg_list_size; ++i)
11649
0
               {
11650
0
                  if (arg_list[i] && arg_list[i]->valid())
11651
0
                  {
11652
0
                     construct_branch_pair(arg_list_[i], arg_list[i]);
11653
0
                  }
11654
0
                  else
11655
0
                  {
11656
0
                     arg_list_.clear();
11657
0
                     return;
11658
0
                  }
11659
0
               }
11660
11661
0
               initialised_ = true;
11662
0
            }
11663
11664
0
            initialised_ &= str_base_ptr_ && str_range_ptr_;
11665
0
            assert(valid());
11666
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::str_vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::str_vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
11667
11668
         inline T value() const exprtk_override
11669
0
         {
11670
0
            if (!arg_list_.empty())
11671
0
            {
11672
0
               VarArgFunction::process(arg_list_);
11673
0
            }
11674
11675
0
            final_node_.first->value();
11676
11677
0
            return std::numeric_limits<T>::quiet_NaN();
11678
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::value() const
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::value() const
11679
11680
         std::string str() const exprtk_override
11681
0
         {
11682
0
            return str_base_ptr_->str();
11683
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::str() const
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::str() const
11684
11685
         char_cptr base() const exprtk_override
11686
0
         {
11687
0
            return str_base_ptr_->base();
11688
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::base() const
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::base() const
11689
11690
         std::size_t size() const exprtk_override
11691
0
         {
11692
0
            return str_base_ptr_->size();
11693
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::size() const
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::size() const
11694
11695
         range_t& range_ref() exprtk_override
11696
0
         {
11697
0
            return str_range_ptr_->range_ref();
11698
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::range_ref()
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::range_ref()
11699
11700
         const range_t& range_ref() const exprtk_override
11701
0
         {
11702
0
            return str_range_ptr_->range_ref();
11703
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::range_ref() const
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::range_ref() const
11704
11705
         inline typename expression_node<T>::node_type type() const exprtk_override
11706
0
         {
11707
0
            return expression_node<T>::e_stringvararg;
11708
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::type() const
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::type() const
11709
11710
         inline bool valid() const exprtk_override
11711
0
         {
11712
0
            return
11713
0
               initialised_ &&
11714
0
               final_node_.first && final_node_.first->valid();
11715
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::valid() const
11716
11717
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
11718
0
         {
11719
0
            expression_node<T>::ndb_t::collect(final_node_ , node_delete_list);
11720
0
            expression_node<T>::ndb_t::collect(arg_list_   , node_delete_list);
11721
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
11722
11723
         std::size_t node_depth() const exprtk_override
11724
0
         {
11725
0
            return std::max(
11726
0
               expression_node<T>::ndb_t::compute_node_depth(final_node_),
11727
0
               expression_node<T>::ndb_t::compute_node_depth(arg_list_  ));
11728
0
         }
Unexecuted instantiation: exprtk::details::str_vararg_node<double, exprtk::details::vararg_multi_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::str_vararg_node<float, exprtk::details::vararg_multi_op<float> >::node_depth() const
11729
11730
      private:
11731
11732
         bool                  initialised_;
11733
         branch_t              final_node_;
11734
         str_base_ptr          str_base_ptr_;
11735
         irange_ptr            str_range_ptr_;
11736
         std::vector<branch_t> arg_list_;
11737
      };
11738
      #endif
11739
11740
      template <typename T>
11741
      class assert_node exprtk_final : public expression_node<T>
11742
      {
11743
      public:
11744
11745
         typedef expression_node<T>* expression_ptr;
11746
         typedef std::pair<expression_ptr,bool> branch_t;
11747
         typedef string_base_node<T>* str_base_ptr;
11748
         typedef assert_check::assert_context assert_context_t;
11749
11750
         assert_node(expression_ptr   assert_condition_node,
11751
                     expression_ptr   assert_message_node,
11752
                     assert_check_ptr assert_check,
11753
                     assert_context_t context)
11754
0
         : assert_message_str_base_(0)
11755
0
         , assert_check_(assert_check)
11756
0
         , context_(context)
11757
0
         {
11758
0
            construct_branch_pair(assert_condition_node_, assert_condition_node);
11759
0
            construct_branch_pair(assert_message_node_  , assert_message_node  );
11760
11761
0
            #ifndef exprtk_disable_string_capabilities
11762
0
            if (
11763
0
                  assert_message_node_.first &&
11764
0
                  details::is_generally_string_node(assert_message_node_.first)
11765
0
               )
11766
0
            {
11767
0
               assert_message_str_base_ = dynamic_cast<str_base_ptr>(assert_message_node_.first);
11768
0
            }
11769
0
            #endif
11770
11771
0
            assert(valid());
11772
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::assert_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::assert_check*, exprtk::assert_check::assert_context)
Unexecuted instantiation: exprtk::details::assert_node<float>::assert_node(exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::assert_check*, exprtk::assert_check::assert_context)
11773
11774
         inline T value() const exprtk_override
11775
0
         {
11776
0
            if (details::is_true(assert_condition_node_.first->value()))
11777
0
            {
11778
0
               return T(1);
11779
0
            }
11780
11781
0
            #ifndef exprtk_disable_string_capabilities
11782
0
            if (assert_message_node_.first)
11783
0
            {
11784
0
               assert_message_node_.first->value();
11785
0
               assert(assert_message_str_base_);
11786
0
               context_.message = assert_message_str_base_->str();
11787
0
            }
11788
0
            #endif
11789
11790
0
            assert_check_->handle_assert(context_);
11791
0
            return T(0);
11792
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::value() const
Unexecuted instantiation: exprtk::details::assert_node<float>::value() const
11793
11794
         inline typename expression_node<T>::node_type type() const exprtk_override
11795
0
         {
11796
0
            return expression_node<T>::e_assert;
11797
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::type() const
Unexecuted instantiation: exprtk::details::assert_node<float>::type() const
11798
11799
         inline bool valid() const exprtk_override
11800
0
         {
11801
0
            return (
11802
0
                     assert_check_ &&
11803
0
                     assert_condition_node_.first &&
11804
0
                     assert_condition_node_.first->valid()
11805
0
                   ) &&
11806
0
                   (
11807
0
                     (0 == assert_message_node_.first) ||
11808
0
                     (
11809
0
                       assert_message_node_.first &&
11810
0
                       assert_message_str_base_   &&
11811
0
                       assert_message_node_.first->valid() &&
11812
0
                       details::is_generally_string_node(assert_message_node_.first)
11813
0
                     )
11814
0
                   );
11815
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assert_node<float>::valid() const
11816
11817
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
11818
0
         {
11819
0
            expression_node<T>::ndb_t::collect(assert_condition_node_, node_delete_list);
11820
0
            expression_node<T>::ndb_t::collect(assert_message_node_  , node_delete_list);
11821
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::assert_node<float>::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
11822
11823
         std::size_t node_depth() const exprtk_override
11824
0
         {
11825
0
            return expression_node<T>::ndb_t::compute_node_depth
11826
0
               (assert_condition_node_, assert_message_node_);
11827
0
         }
Unexecuted instantiation: exprtk::details::assert_node<double>::node_depth() const
Unexecuted instantiation: exprtk::details::assert_node<float>::node_depth() const
11828
11829
      private:
11830
11831
         branch_t         assert_condition_node_;
11832
         branch_t         assert_message_node_;
11833
         str_base_ptr     assert_message_str_base_;
11834
         assert_check_ptr assert_check_;
11835
         mutable assert_context_t context_;
11836
      };
11837
11838
      template <typename T, std::size_t N>
11839
      inline T axn(const T a, const T x)
11840
0
      {
11841
         // a*x^n
11842
0
         return a * exprtk::details::numeric::fast_exp<T,N>::result(x);
11843
0
      }
Unexecuted instantiation: double exprtk::details::axn<double, 2ul>(double, double)
Unexecuted instantiation: double exprtk::details::axn<double, 3ul>(double, double)
Unexecuted instantiation: double exprtk::details::axn<double, 4ul>(double, double)
Unexecuted instantiation: double exprtk::details::axn<double, 5ul>(double, double)
Unexecuted instantiation: double exprtk::details::axn<double, 6ul>(double, double)
Unexecuted instantiation: double exprtk::details::axn<double, 7ul>(double, double)
Unexecuted instantiation: double exprtk::details::axn<double, 8ul>(double, double)
Unexecuted instantiation: double exprtk::details::axn<double, 9ul>(double, double)
Unexecuted instantiation: float exprtk::details::axn<float, 2ul>(float, float)
Unexecuted instantiation: float exprtk::details::axn<float, 3ul>(float, float)
Unexecuted instantiation: float exprtk::details::axn<float, 4ul>(float, float)
Unexecuted instantiation: float exprtk::details::axn<float, 5ul>(float, float)
Unexecuted instantiation: float exprtk::details::axn<float, 6ul>(float, float)
Unexecuted instantiation: float exprtk::details::axn<float, 7ul>(float, float)
Unexecuted instantiation: float exprtk::details::axn<float, 8ul>(float, float)
Unexecuted instantiation: float exprtk::details::axn<float, 9ul>(float, float)
11844
11845
      template <typename T, std::size_t N>
11846
      inline T axnb(const T a, const T x, const T b)
11847
0
      {
11848
         // a*x^n+b
11849
0
         return a * exprtk::details::numeric::fast_exp<T,N>::result(x) + b;
11850
0
      }
Unexecuted instantiation: double exprtk::details::axnb<double, 2ul>(double, double, double)
Unexecuted instantiation: double exprtk::details::axnb<double, 3ul>(double, double, double)
Unexecuted instantiation: double exprtk::details::axnb<double, 4ul>(double, double, double)
Unexecuted instantiation: double exprtk::details::axnb<double, 5ul>(double, double, double)
Unexecuted instantiation: double exprtk::details::axnb<double, 6ul>(double, double, double)
Unexecuted instantiation: double exprtk::details::axnb<double, 7ul>(double, double, double)
Unexecuted instantiation: double exprtk::details::axnb<double, 8ul>(double, double, double)
Unexecuted instantiation: double exprtk::details::axnb<double, 9ul>(double, double, double)
Unexecuted instantiation: float exprtk::details::axnb<float, 2ul>(float, float, float)
Unexecuted instantiation: float exprtk::details::axnb<float, 3ul>(float, float, float)
Unexecuted instantiation: float exprtk::details::axnb<float, 4ul>(float, float, float)
Unexecuted instantiation: float exprtk::details::axnb<float, 5ul>(float, float, float)
Unexecuted instantiation: float exprtk::details::axnb<float, 6ul>(float, float, float)
Unexecuted instantiation: float exprtk::details::axnb<float, 7ul>(float, float, float)
Unexecuted instantiation: float exprtk::details::axnb<float, 8ul>(float, float, float)
Unexecuted instantiation: float exprtk::details::axnb<float, 9ul>(float, float, float)
11851
11852
      template <typename T>
11853
      struct sf_base
11854
      {
11855
         typedef typename details::functor_t<T>::Type Type;
11856
         typedef typename details::functor_t<T> functor_t;
11857
         typedef typename functor_t::qfunc_t quaternary_functor_t;
11858
         typedef typename functor_t::tfunc_t trinary_functor_t;
11859
         typedef typename functor_t::bfunc_t binary_functor_t;
11860
         typedef typename functor_t::ufunc_t unary_functor_t;
11861
      };
11862
11863
      #define define_sfop3(NN, OP0, OP1)                 \
11864
      template <typename T>                              \
11865
      struct sf##NN##_op : public sf_base<T>             \
11866
      {                                                  \
11867
         typedef typename sf_base<T>::Type const Type;   \
11868
         static inline T process(Type x, Type y, Type z) \
11869
620
         {                                               \
11870
620
            return (OP0);                                \
11871
620
         }                                               \
exprtk::details::sf00_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
4
         {                                               \
11870
4
            return (OP0);                                \
11871
4
         }                                               \
exprtk::details::sf01_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
8
         {                                               \
11870
8
            return (OP0);                                \
11871
8
         }                                               \
exprtk::details::sf02_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
13
         {                                               \
11870
13
            return (OP0);                                \
11871
13
         }                                               \
exprtk::details::sf03_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
13
         {                                               \
11870
13
            return (OP0);                                \
11871
13
         }                                               \
exprtk::details::sf04_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
7
         {                                               \
11870
7
            return (OP0);                                \
11871
7
         }                                               \
exprtk::details::sf05_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
1
         {                                               \
11870
1
            return (OP0);                                \
11871
1
         }                                               \
exprtk::details::sf06_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
4
         {                                               \
11870
4
            return (OP0);                                \
11871
4
         }                                               \
exprtk::details::sf07_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
19
         {                                               \
11870
19
            return (OP0);                                \
11871
19
         }                                               \
exprtk::details::sf08_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
26
         {                                               \
11870
26
            return (OP0);                                \
11871
26
         }                                               \
exprtk::details::sf09_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
11
         {                                               \
11870
11
            return (OP0);                                \
11871
11
         }                                               \
exprtk::details::sf10_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
34
         {                                               \
11870
34
            return (OP0);                                \
11871
34
         }                                               \
exprtk::details::sf11_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
10
         {                                               \
11870
10
            return (OP0);                                \
11871
10
         }                                               \
exprtk::details::sf12_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
14
         {                                               \
11870
14
            return (OP0);                                \
11871
14
         }                                               \
Unexecuted instantiation: exprtk::details::sf13_op<double>::process(double const&, double const&, double const&)
exprtk::details::sf14_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
8
         {                                               \
11870
8
            return (OP0);                                \
11871
8
         }                                               \
exprtk::details::sf15_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
2
         {                                               \
11870
2
            return (OP0);                                \
11871
2
         }                                               \
exprtk::details::sf16_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
3
         {                                               \
11870
3
            return (OP0);                                \
11871
3
         }                                               \
exprtk::details::sf17_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
12
         {                                               \
11870
12
            return (OP0);                                \
11871
12
         }                                               \
Unexecuted instantiation: exprtk::details::sf18_op<double>::process(double const&, double const&, double const&)
exprtk::details::sf19_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
7
         {                                               \
11870
7
            return (OP0);                                \
11871
7
         }                                               \
exprtk::details::sf20_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
8
         {                                               \
11870
8
            return (OP0);                                \
11871
8
         }                                               \
exprtk::details::sf21_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
15
         {                                               \
11870
15
            return (OP0);                                \
11871
15
         }                                               \
exprtk::details::sf22_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
13
         {                                               \
11870
13
            return (OP0);                                \
11871
13
         }                                               \
exprtk::details::sf23_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
11
         {                                               \
11870
11
            return (OP0);                                \
11871
11
         }                                               \
exprtk::details::sf24_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
1
         {                                               \
11870
1
            return (OP0);                                \
11871
1
         }                                               \
exprtk::details::sf25_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
18
         {                                               \
11870
18
            return (OP0);                                \
11871
18
         }                                               \
exprtk::details::sf26_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
17
         {                                               \
11870
17
            return (OP0);                                \
11871
17
         }                                               \
exprtk::details::sf27_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
18
         {                                               \
11870
18
            return (OP0);                                \
11871
18
         }                                               \
exprtk::details::sf28_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
11
         {                                               \
11870
11
            return (OP0);                                \
11871
11
         }                                               \
exprtk::details::sf29_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
1
         {                                               \
11870
1
            return (OP0);                                \
11871
1
         }                                               \
exprtk::details::sf30_op<double>::process(double const&, double const&, double const&)
Line
Count
Source
11869
1
         {                                               \
11870
1
            return (OP0);                                \
11871
1
         }                                               \
Unexecuted instantiation: exprtk::details::sf31_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf32_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf33_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf34_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf35_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf36_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf37_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf38_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf39_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf40_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf41_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf42_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf43_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf44_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf45_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf46_op<double>::process(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf47_op<double>::process(double const&, double const&, double const&)
exprtk::details::sf00_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
4
         {                                               \
11870
4
            return (OP0);                                \
11871
4
         }                                               \
exprtk::details::sf01_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
8
         {                                               \
11870
8
            return (OP0);                                \
11871
8
         }                                               \
exprtk::details::sf02_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
13
         {                                               \
11870
13
            return (OP0);                                \
11871
13
         }                                               \
exprtk::details::sf03_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
13
         {                                               \
11870
13
            return (OP0);                                \
11871
13
         }                                               \
exprtk::details::sf04_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
7
         {                                               \
11870
7
            return (OP0);                                \
11871
7
         }                                               \
exprtk::details::sf05_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
1
         {                                               \
11870
1
            return (OP0);                                \
11871
1
         }                                               \
exprtk::details::sf06_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
4
         {                                               \
11870
4
            return (OP0);                                \
11871
4
         }                                               \
exprtk::details::sf07_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
19
         {                                               \
11870
19
            return (OP0);                                \
11871
19
         }                                               \
exprtk::details::sf08_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
26
         {                                               \
11870
26
            return (OP0);                                \
11871
26
         }                                               \
exprtk::details::sf09_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
11
         {                                               \
11870
11
            return (OP0);                                \
11871
11
         }                                               \
exprtk::details::sf10_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
34
         {                                               \
11870
34
            return (OP0);                                \
11871
34
         }                                               \
exprtk::details::sf11_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
10
         {                                               \
11870
10
            return (OP0);                                \
11871
10
         }                                               \
exprtk::details::sf12_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
14
         {                                               \
11870
14
            return (OP0);                                \
11871
14
         }                                               \
Unexecuted instantiation: exprtk::details::sf13_op<float>::process(float const&, float const&, float const&)
exprtk::details::sf14_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
8
         {                                               \
11870
8
            return (OP0);                                \
11871
8
         }                                               \
exprtk::details::sf15_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
2
         {                                               \
11870
2
            return (OP0);                                \
11871
2
         }                                               \
exprtk::details::sf16_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
3
         {                                               \
11870
3
            return (OP0);                                \
11871
3
         }                                               \
exprtk::details::sf17_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
12
         {                                               \
11870
12
            return (OP0);                                \
11871
12
         }                                               \
Unexecuted instantiation: exprtk::details::sf18_op<float>::process(float const&, float const&, float const&)
exprtk::details::sf19_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
7
         {                                               \
11870
7
            return (OP0);                                \
11871
7
         }                                               \
exprtk::details::sf20_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
8
         {                                               \
11870
8
            return (OP0);                                \
11871
8
         }                                               \
exprtk::details::sf21_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
15
         {                                               \
11870
15
            return (OP0);                                \
11871
15
         }                                               \
exprtk::details::sf22_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
13
         {                                               \
11870
13
            return (OP0);                                \
11871
13
         }                                               \
exprtk::details::sf23_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
11
         {                                               \
11870
11
            return (OP0);                                \
11871
11
         }                                               \
exprtk::details::sf24_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
1
         {                                               \
11870
1
            return (OP0);                                \
11871
1
         }                                               \
exprtk::details::sf25_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
18
         {                                               \
11870
18
            return (OP0);                                \
11871
18
         }                                               \
exprtk::details::sf26_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
17
         {                                               \
11870
17
            return (OP0);                                \
11871
17
         }                                               \
exprtk::details::sf27_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
18
         {                                               \
11870
18
            return (OP0);                                \
11871
18
         }                                               \
exprtk::details::sf28_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
11
         {                                               \
11870
11
            return (OP0);                                \
11871
11
         }                                               \
exprtk::details::sf29_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
1
         {                                               \
11870
1
            return (OP0);                                \
11871
1
         }                                               \
exprtk::details::sf30_op<float>::process(float const&, float const&, float const&)
Line
Count
Source
11869
1
         {                                               \
11870
1
            return (OP0);                                \
11871
1
         }                                               \
Unexecuted instantiation: exprtk::details::sf31_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf32_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf33_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf34_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf35_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf36_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf37_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf38_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf39_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf40_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf41_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf42_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf43_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf44_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf45_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf46_op<float>::process(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf47_op<float>::process(float const&, float const&, float const&)
11872
         static inline std::string id()                  \
11873
336k
         {                                               \
11874
336k
            return (OP1);                                \
11875
336k
         }                                               \
exprtk::details::sf00_op<double>::id()
Line
Count
Source
11873
5.43k
         {                                               \
11874
5.43k
            return (OP1);                                \
11875
5.43k
         }                                               \
exprtk::details::sf01_op<double>::id()
Line
Count
Source
11873
5.16k
         {                                               \
11874
5.16k
            return (OP1);                                \
11875
5.16k
         }                                               \
exprtk::details::sf02_op<double>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf03_op<double>::id()
Line
Count
Source
11873
5.08k
         {                                               \
11874
5.08k
            return (OP1);                                \
11875
5.08k
         }                                               \
exprtk::details::sf04_op<double>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf05_op<double>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf06_op<double>::id()
Line
Count
Source
11873
5.13k
         {                                               \
11874
5.13k
            return (OP1);                                \
11875
5.13k
         }                                               \
exprtk::details::sf07_op<double>::id()
Line
Count
Source
11873
5.09k
         {                                               \
11874
5.09k
            return (OP1);                                \
11875
5.09k
         }                                               \
exprtk::details::sf08_op<double>::id()
Line
Count
Source
11873
5.10k
         {                                               \
11874
5.10k
            return (OP1);                                \
11875
5.10k
         }                                               \
exprtk::details::sf09_op<double>::id()
Line
Count
Source
11873
5.35k
         {                                               \
11874
5.35k
            return (OP1);                                \
11875
5.35k
         }                                               \
exprtk::details::sf10_op<double>::id()
Line
Count
Source
11873
5.21k
         {                                               \
11874
5.21k
            return (OP1);                                \
11875
5.21k
         }                                               \
exprtk::details::sf11_op<double>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf12_op<double>::id()
Line
Count
Source
11873
6.68k
         {                                               \
11874
6.68k
            return (OP1);                                \
11875
6.68k
         }                                               \
exprtk::details::sf13_op<double>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf14_op<double>::id()
Line
Count
Source
11873
5.26k
         {                                               \
11874
5.26k
            return (OP1);                                \
11875
5.26k
         }                                               \
exprtk::details::sf15_op<double>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf16_op<double>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf17_op<double>::id()
Line
Count
Source
11873
5.38k
         {                                               \
11874
5.38k
            return (OP1);                                \
11875
5.38k
         }                                               \
exprtk::details::sf18_op<double>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf19_op<double>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf20_op<double>::id()
Line
Count
Source
11873
5.53k
         {                                               \
11874
5.53k
            return (OP1);                                \
11875
5.53k
         }                                               \
exprtk::details::sf21_op<double>::id()
Line
Count
Source
11873
5.08k
         {                                               \
11874
5.08k
            return (OP1);                                \
11875
5.08k
         }                                               \
exprtk::details::sf22_op<double>::id()
Line
Count
Source
11873
5.19k
         {                                               \
11874
5.19k
            return (OP1);                                \
11875
5.19k
         }                                               \
exprtk::details::sf23_op<double>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf24_op<double>::id()
Line
Count
Source
11873
5.12k
         {                                               \
11874
5.12k
            return (OP1);                                \
11875
5.12k
         }                                               \
exprtk::details::sf25_op<double>::id()
Line
Count
Source
11873
5.08k
         {                                               \
11874
5.08k
            return (OP1);                                \
11875
5.08k
         }                                               \
exprtk::details::sf26_op<double>::id()
Line
Count
Source
11873
5.34k
         {                                               \
11874
5.34k
            return (OP1);                                \
11875
5.34k
         }                                               \
exprtk::details::sf27_op<double>::id()
Line
Count
Source
11873
10.1k
         {                                               \
11874
10.1k
            return (OP1);                                \
11875
10.1k
         }                                               \
exprtk::details::sf28_op<double>::id()
Line
Count
Source
11873
16.2k
         {                                               \
11874
16.2k
            return (OP1);                                \
11875
16.2k
         }                                               \
exprtk::details::sf29_op<double>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf30_op<double>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf00_op<float>::id()
Line
Count
Source
11873
5.43k
         {                                               \
11874
5.43k
            return (OP1);                                \
11875
5.43k
         }                                               \
exprtk::details::sf01_op<float>::id()
Line
Count
Source
11873
5.16k
         {                                               \
11874
5.16k
            return (OP1);                                \
11875
5.16k
         }                                               \
exprtk::details::sf02_op<float>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf03_op<float>::id()
Line
Count
Source
11873
5.08k
         {                                               \
11874
5.08k
            return (OP1);                                \
11875
5.08k
         }                                               \
exprtk::details::sf04_op<float>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf05_op<float>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf06_op<float>::id()
Line
Count
Source
11873
5.13k
         {                                               \
11874
5.13k
            return (OP1);                                \
11875
5.13k
         }                                               \
exprtk::details::sf07_op<float>::id()
Line
Count
Source
11873
5.09k
         {                                               \
11874
5.09k
            return (OP1);                                \
11875
5.09k
         }                                               \
exprtk::details::sf08_op<float>::id()
Line
Count
Source
11873
5.10k
         {                                               \
11874
5.10k
            return (OP1);                                \
11875
5.10k
         }                                               \
exprtk::details::sf09_op<float>::id()
Line
Count
Source
11873
5.25k
         {                                               \
11874
5.25k
            return (OP1);                                \
11875
5.25k
         }                                               \
exprtk::details::sf10_op<float>::id()
Line
Count
Source
11873
5.21k
         {                                               \
11874
5.21k
            return (OP1);                                \
11875
5.21k
         }                                               \
exprtk::details::sf11_op<float>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf12_op<float>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf13_op<float>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf14_op<float>::id()
Line
Count
Source
11873
5.26k
         {                                               \
11874
5.26k
            return (OP1);                                \
11875
5.26k
         }                                               \
exprtk::details::sf15_op<float>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf16_op<float>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf17_op<float>::id()
Line
Count
Source
11873
5.38k
         {                                               \
11874
5.38k
            return (OP1);                                \
11875
5.38k
         }                                               \
exprtk::details::sf18_op<float>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf19_op<float>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf20_op<float>::id()
Line
Count
Source
11873
5.53k
         {                                               \
11874
5.53k
            return (OP1);                                \
11875
5.53k
         }                                               \
exprtk::details::sf21_op<float>::id()
Line
Count
Source
11873
5.08k
         {                                               \
11874
5.08k
            return (OP1);                                \
11875
5.08k
         }                                               \
exprtk::details::sf22_op<float>::id()
Line
Count
Source
11873
5.19k
         {                                               \
11874
5.19k
            return (OP1);                                \
11875
5.19k
         }                                               \
exprtk::details::sf23_op<float>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf24_op<float>::id()
Line
Count
Source
11873
5.12k
         {                                               \
11874
5.12k
            return (OP1);                                \
11875
5.12k
         }                                               \
exprtk::details::sf25_op<float>::id()
Line
Count
Source
11873
5.08k
         {                                               \
11874
5.08k
            return (OP1);                                \
11875
5.08k
         }                                               \
exprtk::details::sf26_op<float>::id()
Line
Count
Source
11873
5.10k
         {                                               \
11874
5.10k
            return (OP1);                                \
11875
5.10k
         }                                               \
exprtk::details::sf27_op<float>::id()
Line
Count
Source
11873
5.08k
         {                                               \
11874
5.08k
            return (OP1);                                \
11875
5.08k
         }                                               \
exprtk::details::sf28_op<float>::id()
Line
Count
Source
11873
5.07k
         {                                               \
11874
5.07k
            return (OP1);                                \
11875
5.07k
         }                                               \
exprtk::details::sf29_op<float>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
exprtk::details::sf30_op<float>::id()
Line
Count
Source
11873
5.06k
         {                                               \
11874
5.06k
            return (OP1);                                \
11875
5.06k
         }                                               \
11876
      };                                                 \
11877
11878
      define_sfop3(00,(x + y) / z       ,"(t+t)/t")
11879
      define_sfop3(01,(x + y) * z       ,"(t+t)*t")
11880
      define_sfop3(02,(x + y) - z       ,"(t+t)-t")
11881
      define_sfop3(03,(x + y) + z       ,"(t+t)+t")
11882
      define_sfop3(04,(x - y) + z       ,"(t-t)+t")
11883
      define_sfop3(05,(x - y) / z       ,"(t-t)/t")
11884
      define_sfop3(06,(x - y) * z       ,"(t-t)*t")
11885
      define_sfop3(07,(x * y) + z       ,"(t*t)+t")
11886
      define_sfop3(08,(x * y) - z       ,"(t*t)-t")
11887
      define_sfop3(09,(x * y) / z       ,"(t*t)/t")
11888
      define_sfop3(10,(x * y) * z       ,"(t*t)*t")
11889
      define_sfop3(11,(x / y) + z       ,"(t/t)+t")
11890
      define_sfop3(12,(x / y) - z       ,"(t/t)-t")
11891
      define_sfop3(13,(x / y) / z       ,"(t/t)/t")
11892
      define_sfop3(14,(x / y) * z       ,"(t/t)*t")
11893
      define_sfop3(15,x / (y + z)       ,"t/(t+t)")
11894
      define_sfop3(16,x / (y - z)       ,"t/(t-t)")
11895
      define_sfop3(17,x / (y * z)       ,"t/(t*t)")
11896
      define_sfop3(18,x / (y / z)       ,"t/(t/t)")
11897
      define_sfop3(19,x * (y + z)       ,"t*(t+t)")
11898
      define_sfop3(20,x * (y - z)       ,"t*(t-t)")
11899
      define_sfop3(21,x * (y * z)       ,"t*(t*t)")
11900
      define_sfop3(22,x * (y / z)       ,"t*(t/t)")
11901
      define_sfop3(23,x - (y + z)       ,"t-(t+t)")
11902
      define_sfop3(24,x - (y - z)       ,"t-(t-t)")
11903
      define_sfop3(25,x - (y / z)       ,"t-(t/t)")
11904
      define_sfop3(26,x - (y * z)       ,"t-(t*t)")
11905
      define_sfop3(27,x + (y * z)       ,"t+(t*t)")
11906
      define_sfop3(28,x + (y / z)       ,"t+(t/t)")
11907
      define_sfop3(29,x + (y + z)       ,"t+(t+t)")
11908
      define_sfop3(30,x + (y - z)       ,"t+(t-t)")
11909
      define_sfop3(31,(axnb<T,2>(x,y,z)),"       ")
11910
      define_sfop3(32,(axnb<T,3>(x,y,z)),"       ")
11911
      define_sfop3(33,(axnb<T,4>(x,y,z)),"       ")
11912
      define_sfop3(34,(axnb<T,5>(x,y,z)),"       ")
11913
      define_sfop3(35,(axnb<T,6>(x,y,z)),"       ")
11914
      define_sfop3(36,(axnb<T,7>(x,y,z)),"       ")
11915
      define_sfop3(37,(axnb<T,8>(x,y,z)),"       ")
11916
      define_sfop3(38,(axnb<T,9>(x,y,z)),"       ")
11917
      define_sfop3(39,x * numeric::log(y)   + z,"")
11918
      define_sfop3(40,x * numeric::log(y)   - z,"")
11919
      define_sfop3(41,x * numeric::log10(y) + z,"")
11920
      define_sfop3(42,x * numeric::log10(y) - z,"")
11921
      define_sfop3(43,x * numeric::sin(y) + z  ,"")
11922
      define_sfop3(44,x * numeric::sin(y) - z  ,"")
11923
      define_sfop3(45,x * numeric::cos(y) + z  ,"")
11924
      define_sfop3(46,x * numeric::cos(y) - z  ,"")
11925
      define_sfop3(47,details::is_true(x) ? y : z,"")
11926
11927
      #define define_sfop4(NN, OP0, OP1)                         \
11928
      template <typename T>                                      \
11929
      struct sf##NN##_op : public sf_base<T>                     \
11930
      {                                                          \
11931
         typedef typename sf_base<T>::Type const Type;           \
11932
         static inline T process(Type x, Type y, Type z, Type w) \
11933
276
         {                                                       \
11934
276
            return (OP0);                                        \
11935
276
         }                                                       \
Unexecuted instantiation: exprtk::details::sf48_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf49_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
Unexecuted instantiation: exprtk::details::sf50_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf51_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf52_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
exprtk::details::sf53_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
Unexecuted instantiation: exprtk::details::sf54_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf55_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf56_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
Unexecuted instantiation: exprtk::details::sf57_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf58_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sf59_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf60_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf61_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
exprtk::details::sf62_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
Unexecuted instantiation: exprtk::details::sf63_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf64_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sf65_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
exprtk::details::sf66_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
exprtk::details::sf67_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sf68_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
6
         {                                                       \
11934
6
            return (OP0);                                        \
11935
6
         }                                                       \
Unexecuted instantiation: exprtk::details::sf69_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf70_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf71_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
Unexecuted instantiation: exprtk::details::sf72_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sf73_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
6
         {                                                       \
11934
6
            return (OP0);                                        \
11935
6
         }                                                       \
exprtk::details::sf74_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
6
         {                                                       \
11934
6
            return (OP0);                                        \
11935
6
         }                                                       \
exprtk::details::sf75_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
exprtk::details::sf76_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sf77_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sf78_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
exprtk::details::sf79_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
Unexecuted instantiation: exprtk::details::sf80_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf81_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf82_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf83_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext00_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
exprtk::details::sfext01_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
exprtk::details::sfext02_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
7
         {                                                       \
11934
7
            return (OP0);                                        \
11935
7
         }                                                       \
exprtk::details::sfext03_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
exprtk::details::sfext04_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
exprtk::details::sfext05_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
exprtk::details::sfext06_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
7
         {                                                       \
11934
7
            return (OP0);                                        \
11935
7
         }                                                       \
exprtk::details::sfext07_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext08_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext09_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext10_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext11_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext12_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext13_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext14_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext15_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext16_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext17_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext18_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext19_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext20_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext21_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext22_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext23_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext24_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext25_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext26_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
8
         {                                                       \
11934
8
            return (OP0);                                        \
11935
8
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext27_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext28_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext29_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext30_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext31_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext32_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext33_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext34_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext35_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext36_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext38_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext39_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
exprtk::details::sfext40_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext41_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext42_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext43_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext44_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext45_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext46_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
exprtk::details::sfext47_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext48_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext49_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext50_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext51_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext52_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext53_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext54_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext55_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext56_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext57_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext58_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sfext59_op<double>::process(double const&, double const&, double const&, double const&)
exprtk::details::sfext60_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sfext61_op<double>::process(double const&, double const&, double const&, double const&)
Line
Count
Source
11933
6
         {                                                       \
11934
6
            return (OP0);                                        \
11935
6
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext37_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf84_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf85_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf86_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf87_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf88_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf89_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf90_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf91_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf92_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf93_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf94_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf95_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf96_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf97_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf98_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf99_op<double>::process(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf48_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf49_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
Unexecuted instantiation: exprtk::details::sf50_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf51_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf52_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
exprtk::details::sf53_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
Unexecuted instantiation: exprtk::details::sf54_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf55_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf56_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
Unexecuted instantiation: exprtk::details::sf57_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf58_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sf59_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf60_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf61_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
exprtk::details::sf62_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
Unexecuted instantiation: exprtk::details::sf63_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf64_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sf65_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
exprtk::details::sf66_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
exprtk::details::sf67_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sf68_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
6
         {                                                       \
11934
6
            return (OP0);                                        \
11935
6
         }                                                       \
Unexecuted instantiation: exprtk::details::sf69_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf70_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf71_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
Unexecuted instantiation: exprtk::details::sf72_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sf73_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
6
         {                                                       \
11934
6
            return (OP0);                                        \
11935
6
         }                                                       \
exprtk::details::sf74_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
6
         {                                                       \
11934
6
            return (OP0);                                        \
11935
6
         }                                                       \
exprtk::details::sf75_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
exprtk::details::sf76_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sf77_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sf78_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
exprtk::details::sf79_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
Unexecuted instantiation: exprtk::details::sf80_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf81_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf82_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf83_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext00_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
exprtk::details::sfext01_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
exprtk::details::sfext02_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
7
         {                                                       \
11934
7
            return (OP0);                                        \
11935
7
         }                                                       \
exprtk::details::sfext03_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
exprtk::details::sfext04_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
exprtk::details::sfext05_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
exprtk::details::sfext06_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
7
         {                                                       \
11934
7
            return (OP0);                                        \
11935
7
         }                                                       \
exprtk::details::sfext07_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
4
         {                                                       \
11934
4
            return (OP0);                                        \
11935
4
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext08_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext09_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext10_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext11_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext12_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext13_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext14_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext15_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext16_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext17_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext18_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext19_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext20_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext21_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext22_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext23_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext24_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext25_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext26_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
8
         {                                                       \
11934
8
            return (OP0);                                        \
11935
8
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext27_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext28_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext29_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext30_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext31_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext32_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext33_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext34_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
2
         {                                                       \
11934
2
            return (OP0);                                        \
11935
2
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext35_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext36_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext38_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext39_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
exprtk::details::sfext40_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
5
         {                                                       \
11934
5
            return (OP0);                                        \
11935
5
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext41_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext42_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext43_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext44_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext45_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext46_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
exprtk::details::sfext47_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext48_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext49_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext50_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext51_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext52_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext53_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext54_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext55_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext56_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext57_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
1
         {                                                       \
11934
1
            return (OP0);                                        \
11935
1
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext58_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sfext59_op<float>::process(float const&, float const&, float const&, float const&)
exprtk::details::sfext60_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
3
         {                                                       \
11934
3
            return (OP0);                                        \
11935
3
         }                                                       \
exprtk::details::sfext61_op<float>::process(float const&, float const&, float const&, float const&)
Line
Count
Source
11933
6
         {                                                       \
11934
6
            return (OP0);                                        \
11935
6
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext37_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf84_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf85_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf86_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf87_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf88_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf89_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf90_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf91_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf92_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf93_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf94_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf95_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf96_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf97_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf98_op<float>::process(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf99_op<float>::process(float const&, float const&, float const&, float const&)
11936
         static inline std::string id()                          \
11937
994k
         {                                                       \
11938
994k
            return (OP1);                                        \
11939
994k
         }                                                       \
exprtk::details::sf48_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf49_op<double>::id()
Line
Count
Source
11937
5.08k
         {                                                       \
11938
5.08k
            return (OP1);                                        \
11939
5.08k
         }                                                       \
exprtk::details::sf50_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf51_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf52_op<double>::id()
Line
Count
Source
11937
5.08k
         {                                                       \
11938
5.08k
            return (OP1);                                        \
11939
5.08k
         }                                                       \
exprtk::details::sf53_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf54_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf55_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf56_op<double>::id()
Line
Count
Source
11937
5.10k
         {                                                       \
11938
5.10k
            return (OP1);                                        \
11939
5.10k
         }                                                       \
exprtk::details::sf57_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf58_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf59_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf60_op<double>::id()
Line
Count
Source
11937
5.08k
         {                                                       \
11938
5.08k
            return (OP1);                                        \
11939
5.08k
         }                                                       \
exprtk::details::sf61_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf62_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf63_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf64_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf65_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf66_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf67_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf68_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf69_op<double>::id()
Line
Count
Source
11937
5.10k
         {                                                       \
11938
5.10k
            return (OP1);                                        \
11939
5.10k
         }                                                       \
exprtk::details::sf70_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf71_op<double>::id()
Line
Count
Source
11937
5.09k
         {                                                       \
11938
5.09k
            return (OP1);                                        \
11939
5.09k
         }                                                       \
exprtk::details::sf72_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf73_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf74_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf75_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf76_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf77_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf78_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf79_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf80_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf81_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf82_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf83_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext00_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext01_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext02_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext03_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext04_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext05_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext06_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext07_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext08_op<double>::id()
Line
Count
Source
11937
5.09k
         {                                                       \
11938
5.09k
            return (OP1);                                        \
11939
5.09k
         }                                                       \
exprtk::details::sfext09_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext10_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext11_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext12_op<double>::id()
Line
Count
Source
11937
5.11k
         {                                                       \
11938
5.11k
            return (OP1);                                        \
11939
5.11k
         }                                                       \
exprtk::details::sfext13_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext14_op<double>::id()
Line
Count
Source
11937
5.23k
         {                                                       \
11938
5.23k
            return (OP1);                                        \
11939
5.23k
         }                                                       \
exprtk::details::sfext15_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext16_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext17_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext18_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext19_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext20_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext21_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext22_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext23_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext24_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext25_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext26_op<double>::id()
Line
Count
Source
11937
5.09k
         {                                                       \
11938
5.09k
            return (OP1);                                        \
11939
5.09k
         }                                                       \
exprtk::details::sfext27_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext28_op<double>::id()
Line
Count
Source
11937
5.15k
         {                                                       \
11938
5.15k
            return (OP1);                                        \
11939
5.15k
         }                                                       \
exprtk::details::sfext29_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext30_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext31_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext32_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext33_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext34_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext35_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext36_op<double>::id()
Line
Count
Source
11937
10.3k
         {                                                       \
11938
10.3k
            return (OP1);                                        \
11939
10.3k
         }                                                       \
exprtk::details::sfext38_op<double>::id()
Line
Count
Source
11937
5.10k
         {                                                       \
11938
5.10k
            return (OP1);                                        \
11939
5.10k
         }                                                       \
exprtk::details::sfext39_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext40_op<double>::id()
Line
Count
Source
11937
5.15k
         {                                                       \
11938
5.15k
            return (OP1);                                        \
11939
5.15k
         }                                                       \
exprtk::details::sfext41_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext42_op<double>::id()
Line
Count
Source
11937
5.10k
         {                                                       \
11938
5.10k
            return (OP1);                                        \
11939
5.10k
         }                                                       \
exprtk::details::sfext43_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext44_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext45_op<double>::id()
Line
Count
Source
11937
5.08k
         {                                                       \
11938
5.08k
            return (OP1);                                        \
11939
5.08k
         }                                                       \
exprtk::details::sfext46_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext47_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext48_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext49_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext50_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext51_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext52_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext53_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext54_op<double>::id()
Line
Count
Source
11937
5.09k
         {                                                       \
11938
5.09k
            return (OP1);                                        \
11939
5.09k
         }                                                       \
exprtk::details::sfext55_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext56_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext57_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext58_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext59_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext60_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext61_op<double>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext37_op<double>::id()
exprtk::details::sf48_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf49_op<float>::id()
Line
Count
Source
11937
5.08k
         {                                                       \
11938
5.08k
            return (OP1);                                        \
11939
5.08k
         }                                                       \
exprtk::details::sf50_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf51_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf52_op<float>::id()
Line
Count
Source
11937
5.08k
         {                                                       \
11938
5.08k
            return (OP1);                                        \
11939
5.08k
         }                                                       \
exprtk::details::sf53_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf54_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf55_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf56_op<float>::id()
Line
Count
Source
11937
5.10k
         {                                                       \
11938
5.10k
            return (OP1);                                        \
11939
5.10k
         }                                                       \
exprtk::details::sf57_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf58_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf59_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf60_op<float>::id()
Line
Count
Source
11937
5.08k
         {                                                       \
11938
5.08k
            return (OP1);                                        \
11939
5.08k
         }                                                       \
exprtk::details::sf61_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf62_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf63_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf64_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf65_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf66_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf67_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf68_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf69_op<float>::id()
Line
Count
Source
11937
5.10k
         {                                                       \
11938
5.10k
            return (OP1);                                        \
11939
5.10k
         }                                                       \
exprtk::details::sf70_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf71_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf72_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf73_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf74_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf75_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf76_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf77_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf78_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf79_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf80_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf81_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf82_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sf83_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext00_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext01_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext02_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext03_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext04_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext05_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext06_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext07_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext08_op<float>::id()
Line
Count
Source
11937
5.09k
         {                                                       \
11938
5.09k
            return (OP1);                                        \
11939
5.09k
         }                                                       \
exprtk::details::sfext09_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext10_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext11_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext12_op<float>::id()
Line
Count
Source
11937
5.11k
         {                                                       \
11938
5.11k
            return (OP1);                                        \
11939
5.11k
         }                                                       \
exprtk::details::sfext13_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext14_op<float>::id()
Line
Count
Source
11937
5.23k
         {                                                       \
11938
5.23k
            return (OP1);                                        \
11939
5.23k
         }                                                       \
exprtk::details::sfext15_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext16_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext17_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext18_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext19_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext20_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext21_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext22_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext23_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext24_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext25_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext26_op<float>::id()
Line
Count
Source
11937
5.09k
         {                                                       \
11938
5.09k
            return (OP1);                                        \
11939
5.09k
         }                                                       \
exprtk::details::sfext27_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext28_op<float>::id()
Line
Count
Source
11937
5.15k
         {                                                       \
11938
5.15k
            return (OP1);                                        \
11939
5.15k
         }                                                       \
exprtk::details::sfext29_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext30_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext31_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext32_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext33_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext34_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext35_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext36_op<float>::id()
Line
Count
Source
11937
10.3k
         {                                                       \
11938
10.3k
            return (OP1);                                        \
11939
10.3k
         }                                                       \
exprtk::details::sfext38_op<float>::id()
Line
Count
Source
11937
5.10k
         {                                                       \
11938
5.10k
            return (OP1);                                        \
11939
5.10k
         }                                                       \
exprtk::details::sfext39_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext40_op<float>::id()
Line
Count
Source
11937
5.15k
         {                                                       \
11938
5.15k
            return (OP1);                                        \
11939
5.15k
         }                                                       \
exprtk::details::sfext41_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext42_op<float>::id()
Line
Count
Source
11937
5.10k
         {                                                       \
11938
5.10k
            return (OP1);                                        \
11939
5.10k
         }                                                       \
exprtk::details::sfext43_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext44_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext45_op<float>::id()
Line
Count
Source
11937
5.08k
         {                                                       \
11938
5.08k
            return (OP1);                                        \
11939
5.08k
         }                                                       \
exprtk::details::sfext46_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext47_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext48_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext49_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext50_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext51_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext52_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext53_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext54_op<float>::id()
Line
Count
Source
11937
5.09k
         {                                                       \
11938
5.09k
            return (OP1);                                        \
11939
5.09k
         }                                                       \
exprtk::details::sfext55_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext56_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext57_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext58_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext59_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext60_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
exprtk::details::sfext61_op<float>::id()
Line
Count
Source
11937
5.06k
         {                                                       \
11938
5.06k
            return (OP1);                                        \
11939
5.06k
         }                                                       \
Unexecuted instantiation: exprtk::details::sfext37_op<float>::id()
11940
      };                                                         \
11941
11942
      define_sfop4(48,(x + ((y + z) / w)),"t+((t+t)/t)")
11943
      define_sfop4(49,(x + ((y + z) * w)),"t+((t+t)*t)")
11944
      define_sfop4(50,(x + ((y - z) / w)),"t+((t-t)/t)")
11945
      define_sfop4(51,(x + ((y - z) * w)),"t+((t-t)*t)")
11946
      define_sfop4(52,(x + ((y * z) / w)),"t+((t*t)/t)")
11947
      define_sfop4(53,(x + ((y * z) * w)),"t+((t*t)*t)")
11948
      define_sfop4(54,(x + ((y / z) + w)),"t+((t/t)+t)")
11949
      define_sfop4(55,(x + ((y / z) / w)),"t+((t/t)/t)")
11950
      define_sfop4(56,(x + ((y / z) * w)),"t+((t/t)*t)")
11951
      define_sfop4(57,(x - ((y + z) / w)),"t-((t+t)/t)")
11952
      define_sfop4(58,(x - ((y + z) * w)),"t-((t+t)*t)")
11953
      define_sfop4(59,(x - ((y - z) / w)),"t-((t-t)/t)")
11954
      define_sfop4(60,(x - ((y - z) * w)),"t-((t-t)*t)")
11955
      define_sfop4(61,(x - ((y * z) / w)),"t-((t*t)/t)")
11956
      define_sfop4(62,(x - ((y * z) * w)),"t-((t*t)*t)")
11957
      define_sfop4(63,(x - ((y / z) / w)),"t-((t/t)/t)")
11958
      define_sfop4(64,(x - ((y / z) * w)),"t-((t/t)*t)")
11959
      define_sfop4(65,(((x + y) * z) - w),"((t+t)*t)-t")
11960
      define_sfop4(66,(((x - y) * z) - w),"((t-t)*t)-t")
11961
      define_sfop4(67,(((x * y) * z) - w),"((t*t)*t)-t")
11962
      define_sfop4(68,(((x / y) * z) - w),"((t/t)*t)-t")
11963
      define_sfop4(69,(((x + y) / z) - w),"((t+t)/t)-t")
11964
      define_sfop4(70,(((x - y) / z) - w),"((t-t)/t)-t")
11965
      define_sfop4(71,(((x * y) / z) - w),"((t*t)/t)-t")
11966
      define_sfop4(72,(((x / y) / z) - w),"((t/t)/t)-t")
11967
      define_sfop4(73,((x * y) + (z * w)),"(t*t)+(t*t)")
11968
      define_sfop4(74,((x * y) - (z * w)),"(t*t)-(t*t)")
11969
      define_sfop4(75,((x * y) + (z / w)),"(t*t)+(t/t)")
11970
      define_sfop4(76,((x * y) - (z / w)),"(t*t)-(t/t)")
11971
      define_sfop4(77,((x / y) + (z / w)),"(t/t)+(t/t)")
11972
      define_sfop4(78,((x / y) - (z / w)),"(t/t)-(t/t)")
11973
      define_sfop4(79,((x / y) - (z * w)),"(t/t)-(t*t)")
11974
      define_sfop4(80,(x / (y + (z * w))),"t/(t+(t*t))")
11975
      define_sfop4(81,(x / (y - (z * w))),"t/(t-(t*t))")
11976
      define_sfop4(82,(x * (y + (z * w))),"t*(t+(t*t))")
11977
      define_sfop4(83,(x * (y - (z * w))),"t*(t-(t*t))")
11978
11979
      define_sfop4(84,(axn<T,2>(x,y) + axn<T,2>(z,w)),"")
11980
      define_sfop4(85,(axn<T,3>(x,y) + axn<T,3>(z,w)),"")
11981
      define_sfop4(86,(axn<T,4>(x,y) + axn<T,4>(z,w)),"")
11982
      define_sfop4(87,(axn<T,5>(x,y) + axn<T,5>(z,w)),"")
11983
      define_sfop4(88,(axn<T,6>(x,y) + axn<T,6>(z,w)),"")
11984
      define_sfop4(89,(axn<T,7>(x,y) + axn<T,7>(z,w)),"")
11985
      define_sfop4(90,(axn<T,8>(x,y) + axn<T,8>(z,w)),"")
11986
      define_sfop4(91,(axn<T,9>(x,y) + axn<T,9>(z,w)),"")
11987
      define_sfop4(92,((details::is_true(x) && details::is_true(y)) ? z : w),"")
11988
      define_sfop4(93,((details::is_true(x) || details::is_true(y)) ? z : w),"")
11989
      define_sfop4(94,((x <  y) ? z : w),"")
11990
      define_sfop4(95,((x <= y) ? z : w),"")
11991
      define_sfop4(96,((x >  y) ? z : w),"")
11992
      define_sfop4(97,((x >= y) ? z : w),"")
11993
      define_sfop4(98,(details::is_true(numeric::equal(x,y)) ? z : w),"")
11994
      define_sfop4(99,(x * numeric::sin(y) + z * numeric::cos(w)),"")
11995
11996
      define_sfop4(ext00,((x + y) - (z * w)),"(t+t)-(t*t)")
11997
      define_sfop4(ext01,((x + y) - (z / w)),"(t+t)-(t/t)")
11998
      define_sfop4(ext02,((x + y) + (z * w)),"(t+t)+(t*t)")
11999
      define_sfop4(ext03,((x + y) + (z / w)),"(t+t)+(t/t)")
12000
      define_sfop4(ext04,((x - y) + (z * w)),"(t-t)+(t*t)")
12001
      define_sfop4(ext05,((x - y) + (z / w)),"(t-t)+(t/t)")
12002
      define_sfop4(ext06,((x - y) - (z * w)),"(t-t)-(t*t)")
12003
      define_sfop4(ext07,((x - y) - (z / w)),"(t-t)-(t/t)")
12004
      define_sfop4(ext08,((x + y) - (z - w)),"(t+t)-(t-t)")
12005
      define_sfop4(ext09,((x + y) + (z - w)),"(t+t)+(t-t)")
12006
      define_sfop4(ext10,((x + y) + (z + w)),"(t+t)+(t+t)")
12007
      define_sfop4(ext11,((x + y) * (z - w)),"(t+t)*(t-t)")
12008
      define_sfop4(ext12,((x + y) / (z - w)),"(t+t)/(t-t)")
12009
      define_sfop4(ext13,((x - y) - (z + w)),"(t-t)-(t+t)")
12010
      define_sfop4(ext14,((x - y) + (z + w)),"(t-t)+(t+t)")
12011
      define_sfop4(ext15,((x - y) * (z + w)),"(t-t)*(t+t)")
12012
      define_sfop4(ext16,((x - y) / (z + w)),"(t-t)/(t+t)")
12013
      define_sfop4(ext17,((x * y) - (z + w)),"(t*t)-(t+t)")
12014
      define_sfop4(ext18,((x / y) - (z + w)),"(t/t)-(t+t)")
12015
      define_sfop4(ext19,((x * y) + (z + w)),"(t*t)+(t+t)")
12016
      define_sfop4(ext20,((x / y) + (z + w)),"(t/t)+(t+t)")
12017
      define_sfop4(ext21,((x * y) + (z - w)),"(t*t)+(t-t)")
12018
      define_sfop4(ext22,((x / y) + (z - w)),"(t/t)+(t-t)")
12019
      define_sfop4(ext23,((x * y) - (z - w)),"(t*t)-(t-t)")
12020
      define_sfop4(ext24,((x / y) - (z - w)),"(t/t)-(t-t)")
12021
      define_sfop4(ext25,((x + y) * (z * w)),"(t+t)*(t*t)")
12022
      define_sfop4(ext26,((x + y) * (z / w)),"(t+t)*(t/t)")
12023
      define_sfop4(ext27,((x + y) / (z * w)),"(t+t)/(t*t)")
12024
      define_sfop4(ext28,((x + y) / (z / w)),"(t+t)/(t/t)")
12025
      define_sfop4(ext29,((x - y) / (z * w)),"(t-t)/(t*t)")
12026
      define_sfop4(ext30,((x - y) / (z / w)),"(t-t)/(t/t)")
12027
      define_sfop4(ext31,((x - y) * (z * w)),"(t-t)*(t*t)")
12028
      define_sfop4(ext32,((x - y) * (z / w)),"(t-t)*(t/t)")
12029
      define_sfop4(ext33,((x * y) * (z + w)),"(t*t)*(t+t)")
12030
      define_sfop4(ext34,((x / y) * (z + w)),"(t/t)*(t+t)")
12031
      define_sfop4(ext35,((x * y) / (z + w)),"(t*t)/(t+t)")
12032
      define_sfop4(ext36,((x / y) / (z + w)),"(t/t)/(t+t)")
12033
      define_sfop4(ext37,((x * y) / (z - w)),"(t*t)/(t-t)")
12034
      define_sfop4(ext38,((x / y) / (z - w)),"(t/t)/(t-t)")
12035
      define_sfop4(ext39,((x * y) * (z - w)),"(t*t)*(t-t)")
12036
      define_sfop4(ext40,((x * y) / (z * w)),"(t*t)/(t*t)")
12037
      define_sfop4(ext41,((x / y) * (z / w)),"(t/t)*(t/t)")
12038
      define_sfop4(ext42,((x / y) * (z - w)),"(t/t)*(t-t)")
12039
      define_sfop4(ext43,((x * y) * (z * w)),"(t*t)*(t*t)")
12040
      define_sfop4(ext44,(x + (y * (z / w))),"t+(t*(t/t))")
12041
      define_sfop4(ext45,(x - (y * (z / w))),"t-(t*(t/t))")
12042
      define_sfop4(ext46,(x + (y / (z * w))),"t+(t/(t*t))")
12043
      define_sfop4(ext47,(x - (y / (z * w))),"t-(t/(t*t))")
12044
      define_sfop4(ext48,(((x - y) - z) * w),"((t-t)-t)*t")
12045
      define_sfop4(ext49,(((x - y) - z) / w),"((t-t)-t)/t")
12046
      define_sfop4(ext50,(((x - y) + z) * w),"((t-t)+t)*t")
12047
      define_sfop4(ext51,(((x - y) + z) / w),"((t-t)+t)/t")
12048
      define_sfop4(ext52,((x + (y - z)) * w),"(t+(t-t))*t")
12049
      define_sfop4(ext53,((x + (y - z)) / w),"(t+(t-t))/t")
12050
      define_sfop4(ext54,((x + y) / (z + w)),"(t+t)/(t+t)")
12051
      define_sfop4(ext55,((x - y) / (z - w)),"(t-t)/(t-t)")
12052
      define_sfop4(ext56,((x + y) * (z + w)),"(t+t)*(t+t)")
12053
      define_sfop4(ext57,((x - y) * (z - w)),"(t-t)*(t-t)")
12054
      define_sfop4(ext58,((x - y) + (z - w)),"(t-t)+(t-t)")
12055
      define_sfop4(ext59,((x - y) - (z - w)),"(t-t)-(t-t)")
12056
      define_sfop4(ext60,((x / y) + (z * w)),"(t/t)+(t*t)")
12057
      define_sfop4(ext61,(((x * y) * z) / w),"((t*t)*t)/t")
12058
12059
      #undef define_sfop3
12060
      #undef define_sfop4
12061
12062
      template <typename T, typename SpecialFunction>
12063
      class sf3_node exprtk_final : public trinary_node<T>
12064
      {
12065
      public:
12066
12067
         typedef expression_node<T>* expression_ptr;
12068
12069
         sf3_node(const operator_type& opr,
12070
                  expression_ptr branch0,
12071
                  expression_ptr branch1,
12072
                  expression_ptr branch2)
12073
18
         : trinary_node<T>(opr, branch0, branch1, branch2)
12074
18
         {}
exprtk::details::sf3_node<double, exprtk::details::sf00_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
12073
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12074
1
         {}
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf01_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf02_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf03_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf04_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf05_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
exprtk::details::sf3_node<double, exprtk::details::sf06_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
12073
8
         : trinary_node<T>(opr, branch0, branch1, branch2)
12074
8
         {}
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf07_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf08_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf09_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf10_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf11_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf12_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf13_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf14_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf15_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf16_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf17_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf18_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf19_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf20_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf21_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf22_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf23_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf24_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf25_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf26_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf27_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf28_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf29_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf30_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf31_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf32_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf33_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf34_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf35_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf36_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf37_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf38_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf39_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf40_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf41_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf42_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf43_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf44_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf45_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf46_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf47_op<double> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
exprtk::details::sf3_node<float, exprtk::details::sf00_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
12073
1
         : trinary_node<T>(opr, branch0, branch1, branch2)
12074
1
         {}
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf01_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf02_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf03_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf04_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf05_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
exprtk::details::sf3_node<float, exprtk::details::sf06_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
12073
8
         : trinary_node<T>(opr, branch0, branch1, branch2)
12074
8
         {}
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf07_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf08_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf09_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf10_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf11_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf12_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf13_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf14_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf15_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf16_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf17_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf18_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf19_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf20_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf21_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf22_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf23_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf24_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf25_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf26_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf27_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf28_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf29_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf30_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf31_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf32_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf33_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf34_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf35_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf36_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf37_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf38_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf39_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf40_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf41_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf42_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf43_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf44_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf45_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf46_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf47_op<float> >::sf3_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12075
12076
         inline T value() const exprtk_override
12077
2
         {
12078
2
            const T x = trinary_node<T>::branch_[0].first->value();
12079
2
            const T y = trinary_node<T>::branch_[1].first->value();
12080
2
            const T z = trinary_node<T>::branch_[2].first->value();
12081
12082
2
            return SpecialFunction::process(x, y, z);
12083
2
         }
exprtk::details::sf3_node<double, exprtk::details::sf00_op<double> >::value() const
Line
Count
Source
12077
1
         {
12078
1
            const T x = trinary_node<T>::branch_[0].first->value();
12079
1
            const T y = trinary_node<T>::branch_[1].first->value();
12080
1
            const T z = trinary_node<T>::branch_[2].first->value();
12081
12082
1
            return SpecialFunction::process(x, y, z);
12083
1
         }
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf01_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf02_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf03_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf04_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf05_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf06_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf07_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf08_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf09_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf10_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf11_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf12_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf13_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf14_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf15_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf16_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf17_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf18_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf19_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf20_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf21_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf22_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf23_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf24_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf25_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf26_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf27_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf28_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf29_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf30_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf31_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf32_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf33_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf34_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf35_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf36_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf37_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf38_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf39_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf40_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf41_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf42_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf43_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf44_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf45_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf46_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<double, exprtk::details::sf47_op<double> >::value() const
exprtk::details::sf3_node<float, exprtk::details::sf00_op<float> >::value() const
Line
Count
Source
12077
1
         {
12078
1
            const T x = trinary_node<T>::branch_[0].first->value();
12079
1
            const T y = trinary_node<T>::branch_[1].first->value();
12080
1
            const T z = trinary_node<T>::branch_[2].first->value();
12081
12082
1
            return SpecialFunction::process(x, y, z);
12083
1
         }
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf01_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf02_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf03_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf04_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf05_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf06_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf07_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf08_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf09_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf10_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf11_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf12_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf13_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf14_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf15_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf16_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf17_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf18_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf19_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf20_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf21_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf22_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf23_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf24_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf25_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf26_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf27_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf28_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf29_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf30_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf31_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf32_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf33_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf34_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf35_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf36_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf37_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf38_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf39_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf40_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf41_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf42_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf43_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf44_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf45_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf46_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_node<float, exprtk::details::sf47_op<float> >::value() const
12084
      };
12085
12086
      template <typename T, typename SpecialFunction>
12087
      class sf4_node exprtk_final : public quaternary_node<T>
12088
      {
12089
      public:
12090
12091
         typedef expression_node<T>* expression_ptr;
12092
12093
         sf4_node(const operator_type& opr,
12094
                  expression_ptr branch0,
12095
                  expression_ptr branch1,
12096
                  expression_ptr branch2,
12097
                  expression_ptr branch3)
12098
0
         : quaternary_node<T>(opr, branch0, branch1, branch2, branch3)
12099
0
         {}
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf48_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf49_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf50_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf51_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf52_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf53_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf54_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf55_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf56_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf57_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf58_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf59_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf60_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf61_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf62_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf63_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf64_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf65_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf66_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf67_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf68_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf69_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf70_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf71_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf72_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf73_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf74_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf75_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf76_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf77_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf78_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf79_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf80_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf81_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf82_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf83_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf84_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf85_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf86_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf87_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf88_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf89_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf90_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf91_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf92_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf93_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf94_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf95_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf96_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf97_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf98_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf99_op<double> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf48_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf49_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf50_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf51_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf52_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf53_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf54_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf55_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf56_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf57_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf58_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf59_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf60_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf61_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf62_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf63_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf64_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf65_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf66_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf67_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf68_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf69_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf70_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf71_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf72_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf73_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf74_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf75_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf76_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf77_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf78_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf79_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf80_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf81_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf82_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf83_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf84_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf85_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf86_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf87_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf88_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf89_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf90_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf91_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf92_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf93_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf94_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf95_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf96_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf97_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf98_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf99_op<float> >::sf4_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12100
12101
         inline T value() const exprtk_override
12102
0
         {
12103
0
            const T x = quaternary_node<T>::branch_[0].first->value();
12104
0
            const T y = quaternary_node<T>::branch_[1].first->value();
12105
0
            const T z = quaternary_node<T>::branch_[2].first->value();
12106
0
            const T w = quaternary_node<T>::branch_[3].first->value();
12107
12108
0
            return SpecialFunction::process(x, y, z, w);
12109
0
         }
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf48_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf49_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf50_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf51_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf52_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf53_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf54_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf55_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf56_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf57_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf58_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf59_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf60_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf61_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf62_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf63_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf64_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf65_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf66_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf67_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf68_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf69_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf70_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf71_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf72_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf73_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf74_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf75_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf76_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf77_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf78_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf79_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf80_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf81_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf82_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf83_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf84_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf85_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf86_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf87_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf88_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf89_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf90_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf91_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf92_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf93_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf94_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf95_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf96_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf97_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf98_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<double, exprtk::details::sf99_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf48_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf49_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf50_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf51_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf52_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf53_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf54_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf55_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf56_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf57_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf58_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf59_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf60_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf61_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf62_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf63_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf64_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf65_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf66_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf67_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf68_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf69_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf70_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf71_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf72_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf73_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf74_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf75_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf76_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf77_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf78_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf79_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf80_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf81_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf82_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf83_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf84_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf85_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf86_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf87_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf88_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf89_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf90_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf91_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf92_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf93_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf94_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf95_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf96_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf97_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf98_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_node<float, exprtk::details::sf99_op<float> >::value() const
12110
      };
12111
12112
      template <typename T, typename SpecialFunction>
12113
      class sf3_var_node exprtk_final : public expression_node<T>
12114
      {
12115
      public:
12116
12117
         typedef expression_node<T>* expression_ptr;
12118
12119
         sf3_var_node(const T& v0, const T& v1, const T& v2)
12120
0
         : v0_(v0)
12121
0
         , v1_(v1)
12122
0
         , v2_(v2)
12123
0
         {}
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf00_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf01_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf02_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf03_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf04_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf05_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf06_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf07_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf08_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf09_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf10_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf11_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf12_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf13_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf14_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf15_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf16_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf17_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf18_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf19_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf20_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf21_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf22_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf23_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf24_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf25_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf26_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf27_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf28_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf29_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf30_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf31_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf32_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf33_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf34_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf35_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf36_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf37_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf38_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf39_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf40_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf41_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf42_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf43_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf44_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf45_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf46_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf47_op<double> >::sf3_var_node(double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf00_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf01_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf02_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf03_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf04_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf05_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf06_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf07_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf08_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf09_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf10_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf11_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf12_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf13_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf14_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf15_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf16_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf17_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf18_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf19_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf20_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf21_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf22_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf23_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf24_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf25_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf26_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf27_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf28_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf29_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf30_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf31_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf32_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf33_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf34_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf35_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf36_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf37_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf38_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf39_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf40_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf41_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf42_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf43_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf44_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf45_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf46_op<float> >::sf3_var_node(float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf47_op<float> >::sf3_var_node(float const&, float const&, float const&)
12124
12125
         inline T value() const exprtk_override
12126
0
         {
12127
0
            return SpecialFunction::process(v0_, v1_, v2_);
12128
0
         }
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf00_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf01_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf02_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf03_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf04_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf05_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf06_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf07_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf08_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf09_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf10_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf11_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf12_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf13_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf14_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf15_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf16_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf17_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf18_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf19_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf20_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf21_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf22_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf23_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf24_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf25_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf26_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf27_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf28_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf29_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf30_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf31_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf32_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf33_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf34_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf35_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf36_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf37_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf38_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf39_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf40_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf41_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf42_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf43_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf44_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf45_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf46_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf47_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf00_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf01_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf02_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf03_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf04_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf05_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf06_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf07_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf08_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf09_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf10_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf11_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf12_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf13_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf14_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf15_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf16_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf17_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf18_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf19_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf20_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf21_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf22_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf23_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf24_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf25_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf26_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf27_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf28_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf29_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf30_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf31_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf32_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf33_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf34_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf35_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf36_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf37_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf38_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf39_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf40_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf41_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf42_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf43_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf44_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf45_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf46_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf47_op<float> >::value() const
12129
12130
         inline typename expression_node<T>::node_type type() const exprtk_override
12131
0
         {
12132
0
            return expression_node<T>::e_trinary;
12133
0
         }
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf00_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf01_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf02_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf03_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf04_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf05_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf06_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf07_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf08_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf09_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf10_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf11_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf12_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf13_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf14_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf15_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf16_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf17_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf18_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf19_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf20_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf21_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf22_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf23_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf24_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf25_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf26_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf27_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf28_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf29_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf30_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf31_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf32_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf33_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf34_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf35_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf36_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf37_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf38_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf39_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf40_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf41_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf42_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf43_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf44_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf45_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf46_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<double, exprtk::details::sf47_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf00_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf01_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf02_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf03_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf04_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf05_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf06_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf07_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf08_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf09_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf10_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf11_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf12_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf13_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf14_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf15_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf16_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf17_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf18_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf19_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf20_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf21_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf22_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf23_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf24_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf25_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf26_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf27_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf28_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf29_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf30_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf31_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf32_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf33_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf34_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf35_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf36_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf37_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf38_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf39_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf40_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf41_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf42_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf43_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf44_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf45_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf46_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf3_var_node<float, exprtk::details::sf47_op<float> >::type() const
12134
12135
      private:
12136
12137
         sf3_var_node(const sf3_var_node<T,SpecialFunction>&) exprtk_delete;
12138
         sf3_var_node<T,SpecialFunction>& operator=(const sf3_var_node<T,SpecialFunction>&) exprtk_delete;
12139
12140
         const T& v0_;
12141
         const T& v1_;
12142
         const T& v2_;
12143
      };
12144
12145
      template <typename T, typename SpecialFunction>
12146
      class sf4_var_node exprtk_final : public expression_node<T>
12147
      {
12148
      public:
12149
12150
         typedef expression_node<T>* expression_ptr;
12151
12152
         sf4_var_node(const T& v0, const T& v1, const T& v2, const T& v3)
12153
0
         : v0_(v0)
12154
0
         , v1_(v1)
12155
0
         , v2_(v2)
12156
0
         , v3_(v3)
12157
0
         {}
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf48_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf49_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf50_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf51_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf52_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf53_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf54_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf55_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf56_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf57_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf58_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf59_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf60_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf61_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf62_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf63_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf64_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf65_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf66_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf67_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf68_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf69_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf70_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf71_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf72_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf73_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf74_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf75_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf76_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf77_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf78_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf79_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf80_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf81_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf82_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf83_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf84_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf85_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf86_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf87_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf88_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf89_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf90_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf91_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf92_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf93_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf94_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf95_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf96_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf97_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf98_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf99_op<double> >::sf4_var_node(double const&, double const&, double const&, double const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf48_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf49_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf50_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf51_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf52_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf53_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf54_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf55_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf56_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf57_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf58_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf59_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf60_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf61_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf62_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf63_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf64_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf65_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf66_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf67_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf68_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf69_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf70_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf71_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf72_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf73_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf74_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf75_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf76_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf77_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf78_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf79_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf80_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf81_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf82_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf83_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf84_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf85_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf86_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf87_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf88_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf89_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf90_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf91_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf92_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf93_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf94_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf95_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf96_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf97_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf98_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf99_op<float> >::sf4_var_node(float const&, float const&, float const&, float const&)
12158
12159
         inline T value() const exprtk_override
12160
0
         {
12161
0
            return SpecialFunction::process(v0_, v1_, v2_, v3_);
12162
0
         }
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf48_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf49_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf50_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf51_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf52_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf53_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf54_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf55_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf56_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf57_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf58_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf59_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf60_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf61_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf62_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf63_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf64_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf65_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf66_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf67_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf68_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf69_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf70_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf71_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf72_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf73_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf74_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf75_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf76_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf77_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf78_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf79_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf80_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf81_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf82_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf83_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf84_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf85_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf86_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf87_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf88_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf89_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf90_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf91_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf92_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf93_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf94_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf95_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf96_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf97_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf98_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf99_op<double> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf48_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf49_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf50_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf51_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf52_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf53_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf54_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf55_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf56_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf57_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf58_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf59_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf60_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf61_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf62_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf63_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf64_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf65_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf66_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf67_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf68_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf69_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf70_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf71_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf72_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf73_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf74_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf75_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf76_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf77_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf78_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf79_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf80_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf81_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf82_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf83_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf84_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf85_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf86_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf87_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf88_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf89_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf90_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf91_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf92_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf93_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf94_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf95_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf96_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf97_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf98_op<float> >::value() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf99_op<float> >::value() const
12163
12164
         inline typename expression_node<T>::node_type type() const exprtk_override
12165
0
         {
12166
0
            return expression_node<T>::e_trinary;
12167
0
         }
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf48_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf49_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf50_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf51_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf52_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf53_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf54_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf55_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf56_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf57_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf58_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf59_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf60_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf61_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf62_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf63_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf64_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf65_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf66_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf67_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf68_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf69_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf70_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf71_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf72_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf73_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf74_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf75_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf76_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf77_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf78_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf79_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf80_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf81_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf82_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf83_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf84_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf85_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf86_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf87_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf88_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf89_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf90_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf91_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf92_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf93_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf94_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf95_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf96_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf97_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf98_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<double, exprtk::details::sf99_op<double> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf48_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf49_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf50_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf51_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf52_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf53_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf54_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf55_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf56_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf57_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf58_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf59_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf60_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf61_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf62_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf63_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf64_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf65_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf66_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf67_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf68_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf69_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf70_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf71_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf72_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf73_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf74_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf75_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf76_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf77_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf78_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf79_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf80_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf81_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf82_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf83_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf84_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf85_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf86_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf87_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf88_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf89_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf90_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf91_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf92_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf93_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf94_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf95_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf96_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf97_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf98_op<float> >::type() const
Unexecuted instantiation: exprtk::details::sf4_var_node<float, exprtk::details::sf99_op<float> >::type() const
12168
12169
      private:
12170
12171
         sf4_var_node(const sf4_var_node<T,SpecialFunction>&) exprtk_delete;
12172
         sf4_var_node<T,SpecialFunction>& operator=(const sf4_var_node<T,SpecialFunction>&) exprtk_delete;
12173
12174
         const T& v0_;
12175
         const T& v1_;
12176
         const T& v2_;
12177
         const T& v3_;
12178
      };
12179
12180
      template <typename T, typename VarArgFunction>
12181
      class vararg_node exprtk_final : public expression_node<T>
12182
      {
12183
      public:
12184
12185
         typedef expression_node<T>* expression_ptr;
12186
         typedef std::pair<expression_ptr,bool> branch_t;
12187
12188
         template <typename Allocator,
12189
                   template <typename, typename> class Sequence>
12190
         explicit vararg_node(const Sequence<expression_ptr,Allocator>& arg_list)
12191
14
         : initialised_(false)
12192
14
         {
12193
14
            arg_list_.resize(arg_list.size());
12194
12195
66
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12196
52
            {
12197
52
               if (arg_list[i] && arg_list[i]->valid())
12198
52
               {
12199
52
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12200
52
               }
12201
0
               else
12202
0
               {
12203
0
                  arg_list_.clear();
12204
0
                  return;
12205
0
               }
12206
52
            }
12207
12208
14
            initialised_ = (arg_list_.size() == arg_list.size());
12209
14
            assert(valid());
12210
14
         }
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Line
Count
Source
12191
7
         : initialised_(false)
12192
7
         {
12193
7
            arg_list_.resize(arg_list.size());
12194
12195
33
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12196
26
            {
12197
26
               if (arg_list[i] && arg_list[i]->valid())
12198
26
               {
12199
26
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12200
26
               }
12201
0
               else
12202
0
               {
12203
0
                  arg_list_.clear();
12204
0
                  return;
12205
0
               }
12206
26
            }
12207
12208
7
            initialised_ = (arg_list_.size() == arg_list.size());
12209
7
            assert(valid());
12210
7
         }
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::vararg_node<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Line
Count
Source
12191
7
         : initialised_(false)
12192
7
         {
12193
7
            arg_list_.resize(arg_list.size());
12194
12195
33
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12196
26
            {
12197
26
               if (arg_list[i] && arg_list[i]->valid())
12198
26
               {
12199
26
                  construct_branch_pair(arg_list_[i],arg_list[i]);
12200
26
               }
12201
0
               else
12202
0
               {
12203
0
                  arg_list_.clear();
12204
0
                  return;
12205
0
               }
12206
26
            }
12207
12208
7
            initialised_ = (arg_list_.size() == arg_list.size());
12209
7
            assert(valid());
12210
7
         }
12211
12212
         inline T value() const exprtk_override
12213
14
         {
12214
14
            return VarArgFunction::process(arg_list_);
12215
14
         }
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::value() const
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::value() const
Line
Count
Source
12213
7
         {
12214
7
            return VarArgFunction::process(arg_list_);
12215
7
         }
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::value() const
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::value() const
Line
Count
Source
12213
7
         {
12214
7
            return VarArgFunction::process(arg_list_);
12215
7
         }
12216
12217
         inline typename expression_node<T>::node_type type() const exprtk_override
12218
28
         {
12219
28
            return expression_node<T>::e_vararg;
12220
28
         }
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::type() const
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::type() const
Line
Count
Source
12218
14
         {
12219
14
            return expression_node<T>::e_vararg;
12220
14
         }
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::type() const
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::type() const
Line
Count
Source
12218
14
         {
12219
14
            return expression_node<T>::e_vararg;
12220
14
         }
12221
12222
         inline bool valid() const exprtk_override
12223
28
         {
12224
28
            return initialised_;
12225
28
         }
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::valid() const
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::valid() const
Line
Count
Source
12223
14
         {
12224
14
            return initialised_;
12225
14
         }
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::valid() const
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::valid() const
Line
Count
Source
12223
14
         {
12224
14
            return initialised_;
12225
14
         }
12226
12227
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
12228
14
         {
12229
14
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12230
14
         }
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Line
Count
Source
12228
7
         {
12229
7
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12230
7
         }
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Line
Count
Source
12228
7
         {
12229
7
            expression_node<T>::ndb_t::collect(arg_list_, node_delete_list);
12230
7
         }
12231
12232
         std::size_t node_depth() const exprtk_override
12233
14
         {
12234
14
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12235
14
         }
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_add_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mul_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_avg_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_min_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_max_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mand_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<double, exprtk::details::vararg_mor_op<double> >::node_depth() const
exprtk::details::vararg_node<double, exprtk::details::vararg_multi_op<double> >::node_depth() const
Line
Count
Source
12233
7
         {
12234
7
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12235
7
         }
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_add_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mul_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_avg_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_min_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_max_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mand_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vararg_node<float, exprtk::details::vararg_mor_op<float> >::node_depth() const
exprtk::details::vararg_node<float, exprtk::details::vararg_multi_op<float> >::node_depth() const
Line
Count
Source
12233
7
         {
12234
7
            return expression_node<T>::ndb_t::compute_node_depth(arg_list_);
12235
7
         }
12236
12237
         std::size_t size() const
12238
         {
12239
            return arg_list_.size();
12240
         }
12241
12242
         expression_ptr operator[](const std::size_t& index) const
12243
         {
12244
            return arg_list_[index].first;
12245
         }
12246
12247
      private:
12248
12249
         std::vector<branch_t> arg_list_;
12250
         bool initialised_;
12251
      };
12252
12253
      template <typename T, typename VarArgFunction>
12254
      class vararg_varnode exprtk_final : public expression_node<T>
12255
      {
12256
      public:
12257
12258
         typedef expression_node<T>* expression_ptr;
12259
12260
         template <typename Allocator,
12261
                   template <typename, typename> class Sequence>
12262
         explicit vararg_varnode(const Sequence<expression_ptr,Allocator>& arg_list)
12263
0
         : initialised_(false)
12264
0
         {
12265
0
            arg_list_.resize(arg_list.size());
12266
12267
0
            for (std::size_t i = 0; i < arg_list.size(); ++i)
12268
0
            {
12269
0
               if (arg_list[i] && arg_list[i]->valid() && is_variable_node(arg_list[i]))
12270
0
               {
12271
0
                  variable_node<T>* var_node_ptr = static_cast<variable_node<T>*>(arg_list[i]);
12272
0
                  arg_list_[i] = (&var_node_ptr->ref());
12273
0
               }
12274
0
               else
12275
0
               {
12276
0
                  arg_list_.clear();
12277
0
                  return;
12278
0
               }
12279
0
            }
12280
12281
0
            initialised_ = (arg_list.size() == arg_list_.size());
12282
0
            assert(valid());
12283
0
         }
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mul_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_avg_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_min_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_max_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mand_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<double>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<double>*, std::__1::allocator<exprtk::details::expression_node<double>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mul_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_avg_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_min_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_max_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mand_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::vararg_varnode<std::__1::allocator<exprtk::details::expression_node<float>*>, std::__1::vector>(std::__1::vector<exprtk::details::expression_node<float>*, std::__1::allocator<exprtk::details::expression_node<float>*> > const&)
12284
12285
         inline T value() const exprtk_override
12286
0
         {
12287
0
            return VarArgFunction::process(arg_list_);
12288
0
         }
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_avg_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_min_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_max_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mand_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_avg_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_min_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_max_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mand_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::value() const
12289
12290
         inline typename expression_node<T>::node_type type() const exprtk_override
12291
0
         {
12292
0
            return expression_node<T>::e_vararg;
12293
0
         }
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mul_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_avg_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_min_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_max_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mand_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mul_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_avg_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_min_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_max_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mand_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::type() const
12294
12295
         inline bool valid() const exprtk_override
12296
0
         {
12297
0
            return initialised_;
12298
0
         }
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_avg_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_min_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_max_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mand_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_mor_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<double, exprtk::details::vararg_multi_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_avg_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_min_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_max_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mand_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_mor_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vararg_varnode<float, exprtk::details::vararg_multi_op<float> >::valid() const
12299
12300
      private:
12301
12302
         std::vector<const T*> arg_list_;
12303
         bool initialised_;
12304
      };
12305
12306
      template <typename T, typename VecFunction>
12307
      class vectorize_node exprtk_final : public expression_node<T>
12308
      {
12309
      public:
12310
12311
         typedef expression_node<T>* expression_ptr;
12312
         typedef std::pair<expression_ptr,bool> branch_t;
12313
12314
         explicit vectorize_node(const expression_ptr v)
12315
0
         : ivec_ptr_(0)
12316
0
         {
12317
0
            construct_branch_pair(v_, v);
12318
12319
0
            if (is_ivector_node(v_.first))
12320
0
            {
12321
0
               ivec_ptr_ = dynamic_cast<vector_interface<T>*>(v_.first);
12322
0
            }
12323
0
         }
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::vectorize_node(exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::vectorize_node(exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::vectorize_node(exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::vectorize_node(exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::vectorize_node(exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::vectorize_node(exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::vectorize_node(exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::vectorize_node(exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::vectorize_node(exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::vectorize_node(exprtk::details::expression_node<float>*)
12324
12325
         inline T value() const exprtk_override
12326
0
         {
12327
0
            v_.first->value();
12328
0
            return VecFunction::process(ivec_ptr_);
12329
0
         }
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::value() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::value() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::value() const
12330
12331
         inline typename expression_node<T>::node_type type() const exprtk_override
12332
0
         {
12333
0
            return expression_node<T>::e_vecfunc;
12334
0
         }
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::type() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::type() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::type() const
12335
12336
         inline bool valid() const exprtk_override
12337
0
         {
12338
0
            return ivec_ptr_ && v_.first && v_.first->valid();
12339
0
         }
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::valid() const
12340
12341
         void collect_nodes(typename expression_node<T>::noderef_list_t& node_delete_list) exprtk_override
12342
0
         {
12343
0
            expression_node<T>::ndb_t::collect(v_, node_delete_list);
12344
0
         }
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<double>**, std::__1::allocator<exprtk::details::expression_node<double>**> >&)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::collect_nodes(std::__1::vector<exprtk::details::expression_node<float>**, std::__1::allocator<exprtk::details::expression_node<float>**> >&)
12345
12346
         std::size_t node_depth() const exprtk_override
12347
0
         {
12348
0
            return expression_node<T>::ndb_t::compute_node_depth(v_);
12349
0
         }
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_add_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_mul_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_avg_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_min_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vectorize_node<double, exprtk::details::vec_max_op<double> >::node_depth() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_add_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_mul_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_avg_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_min_op<float> >::node_depth() const
Unexecuted instantiation: exprtk::details::vectorize_node<float, exprtk::details::vec_max_op<float> >::node_depth() const
12350
12351
      private:
12352
12353
         vector_interface<T>* ivec_ptr_;
12354
         branch_t                    v_;
12355
      };
12356
12357
      template <typename T>
12358
      class assignment_node exprtk_final : public binary_node<T>
12359
      {
12360
      public:
12361
12362
         typedef expression_node<T>* expression_ptr;
12363
         using binary_node<T>::branch;
12364
12365
         assignment_node(const operator_type& opr,
12366
                         expression_ptr branch0,
12367
                         expression_ptr branch1)
12368
10
         : binary_node<T>(opr, branch0, branch1)
12369
10
         , var_node_ptr_(0)
12370
10
         {
12371
10
            if (is_variable_node(branch(0)))
12372
10
            {
12373
10
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12374
10
            }
12375
10
         }
exprtk::details::assignment_node<double>::assignment_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
12368
5
         : binary_node<T>(opr, branch0, branch1)
12369
5
         , var_node_ptr_(0)
12370
5
         {
12371
5
            if (is_variable_node(branch(0)))
12372
5
            {
12373
5
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12374
5
            }
12375
5
         }
exprtk::details::assignment_node<float>::assignment_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
12368
5
         : binary_node<T>(opr, branch0, branch1)
12369
5
         , var_node_ptr_(0)
12370
5
         {
12371
5
            if (is_variable_node(branch(0)))
12372
5
            {
12373
5
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12374
5
            }
12375
5
         }
12376
12377
         inline T value() const exprtk_override
12378
10
         {
12379
10
            T& result = var_node_ptr_->ref();
12380
10
               result = branch(1)->value();
12381
12382
10
            return result;
12383
10
         }
exprtk::details::assignment_node<double>::value() const
Line
Count
Source
12378
5
         {
12379
5
            T& result = var_node_ptr_->ref();
12380
5
               result = branch(1)->value();
12381
12382
5
            return result;
12383
5
         }
exprtk::details::assignment_node<float>::value() const
Line
Count
Source
12378
5
         {
12379
5
            T& result = var_node_ptr_->ref();
12380
5
               result = branch(1)->value();
12381
12382
5
            return result;
12383
5
         }
12384
12385
         inline bool valid() const exprtk_override
12386
14
         {
12387
14
            return var_node_ptr_ && binary_node<T>::valid();
12388
14
         }
exprtk::details::assignment_node<double>::valid() const
Line
Count
Source
12386
7
         {
12387
7
            return var_node_ptr_ && binary_node<T>::valid();
12388
7
         }
exprtk::details::assignment_node<float>::valid() const
Line
Count
Source
12386
7
         {
12387
7
            return var_node_ptr_ && binary_node<T>::valid();
12388
7
         }
12389
12390
      private:
12391
12392
         variable_node<T>* var_node_ptr_;
12393
      };
12394
12395
      template <typename T>
12396
      class assignment_vec_elem_node exprtk_final : public binary_node<T>
12397
      {
12398
      public:
12399
12400
         typedef expression_node<T>* expression_ptr;
12401
         using binary_node<T>::branch;
12402
12403
         assignment_vec_elem_node(const operator_type& opr,
12404
                                  expression_ptr branch0,
12405
                                  expression_ptr branch1)
12406
0
         : binary_node<T>(opr, branch0, branch1)
12407
0
         , vec_node_ptr_(0)
12408
0
         {
12409
0
            if (is_vector_elem_node(branch(0)))
12410
0
            {
12411
0
               vec_node_ptr_ = static_cast<vector_elem_node<T>*>(branch(0));
12412
0
            }
12413
12414
0
            assert(valid());
12415
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::assignment_vec_elem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::assignment_vec_elem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12416
12417
         inline T value() const exprtk_override
12418
0
         {
12419
0
            T& result = vec_node_ptr_->ref();
12420
0
               result = branch(1)->value();
12421
12422
0
            return result;
12423
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::value() const
12424
12425
         inline bool valid() const exprtk_override
12426
0
         {
12427
0
            return vec_node_ptr_ && binary_node<T>::valid();
12428
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_node<float>::valid() const
12429
12430
      private:
12431
12432
         vector_elem_node<T>* vec_node_ptr_;
12433
      };
12434
12435
      template <typename T>
12436
      class assignment_vec_elem_rtc_node exprtk_final : public binary_node<T>
12437
      {
12438
      public:
12439
12440
         typedef expression_node<T>* expression_ptr;
12441
         using binary_node<T>::branch;
12442
12443
         assignment_vec_elem_rtc_node(const operator_type& opr,
12444
                                      expression_ptr branch0,
12445
                                      expression_ptr branch1)
12446
0
         : binary_node<T>(opr, branch0, branch1)
12447
0
         , vec_node_ptr_(0)
12448
0
         {
12449
0
            if (is_vector_elem_rtc_node(branch(0)))
12450
0
            {
12451
0
               vec_node_ptr_ = static_cast<vector_elem_rtc_node<T>*>(branch(0));
12452
0
            }
12453
12454
0
            assert(valid());
12455
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<double>::assignment_vec_elem_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<float>::assignment_vec_elem_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12456
12457
         inline T value() const exprtk_override
12458
0
         {
12459
0
            T& result = vec_node_ptr_->ref();
12460
0
               result = branch(1)->value();
12461
12462
0
            return result;
12463
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<float>::value() const
12464
12465
         inline bool valid() const exprtk_override
12466
0
         {
12467
0
            return vec_node_ptr_ && binary_node<T>::valid();
12468
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_rtc_node<float>::valid() const
12469
12470
      private:
12471
12472
         vector_elem_rtc_node<T>* vec_node_ptr_;
12473
      };
12474
12475
      template <typename T>
12476
      class assignment_rebasevec_elem_node exprtk_final : public binary_node<T>
12477
      {
12478
      public:
12479
12480
         typedef expression_node<T>* expression_ptr;
12481
         using expression_node<T>::branch;
12482
12483
         assignment_rebasevec_elem_node(const operator_type& opr,
12484
                                        expression_ptr branch0,
12485
                                        expression_ptr branch1)
12486
0
         : binary_node<T>(opr, branch0, branch1)
12487
0
         , rbvec_node_ptr_(0)
12488
0
         {
12489
0
            if (is_rebasevector_elem_node(branch(0)))
12490
0
            {
12491
0
               rbvec_node_ptr_ = static_cast<rebasevector_elem_node<T>*>(branch(0));
12492
0
            }
12493
12494
0
            assert(valid());
12495
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::assignment_rebasevec_elem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::assignment_rebasevec_elem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12496
12497
         inline T value() const exprtk_override
12498
0
         {
12499
0
            T& result = rbvec_node_ptr_->ref();
12500
0
               result = branch(1)->value();
12501
12502
0
            return result;
12503
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::value() const
12504
12505
         inline bool valid() const exprtk_override
12506
0
         {
12507
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
12508
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_node<float>::valid() const
12509
12510
      private:
12511
12512
         rebasevector_elem_node<T>* rbvec_node_ptr_;
12513
      };
12514
12515
      template <typename T>
12516
      class assignment_rebasevec_elem_rtc_node exprtk_final : public binary_node<T>
12517
      {
12518
      public:
12519
12520
         typedef expression_node<T>* expression_ptr;
12521
         using expression_node<T>::branch;
12522
12523
         assignment_rebasevec_elem_rtc_node(const operator_type& opr,
12524
                                            expression_ptr branch0,
12525
                                            expression_ptr branch1)
12526
0
         : binary_node<T>(opr, branch0, branch1)
12527
0
         , rbvec_node_ptr_(0)
12528
0
         {
12529
0
            if (is_rebasevector_elem_rtc_node(branch(0)))
12530
0
            {
12531
0
               rbvec_node_ptr_ = static_cast<rebasevector_elem_rtc_node<T>*>(branch(0));
12532
0
            }
12533
12534
0
            assert(valid());
12535
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<double>::assignment_rebasevec_elem_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<float>::assignment_rebasevec_elem_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12536
12537
         inline T value() const exprtk_override
12538
0
         {
12539
0
            T& result = rbvec_node_ptr_->ref();
12540
0
               result = branch(1)->value();
12541
12542
0
            return result;
12543
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<float>::value() const
12544
12545
         inline bool valid() const exprtk_override
12546
0
         {
12547
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
12548
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_rtc_node<float>::valid() const
12549
12550
      private:
12551
12552
         rebasevector_elem_rtc_node<T>* rbvec_node_ptr_;
12553
      };
12554
12555
      template <typename T>
12556
      class assignment_rebasevec_celem_node exprtk_final : public binary_node<T>
12557
      {
12558
      public:
12559
12560
         typedef expression_node<T>* expression_ptr;
12561
         using binary_node<T>::branch;
12562
12563
         assignment_rebasevec_celem_node(const operator_type& opr,
12564
                                         expression_ptr branch0,
12565
                                         expression_ptr branch1)
12566
0
         : binary_node<T>(opr, branch0, branch1)
12567
0
         , rbvec_node_ptr_(0)
12568
0
         {
12569
0
            if (is_rebasevector_celem_node(branch(0)))
12570
0
            {
12571
0
               rbvec_node_ptr_ = static_cast<rebasevector_celem_node<T>*>(branch(0));
12572
0
            }
12573
12574
0
            assert(valid());
12575
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::assignment_rebasevec_celem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::assignment_rebasevec_celem_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12576
12577
         inline T value() const exprtk_override
12578
0
         {
12579
0
            T& result = rbvec_node_ptr_->ref();
12580
0
               result = branch(1)->value();
12581
12582
0
            return result;
12583
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::value() const
12584
12585
         inline bool valid() const exprtk_override
12586
0
         {
12587
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
12588
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_node<float>::valid() const
12589
12590
      private:
12591
12592
         rebasevector_celem_node<T>* rbvec_node_ptr_;
12593
      };
12594
12595
      template <typename T>
12596
      class assignment_vec_node exprtk_final
12597
                                : public binary_node     <T>
12598
                                , public vector_interface<T>
12599
      {
12600
      public:
12601
12602
         typedef expression_node<T>* expression_ptr;
12603
         typedef vector_node<T>*     vector_node_ptr;
12604
         typedef vec_data_store<T>   vds_t;
12605
12606
         using binary_node<T>::branch;
12607
12608
         assignment_vec_node(const operator_type& opr,
12609
                             expression_ptr branch0,
12610
                             expression_ptr branch1)
12611
0
         : binary_node<T>(opr, branch0, branch1)
12612
0
         , vec_node_ptr_(0)
12613
0
         {
12614
0
            if (is_vector_node(branch(0)))
12615
0
            {
12616
0
               vec_node_ptr_ = static_cast<vector_node<T>*>(branch(0));
12617
0
               vds()         = vec_node_ptr_->vds();
12618
0
            }
12619
12620
0
            assert(valid());
12621
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::assignment_vec_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::assignment_vec_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12622
12623
         inline T value() const exprtk_override
12624
0
         {
12625
0
            const T v = branch(1)->value();
12626
12627
0
            T* vec = vds().data();
12628
12629
0
            loop_unroll::details lud(size());
12630
0
            const T* upper_bound = vec + lud.upper_bound;
12631
12632
0
            while (vec < upper_bound)
12633
0
            {
12634
0
               #define exprtk_loop(N) \
12635
0
               vec[N] = v;            \
12636
0
12637
0
               exprtk_loop( 0) exprtk_loop( 1)
12638
0
               exprtk_loop( 2) exprtk_loop( 3)
12639
0
               #ifndef exprtk_disable_superscalar_unroll
12640
0
               exprtk_loop( 4) exprtk_loop( 5)
12641
0
               exprtk_loop( 6) exprtk_loop( 7)
12642
0
               exprtk_loop( 8) exprtk_loop( 9)
12643
0
               exprtk_loop(10) exprtk_loop(11)
12644
0
               exprtk_loop(12) exprtk_loop(13)
12645
0
               exprtk_loop(14) exprtk_loop(15)
12646
0
               #endif
12647
12648
0
               vec += lud.batch_size;
12649
0
            }
12650
12651
0
            switch (lud.remainder)
12652
0
            {
12653
0
               #define case_stmt(N) \
12654
0
               case N : *vec++ = v; \
12655
0
               exprtk_fallthrough   \
12656
0
12657
0
               #ifndef exprtk_disable_superscalar_unroll
12658
0
               case_stmt(15) case_stmt(14)
12659
0
               case_stmt(13) case_stmt(12)
12660
0
               case_stmt(11) case_stmt(10)
12661
0
               case_stmt( 9) case_stmt( 8)
12662
0
               case_stmt( 7) case_stmt( 6)
12663
0
               case_stmt( 5) case_stmt( 4)
12664
0
               #endif
12665
0
               case_stmt( 3) case_stmt( 2)
12666
0
               case 1 : *vec++ = v;
12667
0
            }
12668
12669
0
            #undef exprtk_loop
12670
0
            #undef case_stmt
12671
12672
0
            return vec_node_ptr_->value();
12673
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::value() const
12674
12675
         vector_node_ptr vec() const exprtk_override
12676
0
         {
12677
0
            return vec_node_ptr_;
12678
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vec() const
12679
12680
         vector_node_ptr vec() exprtk_override
12681
0
         {
12682
0
            return vec_node_ptr_;
12683
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vec()
12684
12685
         inline typename expression_node<T>::node_type type() const exprtk_override
12686
0
         {
12687
0
            return expression_node<T>::e_vecvalass;
12688
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::type() const
12689
12690
         inline bool valid() const exprtk_override
12691
0
         {
12692
0
            return
12693
0
               vec_node_ptr_ &&
12694
0
               (vds().size() <= vec_node_ptr_->vec_holder().base_size()) &&
12695
0
               binary_node<T>::valid();
12696
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::valid() const
12697
12698
         std::size_t size() const exprtk_override
12699
0
         {
12700
0
            return vec_node_ptr_->vec_holder().size();
12701
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::size() const
12702
12703
         std::size_t base_size() const exprtk_override
12704
0
         {
12705
0
            return vec_node_ptr_->vec_holder().base_size();
12706
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::base_size() const
12707
12708
         vds_t& vds() exprtk_override
12709
0
         {
12710
0
            return vds_;
12711
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vds()
12712
12713
         const vds_t& vds() const exprtk_override
12714
0
         {
12715
0
            return vds_;
12716
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_node<double>::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_node<float>::vds() const
12717
12718
      private:
12719
12720
         vector_node<T>* vec_node_ptr_;
12721
         vds_t           vds_;
12722
      };
12723
12724
      template <typename T>
12725
      class assignment_vecvec_node exprtk_final
12726
                                   : public binary_node     <T>
12727
                                   , public vector_interface<T>
12728
      {
12729
      public:
12730
12731
         typedef expression_node<T>* expression_ptr;
12732
         typedef vector_node<T>*     vector_node_ptr;
12733
         typedef vec_data_store<T>   vds_t;
12734
12735
         using binary_node<T>::branch;
12736
12737
         assignment_vecvec_node(const operator_type& opr,
12738
                                expression_ptr branch0,
12739
                                expression_ptr branch1)
12740
0
         : binary_node<T>(opr, branch0, branch1)
12741
0
         , vec0_node_ptr_(0)
12742
0
         , vec1_node_ptr_(0)
12743
0
         , initialised_(false)
12744
0
         , src_is_ivec_(false)
12745
0
         {
12746
0
            if (is_vector_node(branch(0)))
12747
0
            {
12748
0
               vec0_node_ptr_ = static_cast<vector_node<T>*>(branch(0));
12749
0
               vds()          = vec0_node_ptr_->vds();
12750
0
            }
12751
12752
0
            if (is_vector_node(branch(1)))
12753
0
            {
12754
0
               vec1_node_ptr_ = static_cast<vector_node<T>*>(branch(1));
12755
0
               vds_t::match_sizes(vds(),vec1_node_ptr_->vds());
12756
0
            }
12757
0
            else if (is_ivector_node(branch(1)))
12758
0
            {
12759
0
               vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0);
12760
12761
0
               if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1))))
12762
0
               {
12763
0
                  vec1_node_ptr_ = vi->vec();
12764
12765
0
                  if (!vi->side_effect())
12766
0
                  {
12767
0
                     vi->vds()    = vds();
12768
0
                     src_is_ivec_ = true;
12769
0
                  }
12770
0
                  else
12771
0
                     vds_t::match_sizes(vds(),vi->vds());
12772
0
               }
12773
0
            }
12774
12775
0
            initialised_ =
12776
0
               vec0_node_ptr_               &&
12777
0
               vec1_node_ptr_               &&
12778
0
               (size() <= base_size())      &&
12779
0
               (vds_.size() <= base_size()) &&
12780
0
               binary_node<T>::valid();
12781
12782
0
            assert(valid());
12783
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::assignment_vecvec_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::assignment_vecvec_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12784
12785
         inline T value() const exprtk_override
12786
0
         {
12787
0
            branch(1)->value();
12788
12789
0
            if (src_is_ivec_)
12790
0
               return vec0_node_ptr_->value();
12791
12792
0
            T* vec0 = vec0_node_ptr_->vds().data();
12793
0
            T* vec1 = vec1_node_ptr_->vds().data();
12794
12795
0
            loop_unroll::details lud(size());
12796
0
            const T* upper_bound = vec0 + lud.upper_bound;
12797
12798
0
            while (vec0 < upper_bound)
12799
0
            {
12800
0
               #define exprtk_loop(N) \
12801
0
               vec0[N] = vec1[N];     \
12802
0
12803
0
               exprtk_loop( 0) exprtk_loop( 1)
12804
0
               exprtk_loop( 2) exprtk_loop( 3)
12805
0
               #ifndef exprtk_disable_superscalar_unroll
12806
0
               exprtk_loop( 4) exprtk_loop( 5)
12807
0
               exprtk_loop( 6) exprtk_loop( 7)
12808
0
               exprtk_loop( 8) exprtk_loop( 9)
12809
0
               exprtk_loop(10) exprtk_loop(11)
12810
0
               exprtk_loop(12) exprtk_loop(13)
12811
0
               exprtk_loop(14) exprtk_loop(15)
12812
0
               #endif
12813
12814
0
               vec0 += lud.batch_size;
12815
0
               vec1 += lud.batch_size;
12816
0
            }
12817
12818
0
            switch (lud.remainder)
12819
0
            {
12820
0
               #define case_stmt(N,fall_through) \
12821
0
               case N : *vec0++ = *vec1++;       \
12822
0
               fall_through                      \
12823
0
12824
0
               #ifndef exprtk_disable_superscalar_unroll
12825
0
               case_stmt(15, exprtk_fallthrough) case_stmt(14, exprtk_fallthrough)
12826
0
               case_stmt(13, exprtk_fallthrough) case_stmt(12, exprtk_fallthrough)
12827
0
               case_stmt(11, exprtk_fallthrough) case_stmt(10, exprtk_fallthrough)
12828
0
               case_stmt( 9, exprtk_fallthrough) case_stmt( 8, exprtk_fallthrough)
12829
0
               case_stmt( 7, exprtk_fallthrough) case_stmt( 6, exprtk_fallthrough)
12830
0
               case_stmt( 5, exprtk_fallthrough) case_stmt( 4, exprtk_fallthrough)
12831
0
               #endif
12832
0
               case_stmt( 3, exprtk_fallthrough) case_stmt( 2, exprtk_fallthrough)
12833
0
               case_stmt( 1, (void)0;)
12834
0
            }
12835
12836
0
            #undef exprtk_loop
12837
0
            #undef case_stmt
12838
12839
0
            return vec0_node_ptr_->value();
12840
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::value() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::value() const
12841
12842
         vector_node_ptr vec() exprtk_override
12843
0
         {
12844
0
            return vec0_node_ptr_;
12845
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vec()
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vec()
12846
12847
         vector_node_ptr vec() const exprtk_override
12848
0
         {
12849
0
            return vec0_node_ptr_;
12850
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vec() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vec() const
12851
12852
         inline typename expression_node<T>::node_type type() const exprtk_override
12853
0
         {
12854
0
            return expression_node<T>::e_vecvecass;
12855
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::type() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::type() const
12856
12857
         inline bool valid() const exprtk_override
12858
0
         {
12859
0
            return initialised_;
12860
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::valid() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::valid() const
12861
12862
         std::size_t size() const exprtk_override
12863
0
         {
12864
0
            return std::min(
12865
0
               vec0_node_ptr_->vec_holder().size(),
12866
0
               vec1_node_ptr_->vec_holder().size());
12867
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::size() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::size() const
12868
12869
         std::size_t base_size() const exprtk_override
12870
0
         {
12871
0
            return std::min(
12872
0
               vec0_node_ptr_->vec_holder().base_size(),
12873
0
               vec1_node_ptr_->vec_holder().base_size());
12874
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::base_size() const
12875
12876
         vds_t& vds() exprtk_override
12877
0
         {
12878
0
            return vds_;
12879
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vds()
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vds()
12880
12881
         const vds_t& vds() const exprtk_override
12882
0
         {
12883
0
            return vds_;
12884
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<double>::vds() const
Unexecuted instantiation: exprtk::details::assignment_vecvec_node<float>::vds() const
12885
12886
      private:
12887
12888
         vector_node<T>* vec0_node_ptr_;
12889
         vector_node<T>* vec1_node_ptr_;
12890
         bool            initialised_;
12891
         bool            src_is_ivec_;
12892
         vds_t           vds_;
12893
      };
12894
12895
      template <typename T, typename Operation>
12896
      class assignment_op_node exprtk_final : public binary_node<T>
12897
      {
12898
      public:
12899
12900
         typedef expression_node<T>* expression_ptr;
12901
         using binary_node<T>::branch;
12902
12903
         assignment_op_node(const operator_type& opr,
12904
                            expression_ptr branch0,
12905
                            expression_ptr branch1)
12906
142
         : binary_node<T>(opr, branch0, branch1)
12907
142
         , var_node_ptr_(0)
12908
142
         {
12909
142
            if (is_variable_node(branch(0)))
12910
142
            {
12911
142
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
142
            }
12913
12914
142
            assert(valid());
12915
142
         }
exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
12906
4
         : binary_node<T>(opr, branch0, branch1)
12907
4
         , var_node_ptr_(0)
12908
4
         {
12909
4
            if (is_variable_node(branch(0)))
12910
4
            {
12911
4
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
4
            }
12913
12914
4
            assert(valid());
12915
4
         }
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
12906
9
         : binary_node<T>(opr, branch0, branch1)
12907
9
         , var_node_ptr_(0)
12908
9
         {
12909
9
            if (is_variable_node(branch(0)))
12910
9
            {
12911
9
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
9
            }
12913
12914
9
            assert(valid());
12915
9
         }
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
12906
9
         : binary_node<T>(opr, branch0, branch1)
12907
9
         , var_node_ptr_(0)
12908
9
         {
12909
9
            if (is_variable_node(branch(0)))
12910
9
            {
12911
9
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
9
            }
12913
12914
9
            assert(valid());
12915
9
         }
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
12906
4
         : binary_node<T>(opr, branch0, branch1)
12907
4
         , var_node_ptr_(0)
12908
4
         {
12909
4
            if (is_variable_node(branch(0)))
12910
4
            {
12911
4
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
4
            }
12913
12914
4
            assert(valid());
12915
4
         }
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Line
Count
Source
12906
45
         : binary_node<T>(opr, branch0, branch1)
12907
45
         , var_node_ptr_(0)
12908
45
         {
12909
45
            if (is_variable_node(branch(0)))
12910
45
            {
12911
45
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
45
            }
12913
12914
45
            assert(valid());
12915
45
         }
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
12906
4
         : binary_node<T>(opr, branch0, branch1)
12907
4
         , var_node_ptr_(0)
12908
4
         {
12909
4
            if (is_variable_node(branch(0)))
12910
4
            {
12911
4
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
4
            }
12913
12914
4
            assert(valid());
12915
4
         }
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
12906
9
         : binary_node<T>(opr, branch0, branch1)
12907
9
         , var_node_ptr_(0)
12908
9
         {
12909
9
            if (is_variable_node(branch(0)))
12910
9
            {
12911
9
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
9
            }
12913
12914
9
            assert(valid());
12915
9
         }
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
12906
9
         : binary_node<T>(opr, branch0, branch1)
12907
9
         , var_node_ptr_(0)
12908
9
         {
12909
9
            if (is_variable_node(branch(0)))
12910
9
            {
12911
9
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
9
            }
12913
12914
9
            assert(valid());
12915
9
         }
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
12906
4
         : binary_node<T>(opr, branch0, branch1)
12907
4
         , var_node_ptr_(0)
12908
4
         {
12909
4
            if (is_variable_node(branch(0)))
12910
4
            {
12911
4
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
4
            }
12913
12914
4
            assert(valid());
12915
4
         }
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::assignment_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Line
Count
Source
12906
45
         : binary_node<T>(opr, branch0, branch1)
12907
45
         , var_node_ptr_(0)
12908
45
         {
12909
45
            if (is_variable_node(branch(0)))
12910
45
            {
12911
45
               var_node_ptr_ = static_cast<variable_node<T>*>(branch(0));
12912
45
            }
12913
12914
45
            assert(valid());
12915
45
         }
12916
12917
         inline T value() const exprtk_override
12918
64
         {
12919
64
            T& v = var_node_ptr_->ref();
12920
64
            v = Operation::process(v,branch(1)->value());
12921
12922
64
            return v;
12923
64
         }
exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::value() const
Line
Count
Source
12918
3
         {
12919
3
            T& v = var_node_ptr_->ref();
12920
3
            v = Operation::process(v,branch(1)->value());
12921
12922
3
            return v;
12923
3
         }
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::value() const
Line
Count
Source
12918
2
         {
12919
2
            T& v = var_node_ptr_->ref();
12920
2
            v = Operation::process(v,branch(1)->value());
12921
12922
2
            return v;
12923
2
         }
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::value() const
Line
Count
Source
12918
7
         {
12919
7
            T& v = var_node_ptr_->ref();
12920
7
            v = Operation::process(v,branch(1)->value());
12921
12922
7
            return v;
12923
7
         }
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::value() const
Line
Count
Source
12918
4
         {
12919
4
            T& v = var_node_ptr_->ref();
12920
4
            v = Operation::process(v,branch(1)->value());
12921
12922
4
            return v;
12923
4
         }
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::value() const
Line
Count
Source
12918
16
         {
12919
16
            T& v = var_node_ptr_->ref();
12920
16
            v = Operation::process(v,branch(1)->value());
12921
12922
16
            return v;
12923
16
         }
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::value() const
Line
Count
Source
12918
3
         {
12919
3
            T& v = var_node_ptr_->ref();
12920
3
            v = Operation::process(v,branch(1)->value());
12921
12922
3
            return v;
12923
3
         }
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::value() const
Line
Count
Source
12918
2
         {
12919
2
            T& v = var_node_ptr_->ref();
12920
2
            v = Operation::process(v,branch(1)->value());
12921
12922
2
            return v;
12923
2
         }
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::value() const
Line
Count
Source
12918
7
         {
12919
7
            T& v = var_node_ptr_->ref();
12920
7
            v = Operation::process(v,branch(1)->value());
12921
12922
7
            return v;
12923
7
         }
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::value() const
Line
Count
Source
12918
4
         {
12919
4
            T& v = var_node_ptr_->ref();
12920
4
            v = Operation::process(v,branch(1)->value());
12921
12922
4
            return v;
12923
4
         }
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::value() const
Line
Count
Source
12918
16
         {
12919
16
            T& v = var_node_ptr_->ref();
12920
16
            v = Operation::process(v,branch(1)->value());
12921
12922
16
            return v;
12923
16
         }
12924
12925
         inline bool valid() const exprtk_override
12926
742
         {
12927
742
            return var_node_ptr_ && binary_node<T>::valid();
12928
742
         }
exprtk::details::assignment_op_node<double, exprtk::details::add_op<double> >::valid() const
Line
Count
Source
12926
8
         {
12927
8
            return var_node_ptr_ && binary_node<T>::valid();
12928
8
         }
exprtk::details::assignment_op_node<double, exprtk::details::sub_op<double> >::valid() const
Line
Count
Source
12926
25
         {
12927
25
            return var_node_ptr_ && binary_node<T>::valid();
12928
25
         }
exprtk::details::assignment_op_node<double, exprtk::details::mul_op<double> >::valid() const
Line
Count
Source
12926
27
         {
12927
27
            return var_node_ptr_ && binary_node<T>::valid();
12928
27
         }
exprtk::details::assignment_op_node<double, exprtk::details::div_op<double> >::valid() const
Line
Count
Source
12926
8
         {
12927
8
            return var_node_ptr_ && binary_node<T>::valid();
12928
8
         }
exprtk::details::assignment_op_node<double, exprtk::details::mod_op<double> >::valid() const
Line
Count
Source
12926
303
         {
12927
303
            return var_node_ptr_ && binary_node<T>::valid();
12928
303
         }
exprtk::details::assignment_op_node<float, exprtk::details::add_op<float> >::valid() const
Line
Count
Source
12926
8
         {
12927
8
            return var_node_ptr_ && binary_node<T>::valid();
12928
8
         }
exprtk::details::assignment_op_node<float, exprtk::details::sub_op<float> >::valid() const
Line
Count
Source
12926
25
         {
12927
25
            return var_node_ptr_ && binary_node<T>::valid();
12928
25
         }
exprtk::details::assignment_op_node<float, exprtk::details::mul_op<float> >::valid() const
Line
Count
Source
12926
27
         {
12927
27
            return var_node_ptr_ && binary_node<T>::valid();
12928
27
         }
exprtk::details::assignment_op_node<float, exprtk::details::div_op<float> >::valid() const
Line
Count
Source
12926
8
         {
12927
8
            return var_node_ptr_ && binary_node<T>::valid();
12928
8
         }
exprtk::details::assignment_op_node<float, exprtk::details::mod_op<float> >::valid() const
Line
Count
Source
12926
303
         {
12927
303
            return var_node_ptr_ && binary_node<T>::valid();
12928
303
         }
12929
12930
      private:
12931
12932
         variable_node<T>* var_node_ptr_;
12933
      };
12934
12935
      template <typename T, typename Operation>
12936
      class assignment_vec_elem_op_node exprtk_final : public binary_node<T>
12937
      {
12938
      public:
12939
12940
         typedef expression_node<T>* expression_ptr;
12941
         using binary_node<T>::branch;
12942
12943
         assignment_vec_elem_op_node(const operator_type& opr,
12944
                                     expression_ptr branch0,
12945
                                     expression_ptr branch1)
12946
0
         : binary_node<T>(opr, branch0, branch1)
12947
0
         , vec_node_ptr_(0)
12948
0
         {
12949
0
            if (is_vector_elem_node(branch(0)))
12950
0
            {
12951
0
               vec_node_ptr_ = static_cast<vector_elem_node<T>*>(branch(0));
12952
0
            }
12953
12954
0
            assert(valid());
12955
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::add_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::sub_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mul_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::div_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mod_op<double> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::add_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::sub_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mul_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::div_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mod_op<float> >::assignment_vec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12956
12957
         inline T value() const exprtk_override
12958
0
         {
12959
0
            T& v = vec_node_ptr_->ref();
12960
0
               v = Operation::process(v,branch(1)->value());
12961
12962
0
            return v;
12963
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::sub_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::div_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mod_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::sub_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::div_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mod_op<float> >::value() const
12964
12965
         inline bool valid() const exprtk_override
12966
0
         {
12967
0
            return vec_node_ptr_ && binary_node<T>::valid();
12968
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::sub_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::div_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<double, exprtk::details::mod_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::sub_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::div_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_node<float, exprtk::details::mod_op<float> >::valid() const
12969
12970
      private:
12971
12972
         vector_elem_node<T>* vec_node_ptr_;
12973
      };
12974
12975
      template <typename T, typename Operation>
12976
      class assignment_vec_elem_op_rtc_node exprtk_final : public binary_node<T>
12977
      {
12978
      public:
12979
12980
         typedef expression_node<T>* expression_ptr;
12981
         using binary_node<T>::branch;
12982
12983
         assignment_vec_elem_op_rtc_node(const operator_type& opr,
12984
                                         expression_ptr branch0,
12985
                                         expression_ptr branch1)
12986
0
         : binary_node<T>(opr, branch0, branch1)
12987
0
         , vec_node_ptr_(0)
12988
0
         {
12989
0
            if (is_vector_elem_rtc_node(branch(0)))
12990
0
            {
12991
0
               vec_node_ptr_ = static_cast<vector_elem_rtc_node<T>*>(branch(0));
12992
0
            }
12993
12994
0
            assert(valid());
12995
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::assignment_vec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
12996
12997
         inline T value() const exprtk_override
12998
0
         {
12999
0
            T& v = vec_node_ptr_->ref();
13000
0
               v = Operation::process(v,branch(1)->value());
13001
13002
0
            return v;
13003
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::value() const
13004
13005
         inline bool valid() const exprtk_override
13006
0
         {
13007
0
            return vec_node_ptr_ && binary_node<T>::valid();
13008
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::valid() const
13009
13010
      private:
13011
13012
         vector_elem_rtc_node<T>* vec_node_ptr_;
13013
      };
13014
13015
      template <typename T, typename Operation>
13016
      class assignment_vec_celem_op_rtc_node exprtk_final : public binary_node<T>
13017
      {
13018
      public:
13019
13020
         typedef expression_node<T>* expression_ptr;
13021
         using binary_node<T>::branch;
13022
13023
         assignment_vec_celem_op_rtc_node(const operator_type& opr,
13024
                                          expression_ptr branch0,
13025
                                          expression_ptr branch1)
13026
0
         : binary_node<T>(opr, branch0, branch1)
13027
0
         , vec_node_ptr_(0)
13028
0
         {
13029
0
            if (is_vector_celem_rtc_node(branch(0)))
13030
0
            {
13031
0
               vec_node_ptr_ = static_cast<vector_celem_rtc_node<T>*>(branch(0));
13032
0
            }
13033
13034
0
            assert(valid());
13035
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::assignment_vec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
13036
13037
         inline T value() const exprtk_override
13038
0
         {
13039
0
            T& v = vec_node_ptr_->ref();
13040
0
               v = Operation::process(v,branch(1)->value());
13041
13042
0
            return v;
13043
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::value() const
13044
13045
         inline bool valid() const exprtk_override
13046
0
         {
13047
0
            return vec_node_ptr_ && binary_node<T>::valid();
13048
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::valid() const
13049
13050
      private:
13051
13052
         vector_celem_rtc_node<T>* vec_node_ptr_;
13053
      };
13054
13055
      template <typename T, typename Operation>
13056
      class assignment_rebasevec_elem_op_node exprtk_final : public binary_node<T>
13057
      {
13058
      public:
13059
13060
         typedef expression_node<T>* expression_ptr;
13061
         using binary_node<T>::branch;
13062
13063
         assignment_rebasevec_elem_op_node(const operator_type& opr,
13064
                                           expression_ptr branch0,
13065
                                           expression_ptr branch1)
13066
0
         : binary_node<T>(opr, branch0, branch1)
13067
0
         , rbvec_node_ptr_(0)
13068
0
         {
13069
0
            if (is_rebasevector_elem_node(branch(0)))
13070
0
            {
13071
0
               rbvec_node_ptr_ = static_cast<rebasevector_elem_node<T>*>(branch(0));
13072
0
            }
13073
13074
0
            assert(valid());
13075
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::add_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::sub_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mul_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::div_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mod_op<double> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::add_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::sub_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mul_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::div_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mod_op<float> >::assignment_rebasevec_elem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
13076
13077
         inline T value() const exprtk_override
13078
0
         {
13079
0
            T& v = rbvec_node_ptr_->ref();
13080
0
               v = Operation::process(v,branch(1)->value());
13081
13082
0
            return v;
13083
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::sub_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::div_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mod_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::sub_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::div_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mod_op<float> >::value() const
13084
13085
         inline bool valid() const exprtk_override
13086
0
         {
13087
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
13088
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::sub_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::div_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<double, exprtk::details::mod_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::sub_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::div_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_node<float, exprtk::details::mod_op<float> >::valid() const
13089
13090
      private:
13091
13092
         rebasevector_elem_node<T>* rbvec_node_ptr_;
13093
      };
13094
13095
      template <typename T, typename Operation>
13096
      class assignment_rebasevec_celem_op_node exprtk_final : public binary_node<T>
13097
      {
13098
      public:
13099
13100
         typedef expression_node<T>* expression_ptr;
13101
         using binary_node<T>::branch;
13102
13103
         assignment_rebasevec_celem_op_node(const operator_type& opr,
13104
                                            expression_ptr branch0,
13105
                                            expression_ptr branch1)
13106
0
         : binary_node<T>(opr, branch0, branch1)
13107
0
         , rbvec_node_ptr_(0)
13108
0
         {
13109
0
            if (is_rebasevector_celem_node(branch(0)))
13110
0
            {
13111
0
               rbvec_node_ptr_ = static_cast<rebasevector_celem_node<T>*>(branch(0));
13112
0
            }
13113
13114
0
            assert(valid());
13115
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::add_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::sub_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mul_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::div_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mod_op<double> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::add_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::sub_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mul_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::div_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mod_op<float> >::assignment_rebasevec_celem_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
13116
13117
         inline T value() const exprtk_override
13118
0
         {
13119
0
            T& v = rbvec_node_ptr_->ref();
13120
0
               v = Operation::process(v,branch(1)->value());
13121
13122
0
            return v;
13123
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::sub_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::div_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mod_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::sub_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::div_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mod_op<float> >::value() const
13124
13125
         inline bool valid() const exprtk_override
13126
0
         {
13127
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
13128
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::sub_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::div_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<double, exprtk::details::mod_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::sub_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::div_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_node<float, exprtk::details::mod_op<float> >::valid() const
13129
13130
      private:
13131
13132
         rebasevector_celem_node<T>* rbvec_node_ptr_;
13133
      };
13134
13135
      template <typename T, typename Operation>
13136
      class assignment_rebasevec_elem_op_rtc_node exprtk_final : public binary_node<T>
13137
      {
13138
      public:
13139
13140
         typedef expression_node<T>* expression_ptr;
13141
         using binary_node<T>::branch;
13142
13143
         assignment_rebasevec_elem_op_rtc_node(const operator_type& opr,
13144
                                               expression_ptr branch0,
13145
                                               expression_ptr branch1)
13146
0
         : binary_node<T>(opr, branch0, branch1)
13147
0
         , rbvec_node_ptr_(0)
13148
0
         {
13149
0
            if (is_rebasevector_elem_rtc_node(branch(0)))
13150
0
            {
13151
0
               rbvec_node_ptr_ = static_cast<rebasevector_elem_rtc_node<T>*>(branch(0));
13152
0
            }
13153
13154
0
            assert(valid());
13155
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::assignment_rebasevec_elem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
13156
13157
         inline T value() const exprtk_override
13158
0
         {
13159
0
            T& v = rbvec_node_ptr_->ref();
13160
0
               v = Operation::process(v,branch(1)->value());
13161
13162
0
            return v;
13163
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::value() const
13164
13165
         inline bool valid() const exprtk_override
13166
0
         {
13167
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
13168
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::sub_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::div_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<double, exprtk::details::mod_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::sub_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::div_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_elem_op_rtc_node<float, exprtk::details::mod_op<float> >::valid() const
13169
13170
      private:
13171
13172
         rebasevector_elem_rtc_node<T>* rbvec_node_ptr_;
13173
      };
13174
13175
      template <typename T, typename Operation>
13176
      class assignment_rebasevec_celem_op_rtc_node exprtk_final : public binary_node<T>
13177
      {
13178
      public:
13179
13180
         typedef expression_node<T>* expression_ptr;
13181
         using binary_node<T>::branch;
13182
13183
         assignment_rebasevec_celem_op_rtc_node(const operator_type& opr,
13184
                                                expression_ptr branch0,
13185
                                                expression_ptr branch1)
13186
0
         : binary_node<T>(opr, branch0, branch1)
13187
0
         , rbvec_node_ptr_(0)
13188
0
         {
13189
0
            if (is_rebasevector_celem_rtc_node(branch(0)))
13190
0
            {
13191
0
               rbvec_node_ptr_ = static_cast<rebasevector_celem_rtc_node<T>*>(branch(0));
13192
0
            }
13193
13194
0
            assert(valid());
13195
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::assignment_rebasevec_celem_op_rtc_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
13196
13197
         inline T value() const exprtk_override
13198
0
         {
13199
0
            T& v = rbvec_node_ptr_->ref();
13200
0
               v = Operation::process(v,branch(1)->value());
13201
13202
0
            return v;
13203
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::value() const
13204
13205
         inline bool valid() const exprtk_override
13206
0
         {
13207
0
            return rbvec_node_ptr_ && binary_node<T>::valid();
13208
0
         }
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::sub_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::div_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<double, exprtk::details::mod_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::sub_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::div_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_rebasevec_celem_op_rtc_node<float, exprtk::details::mod_op<float> >::valid() const
13209
13210
      private:
13211
13212
         rebasevector_celem_rtc_node<T>* rbvec_node_ptr_;
13213
      };
13214
13215
      template <typename T, typename Operation>
13216
      class assignment_vec_op_node exprtk_final
13217
                                   : public binary_node     <T>
13218
                                   , public vector_interface<T>
13219
      {
13220
      public:
13221
13222
         typedef expression_node<T>* expression_ptr;
13223
         typedef vector_node<T>*     vector_node_ptr;
13224
         typedef vec_data_store<T>   vds_t;
13225
13226
         using binary_node<T>::branch;
13227
13228
         assignment_vec_op_node(const operator_type& opr,
13229
                                expression_ptr branch0,
13230
                                expression_ptr branch1)
13231
0
         : binary_node<T>(opr, branch0, branch1)
13232
0
         , vec_node_ptr_(0)
13233
0
         {
13234
0
            if (is_vector_node(branch(0)))
13235
0
            {
13236
0
               vec_node_ptr_ = static_cast<vector_node<T>*>(branch(0));
13237
0
               vds()         = vec_node_ptr_->vds();
13238
0
            }
13239
13240
0
            assert(valid());
13241
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::assignment_vec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
13242
13243
         inline T value() const exprtk_override
13244
0
         {
13245
0
            const T v = branch(1)->value();
13246
13247
0
            T* vec = vds().data();
13248
13249
0
            loop_unroll::details lud(size());
13250
0
            const T* upper_bound = vec + lud.upper_bound;
13251
13252
0
            while (vec < upper_bound)
13253
0
            {
13254
0
               #define exprtk_loop(N)       \
13255
0
               Operation::assign(vec[N],v); \
13256
0
13257
0
               exprtk_loop( 0) exprtk_loop( 1)
13258
0
               exprtk_loop( 2) exprtk_loop( 3)
13259
0
               #ifndef exprtk_disable_superscalar_unroll
13260
0
               exprtk_loop( 4) exprtk_loop( 5)
13261
0
               exprtk_loop( 6) exprtk_loop( 7)
13262
0
               exprtk_loop( 8) exprtk_loop( 9)
13263
0
               exprtk_loop(10) exprtk_loop(11)
13264
0
               exprtk_loop(12) exprtk_loop(13)
13265
0
               exprtk_loop(14) exprtk_loop(15)
13266
0
               #endif
13267
13268
0
               vec += lud.batch_size;
13269
0
            }
13270
13271
0
            switch (lud.remainder)
13272
0
            {
13273
0
               #define case_stmt(N,fall_through)     \
13274
0
               case N : Operation::assign(*vec++,v); \
13275
0
               fall_through                          \
13276
0
13277
0
               #ifndef exprtk_disable_superscalar_unroll
13278
0
               case_stmt(15, exprtk_fallthrough) case_stmt(14, exprtk_fallthrough)
13279
0
               case_stmt(13, exprtk_fallthrough) case_stmt(12, exprtk_fallthrough)
13280
0
               case_stmt(11, exprtk_fallthrough) case_stmt(10, exprtk_fallthrough)
13281
0
               case_stmt( 9, exprtk_fallthrough) case_stmt( 8, exprtk_fallthrough)
13282
0
               case_stmt( 7, exprtk_fallthrough) case_stmt( 6, exprtk_fallthrough)
13283
0
               case_stmt( 5, exprtk_fallthrough) case_stmt( 4, exprtk_fallthrough)
13284
0
               #endif
13285
0
               case_stmt( 3, exprtk_fallthrough) case_stmt( 2, exprtk_fallthrough)
13286
0
               case_stmt( 1, (void)0;)
13287
0
            }
13288
13289
0
            #undef exprtk_loop
13290
0
            #undef case_stmt
13291
13292
0
            return vec_node_ptr_->value();
13293
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::value() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::value() const
13294
13295
         vector_node_ptr vec() const exprtk_override
13296
0
         {
13297
0
            return vec_node_ptr_;
13298
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::vec() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::vec() const
13299
13300
         vector_node_ptr vec() exprtk_override
13301
0
         {
13302
0
            return vec_node_ptr_;
13303
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::vec()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::vec()
13304
13305
         inline typename expression_node<T>::node_type type() const exprtk_override
13306
0
         {
13307
0
            return expression_node<T>::e_vecopvalass;
13308
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::type() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::type() const
13309
13310
         inline bool valid() const exprtk_override
13311
0
         {
13312
0
            return
13313
0
               vec_node_ptr_           &&
13314
0
               (size() <= base_size()) &&
13315
0
               binary_node<T>::valid() ;
13316
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::valid() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::valid() const
13317
13318
         std::size_t size() const exprtk_override
13319
0
         {
13320
0
            return vec_node_ptr_->vec_holder().size();
13321
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::size() const
13322
13323
         std::size_t base_size() const exprtk_override
13324
0
         {
13325
0
            return vec_node_ptr_->vec_holder().base_size();
13326
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::base_size() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::base_size() const
13327
13328
         vds_t& vds() exprtk_override
13329
0
         {
13330
0
            return vds_;
13331
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::vds()
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::vds()
13332
13333
         const vds_t& vds() const exprtk_override
13334
0
         {
13335
0
            return vds_;
13336
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::vds() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::vds() const
13337
13338
         bool side_effect() const exprtk_override
13339
0
         {
13340
0
            return true;
13341
0
         }
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::add_op<double> >::side_effect() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::sub_op<double> >::side_effect() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mul_op<double> >::side_effect() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::div_op<double> >::side_effect() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<double, exprtk::details::mod_op<double> >::side_effect() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::add_op<float> >::side_effect() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::sub_op<float> >::side_effect() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mul_op<float> >::side_effect() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::div_op<float> >::side_effect() const
Unexecuted instantiation: exprtk::details::assignment_vec_op_node<float, exprtk::details::mod_op<float> >::side_effect() const
13342
13343
      private:
13344
13345
         vector_node<T>* vec_node_ptr_;
13346
         vds_t           vds_;
13347
      };
13348
13349
      template <typename T, typename Operation>
13350
      class assignment_vecvec_op_node exprtk_final
13351
                                      : public binary_node     <T>
13352
                                      , public vector_interface<T>
13353
      {
13354
      public:
13355
13356
         typedef expression_node<T>* expression_ptr;
13357
         typedef vector_node<T>*     vector_node_ptr;
13358
         typedef vec_data_store<T>   vds_t;
13359
13360
         using binary_node<T>::branch;
13361
13362
         assignment_vecvec_op_node(const operator_type& opr,
13363
                                   expression_ptr branch0,
13364
                                   expression_ptr branch1)
13365
0
         : binary_node<T>(opr, branch0, branch1)
13366
0
         , vec0_node_ptr_(0)
13367
0
         , vec1_node_ptr_(0)
13368
0
         , initialised_(false)
13369
0
         {
13370
0
            if (is_vector_node(branch(0)))
13371
0
            {
13372
0
               vec0_node_ptr_ = static_cast<vector_node<T>*>(branch(0));
13373
0
               vds()          = vec0_node_ptr_->vds();
13374
0
            }
13375
13376
0
            if (is_vector_node(branch(1)))
13377
0
            {
13378
0
               vec1_node_ptr_ = static_cast<vector_node<T>*>(branch(1));
13379
0
               vec1_node_ptr_->vds() = vds();
13380
0
            }
13381
0
            else if (is_ivector_node(branch(1)))
13382
0
            {
13383
0
               vector_interface<T>* vi = reinterpret_cast<vector_interface<T>*>(0);
13384
13385
0
               if (0 != (vi = dynamic_cast<vector_interface<T>*>(branch(1))))
13386
0
               {
13387
0
                  vec1_node_ptr_ = vi->vec();
13388
0
                  vec1_node_ptr_->vds() = vi->vds();
13389
0
               }
13390
0
               else
13391
0
                  vds_t::match_sizes(vds(),vec1_node_ptr_->vds());
13392
0
            }
13393
13394
0
            initialised_ =
13395
0
               vec0_node_ptr_          &&
13396
0
               vec1_node_ptr_          &&
13397
0
               (size() <= base_size()) &&
13398
0
               binary_node<T>::valid();
13399
13400
0
            assert(valid());
13401
0
         }
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::add_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::sub_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::mul_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::div_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<double, exprtk::details::mod_op<double> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::add_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::sub_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::mul_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::div_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
Unexecuted instantiation: exprtk::details::assignment_vecvec_op_node<float, exprtk::details::mod_op<float> >::assignment_vecvec_op_node(exprtk::details::operator_type const&, exprtk::details::expression_node<float>*, exprtk::details::expression_node<float>*)
13402
13403
         inline T value() const exprtk_override
13404
0
         {
13405
0
            branch(0)->value();
13406
0
            branch(1)->value();
13407
13408
0
                  T* vec0 = vec0_node_ptr_->vds().data();
13409
0
            const T* vec1 = vec1_node_ptr_->vds().data();
13410
13411
0
            loop_unroll::details lud(size());
13412
0
            const T* upper_bound = vec0 + lud.upper_bound;
13413
13414
0
            while (vec0 < upper_bound)
13415
0
            {
13416
0
               #define exprtk_loop(N)                          \
13417
0
               vec0[N] = Operation::process(vec0[N], vec1[N]); \
13418
0
13419
0
               exprtk_loop( 0) exprtk_loop( 1)
13420
0
               exprtk_loop( 2) exprtk_loop( 3)
13421
0
               #ifndef exprtk_disable_superscalar_unroll
13422
0
               exprtk_loop( 4)